【问题标题】:Image resizing without quality loss?调整图像大小而不损失质量?
【发布时间】:2014-02-21 14:29:31
【问题描述】:

如果我有一个大小为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 会调整图像大小,但质量会有所下降。那么如何在不损失质量的情况下调整它的大小呢?

【问题讨论】:

  • 调整大小总是意味着一些质量损失。输入help imresize 以查看可用的插值选项,并测试哪个更适合您

标签: image matlab image-processing resize


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    上面的代码会创建一个分辨率为400px/cm的原始图片的png,生成一个1cm宽的图片。 png 仍然是 400x600px 位图。

    【讨论】:

    • jajajaja 但无论如何我还是要感谢你的回答 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2013-10-18
    • 1970-01-01
    • 2012-02-13
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多