MATLAB在缩小尺寸时将光盘上的图像尺寸增加到一半

时间:2014-01-08 05:40:36

标签: image matlab

我试图使用imresize 0.5来缩小.png图像,最初是25 kB。但是,在使用imwrite保存缩放图像时,保存图像的大小变为52 kB。

以下是图片和命令:

Original Image

image=imread('image0001.png');
B = imresize(image, 0.5);
imwrite(B,'img0001.png','png');

如果分辨率指定如下,也会发生这种情况:

B = imresize(image, [400 300]);

这是什么原因?当缩放到0.15时似乎工作正常。

1 个答案:

答案 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应该缩小尺寸。