【问题标题】:Count how many pixels are in a binary image计算二值图像中有多少像素
【发布时间】: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


【解决方案1】:

我不确定是否理解这个问题,但有一些东西可以计算黑白图像中黑色像素的数量。

I = rgb2gray(imread('pass_p.png'));

bw = im2bw(I,graythresh(I));

figure;imshow(bw);

[Nx,Ny] = size(bw);
BlackPixelCount = zeros(Nx,1);
WhitePixelCount = zeros(Nx,1);

for it = 1:Nx
   blackPixel = find(bw(it,:) == 0);
   BlackPixelCount(it) = size(blackPixel,1);
   WhitePixelCount(it) = Ny -  BlackPixelCount(it);
end

编辑

这是一个愚蠢的例子。所以我们希望在人行横道的路上只选择 1 行或 1 列。

v = [1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0];
w =[ 1 v 1];

InvV = ~v;

w2 = [1 InvV 1];


runs_zeros = find(diff(w)==1)-find(diff(w)==-1); % lenghts of runs of 0's
runs_ones= find(diff(w2)==1)-find(diff(w2)==-1); % lenghts of runs of 1's

nbBlackBand = size(runs_zeros,2);
nbWhiteBand = size(runs_ones,2);

所以在那之后你就知道你有每个乐队的长度和每种乐队的数量。您可以在图像中取多条线并对其进行平均以获得每条带像素的平均值。否则,您只有 1 个样本。

【讨论】:

  • 嗨,你的算法找到了我所有的黑色像素和白色像素,但我真正需要的是找到一个黑色像素序列,并计算有多少,按白色区域分开分层。跨度>
  • 这就是为什么我说我不太明白这个问题。你能提供一个测试图像和小矩阵的愚蠢例子吗?
  • 我会尝试...等一下 :)
  • 你能检查这个链接,存在一个图像,你可以理解我需要什么。 drive.google.com/file/d/0B5tH_Qo3-GvhdGN4OWxBSDJVd0U/…
  • 只需将其发布在您的问题中并进行编辑即可。因为我们需要在谷歌驱动器上进行自动化。而且我不是唯一可以回答您的问题的人。
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2023-03-23
  • 2020-07-25
相关资源
最近更新 更多