Java DIP - Laplace-Operator

Der Laplace-Operator ist auch ein Ableitungsoperator, mit dem Kanten in einem Bild gefunden werden. Der Hauptunterschied zwischen Laplace und anderen Operatoren wie Prewitt, Sobel, Robinson und Kirsch besteht darin, dass dies alles abgeleitete Masken erster Ordnung sind, Laplace jedoch eine abgeleitete Maske zweiter Ordnung.

Wir gebrauchen OpenCV Funktion filter2DLaplace-Operator auf Bilder anwenden. Es kann unter gefunden werdenImgprocPaket. Die Syntax ist unten angegeben -

filter2D(src, dst, depth , kernel, anchor, delta, BORDER_DEFAULT );

Die Funktionsargumente werden unten beschrieben -

Sr.Nr. Argumente
1

src

Es ist ein Quellbild.

2

dst

Es ist ein Zielbild.

3

depth

Es ist die Tiefe von dst. Ein negativer Wert (z. B. -1) zeigt an, dass die Tiefe der Quelle entspricht.

4

kernel

Es ist der Kernel, der durch das Bild gescannt werden soll.

5

anchor

Dies ist die Position des Ankers relativ zu seinem Kernel. Der Positionspunkt (-1, -1) gibt standardmäßig die Mitte an.

6

delta

Dies ist ein Wert, der während der Faltung zu jedem Pixel hinzugefügt wird. Standardmäßig ist es 0.

7

BORDER_DEFAULT

Wir lassen diesen Wert standardmäßig.

Neben der filter2D () -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-Klasse zum Anwenden des Laplace-Operators auf ein Graustufenbild.

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class convolution {
   public static void main( String[] args ) {
   
      try {
         int kernelSize = 9;
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         
         Mat source = Highgui.imread("grayscale.jpg",  Highgui.CV_LOAD_IMAGE_GRAYSCALE);
         Mat destination = new Mat(source.rows(),source.cols(),source.type());

         Mat kernel = new Mat(kernelSize,kernelSize, CvType.CV_32F) {
            {
               put(0,0,0);
               put(0,1,-1)
               put(0,2,0);

               put(1,0-1);
               put(1,1,4);
               put(1,2,-1);

               put(2,0,0);
               put(2,1,-1);
               put(2,2,0);
            }
         };	      
         
         Imgproc.filter2D(source, destination, -1, kernel);
         Highgui.imwrite("output.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

Dieses Originalbild wird mit dem unten angegebenen Laplace-Negativ-Operator gefaltet -

Laplace-Negativ

0 -1 0
-1 4 -1
0 -1 0

Gefaltetes Bild (Laplace-Negativ)

Dieses Originalbild wird mit dem Laplace-Positiv-Operator wie unten angegeben gefaltet -

Laplace-positiv

0 1 0
1 -4 1
0 1 0

Gefaltetes Bild (Laplace-positiv)