在matlab的图像处理和保存过程中,遇见以下情况:即使修改了图像的像素值如限定在0.2~0.8,在读入图像后,像素值分布仍然在0-1.
function Verify()
i = imread('dealed.jpg');
i = im2double(i);
[m,n,~] = size(i);
%%
for x = 1:m
for j = 1:n
if i(x,j,1) > 0.8
i(x,j,1) = 0.8;
elseif i(x,j,1) < 0.2
i(x,j,1) = 0.2;
end
if i(x,j,2) > 0.9
i(x,j,2) = 0.9;
elseif i(x,j,2) < 0.1
i(x,j,2) = 0.1;
end
if i(x,j,3) > 0.85
i(x,j,3) = 0.85;
elseif i(x,j,3) < 0.15
i(x,j,3) = 0.15;
end
end
end
imwrite(i,'dealedscen.jpg');
img = imread('dealedscen.jpg');
for c=1:3
maxV = max(max(img(:,:,c)));
minV = min(min(img(:,:,c)));
fprintf('Max : %d, Min : %d \r\n',maxV,minV);
end
end
结果输出:
经过更改图片保存格式验证后,确认这是图片输出后压缩造成的。
将图片改为.bmp格式即可: