OpenCV - Erosión

La erosión es un proceso bastante similar a la dilatación. Pero el valor de píxel calculado aquí es mínimo en lugar de máximo en dilatación. La imagen se reemplaza debajo del punto de anclaje con ese valor de píxel mínimo.

Con este procedimiento, las áreas de las regiones oscuras aumentan de tamaño y las regiones brillantes se reducen. Por ejemplo, el tamaño de un objeto en tono oscuro o tono negro aumenta, mientras que disminuye en tono blanco o tono brillante.

Ejemplo

Puede realizar esta operación en una imagen utilizando el erode() método del imgprocclase. A continuación se muestra la sintaxis de este método:

erode(src, dst, kernel)

Este método acepta los siguientes parámetros:

  • src - A Mat objeto que representa la fuente (imagen de entrada) para esta operación.

  • dst - A Mat objeto que representa el destino (imagen de salida) para esta operación.

  • kernel - A Mat objeto que representa el kernel.

Puede preparar la matriz del kernel utilizando el getStructuringElement()método. Este método acepta un número entero que representa elmorph_rect tipo y un objeto del tipo Size.

Imgproc.getStructuringElement(int shape, Size ksize);

El siguiente programa demuestra cómo realizar la operación de erosión en una imagen determinada.

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

Suponga que la siguiente es la imagen de entrada sample.jpg especificado en el programa anterior.

Salida

Al ejecutar el programa, obtendrá el siguiente resultado:

Image Loaded

Si abre la ruta especificada, puede observar la imagen de salida de la siguiente manera: