OpenCV - Opérations morphologiques

Dans les chapitres précédents, nous avons discuté du processus de erosion et dilation. En plus de ces deux, OpenCV a plus de transformations morphologiques. lemorphologyEx() de la méthode de la classe Imgproc est utilisé pour effectuer ces opérations sur une image donnée.

Voici la syntaxe de cette méthode -

morphologyEx(src, dst, op, kernel)

Cette méthode accepte les paramètres suivants -

  • src - Un objet de la classe Mat représentant l'image source (entrée).

  • dst - objet de la classe Mat représentant l'image de destination (sortie).

  • op - Un entier représentant le type de l'opération morphologique.

  • kernel - Une matrice de noyau.

Exemple

Le programme suivant montre comment appliquer l'opération morphologique "top-hat" sur une image utilisant la bibliothèque 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");
   } 
}

Supposons que ce qui suit est l'image d'entrée morph_input.jpg spécifié dans le programme ci-dessus.

Production

Lors de l'exécution du programme, vous obtiendrez la sortie suivante -

Image Processed

Si vous ouvrez le chemin spécifié, vous pouvez observer l'image de sortie comme suit -

Plus d'opérations

En plus de l'opération morphologique TOPHAT, démontré dans le précédent example, OpenCV répond à divers autres types de morphologies. Tous ces types sont représentés par des champs statiques prédéfinis (valeurs fixes) deImgproc classe.

Vous pouvez choisir le type de morphologie dont vous avez besoin en passant leur valeur prédéfinie respective au paramètre op du morphologyEx() méthode.

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

Voici les valeurs représentant le type d'opérations morphologiques et leurs résultats respectifs.

Fonctionnement et description Production
MORPH_BLACKHAT
MORPH_CLOSE
MORPH_CROSS
MORPH_DILATE
MORPH_ELLIPSE
MORPH_ERODE
MORPH_GRADIENT
MORPH_OPEN
MORPH_RECT
MORPH_TOPHAT