두 개의 버퍼링 된 이미지의 래스터를 합산하는 기능이 있습니까?
-
12-12-2019 - |
문제
나는 2D 필딩을하고, 그레이 스케일 버퍼 디임에 대한 요소 첨가에 의해 요소를 원한다.이를 위해이 작업을 완료하거나 Scrach에서 하나를 만들어야 할 기존 기능이 있습니까?
이 문제를 일으키기 위해 래스터를 매트릭스로 변환하는 일종의 매트릭스 클래스가 있습니까?
편집 : 여기에 일반적인 요지가 있습니다
BufferedImageOp opX = new ConvolveOp(new Kernel(3,3, kernelX));
BufferedImageOp opY = new ConvolveOp(new Kernel(3,3, kernelY));
BufferedImage filtImageX = opX.filter(sourceImage, null);
BufferedImage filtImageY = opY.filter(sourceImage, null);
BufferedImage outputImage = addBufferedImages(filtImageX, filtImageY);
.
그레이 스케일 변환 :
public void toGrayscale() {
BufferedImageOp op = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
sourceImage = op.filter(sourceImage, null);
}
. 해결책
저는 당신을 위해 그 일을하는 Java libs에 익숙하지 않습니다.
[i, j]에서 픽셀을 얻을 수 있습니다 : image.getRGB(i, j);
BufferedImage image = ...;
BufferedImage resultImage = ...
int rgb= image.getRGB(i, j);
resultImage.setRGB(i, j, rgb);
.
버퍼링 된 이미지를 바이트 배열로 변환 할 수도 있습니다 [ https://stackoverflow.com/a/7388025/1007845 ka>].
Java에서 이미지를 바이트 배열로 변환하는 방법은 무엇입니까? WritableRaster
편집 :
이 경우에 writableraster가 유용 할 수 있습니다 : http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/image/writableraster.html
WritableRaster raster = image.getRaster();
for(int h=0;h<height;h++) {
for(int w=0;w<width;w++) {
int colour = 127;
raster.setSample(w,h,0,colour);
}
}
. 다른 팁
나는이 일을하는 직접적인 방법을 모른다.
그러나 나는 약간의 밑에있는 접근 방식을 제안 할 수있다. 첫째, 두 개의 이미지를 가져 와서 두 개의 밴드가있는 단일 이미지로 결합하십시오. 나는 이것을하는 방법에 대한 세부 사항에 대해 괴롭다. 나는 래스터 및 그런 다음 다른 두 이미지의 내용을 DataBuffer . 원본 이미지의 배열을 사용하는 2-Bank DataBuffer를 만들 수 있어야하지만 복사를 피할 수있는 은행으로서의 뱅크로서의 배열을 사용해야합니다.
2 대 밴드 이미지가 있으면 밴드를 합산하는 밴드콤 . 매트릭스로 합계를 표현해야하지만 어려움이 없어야합니다. 결과를 재구성하려면 [1.0, 1.0] 또는 [0.5, 0.5]라고 생각합니다.