Universidad Simn Bolvar
Reconocimiento del Iris
Visin Artificial
Jorge Palacios 10-87970.
Sartenejas, Mayo 2012.
El proyecto consisti en implementar parte de la publicacin Extraccin
Digital De Caractersticas Biomtricas Basadas En Patrones Del Iris Humano de
Daz, Torres y Tijaro. Ms especficamente la primera parte donde se aplica la
Transformada de Hough para el reconocimiento y aislamiento del iris.
El proyecto se dividi en grandes pasos, a saber:
1. Deteccin y enmascaradode la pupila.
2. Deteccin y aislamiento del iris.
3. Eliminacin de prpados.
4. Conversin de coordenadas polares al plano Cartesiano.
El proyecto se implement con Python y OpenCV en sistema operativo Fedora
Linux 16 motivado la flexibilidad de las herramientas y un ligero conocimiento
previo de las mismas. De igual manera, no se consideraron las dems
herramientas nombradas en clases por no tener conocimiento alguno de las
mismas; lo que poda repercutir de manera negativa sobre la velocidad de
avance.
En este sentido, se busc crear 4 grandes funciones para cada uno de los pasos
anteriormente donde la entrada para cada proceso es el resultado del anterior, y
as manejar lo que se conoce en Ingls como image-processing pipeline.
Deteccin y enmascarado de la pupila
Primeramente se pudo observar que la pupila es un gran punto negro, con
algunos puntos blancos de los leds de la cmara, pero a grandes rasgos tiende a
ser la parte ms oscura de la imgen. Para ello, se buscaron blobs que se
encuentren dentro del rango especificado. Adems del elemento visual, la
publicaccin ofrece un histograma que sirvi de apoyo para la consideracion del
rango de valores.
Como pueden existir pequeos segmentos de pestaas, se calcula el rea de cada
blob o segmento; y slo aquel cuya rea sea superior a un valor prominente (en
este caso 50) es el segmento que ser tomado para enmascarar la pupila. En este
sentido, se pinta el segmento completo (sin considerar los segmentos vacos o
blancos porque se sabe de antemano que no corresponde a algo que nos
interese). Igualmente, se calcula el centroide de la pupila para calibrar el centro
del iris en caso que la Transformada de Hough, como se pudo apreciar en clases,
ofrezca un centro distinto.
Las funciones relevantes:
[Link] (divisin binaria de pixels; los que estn dentro del rango y los
que no).
[Link] (dada una imagen binaria, encuentra segmentos o blobs
de pixeles).
[Link] (clculos de los momentos de cada segmento de blobs)
Deteccin y Aislamiento del Iris
A partir de la pupila procesada, se utiliz el mismo proceso que en la
publicacin para encontrar el iris. Se aplic el algoritmo de Hough con previo preprocesado con algoritmo de Canny y suavizado del mismo.
En esta parte del proceso, lo ms importante fue dar con el valor ideal para cada
ojo. Este valor es el acumulador de umbral o accumulator threshold y se tiene una
funcin aislada que calcula la transformada de Hough hasta encontrar un solo
crculo cambiando el valor de manera incremental.
Adicionalmente, se le coloca a la funcin de la transformada los mnimos y
mximos del radio de los crculos a encontrar. Para estos valores, se tom una
aplicacin de diseo (Gimp) a fin de calcular a ojo los valores aproximados. Esto
con la finalidad de que la funcin descarte automticamente el crculo dado por la
pupila del ojo.
Obtenido el radio de la transformada, y con ayuda del centroide calculado
anteriormente, se crea una mscara a fin de crear una nueva imagen sin las
secciones del ojo que no son de nuestro inters.
Este paso fue uno de los ms difciles por cuanto la ambigedad de la informacin
en Internet. En el sitio StackOverflow se busc una explicacin detallada sobre el
uso de la funcin y los parmetros, lo que permiti aclarar conceptos. La
informacin puede ser accedidad en la siguiente URL: [Link]
Las funciones relevantes:
[Link] (algoritmo de Canny para deteccin de filos).
[Link] (funcin general de suavizado).
[Link] (transformada de Hough implementada en OpenCV).
[Link] (seleccionar pxeles de una imagen dada una mscara)
Eliminacin de Prpados
Este paso no pudo ser realizado por falta de tiempo. Sin embargo, se tiene
una idea de cmo aplicarlo que se explica a continuacin.
Utilizando un principio similar al paso anterior, buscar elipses a partir del
resultado de aplicar el algoritmo de Canny sobre la nueva imagen. Sin embargo,
ahora la heurstica puediera ser buscar valores de umbral de acumulador hasta
obtener 2 crculos o una elipse (bien un crculo para cada prpado o una elipse
que los aproxime a ambos).
Conversin de coordenadas polares al plano Cartesiano
Esta conversin se hizo utilizando la funcin LogPolar de OpenCV. Aun
cuando la funcin crea una nueva imagen a partir del centro calculado en el
primer paso, se tiene un resultado distinto al de la publicacin por un par de
pasos que faltaran por realizar:
Crear una imagen nueva dado el radio del iris y el centro. Esto con la
finalidad de eliminar la mayor cantidad de espacio negro que no es de
inters.
Aplicar la funcin anteriormente mencionada y terminar de buscar los
valores ptimos para su muestreo en la nueva ventana.
A fin de probar el algoritmo utilizando las imgenes proporcionadas, el programa
cuenta con un pequeo sistema de cambio de imgenes en un ciclo principal y se
aprovech la funcin de espera por teclado ([Link]) para dar una pausa y ver
los resultados de cada ojo.
Adicionalmente, se cre un repositorio donde se puede apreciar cmo fue el
desarrollo del proyecto. Se busc que cada commit fuese funcional, por lo que no
debera haber problema en probar cada uno de ellos. Es de acceso pblico y su
URL es [Link]
Conclusin
Ms all de aplicar de forma prctica los conceptos aprendidos en clases, el
proyecto termin de afianzar algunos conocimientos con respecto al punto ms
relevante de la primera parte del curso; la transformada de Hough. Igualmente se
tuvo la oportunidad de jugar y experimentar con funciones de OpenCV de las
cuales no se tenan conocimiento.
De igual manera, permiti al investigador incrementar sus habilidades en el
lenguaje Python y creacin de una filosofa de trabajo ms organizada que la que
posea para proyectos pasados basados en Visin Artificial.