OpenCV - Érosion

L'érosion est un processus assez similaire à la dilatation. Mais la valeur de pixel calculée ici est minimale plutôt que maximale en dilatation. L'image est remplacée sous le point d'ancrage par cette valeur de pixel minimale.

Avec cette procédure, les zones des régions sombres augmentent en taille et les régions claires se réduisent. Par exemple, la taille d'un objet dans une teinte sombre ou une teinte noire augmente, alors qu'elle diminue dans une teinte blanche ou une teinte claire.

Exemple

Vous pouvez effectuer cette opération sur une image à l'aide du erode() méthode de la imgprocclasse. Voici la syntaxe de cette méthode -

erode(src, dst, kernel)

Cette méthode accepte les paramètres suivants -

  • src - Un Mat objet représentant la source (image d'entrée) de cette opération.

  • dst - Un Mat objet représentant la destination (image de sortie) de cette opération.

  • kernel - Un Mat objet représentant le noyau.

Vous pouvez préparer la matrice du noyau en utilisant le getStructuringElement()méthode. Cette méthode accepte un entier représentant lemorph_rect type et un objet du type Size.

Imgproc.getStructuringElement(int shape, Size ksize);

Le programme suivant montre comment effectuer l'opération d'érosion sur une image donnée.

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

public class ErodeTest {
   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 ="C:/EXAMPLES/OpenCV/sample.jpg";
      Mat src = Imgcodecs.imread(file);

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

      // Preparing the kernel matrix object
      Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, 
         new  Size((2*2) + 1, (2*2)+1));

      // Applying erode on the Image
      Imgproc.erode(src, dst, kernel);

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

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

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

Production

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

Image Loaded

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