OpenCV - Operaciones morfológicas

En los capítulos anteriores, discutimos el proceso de erosion y dilation. Además de estos dos, OpenCV tiene más transformaciones morfológicas. losmorphologyEx() del método de la clase Imgproc se utiliza para realizar estas operaciones en una imagen determinada.

A continuación se muestra la sintaxis de este método:

morphologyEx(src, dst, op, kernel)

Este método acepta los siguientes parámetros:

  • src - Un objeto de la clase Mat que representa la imagen de origen (entrada).

  • dst - objeto de la clase Mat que representa la imagen de destino (salida).

  • op - Un número entero que representa el tipo de operación morfológica.

  • kernel - Una matriz de kernel.

Ejemplo

El siguiente programa demuestra cómo aplicar la operación morfológica "top-hat" en una imagen usando la biblioteca 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");
   } 
}

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

Salida

Al ejecutar el programa, obtendrá el siguiente resultado:

Image Processed

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

Más operaciones

Además de la operación morfológica TOPHAT, demostrado en la anterior example, OpenCV se adapta a otros tipos de morfologías. Todos estos tipos están representados por campos estáticos predefinidos (valores fijos) deImgproc clase.

Puede elegir el tipo de morfología que necesita pasando su respectivo valor predefinido al parámetro op del morphologyEx() método.

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

A continuación se muestran los valores que representan el tipo de operaciones morfológicas y sus respectivos resultados.

Operación y descripción Salida
MORPH_BLACKHAT
MORPH_CLOSE
MORPH_CROSS
MORPH_DILATE
MORPH_ELLIPSE
MORPH_ERODE
MORPH_GRADIENT
MORPH_OPEN
MORPH_RECT
MORPH_TOPHAT