Повторная выборка изображения Бикубическая интерполяция Java - PullRequest
0 голосов
/ 12 октября 2010

Я изменил размер изображения, но его качество низкое.я слышал о бикубической интерполяции, но я не могу получить код реализации.Вот мой код:

private static BufferedImage resize(BufferedImage image, int width, int height) 
{ 
    int w = image.getWidth(), h = image.getHeight();
    int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
    BufferedImage resizedImage = new BufferedImage(width, height, type);
    Graphics2D g = resizedImage.createGraphics();
    g.setComposite(AlphaComposite.Src);
    g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC);

    //g.drawImage(image, 0, 0, width, height, null);
    g.scale((double)width/w,(double)height/h);
    g.drawRenderedImage(image, null);
    g.dispose();
    return resizedImage; 
}   

Я хочу получить лучшее качество после повышающей и понижающей дискретизации.

1 Ответ

1 голос
/ 12 октября 2010

Бикубическая интерполяция и другие схемы интерполяции необходимы только тогда, когда вам нужно изменить размер на некоторый нецелочисленный масштабный коэффициент.Вероятно, вам не хватает того, что вам нужно фильтровать ваше изображение до понижающей дискретизации (при уменьшении) или фильтровать после повышающей дискретизации (при расширении), чтобы избежать наложения псевдонимовартефакты, что является совершенно другой проблемой.Это относится как к целочисленным, так и к нецелочисленным масштабным коэффициентам.

...