Uploaded by Luis Sanchez

PROCESAMIENTO-DIGITAL-DE-IMAGENES-PDI-CON-MATLAB

advertisement
PROCESAMIENTO DIGITAL DE IMÁGENES (PDI) CON MATLAB
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA
VISIÓN ARTIFICIAL
DICIEMBRE DE 2009
INTRODUCCIÓN
El procesamiento digital de una imagen es el conjunto de técnicas que se
aplican a las imágenes digitales con el objetivo de mejorar la calidad o facilitar
la búsqueda de información.
En esta práctica se trabaja operaciones por algoritmos de filtrado que extraen
las características más importantes de cada imagen, que permiten eliminar las
señales indeseadas, que por causa del método de adquisición, o de las
condiciones bajo las cuales fue captada.
A demás se maneja la segmentación de imágenes, la cual consiste en localizar
los diferentes objetos que están presentes en una imagen. En un sistema de
visión artificial genérico, la fase de segmentación se encuadra entre las fases
de preprocesamiento, en la que las imágenes son sometidas a diferentes
operaciones de filtrado que ayudan a mejorar la calidad de la imagen o a
destacar los objetos que posteriormente queremos segmentar, y la
de identificación o reconocimiento de los objetos, que es en la fase en la que se
reconocen y etiquetan los distintos objetos de la imagen.
Otra parte importante en el procesamiento de imágenes es reconocer la
existencia de variadas formas en los cuerpos que la componen y nos
proporciona la idea de volumen, superficie, línea, y punto, hallando así
características morfológicas propias de cada imagen.
Con base a esta morfología se puede realizar la detección de partes del cuerpo
como lo es la detección de rostros en MATLAB para esto es indispensable
poder identificar el área donde se encuentra el rostro de la imagen a procesar,
también se puede realizar una extracción de esa área del rostro hallando el
área máxima que lo encierra y realizando un corte a esa zona.
Hoy en día la implementación de este trabajo está respaldada por una
importante área en la biométrica que como lo son las redes neuronales, El
proceso de identificación facial se divide en dos tareas: «detección» y
«reconocimiento». La primera comprende la localización de las caras que
existen en una fotografía o en una secuencia de vídeo. La segunda tarea
compara la imagen facial con caras previamente almacenadas en una base de
datos. Se suele cotejar una serie de puntos clave, como la boca, nariz y ojos.
En esta práctica se implementó procesamiento digital de imagen en MATLAB
utiizando filtrado espacial con los siguientes filtros: (Binomial, Pasa bajos,
Laplaciano, Pasa alto, Máximo, Mínimo, Promedio, Sobel y Prewitt). A demás
utilizando segmentación de imágenes por niveles de grises, recortamos la
imagen en regiones con características similares.
Adicionalmente se muestra las características propias de la imagen como lo
son el ancho, el alto, el área y el perímetro, también se encarga de realizar la
detección y extracción de rostros dentro de una imagen.
I. PROCESAMIENTO DIGITAL DE IMÁGENES (PDI) USANDO FILTROS
ESPACIALES
Los filtros espaciales tienen como objetivo modificar la contribución de
determinados rangos de frecuencias de una imagen, directamente a la imagen
y no a una transformada de la misma, es decir, el nivel de gris de un pixel se
obtiene directamente en función del valor de sus vecinos.
Para el diseño de los algoritmos utilizamos la herramienta de MATLAB; aunque
no se utilizaron las funciones propias de MATLAB para el filtrado de imágenes,
sino que se hizo el filtrado de forma matricial y con un Kernel o mascara de
tamaño (3*3).
El menu dezplegado para filtros espaciales, en la comando de MATLAB es el
siguente:
Imagen 1. visualizacion menu desplegado para filtros espaciales
El usuario podra ingresar la opcion que desee implementar eligiendo el numero
correspondiente. Da la opcion tanbien de hacer el filtrado para imagen de color
o a escala de grises, para los dos el resultado es notable a simple vista.
Imagen 2. visualizacion opciones de color de la imagen para filtros espaciales
a) Filtro binomial (1)
El filtrado binomial se realiza para aplicar suavizado de ruido a las imágenes.
Binomial =[ 1
2
1; 2
4
2; 1
2
1];
Imagen 3. visualizacion imagen a color RGB con filtro binomial
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen 4. visualizacion imagen en escala de rises con filtro binomial
b) Filtro Laplaciano
La aplicación fundamental del filtro Laplaciano es aumentar la nitidez
(destacando los detalles) de la imagen, al afinar las líneas de transición de
niveles de gris.
Laplaciano = [ 0 1 0; 1 -4 1; 0 1 0];
Imagen 5. visualizacion imagen a color RGB con filtro Laplaciano
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen 6. visualizacion imagen en escala de grises con filtro Laplaciano
c) Filtro Paso-Bajo
Son utilizados en la reducción de ruido; suavizan y aplanan un poco las
imágenes y como consecuencia se reduce o se pierde la nitidez, son utilizados
para difuminar y reducir ruido en las imágenes es usado en etapas de
preprocesamiento desde la eliminación de pequeños detalles hasta la
extracción de objetos y rellenado de pequeños huecos en lineas y curvas.
Pasa bajo =[ 1
1
1; 1
1
1; 1
1
1]./9;
Imagen 7. visualizacion imagen en escala de color RGB con Filtro Paso-Bajo
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen 8. visualizacion imagen en escala de grises con Filtro Paso-Bajo
d) Filtro Paso-Alto
Estos filtros son utilizados para detectar cambios de luminosidad. Son
utilizados en la detección de patrones como bordes o para resaltar detalles
finos de una imagen. Son conocidos como Sharpening Spatial Filters.
Pasa Alto = [ -1
-1
-1; -1
-8
-1; -1
-1
-1];
Imagen 9. visualizacion imagen a color RGB de grises con Filtro Paso-Alto
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen 10. visualizacion imagen en escala de grises con filtro Laplaciano
e) Filtros Prewitt
Se usa para la detección de bordes. Éste consta de 8 matrices que se aplican
pixel a pixel a la imagen. Luego se suman las imágenes para obtener los
bordes bien marcados. El filtro de Prewitt marca muy bien los bordes ya que
sus matrices atacan estos desde ocho lados diferentes. En general cada matriz
toma el nombre de un punto cardinal: Norte, Sur, Este, Oeste, Noroeste,
Noreste, Suroeste, Sureste.
Prewitt = [ 1
1
1; 0
0
0; -1
-1
-1];
Imagen 11. visualizacion imagen a color RGB de grises con Filtro Prewitt
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen 12. visualizacion imagen en escala de grises con Filtro Prewitt
f) Filtros Sobel
Muy usado para la detección de bordes, este utiliza, a su vez, dos mascaras o
filtros. Una para detectar los bordes verticales y otra para los horizontales. Así,
para obtener los bordes completos se realiza la suma de las imágenes que nos
resultaron con los bordes verticales y horizontales.
Sobel = [ 1
2
1; 0
0
0; -1
-2
-1];
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen 13. visualizacion imagen en escala de grises con filtro Sobel
OPERACIONES BASADAS EN VECINDADES
g) Filtro mediana o promedio:
Es un filtro muy interesante, ya que se clasifican los píxel con cierta intensidad
para determinar el valor del píxel filtrado. La forma del filtro es la misma que los
filtros normales de la convolución.
Los usos de este filtro aparte de eliminar mucho ruido de la imagen también
resuelven discontinuidades de una imagen sin destruir la información general.
Los píxeles que no son similares en valor a sus vecinos serán eliminados; la
característica de píxeles muy diferentes es una indicación de que la imagen
posee ruido.
Imagen 14. visualizacion imagen a color RGB filtro promedio
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen15 . visualizacion imagen en escala de grises con filtro promedio
h) Filtro mínimo:
De forma similar al filtro anterior se clasifican los píxeles según su valor. En
este filtro se usa el menor valor del píxel como el nuevo valor filtrado.Este filtro
también puede denominarse filtro de compresión o erosión porque la
aplicación sucesiva del mismo causará una disminución en la intensidad de los
bordes de los objetos dentro de una imagen, llegando a desgastarse.
Imagen16 . visualizacion imagen a color RGB con filtro minimo
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen17 . visualizacion imagen en escala de grises con filtro minimo
i) Filtro máximo:
En este filtro se usa el mayor valor del píxel como el nuevo valor filtrado.
Este filtro también se conoce como filtro de descompresión o expansivo,
porque la aplicación sucesiva de estos filtros causa un incremento en la
intensidad de los bordes dentro de una imagen, llegando a aumentar de
tamaño los bordes.
El efecto Filtro máximo resalta píxeles claros en una imagen.
Imagen18 . visualizacion imagen a color RGB con filtro maximo
Utilizando la opcion de escala de grises la imagen filtrada se visualiza asi:
Imagen19 . visualizacion imagen en escala de grises con filtro maximo
II. PROCESAMIENTO DIGITAL DE IMÁGENES (PDI) USANDO
SEGMENTACION
La segmentación de una imagen implica la detección, mediante procedimientos
de etiquetado deterministas o estocásticos, de los contornos o regiones de la
imagen, basándose en la información de intensidad o/y la información espacial.
Existen diferentes métodos de segmentación que pueden utilizarse y cada tipo
o familia normalmente se asocia a un tipo de problema a resolver. En este caso
aplicamos métodos de segmentación con los que se obtienen muy buenos
resultados.
Antes de segmentar es preciso definir qué objetos interesa determinar, tras la
segmentación es posible realizar operaciones de filtrado (a nivel de objetos),
así como determinar características que permitan clasificar los objetos.
La opción de segmentación viene dada por la opción de recorte de la imagen
mostrada en el menú desplegado en la ventana de comandos de MATLAB.
Imagen20 . visualizacion menu de opciones en ventana de MATLAB
Una vez seleccionada esta opción la imagen mostrada en pantalla es:
Imagen21 . visualizacion imagen recortada
III. EXTRACCION DE CARACTERISTICAS
La función Característica Extrae características de una figura después de haber
sido pasado por la función segmentación de la imagen, para poder resaltar su
contorno, y así de esta forma poder recorrer la imagen y hallar su perímetro de
una manera fácil y exacta, al igual que su área y sus dimensiones.
La opción de extracción de características de la imagen viene dada por la
opción de “características” mostrada en el menú desplegado en la ventana de
comandos de MATLAB.
Imagen22 . visualizacion menu de opciones en ventana de MATLAB
Imagen23 . visualizacion contorno de la imagen
Imagen24 . visualizacion contorno de la imagen
Imagen para hallar el perímetro del contorno de la figura.
Imagen25 . visualizacion contorno de la imagen
Los resultados son mostrados en pantalla
Imagen26 . Resultados del vector de caracteristicas
IV. DETECCION DE ROSTROS
La opción de reconocimiento de rostros en imagen viene dada por la opción
de “rostro” mostrada en el menú desplegado en la ventana de comandos de
MATLAB.
Imagen27 . visualizacion menu de opciones en ventana de MATLAB
La imagen usada para probar el código tiene las siguientes características:
Dimensiones: 416*300
Tipo: JPEG
Tamaño: 27.6 KB
Imagen28 . visualizacion imagen original antes de aplicar deteccion de rostros
Para lograr este objetivo es necesario la implementación de la librería fdlib que
posee una biblioteca de detección de rostros para C / C + + y Matlab. Que
permite detectar las caras frontales de las imágenes.
Imagen29 . Despues de utilizar la deteccion de rostros implementada en MATLAB
V. PROCESAMIENTO DIGITAL DE IMÁGENES (PDI) VISUALIZACION DE
LA ZONA DEL ROSTRO
La detección de rostros tiene como objetivo identificar todas las regiones de la
imagen que contengan rostros humanos sin importar su posición, escala,
orientación, pose e iluminación. También se define la localización de rostros,
que es una simplificación del problema anterior, ya que identifica una sola
región que contenga un rostro en una imagen.
El método de detección de rostros basado en la detección de bordes se divide
en 3 partes principales:
Construir el modelo del fondo, realizar la substracción del fondo y delinear el
frente. El fondo es modelado en base a un modelo de color y a un modelo de
bordes. Para cada canal de color (R, G o B) el modelo de color es representado
por dos imágenes, la primera representa el promedio y la segunda la
desviación estándar de la componente de color de la imagen extraída de la
secuencia de video con un fondo estático. Este modelo se aplica para
identificar los pixeles que han cambiado de color de una imagen a la siguiente.
El modelo de bordes es construido aplicando el operador de bordes de Sobel a
cada componente de color. Este operador ejecuta una medida del gradiente
espacial en 2 dimensiones en una imagen, esto enfatiza las regiones de alta
frecuencia espacial o regiones con grandes cambios que corresponden a los
bordes). De la aplicación de este operador se obtiene como resultado una
imagen de gradiente horizontal y una imagen de gradiente vertical, de éstas
también se obtiene la imagen promedio y la desviación estándar.
Imagen 30 . visualizacion deteccion de rostro por contorno con filtro
Imagen 31 . visualizacion deteccion de rostro por contorno con filtro
CONCLUSIONES
A través del desarrollo de esta práctica se pudo analizar y diferenciar los tipos
de filtros los cuales a través de la aplicación de algoritmos permiten eliminar las
señales indeseadas según sus características, y el manejo que hacen sobre la
imagen con el fin de mejorar su calidad ya que en muchos casos la imagen
original presenta algunas impurezas producidas por una gama de factores
entre las que se incluyen el ambiente, el estado del sistema de adquisición, el
estado del canal de transmisión, los cuales generan distorsión y ruido.
Si analizamos los resultados obtenidos se puede mencionar que el algoritmo de
segmentación basado en etiquetación de píxeles propuesto resulta muy
efectivo en condiciones en las cuales sabemos que los objetos a segmentar no
están juntos en la escena.
El algoritmo propuesto se basa en el hecho de que los objetos a identificar en
la imagen no están juntos tal y como sucede en los dos primeros experimentos
que hemos realizado. En el tercer experimento podemos observar claramente
la deficiencia de nuestro algoritmo.
A través del desarrollo de esta práctica se pudo analizar y diferenciar las
características básicas manejadas para imágenes con figuras geométricas las
cuales a través de la aplicación permite calcular propiedades como área,
perímetro, tamaño y circularidad con el fin de identificar el tamaño, la forma y
las limitaciones que esta posee para hacerla medible en el espacio.
WEBGRAFIA
1. http://www.slideshare.net/omarspp/imagen-filtrado-espacial
2. http://ocw.um.es/ciencias/herramientas-de-teledeteccion-aplicadas-ala/material-de-clase-1/tema-6-tecnicas-de-filtrado.pdf
3. http://es.wikipedia.org/wiki/Procesamiento_digital_de_im%C3%A1genes
4. http://www.ingenieria.cl/tesis/ing_%28c%29_elec/1%282002%29/1.pdf
5. http://cabierta.uchile.cl/revista/17/articulos/paper4/index.html
6. http://www.elo.utfsm.cl/~elo328/
7. http://www.faq-mac.com/noticias/9001/sistemas-reconocimiento-facialraul-sanchez-vitores
8. http://kyb.mpg.de/bs/people/kienzle/facedemo/facedemo.htm
9. http://www.mathworks.com/matlabcentral/fileexchange/20976-fdlibmexfast-and-simple-face-detection
Download