[英]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.