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

Java OpenCV 라이브러리로 이미지 대비 조절하는 방법 완벽 가이드

이미지의 밝기와 대비를 높이거나 낮추는 작업은 이미지의 픽셀 값을 변환하는 연산을 통해 구현할 수 있습니다. 이 변환은 다음과 같은 수식으로 표현됩니다.

g(i, j) = α . f(i, j)+ β

여기서 각 요소의 의미는 다음과 같습니다.

  • (i, j)는 픽셀의 위치 좌표입니다.

  • α(gain, 이득)와 β(bias, 편향)는 변환에 사용되는 매개변수입니다.

  • 일반적으로 gain(α) 값은 이미지의 대비를, bias(β) 값은 밝기를 조절하는 역할을 합니다.

org.opencv.core.Mat 클래스의 convertTo() 메서드는 주어진 행렬에 필요한 계산을 수행하여 이미지의 대비와 밝기를 손쉽게 변경할 수 있도록 해줍니다. 이 메서드는 다음과 같은 4개의 매개변수를 받습니다.

  • m − 결과를 저장할 빈 행렬로, 원본 행렬과 동일한 크기와 타입이어야 합니다.

  • rtype − 출력 행렬의 타입을 지정하는 정수 값입니다. 음수를 지정하면 원본과 동일한 타입이 적용됩니다.

  • alpha − gain 값으로, 반드시 0보다 커야 합니다(기본값 1).

  • beta − bias 값입니다(기본값 0).

OpenCV Java 라이브러리로 이미지 대비 조절하기

앞서 설명했듯이 convertTo() 메서드에 전달되는 alpha 값이 이미지의 대비를 결정합니다. 이 값이 1보다 작으면(0에 가까워질수록) 이미지의 대비가 감소하고, 1보다 크면(최대 255까지) 대비가 증가합니다.

이미지의 대비를 조절하는 전체 절차는 다음과 같습니다.

  • loadLibrary() 메서드를 사용하여 OpenCV 네이티브 라이브러리를 로드합니다.

  • imread() 메서드를 사용하여 원하는 이미지 파일을 Mat 객체로 읽어옵니다.

  • 앞 단계에서 얻은 행렬과 동일한 크기와 타입을 가진 빈 행렬을 생성합니다.

  • convertTo() 메서드에 빈 행렬, -1(동일 타입 유지), 대비를 높이거나 낮출 alpha 값(0~1 또는 1~100 범위), 그리고 beta 값으로 0을 전달하며 호출합니다.

  • Imgcodecs.imwrite() 메서드를 사용하여 결과 행렬을 출력 이미지 파일로 저장합니다.

예제 코드

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class AlteringContrast {
   public static void main (String[] args) {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the Image from the file
      String file ="D:\Images\car3.jpg";
      Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_COLOR);
      //Creating an empty matrix
      Mat dest = new Mat(src.rows(), src.cols(), src.type());
      //Increasing the contrast of the image
      src.convertTo(dest, -1, 10, 0);
      // Writing the image
      Imgcodecs.imwrite("D:\Images\altering_contrast_10.jpg", dest);
   }
}

입력 이미지

Java OpenCV 라이브러리로 이미지 대비 조절하는 방법 완벽 가이드

다음은 서로 다른 alpha 값에 따라 얻은 다양한 출력 이미지입니다.

α 값: 0.5

Java OpenCV 라이브러리로 이미지 대비 조절하는 방법 완벽 가이드 

α 값: 0.8 

Java OpenCV 라이브러리로 이미지 대비 조절하는 방법 완벽 가이드

 α 값: 1.5 

Java OpenCV 라이브러리로 이미지 대비 조절하는 방법 완벽 가이드 

α 값: 2.0 

Java OpenCV 라이브러리로 이미지 대비 조절하는 방법 완벽 가이드