我试图使用imresize 0.5来缩小.png图像,最初是25 kB。但是,在使用imwrite保存缩放图像时,保存图像的大小变为52 kB。
以下是图片和命令:
image=imread('image0001.png');
B = imresize(image, 0.5);
imwrite(B,'img0001.png','png');
如果分辨率指定如下,也会发生这种情况:
B = imresize(image, [400 300]);
这是什么原因?当缩放到0.15时似乎工作正常。
答案 0 :(得分:4)
原因是imresize
使用双三次插值,从而产生额外的像素值。原始图像很小,因为它具有少量唯一像素值。插值后,数字将增加,从而增加文件大小。
要保留您可以使用的唯一值的数量:B = imresize(image, 0.5, 'nearest');
。您可以按如下方式检查:
image=imread('image0001.png');
B = imresize(image, 0.5);
numel(unique(image)); % gives 18
numel(unique(B)); % gives 256
使用新插值:
image=imread('image0001.png');
B = imresize(image, 0.5, 'nearest');
numel(unique(image)); % gives 18
numel(unique(B)); % gives 18
现在保存B
应该缩小尺寸。