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 |
|