27-11-2013, 18:23
O objectivo consiste em contar quantas camadas tenho a preto e a branco numa imagem binária (no meu caso, é um passadeira), e dentro destas camadas contar o número de pixels que existem apenas numa linha recta vertical, de preferência colocada no centro da imagem.
A linguagem é matlab.
O algoritmo que tenho neste momento é:
I = rgb2gray(imread('pass_p.png'));
level = graythresh(I);
bw = im2uint8(im2bw(I,level));
imshow(bw);
[Nx, Ny] = size(I);
cP = 0;
cB = 0;
%Vectores
B = zeros(1,9);
P = zeros(1,9);
for k = 2:Ny-1
index = 1;
if(bw(((Nx-1)/2),k ) == 0) %preto
cP = cP + 1;
if(bw(((Nx-1)/2)-1, (k-1)) == 255)
B(1,index) = B(1,cB);
cB = 0;
index = index +1;
end
end
if(bw(((Nx-1)/2),k) == 255) %branco
cB = cB + 1;
if(bw(((Nx-1)/2)-1, (k-1)) == 0)
P(1,index) = P(1,cP);
cP = 0;
index = index +1;
end
end
end
Deixo aqui o link de uma possivel imagem ->
http://www.urbanreviewstl.com/wordpress/...sswalk.jpg
Contudo, não se esqueçam que a imagem tem que ser favoravel, de modo, que eu recortaria o que nao interessa, deixando apenas a passadeira.
Gostaria de saber se alguém consegue resolver o problema
Desde já obrigado
A linguagem é matlab.
O algoritmo que tenho neste momento é:
I = rgb2gray(imread('pass_p.png'));
level = graythresh(I);
bw = im2uint8(im2bw(I,level));
imshow(bw);
[Nx, Ny] = size(I);
cP = 0;
cB = 0;
%Vectores
B = zeros(1,9);
P = zeros(1,9);
for k = 2:Ny-1
index = 1;
if(bw(((Nx-1)/2),k ) == 0) %preto
cP = cP + 1;
if(bw(((Nx-1)/2)-1, (k-1)) == 255)
B(1,index) = B(1,cB);
cB = 0;
index = index +1;
end
end
if(bw(((Nx-1)/2),k) == 255) %branco
cB = cB + 1;
if(bw(((Nx-1)/2)-1, (k-1)) == 0)
P(1,index) = P(1,cP);
cP = 0;
index = index +1;
end
end
end
Deixo aqui o link de uma possivel imagem ->
http://www.urbanreviewstl.com/wordpress/...sswalk.jpg
Contudo, não se esqueçam que a imagem tem que ser favoravel, de modo, que eu recortaria o que nao interessa, deixando apenas a passadeira.
Gostaria de saber se alguém consegue resolver o problema
Desde já obrigado