繁体   English   中英

Matlab的循环图像

[英]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)创建的pictureuint8uint16数组,这意味着像素值在[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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM