图像调整大小UpScale丢失了质量

时间:2013-08-25 18:32:48

标签: java image image-processing java-2d

我想尝试最多3次缩放图像。

例如,

Original Image

向上缩放图像

Resized Image

我正在使用此library进行图片大小调整。

以下代码剪切了诀窍,

public static BufferedImage getScaledSampledImage(BufferedImage img,
            int targetWidth, int targetHeight, boolean higherQuality) {

        ResampleOp resampleOp = new ResampleOp(targetWidth, targetHeight);
        resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.Normal);
        BufferedImage rescaledImage = resampleOp.filter(img, null);

        return rescaledImage;
    }

你可以看到调整后的图像质量较低。我希望我可以将图像缩放至少3倍于原始图像,而不会丢失质量。

是Pposible吗?我是否需要更改现有的库?

由于

1 个答案:

答案 0 :(得分:5)

事实是,当您向上扩展图像时,它必须创建没有图像的数据。 (粗略地说)。为此,您必须在现有像素之间进行插值以填充新像素。您可以通过尝试不同类型的插值来获得更好的结果 - 但对于不同类型的图像,最佳方法将是不同的。

由于您的样本图像只是正方形,因此最近邻插值可能会给您带来最佳效果。如果你要放大一个风景图像或者一个肖像,你需要一个更聪明的算法。

结果很少看起来很完美,如果可能的话,最好从较大的图像开始!

看看这里以了解问题。 http://en.wikipedia.org/wiki/Image_scaling#Scaling_methods