我在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
答案 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))));