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: