Java-dip-enhancing-image-brightness

提供:Dev Guides
移動先:案内検索

Java DIP-画像の明るさを向上させる

この章では、画像の各ピクセルにアルファ値を乗算し、別のベータ値を追加することにより、画像の輝度を高めます。

上記の操作を自動的に行う OpenCV 関数 convertTo です。 Mat パッケージの下にあります。 その構文は以下のとおりです-

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

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

Sr.No. Parameter & Description
1

destination

宛先画像です。

2

rtype

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

3

alpha

オプションのスケール係数です。

4

beta

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

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

Sr.No. Method & Description
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());
      }
   }
}

出力

あなたが与えられたコードを実行すると、次の出力が見られます-

元画像

画像の明るさの向上チュートリアル

強化された明るい画像(Alpha = 1およびBeta = 50)

画像の明るさの向上チュートリアル

強化された明るい画像(Alpha = 2およびBeta = 50)

画像の明るさの向上チュートリアル