Está en la página 1de 9

Taller 3 - Morfologa matematica de imagenes

Cardenas, Juan Pablo., Mendieta, Saul Gregory.


Cod. 285738, Cod. 285754
Universidad Nacional de Colombia
ResumenEn este taller estudiaremos la morfologa matematica aplicada al procesamiento de imagenes, con el uso
de la herramienta OpenCV. Analizaremos distintas operaciones
morfologicas que se pueden aplicar a una imagen, con base
en un elemento estructurante definido. Al final desarrollaremos
algoritmos mas complejos que incluyen combinaciones de las
operaciones analizadas.
Index TermsMorfologa, Opencv, adelgazamiento, esqueleto,
apertura, cierre, top hat, black hat

I.

I NTRODUCCI ON

La Morfologa Matematica es una tecnica de procesamiento


de imagenes que se basa en operaciones de conjuntos,
mediante el uso de un comparador, denominado Elemento
Estructurante. Constituye mecanismos de extraccion de
componentes de imagen de gran utilidad para la representacion
y descripcion de la forma de las regiones. En el taller
estudiaremos las operaciones morfologicas de dilatacion y
erosion, y veremos como e stas pueden afectar a una imagen.
Tambien analizaremos transformaciones morfologicas
avanzadas, como las operaciones de apertura, cierre,
gradiente, top hat y black hat; su implementacion en
codigo, as como su efecto en una imagen. Estas operaciones
se basan en las dos operaciones basicas (dilatacion y erosion).
Teniendo como base estas transformaciones, podremos
desarrollar algoritmos aun mas complejos, como la extraccion
de fronteras, el llenado de regiones, el adelgazamiento, el
engrosamiento, el esqueleto, el filtro morfologico, etc.
Para el presente taller se pretende implementar, como
una funcion de OpenCV, los algoritmos morfologicos de
adelgazamiento y esqueleto vistos en clase para imagenes
binarias. Se evaluara ademas el comportamiento de estos
algoritmos en imagenes de niveles de gris. Posteriormente
se estudiaran las funciones vistas en el taller, cuando son
aplicadas a imagenes reales. Se usaran ademas las imagenes
planteadas para el desarrollo del proyecto.

II.
II-A.

M ARCO T E ORICO

Transformada Hit or Miss

En la morfologa matematica hay dos operaciones principales mediantes las cuales se pueden llegar a realizar una
serie mas de operaciones, estas se les conoce con el nombre
de eroison y dilatacion, las cuales se definen mediante las
siguientes ecuaciones:

Aunque bien esta es la base para otras operaciones, las


definiciones anteriores se tienen en cuenta para imagenes binarias de fondo blanco. Si bien se han extendido posteriormente
a imagenes en escala de grises y demas, el alcance de este
informe no llega a estudiar en profundidad estas operaciones.
Con estas operaciones plenamente establecidas, se crean unas
mas que son la combinacion simultanea de la dilatacion con
la erosion, estas nuevas operaciones son la apertura y cierre
de imagenes cuya definicion se muestra en las siguientes
ecuaciones:

Finalmente de estas cuatro operaciones anterioresse llega


a la transformada Hit or Miss, la cual esta orientada a
la deteccion de formas con el empleo de un conjunto de
elementos estructurantes que representan la configuracion
que se quiere encontrar. Su definicion se ve en la siguiente
ecuacion:

II-B.

Adelgazamiento

De la transformada Hit or Miss se pueden crear varios


procesos mas, es el caso del adelgazamiento de la imagen,
con la cual se pretende transformar una imagen digital en una
imagen simplificada, que a vista de un ser humano parecera
mas delgada que la imagen original. Su expresion en la que
se ve en la siguiente ecuacion:

II-C.

Los parametros de la estructura son los siguientes:

Esqueleto

Se define como la minina representacion de una imagen en


pixeles, de tal forma que a partir de esta mnima cantidad de
pixeles se puede reconstruir completamente toda la imagen
original. El esqueleto de una imagen tiene una expresion
matematica que se puede ver en las siguientes ecuaciones:

const CvArr* src - es la imagen de entrada


CvArr* dst - es la imagen de salida
IplConvKernel* element=NULL - es el elemento estructurante
int iterations=1 - es el numero de veces que se aplica la
dilatacion
II-G.

cvMorphologyEx

Es una funcion que realiza transformaciones morfologicas


avanzadas.. En OpenCV se maneja la siguiente estructura:
II-D.

cvCreateStructuringElementEx

Es una funcion que crea un elemento estructurante. En


