Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

OpenCV equalizeHist()로 그레이스케일 이미지 밝기와 대비 조절하기

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);
   }
}

원본 그레이스케일 이미지

OpenCV equalizeHist()로 그레이스케일 이미지 밝기와 대비 조절하기

평활화 적용 후 결과 이미지

OpenCV equalizeHist()로 그레이스케일 이미지 밝기와 대비 조절하기