Java DIP - Verbesserung der Bildschärfe
In diesem Kapitel lernen wir, die Schärfe eines Bildes mithilfe des Gaußschen Filters zu erhöhen.
Zuerst benutzen wir OpenCV Funktion GaussianBlur. Es kann unter gefunden werdenImgprocPaket. Die Syntax ist unten angegeben -
Imgproc.GaussianBlur(source, destination, new Size(0,0), sigmaX);
Die Parameter werden kurz beschrieben -
Sr.Nr. | Parameter & Beschreibung |
---|---|
1 | source Es ist ein Quellbild. |
2 | destination Es ist ein Zielbild. |
3 | Size Es ist die Gaußsche Kerngröße. |
4 | sigmaX Es ist die Standardabweichung des Gaußschen Kernels in X-Richtung. |
Weiter verwenden wir OpenCV Funktion addWeightedum ein Bildwasserzeichen auf das Bild anzuwenden. Es kann unter gefunden werdenCorePaket. Die Syntax ist unten angegeben -
Core.addWeighted(InputArray src1, alpha, src2, beta, gamma, OutputArray dst);
Die Parameter dieser Funktion werden nachfolgend beschrieben -
Sr.Nr. | Parameter & Beschreibung |
---|---|
1 | src1 Es ist das erste Eingabearray. |
2 | alpha Es ist das Gewicht der ersten Array-Elemente. |
3 | src2 Es ist das zweite Eingangsarray mit der gleichen Größe und Kanalnummer wie src1. |
4 | Beta Es ist das Gewicht der zweiten Array-Elemente. |
5 | gamma Es wird zu jeder Summe skalar addiert. |
6 | dst Es ist ein Ausgabearray mit der gleichen Größe und Anzahl von Kanälen wie die Eingabearrays. |
Neben der GaussianBlur-Methode gibt es weitere Methoden, die von der Imgproc-Klasse bereitgestellt werden. Sie werden kurz beschrieben -
Sr.Nr. | Methode & Beschreibung |
---|---|
1 | cvtColor(Mat src, Mat dst, int code, int dstCn) Es konvertiert ein Bild von einem Farbraum in einen anderen. |
2 | dilate(Mat src, Mat dst, Mat kernel) Es erweitert ein Bild mithilfe eines bestimmten Strukturierungselements. |
3 | equalizeHist(Mat src, Mat dst) Es gleicht das Histogramm eines Graustufenbildes aus. |
4 | filter2D(Mat src, Mat dst, int depth, Mat kernel, Point anchor, double delta) Es faltet ein Bild mit dem Kernel. |
5 | GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX) Es verwischt ein Bild mit einem Gaußschen Filter. |
6 | integral(Mat src, Mat sum) Es berechnet das Integral eines Bildes. |
Beispiel
Das folgende Beispiel zeigt die Verwendung der Imgproc- und Core-Klasse zum Anwenden des Schärfens auf ein Bild.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;
public class Main {
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());
Imgproc.GaussianBlur(source, destination, new Size(0,0), 10);
Core.addWeighted(source, 1.5, destination, -0.5, 0, destination);
Highgui.imwrite("sharp.jpg", destination);
} catch (Exception e) {
}
}
}
Ausgabe
Wenn Sie den angegebenen Code ausführen, wird die folgende Ausgabe angezeigt: