Java에서 텍스처를 샘플링하는 방법을 구현하려고합니다. GLSL의 "텍스처"기능을 사용하는 것과 동일한 방식으로 작업하기를 원합니다. 색상을 계산할 때 주변 픽셀을 고려해야합니다.이미지의 픽셀 간 보간
예를 들어, 특정 픽셀에서 이미지 색상을 얻으려면 float를 사용하고 숫자는 두 픽셀 사이입니다. 주변 픽셀의 혼합을 어떻게 계산합니까? 내 목표를 보여주는 이미지가 있습니다.
자바의 BufferedImage의 클래스를 사용하여이 작업을 수행 할 수있는 간단한 방법이 있을까요 ?
여기에 제가 지금까지 가지고있는 코드가 있으며, 현재 x 위치에서만 작동합니다.
public static final java.awt.Color getColor(final BufferedImage image, final float x, final int y) {
final float imageX = x * image.getWidth();
final float decimal = imageX % 1f;
final java.awt.Color left = new java.awt.Color(image.getRGB(Maths.clamp((int) imageX - 1, 0, image.getWidth() - 1), y));
final java.awt.Color center = new java.awt.Color(image.getRGB(Maths.clamp((int) imageX, 0, image.getWidth() - 1), y));
final java.awt.Color right = new java.awt.Color(image.getRGB(Maths.clamp((int) imageX + 1, 0, image.getWidth() - 1), y));
if (decimal == 0.5f) return center;
if (decimal < 0.5f) {
final float distanceFromCenter = 0.5f - decimal;
final float distanceFromLeft = decimal + 0.5f;
final Vector3f leftColor = new Vector3f(left.getRed()/255f, left.getGreen()/255f, left.getBlue()/255f);
final Vector3f centerColor = new Vector3f(center.getRed()/255f, center.getGreen()/255f, center.getBlue()/255f);
leftColor.scale(1f - distanceFromLeft);
centerColor.scale(1f - distanceFromCenter);
final Vector3f color = Vector3f.add(leftColor, centerColor, null);
return new java.awt.Color(color.getX(), color.getY(), color.getZ());
} else {
final float distanceFromCenter = decimal - 0.5f;
final float distanceFromRight = 1f - decimal + 0.5f;
final Vector3f rightColor = new Vector3f(right.getRed()/255f, right.getGreen()/255f, right.getBlue()/255f);
final Vector3f centerColor = new Vector3f(center.getRed()/255f, center.getGreen()/255f, center.getBlue()/255f);
rightColor.scale(1f - distanceFromRight);
centerColor.scale(1f - distanceFromCenter);
final Vector3f color = Vector3f.add(rightColor, centerColor, null);
return new java.awt.Color(color.getX(), color.getY(), color.getZ());
}
}
정확히 보간법은 무엇입니까? 문제가 무엇이고 달성하고자하는 것이 무엇인지 여기에 몇 가지 코드를 제공하십시오. –
이미지가있어서 픽셀을 통해 색상을 변경하고 싶습니까? 버퍼링 된 이미지를 사용하고 있습니까? –
이미지가 늘어나지 만 이미지를 실제로 늘리지 않고 **있을 ** 픽셀 색상을 원합니다. – ASasseCreations