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());
}
}
}
出力
指定されたコードを実行すると、次の出力が表示されます-