计算图像中的白色像素时出错,matlab

时间:2012-10-31 22:45:08

标签: matlab

我在matlab处理图像时有一个问题,我有一个白色图像,当我尝试打印图像的灰度级并将其递增1时,它给我255,它从不给我256。 这是代码。并且计数为0。

  function [ count ] = white( I )
    [row,col]=size(I);
    count=0;
    for x=1:row
        for y=1:col
            g=I(x,y);   %the value of the gray level on each pixel
            if((g+1) == 256)
            count=count+1;
            256
        end
    end
  end

2 个答案:

答案 0 :(得分:4)

您的图像类可能是uint8,255是此类的最大值。例如:

 >>  uint8(inf)

ans =

  255

而是尝试转换为其他类,例如I=uint32(I) ...

关注@ Aganders3,我还将为您的代码提供不使用for循环的解决方案:

count=sum(I(:)>threshold); % Credit to @Jonas and @Aganders3

其中,阈值是您想要达到阈值的灰度级

答案 1 :(得分:2)

我认为nate对于为什么这不起作用是正确的。

另外,考虑一个更简单的问题解决方案(给定I充满整数):

count = sum(vector(I == intmax(class(I))));