OpenCV - operacje morfologiczne

We wcześniejszych rozdziałach omówiliśmy proces erosion i dilation. Oprócz tych dwóch, OpenCV ma więcej przekształceń morfologicznych. PlikmorphologyEx() metody klasy Imgproc służy do wykonywania tych operacji na danym obrazie.

Poniżej znajduje się składnia tej metody -

morphologyEx(src, dst, op, kernel)

Ta metoda akceptuje następujące parametry -

  • src - Przedmiot z klasy Mat reprezentujący obraz źródłowy (wejściowy).

  • dst - przedmiot zajęć Mat reprezentujący obraz docelowy (wyjściowy).

  • op - liczba całkowita reprezentująca typ operacji morfologicznej.

  • kernel - macierz jądra.

Przykład

Poniższy program pokazuje, jak zastosować operację morfologiczną "top-hat" na obrazie przy użyciu biblioteki OpenCV.

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");
   } 
}

Załóżmy, że poniżej jest obraz wejściowy morph_input.jpg określone w powyższym programie.

Wynik

Podczas wykonywania programu otrzymasz następujący wynik -

Image Processed

Jeśli otworzysz określoną ścieżkę, możesz obserwować obraz wyjściowy w następujący sposób -

Więcej operacji

Oprócz operacji morfologicznej TOPHAT, pokazane w poprzednim example, OpenCV obsługuje różne inne typy morfologii. Wszystkie te typy są reprezentowane przez wstępnie zdefiniowane pola statyczne (wartości stałe)Imgproc klasa.

Możesz wybrać typ potrzebnej morfologii, przekazując odpowiednią wstępnie zdefiniowaną wartość do parametru op z morphologyEx() metoda.

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

Poniżej przedstawiono wartości reprezentujące rodzaj operacji morfologicznych i ich odpowiednich wyników.

Działanie i opis Wynik
MORPH_BLACKHAT
MORPH_CLOSE
MORPH_CROSS
MORPH_DILATE
MORPH_ELLIPSE
MORPH_ERODE
MORPH_GRADIENT
MORPH_OPEN
MORPH_RECT
MORPH_TOPHAT