Universidad Nacional de Córdoba Facultad de Matemática, Astronomía y Física Licenciatura en Ciencias de la Computación Trabajo final de Grado “Algoritmos de origen computacional como una alternativa eficaz para la segmentación y comparación digital del iris humano” Rocchietti Marco A. Scerbo Alejandro L.A. Autores: Alejandro Luis Angel Scerbo scerbo@famaf.unc.edu.ar Marco Augusto Rocchietti mrocchie@famaf.unc.edu.ar Supervisor: Dra Silvia M. Ojeda ojeda@famaf.unc.edu.ar Marzo-2012 1 Clasificación ACM: ‘I.4.6’ (consultar http://www.acm.org/about/class/ccs98-html) Palabras Clave: Iris, Pupila, Segmentación, Computacional, Biometría, Algoritmo Resumen: Las técnicas empleadas en la actualidad para reconocimiento e identificación del iris humano son de muy reciente aplicación. La mayoría de desarrollos disponibles están basados en modelos matemáticos complejos; que aunque demuestran buenos resultados para imágenes digitales en general, no aprovechan propiedades específicas de imágenes del ojo humano. Este trabajo es una respuesta de concepción computacional a esta problemática. Se propone un algoritmo de segmentación de la pupila, y en consecuencia un método computacional de reconocimiento del iris humano. 2 Agradecimientos En estos 9 años de vida universitaria, nos relacionamos con muchas personas que influyeron muy positivamente en nuestro camino e indudablemente modelaron nuestro carácter como individuos. Por ello queremos aprovechar esta página para dedicarles nuestro más profundo agradecimiento: A nuestra directora de tesis Silvia M. Ojeda, porque además de dirigir y supervisar nuestro trabajo, fue siempre una fuente constante de motivación, apoyo y confianza incondicionales, además de promover nuestra participación en actividades científicas extracurriculares, que enriquecieron infinitamente esta etapa de nuestra carrera. A Laura Alonso Alemany, Daniel Fridlender, Oscar H. Bustos, Valeria Rulloni y Ronnie Vallejos, que ya sea como colaboradores directos o indirectos de este trabajo especial, nos brindaron toda su atención, conocimientos, guía, apoyo y tiempo desinteresadamente cada vez que fue necesario. A los profesores Diego Vaggione, Daniel Penazzi, Javier Blanco, Pedro Dargenio, Héctor Gramaglia, Pedro Sánchez Terraf, Carlos Marques, Nazareno Aguirre, Walter Lamberti, Cristina Turner y Patricia Kisbye, los cuales no quisimos dejar de mencionar especialmente por su influencia durante todo el transcurso de nuestra carrera. Todos ellos nos dejaron algo más que su calidad como docentes e inagotable predisposición para transmitir conocimientos, y debido a la forma en la que nos alcanzaron como personas guardaremos un excelente recuerdo de cada uno. A nuestros queridos amigos y compañeros de toda la carrera Paula Zeballos, Simon Carbajal, Rafael Carrascosa, Marco Antonio Brunello, Dionisio Alonso, Matias Bellone, Gerardo Marenco, Nicolás Bagatello, Jose Manzano, Javier Aliaga, Gabriel Cámara Cagliero, Carlos Álvarez Luque y Jose Salinas; que llenaron esta larga etapa de nuestra vida de momentos inolvidables, tanto dentro como fuera de la universidad y con los cuales queremos seguir compartiendo las etapas que vengan. A Laura Bettiol, María Elena Quiroga, Carolina Villalon, Nain Cadro, Rocío Tolaba, Eduardo Cáserez, Mario Di Salvo y a todos los amigos de la comunidad del Coro de FaMAF que nos brindaron su amistad y contención, enriqueciendo todos estos años. A Diego Aguirre, Francisco Paván y Georgina Girbau, que como parte del personal no docente nuestra facultad siempre mostraron dedicación, predisposición y una genuina preocupación que en muchas ocasiones excedió a las responsabilidades propias del cargo, facilitando enormemente nuestro paso por FaMAF. A nuestros padres Alejandro y Viviana, Gustavo y Alicia, que junto a nuestros hermanos apoyaron siempre esta etapa de nuestra vida, y sin los cuales hubiese sido imposible de concretar. Finalmente un agradecimiento muy particular a nuestro compañero de tesis, ya que emprendimos este camino juntos hace 9 años, y el concluirlo juntos refleja mucho más que una excelente relación académica, compartiendo además de muchísimos días de estudio, infinidad de situaciones de la vida cotidiana fuera de la universidad. Muchísimas gracias a todos ustedes!!! ale y marco, Marzo-2012 3 4 Prólogo El trabajo a continuación se enmarca como la asignatura “Trabajo Especial” perteneciente al último año de la Licenciatura en Ciencias de la Computación de la Facultad de Matemática, Astronomía y Física de la Universidad Nacional de Córdoba, y representa en si mismo el trabajo final de grado de los estudiantes Alejandro L.A. Scerbo y Marco A. Rocchietti, bajo la dirección y supervisión de la doctora Silvia María Ojeda y la colaboración de los doctores Laura Alonso Alemany y Daniel Fridlender. Cabe destacar que la participación de ambos estudiantes en este trabajo especial estuvo implícitamente justificada por la dimensión de los objetivos planteados (y posteriormente obtenidos). La elección del director, tanto como la de los docentes colaboradores fueron hechos intrínsecos al desarrollo del trabajo, ya que el mismo involucraba asesoramiento multidisciplinario en áreas como estadística, inteligencia artificial, algoritmos y estructuras de datos, etc. En cuanto a la asignación de tareas para cada estudiante, cabe aclarar que salvo por deberes como la revisión de la literatura, o investigación bibliográfica (los cuales podrían ser llevados a cabo por separado), todas las actividades necesarias para concluir el trabajo especial fueron realizadas conjuntamente. En 2009 ambos estudiantes cursamos la materia optativa “Análisis Estadístico de Imágenes Satelitales” dictada ese año por el doctor Oscar H. Bustos y la licenciada Valeria Rulloni, hecho que nos acercó al gabinete de estadística aplicada sobre imágenes digitales de la misma facultad y nos familiarizó tanto con los conceptos fundamentales para el análisis de imágenes digitales como con algunas herramientas utilizadas para el mismo fin. Consecuentemente, todos estos hechos estuvieron íntimamente relacionados con la propia elección del tema y la posterior formulación del proyecto de tesis que constituyen a este trabajo final. Tanto el planteo como la investigación, desarrollo y pruebas pertinentes a este trabajo fueron llevados a cabo en el período comprendido entre octubre de 2010 y diciembre de 2011, tiempo en el cual también tuvimos el orgullo de participar en el “I Encuentro Regional de Procesamiento de Imágenes” llevado a cabo en Córdoba, posteriormente en la “XIV Reunión de Trabajo en Procesamiento de la Información y Control” celebrada en la localidad de Oro Verde, Entre Ríos, obteniendo en la misma el segundo premio en el “Concurso AADECA Estudiantil RPIC 2011”. Finalmente en noviembre de 2011 tuvimos el agrado de concurrir al “IV Simposio de Estadística Espacial y Modelamiento de Imágenes” llevado a cabo en la ciudad de Valparaíso, Chile, donde nuestro trabajo fue positivamente valorado por el público especializado. Desde que emprendimos este proyecto; y al haberlo montado sobre un ámbito multidisciplinario, nos motivó la promesa de obtener algún resultado que más allá de su valor teórico para alguna de las ciencias involucradas, fuese comprensible y apreciable por el público en general. De igual manera, al momento de redactar esta versión escrita, hemos perseguido el objetivo (no trivial) de producir un texto de comprensión multidisciplinaria, buscando una redacción lo más al alcance del público en general dentro de nuestras posibilidades. En esta versión escrita el trabajo completo se presenta recopilado y organizado en las secciones que consideramos más relevantes. 5 Índice Sección 1: INTRODUCCIÓN.................................................................................... 8 1.1_Biometría.............................................................................................................. 9 1.1.1_Definición..................................................................................................... 9 1.1.2_Breve historia de la biometría................................................................... 9 1.1.3_Ejemplos de biométricas (diferentes del iris)........................................... 10 1.1.4_Características Biométricas....................................................................... 11 1.1.5_Los pasos de la biometría........................................................................... 11 1.1.6_El iris como biométrica.............................................................................. 12 1.2_Anatomía Básica: El ojo humano....................................................................... 13 1.3_Estado del Arte..................................................................................................... 15 Sección 2: MOTIVACIÓN......................................................................................... 18 2.1_Objetivos Iniciales................................................................................................ 19 2.2_Algunas Problemáticas........................................................................................ 20 2.2.1_La ausencia de estándar............................................................................. 20 2.2.2_Performance y polivalencia....................................................................... 22 2.2.3_Concepción de los métodos........................................................................ 22 2.2.4_Proyección del campo de uso: “industrial vs. forense”........................... 24 Sección 3: ENTORNO................................................................................................ 26 3.1_Plataforma de Software...................................................................................... 27 3.2_Plataforma de Hardware.................................................................................... 28 Sección 4: DATASETS............................................................................................... 29 4.1_El dataset elegido: Casia-IrisV1......................................................................... 30 4.2_Otros proyectos de CASIA: CASIA-IrisV2 y V3............................................. 31 4.2.1_CASIA-IrisV2............................................................................................. 31 4.2.2_CASIA-IrisV3............................................................................................. 33 4.3_MMU Iris Database............................................................................................ 34 4.4_Phoenix Iris Database......................................................................................... 35 4.5_Una comparación cualitativa............................................................................. 36 4.6_Proyecciones de utilización................................................................................. 38 Sección 5: DESARROLLO........................................................................................ 39 5.1_Primeros acercamientos...................................................................................... 40 5.1.1_Algoritmo para detección de bordes......................................................... 40 5.1.2_Algoritmos de Clasificación: “K-Medias”................................................ 41 5.1.3_Clasificación mediante ROI’s.................................................................... 41 5.2_Lineamientos........................................................................................................ 42 5.2.1_Convenciones de notación.......................................................................... 43 5.2.2_Pseudocódigo............................................................................................... 44 6 5.3_Nuestro Método.................................................................................................... 46 5.3.1_Localización de la Característica............................................................... 47 5.3.2_Normalización y Preprocesamiento...........................................................52 5.3.3_Extracción de característica....................................................................... 57 5.3.4_Comparación (matching)............................................................................59 5.4_Estructura del sistema......................................................................................... 60 Sección 6: PRETRATAMIENTOS........................................................................... 61 6.1_Preliminares......................................................................................................... 62 6.1.1_Un análisis semántico informal de Cruz................................................... 62 6.1.2_Las limitaciones de Cruz............................................................................ 63 6.2_La búsqueda del pretratamiento........................................................................ 64 6.2.1_El problema a combatir.............................................................................. 64 6.2.2_Las técnicas para combatirlo..................................................................... 65 6.3_Mejoras esperadas............................................................................................... 73 6.4_Posibles mejoras adicionales............................................................................... 75 6.5_Trabajando con las imágenes pretratadas......................................................... 76 6.5.1_El algoritmo Cruz 2.................................................................................... 76 6.5.2_Segmentar la pupila.................................................................................... 78 6.5.3_Estructura resultante del sistema con los pretratamientos.................... 80 Sección 7: VALIDACIÓN.......................................................................................... 81 7.1_Segmentación........................................................................................................ 82 7.1.1_Criterio de efectividad propuesto.............................................................. 82 7.1.2_Falsos positivos............................................................................................ 82 7.1.3_Pruebas........................................................................................................ 83 7.1.4_Resultados................................................................................................... 84 7.1.5_Conclusiones............................................................................................... 84 7.2_Matching............................................................................................................... 85 7.2.1_Criterio de efectividad propuesto.............................................................. 85 7.2.2_Falsos positivos............................................................................................ 85 7.2.3_Pruebas........................................................................................................ 85 7.2.4_Resultados.................................................................................................... 87 7.2.5 Conclusiones................................................................................................. 87 7.3_Pretratamientos.................................................................................................... 88 7.3.1_Criterio de efectividad propuesto.............................................................. 88 7.3.2_Falsos positivos, falsos negativos............................................................... 88 7.3.3_Pruebas........................................................................................................ 88 7.3.4 Resultados.................................................................................................... 89 7.3.5 Conclusiones................................................................................................ 89 Sección 8: CONCLUSIONES.................................................................................... 90 8.1_Valoraciones propias........................................................................................... 91 8.2_Trabajo a futuro................................................................................................... 93 Sección 9: REFERENCIAS…....................................................................................94 7 1.INTRODUCCIÓN INTRODUCCIÓN El objetivo de esta sección, es naturalmente introducir al lector en el área en la que este trabajo final de grado se enmarca, revisando conceptos básicos sobre la biometría, luego más particularmente la anatomía ocular básica y finalmente una breve reseña sobre el estado del arte. 8 1.INTRODUCCIÓN 1.1 Biometría 1.1.1 Definición Desde el punto de vista clásico la biometría se define como: “La biometría es el estudio mensurativo o estadístico de los fenómenos o procesos biológicos.” [4] Aunque en la actualidad encontramos con frecuencia una definición más puntual: “La biometría estudia el conjunto de métodos automatizados que analizan determinadas características humanas para identificar o autentificar personas.” [6] En este trabajo utilizaremos esta última definición de biometría y entenderemos por biométrica a toda característica humana (conductual o física) capaz de identificar al individuo. 1.1.2 Breve historia de la biometría El primer registro que hay de la utilización de la biometría data del siglo XIV en China donde el explorador y escritor Joao de Barros vio como los comerciantes de allí estampaban las impresiones y las huellas de la palma de las manos de los niños en papel con tinta para distinguir entre los mismos. [13] En occidente el primer sistema biométrico fue el antropométrico, también conocido más tarde como Bertillonage. Desarrollado en París en el año1883 el sistema usaba ciertas medidas de la cabeza y el cuerpo como biométrica (también utilizaba tatuajes y cicatrices de haberlas). Esta técnica era empleada principalmente por la policía para identificar a los criminales y llegó a ser adoptada por gran parte de occidente. [13] Aunque el sistema era preciso, se fueron presentando algunos problemas debido a métodos distintos de medida y cambios de medida. Más adelante sería reemplazada por las huellas dactilares el cual se comenzó a utilizar en occidente cuando Sir Francis Galton definió algunos de los puntos o características desde las cuales las huellas dactilares podían ser identificadas. Este método comienza su transición a la automatización a finales de los años 60 junto con la aparición de las tecnologías de computación. El trabajo del NIST (Instituto Nacional de Estándares y Tecnología) Condujo el desarrollo del algoritmo M40, el primer algoritmo operacional utilizado en el FBI para estrechar la búsqueda de humanos. Los resultados producidos por el algoritmo M40 fueron provistos a técnicos humanos entrenados y especializados quienes evaluaron el significantemente más pequeño grupo de imágenes candidatas. [14] 9 1.INTRODUCCIÓN 1.1.3 Ejemplos de biométricas (diferentes del iris) En la actualidad existen muchas biométricas comprobadas y algunas experimentales. Muchas veces se utilizan características que aunque no son absolutamente únicas por lo menos si lo son al considerar un conjunto acotado razonable de personas. Por ejemplo algunas organizaciones utilizan la forma en que se presionan las teclas del teclado de la computadora como característica. Ciertamente esto no identifica a una persona, pero por lo menos puede orientar al momento de buscar accesos no autorizados a equipo por terceros. Otras características usadas son: • Geometría de la mano: El reconocimiento se basa en un número de medidas tomadas de la mano humana, como su forma, tamaño y el largo y ancho de sus dedos. No se considera parte de las características de la mano a su textura (es decir que no incluye huellas dactilares). • Huella digital: Es sin duda la característica biométrica más conocida y explotada hasta hoy en día para identificar personas. Además su uso policial es de gran importancia ya que estas huellas dactilares quedan impresas en los muchos objetos que tocamos. • Voz: El reconocimiento de voz se considera una biométrica tanto física como conductal. La característica física de la voz se basa en la forma y tamaños de los apéndices (tractos vocales, boca, cavidades nasales y labios) los cuales se mantienen invariantes en el individuo. • Escritura: Como su nombre lo indica la característica analizada en este método es la escritura manuscrita de la persona. Para poder realizar la identificación se necesita tener en una base de datos ejemplos de escritura del individuo para así contrastar la muestra tomada. Los patrones biométricos distintivos de esta modalidad son los ritmos personales, aceleración y flujo de presión de cuando una persona escribe una palabra o grupo de palabras específicas. Usualmente se usa la firma manuscrita de la persona para trabajar. • Oreja: Es una nueva tecnología biométrica y es de particular utilidad durante la escena del crimen cuando no hay huellas digitales que analizar. Puesto que los delincuentes no suelen cubrirse las orejas, podrían usarse las imágenes de las cámaras de seguridad para intentar identificarlos. 10 1.INTRODUCCIÓN 1.1.4 Características Biométricas Habiendo mencionado diferentes biométricas y usos de las mismas, estamos ya en condiciones de enumerar las características deseables en una biométrica: Universalidad: Todos los individuos que accedan a la aplicación deben poseer la característica. Unicidad: Dicha característica debe ser única en la población tenida en cuenta. Permanencia: La biométrica elegida no debe desaparecer o modificarse en el individuo a lo largo del tiempo (o por lo menos debe durar mientras la aplicación sea utilizada). Mensurabilidad: Se debe poder digitalizar la característica biométrica usando dispositivos que no causen inconvenientes al individuo. 1.1.5 Los pasos de la biometría En general un sistema biométrico cuenta con las etapas ilustradas en la siguiente figura: Figura 1.1: “Los pasos de la biometría” 11 1.INTRODUCCIÓN Cabe destacar que la adquisición de la imagen es todo un problema en sí mismo. El desarrollo de dispositivos sensibles a la característica biométrica termina siendo crucial para la viabilidad del sistema. Pero esto escapa al alcance de la informática y es un problema del cual se deberá encargar la ingeniería. Es por ello que en este trabajo no propondremos ningún método de captura de imagen, sino que trabajaremos sobre un conjunto de imágenes previamente adquiridas por sensores especializados. 1.1.6 El iris como biométrica Desde hace tiempo, se considera al iris del ojo humano como una característica de interés biométrico, por sus cualidades especiales y diferentes de otras biométricas. Además de identificar unívocamente a cada humano, las características que hacen del iris una biométrica se forman desde los tres meses de gestación y permanecen prácticamente idénticas durante toda la vida del individuo. Por otro lado no es necesario el contacto físico para extraer una lectura y su falsificación es prácticamente remota, o por lo menos demasiado dificultosa. Dada la anatomía del ojo y centrando el análisis en la localización del iris dentro de dicho órgano, se concluye que el iris es un tejido pigmentado de alta movilidad y que se encuentra visible desde el exterior, debido a la trasparencia de la córnea, y gracias a ésta, perfectamente protegido de agentes externos. Todo esto confiere al iris las siguientes características, desde el punto de vista de su potencial aplicación a la identificación biométrica: Estabilidad: frente a cambios originados por accidentes, debido a la protección que le confiere la córnea. Fácil mecanismo de detección de «sujeto vivo». Pequeñas variaciones en la iluminación producen alteraciones en la apertura de la pupila. Incluso, con iluminación fija, el iris no se encuentra estático, sino que presenta pequeñas y continuas variaciones en su apertura. Profilaxis: Los datos (en este caso, la imagen) se pueden capturar de forma no invasiva, al ser visible desde el exterior por la transparencia de la córnea. “Legitimibilidad”: El intento de falsificar el iris de una persona conllevaría operaciones quirúrgicas que podrían dañar muy seriamente la visión. Todas estas características son sin duda, muy importantes a la hora de estudiar la viabilidad de esta biométrica. Sin embargo falta la característica fundamental: la unicidad. Basándose en diversos estudios recogidos en [15], en el patrón visual del iris hay más información que identifica unívocamente a una persona, que en una huella dactilar. Cabe destacar que la información útil del iris está en su textura, el color no juega un papel importante. De hecho, los dos ojos de una persona poseen patrones distintos, siendo ésta una característica muy importante que tiene que ser considerada en el sistema al no ser la imagen de los dos ojos intercambiables. Estudios más detallados han llevado a la conclusión de que incluso los hermanos gemelos poseen patrones de iris bien diferenciados. De todo esto se puede concluir que esta biométrica presenta una unicidad extremadamente alta, lo que llevaría a unas tasas de falsa aceptación nulas, garantizando, por tanto, su viabilidad para ser utilizada en identificación en entornos de alta seguridad. 12 1.INTRODUCCIÓN 1.2 Anatómica básica: El Ojo Humano Antes de abordar la problemática que conlleva el procesamiento de una imagen oftálmica recordaremos como esta estructurado el ojo humano desde el punto de vista anatómico. El ojo humano es el órgano encargado de brindar el sentido de la visión. Este órgano comienza a desarrollarse en el 25º día de la fase embrionaria y hacia la octava semana termina la génesis del esbozo ocular, que seguirá madurando hasta el noveno mes. Una vez maduro podemos identificar las secciones que vemos cotidianamente. A simple vista se pueden distinguen tres regiones: • La Esclerótica: Es la parte blanca del ojo que brinda protección a las partes internas. • El Iris: Se manifiesta como la parte coloreada del ojo la cual es una membrana circular de alta movilidad. Se forma desde los 3 meses de gestación y al octavo mes ya esta completamente desarrollado. La pigmentación del iris se termina de estabilizar pasado el año de nacimiento y permanece sin cambios durante toda la vida del individuo (salvando patologías o accidentes muy particulares). • La Pupila: Es la parte negra del ojo; que es ni más ni menos, la apertura del iris la cual se contrae y se dilata según las variaciones de intensidad lumínica que impacten sobre la retina. Pupila Esclerótica Iris Figura 1.2: Secciones del ojo 13 1.INTRODUCCIÓN Otro componente importante del ojo humano (el cual al ser translúcido no se ve a simple vista) es la córnea. Se trata de la lente de mayor poder refractivo del ojo que comunica ópticamente la parte exterior e interior del globo ocular. Al igual que la esclerótica cumple una función protectora, en particular gracias a ella el iris está bien resguardado de elementos externos que de otra manera podrían deteriorarlo. La córnea cubre la superficie abarcada por el iris y su forma es discoidal (como se puede observar en la figura 1.3). Su diámetro es prácticamente uniforme en los seres humanos oscilando entre los 11.5mm y 12mm aunque por el efecto de lente se observa una longitud horizontal aproximada de 13mm. Esta particularidad es de gran importancia en este trabajo, pues al tener la córnea una longitud estándar, también se tiene una longitud acotada (por 13mm) del iris. En la figura 1.3 se puede apreciar la estructura del ojo humano en su totalidad. Figura 1.3: Anatomía del ojo 14 1.INTRODUCCIÓN 1.3 Estado del Arte: Trabajos relacionados El estudio, análisis e implementación de algoritmos derivados de la problemática de identificación y reconocimiento del iris, constituye un tema de gran interés que beneficia a numerosas disciplinas científicas y áreas de aplicación tales como: biología, medicina, optometría, física, tecnología, informática, seguridad, medicina forense, etc. Sin embargo, no es sino hasta hace unos años, que los avances científicos y tecnológicos han posibilitado la utilización del iris como medio de identificación de individuos, y/o verificación de identidad en un tiempo razonable, y con un grado de confiabilidad adecuado. Las técnicas empleadas en la actualidad para reconocimiento e identificación del iris son de muy reciente aplicación y día a día se continúan desarrollando en varios aspectos, tales como: tiempo de respuesta, tolerancia y confiabilidad, extracción y/o lecturas automáticas, etc., propiciando el desarrollo de un área de trabajo de gran interés y en constante evolución. Por otro lado, esta rápida evolución en las técnicas no se a visto acompañada en la mayoría de los casos de implementaciones depuradas en el aspecto computacional. Muchas de tales metodologías surgen como propuestas teóricas, a veces aplicadas a un rango limitado de ejemplos pero luego no se ven respaldadas por un desarrollo tecnológico y mucho menos por un desarrollo de software apropiado. Varios aspectos han experimentado una constante evolución en la última década, tales como: la representación del iris en formato digital, el establecimiento de estándares para su almacenamiento y/o tratamiento, etc. En contraposición a este rápido progreso, la mayoría de desarrollos disponibles están basados en modelos matemáticos complejos; que aunque demuestran buenos resultados para imágenes digitales en general, no aprovechan propiedades específicas de imágenes del ojo humano. Los primeros en proponer el concepto de reconocimiento automático del iris fueron Flom y Safir en el año 1987. [16] Desde entonces numerosos investigadores trabajaron tanto en el modelo de representación del iris como en su comparación (matching) logrando importantes avances en dichas cuestiones. En los siguientes párrafos pasaremos a dar una sucesión de breves reseñas de trabajos realizados en el área En el trabajo de John Daugman [4] se utilizan los denominados filtros Gabor multiescala para demodular la información de la estructura de fase que posee la textura del iris. Al realizar el filtrado de una imagen de iris a través de dicha familia de filtros se obtiene 1.024 factores de valores complejos que denotan la estructura de fase del iris a diferentes escalas. Cada uno de los factores se asocia a uno de los cuatro cuadrantes del plano complejo. Los resultantes 2.048 componentes del código de iris son utilizados para caracterizar el iris. Para obtener el grado de semejanza que hay entre un par de códigos de iris se calcula la distancia de Hamming que hay entre los códigos. Sanchez-Reillo et al. [6] implementaron de manera parcial el algoritmo propuesto por Daugman. Fue su objetivo el de simplificar el volumen de datos con el que se trabaja y optimizar la velocidad de los algoritmos utilizados para así poder implementar un sistema de identificación de personas usando el iris en pequeños sistemas embebidos. 15 1.INTRODUCCIÓN Wildes et al. [5] representó a la textura del iris con una pirámide Laplaciana construida por cuatro niveles de resolución y uso la correlación normalizada junto con el discriminante lineal de Fisher para determinar si la imagen de entrada y la imagen del modelo son de la misma clase. Su sistema de reconocimiento de iris usa descomposición de imagen por paso de banda para obtener información multiescala. Boles and Boashash [6] calcularon una representación de cruce por cero de una transformada wavelet a varios niveles de resolución de círculos concéntricos sobre una imagen de iris para caracterizar su textura. La comparación del iris se realiza a partir de la señal unidimensional resultante de dicho cruce por cero, la cual se compara con las características almacenadas del modelo usando distintas funciones de disimilitud. Los investigadores Sanchez-Avila [6] se basaron en el trabajo hecho por Boles et al., particularmente en su forma de representar al iris, la cual siguieron desarrollando. Sin embargo para la comparación intentaron con distintas medidas de similitud tales como las distancias Euclidea y la de Hamming. Lim et al. [6] descompusieron la imagen de iris en cuatro niveles usando la transformada wavelet Haar 2D y cuantificaron la información de los cuatro niveles de alta frecuencia en un código de 87 bits. Para el proceso de clasificación se uso una red neuronal competitiva de aprendizaje modificada (LVQ). Además propusieron un método de inicialización para los pesos de la red neuronal el cual maximiza el desempeño del sistema. En el trabajo desarrollado por Tisse et al. [6] se analizó las características del iris utilizando una imagen construida a partir de la original y su transformada de Hilbert. Las funciones de frecuencia emergentes para la extracción de características fueron en esencia muestras de los campos de gradiente de fase de los componentes dominantes de la imagen analítica [6]. El escenario de comparación es similar al aplicado por Daugman, ya que se muestrean las funciones de frecuencia binaria emergentes para formar un vector de características y usan la distancia de Hamming para la comparación. Kumar et al. [6] utiliza filtros de correlación para medir la consistencia de las imágenes de iris del mismo ojo. El filtro de correlación de cada clase fue diseñado usando las transformadas de Fourier bi-dimensional (2D) de las imágenes de entrenamiento. Si la correlación de salida (la transformada inversa de Fourier aplicada al producto entre la transformada de Fourier de la imagen de entrada y el filtro de correlación) muestra un pico pronunciado, se concluye que la imagen de entrada fue obtenida a partir de un sujeto autorizado, de otra manera el sujeto era impostor. Bae et al. [6] propone extraer la característica biométrica del iris mediante un método basado en análisis de componentes independientes. En su trabajo los parámetros para generar bases fijas (ubicación espacial, orientación y frecuencia), son seleccionados usando un algoritmo basado en wavelets Gabor. Para optimizar los vectores de la base se aplica la técnica conocida como análisis de componentes independientes. Finalmente se proyecta la señal del iris sobre los vectores de la base para obtener un código de iris a partir de los coeficientes obtenidos. 16 1.INTRODUCCIÓN En otro enfoque realizado por Li Ma et al. se utilizo Multichannel y Even Symmetry Gabor filters para capturar la información local de la textura del iris, la cual es usada para construir un vector de característica de tamaño fijo. Para la comparación se utiliza el “método de línea característica más cercana” (Nearest feature line method, NFL) [6]. En [17] un conjunto de señales de intensidad unidimensional es construido para caracterizar efectivamente la información más importante de la imagen original de dos dimensiones mediante una clase particular de wavelets; una secuencia de posición de puntos locales de fuerte variación en dichas señales se registra como características. Un escenario de comparación rápido basado en un operador XOR se usa para computar la similitud entre un par de secuencias de posición. En cuanto a la detección y localización del iris dentro de la imagen del ojo, Wildes, King and Zhang, Tisse et al. y Ma et al. utilizaron la transformada de Hough [8], la cual permite reconocer curvas en general dentro de una imagen. Está técnica es muy efectiva pero el costo computacional resulta ser alto al ser un algoritmo de fuerza bruta. Por su parte Daugman [4] emplea un operador integro-diferencial, de su desarrollo, para lograr la localización. Esté método resulta ser similar a Hough en cuanto a que ambos se basan en la primera derivada de la imagen (pensando a la imagen como una función) y ambos son algoritmos de fuerza bruta. 17 2.MOTIVACIÓN MOTIVACIÓN En esta sección vamos a explicar cuales fueron; en líneas generales, las ideas que nos impulsaron en el desarrollo de nuestro trabajo, las primeras impresiones y las problemáticas en el estado del arte que determinaron el curso que tomó nuestra investigación finalmente. Mencionaremos los objetivos iniciales en primera instancia y luego algunos planteos conceptuales que formulamos con el fin de organizar y unificar criterios, los cuales sirven también para comprender como se encaminó el desarrollo del trabajo y cuales fueron las metas establecidas finalmente. 18 2.MOTIVACIÓN 2.1 Objetivos iniciales Al planificar el desarrollo de lo que sería nuestro trabajo final, se eligieron a manera de guía los siguientes objetivos generales: • Comprender la problemática tanto de la extracción/lectura como de la comparación/reconocimiento del iris humano como biométrica. • Conocer diversas técnicas automáticas de detección/reconocimiento de iris tanto supervisadas como no supervisadas. • Analizar tanto los algoritmos existentes y empleados usualmente como los propuestos en diversas fuentes, y comprender sus puntos débiles si los tuviesen. • Proponer, de ser posible, un nuevo algoritmo o técnica o una mejora a nivel algorítmico, para alguno de los procedimientos ya existentes. • Desarrollar e implementar efectivamente el algoritmo elegido en una librería o módulo para el lenguaje de programación “R” (u otro, si resultara conveniente). • Probar o determinar algún tipo de mejora en la práctica sobre el algoritmo propuesto, y/o analizar su desempeño sobre un “dataset” realizando tests de performance comparativos con “el estado del arte”. 19 2.MOTIVACIÓN 2.2 Algunas problemáticas Como puede observarse la primera mitad de los objetivos iniciales estaba orientada a la comprensión del campo de estudio, análisis del estado del arte, estudio de bibliografía relacionada y discusión sobre el tema, por lo cual resultó natural el planteo de nuevas inquietudes luego de cumplir estos objetivos. A continuación, se desarrollan estas inquietudes (o problemáticas) ya que las mismas influyeron el posterior desarrollo de este trabajo especial. 2.2.1 La ausencia de estándar En la actualidad no hay una “única” o “mejor” representación digital del iris, sino que cada autor sugiere sus propias precondiciones precisamente basándose en el conjunto de muestras (“dataset”) utilizado para probar su propia técnica. Esta situación conlleva en sí misma cierto grado de arbitrariedad, dado que en la actualidad tanto los bancos de datos de imágenes oculares, como los sensores y/o cámaras destinados a la captura de tales imágenes forman un conjunto tan heterogéneo, como diferentes resultan las muestras archivadas. Estas diferencias van aún más allá de las esperadas, (resolución en píxeles, área de interés de la imagen, rango de grises, etc.), ya que debido a factores como la tecnología utilizada para la captura, también pueden variar características referidas a la cantidad de bandas (sensores infrarrojos o multibanda), a la resolución radio-métrica, a la definición (escala de grises vs. RGB color), a la presencia de diferentes niveles de ruido en las muestras, etc. La variación de algunas de estas características puede apreciarse al observar las figuras 1, 2 y 3, las cuales fueron obtenidas aleatoriamente de sendos bancos de datos disponibles. Figura 2.1: “108_1_1.bmp” (Casia-IrisV1 [1]) 20 2.MOTIVACIÓN Figura 2.2: “010101.bmp” (MMU Iris Database [2]) Figura 2.3: “049L_1.PNG” (“phoenix Iris Database" [3]) La figura 2.1 proviene de la base de datos de iris CASIA_IrisV1.0 [1] (probablemente la más utilizada como referencia para probar fiabilidad de los algoritmos más “vanguardistas”). La figura 2.2 fue obtenida de la base de datos de iris de MultiMedia University[2]; en tanto la figura 2.3 pertenece a la base de datos del Departamento de Ciencias de la Computación de Palacky University[3]. Nótese cómo, no sólo varía el área capturada en la figura 2.1 con respecto a la de la figura 2.2, sino que también varía la sobre-exposición a la luz. Además, aunque ambas figuras tienen resoluciones similares (320x280 la figura 2.1 y 320x238 la figura 2.2), la figura 2.1 tiene mejor definición. Por otro lado, la figura 2.3 viene a mostrarnos una versión más “extrema” en cuanto a precisión del área capturada, ya que no hay ruido de párpados, ni pestañas, y de hecho, enmascara con negro gran parte de la información despreciable, teniendo en cuenta que nuestro objetivo es el iris. Puede verse también que en las figuras 2.2 y 2.3 hay ruido en la pupila, producto del reflejo ocasionado por la lámpara del sensor de turno al momento de la captura, lo cual expone que no es para nada trivial el hecho de que todas las imágenes de CASIA_IrisV1.0[1] tengan un post-tratamiento enmascarando la pupila con un “disco 21 2.MOTIVACIÓN negro” (ver figura 2.1). Este detalle no es menor en absoluto, ya que la mayoría de los algoritmos empleados y comparados en la actualidad tomados como “estado del arte” (J. Daugman [4], R. Wildes [5], Boles and Boashash [6]) tanto como muchos trabajos científicos relacionados con algoritmos o técnicas para detección y extracción digital del iris, utilizan esta base de datos “post-tratada” como banco de pruebas para exponer sus resultados. 2.2.2 Performance y polivalencia El hecho de que la mayor parte de las técnicas existentes en el “estado del arte” base sus resultados en un banco de datos particularmente favorable para aplicar estos algoritmos plantea naturalmente la siguiente discusión: “performance y polivalencia”. Por ejemplo, una técnica analizada puede resultar particularmente buena para el banco de datos Casia-IrisV1, demostrando buenos resultados valiéndose de las características particulares de este banco citadas en el apartado anterior, logrando buena performance, aunque probablemente no logre los mismos resultados positivos en cualquier otro banco de datos, demostrando así escasa polivalencia. Desde este punto de vista, ambos conceptos quedan opuestos con características a favor y en contra. Entre las características a favor, podemos señalar sofisticación del modelo, prestaciones (performance), y adaptabilidad a múltiples bancos de datos, utilidad bajo “ruido”, precondiciones bajas (polivalencia). En tanto que; entre las características en contra, mencionamos: precondiciones altas, modelos de banco de datos irreales o no representativos, necesidad de pre-tratamientos (performance), y posibles incrementos en tiempos de respuesta, riesgo de pérdida de precisión en la segmentación (polivalencia). Bajo esta concepción fundamental, el desarrollo de la propuesta persigue los siguientes objetivos: 1. Producir mejoras en la complejidad (menor costo computacional) con respecto a los algoritmos del estado del arte. (Performance) 2. Adquirir independencia del banco de datos que se utilice para mostrar resultados. (Polivalencia) 2.2.3 Concepción de los métodos Como es de conocimiento en el área, podemos mencionar que la gran mayoría (si no la totalidad) de las técnicas de moda en reconocimiento e identificación del iris humano, tienen un origen común y relacionado desde sus comienzos, con el análisis estadístico de imágenes digitales [7]. Muchos de los mejores algoritmos de tratamiento, filtrado y compresión de imágenes digitales deben su éxito a la influencia de este enfoque estadístico, el cual revolucionó en un comienzo, la forma en la que se modela al objeto de estudio para luego aplicar resultados teóricos. 22 2.MOTIVACIÓN Estos “paradigmas de modelo” han establecido diversos objetos estadísticomatemáticos a lo largo de las últimas décadas, tales como por ejemplo: • Transformada de Fourier • Componentes principales • Matrices principales • “Imagen como base de un espacio vectorial” Estos enfoques se instalaron durante mucho tiempo, sumado a que al menos en sus inicios (década de los 90) [9], tanto los modelos como las técnicas para crear los mismos, no estaban muy desarrollados desde la computación como ciencia [10]. En la actualidad la Ciencia de la Computación ha madurado lo suficiente como para establecer paradigmas, dogmas, y estándares tanto de desarrollo de software, como de creación de modelos útiles para problemas específicos; quedando así expuesta una de las motivaciones de este trabajo: “establecer un modelo de concepción computacional” para abordar el problema de la segmentación y comparación digital del iris humano. La “oportunidad” reside en el hecho de que los algoritmos mencionados como “estado del arte”, muchas veces dependen de filtrados estadísticos, pre-tratamientos, descomposición matemática en componentes, y demás mecanismos dependientes de modelos como los recién citados, los cuales resultan desde un punto de vista computacional, de un costo considerable [5], [6]. Específicamente buscaremos un algoritmo de segmentación de la pupila, como una primera aproximación al problema de reconocimiento e identificación de individuos a partir del iris. El trabajo, surge como una respuesta de concepción computacional a esta problemática, la idea detrás de la iniciativa se basa en considerar a la imagen como una “estructura de datos” (paradigma propio de las ciencias de la computación) y no como un “objeto matemático”. Bajo esta concepción fundamental, el desarrollo de la propuesta focaliza los siguientes objetivos: 1. Producir mejoras en la complejidad (menor costo computacional) con respecto a los algoritmos del estado del arte. 2. Lograr un adecuado balance entre performance y polivalencia. 3. Adquirir independencia del banco de datos que se utilice para mostrar resultados. 23 2.MOTIVACIÓN 2.2.4 Proyección del campo de uso: “industrial vs. forense” Aunque para algunos lectores el campo de utilización de los métodos analizados (incluso el que se desarrolla posteriormente en este trabajo) resulte evidente, con frecuencia tiende a confundirse; por ejemplo, con: • Desarrollos sobre un sensor específico. • Software embebido en el hardware de un sensor para detección de iris. • Búsqueda de una característica biométrica para comparación de iris humanos. Y demás ideas erróneas. Es por esto que nos pareció adecuado exponer dos de los campos que consideramos más generales en el ámbito de la biométrica, para exponer cuál es el tipo de uso al que apuntamos con el método desarrollado en nuestro trabajo especial. Campo de uso “industrial”: Cuando el objetivo de la segmentación y comparación de iris es la diferenciación e identificación de un conjunto finito de individuos, con el único objeto de prescindir de personal que realice tal tarea. Como ejemplos, se pueden citar: • Accesos a áreas de seguridad bajo autorización • Control de horas de personal • Registro de visitantes a algún tipo de complejo Existe un vasto conjunto de tecnologías en la industria que satisfacen las necesidades de este campo; en general se desarrolla algún hardware capaz de encontrar puntos de referencia en el iris del individuo, y luego un software ad-hoc capaz de caracterizar y almacenar estos puntos de referencia, con el fin de contrastarlos con cada captura en el momento de una nueva extracción. Campo de uso “forense”: Cuando el objetivo de la segmentación y comparación de iris es establecer algún grado de similitud entre muestras en general, en pos de identificar un individuo, o una muestra en particular. Como ejemplos, se pueden citar: • Identificación de una muestra en un entorno policial • Búsqueda de personas en un archivo público • Búsqueda de rasgos comunes entre muestras en un ámbito médico En estos casos, el número de muestras a comparar puede ser indefinido y las muestras en si mismas, pueden provenir de diversas fuentes no necesariamente capturadas con el mismo tipo de sensor, condiciones de iluminación, área de interés, etc. En este campo, la muestra a comparar puede no haber sido capturada en las mismas condiciones que las muestras de cualquiera de los bancos de muestras con las que se la desea contrastar. En cambio en el primer campo, podemos asumir que el ente de control utiliza siempre el mismo sensor, las mismas condiciones de iluminación, por lo tanto el conjunto de muestras a contrastar es estándar per-sé. De esta manera, ante un falso negativo (cuando no se identifica a un individuo cuya muestra sí esta almacenada en el conjunto) no hay inconveniente en repetir la extracción cuantas veces sea necesario. 24 2.MOTIVACIÓN Cabe así redundar al mencionar que nuestro objetivo es el desarrollo de un método que: dado un conjunto de muestras fotográficas digitales de iris humanos, pueda segmentar el área de interés biométrico en cada una y posteriormente comparar con otras muestras para establecer un grado de similitud entre las mismas, como herramienta fundamental para deducir si las muestras comparadas pertenecen o no al mismo individuo. En otras palabras, el campo que motivó nuestro desarrollo durante todo el trabajo es el campo forense. 25 3.ENTORNO ENTORNO Delegamos a esta sección, todas las descripciones específicas pertinentes al “framework” (marco de trabajo), describiendo en primera instancia la plataforma de software utilizada tanto como algunas mecánicas comunes de trabajo y finalmente el equipo de hardware en el que se compilaron y probaron todos los algoritmos desarrollados e implementados durante este trabajo final. 26 3.ENTORNO 3.1 Plataforma de Software Desarrollamos nuestros algoritmos usando como framework el software RSI-IDL y RSI-ENVI que son aplicaciones orientadas al procesamiento de imágenes satelitales. La elección de este entorno se debe a nuestra previa experiencia en tal área, durante la cual implementamos varios algoritmos usando dichas herramientas. La aplicación IDL proporciona un lenguaje de programación imperativo orientado al manejo de matrices multidimensionales, las cuales son usadas para representar las imágenes digitales. Además incluye soporte para la carga y almacenamiento de imágenes mediante funciones internas que permiten manejar múltiples formatos como por ejemplo jpg, tif, png, bmp, etc. Figura 3.1: Captura de pantalla de las aplicaciones IDL y ENVI. Por otra parte ENVI se orienta a trabajar de una manera más visual, permitiendo ver imágenes guardadas en las variables de salida de los algoritmos usados en IDL y cargar imágenes almacenadas en archivos. Una vez importadas las imágenes incluso se pueden manipular aplicándoles transformaciones y filtros ya implementados por la herramienta, como por ejemplo rotación a componentes principales, transformada de Fourier, etc. La dinámica general de trabajo, consiste en programar nuestros métodos con la sintaxis de IDL, compilamos las rutinas tras cada cambio efectuado y luego realizamos pruebas sobre variables locales (imágenes de prueba) para visualizar los resultados con ENVI. Una vez logrados los resultados esperados en tal o cual imagen arbitraria, pasamos a probar las rutinas sobre conjuntos de datos seleccionados con algún criterio. Esto produce el reconocimiento temprano de errores posibles, lo cual nos lleva a retocar el código y depurarlo. 27 3.ENTORNO 3.2 Plataforma de Hardware Para probar nuestro sistema no precisamos del uso de ninguna computadora de alta capacidad de cómputo sino que utilizamos una notebook de uso personal: Sony Vaio modelo VPCEB13EL. La misma cuenta con un procesador Intel i3 330 a 2.13GHz (gama más baja de procesadores Intel de la tecnología “i-core”) de doble núcleo con tecnología “Hyper-Threading”. En cuanto a la memoria, posee 2 GB de memoria RAM DDR3. Este último aspecto no es realmente importante dado que los algoritmos no trabajan con objetos demasiado grandes en principio. Por último cabe aclarar (más allá que no sea una característica propia del hardware) que se trabaja sobre el sistema operativo Windows XP edición Profesional (Service Pack 3) para arquitectura de 32Bits. Figura 3.2: Notebook utilizada para probar los algoritmos. 28 4.DATASETS DATASETS Es de esperarse cuando se desarrolla un trabajo de esta naturaleza (ya sea un desarrollo de métodos, algoritmos, o cualquier otro relacionado con innovación en un campo que resulta de interés para varias disciplinas) que se establezcan conjuntos de datos (“datasets”) estándar con el fin natural de estandarizar las pruebas de estos desarrollos, tal como la comparación o medición de resultados obtenidos. El objetivo de esta sección es dar a conocer los detalles del dataset elegido para el desarrollo y perfeccionamiento de nuestro método y la posterior validación de los resultados obtenidos. Luego mostrar en líneas generales y mediante imágenes representativas algunos de los datasets que nos resultaron más paradigmáticos durante el desarrollo de nuestro trabajo especial. Finalmente el objetivo de esta sección es establecer algunos conceptos que hemos utilizado a manera de parámetros, a fin de comparar los aspectos más relevantes entre los datasets estudiados. 29 4.DATASETS 4.1 El dataset elegido: Casia-IrisV1 Introducción: Para promover la investigación, el “National Laboratory of Pattern Recognition” (NLPR), el “Institute of Automation” (IA) y la “Chinese Academy of Sciences” (CAS) proveen bases de datos de iris libres para investigadores de reconocimiento de iris. Las imágenes de iris de CASIA v1.0 (CASIA-IrisV1) fueron capturadas con una “cámara de iris” [1] casera; ocho iluminadores NIR de 850nm se disponen circularmente alrededor del sensor para asegurar que el iris quede uniforme y adecuadamente iluminado. Figura 4.1: sesión de captura utilizando la cámara desarrollada por la “Chinese Academy of Sciences” para la creación de la base de datos CASIA-IrisV1 Con el fin de ocultar el diseño de esta “cámara de iris” (especialmente el esquema de disposición de los iluminadores NIR), las regiones de pupila de todas las imágenes de iris en CASIA-IrisV1 fueron automáticamente detectadas y reemplazadas con una región circular de intensidad constante para enmascarar los reflejos de los iluminadores NIR antes del lanzamiento al público. Claramente este proceso puede afectar la detección de pupila, pero no tiene efectos en otros componentes de un sistema de reconocimiento de iris, como la extracción de característica, siempre y cuando la extracción de característica solo use datos de la imagen en la región comprendida entre la pupila y la esclerótica. 30 4.DATASETS Breve descripción y estadísticas de la Base de Datos: La Base de Datos de imágenes de iris CASIA versión 1.0 (CASIA-IrisV1) incluye 756 imágenes de iris de 108 ojos. Para cada ojo, siete imágenes se capturaron en dos sesiones con la cámara desarrollada por CASIA. Tres capturas en la primera sesión y cuatro en la segunda. Todas las imágenes se guardaron en formato BMP con una resolución de 320 x 280 píxeles. (a) (b) Figura 4.2: El ojo numerado 17 en la base de datos, capturado en ambas sesiones. Corresponde (a) a la primera sesión y (b) a la segunda sesión. Al momento de probar cualquier desarrollo de matching, se sugiere comparar dos muestras del mismo ojo tomadas en diferentes sesiones, así; por ejemplo, las imágenes de iris de la primera sesión pueden ser empleadas como conjunto de entrenamiento, mientras que las de la segunda sesión pueden ser usadas para pruebas (testing). 4.2 Otros proyectos de CASIA: CASIA-IrisV2 y V3 Naturalmente, luego de encontrar que varios autores validan y desarrollan sus trabajos con el dataset CASIA-IrisV1, aparecen interrogantes sobre el contenido de los dataset versionados como 2 y 3. La primer sorpresa, y quizás mejor introducción es aclarar que la numeración que CASIA eligió para sus datasets no tiene que ver con ningún tipo de cronología y/o perfeccionamiento versionado (como si de versiones de un software se tratase). En lugar de esto, los números en la versión, refieren a que el tipo de contenido, organización de la base de datos y/o propósito de las capturas es diferente. 4.2.1 CASIA-IrisV2: Esta base de datos fue utilizada para la “Primera Competencia de Verificación de Biométricas” en reconocimiento de cara, iris y huellas digitales durante la “Quinta Conferencia China sobre Reconocimiento de Biométricas” (Sinobiometrics 2004), llevada a cabo en Guangzhou, China en diciembre de 2004. La misma incluye dos subconjuntos, cada cual con imágenes capturadas con un dispositivo diferente. 31 4.DATASETS El primer subconjunto se corresponde con las muestras capturadas con el dispositivo Irispass-h (figura 4.3) desarrollado por OKI y el segundo con las muestras capturadas con el dispositivo CASIA-IrisCamV2 (figura 4.4), desarrollado por CASIA. Cada subconjunto consta de 1200 imágenes de 60 ojos cada uno (20 capturas de cada ojo para cada subconjunto). Figura 4.3: Sensor OKI Irispass-h Figura 4.4: Sensor CASIA-IrisCamV2 (a) (b) Figura 4.5: Muestras numeradas 28 de cada subconjunto de CASIA-IrisV2. (a) Capturada con el sensor OKI y (b) con el desarrollado por CASIA. Vale aclarar que la numeración en cada subconjunto no identifica a la misma persona. 32 4.DATASETS 4.2.2 CASIA-IrisV3: Este dataset, incluye tres subconjuntos bastante dispares entre sí denominados CASIAIris-Interval, CASIA-Iris-Lamp y CASIA-Iris-Twins. Posee un total de 22034 imágenes de iris tomadas con iluminación cercana al infrarrojo de más de 700 individuos; casi todos chinos graduados de CASIA. El subconjunto CASIA-Iris-Interval fue capturado con la misma cámara desarrollada por CASIA utilizada para el dataset CASIA-IrisV1, con la particularidad de que en esta ocasión se conserva el estado original de la captura, incluyendo los reflejos pupilares ocasionados por los iluminadores NIR. En la siguiente figura, podemos ver ejemplos. (a) (b) Figura 4.6: Muestras del sub-conjunto CASIA-Iris-Interval. En (a) la 20 y en (b) la 47. El segundo conjunto (CASIA-Iris-Lamp) fue completado usando la misma cámara de mano OKI utilizada en CASIA-IrisV2. Además de probar la utilidad de la cámara, esta vez se buscó generar deformaciones (forzadas mediante variaciones de iluminación) en la textura del iris de los individuos. Como es de común conocimiento en el área, el iris se expande hacia su centro o se contrae contra su límite con la esclerótica según el ojo perciba exceso o falta de iluminación respectivamente. En la siguiente figura, podemos ver un ejemplo. (a) (b) Figura 4.7: Aquí puede observarse el ojo numerado 88 de la base CASIA-Iris-Lamp expandido hacia su centro en (a), y contraído contra sus bordes en (b). 33 4.DATASETS Por último, el sub-conjunto CASIA-Iris-Twins contiene imágenes de iris de 100 pares de gemelos, las cuales fueron recolectadas durante un Festival Anual de Gemelos en Beijing, China usando la ya mencionada cámara de mano OKI IrisPass-h (figura 4.3). No presentaremos ejemplos de este último grupo de CASIA-IrisV3 ya que las imágenes son similares a las de cualquier otra muestra capturada con la cámara OKI ejemplificada en sub-secciones anteriores de esta sección 4 (CASIA-Iris-Lamp ó CASIA-IrisV2 dispositivo 1); siendo válida la aclaración de que aún comparando muestras de dos hermanos gemelos, no sería reconocible un patrón a simple vista, ya que como se mencionó en la sección 1.1.6, aún hermanos gemelos poseen iris diferentes. 4.3 MMU Iris Database Por ser de libre acceso y estar disponibles para cualquier interesado en el tema, los dataset MMU1 y MMU2 son una vista casi obligada para investigadores en el campo del reconocimiento de iris. Como particularidades más notorias, estos bancos de datos hicieron hincapié en la comparación entre dos cámaras comerciales y en la variabilidad de los individuos de prueba, los cuales provienen de múltiples orígenes (pensar que CASIA sólo trabajó con individuos de origen Chino). Así pues con colaboradores de Asia, Medio Oriente, África y Europa, las bases MMU muestran como contrapartida una falta de rigurosidad y/o precisión notorias. Por ejemplo, aunque las resoluciones (tamaño) de las imágenes son las mismas de CASIAIrisV1, la escala o resolución espacial aproximada de las muestras es de la mitad. Sumado a éste hecho, en las muestras encontramos diversos tipos de ruido. Desde anteojos o lentes de contacto hasta maquillaje o pestañas postizas, estos obstáculos (desde el punto de vista de cualquier algoritmo de segmentación) pueden verse también como un ámbito realista para someter los algoritmos a pruebas de polivalencia. La base MMU1 cuenta con imágenes provenientes de 46 individuos (5 imágenes por ojo) exceptuando uno proveniente de un colaborador con patología ocular de “cataratas”. Todas las imágenes capturadas con la cámara LG IrisAccess®2200, la cual es semiautomática y trabaja en el rango de 7cm a 25cm. La base MMU2 consta de 995 imágenes recolectadas de 100 voluntarios diferentes utilizando la cámara Panasonic BM-ET100US “Authenticam” la cual posee la particularidad de trabajar a una distancia de 47cm a 53cm del colaborador. (a) (b) Figura 4.8: La muestra número 9 del dataset MMU1 en (a), y la muestra número 8 del dataset MMU2 en (b), con presencia de maquillaje y anteojos respectivamente. 34 4.DATASETS 4.4 Phoenix Iris Database A pesar de ser la mejor base de datos que encontramos (desde sus atributos cualitativos en cuanto a la cantidad de detalle o la ausencia de ruido) es a su vez muy inusual en este ámbito. El primer detalle que salta a la vista es que las imágenes fueron almacenadas a color; es decir, estándar RGB 24bits de 3 bandas (8bits de profundidad por banda) y otras cualidades como el aislamiento completo del globo ocular hacen que este banco de datos diste mucho de cualquiera de los estudiados con anterioridad. (a) (b) Figura 4.9: Las muestras numeradas: 63 en (a) y 50 en (b) del dataset Phoenix. Esta base de datos contiene 384 muestras, recolectadas de 128 individuos distintos, y marca una diferencia entre “sensor” y “cámara”; siendo los mismos un dispositivo óptico TOPCON TRC50IA conectado con una cámara Sony DXC-950P 3CCD. Fue completada en 2010 por Michal Dobeš y Libor Machala del departamento de ciencias de la computación de Palacky University, República Checa. 35 4.DATASETS 4.5 Una comparación cualitativa Resulta inevitable una comparación natural entre los datasets revisados en la sección anterior, por lo que formulamos una tabla comparativa que reúne los aspectos cualitativos más relevantes. Antes de revisarla es necesario establecer algunos conceptos que nos servirán para acordar ideas comunes a comparar entre los bancos de datos estudiados. Resolución espacial (o “escala”): Se mide en cantidad de píxeles por unidad de medida o en cantidad de unidades de medida por píxel según la escala o el tamaño del área que una imagen digital represente. Por ejemplo: una imagen satelital puede tener una “escala” de 1.2 km/px lo cual significaría que cada píxel de la imagen representa 1,2km cuadrados de extensión geográfica aproximadamente, pero en contrapartida las imágenes del banco de datos Phoenix, poseen una alta resolución espacial de 50 px/mm lo cual significa que en la imagen, un cuadrado de 50 píxeles de lado, representaría un milímetro cuadrado del ojo que aparece en la imagen. Definición (“nitidez”): Generalmente asociado con la calidad del lente y/o sensor utilizado, usualmente hace referencia a la percepción de “foco” o nitidez que hallemos en la imagen, y aquí le daremos un uso comparativo (y no absoluto, ya que no utilizaremos una unidad de medida). Es decir, numeramos del 1 al 5, donde 5 representa la definición hallada en las imágenes más nítidas y 1 la definición que encontramos en las más borrosas. Al ampliar una imagen fotográfica digital borrosa, habitualmente se halla que aún teniendo alta resolución o incluso alta resolución espacial, aparecen píxeles de la imagen que contienen información inútil (píxeles contiguos idénticos o redundantes por un problema de foco) o no fiel a lo fotografiado (presencia de “ruido”, píxeles con información inútil “inventados” por el sensor). Con este análisis buscamos desasociar estos conceptos usualmente confundidos “resolución” y “definición”. Por ejemplo: Las imágenes de CASIA-IrisV1 poseen una muy buena definición a pesar de su baja resolución (320 x 280) mientras que CASIA-IrisV2 las imágenes son menos nítidas y por ende hay menos información útil en el área del iris (peor definición) a pesar de tener mejor resolución (640 x 480). Precisión: Simplemente otorgamos valores de 1 a 3 a los datasets estudiados, según el nivel de aislamiento y/o proximidad al área de interés (en este caso iris humano), o presencia de “ruidos” tales como pestañas, reflejos, u cualquier otro tipo de objeto que pueda obstaculizar una segmentación correcta. Con 3 puntuaremos los datasets más depurados, mientras que con 1 los “menos precisos”, ya sea por lejanía del sensor (que puede acarrear exceso de información inútil en las muestras) o por presencia de obstáculos y/o reflejos que pudiesen atentar contra la segmentación. Repasados estos conceptos, pasamos a exponer la tabla comparativa: 36 4.DATASETS Figura 4.10: Tabla comparativa de los todos los Datasets estudiados durante el desarrollo del trabajo especial. 37 4.DATASETS 4.6 Proyecciones de utilización Nos pareció adecuado colocar esta sub-sección luego de que el lector haya tenido la posibilidad de revisar la tabla comparativa, precisamente porque sirve para tener una noción más certera acerca de la utilidad, ventajas y desventajas de cada banco de datos de imágenes de iris analizado. En otras palabras, persuadir al lector sobre la tendencia a creer que es sencillo catalogar un dataset como mejor que cualquier otro. Esto se logra precisamente comprendiendo la noción de proyección de uso, ya que así como nuestro trabajo en sí mismo persigue un campo de utilización y un modo de uso específico, cada uno de estos datasets puede ser el más adecuado para un empleo determinado. El dataset Phoenix debido a su excelente definición, precisión, tamaño y profundidad, podría resultar la mejor opción si el objetivo fuese hallar patrones en el genotipo del ojo humano, desarrollar algoritmos de autenticación de altísima fidelidad, y/o cualquier otro desarrollo que se vea beneficiado por la cantidad de información útil presente en cada muestra del conjunto. En contrapartida, probablemente no sea el mejor dataset para probar algún desarrollo pensado para superar ruido y/o obstáculos de segmentación, en donde probablemente sí se destacaría el dataset MMU2 con su baja precisión, definición y presencia de ruido de varios tipos, ya que prácticamente emularía condiciones relacionadas con la extracción muestras a partir de fotos más generales. De manera similar, CASIA-Iris-Lamp podría ser el más adecuado para estudiar y desarrollar métodos que superen el problema de la estructura elástica del iris, como el reconocimiento en múltiples condiciones de luz, etc. En relación con lo competente a nuestro trabajo especial, el dataset que elegimos para validar nuestro método completo fue CASIA-IrisV1 fundamentalmente para poder contrastar nuestros resultados ya que muchas publicaciones lo utilizan para validar desarrollos. Por otro lado, el dataset CASIA-Iris-Interval perteneciente a CASIA-Iris-V3 fue el elegido para validar y desarrollar pretratamientos en pos de dotar nuestro método de cierto grado de polivalencia (condiciones de ruido pupilar, producto de reflejos lumínicos en la pupila). 38 5.DESARROLLO DESARROLLO En esta sección mostraremos como implementamos cada etapa del sistema biométrico según lo explicado en la sección 1.1.5. Detallaremos además las hipótesis y análisis que nos encausaron al desarrollo de distintos algoritmos así como también mencionaremos aquellos aspectos del sistema influenciados por el estado del arte. Comenzaremos relatando los primeros acercamientos realizados para abordar la problemática de la segmentación del iris, etapa crucial para un sistema de identificación basado en esta característica. Finalmente establecemos una notación y expondremos los pseudocódigos de las funciones que conforman el sistema (salvando las que resultan triviales) y sus interacciones. 39 5.DESARROLLO 5.1 Primeros acercamientos 5.1.1 Algoritmo para detección de bordes [12] Con el propósito de aproximarnos a una adecuada segmentación del iris y la pupila, exploramos e implementamos computacionalmente diversas metodologías propuestas en la literatura. En primera instancia estudiamos un algoritmo de detección de bordes presentado recientemente en el ámbito del tratamiento de imágenes digitales en general [12]. Este procedimiento se caracteriza por ofrecer como resultado final una segmentación “demasiado fina” para nuestro propósito global (delimitar la región correspondiente al iris). Dado que la textura del iris suele presentar pigmentación, dentro del mismo pueden visualizarse formas cuyos bordes fueron detectados por el algoritmo y terminaron por subdividir demasiado al iris dificultando su reconocimiento general. Otro problema es que en las imágenes no siempre hay fuerte contraste entre el iris y la esclera, de hecho en gran parte de las imágenes de CASIA 1 [1], el contraste es bajo, por lo cual estos bordes no siempre fueron detectados por el algoritmo. Las dificultades mencionadas pueden manifestarse en una misma imagen, tal como se ilustra en la siguiente figura. (a) (b) Figura 5.1: En (a) la muestra “003_1_3.bmp” perteneciente a Casia-IrisV1 [1]. En (b) el resultado de aplicarle el algoritmo [12] para reconocimiento de bordes. Como alternativa, antes de aplicar el algoritmo, se realizó un pre-tratamiento a la imagen original (ecualización y suavizado, ver sección 6.2.2) con la esperanza de resaltar la frontera iris-esclerótica y ayudar al algoritmo a ignorar la presencia de bordes intra-iris, pero los resultados fueron similares, sumado a un gran aumento de tiempo en el proceso global, lo cual es indeseable a priori. 40 5.DESARROLLO 5.1.2 Algoritmos de Clasificación: “K-Medias” En una segunda aproximación comenzamos a experimentar con algoritmos de clasificación o “clustering”, e ilustraremos en este trabajo, los resultados obtenidos al aplicar específicamente el algoritmo conocido como “k-medias” (k-means [7]). Encontramos que aunque k-medias funcionó aceptablemente en algunas imágenes muy particulares, en otras arrojó resultados poco alentadores como se ilustra a continuación: (a) (b) Figura 5.2: En (a) la imagen “070_2_4.bmp” de Casia-Iris V1 [1] y en (b) el resultado de aplicar k-medias “con 4 clases” (k = 4). Notar como en la imagen procesada, k-medias asigna la misma clase a iris y esclerótica del lado izquierdo, tanto como a la pupila y pestañas. Como alternativa, modificamos la implementación de k-medias reemplazando la distancia euclídea por la distancia de Mahalanobis [11] esperando una mejora en la clasificación; obteniendo nuevamente resultados similares a los recién descriptos. 5.1.3 Clasificación mediante ROI’s En tercera instancia se intentó aplicar la técnica de clasificación supervisada en base a Regiones de Interés (ROIs) por distancia mínima [7]. Pero obtuvimos resultados similares, ya que al parecer, el problema de fondo reside en que estos métodos se basan netamente en “el color” de cada píxel para establecer su clasificación, sin tener en cuenta su ubicación espacial en absoluto Así llegamos a la conclusión de que al menos con estas técnicas que probamos, la respuesta no estaba en un pre-tratamiento de clasificación por lo cual convendría elaborar métodos ad-hoc de segmentación del iris y la pupila, utilizando las particularidades específicas de las imágenes en estudio. 41 5.DESARROLLO 5.2 Lineamientos En la sección 2 mencionamos algunas problemáticas que marcarían las motivaciones del desarrollo, pero luego de los acercamientos preliminares a enfrentar el problema de la segmentación (sección 5.1) una de estas problemáticas hizo evidente su importancia y se convirtió en el “leit motiv” del trabajo: “Concepción computacional”, sección 2.2.3. “Si podemos efectuar la etapa de segmentación de una manera más eficiente, podremos poner más énfasis en la etapa de comparación, en espera de resultados globales competentes” Como mencionamos en tal sección, gran parte de los algoritmos o métodos utilizados en el estado del arte se basan en métodos complejos que no aprovechan características comunes en las imágenes digitales del ojo humano, e invierten toda su complejidad en determinar con exactitud los bordes del iris. En adición, vimos en la sección 1.1.6 que la información de interés biométrico (“patrón visual”) presente en el iris es vasta respecto de otras bio-métricas. Combinando estos hechos, nos vimos motivados a creer que aún si una mejora substancial en la performance de la etapa de segmentación conllevara una pérdida de exactitud en los límites de la misma, esto podría no determinar un deterioro en los resultados, poniendo el énfasis adecuado en las etapas subsiguientes del sistema. Así, nos vimos impulsados a valernos de hipótesis como las siguientes para comenzar el desarrollo de la 1er etapa (segmentación): • La pupila se manifestará en la imagen como un discoide de textura relativamente homogénea. • La pupila es lo suficientemente grande como para conformar la región oscura de mayor superficie en la imagen. • En todas las imágenes oftalmológicas hay exactamente un ojo. • Las muestras de un mismo dataset respetan la distancia del sensor al individuo. • Dado que el ojo humano promedio presenta escasa variación en el diámetro final del iris (ver sección 1.2) el límite exterior de la segmentación quedaría automáticamente determinado por la resolución espacial de cada muestra. • Debido a la cantidad de información biométrica presente en el iris, determinar el límite exterior de la segmentación utilizando características anatómicas no producirá pérdidas substanciales de información. Nuestro objetivo es entonces tomar estas características comunes en la generalidad de los bancos de datos (más particularmente CASIA IrisV1) y tomarlas como precondiciones para desarrollar un método veloz y eficaz para la segmentación de la pupila y con ello comenzar un sistema biométrico eficiente. 42 5.DESARROLLO 5.2.1 Convenciones de notación Trabajaremos sobre la base del siguiente marco de referencia: • Una imagen I será una matriz de tamaño NxM (N columnas y M filas). Para referirnos al elemento de la matriz I ubicado en “columna i” de la “fila j” escribiremos I[i, j] donde 0≤ i < Ν y 0≤ j < Μ. • Si I es una imagen NxM, para referirnos a la posición determinada por la “columna x” de la “fila y”, escribiremos “celda (x, y) de I” cuando 0 ≤ x < Ν ∧ 0 ≤ y < Μ. • Cada celda (x, y) de una imagen I de tamaño NxM tendrá asociado un único número entero entre 0 y 255, llamado valor de intensidad de la imagen en la celda (x, y), que se denotará como I[x, y]. Los valores bajos de intensidad estarán relacionados con menor luminosidad en la imagen (el valor de luminosidad más baja es 0, considerado el negro absoluto). • Un píxel p será una terna (x, y, NI) tal que NI es un entero entre 0 y 255. • Dada una imagen I de tamaño NxM diremos que el píxel p=(x, y, NI) pertenece a I y lo escribiremos p ∈ I cuando (x, y) sea una celda de I y I[x, y] = NI. • Dados un par de píxeles p=(x, y, NI) y p’= (x’, y’, NI’) diremos que p es menor o igual a p’ y lo escribiremos como p ≤ p’ si y solo si se cumple que NI ≤ NI’. • Una segmentación de pupila será un disco representado por un par (c, r) donde el parámetro ‘c’ es la celda de la imagen correspondiente al centro de la pupila y el escalar ‘r’ es el radio de la misma. • Una segmentación de iris será un anillo de parámetros (c, r, R) donde ‘c’ es el centro en común de las dos circunferencias que lo delimitan, ‘r’ el radio del círculo que separa la pupila del iris y ‘R’ el radio del círculo que delimita al iris con la esclerótica. Este modelo exige que 0 < r < R. 43 5.DESARROLLO 5.2.2 Pseudocódigo Para poder describir los algoritmos que desarrollamos, a continuación, vamos a establecer un pseudocódigo, el cual no pertenece a ningún lenguaje de programación en particular. La idea es simplemente capturar la esencia de los algoritmos sin perder esfuerzo en cuestiones muy finas de implementación. Así pues cuando, por ejemplo, se necesite usar conjuntos no habrá que diseñar mecanismos sofisticados para implementarlos sino que directamente usaremos la notación de conjuntos habitual, con sus operaciones. El mismo criterio es usado para el resto de los objetos matemáticos. A continuación describiremos la sintaxis del pseudocódigo junto con una breve e informal descripción de su significado. Asignación de variable v := E Es la clásica asignación de un lenguaje imperativo, donde “E” es una expresión y “v” la variable donde se guarda el valor resultante de “E”. Otra de las formas de asignación que usaremos en el pseudocódigo es la asignación múltiple: v1, v2,..., vn := E1, E2,..., En Aquí, a cada variable “vi” se le asigna el valor de la expresión “Ei” correspondiente de manera simultánea. Condicional if C1 → S1 [] C2 → S2 : [] Cn→ Sn fi Cuando alguna de las condiciones “Ci” se cumple, se ejecuta la sentencia (o grupo de sentencias) “Si” correspondiente. Si no se cumple ninguna de las condiciones, simplemente no realiza ninguna acción. En el caso que más de una condición se cumpla se elegirá no determinísticamente alguna de las sentencias para ejecutar (en los algoritmos desarrollados todas las condiciones son excluyentes entre si, por lo que esta característica del condicional no será de importancia). 44 5.DESARROLLO Iteraciones condicionales while C do S1 S2 Sn od Este tipo de iteración ejecuta las sentencias S1,..., Sn mientras la condición C sea verdadera. Otra de las formas de iteración que usaremos es la siguiente: do C1 → S1 [] C2 → S2 : [] Cn → Sn od En este caso, Si se ejecutará cuando se cumpla la condición Ci; luego se vuelven a evaluar las condiciones para determinar que sentencia se ejecutará en el próximo paso del ciclo. De esta manera el ciclo de iteraciones finalizara cuando todas las condiciones Ci sean falsas. Si más de una condición es verdadera, se elije no determinísticamente alguna de las sentencias correspondientes y se ejecuta. Declaración de funciones Para definir las funciones en el pseudocódigo usaremos la siguiente sintaxis: fun nombre_funcion(p1, ..., pn) S1 S2 : Sr return E1, E2,..., Ek end Las variables p1,..., pn tendrán los valores de entrada de la función. Los valores de salida serán los resultados de las expresiones E1,..., Ek. Cuando k > 1 la forma de recuperar las salidas de la función será: v1, v2, ..., vk := nombre_funcion(p1,..., pn) 45 5.DESARROLLO La sentencia de terminación por excepción Cuando una función no logre cumplir con su propósito, y este sea crucial para el funcionamiento del sistema, usaremos la sentencia “abort” que simplemente termina el programa en un estado de error. El tipo de dato “lista” Usaremos en algunas funciones el tipo lista para almacenar datos. Este tipo de datos es muy simple y solo nos hace falta definir dos operaciones y un constructor: • • • La lista vacía: [] Agregar por derecha un elemento a la lista: ◄ Tomar el primer elemento de la lista y sacarlo: take() El funcionamiento del operador “◄” se ilustra en la siguiente ecuación: ([] ◄ 5) ◄ 2 = [5, 2] En el caso de la función “take()” es importante notar que además de devolver el primer elemento de la lista pasada como parámetro, modifica a la misma quitándole dicho elemento. Un ejemplo: lista := [5, 2] e := take(lista) Luego de ejecutar el programa anterior, los valores de las variables serán: e = 5 ∧ lista =[2] 5.3 Nuestro Método A continuación y como se anticipó en la portada de esta sección, hemos organizado la exposición del desarrollo de acuerdo con las etapas de la biométrica detalladas en la sección 1.1.5 (ver figura 1.1). Así, explicaremos nuestro trabajo sobre: 1. Localización…….. sección 5.3.1 2. Normalización…... sección 5.3.2 3. Extracción……….. sección 5.3.3 4. Matching………… sección 5.3.4 Cada sección correspondiente con una etapa, desarrollada y subdividida en los pasos que consideramos relevantes para cada una. 46 5.DESARROLLO 5.3.1 Localización de la Característica Como ya se mencionó, en un sistema biométrico el primer paso es localizar dentro de la imagen previamente adquirida la región en donde se encuentra la información biométrica (el iris en nuestro caso). Para localizar el iris necesitamos dos radios: el interior correspondiente al borde pupilar y el exterior correspondiente a la frontera entre el iris y la esclera. Los sub-pasos que siguen a continuación, desarrollan cada una de estas tareas. Segmentación Pupilar Suponiendo que tenemos las coordenadas de una celda correspondiente a la región interior de la pupila y que la misma es un disco perfecto, propondremos un algoritmo simple y eficaz para ayudar a determinar su centro y su radio. Dicho algoritmo lo hemos llamado Cruz y trabaja de la siguiente manera: (a) (b) Figura 5.3: En (a) un píxel perteneciente a la pupila. En (b) las trazas realizadas por el algoritmo Cruz. El píxel rojo corresponde al píxel inicial. Los píxeles verdes corresponden a las trazas. El espacio entre píxeles es solo por motivos estéticos, el algoritmo revisa trazas conexas. Realiza cuatro recorridos (o trazas) a partir del píxel perteneciente a la pupila, dos recorridos en sentido vertical (direcciones “norte” y “sur”) y dos en sentido horizontal (direcciones “este” y “oeste”). Todos los recorridos finalizan al detectar que el próximo píxel a visitar presenta una diferencia de intensidad considerable respecto a la del píxel inicial. El valor “de corte” para esta diferencia se ajusta con un parámetro T (de tolerancia) que recibe el algoritmo. Las salidas serán el centro del disco (obtenido a partir de las trazas) y las longitudes de los cuatro recorridos. Valores de entrada: • • • Una imagen I de tamaño NxM Un píxel inicial p = (x , y, NI) Un entero T correspondiente a la diferencia de intensidad tolerada entre cada píxel de una traza y p. 47 5.DESARROLLO Las salidas son: • Un par ordenado C=(xc, yc) correspondiente a las coordenadas del centro del discoide • Cuatro enteros positivos TN, TS, TE y TO correspondientes a las longitudes de los recorridos en cada punto cardinal a partir de p. Y las variables propias: • YN, YS correspondientes a las coordenadas norte y sur de la traza vertical. • XE, XO correspondientes a las coordenadas este y oeste de la traza horizontal. El algoritmo Cruz queda entonces: fun (x, YN, XE, algoritmo_cruz(I, p, T) y, NI) := p YS := y XO := x do |I[x, YN] – NI| ≤ T ∧ YN > 0 → [] |I[x, YS] – NI| ≤ T ∧ YS < M – 1 → [] |I[XE, y] – NI| ≤ T ∧ XE < N – 1 → [] |I[XO, y] – NI| ≤ T ∧ XO > 0 → od C := (XE + XO, YN + YS) / 2 TN, TS := y – YN, YS – y TE, TO := XE – x, x – XO return TN, TS, TE, TO, C end YN := YN – 1 YS := YS + 1 XE := XE + 1 XO := XO – 1 Una vez obtenidas las salidas del algoritmo ya tenemos la mitad del problema resuelto pues el centro de la pupila está determinado. Solo nos queda calcular el radio. Para lograrlo se puede realizar una segunda ejecución del algoritmo a partir del centro previamente calculado, ya que de esta manera las trazas realizadas en esta ocasión serán las proyecciones radiales en los cuatro sentidos cardinales a partir del centro, como se puede observar en la figura 5.4, así cualquiera de las longitudes de traza puede usarse como radio. Figura 5.4: Representación de la salida del algoritmo Cruz a partir del píxel central de la pupila. 48 5.DESARROLLO En principio con el método anteriormente explicado se resuelve la segmentación pupilar, pero aun queda un pequeño detalle: La pupila no es un disco perfecto, ya que presenta irregularidades sobre los bordes variando de individuo a individuo, condiciones de iluminación, etc. Por ello hay dos cuestiones a resolver: 1. En la segunda ejecución del algoritmo Cruz las longitudes de traza serán ligeramente distintas, por lo que hay que fijar un criterio para poder, a partir de ellas, elegir la mas conveniente como radio. 2. Cuanto más alejado del centro de la pupila esté el píxel p (“inicial”) peor será el centro calculado por la ejecución de Cruz, debido a las irregularidades en el borde pupilar de la imagen. En la primera cuestión nuestra política fue entonces elegir el mínimo de entre las longitudes de traza como radio, priorizando no dejar fuera de la segmentación de iris algún píxel del iris a no incluir píxeles de la pupila dentro de la misma. La segunda problemática obliga a realizar una ejecución de Cruz más para poder confiar en el centro calculado, es decir, la primera ejecución nos acercará bastante al verdadero “centro pupilar” y luego necesitaremos hacer una nueva ejecución para obtener el centro definitivo. Por último se obtiene el radio como se mencionó anteriormente haciendo una última ejecución del algoritmo. Buscando la Pupila Hasta aquí hemos trabajado con la hipótesis de tener un píxel que efectivamente pertenece a la pupila en la imagen. Evidentemente, para que el sistema funcione, dicho píxel hay que encontrarlo en un primer momento. Para lograrlo nos basamos en la idea de que al ser la pupila la región oscura de la imagen con mayor superficie, si tomamos una muestra de píxeles uniformemente espaciados dentro de la imagen, la mayor parte de píxeles oscuros (de bajos valores de intensidad) serán provenientes de la pupila. La siguiente figura ilustra tal situación. Figura 5.5: Muestra de píxeles con distancia uniforme. 49 5.DESARROLLO Los demás pueden provenir de pestañas o algún ruido en la imagen. Para poder descartar estos píxeles utilizaremos nuevamente el algoritmo Cruz haciendo el siguiente análisis: “Cuando Cruz se ejecute a partir de un píxel proveniente de las pestañas, las longitudes de traza obtenidas serán ‘muy pequeñas’ y/o ‘muy distintas’ entre sí” El mismo análisis puede hacerse para los píxeles oscuros producto del ruido. El criterio para determinar si una traza es pequeña se fija con un parámetro que especifica el radio más chico esperado para la pupila. Se calcula entonces la media de las longitudes de traza y se verifica que sea mayor a dicho parámetro. Para decidir si las trazas no son lo suficientemente similares se establece un criterio de “circularidad esperada”. Para la función, el parámetro es un porcentaje (entre 0 y 100) y la verificación se hace de la siguiente manera: traza_menor := min {trazaNorte, trazaSur, trazaEste, trazaOeste} traza_mayor := max {trazaNorte, trazaSur, trazaEste, trazaOeste} criterio_circularidad := traza_menor ≥ traza_mayor * (tolerancia_circular / 100) Por último, para hacer la búsqueda más eficiente, ordenamos los candidatos de menor a mayor según su nivel de intensidad (puesto que la pupila debe ser oscura) y además sólo se prueba con los píxeles candidatos provenientes de regiones relativamente centrales de la imagen. Para definir dicha región ‘A’ como área de interés usamos el triple del parámetro del radio más chico (radio_minimo * 3) asumiendo arbitrariamente un lado de distancia que aproxime “una pupila y media”. A := {celda (x, y) ∈ I / x ≥ radio_minimo * 3 ∧ radio_minimo * 3 ≥ y} A continuación se muestra el algoritmo para hallar la pupila: Las entradas: • Una imagen I de tamaño NxM • Un entero T correspondiente a la tolerancia a distancias intensidad para el algoritmo Cruz. • Un entero TC de valores entre 0 y 100 que indica la tolerancia circular. • Un entero RM que contiene el radio mínimo para la pupila Las salidas son: • Un valor E booleano (verdadero o falso) que indica si se encontró una presunta pupila. • Un par ordenado C=(xc, yc) correspondiente a las coordenadas del centro de la segmentación pupilar. • Un entero R que contendrá el radio de la segmentación pupilar. 50 5.DESARROLLO Las variables propias relevantes: • TN, TS correspondientes a las longitudes norte y sur de las trazas verticales. • TE, TO correspondientes a las longitudes este y oeste de las trazas horizontales, • “pixeles” es una variable que contiene la lista de píxeles obtenidos de la muestra uniforme en la imagen. • “exito” contiene un valor de verdad que indica si el método pudo encontrar a la pupila. Además se usan las funciones tomar_puntos() y ordenar_puntos() que hacen lo esperado. El segundo parámetro de la primera función es un porcentaje que determina la distancia entre los píxeles de la muestra que se devolverá. Por ejemplo, si la imagen tiene dimensión 320x280 y pasamos 5%, la distancia entre un punto y el siguiente en sentido horizontal será de 16 píxeles (pues representa el 5% de 320) y la distancia entre un punto y el siguiente en sentido vertical será de 14 píxeles (el 5% de 280). fun hallar_pupila(I, T, TC, RM) exito := falso pixeles := tomar_puntos(I, 5) pixeles := ordenar_puntos(pixeles) while pixeles ≠ [] ∧ ¬exito do p := take(pixeles) if p ∈ {(x, y, NI) ∈ I / x ≥ RM * 3 ∧ RM * 3 ≥ y} TN, TS, TE, EO, C := algoritmo_cruz(I, p, T) traza_media := media {TN, TS, TE, TO} → if traza_media ≥ RM → TN, TS, TE, TO, C := algoritmo_cruz(I, C, T) TN, TS, TE, TO, c_aux := algoritmo_cruz(I, C, T) traza_menor := min {TN, TS, TE, TO} traza_mayor := max {TN, TS, TE, TO} R := traza_menor exito := traza_menor ≥ traza_mayor * (TC / 100) fi fi od return exito, C, R end Segmentación del Iris Una vez determinados los parámetros de la pupila, para segmentar el iris solo debemos encontrar el radio mayor del anillo que define al mismo. Como se mencionó en la sección 1.2, la córnea cubre perfectamente al iris y su diámetro está acotado por 13mm en los humanos. Por lo tanto usaremos el parámetro del dataset resolución espacial o “escala” (ver sección 4.5) como referencia para calcular la diferencia entre el radio pupilar y el radio estándar del iris (6,5mm menos el radio pupilar obtenido en el paso anterior). Hecho esto tenemos todos los parámetros necesarios para nuestro modelo de segmentación del iris y por lo tanto concluye la etapa de localización de la característica biométrica. 51 5.DESARROLLO 5.3.2 Normalización y Preprocesamiento El propósito de la etapa de normalización en todo sistema biométrico (ver figura 1.1) es, en pocas palabras, el de proveer alguna forma de estandarización entre las muestras capturadas y/o a contrastar. Tal estandarización puede estar orientada a favorecer cualquiera de los aspectos influyentes en las siguientes etapas del sistema biométrico, tales como: 1. Acotar el tamaño de cada muestra en disco duro. 2. Reducir la cantidad de parámetros necesarios para definir un código biométrico dado. 3. Combatir algún inconveniente común con el dominio de aplicación. 4. Favorecer la eficiencia de las etapas subsiguientes. En nuestro caso, para implementar esta etapa del sistema nos basamos en el método de desdoblamiento (o “unwrapping”) propuesto por Daugman [4], ya que a nuestro criterio satisface los aspectos recién mencionados, pues: 1. El tamaño de las muestras normalizadas es mucho menor al de las muestras originales de cada dataset.. 2. Obtenidas las normalizaciones ya no necesitamos parámetros como “centro” y “radio”. 3. La normalización de Daugman[4] es robusta frente a dilatación/contracción del iris (i.e. dadas dos muestras del mismo individuo, una contraída y la otra dilatada, sus formas normalizadas tienden a ser similares). 4. La mera manipulación de estas imágenes normalizadas, es mucho más rápida que si se utilizaran las imágenes originales del dataset. Básicamente se usa la representación polar de los píxeles correspondientes al iris para construir una nueva imagen como se muestra en la figura 5.6. Daugman[4] propone representar la versión normalizada de un anillo de iris, como una matriz ‘N’ compuesta por una extracción parametrizada de información dentro del iris. Es decir; una selección de sub-circunferencias concéntricas pertenecientes al anillo que lo compone. La imagen normalizada dependerá entonces de dos parámetros: • Resolución radial ‘r’: La cantidad de sub-circunferencias que tomaremos del anillo del iris, los cuales conformarán las filas de N. • Resolución angular ‘θ θ’: La cantidad de radios seleccionados, los cuales conformarán las columnas de N. Es importante fijar estas resoluciones pues de variar según la imagen el objetivo de normalización no se alcanza. 52 5.DESARROLLO Figura 5.6: Representación gráfica del “unwrapping” propuesto por Daugman [4] (desdoblamiento del iris en una matriz). Figura 5.7: Ejemplo de los píxeles seleccionados en una normalización con 65 píxeles de resolución angular y 15 píxeles de resolución radial. Nuestra implementación del método de Daugman para normalizar el iris se detalla a continuación: 53 5.DESARROLLO Valores de entrada: • Una imagen I de dimensión NxM. • Un par de variables enteras “x_centro” e “y_centro” que son las coordenadas del centro del anillo que representa al iris. • “radio_menor” que es el radio de la pupila. • “radio_mayor” que es el radio de la circunferencia que divide al iris de la esclera. • Un par de variables enteras “A” y “R” que indican la resolución angular y la resolución radial (respectivamente) de la matriz de iris normalizada que se generará. Valor de salida: • Una matriz “matriz_iris” de dimensión AxR que contiene los pixeles extraídos del iris. fun normalizar_iris (I, x_centro, y_centro, radio_menor, radio_mayor, A, R) for code_y := 0 to R – 1 do for code_x := 0 to A – 1 do alpha := (2 * π / (A – 1)) * code_x iris_r := ((radio_mayor – radio_menor) / (R – 1)) * code_y + radio_menor iris_x := cos(alpha) * iris_r + x_centro iris_y := sen(alpha) * iris_r + y_centro if celda (iris_x, iris_y) ∈ I → → matriz_iris[code_x, code_y] := I[iris_x, iris_y] fi od od return matriz_iris end 54 5.DESARROLLO Nuestra propuesta En la normalización propuesta por Daugman, se toma una muestra de píxeles arbitrarios y poco representativos del iris. Por otro lado, tampoco es viable trabajar con la totalidad de ellos puesto que manipular objetos tan grandes tiene un costo computacional alto, tanto desde el punto de vista del espacio requerido por la base de datos como el del desempeño temporal del sistema. Pensar que cuando se quiere determinar la identidad de una persona se debe comparar su característica biométrica con todas las guardadas en el sistema. Nuestra idea es entonces usar información más representativa de la textura. Proponemos extraer estadísticos de distintas regiones del iris en la imagen y formar una nueva a partir de ellos. En este trabajo las regiones serán bloques rectangulares y se utilizará a la media muestral como estadístico ya que mostró mejores resultados que la mediana y la desviación estándar. El mecanismo para generar la nueva imagen se muestra en la siguiente figura. Figura 5.8: Arriba la normalización que contiene todos los píxeles el iris de la muestra original, superpuesta la grilla que determinaría la resolución de los códigos a almacenar. Abajo el código ya generado a partir de las medias de las celdas de arriba. Nuestra innovación aquí consiste en construir una imagen normalizada del iris que contenga todos los píxeles de la muestra original y luego se descompone en una grilla según la resolución convenida para almacenar los códigos de iris. Finalmente se calcula la intensidad media de cada celda y se utiliza este resultado como valor de intensidad de cada píxel del código generado (en el orden topológico). 55 5.DESARROLLO Valores de entrada: • Una imagen I de dimensión NxM. • Un par de variables enteras “x_centro” y “y_centro” que son las coordenadas del centro del anillo que representa al iris. • “radio_menor” que es el radio de la pupila. • “radio_mayor” que es el radio de la circunferencia que divide al iris de la esclera. • Un par de variables ‘N’ y M’ correspondientes a la dimensión de la matriz de iris a generar. Variables propias importantes: • NT y MT son las dimensiones necesarias para almacenar en una matriz todos los píxeles del iris. • La variable “iris” contiene la matriz normalizada con la totalidad de píxeles del iris. • BX y BY contienen la longitud horizontal y vertical de un bloque respectivamente. Valor de salida: • Una matriz “matriz_iris” de dimensión N’xM’ con el iris normalizado procesado. fun procesar_iris(I, x_centro, y_centro, radio_menor, radio_mayor, N’, M’) MT := Ri - Rp NT := 2 * π * radio_mayor iris := normalizar_iris(I, x_centro, y_centro, radio_menor, radio_mayor, NT, MT) BX := NT / N’ BY := MT / M’ for code_y := 0 to M’ - 1 do for code_x := 0 to N’ - 1 do bloque:= iris[i, j] code_x * BX ≤ i < ((code_x +1) * BX) min NT ∧ code_y * BY ≤ j < ((code_y+1) * BY) min MT matriz_iris[code_x, code_y] := media(bloque) od od return matriz_iris end 56 5.DESARROLLO 5.3.3 Extracción de característica En esta etapa se busca capturar dentro de la muestra normalizada, la característica elegida para identificar al individuo y almacenarla conformando así el llamado “código biométrico”. En nuestro caso particular, basados en la observación de que al momento de captura de la imagen ocular puede haber variaciones en el nivel de luminosidad, se nos planteó como objetivo desarrollar un método de extracción de característica que sea robusto ante esta situación. Por ello nuestro método se enfoca en la relación de cambio que hay píxel a píxel en la textura normalizada del iris y no en los valores de intensidad en sí. Más precisamente el vector de característica o código de iris desarrollado se construye de la siguiente manera: La rutina toma: • Una imagen I de tamaño NxM correspondiente al iris normalizado. Devuelve: • Una matriz D de dimensión (N-1)xM que llamamos matriz diferencial. fun codigo_iris(I) for j := 0 to M - 1 do for i := 0 to N - 2 do D[i, j] := I[i + 1, j] – I[i, j] od od return D end La denominación que le hemos dado a la matriz D proviene de la similitud que hay en la forma de calcularla con el concepto de derivada de una función. Más aun, la característica de representar el crecimiento por fila que posee la imagen I es un rasgo importante, pues si calculamos la matriz diferencial de I y la matriz diferencial de la imagen obtenida al sumar a cada componente cierta constante, dichas matrices serán iguales. Esto hace que al momento de la comparación, el sistema sea robusto a la variación de los niveles de luminosidad entre las imágenes adquiridas. 57 5.DESARROLLO Finalmente el método que combina las funciones para poder, a partir de una imagen, obtener el código de iris definitivo es: Valores de entrada: • Una imagen I de dimensión NxM • Una constante RC que representa a 6.5mm en píxeles • Un par de variables ‘N’ y ‘M’ correspondientes a la dimensión del código de iris a generar. • Un par de variables T y TC correspondientes a la tolerancia de intensidad y a la tolerancia circular respectivamente. • Una constante RM que indica el radio más chico esperado para la pupila en píxeles. Valor de salida: • matriz iris_code de dimensión N’xM’ que contiene el código de iris calculado. fun hallar_iris(I, RC, N’, M’, T, TC, RM) exito, centro, radio_menor := hallar_pupila(I, T, TC, RM) radio_mayor := RC if exito → matriz_iris := procesar_iris(I, centro, radio_menor, radio_mayor, N’, M’) iris_code := codigo_iris(matriz_iris) return iris_code [] ¬exito abort fi end → 58 5.DESARROLLO 5.3.4 Comparación (matching) Esta es la última etapa en un sistema biométrico y la razón de ser de todo este trabajo. Aquí la tarea es medir el grado de similitud del código de iris obtenido a partir de la imagen de entrada con los demás códigos almacenados en el sistema. De esta manera se intentará determinar la identidad del individuo. Para medir la similitud entre dos códigos de iris usaremos la llamada distancia de Hamming. Esta distancia es un coeficiente de similitud entre 0 y 1, y se calcula cuantificando la cantidad de bits en que difieren dichos códigos y dividiendo por la totalidad de bits necesitados para representarlos. Es decir, realizando un XOR entre la representación binaria de los códigos, contando cuantos dígitos binarios no nulos hay en el resultado y dividiendo por el numero de bits empleados para la representación. Ejemplo: la distancia de Hamming entre los números 10 y 7 (usando 8 bits para la representación) se calcula de la siguiente manera: 10 en binario es : 00001010 7 en binario es : 00000111 10 XOR 7 es : 00001101 Distancia de Hamming: 3 / 8 = 0.375 Para calcular esta distancia entre matrices usamos el siguiente algoritmo: Valores de entrada: • D y D’, las matrices de dimensión NxM correspondientes al par de códigos de iris para comparar. La salida es: • La variable “hamming” que contiene un valor entre 0 y 1 correspondiente a la distancia calculada. Además usaremos la constante “B” que simboliza la cantidad de bits necesarios para representar un elemento de las matrices D y D’, y la función bits_no_nulos() que cuenta la cantidad de unos que hay en la representación binaria de un número dado. fun hamming_dist(D, D’) hamming := 0 for j := 0 to M - 1 do for i := 0 to N - 1 do hamming := hamming + bits_no_nulos(D[i, j] XOR D’[i, j]) od od hamming := hamming / (B * N * M) return hamming end 59 5.DESARROLLO 5.4 Estructura del sistema El siguiente esquema, es una descripción TOP-DOWN de la estructura de funciones de nuestro sistema. En otras palabras se comienza (arriba) por la función de más “alto nivel” (la que captura la funcionalidad final del sistema) y cada flecha simboliza la llamada al procedimiento, función o funcionalidad señalada. comparar_iris hallar_iris codigo_iris tomar_puntos hallar_pupila algoritmo_cruz hamming_dist procesar_iris normalizar_iris Figura 5.9: Descripción TOP-DOWN del sistema completo. 60 6.PRETRATAMIENTOS PRETRATAMIENTOS En la sección 2, más precisamente en el apartado 2.2.2, se planteó la motivación de dotar al algoritmo a desarrollar, de algún grado de independencia del banco de datos (noción de “polivalencia”) además de la más usual; como lo es la búsqueda de algún tipo de mejora en la performance de un método. Luego, en la sección 5 se mencionó que llegado el desarrollo al punto de probar nuestro método de segmentación en datasets diferentes, se analizaron al menos 5 posibilidades diferentes para continuar. Pues bien, de las 5 posibilidades, se eligió una: “desarrollar una secuencia de pasos, que tomen como entrada una imagen de un dataset dado, y devuelvan como salida una imagen que el algoritmo pueda segmentar “efectivamente”; y en esta sección se documentará el desarrollo de esta alternativa denominada “pretratamientos”. 61 6.PRETRATAMIENTOS 6.1 Preliminares Aquí pasaremos a dar una descripción informal y conceptual del método propuesto para segmentar la pupila (expuesto en detalle en la sección 5), con el fin de comprender posteriormente las limitaciones del mismo, y en consecuencia las asistencias y objetivos buscados con los pretratamientos en los cuales se basa esta parte del trabajo. Inicialmente, el método trabaja bajo la suposición de que todas las muestras de un banco de imágenes oculares, tienen un patrón de similitud “razonable”. Entiéndase por razonable, características generales tales como: • “en todas las imágenes hay un ojo” • “todas las imágenes fueron capturadas aproximadamente a la misma distancia de cada individuo” Y características más particulares como por ejemplo: • “todas las imágenes poseen un nivel de luz similar una respecto de otra” • “la pupila representa en cada imagen un disco uniforme aproximadamente negro” 6.1.1 Un análisis semántico informal de Cruz Originalmente, el método se desarrolló sobre el dataset Casia-Iris V1 [1], el cual es muy utilizado en la mayoría de desarrollos del estado del arte (tanto publicaciones científicas, como tesis de grado y/o posgrado relativas al tema en cuestión; para mayores detalles consultar la sección 4). Mencionado esto, el método se basa en la suposición de que el disco pupilar, representa el área uniformemente “negra” más extensa en la imagen a segmentar. Así, inicialmente se distribuye uniformemente una cantidad prefijada de puntos sobre la imagen, algunos de los cuales caerán dentro del disco que representa la pupila, y que; adicionalmente, estos puntos estarán entre los más oscuros en la imagen. Se ordenan los puntos según su nivel de gris (desde el más oscuro al más claro), y será este orden el utilizado por el método para buscar el “píxel candidato” para obtener la segmentación buscada. A cada candidato, se le aplica el mencionado “Algoritmo Cruz” (para más detalle consultar la sección 5) el cual básicamente, comprueba la diferencia de gris con los píxeles vecinos, en cada punto cardinal; deteniéndose en cada traza cuando la diferencia supera un umbral de tolerancia prefijado. Subyacentemente, lo que se busca con este comportamiento, es que cuando se aplique sobre un píxel perteneciente a la pupila los recorridos se detendrán precisamente en el borde entre la pupila y el iris. Establecemos el candidato, eligiendo el primer píxel cuyos recorridos superen una longitud mínima arbitraria elegida según el caso. A partir de los recorridos de este candidato, se obtienen el radio y centro presuntos, del círculo imaginario al cual pertenecería este píxel. Finalmente se corre nuevamente el algoritmo Cruz sobre este supuesto centro, esperando una diferencia mínima entre la longitud de los recorridos (ya que presuntamente estamos en el centro de un disco negro). 62 6.PRETRATAMIENTOS Si se cumple esta hipótesis, entonces podemos calcular el radio pupilar con mayor precisión y el método concluye, retornando este centro y radio, suficientes para segmentar un disco. En caso contrario el método continúa sobre el siguiente candidato (con el orden establecido inicialmente). Si ningún candidato en la lista cumple con las longitudes mínimas de traza buscadas, el método devuelve la señal de fracaso correspondiente. 6.1.2 Las limitaciones de Cruz Como se explica en la sección 5, con el algoritmo Cruz básicamente se propuso un método razonablemente eficiente (performance) para segmentar pupila en forma automática, aunque que por la forma en la que se desarrolló el método de segmentación, el mismo le debe su efectividad a varias características específicas de Casia-IrisV1 [1] tales como: • El disco negro y uniforme superpuesto artificialmente sobre cada pupila en todas las muestras. • La ausencia de reflejos y/o manchas accidentales en todas las muestras. • La uniformidad lumínica entre todas las muestras. • El foco sobre la región de interés que presenta todo el dataset. • Excelente definición con baja resolución (320x280 píxeles). • La utilización de un sensor pancromático para la captura de cada muestra. Dicho de otra manera, analizando diferentes datasets de muy fácil acceso en la actualidad, (tales como: MMU Iris Database[2], “phoenix Iris Database” [3] , Casia-Iris V3) notamos que; no solo son muy diferentes uno respecto del otro (como ya se analizó en la sección 4), sino que ninguno posee similitudes con Casia-IrisV1 [1] (en cuanto a las características específicas mencionadas recién). Cualquiera de estos puntos de vista, es suficiente para predecir (y posteriormente comprobar) que el método de segmentación tuvo resultados catastróficos en cualquiera de estos datasets diferentes de Casia-IrisV1 [1]. Así, el objetivo de los pretratamientos se resume a dotar las muestras de un dataset dado, con estas características listadas recién, en lugar de adaptar o modificar el método ad-hoc para cada dataset en particular. 63 6.PRETRATAMIENTOS 6.2 La búsqueda del pretratamiento 6.2.1 El problema a combatir De entre todas las características que atentaron contra la efectividad del Algoritmo Cruz, pudimos aislar dos; que no sólo fueron las que más afectaron el correcto desempeño del método, sino que además son un denominador común en los datasets analizados diferentes de Casia-IrisV1 [1]. • La heterogeneidad de intensidad intrapupilar. • La presencia de reflejos/manchas accidentales producto de la iluminación al momento de captura. La primer característica, atenta principalmente contra la métrica utilizada para definir la intensidad (nivel de gris) esperada de la pupila. Concretamente hablando, pensar en la cota de tolerancia utilizada por el algoritmo para realizar el recorrido de cada traza. La segunda, en un primer momento, nos impulsó a modificar el algoritmo de forma tal que cuando una traza pasara por píxeles de alta luminosidad (donde la cota para determinar cuando la luminosidad se considera alta se ajusta con un parámetro), simplemente los ignore y siga su curso hasta encontrar la frontera del iris. Figura 6.1: Ejecución del algoritmo Cruz modificado sobre una imagen de CASIAv1 con una mancha blanca agregada digitalmente. Esta modificación no fue suficiente, pues implícitamente se esta asumiendo que las manchas son homogéneamente blancas, olvidando la dispersión de intensidad que se produce en todo su entorno. Es decir, una corona de píxeles que rodea todas las manchas intensas (blancas) en la cual hay intensidades propias del iris, haciendo imposible discernir entre el borde pupilar exterior que queremos hallar y una de estas coronas. 64 6.PRETRATAMIENTOS Esta situación provoca irremediablemente un corte prematuro de cada traza del algoritmo, por ello esta característica es la que más obstaculiza a Cruz y en consecuencia las técnicas desarrolladas se centran en combatirla. 6.2.2 Las técnicas para combatirlo A continuación, describiremos los tres tipos de pre-tratamientos digitales que elegimos para combinar y así combatir efectivamente el problema planteado en el apartado anterior. Ecualización controlada (y reducción del espacio de búsqueda): Intuitivamente hablando, el problema de los “diferentes negros” en pupila podría combatirse si todas estas intensidades oscuras tendieran a una intensidad oscura más uniforme. Recíprocamente, el problema con las manchas podría atenuarse si las intensidades muy claras, tendieran a una aún más clara. Este principio, nos motivó a desarrollar ecualizaciones que tendieran a “oscurecer los negros” y “aclarar los blancos”, tratando de mantener los medios tonos sin mayores cambios. La idea matemática es muy simple si pensamos en estas ecualizaciones como funciones que toman un valor de la imagen original, y devuelven el de la imagen “ecualizada” dentro de los nuevos rangos de intensidad. Luego de varias pruebas con ecualizaciones conocidas como Gaussiana y Raíz cuadrada, decidimos confeccionar dos alternativas muy simples basadas en los mismos principios: Una basada en la curva de la función seno (la sección con forma de ‘s’), y la otra inspirada en la forma de una función exponencial. Veamos las definiciones formales obtenidas durante el desarrollo: • Sinusoidal 1ro: 2do: f ( x) = • Acotar entre -π/2 y π/2 (intervalo donde vemos la ‘s’) Se corre y escala la función seno para tener dom e img = [0, 255] 255 x 1 − + 1 sen π 2 255 2 Exponencial Se parametriza con un coeficiente ‘k’ para ajustar la curva x 255 e − 1 f ( x ) = 255 (e − 1) k Es fácil entender la idea detrás de cada fórmula con la figura a continuación: 65 6.PRETRATAMIENTOS Figura 6.2: En la horizontal, tenemos las intensidades de la imagen original, el eje vertical representa el valor devuelto por la función (ecualización) aplicada. • El 0 representa el negro absoluto y el 255 el blanco más intenso. • La línea negra representa la ecualización “identidad” (a cada valor de la original se le asigna el mismo valor en la ecualización). • La línea azul, representa la ecualización basada en la función seno, notar como tiende a oscurecer los valores cercanos a negro (curva por debajo de la identidad) y aclarar los cercanos al blanco (la curva por arriba de la identidad). • La línea verde representa la ecualización basada en la función exponencial. Oscurece el espectro general de toda la imagen. Generando un alto contraste entre los valores oscuros, y los valores más blancos, los cuales tiende a no escurecer demasiado. 66 6.PRETRATAMIENTOS El efecto de tales funciones sobre las muestras puede verse ejemplificado con claridad en la siguiente figura. Figura 6.3: A la izquierda la muestra numerada 1 del dataset CASIA-Iris-Interval. A la derecha los efectos de aplicar las ecualizaciones: arriba ecualización sinusoidal, abajo la exponencial. Notar como ambas ecualizaciones producen; a priori, una reducción en el “ruido” intrapupilar, (entiéndase por ruido, la gran variación de intensidades que presenta la muestra original). Se ve también claramente el efecto de contraste buscado con las funciones. La imagen en general es más oscura, pero las manchas se ven mucho más contrastantes. 67 6.PRETRATAMIENTOS Reducción de profundidad (o resolución radiométrica): Luego de experimentar con las funciones de ecualizado, fue muy sencillo acoplarles la capacidad de reducir el espectro de colores. En otras palabras, que la función respete su curva, escalando los valores que devuelve entre 0 y N - 1, donde N es la cantidad de intensidades que pretendemos percibir en la imagen ecualizada, y claramente está en el intervalo [0,255] ya que pretendemos reducir (y no ampliar) el espacio de búsqueda. Aquí vemos el efecto provocado por la reducción, pasando de una imagen con 255 niveles de gris, a una de 32. Se pueden apreciar áreas en donde había variaciones de color (imagen original) que han sido “unificadas” dentro de un único valor (imagen reducida). (a) (b) Figura 6.4: (a) Es la muestra numerada 128 del dataset CASIA-Iris-Lamp, y en (b) se aprecia la misma luego de una reducción a 32 niveles de gris. Filtro “Moda” con ventana de lado ‘n’: Este filtro, recorre todos los píxeles de la imagen, y pinta cada píxel con el color (valor de intensidad) más presente en un área cuadrada de lado ‘n’ en torno a si mismo. Así, el término “ventana de lado ‘n’” representa un área de la imagen, cuadrada de tamaño n x n pixeles. Aunque este filtro, produce resultados sea cual sea la cantidad de niveles de grises de la imagen, produce cambios mucho más apreciables cuando esta cantidad es menor, ya que se vuelve más probable la repetición de colores, sea cual sea la ventana. En la figura 6.5 se puede observar claramente, como la unificación de colores se acentuó muchísimo. Es decir, la cantidad de colores es la misma en ambas imágenes, solo que en la imagen filtrada (muestra a la derecha) se resalta la división en estratos. Como propiedad positiva, nótese como se ha reducido considerablemente el tamaño de las manchas presentes en pupila, ya que eran blancos excepcionales rodeados por el color oscuro uniforme predominante en el área. 68 6.PRETRATAMIENTOS (a) (b) Figura 6.5: (a) Es la muestra ya reducida a 32 colores (misma que la figura 6.4(b)), y (b) tal imagen luego de aplicarle el filtro Moda con ventana 3. De nuestro desarrollo: el “Quitamanchas Cruz” De nuestra autoría e inspirado en el método objeto de todo este trabajo (localización de pupila y algoritmo Cruz), ideamos un sistema muy similar (precisamente inverso) pero esta vez para localizar y posteriormente substituir áreas intensamente blancas en la imagen (manchas reflejo). El objetivo ahora son los píxeles de mayor intensidad en la imagen (en lugar de los más oscuros), ahora buscamos con una cota máxima de área a recorrer (en lugar de un tamaño mínimo como cuando se trataba de encontrar pupila), y el umbral ahora representa la intensidad minima admisible como “mancha” para que Cruz corte sus recorridos en cuanto halle un píxel de menor intensidad. Una vez seleccionado un candidato a “píxel perteneciente a mancha”, ya no necesitamos ubicar un centro ni un radio como se hacía con la pupila, sino que utilizamos las longitudes de las trazas de Cruz, para pintar un área rectangular que cubra la presunta mancha en cuestión. El algoritmo se describe a continuación: Entradas: • • • Una imagen I de dimensión NxM. Un píxel “p” el cual es tratara de determinar si proviene de una mancha en la pupila. Dos enteros positivos NT y LT correspondientes al valor de intensidad más alto tolerado para la pupila y la longitud máxima para las trazas respectivamente. Salidas: • • Cuatro enteros positivos correspondientes a las longitudes de trazas calculadas Un valor de verdad que indica si las cuatro trazas terminaron sobre píxeles candidatos a ser parte de la pupila. 69 6.PRETRATAMIENTOS fun algoritmo_cruz_mancha(I, p, NT, LT) x, y, NI := p YN, YS := y XE, XO := x > NT ∧ y – YN < LT ∧ YN > 0 → YN [] I[x, YS] > NT ∧ YN – y < LT ∧ YS < M – 1 → YS [] I[XE, y] > NT ∧ XE – x < LT ∧ XE < N – 1 → XE [] I[XO, y] > NT ∧ x – XO < LT ∧ XO > 0 → XO do I[x, YN] := YN – 1 := YS + 1 := XE + 1 := XO – 1 od mancha_en_pupila := I[x, YN] > NT ∨ I[x, YS] > NT ∨ I[XE, y] > NT ∨ I[XO, y] > NT TN, TS := y – YN, YS – y TE, TO := XE – x, x – XO return TN, TS, TE, TO, mancha_en_pupila end Cabe destacar que la búsqueda de puntos candidatos, no es análoga a lo que hacíamos anteriormente. Ahora no alcanzaría con repartir puntos uniformemente en la imagen para garantizar una alta probabilidad de que alguno caiga sobre cada mancha (cosa que realizábamos para postular candidatos a pupila); ya que las mismas pueden ser varias, y su área; mucho menor que la de la pupila, causaría que muchas queden sin ser alcanzadas por estos puntos uniformes. En lugar de ello, se resolvió dividir la imagen total en ventanas más pequeñas de tamaño fijo y buscar el píxel de intensidad máxima local de cada una de estas ventanas, el cual será; en los casos de ventana con mancha, un píxel tendiente a blanco perteneciente a la misma mancha. Valores de entrada: • Una imagen I de dimensión NxM. • Un entero positivo L que indica la longitud del lado correspondiente a la ventana usada. Salida: • Un arreglo puntos que es la lista de píxeles obtenida. fun tomar_puntos_mancha(I, L) vx, vy, cur, puntos := 0, 0, 0, [] while vy < M do { p := max (i, j, NI) puntos := puntos ◄ p vx := vx + L ∈ I /vx ≤ i < vx + L ∧ vy ≤ j < vy + L} if vx ≥ N → vy := vy + L vx := 0 fi od return puntos end 70 6.PRETRATAMIENTOS Precisamente éstos máximos almacenados en “puntos” son los puntos que ahora ordenaremos para correr este “algoritmo cruz inverso” que acabamos de describir informalmente. Finalmente, el método para quitar las manchas pupilares se detalla a continuación: Entradas: • Una imagen I de dimensión NxM. • Tres enteros positivos MT, NT, LT, correspondientes al valor de intensidad más chico considerado candidato a mancha, al valor más alto tolerado para ser candidato a pupila y la longitud del lado de ventana usada para la búsqueda de píxeles candidatos respectivamente. Salidas: • La imagen “filtrada” resultante de aplicar el método. Variables propias destacadas: • TN, TS, TE, TO las longitudes de las trazas. • La variable “candidatos” que contiene la lista de píxeles candidatos. • “filtrada” que es inicialmente una copia de la imagen de entrada I. • La variable “mep” (mancha en pupila) que guarda la salida del algoritmo cruz que indica si laz trazas terminaron sobre píxeles candidatos a ser pupila. -1 Además usamos la función ordenar_puntos () que ordena una lista de píxeles de manera decreciente. fun filtrar_manchas(I, MT, NT, LT) candidatos := tomar_puntos_mancha(I, 10) -1 candidatos := ordenar_puntos (candidatos) filtrada := I hay_candidatos := (candidatos ≠ []) (x, y, NI) := take(candidatos) while MT ≤ NI ≤ 255 ∧ hay_candidatos do TN, TS, TE, TO, mep := algoritmo_cruz_mancha(I, (x, y, NI), NT, LT) if mep → izquierda := (x - TO) + 1 derecha := (x + TE) - 1 abajo := (y + TS) - 1 arriba := (y - TN) + 1 for i := izquierda to derecha do for j := arriba to abajo do filtrada[i, j] := NT / 2 od od fi hay_candidatos := (candidatos ≠ []) if hay_candidatos od return filtrada end → (x, y, NI) := take(candidatos) fi 71 6.PRETRATAMIENTOS Un detalle importante, que puede verse en el pseudocódigo, es que el método corre la función algoritmo_cruz_mancha() sobre la imagen de entrada I, pero usa las salidas de la función para pintar la copia de I que es la variable de salida “filtrada”. Esto se hace para evitar que algún píxel candidato que se haya tomado al principio del método sea pintado producto de la eliminación de una mancha próxima pero a la que no pertenezca. Si esto sucediera, las trazas del algoritmo Cruz para manchas tendrían longitud cero y quizás una porción de la mancha a la que pertenecía el píxel candidato sobreviva. En la siguiente figura, puede apreciarse claramente la acción del algoritmo Quitamanchas Cruz. (a) (b) Figura 6.6: En (a), la muestra número 40 del dataset CASIA-Iris-Interval elegida por la cantidad de manchas reflejo para mostrar la acción del “Quitamanchas Cruz” cuyo resultado es (b). Notar cómo pueden apreciarse las áreas rectangulares de “cobertura” de manchas, que aunque son distinguibles, ya no representan el mismo peligro (para el método de segmentación revisitado en 6.1.1) producto del alto contraste que generaban las manchas mismas. 72 6.PRETRATAMIENTOS 6.3 Mejoras esperadas Luego de explorar las técnicas de pretratamiento una por una y conocer sus efectos por separado, resulta bastante evidente el resultado que se está buscando, tanto como alguna sucesión natural de pasos para obtenerlo. Ya hemos expuesto ideas claras como: • “Un filtro moda, tiende a achicar manchas, dado que las mismas son “excepciones” dentro de la oscuridad predominante en la pupila” • “El filtro moda, produce resultados mucho más apreciables si la imagen ya fue reducida en sus colores” • “Una ecualización adecuada puede atenuar muchísimo el “ruido” de intensidades en pupila, tendiendo a igualar estos valores” • “Una reducción de colores, (reducción de espacio de búsqueda) claramente pintará del mismo color en la imagen de salida, píxeles con valores cercanos en la imagen de entrada” Por otro lado, expuestos anteriormente en el apartado 6.1.2 los inconvenientes que el método original de segmentación de pupila enfrenta, resulta consecuente la utilización de algunas de las técnicas exploradas para combatir directamente los aspectos enumerados en la sección 6.2.1. Dos ejemplos triviales inmediatos: • “Utilicemos el Quitamanchas, para combatir la presencia de manchas” • “Utilicemos una ecualización para reducir la heterogeneidad intrapupilar” Estos principios pueden parecer algo ingenuos, pero básicamente combinándolos con las ideas recién enumeradas, todo el trabajo detrás de esta sección se enfocó en ordenar las técnicas para obtener los mejores resultados. 73 6.PRETRATAMIENTOS Luego de varios días de pruebas supervisadas sobre diversos datasets, obtuvimos los mejores resultados con el siguiente orden para combinar las técnicas: 1) Utilizar una ecualización y reducir la profundidad (la cantidad de colores, el espacio de búsqueda): Esto propicia un efectivo filtro moda, y “discretiza” las manchas, lo cual ayuda al Quitamanchas. 2) Aplicar Quitamanchas: Lo hacemos antes de moda, ya que a veces los rectángulos de cobertura del Quitamanchas dejan píxeles blancos solitarios productos del degradé que rodea las manchas. 3) Filtro Moda: Luego del paso 1) debería maximizar su efectividad, y realizar el paso 2) antes, garantiza su aprovechamiento, ya que; de las exploradas, es la técnica más costosa computacionalmente. 4) Quitamanchas otra vez: En algunos casos las manchas con mucho degradé sobrevivieron, pero como el paso 3) contribuye a reducir ese fenómeno, una segunda corrida del Quitamanchas pudo eliminar varias. Finalmente, veamos un ejemplo ilustrativo: (a) (b) Figura 6.7: En (a) vemos la muestra número 7 del dataset CASIA-Iris-Interval. En (b) el resultado luego de la combinación de pasos recién detallada. Nótese en el lado izquierdo de la figura 6.7 la presencia de todos los problemas mencionados, hay una “corona” de reflejos justo en medio de la pupila, y varias réplicas circundantes que extreman el nivel de ruido intrapupilar en la muestra. Del lado derecho podemos ver que estos problemas prácticamente han desaparecido, siendo propicia al menos en apariencia la aplicación del método de segmentación de pupila, en espera de buenos resultados para segmentar. 74 6.PRETRATAMIENTOS 6.4 Posibles mejoras adicionales En adición, los pre-tratamientos no sólo combaten los obstáculos que atentaban contra el método de segmentación sino que también proporcionan ciertas asistencias a la performance del mismo, tales como: Reducir el espacio de búsqueda: Que las intensidades dentro de la pupila quedasen homogéneas (único color) determina que sólo se busque pupila de entre candidatos con un color determinado (en lugar de ordenarlos por intensidad). Lo cual reduce dramáticamente el número de candidatos a revisar por el método. Quitar el ruido intrapupilar: Podría propiciar la utilización de “tolerancia 0” para las corridas de Cruz (el valor de tolerancia para decidir si seguimos en pupila o no), reduciendo la performance total en el número de comparaciones necesarias. Discretizar las manchas: Esto sería en efecto; reducir el degradé entorno a las mismas, propiciando una optimización de “salto de mancha” para los recorridos de Cruz, los cuales pueden simplemente ignorar áreas intensamente blancas. 75 6.PRETRATAMIENTOS 6.5 Trabajando con las imágenes pretratadas Hasta aquí hemos estado analizando los pretratamientos que usaremos para llevar una imagen proveniente de un dataset cualquiera a una con las características necesarias para que nuestro método trabaje correctamente. Ahora explicaremos en detalle las modificaciones realizadas para trabajar con estas imágenes de manera tal de asegurar una buena efectividad en la segmentación. 6.5.1 El algoritmo Cruz 2 Aunque los pretratamientos resultan ser bastante efectivos para eliminar las manchas pupilares, en algunos casos pueden sobrevivir algunas de ellas. Para aumentar la probabilidad de segmentar exitosamente la imagen en estos casos, emplearemos la versión modificada del algoritmo Cruz que se mencionó en el apartado 6.2.1. En esta oportunidad, por el efecto del pretratamiento aplicado, la hipótesis de que las manchas son discretas (sin coronas de píxeles) será asumida. Solo queda entonces analizar como afectan estas manchas a la ejecución del algoritmo, para ello solo hay que considerar aquellas que están en la frontera entre la pupila y el iris. En la figura 6.8 se puede ver el efecto que tienen este tipo manchas. Las trazas obtenidas por el algoritmo Cruz modificado son más largas de lo que debieran, pues al atravesar una mancha de la frontera, no se puede saber en que momento se abandona la pupila. En estos casos el centro que nos devuelve el algoritmo no es confiable. Figura 6.8: Comparando la ejecución del algoritmo Cruz modificado sobre una imagen con manchas discretas agregadas digitalmente y la ejecución a partir de la imagen original.. Es bueno entonces saber si las trazas obtenidas estuvieron influenciadas o no por la presencia de manchas en los bordes, por lo que ahora la versión modificada del algoritmo Cruz tendrá una salida extra que nos indica si ocurre dicha situación. Vemos a continuación como queda el algoritmo con tal modificación: 76 6.PRETRATAMIENTOS Valores de entrada: • Una imagen I de tamaño NxM • Un píxel p = (x , y, NI) • Un entero T correspondiente a la tolerancia a distancias intensidad. • Un entero U correspondiente al valor de intensidad más bajo considerado como mancha. Las salidas son: • Un par ordenado C=(xc, yc) correspondiente a las coordenadas del centro de la segmentación de pupila. • Cuatro enteros positivos TN, TS, TE y TO correspondientes a las longitudes de los recorridos en cada punto cardinal. • Un valor booleano “meb” que indica si se detecto alguna mancha en el borde. Y las variables propias: • YN, YS correspondientes a las coordenadas norte y sur de la traza vertical. • XE, XO correspondientes a las coordenadas este y oeste de la traza horizontal. fun algoritmo_cruz2(I, p, T, U) (x, y, NI) := p YN, YS := y XE, XO := x (|I[x, YN] [] (|I[x, YS] [] (|I[XE, y] [] (|I[XO, y] do ≤ – NI| ≤ – NI| ≤ – NI| ≤ – NI| ≥ T ∨ I[x, YN] ≥ T ∨ I[x, YN] ≥ T ∨ I[x, YN] ≥ T ∨ I[x, YN] U) ∧ YN > 0 → YN := YN – 1 < M – 1 → YS := YS + 1 U) ∧ XE < N – 1 → XE := XE + 1 U) ∧ XO > 0 → XO := XO – 1 U) ∧ YS od C := (XE + XO, YN + YS) / 2 meb := I[x, YN + 1] ≥ TN, TS := y – YN, TE, TO := XE – x, return TN, TS, TE, end U ∨ I[x, YS - 1] ≥ U ∨ I[XE - 1, y] ≥ U ∨ I[XO + 1, y] ≥ U YS – y x – XO TO, C, meb 77 6.PRETRATAMIENTOS 6.5.2 Segmentar la pupila Puesto que ahora utilizaremos la segunda versión del algoritmo Cruz para trabajar, el método de segmentación de la pupila debe ser retocado. La esencia del método es la misma que se explico en 5.3.1, solo se agregan recaudos debido a la problemática que generan las manchas de la frontera pupilar. Ahora al criterio para determinar si un píxel es candidato o no a pertenecer a la pupila se le agrega la condición de que al ejecutar Cruz modificado a partir de él las trazas no se vean afectadas por manchas en los bordes. Es decir, se buscara primeramente un píxel de intensidad oscura en el área central de la imagen que además genere trazas de Cruz que eviten el contacto con alguna mancha fronteriza. Otro aspecto que se modifica es el momento del ajuste del centro. Originalmente, luego de la primera ejecución de cruz sobre el píxel candidato, para obtener un mejor centro volvíamos a ejecutar a Cruz a partir del centro obtenido anteriormente (se explica en detalle en 5.3.1). Esto lo hacíamos para evitar usar un centro calculado a partir de una región extrema de la pupila, ya que si la misma no es muy circular, dicho centro no es muy preciso. Esta vez solo ajustaremos el centro, calculado primeramente, si las trazas generadas por Cruz modificado a partir del primer centro no detectan manchas en los bordes. Por último para la elección del radio pupilar, se mantendrá el mismo criterio que antes, pues las manchas en los bordes (discretas) solo pueden hacer que las trazas se alarguen, en cuyo caso tomando la más chica nos aseguramos que o bien dicha traza no fue afectada por una mancha, o bien fue la menos afectada. En la página siguiente, la descripción formalizada del algoritmo resultante. 78 6.PRETRATAMIENTOS Las entradas: • Una imagen I de tamaño NxM • Un entero T correspondiente a la tolerancia a distancias intensidad para el algoritmo Cruz modificado. • Un entero TC de valores entre 0 y 100 que indica la tolerancia circular. • Un entero RM que contiene el radio mínimo para la pupila • Un entero U correspondiente al valor de intensidad más bajo considerado como mancha. Las salidas son: • Un valor de verdad E que indica si se encontró o no una presunta pupila. • Un par ordenado C=(xc, yc) correspondiente a las coordenadas del centro de la segmentación pupilar hallada. • Un entero R que contendrá el radio de la segmentación pupilar. Las variables propias: • TN, TS correspondientes a las longitudes norte y sur (trazas verticales). • TE, TO correspondientes a las longitudes este y oeste (trazas horizontales). • “pixeles” contiene los píxeles obtenidos de la muestra uniforme en la imagen. • “exito” es el valor de verdad que indica si la segmentación hallada satisface el criterio de circularidad convenido. fun hallar_pupila2(I, T, TC, RM, U) exito := falso pixeles := tomar_puntos(I, 5) pixeles := ordenar_puntos(pixeles) while pixeles ≠ [] ∧ ¬exito do p := take(pixeles) if p ∈ {(x, y, NI) ∈ I / x ≥ RM * 3 ∧ RM * 3 ≥ y} → TN, TS, TE, EO, C, meb := algoritmo_cruz2(I, p, T, U) traza_media := media {TN, TS, TE, TO} if traza_media ≥ RM ∧ ¬meb → TN, TS, TE, TO, c_aux, meb := algoritmo_cruz2(I, C, T, U) if ¬meb → C := c_aux TN, TS, TE, TO, c_aux, meb := algoritmo_cruz2(I, C, T, U) fi traza_menor := min {TN, TS, TE, TO} traza_mayor := max {TN, TS, TE, TO} R := traza_menor exito := traza_menor ≥ traza_mayor * (TC / 100) fi fi od return exito, C, R end 79 6.PRETRATAMIENTOS 6.5.3 Estructura resultante del sistema con los pretratamientos Aquí se detalla como se integran las nuevas funciones al sistema biométrico explicado en la sección 5. En la figura 6.9 se ilustran la relación de dependencia entre los componentes del sistema. Una flecha entre componentes indica que el de partida utiliza los servicios del de llegada. Cabe mencionar que la función hallar_iris() usa la imagen pretratada solo para que hallar_pupila2() obtenga la segmentación de la pupila (es decir un radio y un centro). Para la normalización, preprocesamiento y extracción de característica se sigue usando la imagen original. comparar_iris hamming_dist hallar_iris codigo_iris procesar_iris hallar_pupila2 pretratar_imagen tomar_puntos normalizar_iris algoritmo_cruz2 reducir_profundidad algoritmo_cruz_mancha filtrar_manchas tomar_puntos_mancha Figura 6.9: Esquema del sistema con los pretratamientos incluidos. 80 7.VALIDACIÓN VALIDACIÓN Aquí hemos decidido agrupar y relacionar todo el trabajo y documentación referente a las pruebas y resultados de los métodos y algoritmos desarrollados durante las secciones anteriores (más precisamente secciones 5 y 6). De alguna manera, probar los desarrollos en los que trabajamos y obtener algún tipo de resultado no solo documenta sino que también dota de substancia el esfuerzo empeñado, de ahí el nombre de esta sección; ya que en otras palabras: los resultados “validan” una investigación. Será una sección tri-partita, pues a pesar de que todo el desarrollo esté encaminado hacia un mismo fin, las tareas fueron modularizadas en varios pasos, de modo que decidimos probar los resultados de cada etapa de manera independiente. “Segmentación”, “Matching” y “Pretratamientos” son los tres experimentos cuyos resultados expondremos en esta sección. 81 7.VALIDACIÓN 7.1 Segmentación 7.1.1 Criterio de efectividad propuesto En este apartado vamos a establecer un criterio de éxito/fracaso al momento de segmentar pupila, el cual será el empleado para definir estadísticos de efectividad más adelante. Cabe aclarar que lo que se busca, es formalizar una idea bastante simple, tal como “tendremos una segmentación exitosa cuando la pupila esté visualmente bien segmentada”. Dicho esto, la definición más acertada que encontramos, fue: “Una segmentación de pupila (definida como una circunferencia) será exitosa cuando esté contenida dentro de la pupila y al menos dos puntos de la misma; separados por al menos 90° (en ambas direcciones), se correspondan con la frontera entre pupila e iris. Salvando casos excepcionales de pupilas poco circulares donde se requiere el criterio de un supervisor”. 7.1.2 Falsos positivos En nuestra implementación del método por razones estadísticas y para obtener resultados de prueba “en masa”, generamos una variable cuyo valor indica si se halló o no una segmentación para cada muestra en la que se corre el algoritmo. Un falso positivo será entonces en este caso, un resultado sobre una muestra tal que el programa guarda un valor positivo en esa variable (por ende, se devuelve un centro y radio), pero el centro y radio devueltos por el método no se corresponden con una segmentación exitosa. 82 7.VALIDACIÓN 7.1.3 Pruebas Como se anunció ya varias veces a lo largo de todo este escrito (sección 4.1 por ejemplo), el dataset que elegimos para las pruebas del método de segmentación fue CASIA-IrisV1, por la opción de comparación que teníamos en la bibliografía revisada antes que ninguna otra razón. Un ejemplo de la ejecución del algoritmo propuesto esta ilustrado en la figura 7.1. Allí se puede ver como en la primera ejecución de cruz sobre un candidato de pupila (líneas de puntos celestes) se obtiene el centro de la pupila a partir de las trazas y en una segunda iteración (líneas de puntos violetas) se puede calcular el radio. (a) (b) Figura 7.1: Corrida del algoritmo. En (a) la traza celeste corresponde al primer paso, la traza violeta corresponde al segundo y los dos píxeles de color diferente ubicados al centro corresponden al píxel inicial de cada traza. En (b) vemos una expresión gráfica del resultado obtenido. 83 7.VALIDACIÓN 7.1.4 Resultados Con el criterio de éxito recientemente explicado, obtuvimos una efectividad del 100% en 4.45 segundos (es decir, unos 5 milisegundos por muestra). Los pasos promedio del método (cada paso representa la corrida de Cruz sobre un candidato diferente para cada imagen ) resultaron 1.067. Aún en casos de pupilas poco circulares, la circunferencia hallada fue la que mejor se ajustó a las mismas, por lo que se consideraron éxitos desde el punto de vista del algoritmo. Cabe destacar que incluso en estos casos, el centro calculado resulta ser preciso. Veamos un ejemplo en la figura 7.2: Figura 7.2: Resultado de aplicar el algoritmo de segmentación propuesto en una imagen con pupila “poco circular” (muestra número 51 de Casia-IrisV1 [1]). 7.1.5 Conclusiones Todas estas pruebas se ejecutaron sobre el Framework, es decir que no se realizó ningún tipo de optimización ad-hoc para la arquitectura electrónica, ni se implementaron rutinas a bajo nivel con el fin de mejorar la performance computacional. Dicho esto, valoramos esta performance muy positivamente, pues: “analizar, segmentar y recrear las 756 imágenes que componen el dataset le tomó a nuestro método aproximadamente 4.45 segundos en una computadora personal actual de baja performance,, mientras que con el mismo equipo y sobre el mismo Framework, toma aproximadamente 0.56 segundos ejecutar un “filtro de mayoría de ventana 3” (una tarea trivial en el ámbito de las imágenes digitales) sobre una única muestra del mismo dataset.” Esto nos da una idea de la simplicidad computacional de Cruz. El valor observado en “pasos promedio” denota que en la gran mayoría de los casos el primer píxel elegido para correr Cruz, ya pertenecía a la pupila. Los casos que requieren supervisión son aquellos en los que la pupila resulta ser demasiado elipsoidal, por lo cual cualquier círculo que intente aproximarlas tendrá una diferencia. 84 7.VALIDACIÓN 7.2 Matching 7.2.1 Criterio de efectividad propuesto Ya que el banco de datos CASIA-Iris V1[1] provee 4 muestras por individuo para la etapa de pruebas (y 3 distintas para entrenamiento), hay; en principio, dos criterios para definir efectividad en la comparación (matching): “Identificación de individuo”: Tendremos un éxito cada vez que se identifica al individuo correcto con alguna de sus 4 imágenes, y la efectividad será el número de éxitos sobre el total de individuos “Identificación de muestra”: Tendremos un éxito cada vez que una muestra se corresponde con el individuo correcto, y la efectividad será el número de éxitos sobre el total de muestras (cuatro veces el total de individuos). 7.2.2 Falsos positivos En todos los dataset revisados, algún prefijo en el nombre de cada muestra identifica al voluntario. Dado que nuestra implementación para probar la etapa de matching contrasta los nombres de archivo de las muestras comparadas, se sabe entonces con seguridad a priori, si las muestras pertenecen al mismo individuo. En otras palabras, sabemos en cada comparación si tenemos un éxito o un fracaso, hecho que no produce falsos positivos o falsos negativos en este experimento. 7.2.3 Pruebas Las pruebas se realizaron sobre el dataset CASIA-Iris V1 [1] completo, a fin de perseguir la comparación (al menos aproximada) con los métodos de moda en la actualidad, según los datos extraídos de [6]. La siguiente figura ilustra la sucesión conceptual de pasos a los que se somete una muestra que se desee comparar. En este caso, el experimento incluía el paso de segmentación probado en el apartado anterior (apartado 7.1) y luego las rutinas necesarias para la comparación descritas en detalle en la sección 5; es decir: 1. Obtención de borde interior de iris (Segmentación de pupila, apartado 7.1). 2. Obtención de borde exterior de iris (Mediante resolución espacial del dataset). 3. En base a la segmentación compuesta por 1 y 2, formulación del código de iris estándar de Daugman [6]. (ver figura 7.3) 4. Extracción de característica con parámetros de resolución 60x15 px. 5. Obtención de “Matriz Diferencial” propuesta en este trabajo, sección 5. (Ver figura 7.4) 6. Utilización de distancia de Hamming para comparación y elección de muestra según distancia mínima. 85 7.VALIDACIÓN Figura 7.3: Representación gráfica de la Propuesta de Daugman[6] para formulación del código de iris. Iris normalizado procesar_iris() Iris procesado codigo_iris() Matriz Diferencial Figura 7.4: Ilustración de la obtención de “matriz diferencial” (propuesta en este trabajo, sección 5) a partir de un iris normalizado. La prueba completa, consistió en aplicar los pasos desde el 1 al 5 detallados arriba para las 756 imágenes del dataset CASIA-IrisV1, obteniendo de esta manera un “tiempo promedio por muestra” en milisegundos. Luego se contrastaron las 324 matrices obtenidas a partir de las muestras “de entrenamiento” con las 432 matrices obtenidas a partir de las muestras de “testing” (ver sección 4.1) que componen la totalidad del dataset, utilizando distancia de Hamming. Finalmente a cada matriz del primer conjunto se le asignó la matriz del segundo conjunto con la que menor distancia de Hamming tenía, con el fin de armar las parejas (matching) y evaluar los dos criterios de “efectividad” propuestos más arriba. 86 7.VALIDACIÓN 7.2.4 Resultados El tiempo en milisegundos descripto en 7.2.3, no representa una comparación exhaustiva (o cualitativa) ni de complejidad con las propuestas estudiadas y comparadas en [6], ya que; en efecto, al menos en esa bibliografía no se documenta el entorno de pruebas en cuanto a hardware ni software utilizado. Lamentablemente en [6] no se habla de lenguajes de implementación ni de “frameworks” o “maquinas virtuales” para probar los algoritmos escritos en un código en particular, pero sí se menciona en qué etapas consiste la medición del tiempo utilizando cada una de las técnicas revisadas; las cuales son precisamente los 5 primeros pasos descritos en la sección 7.2.3. En pocas palabras, no tenemos documentación acerca de cómo se obtuvieron los tiempos en milisegundos de las técnicas del estado del arte en siguiente cuadro comparativo, lo que sí sabemos es que es el tiempo que le tomó a cada técnica (implementada de alguna manera) en algún hardware determinado llevar a cabo los mismos pasos que a nosotros nos tomo obtener el tiempo en milisegundos (ver sección 7.2.3), así que utilizaremos esa única métrica para tener alguna idea comparativa parcial sobre la performance de nuestro desarrollo. (*1): Nombre para representar el método basado en detección de bordes multiescala usando “wavelet maxima” como paso de pre-procesamiento propuesto en [6]. (*2): Como en la bibliografía tampoco se menciona qué criterio de éxito se utiliza para medir la efectividad, incluimos los dos resultados que obtuvimos: 95,8% de efectividad para el criterio “identificación de muestra” (ver apartado 7.2.1), y 100% para el criterio “identificación de individuo”. 7.2.5 Conclusiones Los resultados obtenidos fueron muy alentadores, ya que; aunque las comparaciones con el estado del arte no sean tan exhaustivas como hubiese sido lo ideal, las pruebas bastaron para poner nuestro desarrollo en tiempos del mismo orden de los que hay publicados en la bibliografía, y la efectividad en cuanto a “identificación de individuo” (la cual creemos es muy razonable si pensamos en el campo de acción forense) arrojó resultados inmejorables. Pudimos identificar a todos (los 108) individuos del dataset por al menos una de sus 3 capturas biométricas disponibles en el subconjunto de entrenamiento, y; en la mayoría de los casos, las 3 capturas apuntaron al mismo individuo (95,8% de efectividad según el criterio “identificación de muestras”). 87 7.VALIDACIÓN 7.3 Pretratamientos 7.3.1 Criterio de efectividad propuesto En esta ocasión, el éxito no se define per-sé; es decir que el éxito de los pretratamientos dependerá pura y exclusivamente de qué tan exitoso sea el algoritmo de segmentación desarrollado al correrlo sobre un conjunto de muestras sometido por el pretratamiento. Podríamos definir así entonces el criterio de éxito como sigue: “Tendremos un éxito cada vez que el algoritmo de segmentación produzca una segmentación exitosa (definición 7.1.1) sobre una muestra “pretratada”, sólo si el mismo algoritmo produce un fracaso sobre la muestra sin pretratar” 7.3.2 Falsos positivos, falsos negativos Dada la definición de éxito, tendremos un falso positivo cada vez que: dada una muestra sometida a las pruebas, el algoritmo de segmentación produzca una segmentación exitosa utilizando o no los pretratamientos sobre la muestra. Por otra parte, un falso negativo estará dado por el concepto intuitivo de “imagen inadmisible” cuando la muestra sometida a las pruebas presenta factores particularmente negativos, para los que ni el método de segmentación ni el pretratamiento fue diseñado. Por ejemplo: la presencia de pestañas, maquillaje y/o anteojos sobre el área corneal en una muestra específica de un dataset. 7.3.3 Pruebas Elegimos el dataset CASIA-Iris-Interval, (subconjunto de CASIA-IrisV3) para someter nuestras hipótesis de mejora, dado que de todos los que tuvimos a nuestro alcance resultó el de mayor reto por sus características de patrones de manchas, ruido en la imagen, y muchas veces discrepancias en la iluminación de una muestra hacia otra del mismo conjunto. Se eligió una muestra de 100 imágenes, representativas de todo el dataset, con el propósito de poder repetir las pruebas las veces que nos hiciera falta para ajustar los parámetros, sin perder precisión al momento de devolver un estadístico de efectividad confiable. Una ventaja adicional fue la eliminación a priori de falsos positivos, ya que el método de segmentación tuvo una efectividad del 0% (nula) sobre este conjunto de prueba sin pretratar. Finalmente, las ejecuciones, arrojaron dos combinaciones muy prometedoras: 1 2 3 4 Combinación N°1 Combinación N°2 Reducción Exponencial a 10 colores Reducción Sinusoidal a 7 colores Quitamanchas corte 0, lado 15px Filtro Moda ventana de lado 3px Quitamanchas corte 0, lado 15px 88 7.VALIDACIÓN 7.3.4 Resultados Antes de revisar la tabla, valen algunas aclaraciones y conceptos clave. “Efectividad automática”: Con el propósito de ir calibrando los parámetros tuvimos que repetir las pruebas varias veces, y para agilizar este proceso, automatizamos el recuento de “segmentación hallada”. Pues bien, hallada no significa exitosa (según la definición 7.1.1) ya que el algoritmo cruz puede hallar un centro y radio que no se correspondan con la pupila. “Pasos promedio”: La cantidad de candidatos evaluados por el método de segmentación para cada imagen (promediada sobre las 100 muestras). Efectividad automática Falsas segmentaciones Falsos negativos Efectividad real Pasos Promedio Combinación N°1 97% 7 2 92% 4.93 Combinación N°2 93% 5 1 89% 4.45 7.3.5 Conclusiones Aunque la performance global del método se ve afectada por el significativo costo computacional del filtro Moda, los resultados arrojados son muy positivos, dado que sin los pre-tratamientos, el método sobre el mismo conjunto de datos de prueba, tiene una efectividad real del 0% (nula), y una caída a 144 en los pasos promedio. Hecho que valida no solo el cumplimiento de la hipótesis de mejora (sección 6.3), sino también la efectividad de los pre-tratamientos, y la viabilidad de utilizarlos para llevar las imágenes a estados en los cuales el método puede demostrar resultados. En otras palabras, un mecanismo válido para acercar el método de segmentación desarrollado al concepto de polivalencia. 89 8.CONCLUSIONES CONCLUSIONES Como su nombre nos sugiere, en esta sección incluiremos lo referido a los objetivos alcanzados y valoraciones propias sobre el desarrollo completo de nuestro trabajo final. Al final nuestra visión sobre el trabajo a futuro, tanto en cuanto a nuestros objetivos o aspiraciones pendientes como al trabajo que proyectamos en el área, ya que cerramos esta etapa de trabajo final con el pleno convencimiento de que es un área en crecimiento, rica para investigar y depurar desde todas las disciplinas involucradas. 90 8.CONCLUSIONES 8.1 Valoraciones propias En cuanto a los objetivos iniciales: En la sección 2.1, se listaron los objetivos iniciales del pre-proyecto de nuestro trabajo final, y luego del largo camino recorrido hasta que decidimos redondear lo enmarcado por este trabajo final de grado, nos resulta muy alentador (salvo por el que habla de la implementación en el lenguaje R) haber alcanzado satisfactoriamente todos los objetivos planteados. Se pudo ingresar a investigar el estado del arte mediante la revisión de bibliografía muy reciente en el tema y comprender algunas de las problemáticas que aún siguen vigentes en el área, luego propusimos un algoritmo de nuestra autoría no sólo para alguno de los procedimientos ya existentes (ver 4to objetivo, sección 2.1) sino que a lo largo del desarrollo pudimos posicionar una alternativa propia en cada paso de la biométrica (ver esquema sección 1.1), partiendo desde la segmentación y experimentando con todos los pasos hasta la etapa de matching. En cuanto a los resultados: En la sección anterior (Validación), se redactaron conclusiones locales a cada resultado, ya que se dividió el desarrollo global en 3 áreas experimentales. Para detalles remitirse a las secciones 7.1.5, 7.2.5 y 7.3.5 respectivamente. En resumidas cuentas, los resultados para segmentación fueron inmejorables y superaron ampliamente nuestras expectativas. En el área de matching nos adentramos con una propuesta menos ambiciosa y; aunque relativos, obtuvimos resultados en principio competentes con respecto a sus pares en el estado del arte; no por algún aspecto de mejora sobre alguno sino por apostar a que una visión “computacional” del problema a resolver (ver sección 2.2.3) podría bajar drásticamente la complejidad del método. En cuanto a los pretratamientos, obtuvimos resultados no menos alentadores (ver sección 7.3.4), superando con relativo éxito las problemáticas que nos propusimos combatir luego de revisar los datasets (ver sección 6). Acercando así nuestro algoritmo a otros datasets fuera de CASIA-IrisV1. Globales: Partiendo de una valoración sobre los resultados en retrospectiva con las motivaciones desarrolladas en la sección 2, se obtuvimos las conclusiones más generales sobre la totalidad de nuestro trabajo final de grado. Pudimos comprobar satisfactoriamente que la hipótesis de buscar performance a partir de la reducción de complejidad era válida: En líneas generales, verificamos ideas informales como “Se podía resolver el problema de la segmentación de una manera mucho más simple y sin modelos matemáticos complejos” “Los métodos de moda vuelcan la complejidad a la detección exacta de los bordes del iris, apostemos a la comparación” 91 8.CONCLUSIONES Se obtuvieron en efecto; resultados competitivos dedicando menos computación a la segmentación (resignando quizás un poco de exactitud en estos bordes), y proponiendo una mejora a la comparación “tradicional” por Hamming. Logramos una drástica reducción de complejidad segmentando el borde interno con nuestro algoritmo Cruz y valiéndonos de estándares anatómicos (uso de parámetro de resolución espacial) para obtener el borde exterior, perdiendo así exactitud en la segmentación lo cual atenuamos con el empleo de la “matriz diferencial” antes del paso final: el matching. Estos resultados no sólo fueron valorados como positivos por nosotros, sino que recibimos un gran estímulo obteniendo el 2° puesto en el concurso de carácter internacional “XIV Reunión de Trabajo en Procesamiento de la Información y Control” (más conocido como RPIC 2011) de entre un total de 31 participantes, llevado a cabo en Oro Verde, provincia de Entre Ríos y posteriormente calificando como disertantes en el “IV Simposio de Estadística Espacial y Modelamiento de Imágenes” (más conocido como SEEMI 2011) llevado a cabo en Chile. 92 8.CONCLUSIONES 8.2 Trabajo a futuro Automatización, inteligencia artificial: A corto plazo se podría perfeccionar la integración del método descrito dentro de una superestructura que decida de forma automática cuándo utilizar o no las rutinas de pretratamiento, de manera tal que sea útil para reconocer la pupila incluso cuando dentro de la misma se presenten irregularidades en la textura, generalmente producto de reflejos de la luz utilizada para captar las imágenes y ruido digital intenso; por ejemplo. De la misma manera, proponer un mecanismo “inteligente” de búsqueda y ajuste de parámetros para poder adaptar los pretratamientos sin el pleno conocimiento o estudio supervisado de las dificultades particulares que pueda presentar un dataset dado; buscando así una polivalencia cada vez más real. Implementación: Teniendo en cuenta los objetivos planteados inicialmente (sección 2.1), el trabajo a futuro más sugerente es el que determina el único objetivo que no abordamos en el desarrollo de este trabajo: la implementación en R. Como es de conocimiento en el área, R es un lenguaje muy utilizado en el ámbito de la estadística, por lo tanto en líneas generales, lo que se busca es promover la integración interdisciplinaria, (en este caso estadísticos de imágenes y computólogos), para acercar; cuando menos en primera instancia, las rutinas desarrolladas en este trabajo a un ambiente de aplicación real. Integración: Otro ambicioso objetivo podría ser el de desarrollar una plataforma de pruebas de técnicas biométricas, es decir un Framework cuyos marcos sean; por ejemplo, las etapas de la biometría (ver sección 1.1), y los módulos sean las técnicas a probar escritas en algún lenguaje o código libre de aspectos estrictamente computacionales, a manera de proveer un mecanismo eficaz de prueba de técnicas, para que los desarrollos teóricos en el estado del arte no queden sólo “en los papeles” y se puedan someter a prueba y práctica. 93 9.REFERENCIAS REFERENCIAS [1]. Chinese Academy of Sciences, CASIA-IrisV1, http://biometrics.idealtest.org/ [2]. MMU Iris Database, MultiMedia University, http://pesona.mmu.edu.my/~ccteo/ [3]. “phoenix Iris Database” Michal Dobeš and Libor Machala, Iris Database, http://www.inf.upol.cz/iris/© 2005–2010 Dept. Computer Science Palacky University [4]. J. Daugman, “How iris recognition works”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 14, pp. 21–30, 2004 [5]. R. Wildes, “Iris recognition: an emerging biometric technology”, Proceedings of the IEEE,vol. 85, pp. 1348–1363, 1997. [6]. A. Bouridane, Imaging for Forensics and Security, Signals and CommunicationTechnology, DOI 10.1007/978-0-387-09532-5 1. [7]. Bernd Jähne. (2004) “Practical Handbook on Image Processing for Scientific and Technical Applications”, 2nd Ed. CRC Press LLC. [8]. R. Molina “Introducción al Procesamiento y Análisis de Imágenes Digitales”, Departamento de Ciencias de la Computación e I.A., Universidad de Granada. Curso impartido hasta 1998. [9].http://en.wikipedia.org/wiki/JPEG [10].http://en.wikipedia.org/wiki/Pcx [11].http://es.wikipedia.org/wiki/Distancia_de_Mahalanobis [12]. Ojeda, S., Vallejos, R., Bustos, O. (2010)“A new image segmentation algorithm with applications to image inpainting”. Computational Statistics and Data Analysis”, volume 54 issue 9, 1 september 2010. Elsevier, 2010. [13].http://es.wikipedia.org/wiki/Historia_de_la_biometría [14].http://www.biometria.gov.ar [15] J. G. Daugman. “High Confidence Visual Recognition of Persons by a Test of Statistical Independence”. IEEE Trans. on Pattern Analysis and Machine Intelligence, vol. 15, nº 11. Noviembre 1993.pp. 1148-1161. [16]. “Iris Recognition” del NSTC, Comitee on Technology, Comitee on Homeland and National Security, Subcomitee on Biometrics- www.biometrics.gov, 7 Aug 2006. [17]. L. Ma, T. Tan, et al. “Efficient iris recognition by characterizing key local variations,” IEEE Transactions on Image Processing, vol. 13, pp. 739–750, 2004. 94 95 96