OpenCV - Erosione

L'erosione è un processo abbastanza simile alla dilatazione. Ma il valore del pixel calcolato qui è minimo piuttosto che massimo in dilatazione. L'immagine viene sostituita sotto il punto di ancoraggio con quel valore minimo di pixel.

Con questa procedura, le aree delle regioni scure aumentano di dimensioni e le regioni luminose si riducono. Ad esempio, la dimensione di un oggetto in tonalità scura o nera aumenta, mentre diminuisce in tonalità bianca o tonalità chiara.

Esempio

È possibile eseguire questa operazione su un'immagine utilizzando il erode() metodo del imgprocclasse. Di seguito è riportata la sintassi di questo metodo:

erode(src, dst, kernel)

Questo metodo accetta i seguenti parametri:

  • src - A Mat oggetto che rappresenta la sorgente (immagine in ingresso) per questa operazione.

  • dst - A Mat oggetto che rappresenta la destinazione (immagine di output) per questa operazione.

  • kernel - A Mat oggetto che rappresenta il kernel.

È possibile preparare la matrice del kernel utilizzando il getStructuringElement()metodo. Questo metodo accetta un numero intero che rappresenta il filemorph_rect tipo e un oggetto del tipo Size.

Imgproc.getStructuringElement(int shape, Size ksize);

Il seguente programma mostra come eseguire l'operazione di erosione su una data immagine.

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

Supponiamo che la seguente sia l'immagine in ingresso sample.jpg specificato nel programma di cui sopra.

Produzione

All'esecuzione del programma, otterrai il seguente output:

Image Loaded

Se apri il percorso specificato, puoi osservare l'immagine di output come segue: