OpenCV의 Imgproc 클래스가 제공하는 equalizeHist() 메서드는 그레이스케일 이미지를 입력받아 해당 이미지의 히스토그램을 평활화(equalize)합니다. 이 처리를 통해 이미지의 밝기가 정규화되고 명암 대비가 크게 향상됩니다.
히스토그램 평활화는 픽셀 강도 분포를 재분배하여 어두운 영역과 밝은 영역의 균형을 맞추는 기법으로, 저대비 이미지를 더욱 선명하게 만들 때 널리 사용됩니다.
equalizeHist() 메서드는 다음 두 가지 매개변수를 받습니다.
- 원본 그레이스케일 이미지를 나타내는 Mat 객체
- 처리 결과를 저장할 Mat 객체
예제 코드
다음 자바(Java) 예제는 컬러 이미지를 그레이스케일로 읽어 파일로 저장한 후, 밝기를 정규화하고 대비를 높인 결과 이미지를 저장합니다.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class HstExample {
public static void main(String args[]) {
// OpenCV 핵심 라이브러리 로드
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
String input = "D://images//sunset.jpg";
// 파일에서 이미지를 그레이스케일로 읽기
Mat source = Imgcodecs.imread(input, Imgcodecs.IMREAD_GRAYSCALE);
// 결과를 저장할 빈 행렬 생성
Mat dst = new Mat(source.rows(), source.cols(), source.type());
// 그레이스케일 이미지 저장
Imgcodecs.imwrite("D://images//Grey_scale.jpg", source);
// 히스토그램 평활화로 대비 증가
Imgproc.equalizeHist(source, dst);
// 결과 이미지 저장
Imgcodecs.imwrite("D://images//increasing_contrast.jpg", dst);
HighGui.imshow("output image", dst);
}
}
원본 그레이스케일 이미지

평활화 적용 후 결과 이미지
