Morfología en imágenes

Morfología (Biología).-

 Parte de la biología que trata de la forma de los seres orgánicos y de las modificaciones o transformaciones que experimenta

Morfología Matemática

Todo comienza en los 60's con la...

Es una técnica de procesado no lineal de la imagen, interesada en la geometría de los objetos.

José Luis Alba, Fernando Martín - Universidad de Vigo

Es una herramienta para la extracción de componentes en una imagen, que son útiles para representación o descripción de la forma de las regiones.

Robyn Owens, Universidad de Edinburgo

Es un amplio conjunto de operaciones para el procesamiento de imágenes, que procesan imágenes basadas en formas.

http://www.mathworks.com/

Usamos la palabra morfología para denotar una herramienta que extrae los componentes de la imagen que se utilizan para la representación  y descripción de regiones. 

El lenguaje utilizado es el de la Teoría de conjuntos, donde los conjuntos representan la forma de los objetos en una imagen.  

Un sistema de operadores de este tipo y su composición, permite que las formas subyacentes sean identificadas y reconstruidas de forma óptima a partir de sus formas distorsionadas y ruidosas.

En el caso de imágenes binarias, los conjuntos tratados son subconjuntos de Z2 (2D) y en el de las imágenes en escala de grises, se trata de conjuntos de puntos con coordenadas en Z3 (3D).

Conjuntos y Subconjuntos

Las operaciones morfológicas simplifican imágenes y conservan las principales características de forma de los objetos

Elemento estructurante

  • Define la forma y el tamaño de la vecindad del pixel que será analizado, para posteriormente alterar su valor en la que se aplicara la operación morfológica.
     
  • El valor de cada pixel en la imagen de salida depende del valor de ese pixel en la imagen de entrada y su relación con la vecindad

El elemento estructural también es llamado Kernel

Formada por ceros y unos de forma y tamaño arbitrario en la cual las posiciones donde esta el uno define la vecindad.

Una transformación morfológica básicamente es desplazar el elemento estructural por toda la imagen X, siendo X el conjunto de puntos de la figura o mejor dicho los valores a 1 de la matriz

Origen del elemento estructural

           Centro = (tamaño+1)/2

Para el elemento estructural cuadrado de tamaño 3x3 el centro será:

           Centro = (3+1)/2 x (3+1)/2 = 2x2

Principales elementos estructurantes usados para el procesamiento de imágenes digitalizadas 

Los elementos isotrópicos son muy utilizados en el filtrado de imágenes y en la detección de bordes, este tipo de elementos producen excelentes resultados.

También se utilizan otro tipo de elementos estructurales.

El hexágono es utilizado para la representación de formas (esqueletonización).

 

 El rombo ha sido utilizado muchas veces para el filtrado de ruido  por ejemplo el filtrado de ruido blanco gaussiano

Detección de Bordes

Esqueletonización

Se utilizan elementos estructurales de maneras muy variadas, por ejemplo utilizarse elementos estructurales en tonos de gris de forma triangular para eliminar ruido de señales de electrocardiograma y funciones estructurales para la detección de tumores cerebrales.

Cardiograma

Cuencas en una Imagen de corazón

operaciones morfológicas

Dilatación

Se adicionan pixeles al contorno de objetos presentes en la imagen 

   El Pixel de salida es el Máximo de los pixeles presentes en la vecindad definida por el elemento estructural 

Dilatación en

Escala de Grises

Esto es lo que pasa ....

dilatar una imagen

  •  Seleccionar el pixel de la imagen original a tratar
  •  Buscar el mayor de los píxeles de la vecindad, incluido el central, definidos por la forma y tamaño del elemento estructural
  •  Sustituir el valor del píxel por el máximo valor

Los anteriores pasos se ejecutan en cada uno de  los píxeles de la imagen

Imagen dilatada con MATLAB usando un elemento  estructurante circular
Imagen binaria dilatada con un elemento estructurante de linea vertical

erosión

Elimina pixeles del contorno de las siluetas dentro de la imagen.

Es el proceso opuesto a la Dilatación.

imagen erosionada con un elemento estructurante de disco

imagen erosionada con un elemento estructurante redondo

Dilatación

  • Amplía Bordes
  • Une objetos próximos
  • Une puntos blancos próximos
  • Elimina detalles negros pequeños

erosión

  • Reduce Bordes
  • Separa objetos próximos
  • Elimina puntos blancos separados
  • Amplia detalles negros pequeños

apertura

Es la realización de una erosión seguida de una  dilatación, utilizando el mismo elemento estructural en ambas operaciones.

 

Es decir se combinan ambas técnicas en una sola imagen.

cerradura

Es la realización de una dilatación seguida de una  erosión, utilizando el mismo elemento estructural en ambas operaciones.

 

Es lo opuesto a la Apertura.

Elimina huecos pequeños rellenandolos y une componentes cercanas

aplicaciones

Algunos usos

  • Encontrar contornos
  • Rellenado de siluetas
  • Detección de formas

Mejorar la calidad del texto

Encontrar contornos

Detección de Formas

Funciones en openCV

Dilatar una Imagen

elementoEst = getStructuringElement(MORPH_RECT,Size(3,3),Point(2,2));

Definir Elemento Estructurante (ejemplo):

erode(imagen_original,destino,elemento_Estructurante);

Erosionar una Imagen

dilate(imagen_original,destino,elementoEstructurante);

Ejemplo usando opencv

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>

using namespace cv;

int main(){
        
        // Se declaran las matrices que seran usadas
	Mat original, input, elementoEst, dilatada, erosionada, abierta, cerrada, contorno; 
	
	original = imread("fruits.jpg",1); // En la matriz "original" se carga la imagen a color
	input = imread("fruits.jpg",1);    // En la matriz "input" se carga la imagen en blanco y negro
	elementoEst = getStructuringElement(MORPH_RECT,Size(11,11),Point(6,6)); // Se define el elemento estructurante

        ////	Mostrar imagenes /////

	namedWindow("Imagen Original");
	imshow("Imagen Original", original); // Muestra la imagen "original" en la ventana "Imagen Original"
	waitKey(0);
	imshow("Imagen Original", input);
	waitKey(0);

	namedWindow("Imagen Dilatada");
	dilate(input,dilatada,elementoEst);
	imshow("Imagen Dilatada",dilatada);
	waitKey(0);

	namedWindow("Imagen Erosionada");
	erode(input, erosionada, elementoEst);
	imshow("Imagen Erosionada",erosionada);
	waitKey(0);
// Continua .........
//..........       
        ////	Aplicar la Apertura   ////
	dilate(erosionada, abierta, elementoEst);
	namedWindow("Imagen Abierta");
	imshow("Imagen Abierta",abierta);
	waitKey(0);

	////	Aplicar la Cerradura  ///////
	erode(dilatada, cerrada, elementoEst);
	namedWindow("Imagen Cerrada");
	imshow("Imagen Cerrada",cerrada);
	waitKey(0);

	destroyWindow("Imagen Abierta");
	destroyWindow("Imagen Cerrada");

	////	Hallar Contornos    /////
	contorno = dilatada - input; // A la imagen (o matriz) "dilatada" se le resta la matriz "input"
	namedWindow("Contorno");
	imshow("Contorno", contorno);
	waitKey(0);
	return 0;
}

Eso es todo! 

Gracias.

Morfología en imágenes

By Cesar E Sanchez

Morfología en imágenes

Esta presentación trata sobre lo que es la morfología matemática aplicada en imágenes, sus operaciones y ejemplos usando la librería OpenCV

  • 1,840