Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java OpenCV 라이브러리를 사용하여 이미지의 대비를 변경하는 방법은 무엇입니까?

<시간/>

이미지의 밝기 및 대비의 증가/감소는 이미지의 픽셀을 변환하여 달성할 수 있는 작업입니다. 이것은 다음과 같은 방정식의 형태로 표현될 수 있습니다 -

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

어디,

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

  • α(이득) 및 β(편향)는 변환 매개변수입니다.

  • 때때로 게인 매개변수는 이미지의 대비를 제어하고 바이어스 매개변수는 이미지의 밝기를 제어합니다.

convertTo() org.opencv.core.Mat 메소드 클래스는 주어진 행렬에 대해 필요한 계산을 수행하여 이미지의 대비와 밝기를 변경합니다. 이 메서드는 4개의 매개변수를 받습니다 -

  • 매트 − 원본 행렬과 동일한 크기 및 유형의 결과를 유지하기 위한 빈 행렬.

  • rtype - 출력 행렬의 유형을 지정하는 정수 값. 이 값이 음수이면 유형은 소스와 동일합니다.

  • 알파 − 게인 값, 0보다 커야 합니다(기본값 1).

  • 베타 − 바이어스 값(기본값 0).

OpenCV Java 라이브러리를 사용하여 이미지 대비 변경

언급했듯이 이 메서드에 전달된 알파 값은 이미지의 대비를 변경합니다. 이 매개변수에 대해 선택한 값이 1(~0)보다 작으면 이미지의 대비가 감소합니다. 마찬가지로 1(~255)보다 크면 이미지의 대비가 높아집니다.

이미지의 대비를 변경하려면 -

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

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

  • 이전 단계에서 얻은 행렬과 동일한 크기와 유형으로 빈 행렬을 만듭니다.

  • convertTo() 호출 빈 행렬, -1(동일한 유형을 얻기 위해), 대비를 높이거나 낮추기 위한 알파 값(0-1 또는 1-100) 및 베타 값으로 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 라이브러리를 사용하여 이미지의 대비를 변경하는 방법은 무엇입니까?

다음은 다양한 알파에 대한 다양한 출력 이미지입니다. 값 -

α-값:0.5

Java OpenCV 라이브러리를 사용하여 이미지의 대비를 변경하는 방법은 무엇입니까?

α-값:0.8

Java OpenCV 라이브러리를 사용하여 이미지의 대비를 변경하는 방법은 무엇입니까?

α-값:1.5

Java OpenCV 라이브러리를 사용하여 이미지의 대비를 변경하는 방법은 무엇입니까?

α-값:2.0

Java OpenCV 라이브러리를 사용하여 이미지의 대비를 변경하는 방법은 무엇입니까?