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:

Original Bild

Scharfes Bild