OpenCV se maneja la siguiente estructura:
void cvCreateStructuringElementEx(int cols, int rows, int
anchor x, int anchor y, int shape, int* values=NULL )
Los parametros de la estructura son los siguientes:
int cols - es el ancho del elemento estructurante
int rows - es la altura del elemento estructurante
int anchor x - es el corrimiento del origen en x
int anchor y - es el corrimiento del origen en y
int shape - es la forma del elemento
int* values=NULL - es una especificacion adicional de
la forma del elemento
II-E.

Los parametros de la estructura son los siguientes:


const CvArr* src - es la imagen de entrada
CvArr* dst - es la imagen de salida
CvArr* temp - es una imagen temporal
IplConvKernel* element=NULL - es el elemento estructurante
int operation - es el tipo de operacion morfologica
int iterations=1 - es el numero de veces que se aplica la
dilatacion
III.

cvDilate

Es una funcion que dilata una imagen usando un elemento


estructurante especfico. En OpenCV se maneja la siguiente
estructura:
void
cvDilate(const
CvArr*
src,
CvArr*
IplConvKernel* element=NULL, int iterations=1 )

dst,

Los parametros de la estructura son los siguientes:


const CvArr* src - es la imagen de entrada
CvArr* dst - es la imagen de salida
IplConvKernel* element=NULL - es el elemento estructurante
int iterations=1 - es el numero de veces que se aplica la
dilatacion
II-F.

void cvMorphologyEx(const CvArr* src, CvArr* dst,


CvArr* temp, IplConvKernel* element, int operation, int
iterations=1 )

III-A.

P ROCEDIMIENTO

Creacion del Entorno Grafico

Partiendo del taller anterior, se toma la umbralizacion


binaria inversa, la cual separa la imagen en dos tonos (blanco
y negro), de los cuales el blanco es el que nos interesa
realizar las diversas operaciones y es conveniente en este
caso que los caracteres a procesar tengan dicha tonalidad,
para efectos deel proyecto final. Tambien podemos aplicar
las operaciones realizadas en este taller a imagenes a escala
de grises, por lo que se tomara como base una figura con los
caracteres coreanos correspondientes a la palabra gracias,
y su respectiva umbralizacion. Dichas imagenes se pueden
apreciar en la figura 1.
Se pretende crear un programa que realice los procesos de
adelgazamiento, esqueleto, dilatacion y erosion.

cvErode

Es una funcion que dilata una imagen usando un elemento


estructurante especfico. En OpenCV se maneja la siguiente
estructura:
void
cvErode(const
CvArr*
src,
CvArr*
IplConvKernel* element=NULL, int iterations=1)

Tambien Se quiere realizar diferentes operaciones


morfologicas tales como apertura, cierre, gradiente, Top
Hat y Black Hat, aparte de hacer un filtro morfologico a
partir dee una apertura seguida de un cierre.

dst,
En la figura 2 se muestra el entorno grafico de dicho
programa.

Figura 2. Entorno grafico del programa.

a)

a 5, 10 y 20 iteraciones.
III-C.

Esqueleto

Para la operacion de esqueleto se tomo un proceso de while,


en el cual, cuando se presente una erosion en la que se de como
resultado una matriz totalmente vacia salga, mientras que no
se de esa condicion se realiza una operacion de apertura, y
se resta a la matriz erosionada, guardando el resultado en un
vector de matrices. Despues de salir del ciclo, se compara cada
pixel con los elemnetos del vector en un proceso iterativo,
resultando si en alguno de los casos se da un pixel en zona
blanca. En las figuras 5 y 6 se puede apreciar el resultado a
imagen binaria y a escala de grises.
III-D.
b)
Figura 1. Imagenes a analizar - Poster con la palabra Gracias(a) En escala
de Grises (b) Con umbralizacion inversa.

Las operaciones de dilatacion erosion determinadas por las


funciones cvDilate y cvErode al operar se puede apreciar su
aplicacion en las figuras 7 y 9 para imagenes binarias y las
figuras 8 y 10 para imagenes a escala de grises.

III-E.
III-B.

Adelgazamiento

Para el adelgazamiento se realizo un Spin Box el cual


presenta la cantidad de iteraciones deseadas para el adelgazamiento, proceso que realiza un paneo Hit or Miss de 8
rotaciones de un elemento estructurante, drefinidas en varias
matrices. Para realizar el Hit or Miss se realizo un proceso
de filtrado de elementos estructurantes, tomando uno para la
matriz de la imagen, y otra para el complemento de esta,
de tal forma que al aplicar una erosion a cada matriz, se
comparo cada pixel entre las dos matrices y se guardaron las
coincidentes en una matriz. Dicha matriz se resta a la matriz
de la imagen y el resultado muestra el adelgazamiento. Este
proceso se realiza las suficientes veces a si misma segun el
numero de iteraciones deseadas. En las figuras 3 y 4 se puede
apreciar el resultado a imagen binaria y a escala de grises dada

