OpenCV - Morphologische Operationen

In den früheren Kapiteln haben wir den Prozess von diskutiert erosion und dilation. Zusätzlich zu diesen beiden weist OpenCV mehr morphologische Transformationen auf. DasmorphologyEx() der Methode der Klasse Imgproc wird verwendet, um diese Operationen an einem bestimmten Bild auszuführen.

Es folgt die Syntax dieser Methode:

morphologyEx(src, dst, op, kernel)

Diese Methode akzeptiert die folgenden Parameter:

  • src - Ein Objekt der Klasse Mat Darstellen des Quellbildes (Eingabebildes).

  • dst - Objekt der Klasse Mat Darstellen des Zielbildes (Ausgabebildes).

  • op - Eine Ganzzahl, die den Typ der morphologischen Operation darstellt.

  • kernel - Eine Kernelmatrix.

Beispiel

Das folgende Programm zeigt, wie die morphologische Operation angewendet wird "top-hat" auf einem Bild mit OpenCV-Bibliothek.

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class MorphologyExTest {
   public static void main(String args[]) {
      // Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap12/morph_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Creating kernel matrix
      Mat kernel = Mat.ones(5,5, CvType.CV_32F);

      // Applying Blur effect on the Image 
      Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap12/morph_tophat.jpg", dst);

      System.out.println("Image Processed");
   } 
}

Angenommen, das Folgende ist das Eingabebild morph_input.jpg im obigen Programm angegeben.

Ausgabe

Beim Ausführen des Programms erhalten Sie folgende Ausgabe:

Image Processed

Wenn Sie den angegebenen Pfad öffnen, können Sie das Ausgabebild wie folgt beobachten:

Weitere Operationen

Neben der morphologischen Operation TOPHAT, in der vorherigen demonstriert exampleOpenCV bietet verschiedene andere Arten von Morphologien. Alle diese Typen werden durch vordefinierte statische Felder (feste Werte) von dargestelltImgproc Klasse.

Sie können den Typ der gewünschten Morphologie auswählen, indem Sie den entsprechenden vordefinierten Wert an den Parameter übergeben op des morphologyEx() Methode.

// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);

Es folgen die Werte, die die Art der morphologischen Operationen und ihre jeweiligen Ausgaben darstellen.

Bedienung und Beschreibung Ausgabe
MORPH_BLACKHAT
MORPH_CLOSE
MORPH_CROSS
MORPH_DILATE
MORPH_ELLIPSE
MORPH_ERODE
MORPH_GRADIENT
MORPH_OPEN
MORPH_RECT
MORPH_TOPHAT