[英]Matlab For Loop Image
我正在尝试在MATLAB中打开.pgm
图像文件,使用for循环运行操作,然后另存为另一个.pgm文件。 在进行操作之前,我正在测试以查看是否可以重新创建图像:
clear
picture = imread('Picture.pgm');
sizePic = size(picture);
sizeX = sizePic(1);
sizeY = sizePic(2);
newPicture = zeros(sizeX,sizeY);
for i = 1:sizeX
for j = 1:sizeY
newPicture(i,j) = picture(i,j);
end
end
imwrite(newPicture, 'NewPicture.pgm');
但是,新图像几乎全是白色,带有一些黑色斑点(不是原始斑点)。 这不就应该还给我原始图像吗?
默认情况下,从imread(XXX.pgm)创建的picture
是uint8
或uint16
数组,这意味着像素值在[0 255]或[0 65535]范围内。 另一方面,从zeros
创建的newPicture
是一个double
newPicture
数组,其预期像素值仅为[0 1]。 在保存的图像中,任何大于1的值都将被解释为1(白色)。 当分配一个[0 255]的值,以这样的double
阵列,因为大多数中的像素值的picture
是1以上,当然,你会得到大部分是白色像素
使用图像时,请始终检查图像阵列的类型。 例如,最好通过显式转换由imread返回的图像来始终使用double
类型,例如: pictures=im2double(imread(xxx))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.