图像大小调整没有质量损失?

时间:2014-02-21 14:29:31

标签: image matlab image-processing resize

如果我有一个大小为400 x 600的图像。我知道如何通过使用以下代码来调整大小80 x 80的大小:

original_image = imread(my_image);
original_image_gray = rgb2gray(original_image);
Image_resized = imresize(original_image_gray, [80 80]);

但我认为imresize会在图像质量上有所损失。那么如何在不损失质量的情况下调整大小呢?

2 个答案:

答案 0 :(得分:7)

Image resizing本身会丢失部分图像信息,即图像质量。

您可以通过设置相应的参数来选择适合您目的的调整大小方法:

[...] = imresize(...,method)
                     ^^^^^^

enter image description here

答案 1 :(得分:2)

Matlab将图像存储为像素阵列。将400x600元素矩阵中包含的所有信息存储在80x80矩阵中是不可能的,因此在调整像素阵列大小时,质量损失是不可避免的,这就是无法实现的。

如果您想减小输出的物理尺寸,您应该查看imgwrite documentation,特别是在创建png图像时的XResolution和YResolution参数。

original_image = imread(my_image);
imwrite(original_image_grey,'image.png','png','ResolutionUnit','cm','XResolution',400)

上面的代码将创建一个原始图像的png,分辨率为400px / cm,从而产生1cm宽的图像。 png仍然是400x600px位图。

相关问题