JavaDIP-画像の明るさの向上

この章では、画像の各ピクセルにアルファ値を掛け、それに別のベータ値を追加することで、画像の明るさを向上させます。

私達 OpenCV 関数 convertTo上記の操作を自動的に行います。それは下にありますMatパッケージ。その構文を以下に示します-

int alpha = 2;
int beta = 50;
sourceImage.convertTo(destination, rtype , alpha, beta);

パラメータは以下のとおりです-

シニア番号 パラメータと説明
1

destination

行き先画像です。

2

rtype

チャネル数は入力と同じであるため、出力行列のタイプ、または深さが望ましいです。rtypeが負の場合、出力行列は入力と同じ型になります。

3

alpha

これはオプションの倍率です。

4

beta

これは、スケーリングされた値に追加されるオプションのデルタです。

convertToメソッドとは別に、Matクラスによって提供される他のメソッドがあります。それらは簡単に説明されています-

シニア番号 方法と説明
1

adjustROI(int dtop, int dbottom, int dleft, int dright)

親行列内の部分行列のサイズと位置を調整します。

2

copyTo(Mat m)

マトリックスを別のマトリックスにコピーします。

3

diag()

行列から対角を抽出するか、対角行列を作成します。

4

dot(Mat m)

2つのベクトルの内積を計算します。

5

reshape(int cn)

データをコピーせずに、2Dマトリックスの形状やチャネル数を変更します。

6

submat(Range rowRange, Range colRange)

長方形の部分行列を抽出します。

次の例は、Matクラスを使用して画像の明るさを向上させる方法を示しています。

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;

public class Main {
   static int width;
   static int height;
   static double alpha = 2;
   static double beta = 50;
   
   public static void main( String[] args ) {
   
      try{
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         Mat source =  Highgui.imread("digital_image_processing.jpg",Highgui.CV_LOAD_IMAGE_COLOR);
         Mat destination = new Mat(source.rows(),source.cols(),
         
         source.type());
         source.convertTo(destination, -1, alpha, beta);
         Highgui.imwrite("brightWithAlpha2Beta50.jpg", destination);
         
      } catch (Exception e) {
         System.out.println("error:" + e.getMessage());
      }
   }
}

出力

指定されたコードを実行すると、次の出力が表示されます-

元の画像

強化された明るい画像(アルファ= 1&ベータ= 50)

強化された明るい画像(アルファ= 2&ベータ= 50)