이미지 처리에서 컬러맵(Color Map)은 흑백 또는 단일 채널 이미지에 색상을 입혀 시각적으로 더 잘 드러나도록 만드는 기법입니다. 데이터 시각화, 히트맵(Heatmap) 제작, 의료 영상 분석 등 다양한 분야에서 활용됩니다.
OpenCV의 Imgproc 클래스가 제공하는 applyColorMap() 메서드를 사용하면 이런 컬러맵을 단 한 줄의 코드로 이미지에 적용할 수 있습니다.
applyColorMap() 메서드의 매개변수
이 메서드는 다음 세 가지 매개변수를 받습니다.
- src – 컬러맵을 적용할 원본 이미지(Mat 객체)
- dst – 처리 결과를 저장할 대상 이미지(Mat 객체)
- colormap – 적용할 컬러맵의 종류를 나타내는 정수 값
사용 가능한 컬러맵 종류
컬러맵 값으로는 아래 상수 중 하나를 전달할 수 있습니다.
COLORMAP_AUTUMN, COLORMAP_BONE, COLORMAP_COOL, COLORMAP_HOT, COLORMAP_HSV, COLORMAP_JET, COLORMAP_OCEAN, COLORMAP_PARULA, COLORMAP_PINK, COLORMAP_RAINBOW, COLORMAP_SPRING, COLORMAP_SUMMER, COLORMAP_WINTER
예제 코드
다음은 COLORMAP_PINK를 적용해 이미지의 색상을 변환하는 Java 예제입니다.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class CustomColorMaps {
public static void main(String args[]) {
// OpenCV 네이티브 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 파일에서 이미지를 읽어 Mat 객체에 저장
String file = "D:\\images\\cat.jpg";
Mat src = Imgcodecs.imread(file);
// 결과를 저장할 빈 Mat 객체 생성
Mat dst = new Mat();
// 이미지에 컬러맵 적용
Imgproc.applyColorMap(src, dst, Imgproc.COLORMAP_PINK);
// 결과 이미지를 파일로 저장
Imgcodecs.imwrite("D:\\images\\color_map.jpg", dst);
System.out.println("Image processed");
}
}입력 이미지

실행 결과
위 프로그램을 실행하면 PINK 컬러맵이 적용된 다음과 같은 결과 이미지가 생성됩니다.

마무리
이처럼 applyColorMap() 메서드를 활용하면 별도의 복잡한 색상 변환 로직 없이도 다양한 스타일의 컬러맵 효과를 간편하게 구현할 수 있습니다. 상수 값을 바꿔가며 여러 컬러맵을 실험해 보면 각 맵이 만들어내는 고유한 색감 차이를 직접 확인할 수 있습니다.