【发布时间】:2013-12-13 11:53:54
【问题描述】:
我想连续计算二进制图像上的像素。但是,我需要计算我拥有的所有图层以及黑色图层中的黑色像素和白色图层中的白色像素。
对不起我的英语... 我的代码是:
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
我的目标是检测人行横道。 感谢您的宝贵时间:)
编辑
这是一个示例图像:
【问题讨论】:
-
我真的不明白你在追求什么。你能试着解释一下吗?
-
目标是计算二值图像中有多少层黑白(在我的情况下,是人行横道),并在这些层中计算存在的像素数。你明白吗?
-
最好包含图片链接,以便我们运行您的代码。层是什么意思?
-
首先,您必须使用霍夫变换来检测人行横道的方向。在您知道是否必须按行或列计算波段之后。在此示例图像中,您希望按列计数
-
之后,您只需选择一行或一列,您的掩码为 0 和 1。一旦完成,您就可以执行简单的循环或矢量化功能。
标签: image matlab binary pixels