我目前正在使用的代码:
i = imread('/usr/share/icons/matlab.png');
for k=1:1:m
for l=1:1:n
%a(k,l)=m*n;
a(k,l) = (.299*i(k,l,1))+(.587*i(k,l,2))+(.114*i(k,l,3));
end
end
imshow(a);
它只显示一个白屏。而且新生成的尺寸为 n x m x 3,而应该是 m x n x 1。如果我使用 mat2gray 它会显示如下图片:
double(i)./double(intmax(class(i)))
替换im2double
,前者是将图像转为双精度类型的方法。 - Daniela
,它将创建一个原始位深度的整数灰度图像,此时不需要重新缩放。但是,如果您使用整数进行操作,请注意四舍五入和溢出问题 - 对于更复杂的处理算法,双精度可能更可取。 - Notlikethat