Dilatacion y Erosion

Operaciones morfologicas

Las operaciones morfologicas se realizaron por medio


de la funcion cvMorphologyEx, la cual se tomaron como
especificaciones un kernel definido de la forma Kernel = cvCreateStructuringElementEx(5,5,1,1,CV SHAPE ELLIPSE);,
y tomando una imagen temporal y de salida definidas a partir
del tamano y tipo de la imagen a procesar.
La primera operacion que se realizo, mediante la
especificacion CV MOP OPEN, fue la operacion de
apertura y su aplicacion se aprecia en las figuras 11 y 12.
Luego se hizo la operacion de cierre, mediante la
especificacion CV MOP CLOSE y su aplicacion se aprecia
en las figuras 13 y 14.

Posteriormente se hizo la operacion de gradiente, mediante


la especificacion CV MOP GRADIENT y su aplicacion se
aprecia en las figuras 15 y 16.
Tambien se realizo la operacion de Black Hat, mediante
la especificacion CV MOP BLACKHAT y su aplicacion se
aprecia en las figuras 17 y 18.
Finalmente se realizo la operacion de Top Hat, mediante
la especificacion CV MOP TOPHAT y su aplicacion se
aprecia en las figuras 19 y 20.
III-F.

Filtro Morfologico

Para el filtro morfologico se realizo una operacion de apertura seguido e una operacion de cierre, tomando en cuenta la
funcionalidad de las anteriores morfologas. Se puede apreciar
su aplicacion en las figuras 21 y 22.
IV.

C ONCLUSIONES

El adelgazamiento reduce lo maximo posible al grosor


de as lineas presentes, lo cual es mucho mas visible en
la umbralizacion binaria inversa, caso en el que se puede
realizar un reconocimiento de patrones mas adecuado.
El esqueleto presenta un formato simple de imagen, por
lo que se puede realizar encriptacion de imagenes. En
escala de grises existe bastante desorden, por lo que la
simplicidad se pierde en este caso.
La apertura permite eliminar zonas blancas lo suficientemente pequenas para una mejor seleccion de datos,
mientras que el cierre realiza esta operacion para las
zonas negras, por lo que es u til usar ambas operaciones
conjuntas para realizar un filtro.
El gradiente permite definir bordes de forma mas practica, por lo que en algunos casos el seguimiento de
patrones se hara mas sencillo.
Las operaciones de Top Hat y Black Hat en imagenes binarias permiten realzar partones basicos segun la posicion
y direccion de los bordes, realizando as una recopilacion
de datos mas sencilla, dependiendo el caso se hara de
forma mas u til para el seguimiento de patrones.
Las operaciones de Top Hat y Black Hat en imagenes a
escala de grises permiten un efecto de bajo y alto relieve
respectivamente, permitiendo realzar aquellos detalles a
considerar dependiendo del fondo en el que se maneje
los objetos de interes.

Figura 3. Adelgazamiento a umbralizacion (5, 10 y 20 iteraciones)

Figura 5. Esqueleto a imagen binaria

Figura 6. Esqueleto a imagen a escala de grises

Figura 4. Adelgazamiento a imagen a escala de grises (5, 10 y 20 iteraciones)

Figura 7. Dilatacion a imagen binaria

Figura 9. Erosion a imagen binaria

Figura 8. Dilitacion a imagen a escala de grises

Figura 10. Erosion a imagen a escala de grises

Figura 11. Apertura a imagen binaria

Figura 13. Cierre a imagen binaria

Figura 12. Apertura a imagen a escala de grises

Figura 14. Cierre a imagen a escala de grises

Figura 15. Gradiente a imagen binaria

Figura 17. BlackHat a imagen binaria

Figura 16. Gradiente a imagen a escala de grises

Figura 18. BlackHat a imagen a escala de grises

Figura 19. TopHat a imagen binaria)

Figura 21. Filtro morfologico a imagen binaria

Figura 20. TopHat a imagen a escala de grises

R EFERENCIAS
[1] G. Bradsky and A. Kaehler, Learning OpenCV. Sebastopol: OReilly
Media, 2008

Figura 22. Filtro morfologico a imagen escala de grises

También podría gustarte