Classificação por forma
O problema proposto é o seguinte: na imagem em níveis de cinza mostrada ao lado (original), existem várias regiões com a mesma forma, mas tonalidades diferentes.
A tarefa é separar estas regiões em dois grupos.
Obviamente, o uso de apenas o valor digital não parece promissor e a resposta está em parametrizar a forma.
Afortunadamente, cada região é uniforme em termos de cor e não existem regiões com a mesma tonalidade.
Então, você deve elaborar um programa em Freemat ou Python para resolver o problema.
Ao lado é mostrada a fórmula do coeficiente de compacidade.
É necessário calcular o perímetro e a área de cada segmento.
passos
Ler a imagem padrao256.tif. Seu tamanho é 256x256.
Quantos objetos/figuras são visíveis na imagem?
Calcular Area de cada região. Para isto devemos varrer toda a imagem e contar quantos pixels tem de cada cor.
Mas antes, vamos alocar um vetor para armazenar estas áreas "A".
for i=2: nlinhas-1 %varrer todas as linhas
for j=2:mcolunas-1 %varrer todas as colunas
if M(i,j)>0 % se o pixel nao for do fundo
x=M(i,j); % guarda seu valor
A(x)=A(x)+1; % soma uma unidade à area desta tonalidade
end
end
end
Considere a figura abaixo. ela mostra uma região cinza e um fundo azul. Para contar o perímetro devemos contar quantos lados livres existem entre os pixels cinza e o fundo. Ou seja, devemos contar quantos lados livres cada pixel tem. Por exemplo, para saber quantos lados livres o pixel em amarelo tem devemos verificar seus vizinhos acima, abaixo, à direita e à esquerda. Se um deles é fundo, então encontramos um lado livre. No caso particular deste pixel teremos 3 lados livres. Se fizer isto para todos os pixels terá achado o número de cantos livres, ou seja, o perímetro.
Como você agruparia estes elementos em duas classes?
Depois, calculamos o coeficiente de compacidade cc.
A seguir, devemos fixar um limiar que separe os dois grupos.
Limiar:
Finalmente, podemos mudar o valor de cada pixel segundo seu "cc".
Agora você pode voltar ao menu principal.
Jorge Centeno: centeno@ufpr.br