Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java OpenCVライブラリを使用して画像のコントラストを変更するにはどうすればよいですか?


画像の明るさやコントラストの増減は、画像のピクセルを変換することで実現できる操作です。これは、方程式の形で次のように表すことができます-

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

どこで、

  • (i、j)はピクセルの位置です。

  • α(ゲイン)とβ(バイアス)は変換のパラメーターです。

  • ゲインパラメータが画像のコントラストを制御し、バイアスパラメータが画像の明るさを制御する場合があります。

convertTo() org.opencv.core.Matのメソッド クラスは、画像のコントラストと明るさを変更するために、指定された行列に対して必要な計算を実行します。このメソッドは4つのパラメーターを受け入れます-

  • マット −ソース行列と同じサイズとタイプの結果を保持するための空行列。

  • rtype −出力マトリックスのタイプを指定する整数値。この値が負の場合、タイプはソースと同じになります。

  • アルファ −ゲイン値。0より大きくなければなりません(デフォルト値1)。

  • ベータ −バイアス値(デフォルト値0)。

OpenCVJavaライブラリを使用して画像のコントラストを変更する

前述のように、このメソッドに渡されるアルファ値は、画像のコントラストを変更します。このパラメーターに選択された値が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ライブラリを使用して画像のコントラストを変更するにはどうすればよいですか?

以下は、さまざまな alphaのさまざまな出力画像です。 値-

α値:0.5

Java OpenCVライブラリを使用して画像のコントラストを変更するにはどうすればよいですか?

α値:0.8

Java OpenCVライブラリを使用して画像のコントラストを変更するにはどうすればよいですか?

α値:1.5

Java OpenCVライブラリを使用して画像のコントラストを変更するにはどうすればよいですか?

α値:2.0

Java OpenCVライブラリを使用して画像のコントラストを変更するにはどうすればよいですか?


  1. Java OpenCVライブラリを使用してネガティブイメージをポジティブイメージに変換するにはどうすればよいですか?

    ネガティブイメージをポジティブに変換するには- ImageIO.read()メソッドを使用して必要な画像を読み取ります。 画像の高さと幅を取得します。 ネストされたforループを使用すると、画像の各ピクセルをトラバースします。 getRGB()メソッドを使用してピクセル値を取得します。 ピクセルから各値を取得するには、各色の開始位置に右シフトする必要があります。つまり、赤の場合はアルファ16の場合は24、赤の場合はビット単位で操作し、0Xffで操作します。これにより、変数がマスクされ、最後の8ビットが残り、残りのビットはすべて無視されます。 新しい赤、緑、青

  2. Java OpenCVライブラリを使用してイメージを作成するにはどうすればよいですか?

    OpenCVライブラリを使用すると、画像フィルタリング、幾何学的画像変換、色空間変換、ヒストグラムなどの画像処理操作を実行できます。 画像を書く Imgcodecsクラスのimread()メソッドを使用して画像のコンテンツを読み取るたびに、結果がMatrixオブジェクトに読み込まれます。 imwrite()メソッドを使用してイメージを書き込み/保存できます。これは2つのパラメータ、つまり-を受け入れます ファイル −結果を保存するファイルパスを表す文字列値。 Img −保存する画像のデータを含むマトリックスオブジェクト。 例 次のJavaの例は画像の内容を読み取りますc