簡體   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