1

在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
4

2 回答 2

4

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

 >>  uint8(inf)

ans =

  255

而是尝试转换为不同的类,例如I=uint32(I)...

在@Aganders3 之后,我还将为您的代码提供一个不使用 for 循环的解决方案:

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

其中 threshold 是您想要阈值的灰度级

于 2012-10-31T23:01:42.603 回答
2

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

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

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

于 2012-10-31T23:05:05.243 回答