Download - Tesis Angel 2014
UNIVERSIDAD NACIONAL DEL ALTIPLANO – PUNO
FACULTAD DE INGENIERÍA ESTADÍSTICA E INFORMÁTICA
ESCUELA PROFESIONAL DE INGENIERÍA ESTADÍSTICA E INFORMÁTICA
PROTOTIPO DE IDENTIFICACIÓN BIOMÉTRICA DE PERSONAS
POR MEDIO DEL RECONOCIMIENTO DE IRIS,
APLICANDO LAS TECNICAS DE JHON DAUGMAN,
PUNO – 2013
TESIS
PRESENTADA POR
Bach. Ángel Henrry Panca Núñez
PARA OPTAR EL TÍTULO PROFESIONAL DE:
INGENIERO ESTADÍSTICO E INFORMÁTICO
PUNO – PERÚ
2013
UNIVERSIDAD NACIONAL DEL ALTIPLANO - PUNO
FACULTAD DE INGENIERÍA ESTADÍSTICA E INFORMÁTICA
ESCUELA PROFESIONAL DEINGENIERÍA ESTADÍSTICA E INFORMÁTICA
TESIS
PROTOTIPO DE IDENTIFICACIÓN BIOMÉTRICA DE PERSONAS POR MEDIO DEL RECONOCIMIENTO DE IRIS,
APLICANDO LAS TECNICAS DE JHON DAUGMAN, PUNO – 2013.
Presentada por:
Bach. PANCA NUÑEZ ÁNGEL HENRRY
A la Coordinación de Investigación de la Facultad de Ingeniería
Estadística e Informática de la Universidad Nacional del Altiplano - Puno,
para optar el Título Profesional de:
INGENIERO ESTADÍSTICO E INFORMÁTICO
APROBADA POR:
PRESIDENTE DE JURADO :……………………………………………………M.Sc. EDGAR ELOY CARPIO VARGAS
PRIMER MIEMBRO :……………………………………………………M.Sc. SAMUEL DONATO PÉREZ QUISPE
SEGUNDO MIEMBRO :……………………………………………………M.SC. GODOFREDO QUISPE MAMANI
DIRECTOR DE TESIS :……………………………………………………M.Sc. PERCY HUATA PANCA
ASESOR DE TESIS :……………………………………………………M.Sc. LEONID ALEMAN GONZALES
iii
DEDICATORIAS
i
Este trabajo es dedicado a Dios que me ha dado la vida y fortaleza para terminar este proyecto de investigación.
A mis queridos padres ANA LUISA Y ESTEBAN que siempre han estado conmigo en todo momento, que lucharon por mí, para brindarme los recursos necesarios para darme una carrera profesional para mi futuro y por creer en mí, aunque hemos pasado momentos difíciles, siempre han estado apoyándome y dándome todo su amor. A mi hermano MANUEL que muchas veces me regalaste una sonrisa para seguir adelante. LOS QUIERO MUCHO.
A la persona que siempre estuvo a mi lado, en los momentos más difíciles que pase en la formación de mi profesión y que siempre me impulso a seguir adelante TE AMO MARTHA.
A mi amigo GEANCARLOS (Q.E.P.D), sé que ha sido un ángel que siempre me apoyaste, ante nuestro DIOS.
AGRADECIMIENTOS
ii
Mi más sincero y profundo agradecimiento:
- A nuestra primera casa de estudios UNIVERSIDAD NACIONAL DEL
ALTIPLANO por haberme dado la oportunidad de cumplir este gran
sueño.
- A La Facultad de Ingeniería Estadística e Informática (FINESI) de la
Universidad Nacional del Altiplano de Puno (UNAP) y a sus autoridades
que la conducen, por haber permitido al interesado seguir estudios de
Pre Grado y por la ayuda y facilidades prestadas.
- A los Docentes de la Escuela Profesional de Ingeniería Estadística e
Informática de la Universidad Nacional del Altiplano de Puno, por sus
sabias enseñanzas.
- A los estudiantes de la Escuela Profesional de Ingeniería Estadística e
Informática de la Universidad Nacional del Altiplano de Puno, por su
valiosa colaboración.
- A todas las personas, amigos y familiares por su aliento, apoyo
desinteresado y colaboración durante mi formación profesional.
INDICE
DEDICATORIA ........................................................................................................ i
AGRADECIMIENTO................................................................................................ ii
RESUMEN.............................................................................................................. ix
ABSTRACT.............................................................................................................xi
INTRODUCCIÓN .................................................................................................xiii
CAPITULO IPLAN DE INVESTIGACIÓN................................................................1
1.1 PLANTEAMIENTO DEL PROBLEMA..............................................................1
1.1.1 Formulación y Definición del Problema.................................................1
1.1.2 Formulación del problema.....................................................................2
1.2 OBJETIVOS.....................................................................................................2
1.2.1 Objetivo General...................................................................................2
1.2.2 Objetivos Específicos............................................................................2
1.3 HIPÓTESIS......................................................................................................2
1.3.1 Hipótesis General..................................................................................2
CAPITULO IIMARCO TEÓRICO.............................................................................3
2.1 ANTECEDENTES DE LA INVESTIGACIÓN...................................................3
2.1.1 Antecedentes de Nivel Internacional.....................................................3
2.1.2 Antecedentes de Nivel Local.................................................................4
2.2 BIOMETRÍA.....................................................................................................6
2.3 EL IRIS HUMANO............................................................................................7
2.4 PATRÓN DEL IRIS..........................................................................................9
2.5 PROCESAMIENTO DE IMÁGENES POR COMPUTADORA.........................9
2.5.1 La cuantificación..................................................................................12
2.5.2 Imagen digital......................................................................................13
iii
2.6 TRATAMIENTO DE IMÁGENES...................................................................17
2.6.1 Etapas para el tratamiento de imágenes.............................................18
2.6.2 Segmentación.....................................................................................25
2.7 FUNCIONES PARTICULARES.....................................................................30
2.7.1 Detector circular de Hough..................................................................30
2.7.2 Transformada de Gabor......................................................................31
2.8 MARCO CONCEPTUAL................................................................................34
2.9 OPERACIONALIZACIÓN DE VARIABLES....................................................35
CAPITULO III METODOS Y MATERIALES...................................................36
3.1 TIPO DE INVESTIGACIÓN...........................................................................36
3.2 DISEÑO DE ESTUDIO..................................................................................36
3.3 POBLACIÓN..................................................................................................36
3.4 MÉTODOS DE RECOPILACIÓN DE DATOS...............................................36
3.5 METODOLOGÍA PARA EL RECONOCIMIENTO DE IRIS...........................37
3.5.1 Desarrollo Organización del proyecto.................................................38
CAPITULO IVRESULTADOS Y DISCUSIÓN........................................................43
4.1 ANALISIS DE REQUISITOS..........................................................................43
4.1.1 Creacióndelaplantilla - obtencion de la
muestra…………………………………………………………….............43
4.1.2 Creación de la plantilla –extracción de los datos de interes
............................................................................................................43
4.1.3 Creación de la plantilla–Transformaciónde datos en plantilla
biométrica............................................................................................45
4.1.4 Comparación de plantiullas biométricas........................................46
4.2 IMPLEMENTACIÓN.......................................................................................47
4.2.1 Adquisición de las imágenes............................................................47
4.2.2 Segmentación.....................................................................................48
iv
4.2.3 Obtencion del iris.................................................................................55
4.3 RECONOCIMIENTO (Codificación y matching)............................................61
4.3.1 Metodosdecodificaciónymatchingexistentes.......................................61
4.3.2 Implementación...................................................................................67
CONCLUSIONES..................................................................................................73
RECOMENDACIONES Y SUGERENCIAS...........................................................75
BIBLIOGRAFIA.....................................................................................................76
ANEXOS................................................................................................................78
v
INDICE DE FIGURAS
FIGURA Nº 01: PARTES DEL OJO...................................................................7
FIGURA Nº 02: DETALLE DEL IRIS..................................................................8
FIGURA Nº 03: IMAGEN TOMADA CON DIFERENTES
RESOLUCIONES..................................................................12
FIGURA Nº 04: NIVELES DE CUANTIFICACIÓN DE LA SEÑAL...................
DE LAINTENSIDAD LUMINOSA...........................................13
FIGURA Nº 05: IMAGEN CON SU CORRESPONDIENTE
HISTOGRAMA.......................................................................16
FIGURA Nº 06: IMAGEN CON SU CORRESPONDIENTE
HISTOGRAMA RGB...........................................................17
FIGURA Nº 07: HISTOGRAMAS QUE EJEMPLIFICAN EL..................
PROBLEMADE CONTRASTE...............................................21
FIGURA Nº 08: ALGORITMO PARA EL ESTIRAMIENTO...................
DE HISTOGRAMA...............................................................22
FIGURA Nº 09: PROCESO DE ECUALIZACIÓN DE HISTOGRAMA.............23
FIGURA Nº 10: PROCESO DE CONVOLUCIÓN............................................24
FIGURA Nº 11: DETECTOR DE CONTORNOS CANNY................................30
FIGURA Nº 12: CADA PUNTO DE CONTORNO (IZQ.)...................
EN LA IMAGEN REAL SIRVE DE CENTRO.................
PARA UN CÍRCULO CREADO EN EL ESPACIO................
DE HOUGH (DER)...........................................................31
FIGURA Nº 13: RESULTADO DE NORMALIZACIÓN DE UN IRIS................
A LA DERECHA, LA MATRIZ 2D RESULTANTE.............32
FIGURA Nº 14: CURVA GAUSSIANA FIG. (IZQ.) – WAVELET
GABOR RESULTANTE FIG. (DER)................................33
vi
FIGURA Nº 15: RESULTADOS TRAS WAVELETS GABOR: PARTE
REAL DE LA PLANTILLA...............................................33
FIGURA Nº 16: DIAGRAMA DE BLOQUES DEL SISTEMA
DE RECONOCIMIENTO DEL IRIS....................................37
FIGURA Nº 17: SISTEMA DE RECONOCIMIENTO:
AUTENTIFICACIÓN Y IDENTIFICACIÓN.......................38
FIGURA Nº 18: MODULO DE EXTRACCIÓN DE DATOS DE................
INTERÉS...............................................................................44
FIGURA Nº 19: MÓDULO DE TRANSFORMACIÓN EN
PLANTILLA BIOMÉTRICA................................................46
FIGURA Nº 20: MÓDULO DE COMPARACIÓN DE PLANTILLAS...............
BIOMÉTRICAS......................................................................46
FIGURA Nº 21: IMAGEN CAPTURA POR EL COMPUTADOR......................48
FIGURA Nº 22: CAPTURAS TÍPICAS DEL IRIS HUMANO............................54
FIGURA Nº 23: SEGMENTACIÓN DE LA PUPILA.........................................54
FIGURA Nº 24: REDIMENSIÓN DE LA IMAGEN............................................55
FIGURA Nº 25: IMAGEN ORIGINAL (IZQ), IMAGEN CON
TRATAMIENTO PREVIO (DER).........................................56
FIGURA Nº 26: IMAGEN DE CONTORNOS RESULTANTE DE LA
APLICACIÓN DE CANNY EDGE......................................... 57
FIGURA Nº 27: REGIÓN DE LA PUPILA OBTENIDA A PARTIR................
DE LA REGIÓN DEL IRIS............................................57
FIGURA Nº 28: IMAGEN (IZQ.), SU HISTOGRAMA (CENTRO)...............
Y LA DETECCIÓN CANNY (DER.)...................................58
FIGURA Nº 29: ZONA OCLUIDA POR LOS PARPADOS..............
MARCADOS COMO RUIDO...............................................59
vii
FIGURA Nº 30: IMAGEN (IZQ.) LÍNEA DETECTADA (CENTRO)
LÍNEA DE INTERSECCIÓN (DER.)......................................60
FIGURA Nº 31: DETALLE DE PESTAÑAS MARCADAS COMO
RUIDO. IMAGEN ORIGINAL (IZQ.) IMAGEN.................
RUIDO (DER.).................................................................61
FIGURA Nº 32: EJEMPLO DE FILTRO DE GABOR.......................................64
FIGURA Nº 33: ESQUEMA DE LA NORMALIZACIÓN DEL IRIS....................67
FIGURA Nº 34: TEXTURA NORMALIZADA Y MÁSCARA DE RUIDO............68
FIGURA Nº 35: EXTRACCIÓN DE SEÑAL ES UNIDIMENSIONALES...............
DE LA TEXTURA DEL IRIS..................................................70
FIGURA Nº 36: PROCESO DE CODIFICACIÓN:...........................................70
FIGURA Nº 37: POSICION DE FASE.............................................................71
viii
RESUMEN
La biometría en la actualidad es un tema muy estudiado por investigadores,
que es una técnica para reconocer a las personas basadas en la voz, la mano,
el rostro, la huella dactilar, la retina, entre otras características, sin embargo no
es muy eficiente porque es univoca, ya que es muy común y no garantiza en
reconocer a la persona original. Es por esa razón que en el presente trabajo de
investigación se desarrolla una nueva metodología para el reconocimiento de
personas que sea más eficaz en evitar las suplantaciones y se fija como
objetivo principal desarrollar un prototipo de identificación de personas por
medio del reconocimiento del iris.
Se ha empleado en el desarrollo del prototipo la metodología de cascada el
cual se basa en capturar la imagen del iris para hacer un tratamiento a dicha
imagen, seguidamente se realiza la segmentación de la imagen utilizando el
algoritmo de la transformada de Hough y posteriormente se extrae la parte del
iris para el cual la imagen deberá estar segmentada para aplicar nuevamente el
detector de Hough y después para realizar el reconocimiento se tendrá que
codificar el iris en código binario para realizar las comparaciones se utiliza la
distancia de haming. Se capturo la imagen del iris ocular de 10 personas lo cual
se puso en una base de datos y se evaluó la eficiencia y originalidad de cada
persona.
ix
Se concluye que, con el prototipo desarrollo de identificación biométrica de
personas por medio del reconocimiento del iris, se evita las suplantaciones en
exámenes, accesos a lugares restringidos, el uso de tarjetas bancarias entre
otras modalidades a lo cual se quiera una seguridad exclusiva. Con la prueba
de evaluación realizada a los usuarios se obtuvo un 100% de eficacia y
satisfacción considerándolo como aceptable.
Palabras claves: Algoritmo, biométrica, prototipo, distancia de Haming,
reconocimiento de iris, segmentación, transformada de Hough.
x
ABSTRACT
Biometrics is currently a hot topic studied by researchers, which is a technique
for recognizing people based voice, hand, face, fingerprint, retina, among other
features, however it is not very efficient because it is unambiguous, as it is very
common and does not guarantee to recognize the original person. It is for this
reason that in the present research develops a new methodology for the
recognition of people to be more effective in preventing spoofing and fixed main
objective is to develop a prototype for identifying persons through iris
recognition.
Has been used in the development of prototype waterfall methodology which is
based on capturing the iris image to a treatment that image, then the image
segmentation is performed using the algorithm of Hough transform and
subsequently extracted iris portion to which the image should be segmented to
reapply Hough detector and then to perform the recognition will have to encode
the binary iris code for comparisons Haming distance used. The image of the
eye iris of 10 people which was put into a database and the efficiency and
uniqueness of each person was evaluated was captured.
xi
We conclude that, with the prototype development of biometric identification of
individuals through iris recognition, impersonations in exams, access to
restricted areas, the use of bank cards and other modalities which wants, an
exclusive security is avoided. With the Assessment on users was obtained
100% efficiency and satisfaction regarding it as acceptable.
Keywords: Algorithm, biometrics, prototype, Haming distance, iris recognition,
segmentation, Hough transform.
xii
INTRODUCCIÓN
A lo largo de la historia el ser humano ha implementado distintos métodos para
reconocerse y poder distinguirse entre las demás personas. Entre los métodos
más usados se destacan: la altura, la forma de la cara, las huellas digitales, el
lóbulo de la oreja, entre otros, esto nace debido al interés natural del hombre
por querer proteger lo que le pertenece y mantener privacidad en sus acciones.
Es así como nace una ciencia en la cual fundamentos matemáticos y
características humanas llegan a mezclarse. A esto se le denomina Biometría.
Entonces, para realizar un estudio biométrico y el reconocimiento de una
persona, será necesaria una característica invariante a lo largo de su vida. A
este proceso se le conoce como el reconocimiento de patrones.
Es por esto, que el reconocimiento del iris es uno de los avances más
interesantes y confiable dentro del reconocimiento de personas. Este método
está desarrollado en cuatro capítulos:
En el primer capítulo se presenta el planteamiento del problema, objetivos,
hipótesis de la investigación.
En el segundo capítulo se presenta el marco teórico que consiste en:
antecedentes de la investigación, definición de términos básicos, marco
conceptual, operacionalización de variables.
xiii
En el tercer capítulo se presenta los métodos y materiales. En este capítulo se
presenta los principales temas concernientes al tipo y diseño de la
investigación.
En el cuarto capítulo se presenta los resultados y la discusión que es
fundamental para el desarrollo del prototipo de identificación de personas.
xiv
CAPITULO I
PLAN DE INVESTIGACIÓN
1.1 PLANTEAMIENTO DEL PROBLEMA
1.1.1 Formulación y Definición del Problema
En las últimas décadas ha surgido el tema de reconocer a las
personas por medio de técnicas biométricas basadas en voz, mano,
rostro, huella dactilar, oreja, retina, firma, forma de caminar, por lo
que según estudios estas técnicas no son tan eficientes para la
identificación de personas, por lo que se propone en esta
investigación es aplicar otra forma de identificar a una persona que
es el reconocimiento por iris ocular de una persona que es un tema
muy estudiado en la actualidad.
En los últimos años el reconocimiento de iris ha atraído la atención
de muchos investigadores, ya que una de las metas más importantes
que persiguen es comprender la forma y constitución del iris ocular
humano y las diferencias que existen entre ellas.
Numerosos enfoques han sido aplicados en la ejecución de este
proyecto, buscando la efectividad en el reconocimiento por medio de
iris ocular, gracias al desarrollo tecnológico se ha podido lograr. La
particularidad que tiene este órgano es que no solo es único para
cada individuo, sino que tiene una forma similar para todos los
1
individuos.
1.1.2 FORMULACIÓN DEL PROBLEMA
¿Será eficiente el desarrollo e implementación de un prototipo de re-
conocimiento de personas por medio del iris ocular, en evitar suplan-
taciones para cualquier medida de seguridad?
1.2 OBJETIVOS
1.2.1 Objetivo General
Desarrollar e implementar un prototipo eficiente para el
reconocimiento de personas por medio del iris ocular, para evitar
suplantaciones para todas las modalidades de seguridad.
1.2.2 Objetivos Específicos
Desarrollar el módulo para el pre procesamiento de imagen
Desarrollar el módulo para la segmentación de la imagen
Desarrollar el módulo para la Obtención del iris
Desarrollar el módulo de reconocimiento de iris
1.3 HIPÓTESIS
1.3.1 Hipótesis General
El prototipo de identificación de personas por medio del
reconocimiento del iris es eficiente en detectar suplantaciones en
los usuarios para todas las medidas de sefuridad.
2
CAPITULO II
MARCO TEÓRICO
1.4 ANTECEDENTES DE LA INVESTIGACIÓN
1.4.1 Antecedentes de Nivel Internacional
Baldo Romero Paulina y Garcia Molina Josue (2007).
“Autentificación Biométrica de Personas por medio de
Reconocimiento del Iris”. Tesis para Optar el Título de Ingeniero
en comunicaciones y Electrónica. México. Instituto Politécnico
Nacional de México.
Tiene por objetivo general Proponer un mecanismo eficiente
para la autenticación biométrica de personas basado en el
reconocimiento del patrón del iris. En este trabajo presenta el
desarrollo de una aplicación de software libre (Implementación en
plataformas de libre distribución) y de dominio público para la
autentificación biométrica de personas basada en reconocimiento
de iris. Con él se verifica la unicidad del patrón de iris del ojo así
como confiabilidad para usarse como técnica de autenticación
biométrica. Para evaluar el rendimiento de los algoritmos
implementados se hizo de una base de datos de imágenes
tomadas del iris de alrededor de 108 personas (756 imágenes),
donde verifican el rendimiento de esta aplicación.
3
1.4.2 Antecedentes de Nivel Local.
Cayo Cabrera Guido Humberto (2005). “Prototipo neurogenetico
aplicado en el reconocimiento de imágenes bidimensionales
estáticas: Rostros, Código de Barras y Firmas”. Tesis de Maestría
en Informática. Puno – Perú. Universidad Nacional del Altiplano.
Para la construcción del prototipo se ha considerado los
siguientes aspectos: modelo de neurona, arquitectura o topología
de conexión, y algoritmo de aprendizaje. Siendo la más óptima
por su simplicidad en el aprendizaje para la red, el modelo
supervisado unidireccional “BACKPROPAGATION-SUPERVISED
LEARNING”, ya que hace backtracking hacia la entrada una vez
que tiene los datos en la salida.Al igual que las redes neuronales,
los algoritmos genéticos también cuentan con la capacidad para
resolver un problema específico, pero a diferencia de los
parámetros-red, cualquier presentación puede ser expresada
como una cadena de palabras de longitud fija (genotipo) sobre
una finita (típicamente el binario) a ser usada. La interpretación
(es decir el phenotype) de cadenas (genotipo) no es relevante
para el algoritmo, inclusive si estos son: los parámetros de
diseño del motor de inferencia, la estrategia a utilizar o, en
cuanto a este proyecto, los pesos y vías de la red neuronal.Los
algoritmos genéticos son métodos sistemáticos para la resolución
de problemas de búsqueda y optimización, que aplican a estos
4
los mismos métodos de la evolución biológica: selección basada
en la población, reproducción sexual y mutación. Los algoritmos
genéticos son métodos de optimización, que tratan de resolver el
mismo conjunto de problemas que se ha contemplado
anteriormente, es decir, el objetivo es hallar (xi,.......,xn) tales
que F(xi,.....,xn) sea máximo. En un algoritmo genético tras
parametrizar el problema en una serie de variables, (xi,......,xn) se
codifican en un cromosoma. Todos los operadores utilizados por
un algoritmo genético se aplicarán sobre estos cromosomas, o
sobre poblaciones de ellos.
El proyecto permite analizar y decodificar mediante técnicas
inteligentes los medios de seguridad gráficos y obtener así la
recuperación y verificación de datos de una persona
garantizando un alto grado de eficiencia y certeza e la validación
de los datos. La realización del procesamiento de imágenes
consume demasiado recurso de memoria y tiempo de
procesamiento, motivo por el cual la ejecución de redes
neuronales sobre éstas implica optimizar el proceso de
aprendizaje de tal forma que se consiga una convergencia más
veloz. Las búsquedas de imágenes dentro de bases de datos
pueden simplificarse mediante el empleo del prototipo Híbrido
Neurogenético, ya que no necesariamente puede ser aplicado a
firmas personales sino también a otros patrones similares. La
5
técnica híbrida que se implementó en el prototipo fue de gran
utilidad demostrando una vez más las ventajas de combinar las
funcionalidades de dos técnicas de la Inteligencia Artificial, que
dieron como resultado sacar lo mejor de ellas en la
implementación del sistema.
BASE TEÓRICA
1.5 BIOMETRÍA
La biometría hace uso de las características únicas de una persona para
permitir su reconocimiento automático. Se han desarrollado sistemas
biométricos basados en las huellas dactilares, la voz, la fisiología de las
manos o la cara, la escritura, la retina o el iris (Wikipedia L. e., 2012).
En estos últimos años la biometría ha crecido exponencialmente. De usar
simplemente la huella dactilar, cuyos orígenes datan del siglo XIV en China,
se ha pasado a emplear muchos métodos distintos teniendo en cuenta varias
medidas físicas y de comportamiento.
A pesar de la diversidad de estos sistemas, el procedimiento es común a
todos. Primero se captura una muestra del rasgo estudiado, por ejemplo una
foto un color de la cara o una muestra de voz. De la muestra se extrae un
conjunto de datos de datos de interés, que luego son transformados,
mediante algoritmos matemáticos, en una plantilla biométrica. Esta plantilla
proporciona una representación normalizada del rasgo, que permite su
posterior comparación con otras plantillas pertenecientes al mismo o a otro
6
individuo.
El concepto biometría proviene de las palabras bio (vida) y metría (medida),
por lo tanto con ello se infiere que todo equipo biométrico mide e identifica
alguna característica propia de la persona (Sanchez, 2000).
La biometría es una tecnología de seguridad basada en el reconocimiento de
una característica de seguridad y en el reconocimiento de una característica
física e intransferible de las personas, como por ejemplo la huella digital.
1.6 EL IRIS HUMANO
El iris es la membrana coloreada y circular del ojo (Figura 1) que separa la
cámara anterior de la cámara posterior. Posee una apertura central de
tamaño variable que comunica las dos cámaras: la pupila. Corresponde a la
porción más anterior de la túnica vascular, la cual forma un diafragma
contráctil delante del cristalino. Se ubica tras la córnea, entre la cámara
anterior y el cristalino, al que cubre en mayor o menor medida en función de
su dilatación (Wikipedia L. e., 2012).
Figura Nº 01: Partes del ojoEl iris (Figura. 2) es la zona coloreada del ojo. En su centro se encuentra la
pupila, de color negro; la zona blanca que se encuentra alrededor se
denomina esclerótica.
7
Figura Nº 02: Detalle del iris
La utilización del iris para identificación biométrica se considera ideal por una
serie de razones:
Es un órgano interno, al estar protegido por la córnea. Esto hace que no
sea susceptible al daño puntual o al paso del tiempo como lo son por
ejemplo las huellas dactilares.
Visto de frente, el iris es prácticamente plano, y su configuración
geométrica circular sólo se ve modificada por dos músculos: el esfínter
del iris y el de la pupila. Por tanto, la forma del iris resulta mucho más
simple y tratable que la de por ejemplo, la cara.
La textura del iris se crea aleatoriamente durante la gestación. Incluso
gemelos genéticamente idénticos (poseedores del mismo ADN) tienen
iris diferente.
La toma de fotografías para el reconocimiento no requiere que la persona
toque ningún equipo.
8
1.7 PATRÓN DEL IRIS
Una propiedad que el iris comparte con las huellas dactilares es la morfología
aleatoria de su estructura. No existe alteración genética en la expresión de
este órgano más allá de su forma anatómica, fisiología, color y apariencia
general. La textura del iris por sí misma es estocástica o posiblemente
caótica. Pero el iris disfruta de ventajas prácticas adicionales sobre las
huellas dactilares y otras variables biométricas, como son:
La facilidad de registrar su imagen a cierta distancia, sin la necesidad de
contacto físico o intrusivo y quizás discretamente.
Estable y sin cambio durante el periodo de vida del sujeto, inalterable
durante toda la vida de la persona.
1.8 PROCESAMIENTO DE IMÁGENES POR COMPUTADORA
El procesamiento de imágenes es el conjunto de técnicas que se aplican a
las imágenes digitales con el objetivo de mejorar la calidad o facilitar la
búsqueda de información.
Las operaciones que se pueden realizar con imágenes se dividen en:
Operación de punto
Operaciones de entorno
Operaciones con dos o másimágenes
El procesamiento y análisis de imágenes digitales se aplican con el objetivo
de captar y manipular grandes cantidades de información espacial de
matrices de valores. Esta distinción sitúa al procesamiento y análisis de
9
imágenes digitales como una tecnología asociada a las Ciencias de la
computación (Daugman J. , 2000).
La secuencia típica de procesado de imágenes suele implicar los siguientes
pasos:
1. Captura de la imagen a partir del proceso físico que la genera mediante
el sensor adecuado.
2. Restauración y realce para reducir ruidos y mejorar su calidad.
3. Codificación, segmentación y extracción de propiedades.
El análisis humano de imágenes u objetos presenta dificultades, pues el
proceso de inspección visual consume una gran cantidad de tiempo y está
sujeto a interpretaciones incoherentes e incompletas. El procesamiento de
imágenes, que comprende la manipulación por ordenador de imágenes
reales, resuelve estos problemas al poder automatizar el proceso de
extracción de información útil de los datos de la imagen. Con el
procesamiento de imágenes, también se puede perfeccionar la imagen,
corregir distorsiones.
Uno de los más importante y sencillo preprocesamientos es la detección de
bordes. Importante porque de él se puede empezar a extraer importante
información de la imagen, como pueden ser las formas de los objetos que la
componen, y sencillo porque los operadores de detección de bordes son
simples máscaras de convolución.
10
La detección de bordes es a menudo el primer paso en la segmentación de
la imagen, que es un campo del análisis de la imagen, y se utiliza para
agrupar los píxelesen regiones para determinar una composición de la
imagen. La detección de bordestambién es usada en el registro de imagen,
el cual alinea dos imágenes que podrían seradquiridas en momentos
separados.
Los bordes de una imagen contienen mucha información de la imagen.
Losbordes cuentan donde están los objetos, su forma, su tamaño, y también
su textura.Los ejes o bordes se encuentran en zonas de una imagen donde
el nivel de intensidadfluctúa bruscamente, cuanto más rápido se produce el
cambio de intensidad, el eje oborde es más fuerte.
En el procesamiento de imágenes se utilizan diferentes técnicas para realzar
las propiedades de la imagen a fin de facilitar el proceso de segmentación, la
extracción de características y finalmente su interpretación.
Las técnicas de procesamiento de imágenes se pueden clasificar en:
Las procedentes del procesamiento de señales.
Las que mejoran algún aspecto de la imagen.
El proceso de muestreo es la tarea de discretización del escenario en el
plano sensor y estárelacionado con la resolución espacial de la imagen.
11
Figura Nº 03: Imagen tomada con diferentes resoluciones
1.8.1 La cuantificación
La cuantificación de la señal es el número finito de los valores de
intensidad de cada píxel. Se suele emplear un byte de cuantificación
por píxel, consiguiendo así 256niveles de gris. El 0 corresponde al
color negro y el 255 al blanco. Entre estos dos valores están los
distintos tonos de gris.
Para las imágenes en color, la cuantificación es vectorial; por cada
píxel se representan tres valores. Estos tres valores dependen del
sistema de representación del color: RGB (Red Green Blue), HSV
(Hue, Saturation, Value), HSI… Comúnmente se utiliza RGB con un
12
byte por cada color consiguiendo 256 niveles o 16 millones
decolores.
Figura Nº 04: Niveles de cuantificación de la señal de la intensidad luminosa
En las técnicas de procesado de las imágenes se trata el valor de la
intensidad de cada pixel hasta conseguir el resultado adecuado.
1.8.2 Imagen digital
Una imagen digital es una función f(x,y) que ha sido discretizada en
ambas coordenadas espaciales (x,y) y en el nivel de gris. Se
considera que el nivel de brillo mínimo equivale al negro, el máximo
al blanco y los valores intermedios son distintosniveles de gris que
varían del negro al blanco.
13
Principalmente, tenemos las siguientes características de una
imagen:
La resolución: La resolución de una imagen se refiere al número
de puntos porunidad de distancia que ésta tiene, de forma que a
mayor número de puntospor centímetro mayor resolución y más
definida estará la imagen.
La profundidad del color: La profundidad del color de una imagen
se refiere alnúmero de niveles de gris (o número de colores) que
empleamos pararepresentar la imagen. Un valor aceptable
podría corresponder con unaprofundidad de color de 8 bits,
equivalente a 256 distintos niveles de gris.
a) Binarización de una imagen
La binarización de imágenes es una tarea básica en muchas
aplicaciones de procesamiento digital de imágenes. El objetivo es
obtener una imagen que solo sea representada por dos tonos de
color, por lo general blanco y negro. La idea para realizar este trabajo
es sencilla, solo hay que decidir qué tono de color dar a cada píxel
que sea mayor que un determinado umbral (valor límite), el resto de
píxeles tendrán por defecto el otro tono de color.
La binarización de una imagen consiste en comparar los niveles
de gris presentes en la imagen con un valor (umbral)
predeterminado. Si el nivel de gris es menor que el umbral
14
predeterminado, se le asigna al píxel de la imagen binarizada el valor
0 (negro), y si es mayor, se le asigna un 1 (blanco). De esta forma se
obtiene una imagen en blanco y negro.
Generalmente se utiliza un umbral de 128 si se trabaja con 255
niveles de gris, pero en algunas aplicaciones se requiere de otro
umbral.
b) Histogramas de una imagen
El histograma de una imagen contiene la información de la
probabilidad de aparición de las distintas tonalidades de color que se
pueden dar en cada caso, ya que podemos trabajar en distintos tipos
de colores o en escala de grises. En el caso de una imagen en color,
no podemos hablar de un único histograma que caracterice a la
imagen, sino de tres histogramas, uno para cada color (RGB, por
ejemplo).
La creación de un histograma, en el caso de una imagen en
escala de 256tonalidades del blanco al negro (escala de grises), se
realiza fácilmente mediante medios informáticos, de manera que, en
primer lugar se crea un vector que contenga256 posiciones, una por
cada nivel de gris, el algoritmo recorrerá cada uno de los pixeles de
la imagen, aumentando en una unidad el valor guardado en la
posición del vector correspondiente al tono del pixel en cuestión.
15
Figura Nº 05: Imagen con su correspondiente histograma
El histograma proporciona una descripción de la apariencia
global de una imagen. De forma que si los niveles de gris están
concentrados hacia el extremo oscuro del rango de la escala de gris,
la apariencia global de la imagen será oscura, mientras que si
sucede justo lo contrario, la imagen correspondiente será brillante.
Por su parte, el histograma que presente un perfil estrecho
corresponderá a una imagen de bajo contraste y un histograma con
una dispersión considerable a una imagen de alto contraste.
En el caso de la imagen en color, aparecen tres histogramas,
de forma que el tratamiento de imágenes en color se complica por la
aparición de nuevos componentes. Ahora el histograma no contiene
los tonos del negro al blanco, sino del negro al color correspondiente
(rojo, verde o azul – caso RGB –). Al elaborar el histograma, el
algoritmo debe separar el color correspondiente a cada pixel en sus
componentes RGB (rojo, verde y azul).
16
Figura Nº 06: imagen con su correspondiente histograma RGB
Un histograma es un gráfico estadístico que permite
representar la distribuciónde intensidad de los píxeles de una
imagen, es decir, el número de píxeles quecorresponde a cada
intensidad luminosa. Por convención, el histograma representa
elnivel de intensidad con coordenadas X que van desde lo más
oscuro a lo más claro.
En general, se representa como un gráfico de barras en el que
las abscisas son los distintos colores de la imagen y las ordenadas la
frecuencia relativa con la que cada color aparece en la imagen. El
histograma proporciona información sobre brillo y el contraste de la
imagen, y puede ser utilizado para ajustar estos parámetros, eliminar
ciertas tonalidades molestas.
1.9 TRATAMIENTO DE IMÁGENES
El tratamiento o edición de imágenes digitales manifiesta una tendencia clara
al acercamiento entre el sistema vectorial (objetos) y el “raster” (pixeles). Una
17
muestra evidente son las transformaciones: Escalar, Rotar, Estirar, Sesgar,
Distorsionar, Perspectiva, Deformar.
1.9.1 Etapas para el tratamiento de imágenes
a) Adquisición
En esta etapa se adquirirá las imágenes mediante una cámara.
b) Procesamiento digital de Imágenes
En esta etapa se describirán algunos conceptos importantes sobre el
procesamiento digital de imágenes útiles para el desarrollo del
presente proyecto de investigación, ya que las imágenes que se
emplearan son de naturaleza totalmente digital.
El termino imagen se refiere a una función bidimensional de
intensidad de luz f(x,y), donde x , y denotan las coordenadas
espaciales y el valor de f en cualquier punto (x,y) es llamada
intensidad o nivel de gris de la imagen en ese punto.
Una imagen digital es una imagen f(x,y)que ha sido discretizada en
coordenadas espaciales y en intensidad. Una imagen digital puede
considerarse como una matriz cuyos índices de la región son filas y
columnas que identifican un punto en la imagen y el correspondiente
valor del elemento de la matriz identifica el nivel de intensidad de luz
en ese punto tal y como se muestra en la ecuación 1. Los elementos
de tal arreglo digital son llamados elementos de la imagen,
elementos de pintura o pixeles.
18
f ( x , y )=[ f (0,0) f (0,1) … f (0 , N−1)f (1,0 ) f (1,1) … f (0 , N−1)⋮
F (M−1,0)⋮
f (M−1,1)⋮
… f (M−1 , N−1)]…(1)
El nivel de brillo, o valor de cada pixel, es cuantizado a códigos
binarios enteros positivos. El número de niveles de cuantización está
determinado por la relación (2).
L=2B …(2)
Donde B representa el número de bits necesarios para cada muestra.
Esto es, con 6 bits de cuantización en la intensidad se pueden
representar 64 niveles de gris (26=64 ) .
Para tener una buena imagen de buena calidad para el ojo humano
es necesario tener como mínimo 64 niveles de gris(Gonzalez &
Woods, 2003). Para una apreciación fina se usa una cuantización
estándar de 8 bits, esto es, 256 niveles de gris. A una imagen
cuantizada de esta manera se conoce como imagen en tonos de gris.
Una imagen binaria es una imagen monocromática a 1 bits por pixel,
esto es, dos niveles, blanco o negro.
Como ya se dijo, el valor f, denotará el color, tono o nivel de gris de
un elemento de imagen (Pixel) en cierta coordenada (x, y). Un tono
muy claro (el más claro), denotará una cantidad de luz alta (tono
blanco), mientras que un tono muy obscuro (el menos claro),
denotará una cantidad de luz baja (tono negro).
19
c) Pre-procesamiento
Por lo general, cuando se trabaja con imágenes se debe realizar una
etapa previa llamada pre-procesamiento, ya que hay que considerar
ciertos factores que podrían afectar directamente en el éxito o el
fracaso de nuestro sistema de reconocimiento.
Por otra parte, el tamaño del iris generalmente varia en diferentes
imágenes debido a la contracción o a la dilatación del iris causada
por diferentes niveles de iluminación; también que se pueden tener
diferentes distancias entre el ojo y la cámara, rotación del ojo y otros
factores. Debido a todo esto, es necesario aplicar un procesamiento
a las imágenes antes de utilizarlas en las siguientes etapas del
proceso.
Estiramiento del histograma.- El método de Estiramiento de
Histograma se aplica con la finalidad de mejorar el contraste de
las imágenes, es decir, obtener imágenes que no sean ni muy
oscuras ni muy claras, ya que el contraste representa la diferencia
entre niveles de gris claros y oscuros de una imagen. Al aplicar la
función de mejoramiento de contraste sobre una imagen con poco
contraste, la imagen resultante obtiene una mejora en la
apreciación visual de la imagen, que se ve reflejada en una mayor
expansión de los valores a lo largo de todo el histograma. El
Histograma de una imagen digital con niveles de gris en el rango
20
[0, L-1] es una función discreta P®=nr donde r representa un nivel
de gris y nr representa el número de pixeles que tienen ese valor
de gris. Al proceso de extender los valores de los pixeles a lo largo
del histograma se le cono como estiramiento del histograma.
En lafigura 7 se muestra las formas de contraste en una imagen,
la cual nos muestra el problema que pueden tener las imágenes
originales si no tienen un buen contraste.
Figura Nº 07: Histogramas que ejemplifican el problema de contraste en una imagen
La expresión empleada en el mecanismo del estiramiento del
histograma se muestra en la expresión (3)
pixelSalida=( L−1 ) ( PixelEntrada−NivelMin )
( NivelMax−NivelMin )… (3 )
Dónde: L-1 es el nivel máximo permitido de un pixel y determinado
por el número de bits por pixel. L son los niveles de gris.
PixelEntrada es el tono de gris del pixel a modificar. PixelSalida es
el tono de gris del pixel modificado. NivelMax es el tono máximo
21
existente en la imagen de entrada. NivelMin es el tono mínimo
existente en la imagen de entrada.
El algoritmo que empleamos para la implementación se muestra
en la figura 8.
Como se puede observar en la figura 4 el estiramiento del
histograma consiste en que a partir de la matriz de pixeles que
trae implícitamente la imagen se obtiene su histograma, el cual es
una representación del número de pixeles que tienen un
determinado valor de 0 a 255, donde 0 representa el negro y 255
representa el blanco. Este primer resultado nos puede arrojar por
resultado una imagen muy clara o una imagen muy oscura. Aquí
es donde se aplica el módulo de estiramiento de histograma, que
distribuye los pixeles en todo el rango de 0 a 255 para obtener una
imagen con un mejor contraste.
Figura Nº 08: Algoritmo para el estiramiento de histograma
22
Ecualización.- Este es otro mecanismo de pre-procesamiento que
al igual que el anterior va a generar la mejora del contraste de las
imágenes obtenidas de la Base de datos.
La ecualización permite adoptar el mismo número de muestras
para cada valor de pixel, y esto se logra a través de la obtención
del histograma de las imágenes a analizar. Consiste en encontrar
una transformación en la cual el histograma tenga una
representación uniforme, es decir, con la ecualización trataremos
de igualar lo más posible el histograma de una imagen al
histograma ideal.
Considerando funciones de tipo continúo y sea r la variable que
representa los niveles de gris de la imagen. Primeramente
asumimos que nuestro histograma ha sido normalizado en el
intervalo [0,1], donde r=0 representa el negro y r=1 el blanco.
Figura Nº 09: proceso de ecualización de histograma
23
Filtrado Espacial.- Este método de pre-procesamiento de
imágenes se basa en la operación de convolución, utilizando una
máscara que consiste en una matriz cuadrada de dimensiones m x
n impares. De esta manera, se realiza la convolución entre la
máscara y matriz de pixeles de la imagen que se está analizando.
Con este proceso se genera una nueva matriz con características
mejoradas que ayudaran a mejorar los resultados de los módulos
posteriores como la segmentación y la codificación.
Es importante mencionar que dependiendo de los valores que se
coloquen en la máscara es el resultado que se va obtener a partir
de la convolución, por ejemplo, se pueden detectar bordes
verticales, horizontales o diagonales u obtener los valores
promedio de la matriz, entre otros resultados. Esta máscara se
escoge a partir del resultado que deseamos obtener. El proceso
de convolución se ejemplifica en la figura 10.
Figura Nº 10: Proceso de convolución.
24
1.9.2 Segmentación
La segmentación es una etapa imprescindible en diversos procesos
de tratamiento de imágenes y se puede decir que es el proceso que
consiste en subdividir o particionar una imagen en sus regiones,
componentes, partes u objetos. También puede ser definida como el
encontrar, por medio de un algoritmo numérico, sus regiones
homogéneas y sus bordes. La segmentación automática de
imágenes es, en general, una de las tareas más difíciles de realizar
en el análisis de imágenes debido a que tiene una influencia
determinante en el correcto desempeño del mecanismo de
reconocimiento. (Sossa, 2006)
Para llevar a cabo la segmentación pueden usarse índices visuales,
que son partes locales de un objeto, con significado y que pueden
ser detectados. Estos tiene significado porque se encuentran
asociados con algún elemento interesante de la escena al momento
de obtener la imagen del objeto y al ser detectables implica que debe
existir al menos un algoritmo para su localización, ya que de otra
manera dichos índices visuales no serían útiles.
Para este proyecto, la segmentación es la etapa donde se localiza la
imagen del iris. La etapa de segmentación es muy importante ya que
si el iris nos es localizado correctamente las etapas posteriores
utilizaran datos erróneos, por lo tanto el código generado contendrá
errores y el rendimiento de sistema será muy bajo.
25
Existen diferentes mecanismos de segmentación con distintos
niveles de dificultad, entre lo que podemos mencionar:
Umbralización.
Detección de Bordes
Detección de Regiones.
Clustering.
Segmentación de Texturas.
Morfología Matemática.
Redes Neuronales.
A continuación se describen algunos de estos métodos:
Umbralización.- La forma más sencilla de segmentar una
imagen es en el caso de que los distintos objetos se caractericen
por niveles de gris diferentes. Para ello se puede emplear el
histograma que indica el número de puntos en la imagen que
posee un determinado nivel de gris. La umbralización a partir de
histogramas consiste en elegir el punto de nivel de gris que
separa los valores correspondientes al objeto y al fondo. En este
método, a partir del lóbulo principal, es decir, del valor máximo,
se Además del cálculo de histogramas, existen otras técnicas
para calcular el umbral, tales como como, el ajuste del lóbulo
principal, método de la máxima distancia, entropía y el algoritmo
Isodata.
26
Detección de Bordes.-Un borde en una imagen es un cambio
local significativo, normalmente asociado con una discontinuidad,
ya sea en la imagen de intensidad o la primera derivada de dicha
imagen (Sossa, 2006). La detección de bordes consiste
básicamente en realizar la operación de Convolución
Bidimensional entre la matriz de pixeles de la imagen original y
ciertas máscaras previamente establecidas y posteriormente se
realiza el cálculo del gradiente digital de la imagen, así como el
Angulo.
Para detectar los bordes, se calcula el modulo del gradiente obtenido
en cada pixel de la imagen. Como resultado, se verá que los valores
grandes corresponden a pixeles del borde, dado que un pixel
pertenece a un borde si se produce un cambio brusco entre niveles
de grises con sus vecinos. Este tipo de filtro es el recomendado, a
falta de información del tipo de ruido que afecta a una imagen. Esta
etapa de suavizado debe llevarse a cabo de manera gradual ya que
de realizarse de manera excesiva, se podrían perder detalles
importantes de la imagen (y por consiguiente de la región de iris) y de
gran importancia en este trabajo. Este suavizado se obtiene
promediando los valores de intensidad de los pixeles en el entorno
de vecindad con una máscara de convolución de media cero y
desviación estándar σ.
27
Sea f(x,y) una imagen corrompida con ruido y sea h(x,y) un filtro
gaussiano con media cero y desviación estándar σ, σ determina el
tamaño del filtro y es seleccionado con base en el nivel deseado de
detalle (bordes finos o gruesos) y en el nivel de ruido contenido en la
imagen, calculado mediante la ecuación:
h ( x , y )= 12 π σ2 e
− x2+ y2
2σ 2
Mascaras de Sobel. La convolución se realizará con las
siguientes máscaras de 3 x 3 en la dirección x y en la dirección y,
las cuales se muestran en las matrices 5 y 6.
x=⌈−1 −2 −10 0 01 2 1
⌉ ... (5)
y=⌈−1 0 1−2 0 2−1 0 1
⌉…(6)
Mascaras de Prewitt. Es el mismo caso anterior, solo que las
máscaras 7 y 8.
x=[−1 −1 −10 0 01 1 1 ] …(7)
y=[−1 0 1−1 0 1−1 0 1]…(8)
28
Laplaciano. En este caso se utiliza la misma mascara para las
componentes X y para las componentes Y, mostrada en la matriz
(9).
x , y=[0 1 01 −4 10 1 0 ]…(9)
Segmentación de Texturas. Se puede decir que una
característica de textura de una imagen es un valor que
cuantifica alguna característica de la variación de la variación del
nivel gris del objeto a segmentar en base a una disposición
geométrica específica. Para segmentar una imagen de textura
buscamos una característica que defina la textura, que tendrá
valores diferentes en cada una de las texturas de la imagen. De
esta forma, calculamos una imagen nueva, en la que el valor en
cada pixel corresponde al valor del parámetro en ese punto.
Existen dos tipos de métodos para el análisis de texturas:
Estadísticos. Basados en el histograma a partir de la media, la
desviación o varianza de los niveles de gris. También se utiliza la
matriz de co-ocurrencia, que mide la probabilidad de que dos
pixeles a una distancia determinada tengan el mismo valor.
Espectrales. Basados en el cálculo de la transformada de
Fourier.
29
1.10 FUNCIONES PARTICULARES.
En algunos puntos del desarrollo, se necesita el uso de alguna funcionalidad
los cuales se detallan a continuación:
1.10.1 Detector circular de Hough.
La transformada de Hough es un algoritmo estándar en la visión por
computador, usado para determinar los parámetros espaciales de
objetos de diversa forma que estén incluidos dentro de una imagen
(Wikipedia, Hough_transform). Esta transformada se puede utilizar
para detectar automáticamente las coordenadas y el radio del iris y
de la pupila.
El proceso básico de detector de Hough empieza partiendo de la
imagen completa del ojo, sobre la que se aplica inicialmente algún
algoritmo de detección de contornos, como por ejemplo el detector
de Canny (Wikipedia, Canny_edge_detector). La figura 11 muestra
un ejemplo de la capacidad de este detector.
30
Figura Nº 11: Detector de contornos Canny
A partir de la imagen de contornos, se procede a crear el llamado
espacio de Hough, que contiene círculos que pasan sobre cada
punto de contorno (figura 12). Estos círculos se definen con la
ecuación general:
x2 + y2 –r2 =0
Siendo x e y las coordenadas del centro de circulo, y r el radio. Una
vez creados todos los círculos posibles, el máximo dentro del espacio
de Hough proporciona el círculo mejor definido.
Figura Nº 12: Cada punto de contorno (Izq.) en la imagen real sirve de centro para un círculo creado en el espacio de Hough (Der)
1.10.2 Transformada de Gabor
La aplicación de wavelets de Gabor es el tratamiento matemático que
se le dará a la información de iris para convertirla en plantilla
biométrica. Este método es el elegido por Daugman en su
implementación (J.Daugman, 2004).
31
Para aplicar este método, se debe partir de la información del iris en
su forma normalizada. Un iris normalizado forma una matriz 2D como
se muestra en la figura 13.
Figura Nº 13: Resultado de normalización de un iris. A la derecha, la matriz 2Dresultante
Una vez normalizado el iris, el siguiente paso consiste en aplicar
wavelets Gabor. Estos wavelets están formados por dos
componentes:
Una onda sinusoidal compleja definida por la ecuación:
s ( x , y )=ej(2 π (u0 x+v0)+ p)
Donde u0 y vo representan la frecuencia horizontal y vertical de la senoide respectivamente, y P representa un cambio de fase arbitrario,
Y una gaussiana (figura Izquierda 14), definida por la ecuación:
32
Esta composición forma una onda wavelet como la mostrada en la
figura 14 derecha.
Estas wavelets se van aplicando sobre cada una de las filas de la
matriz 2D anterior. Como el filtro Gabor es una función compleja, se
obtiene 2 bits de información por cada bit analizado,
correspondientes a la información de fase y de orientación de cada
pixel (Wikipedia, Gabor_filter).
Figura Nº 14: Curva gaussiana Fig. (izq.) – Wavelet gabor resultante Fig.(der)
La figura 15 es un ejemplo de resultados obtenidos tras aplicar
wavelets Gabor sobre un iris normalizado.
Esta información obtenida es la que formará finalmente la plantilla
biométrica, válida para ser comparada con otras plantillas.
Figura Nº 15: Resultados tras wavelets Gabor: parte real de la plantilla
33
1.11 MARCO CONCEPTUAL.
Algoritmo.-Son métodos matemáticos aplicados para solucionar un
problema específico.
Escala de Grises.- La representación de una imagen de grises es la
representación de color uniforme sin variación en el RGB, haciendo que le
color tanto para el rojo, verde, azul sean uniformes y tengan el mismo valor
para cada uno de los colores, y de esa manera hacer la representación en
mismo color en tonalidades de color.
Extracción de Características.-Es el proceso de generar características
que puedan ser usadas en el proceso de clasificación de los datos. En
ocasiones viene precedido por un pre-procesado de la señal, necesario para
corregir posibles deficiencias en los datos debido a errores del sensor, o bien
para preparar los datos de cara a posteriores procesos en las etapas de
extracción de características o clasificación.
Las características elementales están explícitamente presentes en los datos
adquiridos y pueden ser pasados directamente a la etapa de clasificación.
Las características de alto orden son derivadas de las elementales y son
generadas por manipulaciones o transformaciones en los datos.
Pixel.- Es la representación de un punto en pantalla perteneciente a una
imagen, asignándole el color por medio de un RGB (Red, Green, Blue).
Reconocimiento.- Comprende en comparar la imagen facial capturada con
imágenes que han sido guardadas en una base de datos.
34
1.12 OPERACIONALIZACIÓN DE VARIABLES.
VARIABLE INDICADOR MEDICIÓN.
Prototipo de
identificación de
personas por medio
del iris ocular.
Adquisición de Imagen Excelente
Buena
Regular
Mala
Pre – procesamiento de imagen
Segmentación
Obtención del Iris
Reconocimiento (Técnicas de Daugman)Efectivo
No Efectivo
35
CAPITULO III
METODOS Y MATERIALES
1.13 Tipo de Investigación
El tipo de investigación al que corresponde el presente trabajo de
investigación es explicativa, porque centran su interés en las causas,
orígenes o principios que producen determinados fenómenos, hechos o
comportamientos.
1.14 Diseño de estudio
El objeto de estudio será la imagen del iris ocular en formato polar, a la cual
se le aplicara técnicas de Daugman para el reconocimiento luego de haber
pasado por las fases: Adquisición de las imágenes, pre-procesamiento,
segmentación, codificación.
1.15 Población
Nuestra población es infinita debido a la propiedad de universidalidad del iris
(puede ser reconcentrada en cualquier individuo).
1.16 Métodos de recopilación de datos
Los datos para desarrollar el prototipo de identificación biométrica de
personas por medio del reconocimiento de iris, se hizo con la captura de
imágenes del iris de los usuarios en forma directa.
36
1.17 Metodología para el reconocimiento de iris
Para desarrollar el prototipo de identificación de personas por medio del iris
ocular, se representa esquemáticamente en la figura 16, donde en la primera
etapa, se adquiere la imagen del iris de la persona a ser reconocida. Luego,
la imagen digital es procesada para localizar el iris en la misma y normalizar
su tamaño. En tercer lugar, la información contenida en el patrón de iris es
extraída y un código asociado con el iris generado. Finalmente, en la etapa
de comparación, se decide, en base al porcentaje de similitud obtenido, si los
códigos comparados fueron generados por el mismo iris, o sea, por la misma
persona, o no.
Figura Nº 16: Diagrama de bloques del sistema de reconocimiento del iris
En general, los sistemas de reconocimiento de personas pueden ser
utilizados en dos modos de funcionamiento diferentes, Autentificación e
Identificación, Figura 17. En el primero, el código de iris se compara con el
código asociado a la identidad proclamada por la persona, y se decide si
estos códigos han sido generados por el mismo iris o no.
En el segundo, el código de iris ha de reconocer es comparado con una base
37
de datos para comprobar la identidad de la persona.
Figura Nº 17: Sistema de reconocimiento: Autentificación y Identificación
1.17.1 Desarrollo Organización del proyecto
El proyecto se plantea bajo un sistema básico de reconocimiento de
iris, en líneas generales las siguientes fases.
FASES:
Los puntos generales para la consecución del proyecto son los
siguientes:
38
A su vez, estos puntos pueden expandirse o desglosarse en varias
subcategorías.
a) Análisis de los requisitos
En esta fase se detalla los módulos que se desarrollaran para el
funcionamiento completo de la aplicación.
Al ser ésta una aplicación de identificación biométrica, el prototipo va
a seguir un orden secuencial genérico:
Esta secuencia de acciones se puede simplificar si tomamos como
referencia el punto de vista del usuario, ya que las tres primeras
etapas se pueden concentrar en una sola:
39
1 Análisis de los requisitos
2 Análisis de tecnologías
3 Implementación
4 Pruebas
5 Documentación
Comparacion con otra plantilla
Transformación en plantilla biometrica
Extracción de los datos de interes
Obtención de la muestra
b) Análisis de tecnologías
Una de las principales motivaciones para crear este proyecto fue el
deseo de ampliar de alguna manera los contenidos y problemas
aprendidos en la asignatura de Visión Artificial, tanto en las clases
teóricas como en las prácticas. Debido a esto, el software utilizado
para desarrollar y ejecutar la aplicación es Matlab como lenguaje de
programación, ya que aprovecha los conocimientos de tratamiento de
imágenes por computador, dicho lenguaje posee diversas librerías
muy útiles en el campo del tratamiento de imagen.
También se puede utilizar otros lenguajes de programación para el
tratamiento de imágenes, donde se menciona alguno de ellos:
Python.- Este lenguaje en Visión Artificial es agradable para el
desarrollador, ya que proporciona un buen rendimiento, además de
ser soporte para algunas librerías muy útiles en el campo del
tratamiento de imagen.
40
Comparacion con otra plantilla
Transformación en plantilla biometrica
Extracción de los datos de interes
Obtención de la muestra
Creación de la plantilla
Comparación con otra plantilla
OpenCV.- La Open-Source Computer Vision, es una librería de
funciones para la visión por computador, desarrollada originalmente
por Intel. Contiene más de 500 funciones que pueden ser utilizadas
en infinidad de áreas, como el reconocimiento facial o de objetos, o la
visión robótica.
Numpy.- Debido a que Python corre sobre una máquina virtual,
algunos algoritmos corren más lentamente que sus equivalentes
compilados. Numpy ofrece soporte para matrices multidimensionales
y funciones que operan en matrices, y hace que las operaciones en
estos tipos de datos sean prácticamente tan rapidos como el código
equivalente en C. Este beneficio se hace patente en el tratamiento de
imágenes como matrices bidimensionales.
Scipy.- Librería científica, complemento a Numpy, proporciona
algoritmos como la transformada de Radon. Utiliza como tipo de dato
básico el array definido en Numpy.
c) Implementación
En esta fase para desarrollar el prototipo de reconocimiento de
personas por medio del iris ocular el proceso se cumplen las
siguientes etapas:
1. Adquisición de imagen
2. Segmentación
3. Obtención del iris
4. reconocimiento.
41
d) Prueba.
Para realizar una correcta identificación, se necesita realizar las
pruebas del algoritmo en una imagen y realizar la comparación con la
plantilla de imágenes.
42
CAPITULO IV
RESULTADOS Y DISCUSIÓN
1.18 ANALISIS DE REQUISITOS
1.18.1 CREACIÓN DE LA PLANTILLA - OBTENCION DE LA MUESTRA
Para realizar una correcta identificación, se necesito partir de una
buena imagen de muestra. Este primer paso fue vital para el resto de
etapas del algoritmo, ya que trabajar sobre una muestra de mala
calidad pudo falsear los resultados o incluso hacer que fuera
imposible obtenerlos.
Fueron varios los factores que entraron en juego a la hora de calificar
la calidad de la muestra. Principalmente, se debió asegurar una
resolución tal, que permita reflejar perfectamente la fisonomía del iris
y sus pliegues internos, puesto que esta región constituyo la zona de
interés que se extrajo en la siguiente fase. Así mismo, la muestra
debió mantener los niveles de ruido lo más cerca del mínimo posible,
siendo únicamente admisible el ruido inherente a la zona del ojo
humano, esto fue, el ruido creado por pestañas o parpados.
1.18.2 CREACIÓN DE LA PLANTILLA – EXTRACCIÓN DE LOS DATOS
DE INTERÉS
Dado que la información estuvo únicamente situada en la zona del
iris, el objetivo de este módulo fue localizar y aislar esa zona de
información. Además, se elimino el ruido que podria existir, como por
43
ejemplo las oclusiones del iris causadas por pestañas o parpados.
Eliminar todo el ruido posible fue básico para no introducir
información errónea en el proceso de creación de la plantilla
biométrica.
En la figura 18 se representa los requisitos del módulo que a su vez
se dividió en dos sub módulos:
Figura Nº 18: Modulo de extracción de datos de interés
Iris: Localizar iris y pupila
En esta parte, el programa debió localizar las coordenadas
espaciales del iris. Además, debió localizar también la pupila, ya que
al estar incluida dentro de la circunferencia que crea el iris, se tuvo
que extraer y tratar como ruido.
Ruido: Localizar párpados y eliminar ruido general
Una vez que se tuvo la ubicación del iris, eliminarse el ruido
existente. Por una parte, se debió detectar si la zona del iris esta
44
tapada por algunos parpados, para marcar la zona ocluida como
ruido. Para terminar, se debió eliminar también todos los elementos
susceptibles de fueron considerados como ruido. En esta categoría
se pudieron incluir las pestañas, puesto que fue típico que tapen una
(mínima) parte de la región del iris, y los reflejos de luz del sol o del
flash de cámara en ese momento de tomar fotografía.
1.18.3 CREACIÓN DE LA PLANTILLA – Transformación de datos en
plantilla biométrica
Una vez que fue situada y libre de ruido la región del iris, el siguiente
paso fue realizar la transformación en plantilla biométrica. Esta
plantilla fue obtenida aplicando algún tipo de tratamiento matemático
sobre la información contenida en el iris. Sin embargo, esta región
necesitaba preparación previa.
Normalizar
Un paso previo imprescindible es la normalización del iris. Al
comparar imágenes de esta naturaleza, fue necesario transformar la
región de iris a unas dimensiones fijas, para permitir comparaciones.
Así, se evitan las diferencias producidas por la posición del ojo y la
dilatación puntual de la pupila.
Además de estas diferencias principales, puedieron existir otras,
como por ejemplo por la inclinación de la cabeza, la iluminación o la
distancia en el momento de tomar la foto.
Aplicar tratamiento matemático
45
Una vez normalizado el iris, fue procede a tratar matemáticamente la
información.
Figura Nº 19: Módulo de transformación en plantilla biométrica
1.18.4 COMPARACIÓN DE PLANTILLAS BIOMÉTRICAS
Este módulo de la aplicación se encargara de comparar dos plantillas
biométricas (figura 20) y emitir una resolución, concluyendo si
pertenece o no a la misma persona.
Figura Nº 20: Módulo de comparación de plantillas biométricas
46
1.19 IMPLEMENTACIÓN
Es preciso destacar que para desarrollar el prototipo de reconocimiento de
personas por medio del iris ocular el proceso se divide en varias etapas:
1. Adquisición de imagen
2. Segmentación
3. Obtención del iris
4. Reconocimiento
1.19.1 ADQUISICIÓN DE LAS IMÁGENES
En esta etapa secaptura una imagen de la capa arbórea del iris en
blanco y negro, en un entorno correctamente iluminado, usando una
cámara de alta resolución.
Primero, es deseable adquirir imágenes del iris con resolución
suficiente y agudeza para obtener un buen reconocimiento. Segundo,
es importante tener un buen contraste en el modelo del iris interior
sin acudir a un nivel de iluminación que incomoda al usuario. Tercero,
estas imágenes deben idearse bien (por ejemplo, centradas).
Existen distintos sistemas de adquisición de imágenes, la mayoría de
ellos utilizan cámaras de video y sistemas de iluminación
sofisticados. En este trabajo de investigación se propone un sistema
de adquisición de imágenes de bajo costo basado en una cámara
digital convencional. En la figura se representa un esquema del
sistema de adquisición propuesto.
47
Esquema del sistema de adquisición propuesto
Figura Nº 21: Imagen captura por el computador
1.19.2 SEGMENTACIÓN
La segmentación de la imagen consiste en encontrar los parámetros
que determinan la ubicación, la forma y tamaño del iris dentro de la
imagen capturada. Con el fin de analizar la textura del iris humano
automáticamente, es necesario identificar en la imagen la región que
contiene el iris y separarla de otros elementos de la imagen que no
contienen información relevante, como la pupila, párpados y
pestañas.
a) Modelando el iris y la pupila
Para localizar el iris y la pupila, es necesario modelar ambos
elementos de alguna forma. Lo más común es representar tanto el
iris como la pupila como dos círculos casi concéntricos, con lo cual el
resultado de la segmentación será los parámetros de ambos círculos.
Un circulo cualquiera puede ser expresado con tres parámetros: las
coordenadas de su centro y su radio r, así que la segmentación
deberá encontrar un total de seis parámetros: tres para el circulo de
la pupila y tres para el círculo del iris.
48
También se puede representar al iris y la pupila como dos elipses,
con lo cual la cantidad de parámetros a encontrar asciende a 10 ya
que la elipse se define mediante 5 parámetros (dos longitudes para
sus ejes, el centro de la elipse y el ángulo de rotación). Esto provee
una representación más exacta para el iris y la pupila, pero al ser
necesario más parámetros, los tiempos de ejecución de los
algoritmos aumentan notablemente. Además, la ventaja de utilizar
elipses en vez de círculos para representación no resulta ser muy
significativa, ya que tanto el iris como la pupila son casi
perfectamente circulares.
Interesa entonces el problema de detectar círculos en la imagen.
Para esto, existe principalmente dos algoritmos utilizados por los
sistemas de reconocimiento de iris: el operador integro – diferencial y
la detección por transformada de Hough.
Operador integro-diferencial
El operador integro-diferencial fue propuesto por Dougman1en su
sistema original de reconocimiento de iris. La base del operador
consiste en detectar cambios bruscos en el tono de gris a lo largo de
circunferencias en la imagen, con la idea de que un cambio brusco
se traduce en un máximo en la derivada de los tonos de gris de las
circunferencias centradas en el punto (xo, yo).
1High confidence visual recognition of persons by a test of statistical Independence, IEEE Transactions on Pattern Analysis and Machine Intelligence 15 (1993), no. 11, 1148-1161.
49
La expresión del operador para encontrar el círculo de centro (xo, yo)
y radio r en la imagen I es la siguiente:
Dónde:
- s representa el contorno sobre el cual se hace la integración, en
este caso, un contorno circular dado por el centro (xo, yo) y el
radio r.
- Gσ (r ) es una función Gaussiana que define el nivel de detalle en
el que se trabaja: mientras más precisión se desea, menor será
el parámetro de suavización σ .
Este operador funciona iterativamente, buscando primero una
aproximación y luego obteniendo resultados más precisos. La
cantidad de niveles de detalle puede ser ajustada para que el
operador trabaje en forma más veloz.
Una propiedad importante de este operador es que se puede
generalizar para detectar otros tipos de curvas parametrizables.
Cambiando el contorno s de una circunferencia a una parábola, es
posible construir de manera similar un detector de parábolas, que
luego puede ser utilizado para detectar los parámetros de los
parpados.
50
Operador integro-diferencial
La mayoría de los trabajos utilizan la transformada circular de Hough
para detectar los parámetros de la pupila y el iris en forma
simultánea2.
Este método es común en el ámbito de procesamiento de imágenes
principalmente para encontrar curvas parametrizables en imágenes.
Se comienza creando una imagen binaria, B, aplicando un detector
de bordes a la imagen original. Luego, cada punto perteneciente a un
borde suma “votos” en cada curva que pase por dicho punto.
Para segmentar el iris o la pupila, se suele utilizar el detector de
bordes de Canny, y a veces el mismo es ajustado para detectar los
bordes verticales. Esto tiene doble ventaja: por un lado, los bordes,
los bordes horizontales del iris suelen estar ocultos por los parpados,
y por otro lado, los bordes de los parpados no aparecen en la imagen
resultante ya que es de esperar que los mismos aparezcan en forma
horizontal en la imagen. Se define entonces la función C como:
C ( xc , yc , x , y , r )={1 Si lacircunferenciade radior y centro ( xc , yc ) pasa por el pixel ( x , y )0 sino
Una vez calculados los bordes, se crea un espacio discretizado
tridimensional H que va a acumular los votos para cada uno de los
2L. Masek, Recognition of human iris patterns for biometric identification, Master’s thesis, School of Computer Science and Software Engineering, University of Western Australia, 2003
51
tres parámetros (xc , yc , r) del círculo. Así, se define H de la siguiente
manera:
H ( x , y , r )= ∑(xc , yc)∈ B
C( xc , yc , x , y , r )
Finalmente, los parámetros xc , yc yr del círculo están dados por:
arg max H (xc , yc , r )( xc , yc ,r )
En forma similar, la transformada de hough se puede modificar
fácilmente para detectar parábolas en vez de círculos, con el fin de
segmentar los parpados.
Sin embargo, este método presenta algunos problemas:
1.- El resultado de la transformada de Hough está condicionado por
los parámetros del algoritmo de detección de bordes. En el caso de
las imágenes del iris, es necesario ajustar los parámetros de este
algoritmo de forma tal que los círculos de la pupila y el iris se
encuentren bien marcados en la imagen resultante.
2.- Dichos parámetros son poco flexibles: si existe una modificación
en las condiciones de captura, el detector de bordes puede dar
muchos falsos positivos. Con parámetros incorrectos es normal que
la imagen resultante o bien no contenga ningún borde útil, o bien,
más comúnmente, que se encuentren demasiados bordes en la
imagen. Esto último es producto de la naturaleza misma del iris, que
52
tiene patrones complicados que pueden aparecer en el algoritmo de
detección de bordes.
3.- El tiempo de procesamiento del algoritmo es directamente
proporcional a la cantidad de puntos de borde detectados en la
imagen. Si la imagen tiene muchos bordes, como suelen aparecer en
las pestañas y los parpados cuando la imagen está bien enfocada, el
algoritmo resulta muy lento.
4.- una imagen con demasiados bordes ocasiona tanto una
degradación en el tiempo de ejecución de la transformada de Hough
como en el resultado de la misma (es posible que se encuentren
“círculos” que en realidad no existen, por lo que es necesario recurrir
a heurísticas que permitan comprobar si un circulo detectado
realmente se corresponde con la pupila o el iris).
b) Segmentación de la pupila
La pupila se distingue fácilmente en la imagen como un círculo
negro, en la figura 22, las imágenes c y d corresponden al mismo ojo.
Se puede ver como varia el tamaño de ojo en función de la distancia
a la cámara, y el diámetro de la pupila por motivos naturales.
Figura Nº 22: Capturas típicas del iris humano
53
En la figura 23: (a) Extracción de un aro de la imagen, se puede ver
en amarillo de un aro de la imagen a extraer, rodeando el círculo de
la pupila (en rojo).
(b): efecto de considerar a la pupila como un círculo: en algunos
casos, la pupila no es perfectamente circular, por lo que al utilizar un
modelo circular de segmentación algunas partes de la pupila son
consideradas parte del iris
(a) (b)
Figura Nº 23: Segmentación de la pupila
c) Segmentación del iris
Una vez localizada la pupila, el iris es relativamente fácil de ubicar ya
que es casi concéntrico al círculo de la pupila (aunque este último
54
suele poseer una desviación hacia el lado de la nariz respecto al
círculo del iris).
1.19.3 OBTENCIÓN DEL IRIS
a) Extracción de la zona de interés
El objetivo principal de este módulo es localizar exactamente la
situación del iris, el cual el detalle del proceso a seguir es:
Carga y redimensión
El proceso comienza cargando la imagen indicada por el usuario. A
continuación, se redimensiona la imagen a un tamaño del 25% de
original. Esta reducción de tamaño, de 320x280 a 80x70, es útil para
aumentar el rendimiento del detector circular de Hough.
Figura Nº 24: Redimensión de la Imagen
Tratamiento previo a la detección de contornos. (Figura 25)
55
El primer paso consiste en aplicar un suavizado Gaussiano a la
imagen, con el fin de eliminar los bordes e irregularidades menores y
mantener únicamente los contornos fuertes.
El segundo paso consiste en hacer una corrección del contraste, una
práctica común en el tratamiento de imágenes, que nos sirve para
corregir en la medida de lo posible una iluminación irregular.
Figura Nº 25: Imagen Original (Izq), Imagen con tratamiento previo (Der)
Detección de contornos
Después del tratamiento previo, ya se puede aplicar un algoritmo que
nos proporcione la imagen de contornos. Por los resultados y el
rendimiento, se decide aplicar el método de Canny Edge para
resaltar los contornos.
56
Figura Nº 26: Imagen de contornos resultante de la aplicación de Canny Edge
Detección de la región de iris mediante Hough
La imagen de contornos se pasa como parámetro a la función
detector de Hough. Esta función localiza el iris dentro de la imagen y
retorna sus coordenadas espaciales: centro y radio.
Extraer la región del iris
Una vez localizado el iris, el siguiente paso es localizar la pupila.
Para ello resulta necesario volver a aplicar el detector de Hough,
pero con la ventaja de que esta vez no se aplica sobre toda la
imagen sino sobre la región del iris que justo se ha encontrado en la
figura 27, ya que aprovechamos el hecho de saber que la pupila está
incluida en esa zona.
Figura Nº 27: Región de la pupila obtenida a partir de la región del iris
57
Histograma
El histograma de una imagen es la representación de cómo se
reparten los niveles de intensidad en una imagen. Es una
herramienta que se puede utilizar para ayudar al detector circular de
Hough en el momento de localizar la pupila.
En la figura 28 se muestra un ejemplo de aplicación del histograma.
Figura Nº 28: Imagen original (Izq.), su histograma (centro) y la detección Canny (der.)
La región de iris se pasa como parámetro a la función que realiza el
histograma, que retornara el valor ideal para determinar el centro de
iris que es lo mismo que hallar el centro de la pupila ya son círculos
concéntricos.
Por medio de un histograma, se puede determinar con bastante
exactitud la región de la pupila.
Detección de contornos y detección de la región de la pupila
mediante Hough
Estos pasos son exactamente iguales que los seguidos para detectar
la región del iris.
58
Localizar párpados
En el siguiente paso, se debe analizar la región de iris en busca de
zonas que estén ocluidas por los parpados. Estas zonas se deben
marcar como ruido figura 29 ya que es información no valida de cara
a la codificación. Para ello, utilizamos funciones (localizar párpados
superior e inferior), que forman el detector de párpados.
Los resultados de la implementación de esta función se pueden
apreciar en la siguiente figura.
Figura Nº 29: Zona ocluida por los parpados marcados como ruido
La idea básica es utilizar un sistema muy parecido al detector circular
de Hough, con la diferencia de que no buscamos detectar círculos, si
no líneas, correspondientes a los párpados superior e inferior.
59
Figura Nº 30: Imagen original (izq.) línea detectada (centro) línea de intersección (Der.)
Marcar pestañas y reflejos como ruido
El siguiente tratamiento que se le da a la imagen es el de eliminar los
elementos menores de ruido, tales como las pestañas y las
reflexiones especulares causadas, por ejemplo, por el flash de una
cámara. Esto se consigue aplicando una función que, dado una
umbral, marca a 0 (ruido) los pixeles que sobrepasen o que no
lleguen a un valor determinado de iluminación (en un rango de 0-
255).
Para pestañas pixeles valor < 90
Para reflejos Pixeles valor > 240
En el caso de las pestañas, cabe destacar que resulta imposible
eliminar todo el ruido (marcar toda la pestaña como ruido), ya que si
bien es sencillo eliminar la parte más gruesa (figura 31), la parte del
extremo tiende a ser tan fina que se pierde entre el resto de
irregularidades del iris.
60
Figura Nº 31: Detalle de pestañas marcadas como ruido. Imagen original (Izq.) imagen ruido (Der.)
Se han invertido los colores para que resulte más sencillo comprobar la
existencia de ruido eliminado.
1.20 RECONOCIMIENTO (Codificación y matching)
La codificación del iris es el proceso por el cual se analiza la textura del iris y
se extrae información, mientras que el matching es la comparación de la
información extraída con el fin de tomar una decisión acerca de la identidad
del usuario.
1.20.1 METODOS DE CODIFICACIÓN Y MATCHING EXISTENTES
La codificación debe ser capaz de extraer aquella información del iris
que permita discriminar una persona de otra. El resultado de la
codificación es por lo general un vector de características o feactures
que describen la textura del iris. Dicho vector debe poder ser
comparado contra otros vectores generados a partir de otros iris o del
mismo iris. En la literatura existen muchos métodos propuestos para
61
extraer características del iris, y cada uno de estos métodos tiene
asociado un método de matching.
La codificación de iris es probablemente el área que más se ha
estudiado y sobre el que existen mayor cantidad de trabajos. Entre
todos los métodos existentes, los más comunes y aquellos en los que
se han obtenido mejores resultados son los que utilizan filtros de
Gabor o Log-Gabor y los que utilizan wavelets para codificar la
textura de iris. A continuación se explicara de los métodos más
utilizados y los más interesantes desde el punto de vista de la
originalidad y eficacia.
a) Filtros de Gabor
En su sistema original, Daugman utilizo los filtros de Gabor
bidimensionales como método de codificación del iris. Los filtros de
Gabor son un tipo de filtro pasabanda (filtro que deja pasar un
determinado rango de frecuencias de una señal) que determina el
rango de frecuencias utilizando una función gaussiana. Estos filtros
surgen del análisis del funcionamiento de las neuronas en la corteza
visual primaria. Dichas neuronas reaccionan detectando la
orientación de los objetos.
En dominio de las frecuencias, el filtro de Gabor G(u , v ) se define
como una función Gaussiana:
G (u , v )=exp [−π ( (u−u0 )2 α2+( v−v0 )2 β2 )]
62
Donde (u¿¿0 , v0)¿ representa la modulación (es decir, el punto donde
la respuesta del filtro es maxima) y α y β representan la desviación
de la función Gaussiana bidimensional (el cociente ∝/ β define la
relación de aspecto de filtro). En el dominio espacial, el filtro de
Gabor centrado en el origen está dado por:
G ( x , y )=F−1 {G }=exp (−π ( x2
α 2 +y2
β2 ))exp (−2 πi(u0 x+v0 y ))
El filtro resultante es entonces una onda sinusoide compleja (llamada
carrier) modulada por una función Gaussiana (llamada envolvente).
La frecuencia espacial del filtro es ω0=√u02+v0
2 y su orientación es
θ0=arctan (v 0/u0), mientras que el ancho de banda está dado por el
radio de la Gaussiana (definido por α y β).
Este filtro se puede separar en dos componentes, una real y una
compleja:
Gℜ ( x , y )=gα, β ( x , y ) .cos (2 π (u0 x+v0 y ))
Gℑ ( x , y )=gα, β ( x , y ) . cos (2 π (u0 x+v0 y))
Siendo gα , β ( x , y )=exp(−π ( x2
α 2 +y2
β2 )) el envolvente Gaussiano. Este
par de filtros están en cuadratura, lo que quiere decir que tienen la
misma amplitud pero están desfasados 900. El filtro Gℜ se denomina
filtro simétrico par y Gℑ se denomina filtro simétrico impar, ya qye el
coseno y el seno son funciones simétricas par e impar
63
respectivamente. En la figura32 se puede ver un ejemplo de las
componentes de un filtro de Gabor.
Figura Nº 32: Ejemplo de filtro de Gabor.
De la figura a muestra el filtro en el dominio de las frecuencias. Las
figuras b y c muestran el filtro real y complejo en el dominio espacial,
respectivamente.
La utilidad de este filtro radica en que está demostrado que minimiza
el principio de incertidumbre en los dominios espacial y de las
frecuencias. Este principio establece la imposibilidad de tener
información en el dominio de las frecuencias y en el dominio espacial
simultáneamente. El filtro de Gabor permite tener información en
ambos dominios minimizando la incertidumbre conjunta.
Generación del código
Para generar el código del iris, Daugman propone primero normalizar
las coordenadas de los puntos del mismo, expresando cada punto
como un par (θ,r) en coordenadas polares. Esto permite que el
método sea invariante frente a cambios en el tamaño del iris, ya sea
por la distancia del ojo o de la cámara o opr la contracción o
64
dilatación de la pupila. La textura del iris queda entonces expresada
como una función I(θ,r).
Luego, se proyecta un área del iris centrada en el punto (θ0 , r0) es
una wavelet bidimensional de Gabor3. Este procedimiento se repite
para varios puntos y varias wavelets de distintos tamaños y
frecuencias.
Cada aplicación de una wavelet en un punto da como resultado un
numero complejo c=a+ib que puede ser expresado en función de su
argumento o fase, arg(c) y su amplitud, |c|. Está demostrado que la
fase y no la amplitud es la que provee la información más
significativa en una imagen, por lo que la amplitud, que contiene
información redundante, es ignorada en la codificación.
La fase, al ser un número real entre 0 y 2π es cuantizada a fin de
reducir la complejidad del código resultante. Esta se codifica con dos
bits, que indican el cuadrante en el cual está ubicado el resultado.
Este proceso se puede ver con la siguiente formula:
h [ℜ , ℑ ]=sgn{ℜ ,ℑ}∫ρ
❑
∫φ
❑
I (φ , ρ )exp (−iw (θ0−φ )) . exp (−((r0−ρ)2
α 2 +(θ0−φ)2
β2 )) ρdφdρ
El código resultante es el conjunto de bits obtenidos al aplicar este
procedimiento a varios puntos con varias wavelets en distintas
escalas y frecuencias, obteniendo un total de 2048 bits.
3Una wavelet de Gabor es una familia de wavelets que utiliza la función de Gabor descripta como una función madre e incluye translaciones y cambios de tamaño.
65
Ademas del código de iris, se genera una matriz binaria que marca
aquellos puntos que fueron afectados por ruidos provenientes de las
pestañas o los párpados y que por lo tanto no pertenecen al iris. Esta
matriz funcionara como mascara en la etapa de matching.
Matching
El matching consiste en comparar dos códigos de iris y decidir si
ambos fueron generados por el mismo iris o no. En el sistema
descripto por Daugman, cada código de iris es una matriz binaria que
también tiene asociada una máscara de ruido que marca aquellos
bits que fueron afectados por las pestañas y/o parpados. Para
comparar dos códigos, se calcula la distancia de Hamming entre
ambos códigos, C1 y C2, teniendo en cuenta sus respectivas
máscaras, M1 y M2:
HD (C1 , M 1 ,C2 , M 2 )=‖(C1⊗C2)∩( M1 ∩ M 2)‖
‖M 1∩ M 2‖
Donde ⊗ es el operador binario XOR y ∩ es el operador binario AND,
y ‖.‖ representa la norma 1.
Esencialmente, la distancia de Hamming mide la cantidad de bits en
ambos códigos que son desiguales entre sí. Este valor es
normalizado por la cantidad de bits validos en ambos códigos
(definidos por la intersección entre ambas máscaras), lo que da
como resultado un número entre 0 y 1. Mientras más parecido sean
66
los códigos de iris, la cantidad de bits distintos será cada vez menor
y por lo tanto la distancia de Hamming será cercana a 0.
Esta métrica permitirá tomar una decisión acerca de la identidad de
la persona.
1.20.2 IMPLEMENTACIÓN
A continuación se hará una descripción detallada:
a) Normalización
Previo a la codificación, se extrae la textura del iris en una nueva
imagen rectangular de dimensiones fijas. Cada punto de iris puede
ser referenciado, independientemente del tamaño, con un par de
coordenadas pseudo-polares (r,θ), donde r ∈ [0,1] representa la
distancia del punto al contorno de la pupila y θ∈[0 …2 π ] el ángulo
respecto al centro del iris. Este proceso se puede ver en la figura33.
Figura Nº 33: Esquema de la normalización del iris
De la figura 33, luego de ser segmentado, la textura del iris se
transforma en una imagen rectangular de dimensiones fijas. Se
67
puede ver en la imagen rectangular las regiones afectadas por los
parpados y el reflejo del iluminador infrarrojo.
Cada fila de la nueva imagen representa un “anillo” del iris y cada
columna un ángulo en el anillo. Como la nueva imagen tiene
dimensiones constantes, esto permitirá que todos los iris sean
representados con un tamaño fijo, de manera que el sistema sea
invariante frente a cambios en el diámetro de la pupila o del iris. Este
modelo para representar el iris se conoce en la literatura como
modelo rubber sheet, o “lamina de goma”, ya que el proceso equivale
a extraer la textura del iris y deformarla para que quede rectangular.
Además, para cada punto en la imagen normalizada, se genera una
máscara de ruido que marca aquellos puntos que fueron afectados
por los parpados (figura34).
Figura Nº 34: Textura normalizada y máscara de ruido
De la figura 34, las partes negras representan los puntos que fueron
afectados por los parpados.
b) Codificación
68
Para codificar la textura normalizada del iris se utilizan los filtros de
Log-Gabor unidimensionales. Cada fila de la textura normalizada es
filtrada con un conjunto de filtros de Log-Gabor diseñados para tener
una buena cobertura del espacio de frecuencias (figuras 35 y 36).
Para cada punto en la imagen, la respuesta de dicho punto al filtro es
un punto complejo, donde la parte real se corresponde con la
respuesta al filtro simétrico par y la parte compleja se corresponde
con la respuesta al filtro simétrico impar (figura 36). Se codifica
únicamente la fase de la respuesta, ya que, como se mencionó, la
amplitud no aporta mucha información y es inestable frente a
cambios de iluminación. En valor de la fase se cuantiza a uno de
cuatro de cuatro posibles valores, correspondientes al cuadrante de
la fase, por lo que la respuesta de cada punto a cada filtro se codifica
con dos bits. La figura 38 muestra este proceso.
La ventaja de este método es que si, por efecto del ruido, la fase se
desplaza de cuadrante en dos imágenes del mismo iris, únicamente
cambiara un bit del código, haciéndolo más resistente frente al ruido
(es necesario un cambio de fase de casi 1800 para cambiar los dos
bits del código correspondiente a ese punto).
El resultado de este procedimiento son dos matrices de valores
binarios, donde cada fila de una matriz representa la codificación de
una fila de la textura del iris.
69
Figura Nº 35: extracción de señales unidimensionales de la textura del iris.
De la figura 35, cada fila es un vector de valores que será filtrado y
codificado por separado.
Figura Nº 36: Proceso de codificación
De la figura 36, (a): señal de entrada (una línea de la textura del iris),
(b) y (c): filtro simétrico para e impar, respectivamente, (d): respuesta
de la señal al filtro simétrico par (corresponde a la parte real de la
respuesta), (e): respuesta de la señal al filtro simétrico impar
(corresponde a la parte compleja de la respuesta).
70
Figura Nº 37: Posición de fase
De la figura 37: el argumento (fase) de p cae en el primer cuadrante,
por lo cual el valor de p se codifica como 11.
c) Matching
Para comparar dos códigos de iris se utiliza la distancia de Hamming.
La ventaja principal de este método es que es sumamente rápido, ya
que se pueden “empaquetar” varios bits del código en una palabra
del procesador y realizar comparaciones en paralelo (por ejemplo, en
un procesador común de 32 bits, se pueden realizar 32
comparaciones por ciclo de reloj).
Como métrica, la distancia de Hamming permitirá establecer que
tanto se parecen dos códigos de iris. Al haber tantas variables en el
proceso previo a la codificación (pequeñas diferencias en la
segmentación, variables de captura como iluminación, reflejos,
distancia a la cámara, ruido electrónico en la cámara, etc) es de
71
esperar que dos códigos generados a partir del mismo iris no sean
exactamente iguales, lo que daría como resultado una distancia de 0.
El resultado de la comparación dará un valor que permitirá realizar
una decisión acerca de si los dos códigos fueron generados a partir
del mismo iris o no.
72
CONCLUSIONES
Para el tratamiento de la imagen fue necesario trabajar solo en escala de
Grises, dado que una imagen fue representada por medio de una matriz de
m x n elementos, lo cual fue más fácil trabajar en una sola matriz que hacer
el tratamiento en colores RGB,que en ese caso se tendría que trabajar con
tres matrices.
Para la segmentación de una imagen y a su vez encontrar los parámetros
que determinarían la ubicación, la forma y el tamaño del iris dentro de la
imagen, la transformada de Hough fue un algoritmo que resulto útil para
localizar figuras que se asemejan a una circunferencia detectando
automáticamente los parámetros de la figura.
Para la obtención del iris fue necesario trabajar con una imagen
segmentada y estándar, al cual se aplico el algoritmo de Canny Edge para
resaltar los contornos y este a su vez será aplicada la función detector de
Hough, esta función localizo el iris dentro de la imagen y retorno sus
coordenadas espaciales: centro y radio, la ventaja de esta función es que
no se aplica sobre toda la imagen sino sobre la región del iris, a pesar que
las imágenes tratadas presenten ciertos inconvenientes como reflejos
especulares, o cierta zonas con partes del parpado o las pestañas , el
algoritmo permitio eliminar dichos pixeles de manera que la identificación es
exacta.
73
Para el reconocimiento de iris se tuvo que realizar la codificación del iris en
binario y para realizar la comparación de dos códigos de iris se utiliza la
distancia de Hamming que es un algoritmo muy utilizado en otras áreas
como criptografía, es un algoritmo de investigación constante, el
reconocimiento del iris, es uno de los métodos menos intrusitos, el más
efectivo, pero a su vez uno de los más caros de implantar, los equipos para
la captura de imágenes aun poseen precios no accesibles a la gran
mayoría.
Se demuestra la eficacia, que al obtener la imagen de las 10 personas no
tuvimos ningún problema en reconocerlas a las imágenes originales, esto
nos indica que así podemos evitar toda clase der suplantaciones en
cualquier tipo de examen para la seguridad del caso que lo requiera,100%
eficaz.
74
RECOMENDACIONES Y SUGERENCIAS
Se recomienda utilizar estos sistemas biométricos para solucionar
problemas como: La suplantación en los exámenes de admisión,control de
asistencia, así como en otros sistemas en los cuales sea necesario
identificar a las personas unívocamente, garantizando la transparencia y
veracidad en los procesos.
Se sugiere realizar una extensión del presente trabajo de investigación,
considerando el uso de tecnologías actuales, como la captura de la imagen
mediante cámaras web, dando iniciativa para propagar el uso de software
basado en el reconocimiento de patrones físicos.
Se recomienda a los estudiantes en realizar investigaciones y desarrollo de
aplicaciones en temas de visión artificial, para la identificación de males en
el campo de la medicina, reconocimiento de personas, identificación de
vehículos motorizados entre otros, esto debido a que en algunas partes del
mundo ya se hace uso de estos medios.
Es recomendable utilizar este trabajo como un medio de consulta, sin seguir
fielmente los pasos utilizados o la metodología aplicada en este trabajo,
considerando que este trabajo no pretende ser un trabajo de investigación
final, sino un incentivo para desarrollar investigaciones en este sub campo
de la Inteligencia Artificial.
75
BIBLIOGRAFIA
REFERENCIAS BIBLIOGRAFÍCAS
Akay, M. (1998). Time Frequency and Wavelets in Biomedical Signal Processing
(Book style). Piscataway: NJ: IEEE Press.
Daugman, J. (2000). Biometric decision landscapes Techinical Report No. TR482.
University of cambridge Computer Laboratory.
Daugman, J. (2006). Probing the uniqueness and randomness of IrisCodes:
Results from 200 Billion iris pair comparisons. Proceedings of the IEEE.
Gonzalez, R., & Woods, R. (2003). Digital Image Processing.Prentice hall.
Jain, S.; Ross, A.& Prabhakar, A. (Janury 2004). An Introducction to Biometric
Recognition.IEEE.
Sanchez, R. (2000). El iris ocular como parametro para la Identificacion
Biometrica. España: Universidad Politecnica de Madrid.
Sossa, J. (2006). Rasgos Descriptores para el Reconocimiento de Objetos.Mexico:
Centro de Investigacion en Computacion.
Wildes, R. (1997). Iris recognition: an emerging biometric technology proceedings
of the IEEE.
Zhu, Y., Tan, T., & Wang, Y. (2000). Biometric personal identification based on iris
patterns Proceeding of the 15th International Conference on Pattern
Recognition.Spain.
WEBGRAFIA
Homini. (s.f.). Plaforma Biometrica. Recuperado el 03 de Enero de 2013, de
http://www.homini.com/new_page_5.htm
J.Daugman. (2004). How Iris Recognition Works. Recuperado el 12 de Noviembre
de 2012, de http://www.cl.cam.ac.uk/users/jgd1000/csvt.pdf
76
Wikipedia. (s.f.). Canny_edge_detector. Recuperado el 12 de Diciembre de 2012,
de http://en.wikipedia.org/wiki/Canny_edge_detector
Wikipedia. (s.f.). Gabor_filter. Recuperado el 15 de Setiembre de 2012, de
http://en.wikipedia.org/wiki/Gabor_filter
Wikipedia. (s.f.). Hough_transform. Recuperado el 2013 de Marzo de 27, de
http://en.wikipedia.org/wiki/Hough_transform
Wikipedia, L. e. (19 de Setiembre de 2012). Biometria. Recuperado el 17 de
Octubre de 2012, de http://es.wikipedia.org/wiki/Reconocimiento_de_iris
TESIS
Baldo Romero Paulina y Garcia Molina Josue (2007). “Autentificación Biométrica
de Personas por medio de Reconocimiento del Iris”. Tesis para Optar el
Título de Ingeniero en comunicaciones y Electrónica. México. Instituto
Politécnico Nacional de México.
Cayo Cabrera Guido Humberto (2005). “Prototipo neurogenetico aplicado en el
reconocimiento de imágenes bidimensionales estáticas: Rostros, Código de
Barras y Firmas”. Tesis de Maestría en Informática. Puno – Perú.
Universidad Nacional del Altiplano.
77
ANEXOS
RESULTADOS DEL PROTOTIPO
RESULTADOS DE LA PRUEBA
1. Salida de imagines Segmentada:
Figure 1: 001_1_1.bmp
Figure 2: 001_1_3.bmp
Figure 3: Img_2_1_1.jpg
78
Figure 4: Img_2_1_2.jpg
2. Salida Imágenes normalizadas
Figure 5: 001_1_1.bmp
Figure 6: 001_1_3.bmp
Figure 5: Img_2_1_1.jpg
79
Figure 6: Img_2_1_2.jpg
3. Ruido de las Imágenes de Salida
Figure 9: 001_1_1.bmp
Figure 10: 001_1_3.bmp
Figure 11: Img_2_1_1.jpg
80
Figure 12: Img_2_1_2.jpg
4. Salida Polar de Imagenes con Ruido
Figure 13: 001_1_1.bmp
Figure 14: 001_1_3.bmp
Figure 15: Img_2_1_1.jpg
81
Figure 16: Img_2_1_2.jpg
La Tabla 1 muestra la distancia de Hamming calculada para las cuatro pruebas realizadas.
Si la distancia de Hamming calculada es menor que una distancia de Hamming preestablecido (Es 0.4 para las pruebas llevadas a cabo), las imágenes se dice que son relacionados; más las imágenes son diferentes.
Nº de
Pruebaentrada 1 entrada 2
Distancia de
Hamming
Match
Found/No
Match Found
1. 001_1_1.bmp 001_1_3.bmp 0.2647Match
Found
2. Img_2_1_1.jpg Img_2_1_2.jpg 0.1506Match
Found
3. 001_1_1.bmp 001_1_1.bmp 0Match
Found
4. 001_1_1.bmp Img_2_1_1.jpg 0.4454No Match
Found
Tabla 1: Calculo de distancia Hamming para4 pares de entradas de prueba
82
CODIGO FUENTE
% % ADDCIRCLE% Argumento:% h - 2D acumulador array.% c - [x,y] coordenadas del centro de circulo.% radius – radio del circulo% weight –peso opcional de valores que se añade al% acumulador array (por defecto es 1)%% Retorno: h –actualizar el acumulador array.
function h = addcircle(h, c, radius, weight)
[hr, hc] = size(h);
if nargin == 3weight = 1;end
if any(c-fix(c))error('Punto central del círculo debe estar en coordenadas enteras');end
if radius-fix(radius)error('Radio debe ser un entero’);end
x = 0:fix(radius/sqrt(2));costheta = sqrt(1 - (x.^2 / radius^2)); y = round(radius*costheta);
px = c(2) + [x y y x -x -y -y -x];py = c(1) + [y x -x -y -y -x x y];
validx = px>=1 & px<=hr;validy = py>=1 & py<=hc; valid = find(validx & validy);
px = px(valid);py = py(valid);
ind = px+(py-1)*hr;h(ind) = h(ind) + weight;
83
% ADJGAMMA %% funcion g = adjgamma(im, g)%% Argumentos:% im - imagen a ser procesado.% g - imagen valor gamma.% Valores en el rango 0-1 mejora el contraste del brillo% regiones, valores > 1 mejora el contraste en la oscuridad% regiones.
function newim = adjgamma(im, g)
if g <= 0error('Valor Gamma debe ser > 0');end
if isa(im,'uint8');newim = double(im);elsenewim = im;end
newim = newim-min(min(newim));newim = newim./max(max(newim));
newim = newim.^(1/g);
84
% CANNY %% Argumentos: im - imagen a ser procesado% sigma - desviación estándar de filtro deGauss suavizado% (típicamente 1)% scaling - para reducir el factor de imagen de entrada mediante% vert - ponderación de los gradientes verticales% horz - ponderación de los gradientes horizontales%% Returns: gradient - imagen resistencia del borde (gradiente de amplitud)% or - orientación de la imagen (en grados 0-180, positivo% en sentido antihorario)%
function [gradient, or] = canny(im, sigma, scaling, vert, horz)
xscaling = vert;yscaling = horz;
hsize = [6*sigma+1, 6*sigma+1];
gaussian = fspecial('gaussian',hsize,sigma);im = filter2(gaussian,im);
im = imresize(im, scaling);
[rows, cols] = size(im);
h = [ im(:,2:cols) zeros(rows,1) ] - [ zeros(rows,1) im(:,1:cols-1) ];v = [ im(2:rows,:); zeros(1,cols) ] - [ zeros(1,cols); im(1:rows-1,:) ];d1 = [ im(2:rows,2:cols) zeros(rows-1,1); zeros(1,cols) ] - ... [ zeros(1,cols); zeros(rows-1,1) im(1:rows-1,1:cols-1) ];d2 = [ zeros(1,cols); im(1:rows-1,2:cols) zeros(rows-1,1); ] - ... [ zeros(rows-1,1) im(2:rows,1:cols-1); zeros(1,cols) ];
X = ( h + (d1 + d2)/2.0 ) * xscaling;Y = ( v + (d1 - d2)/2.0 ) * yscaling;
gradient = sqrt(X.*X + Y.*Y);
or = atan2(-Y, X); neg = or<0; or = or.*~neg + (or+pi).*neg; or = or*180/pi;
85
% circlecoords
% Argumentos:% c - una matriz que contiene las coordenadas del centro del círculo% [x,y]% r - el radio del círculo% imgsize - tamaño de la matriz en la imagen para trazar coordenadas en% nsides - el círculo es en realidad aproximar por un polígono, este% argumento da el número de lados utilizadas en esta aproximacióndefecto% es 600.%% Output:% x - una matriz que contiene las coordenadas x de los límites del círculo% puntos% y - una matriz que contiene las coordenadas de los límites y círculo% puntos
function [x,y] = circlecoords(c, r, imgsize,nsides)
if nargin == 3nsides = 600;end
nsides = round(nsides);
a = [0:pi/nsides:2*pi];xd = (double(r)*cos(a)+ double(c(1)) );yd = (double(r)*sin(a)+ double(c(2)) );
xd = round(xd);yd = round(yd);
xd2 = xd;coords = find(xd>imgsize(2));xd2(coords) = imgsize(2);coords = find(xd<=0);xd2(coords) = 1;
yd2 = yd;coords = find(yd>imgsize(1));yd2(coords) = imgsize(1);coords = find(yd<=0);yd2(coords) = 1;
x = int32(xd2);y = int32(yd2);
86
% createiristemplate % Argumentos:% eyeimage_filename - el nombre del archivo de la imagen del iris%function [template, mask] = createiristemplate(eyeimage_filename)
global DIAGPATHDIAGPATH = 'diagnostics\';
radial_res = 40;angular_res = 240;
minWaveLength=18;mult=1;sigmaOnf=0.5;
eyeimage = imread(eyeimage_filename);
savefile = [eyeimage_filename,'-houghpara.mat'];[stat,mess]=fileattrib(savefile);
[circleiris circlepupil imagewithnoise] = segmentiris(eyeimage);save(savefile,'circleiris','circlepupil','imagewithnoise');
imagewithnoise2 = uint8(imagewithnoise);imagewithcircles = uint8(eyeimage);
[x,y] = circlecoords([circleiris(2),circleiris(1)],circleiris(3),size(eyeimage));ind2 = sub2ind(size(eyeimage),double(y),double(x));
[xp,yp]=circlecoords([circlepupil(2),circlepupil(1)],circlepupil(3),size(eyeimage));ind1 = sub2ind(size(eyeimage),double(yp),double(xp));
imagewithnoise2(ind2) = 255;imagewithnoise2(ind1) = 255;
imagewithcircles(ind2) = 255;imagewithcircles(ind1) = 255;w = cd;cd(DIAGPATH);imwrite(imagewithnoise2,[eyeimage_filename,'-noise.jpg'],'jpg');imwrite(imagewithcircles,[eyeimage_filename,'-segmented.jpg'],'jpg');cd(w);
[polar_array noise_array] = normaliseiris(imagewithnoise, circleiris(2),...circleiris(1), circleiris(3), circlepupil(2), circlepupil(1), circlepupil(3),eyeimage_filename, radial_res, angular_res);
w = cd;cd(DIAGPATH);imwrite(polar_array,[eyeimage_filename,'-polar.jpg'],'jpg');imwrite(noise_array,[eyeimage_filename,'-polarnoise.jpg'],'jpg');cd(w);
[template mask] = encode(polar_array, noise_array, nscales, minWaveLength, mult, sigmaOnf);
87
% encode% Argumentos:% polar_array - región iris normalizada% noise_array - correspondiente region de mapa de ruido normalizado % nscales - número de filtros para usar en la codificación% minWaveLength - base de longitud de onda% mult - factor de multicative entre cada filtro% sigmaOnf - parámetro de ancho de banda%% Output:% template - plantilla biométrico binario del iris% mask - la máscara de ruido iris binario
function [template, mask] = encode(polar_array,noise_array, nscales, minWaveLength, mult, sigmaOnf)
[E0 filtersum] = gaborconvolve(polar_array, nscales, minWaveLength, mult, sigmaOnf);
length = size(polar_array,2)*2*nscales;
template = zeros(size(polar_array,1), length);
length2 = size(polar_array,2);h = 1:size(polar_array,1);
%crear la plantilla del iris
mask = zeros(size(template));
for k=1:nscales
E1 = E0{k};
H1 = real(E1) > 0; H2 = imag(E1) > 0;
H3 = abs(E1) < 0.0001;
for i=0:(length2-1)
ja = double(2*nscales*(i));
template(h,ja+(2*k)-1) = H1(h, i+1);template(h,ja+(2*k)) = H2(h,i+1);
mask(h,ja+(2*k)-1) = noise_array(h, i+1) | H3(h, i+1);mask(h,ja+(2*k)) = noise_array(h, i+1) | H3(h, i+1);
end
end
88
% findcircle %% Arguments:% image - la imagen encontrar los círculos% lradius - radio inferior para buscar% uradius - radio superior para buscar% scaling - factor de escala por exceso de velocidad de hasta la% transformada de Hough% sigma - cantidad de gaussiana suavizado a% aplicar para la creación de mapa borde.% hithres - umbral para la creación de mapa borde% lowthres - umbral para bordes conectados% vert - contribución borde vertical (0-1)% horz - contribución borde horizontal (0-1)% % Salida:% circleiris - coordenadas del centro y el radio% de los límites del iris detectado% circlepupil - coordenadas del centro y el radio% del borde de la pupila detectado% imagewithnoise - imagen visual original, pero con% ubicación de ruido marcado con% valores NaN
function [row, col, r] = findcircle(image,lradius,uradius,scaling, sigma, hithres, lowthres, vert, horz)
lradsc = round(lradius*scaling);uradsc = round(uradius*scaling);rd = round(uradius*scaling - lradius*scaling);
[I2 or] = canny(image, sigma, scaling, vert, horz);I3 = adjgamma(I2, 1.9);I4 = nonmaxsup(I3, or, 1.5);edgeimage = hysthresh(I4, hithres, lowthres);
h = houghcircle(edgeimage, lradsc, uradsc);
maxtotal = 0;
for i=1:rd
layer = h(:,:,i); [maxlayer] = max(max(layer));
if maxlayer > maxtotal
maxtotal = maxlayer;
r = int32((lradsc+i) / scaling);
[row,col] = ( find(layer == maxlayer) );
row = int32(row(1) / scaling); col = int32(col(1) / scaling);
end
end
89
% findline % Argumentos:% image - la imagen de entrada%% Output:% lines - parámetros de la línea detectada en forma polar
function lines = findline(image)
[I2 or] = canny(image, 2, 1, 0.00, 1.00);
I3 = adjgamma(I2, 1.9);I4 = nonmaxsup(I3, or, 1.5);edgeimage = hysthresh(I4, 0.20, 0.15);
theta = (0:179)';[R, xp] = radon(edgeimage, theta);
maxv = max(max(R));
if maxv > 25 i = find(R == max(max(R)));elselines = [];return;end
[foo, ind] = sort(-R(i));u = size(i,1);k = i(ind(1:u));[y,x]=ind2sub(size(R),k);t = -theta(x)*pi/180;r = xp(y);
lines = [cos(t) sin(t) -r];
cx = size(image,2)/2-1;cy = size(image,1)/2-1;lines(:,3) = lines(:,3) - lines(:,1)*cx - lines(:,2)*cy;
90
% gaborconvolve
% Argumentos:% im - la imagen convolucionar% nscale - número de filtros a utilizar% minWaveLength - longitud de onda del filtro de base% mult - el factor multiplicativo entre cada filtro% sigmaOnf - Relación entre la desviación estándar de la gaussiana describir% función de transferencia del filtro Gabor registro de la frecuencia% dominio de la frecuencia central del filtro.%function[EO, filtersum] = gaborconvolve(im, nscale, minWaveLength, mult, ... sigmaOnf)
[rows cols] = size(im); filtersum = zeros(1,size(im,2));
EO = cell(1, nscale);
ndata = cols;if mod(ndata,2) == 1 ndata = ndata-1; end
logGabor = zeros(1,ndata);result = zeros(rows,ndata);
radius = [0:fix(ndata/2)]/fix(ndata/2)/2; radius(1) = 1;
wavelength = minWaveLength;
for s = 1:nscale,
fo = 1.0/wavelength; rfo = fo/0.5;
logGabor(1:ndata/2+1) = exp((-(log(radius/fo)).^2) / (2 * log(sigmaOnf)^2)); logGabor(1) = 0;
filter = logGabor;
filtersum = filtersum+filter;
for r = 1:rows % For each row
signal = im(r,1:ndata);
imagefft = fft( signal );
result(r,:) = ifft(imagefft .* filter);
end
EO{s} = result;
wavelength = wavelength * mult; end
filtersum = fftshift(filtersum);
91
% gethammingdistance % Argumentos:% template1 - primera plantilla% mask1 - máscara de ruido correspondiente% template2 - segunda plantilla% mask2 - máscara de ruido correspondiente% scales - el número de filtros utilizados para codificar las plantillas,% necesario para el cambio.%% Salida:% hd - la distancia de Hamming como una relación
function hd = gethammingdistance(template1, mask1, template2, mask2, scales)
template1 = logical(template1);mask1 = logical(mask1);
template2 = logical(template2);mask2 = logical(mask2);
hd = NaN;
for shifts=-8:8
template1s = shiftbits(template1, shifts,scales); mask1s = shiftbits(mask1, shifts,scales);
mask = mask1s | mask2;
nummaskbits = sum(sum(mask == 1));
totalbits = (size(template1s,1)*size(template1s,2)) - nummaskbits;
C = xor(template1s,template2);
C = C & ~mask;bitsdiff = sum(sum(C==1));
if totalbits == 0
hd = NaN;
else
hd1 = bitsdiff / totalbits;
if hd1< hd || isnan(hd)
hd = hd1;
end
end
end
92
% houghcircle
% Argumentos:% edgeim - el mapa de imagen del borde de transformarse% rmin, rmax - los valores mínimo y máximo radio% de círculos para buscar% Salida:% h - La transformada de Hough%
function h = houghcircle(edgeim, rmin, rmax)
[rows,cols] = size(edgeim);nradii = rmax-rmin+1;h = zeros(rows,cols,nradii);
[y,x] = find(edgeim~=0);
for index=1:size(y)
cx = x(index);cy = y(index);
for n=1:nradii
h(:,:,n) = addcircle(h(:,:,n),[cx,cy],n+rmin);
end
end
93
% HYSTHRESH
% Argumentos:% im - imagen a umbrales concretos (que se supone no negativo)% T1 - valor de umbral superior% T2 - valor de umbral inferior
function bw = hysthresh(im, T1, T2)
if (T2 > T1 | T2 < 0 | T1 < 0) error('T1 debe ser >= T2 y ambos deben estar >= 0 ');end
[rows, cols] = size(im); rc = rows*cols;rcmr = rc - rows;rp1 = rows+1;
bw = im(:); pix = find(bw > T1); npix = size(pix,1);
stack = zeros(rows*cols,1);
stack(1:npix) = pix; stp = npix; for k = 1:npixbw(pix(k)) = -1; end
O = [-1, 1, -rows-1, -rows, -rows+1, rows-1, rows, rows+1];
while stp ~= 0 v = stack(stp); stp = stp - 1;
if v > rp1 & v < rcmr for l = 1:8ind = index(l);if bw(ind) > T2 stp = stp+1; stack(stp) = ind;bw(ind) = -1; endendendend
bw = (bw == -1); bw = reshape(bw,rows,cols);
94
% linecoords % Argumentos:% lines - una matriz que contiene los parámetros de la línea de% forma% imsize - tamaño de la imagen, es necesario para que las coordenadas x y% están dentro del límite de la imagen%
function [x,y] = linecoords(lines, imsize)
xd = [1:imsize(2)];yd = (-lines(3) - lines(1)*xd ) / lines(2);
coords = find(yd>imsize(1));yd(coords) = imsize(1);coords = find(yd<1);yd(coords) = 1;
x = int32(xd);y = int32(yd);
95
% NONMAXSUP
% entrada:% inimage - imagen para ser non-maxima suprimida.% % orient - imagen que contiene características ángulos normales de orientación en grados% (0-180), los ángulos positivos en sentido antihorario.% % radius - distancia en unidades de píxel a ser considerado en cada lado de cada% píxel cuando se determina si se trata de un máximo local o no.% (Valor sugerido acerca de 01.02 a 01.05)function im = nonmaxsup(inimage, orient, radius)
if size(inimage) ~= size(orient)error('imagen y la orientación de la imagen son de diferentes tamaños ‘);end
if radius < 1error('radio debe estar >= 1');end
[rows,cols] = size(inimage);im = zeros(rows,cols); iradius = ceil(radius);
angle = [0:180].*pi/180; xoff = radius*cos(angle); yoff = radius*sin(angle); hfrac = xoff - floor(xoff); vfrac = yoff - floor(yoff); orient = fix(orient)+1; for col = (iradius+1):(cols - iradius)
or = orient(row,col); x = col + xoff(or); y = row - yoff(or);
fx = floor(x); cx = ceil(x);fy = floor(y);cy = ceil(y);tl = inimage(fy,fx);
upperavg = tl + hfrac(or) * (tr - tl); loweravg = bl + hfrac(or) * (br - bl); v1 = upperavg + vfrac(or) * (loweravg - upperavg);
if inimage(row, col) > v1 x = col - xoff(or); y = row + yoff(or);
fx = floor(x);cx = ceil(x);fy = floor(y);cy = ceil(y);tl = inimage(fy,fx); tr = inimage(fy,cx); bl = inimage(cy,fx); br = inimage(cy,cx); upperavg = tl + hfrac(or) * (tr - tl);loweravg = bl + hfrac(or) * (br - bl); v2 = upperavg + vfrac(or) * (loweravg - upperavg);
96
if inimage(row,col) > v2 im(row, col) = inimage(row, col); end
endendend
% normaliseiris % Argumentos:% image -la imagen del ojo de entrada para extraer datos del iris de% x_iris - la coordenada x del círculo que define el iris% límite% y_iris - la coordenada Y del círculo que define el iris% límite% r_iris - el radio del círculo que define el iris% límite% x_pupil - la coordenada X del círculo que define la pupila% limite% y_pupil - la coordenada y del círculo que define la pupila% limite% r_pupil - el radio del círculo que define la pupila% límite% eyeimage_filename - nombre de archivo original de la imagen del ojo de entrada% radpixels - resolución radial, define la dimensión vertical de% representación normalizada% angulardiv - resolución angular, define la dimensión horizontal% de la representación normalizada%
function [polar_array, polar_noise] = normaliseiris(image, x_iris, y_iris, r_iris,...x_pupil, y_pupil, r_pupil,eyeimage_filename, radpixels, angulardiv)
global DIAGPATH
radiuspixels = radpixels + 2;angledivisions = angulardiv-1;
r = 0:(radiuspixels-1);
theta = 0:2*pi/angledivisions:2*pi;
x_iris = double(x_iris);y_iris = double(y_iris);r_iris = double(r_iris);
x_pupil = double(x_pupil);y_pupil = double(y_pupil);r_pupil = double(r_pupil);
% calcular el desplazamiento del centro de la pupila del centro del irisox = x_pupil - x_iris;oy = y_pupil - y_iris;
if ox <= 0sgn = -1;elseif ox > 0sgn = 1;end
97
if ox==0 && oy > 0
sgn = 1;
end
r = double(r);theta = double(theta);
a = ones(1,angledivisions+1)* (ox^2 + oy^2);
if ox == 0phi = pi/2;elsephi = atan(oy/ox);end
b = sgn.*cos(pi - phi - theta);
r = (sqrt(a).*b) + ( sqrt( a.*(b.^2) - (a - (r_iris^2))));
r = r - r_pupil;
rmat = ones(1,radiuspixels)'*r;
rmat = rmat.* (ones(angledivisions+1,1)*[0:1/(radiuspixels-1):1])';rmat = rmat + r_pupil;
rmat = rmat(2:(radiuspixels-1), :);
xcosmat = ones(radiuspixels-2,1)*cos(theta);xsinmat = ones(radiuspixels-2,1)*sin(theta);
xo = rmat.*xcosmat; yo = rmat.*xsinmat;
xo = x_pupil+xo;yo = y_pupil-yo;
[x,y] = meshgrid(1:size(image,2),1:size(image,1)); polar_array = interp2(x,y,image,xo,yo);
polar_noise = zeros(size(polar_array));coords = find(isnan(polar_array));polar_noise(coords) = 1;
polar_array = double(polar_array)./255;
coords = find(xo > size(image,2));xo(coords) = size(image,2);coords = find(xo < 1);xo(coords) = 1;
coords = find(yo > size(image,1));yo(coords) = size(image,1);coords = find(yo<1);
98
yo(coords) = 1;
xo = round(xo);yo = round(yo);
xo = int32(xo);yo = int32(yo);
ind1 = sub2ind(size(image),double(yo),double(xo));
image = uint8(image);
image(ind1) = 255;
[x,y] = circlecoords([x_iris,y_iris],r_iris,size(image));ind2 = sub2ind(size(image),double(y),double(x));
[xp,yp] = circlecoords([x_pupil,y_pupil],r_pupil,size(image));ind1 = sub2ind(size(image),double(yp),double(xp));
image(ind2) = 255;image(ind1) = 255;
w = cd;cd(DIAGPATH);
imwrite(image,[eyeimage_filename,'-normal.jpg'],'jpg');
cd(w);coords = find(isnan(polar_array));polar_array2 = polar_array;polar_array2(coords) = 0.5;avg = sum(sum(polar_array2)) / (size(polar_array,1)*size(polar_array,2));polar_array(coords) = avg;
99
% segmentiris % Argumentos:% eyeimage - la imagen del ojo de entrada% % Output:% circleiris - coordenadas del centro y el radio% de los límites del iris detectado% circlepupil - coordenadas del centro y el radio% del borde de la pupila detectado% imagewithnoise - imagen visual original, pero con% ubicación de ruido marcado con% valores NaN
function [circleiris, circlepupil, imagewithnoise] = segmentiris(eyeimage)
lpupilradius = 28;upupilradius = 75;lirisradius = 80;uirisradius = 150;
scaling = 0.4;
reflecthres = 240;
[row, col, r] = findcircle(eyeimage, lirisradius, uirisradius, scaling, 2, 0.20, 0.19, 1.00, 0.00);
circleiris = [row col r];
rowd = double(row);cold = double(col);rd = double(r);
irl = round(rowd-rd);iru = round(rowd+rd);icl = round(cold-rd);icu = round(cold+rd);
imgsize = size(eyeimage);
if irl < 1 irl = 1;end
if icl < 1icl = 1;end
if iru > imgsize(1)iru = imgsize(1);end
if icu > imgsize(2)icu = imgsize(2);end
imagepupil = eyeimage( irl:iru,icl:icu);
100
[rowp, colp, r] = findcircle(imagepupil, lpupilradius, upupilradius ,0.6,2,0.25,0.25,1.00,1.00);
rowp = double(rowp);colp = double(colp);r = double(r);
row = double(irl) + rowp;col = double(icl) + colp;
row = round(row);col = round(col);
circlepupil = [row col r];
imagewithnoise = double(eyeimage);
%encontrar la parte superior del párpadotopeyelid = imagepupil(1:(rowp-r),:);lines = findline(topeyelid);
if size(lines,1) > 0 [xl yl] = linecoords(lines, size(topeyelid));yl = double(yl) + irl-1;xl = double(xl) + icl-1;
yla = max(yl);
y2 = 1:yla;
ind3 = sub2ind(size(eyeimage),yl,xl);imagewithnoise(ind3) = NaN;
imagewithnoise(y2, xl) = NaN;end
%encontrar párpado inferiorbottomeyelid = imagepupil((rowp+r):size(imagepupil,1),:);lines = findline(bottomeyelid);
if size(lines,1) > 0
[xl yl] = linecoords(lines, size(bottomeyelid));yl = double(yl)+ irl+rowp+r-2;xl = double(xl) + icl-1;
yla = min(yl);
y2 = yla:size(eyeimage,1);
ind4 = sub2ind(size(eyeimage),yl,xl);imagewithnoise(ind4) = NaN;imagewithnoise(y2, xl) = NaN;
end
ref = eyeimage < 100;coords = find(ref==1);imagewithnoise(coords) = NaN;
101
% shiftbits %% Argumentos:% template - la plantilla para cambiar% noshifts - número de turnos para llevar a cabo a la derecha, un negative% el valor, el cambio a la izquierda% nscales - número de filtros utilizados para la codificación, necesitaba% determinar el número de bits que se mueven en un cambio%
function templatenew = shiftbits(template, noshifts,nscales)
templatenew = zeros(size(template));
width = size(template,2);s = round(2*nscales*abs(noshifts));p = round(width-s);
if noshifts == 0templatenew = template;
elseif noshifts < 0
x=1:p;
templatenew(:,x) = template(:,s+x);
x=(p + 1):width;
templatenew(:,x) = template(:,x-p);
else
x=(s+1):width;
templatenew(:,x) = template(:,x-s);
x=1:s;
templatenew(:,x) = template(:,p+x);
end
102