렌더링 파이프 라인에서 성능을 좀 더 높일 수 있습니다. (가장 먼 곳에서) 가장 느린 부분은 큰 이미지에서 java.awt.imaging.LookupOp를 수행하는 것입니다.조회 연산 성능
이미지 크기는 약 2048x2048입니다.
필자는 드로잉 작업과 함께 필터를 수행하는 것이 필터 메서드를 호출하는 것보다 훨씬 빠르다는 것을 알아 냈습니다. 그러나 이것으로 약 250ms (또는 4fps)의 검색 작업을 수행 할 수 있습니다. 누구든지 렌더링 팁이 있습니까?
Heres는 본질적으로 무엇을 우리가하고있는 :
public void paint(Graphics g)
{
if(recalcLUT)
{
Graphics2D g2d = (Graphics2D) displayImage.getGraphics();
g2d.drawImage(srcImage, lut, 0, 0);
}
Graphics2D g2d = (Graphics2D) g;
g2d.clearRect(0, 0, this.getWidth(), this.getHeight());
AffineTransform at = new AffineTransform();
at.setToIdentity();
at.scale(scale, scale);
g2d.drawImage(displayImage, at, null);
}
LUT 변수는 일반적으로 LookupOp가 ShortLookupOp, 이미지 16 비트 그레이 스케일 이미지
덕분에 내가 아는
입니다 여기에서 수행 할 수있는 몇 가지 명백한 성능 최적화가 있습니다. 그러나 중요한 문제는 LookupOp 작업을 수행하는 것입니다. 그래서 그것에 관한 조언을 찾고 있습니다.
조회 작업은 본질적으로 배열을 만들고 이미지의 각 픽셀을 색상으로 렌더링하는 대신 색상을 배열의 인덱스로 사용하고 색인의 값으로 색상을 렌더링합니다. 이 특정 예제에서는 Im을 사용하여 간단한 밝기/대비 작업을 수행합니다. rescaleOp를 사용하여 구현할 수도 있습니다. rescaleOp는 기본적으로 모든 픽셀의 값에 선형 함수를 적용하는 방법입니다. 그러나 이것은 느린 것으로 판명됩니다.