计算平均灰度

时间:2014-08-11 12:07:02

标签: matlab variables image-processing

我在IM{}中有很多图片。我想计算非黑色像素的平均灰度。当我运行代码sum时,最大值为255。我不明白原因。为什么总和不会得到更高的值?

for i=1: length(IM)
[L,W,z]=size( IM{i});
k=1;
sum=0;
for L=1:L
    for W=1: W
        if IM{i}(L,W)~=0;
      sum=IM{i}(L,W)+sum;
      k=k+1;
        end
    end    
end
Mean(i)=sum/k

1 个答案:

答案 0 :(得分:4)

这可能是因为IM属于uint8类型。此数据类型不能保存大于255的值。例如:

>> uint8(200) + uint8(200)
ans =
  255

为避免这种情况,您应将IM转换为double

IM = double(IM);

无论如何,您的代码可以缩减为一行(包括转换):

result = mean(double(IM(IM>0)));

使用这种方法,您甚至可以免除double,因为mean(实际sum,由mean调用)会自动转换为double

result = mean(IM(IM>0));