Java DIP - Verbesserung der Bildhelligkeit

In diesem Kapitel verbessern wir die Helligkeit eines Bildes, indem wir jedes Pixel des Bildes mit einem Alpha-Wert multiplizieren und einen weiteren Beta-Wert hinzufügen.

Wir OpenCV Funktion convertTodas macht den obigen Vorgang automatisch. Es kann unter gefunden werdenMatPaket. Die Syntax ist unten angegeben -

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

Die Parameter werden nachfolgend beschrieben -

Sr.Nr. Parameter & Beschreibung
1

destination

Es ist ein Zielbild.

2

rtype

Es ist der gewünschte Ausgangsmatrixtyp oder vielmehr die Tiefe, da die Anzahl der Kanäle der des Eingangs entspricht. Wenn rtype negativ ist, hat die Ausgabematrix den gleichen Typ wie die Eingabe.

3

alpha

Dies ist ein optionaler Skalierungsfaktor.

4

beta

Es ist ein optionales Delta, das zu den skalierten Werten hinzugefügt wird.

Neben der convertTo-Methode gibt es weitere Methoden, die von der Mat-Klasse bereitgestellt werden. Sie werden kurz beschrieben -

Sr.Nr. Methode & Beschreibung
1

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

Es passt die Größe und Position einer Submatrix innerhalb der übergeordneten Matrix an.

2

copyTo(Mat m)

Es kopiert die Matrix in eine andere.

3

diag()

Es extrahiert eine Diagonale aus einer Matrix oder erstellt eine Diagonalmatrix.

4

dot(Mat m)

Es berechnet ein Punktprodukt aus zwei Vektoren.

5

reshape(int cn)

Es ändert die Form und / oder die Anzahl der Kanäle einer 2D-Matrix, ohne die Daten zu kopieren.

6

submat(Range rowRange, Range colRange)

Es extrahiert eine rechteckige Untermatrix.

Beispiel

Das folgende Beispiel zeigt die Verwendung der Mat-Klasse zur Verbesserung der Helligkeit eines Bildes.

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());
      }
   }
}

Ausgabe

Wenn Sie den angegebenen Code ausführen, wird die folgende Ausgabe angezeigt:

Original Bild

Verbessertes helles Bild (Alpha = 1 & Beta = 50)

Verbessertes helles Bild (Alpha = 2 & Beta = 50)