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 -