Cesar E Sanchez
Soy programador, me gusta el diseño gráfico y el diseño web.
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).
Las operaciones morfológicas simplifican imágenes y conservan las principales características de forma de los objetos
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
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 ....
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
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
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.
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
Mejorar la calidad del texto
Encontrar contornos
Detección de Formas
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);
#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.
By Cesar E Sanchez
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