BandCombineOp — 밴드 결합 연산

BandCombineOp — 밴드 결합 연산 (java.awt.image)

지정된 행렬을 사용해 Raster의 밴드들의 임의의 선형 결합(linear combination)을 수행하는 클래스예요.

출처: Java API Reference

본문

BandCombineOpjava.lang.Object를 확장하고 RasterOp 인터페이스를 구현해요.

행렬의 너비는 소스 Raster의 밴드 수와 같아야 하고, 선택적으로 하나 더일 수 있어요. 행렬에 밴드 수보다 한 열이 더 많으면, 픽셀을 나타내는 밴드 샘플 벡터 끝에 암시적인 1이 있는 거예요. 행렬의 높이는 목적지의 밴드 수와 같아야 해요.

예를 들어 3밴드 Raster가 있다면, 두 번째 밴드를 반전시키기 위해 각 픽셀에 다음 변환을 적용할 수 있어요.

float[][] matrix = {
    { 1, 0, 0, 0 },
    { 0, -1, 0, 255 },
    { 0, 0, 1, 0 }
};
BandCombineOp op = new BandCombineOp(matrix, null);
op.filter(raster, destRaster);

소스와 목적지는 같은 객체일 수 있다는 점을 알아두세요.

생성자

public BandCombineOp(float[][] matrix, RenderingHints hints)

지정된 행렬로 BandCombineOp를 구성해요. 첫 번째 첨자는 행 인덱스, 두 번째는 열 인덱스예요. 이 연산은 현재 정의된 렌더링 힌트를 사용하지 않으므로 RenderingHints 인자는 null이어도 돼요.

파라미터: matrix — 밴드 결합 연산에 사용할 행렬 / hints — 이 연산용 RenderingHints 객체. 현재 사용되지 않으므로 null 가능

메서드 상세

getMatrix()

public final float[][] getMatrix()

선형 결합 행렬의 복사본을 반환해요.

filter(Raster src, WritableRaster dst)

public WritableRaster filter(Raster src, WritableRaster dst)

생성자에서 지정된 행렬로 Raster를 변환해요. 소스나 목적지의 밴드 수가 행렬과 호환되지 않으면 IllegalArgumentException이 던져질 수 있어요. 목적지가 null이면 행렬의 행 수와 같은 밴드 수로 생성돼요. 연산이 데이터 오버플로를 일으켜도 예외는 던져지지 않아요.

예외: IllegalArgumentException — 소스나 목적지의 밴드 수가 행렬과 호환되지 않을 때

getBounds2D(Raster src)

public final Rectangle2D getBounds2D(Raster src)

변환된 목적지의 경계 상자를 반환해요. 기하 연산이 아니므로 소스와 목적지의 경계 상자는 같아요.

예외: IllegalArgumentException — 소스의 밴드 수가 행렬과 호환되지 않을 때

createCompatibleDestRaster(Raster src)

public WritableRaster createCompatibleDestRaster(Raster src)

올바른 크기와 밴드 수를 가진 0으로 채워진 목적지 Raster를 만들어요.

getPoint2D(Point2D srcPt, Point2D dstPt)

public final Point2D getPoint2D(Point2D srcPt, Point2D dstPt)

소스 Raster의 한 점에 대응하는 목적지 점의 위치를 반환해요. 기하 연산이 아니므로 반환되는 점은 지정된 srcPt와 같아요.

getRenderingHints()

public final RenderingHints getRenderingHints()

이 연산의 렌더링 힌트를 반환해요. 설정된 힌트가 없으면 null을 반환해요.

더 알아보기