universidad nacional de ingenieria facultad...
TRANSCRIPT
UNIVERSIDAD NACIONAL DE INGENIERIA Facultad de Ingeniería Industrial y de Sistemas
MODELO DE SEGMENTACIÓN EFICIENTE DE IMÁGENES RUIDOSAS DE IRIS PARA EL RECONOCIMIENTO DE
PERSONAS
TESIS
Para optar el Título Profesional de
Ingeniero de Sistemas
Bach. Jesús Edgardo Calzado Canteño
Lima-Perú
2015
INDICE
'
CAPITULO 1 ................................................................................................................ 4 INTRODUCCION ....................................................................................................... 4 1.1 INTRODUCCION ................................................................................................ 4 1.2 JUSTIFICACION ................................................................................................. 5 1.3 ALCANCES Y LIMITACIONES DE LA INVESTIGACION ........................... 6 CAPITULO 11 .............................................................................................................. 8 IDENTIFICACION DE LA NECESIDAD ................................................................ 8 2.1 DESCRIPCION DE LA SITUACION ACTUAL ............................................... 8 2.2 ARBOL DE OBJETIVOS ................................................................................. 10 CAPITULO 111 ........................................................................................................... 12 MARCO TEORICO .................................................................................................. 12 3.1 PROCESAMIENTO DIGITAL DE IMAGENES ............................................ 14 3.2. MORFOLOGIA Y FILTRO DE IMAGENES .... ; ............................................ 27 CAPITULO IV ........................................................................................................... 46 DESCRIPCION DEL MODELO PROPUESTO .................................................. 46 4.1 ESQUEMA DE SEGMENTACIÓN DEL IRIS ............................................... 49 4.1.1 Binarización imagen inicial ........................................................................... 51 4.1.2 Localización de la máxima región pupilar ......................................... · ........ 55 4.1.3 Identificación de ruido y localización de la pupila en región ................... 63 4.1.4 Localización del iris ................................................... : ................................... 69 4.2 TRANSFORMACION DEL IRIS Y CODIFICACION ................................... 74 CAPITULO V ............................................................................................................ 78 PRUEBAS Y RESULTADOS ................................................................................. 78 5.1 SIMULACION DEL ESQUEMA ...................................................................... 78 CONCLUSIONES .................................................................................................... 95 BIBLIOGRAFÍA ........................................................................................................ 98
RESUMEN
El presente trabajo consiste en la definición de un esquema de
segmentación de imágenes de iris (base de datos CASIA-IrisV3) que
garantice la identidad de una persona con una mínima tasa de falsos
rechazos y falsos reconocimientos. Las etapas que se define en los actuales
estudios de iris son: segmentar el iris, transformar la imagen del iris a
coordenadas polares, codificar el iris en una cadena de bits, luego se vuelve
a repetir los mismos pasos con otra imagen para que entre ambas se
calcule la distancia de Hamming y se determine el reconocimiento de la
persona. Dentro de la etapa de segmentación se propone un esquema
distinto, como la localización de la máxima región posible que puede
contener a la pupila, la identificación del ruido dentro de la pupila producto
del reflejo en la cámara usada por CASIA para esta versión de base de
datos. El esquema propuesto ofrece una tasa de de falsos rechazos de
9.532% y una tasa de falsos reconocimientos de 9.3%.
3
CAPITULO 1
INTRODUCCION
1.1 INTRODUCCION
Los ojos son los órganos humanos que facilitan el sentido de la
visión. El cuerpo humano consta de dos ojos, que se comienzan a formar en
el día 25 de la fase embrionaria y hacia la octava semana termina la génesis
del esbozo ocular, que seguirá madurando hasta el noveno mes. Se
compone de varias partes:
1.- El iris: Es la parte coloreada del ojo. Su función es regular la entrada de
luz aumentando o disminuyendo su tamaño según la intensidad de la
misma.
2.- La pupila: Es el orificio central del iris. Se dilata o contrae en función de
la cantidad de luz existente.
3.- El cristalino: Es la parte del ojo humano que enfoca el haz de luz en la
retina. Tiene forma de lente biconvexa y es la segunda lente más
importante.
4.- La córnea: Es una de las partes externas del ojo. Protege al cristalino y
al iris permitiendo el paso de la luz. Es responsable de dos terceras partes
de la potencia total del ojo, su enfoque es fijo.
4
1
El iris es un buen patrón biométrico gracias a las siguientes características:
1.- Es una estructura única por individuo que forma un sistema inalterable
durante toda la vida de la persona, además de poseer más información que
identifica unívocamente a una persona. Un atributo como la textura del iris
es de gran utilidad debido a su carácter permanente e inalterable, además
se estima que la probabilidad de encontrar dos personas con un patrón
idéntico es casi nula.
2.- Todas las personas tienen dos ojos, por lo que cumple la propiedad de
universalidad.
3.- Está bastante protegido del exterior por la córnea.
4.- La imagen del iris se puede obtener desde una distancia razonable, lo
que resulta cómodo para el usuario.
El presenta trabajo consiste en diseñar un modelo de segmentación
de imágenes para el reconocimiento de personas a través del iris. Para ello
se tomará las imágenes liberadas por el Centro de Investigación y
Seguridad Biométrica del Instituto de Automatización de la Academia China
de Ciencias, la base de datos es CASIA-Iris V 3.0 [1], se somete cada
imagen a algoritmos de procesamiento y codificación para realizar la
comparación respectiva.
1.2 JUSTIFICACION
El propósito del reconocimiento del iris es obtener en tiempo real la
identidad de una persona. La eficacia de los métodos propuestos se mide
5
en función de minimizar a las tasas de falsos rechazos y falsos
reconocimientos. El presente trabajo permitirá en lo posible establecer el
reconocimiento del iris con mayor precisión y por tanto confiabilidad para ser
usado como identificador.
Si bien desde 1990 la investigación sobre el procesamiento de
imágenes de iris ha tenido un gran progreso [2], el rendimiento del mismo
aún está lejos de ser el óptimo. Por ello, CASIA libera nuevas versiones de
base de datos para fomentar la investigación en este ámbito.
1.3 ALCANCES Y LIMITACIONES DE LA INVESTIGACION
1.- El presente trabajo pretende hacer un reconocimiento de iris
determinado como perteneciente a un individuo en particular, o en rechazar
si se trata de un impostor, no se evalúa el patrón que caracterice a personas
que tengan algún parentesco: primos, hermanos, etc.
2.- La base de datos CASIA-Iris V3 incluye 3 subconjunto de imágenes:
CASIA-Iris-lnterval, CASIA-Iris-Lamp, CASIA-Iris-Twins [1]; se usó las
imágenes de CASIA-Iris-lnterval ya que se adapta mejor para estudiar las
características detalladas del iris. Se deja para trabajos futuros usar la
versión CASIA-Iris-Lamp, donde se observa una expansión y contracción
de la pupila bajo diferentes condiciones de iluminación, y la versión CASIA
Iris-Twins si se desea estudiar la similitud y disimilitud entre gemelos.
3.- La dimensión de las imágenes fue de 320x280 píxeles en escala de
grises de un nivel de 8 bits, recogidos bajo iluminación infrarroja cercana [1 ].
6
4.- Además de usar una cámara con la calidad necesaria similar a los
experimentos de John Daugman [3], quedará como trabajos a futuro cual es
el efecto en los códigos de imágenes con baja resolución (WebCam entre
otros).
7
CAPITULO 11
IDENTIFICACION DE LA NECESIDAD
2.1 DESCRIPCION DE LA SITUACION ACTUAL
Con el desarrollo de la tecnología de adquisición de imágenes del
iris, se espera que el reconocimiento a través de él pueda convertirse en un
componente fundamental en la sociedad moderna. Sin embargo, el
reconocimiento del iris en entornos sin condiciones de luz, cambio de
posiciones para la captura de la información, oclusiones en las imágenes,
identificación a gran escala y muchos otros factores son temas que
requieren una mayor investigación.
Por ello, el Instituto de Automatización de la Academia China de
Ciencias lanza al dominio público CASIA Iris V3.0 [1], con el fin de promover
la investigación y el progreso en el reconocimiento de iris, de tal forma que
el éxito de una investigación no dependa de la disponibilidad del hardware
y/o infraestructura necesaria para capturar las imágenes:
8
Figura 1: Cámara desarrollada por CASIA [1 ].
Figura 2: Ejemplo de imágenes CASIA-Iris-lnterval [1]
9
Una de las primeras propuestas para la utilización del iris se presentó
en París con el oftalmólogo francés Bertillon [4]. Después de investigar y
documentar el uso potencial del iris como instrumento para identificar
personas, los oftalmólogos Flom y Safir [5] patentaron su idea en 1987; y
posteriormente, en 1994, patentaron los algoritmos respectivos junto con el
matemático John Daugman [6]. A partir de los trabajos mencionados
anteriormente se han ido desarrollando nuevas propuestas similares.
El rendimiento de los sistemas de reconocimiento de iris en entornos
sin restricciones aún está lejos de ser perfecto [2], se plantea una
combinación de las diversas técnicas de tratamiento de imágenes
categorizando las fases en: captura, pre-procesamiento, extracción
codificación y comparación. En la etapa de pre-procesamiento y
extracción-codificación es donde están apareciendo lás principales
discrepancias entre las líneas de investigación de la actualidad.
2.2 ARBOL DE OBJETIVOS
OBJETIVO GENERAL
1.- Desarrollar un modelo de segmentación para el reconocimiento de
personas a través del iris con una mínima tasa de falsos rechazos
(probabilidad de que el sistema rechace a un usuario legítimo por no ser
capaz de identificarlo correctamente) y falsos reconocimientos (el sistema
autentifique correctamente a un usuario ilegítimo).
10
OBJETIVOS ESPECIFICOS
1.- Definir un nuevo diseño para cada etapa de la fase de segmentación
hasta localizar el iris.
2.- Validar el tiempo de respuesta del proceso de segmentación hasta la
etapa de codificación del iris.
3.- Revisar y modificar los algoritmos y técnicas actuales en el tratamiento
de imágenes digitales.
11
CAPITULO 111
MARCO TEORICO
1.- Biometría: Es el estudio de métodos automáticos para el reconocimiento
único de humanos basados en uno o más rasgos conductuales o rasgos
físicos intrínsecos.
2.- Biometría estática: Estudia el conjunto de características físicas de los
individuos tales como: huella dactilar, iris, geometría de la mano, retina,
cara, líneas de la mano entre otras.
3.- Biometría dinámica: Estudia las características de conducta: escritura
manuscrita, voz, tecleo, gesto, movimiento corporal.
4.- Iris: Es la membrana coloreada y circular del ojo que separa la cámara
anterior de la cámara posterior. Su función principal es controlar la cantidad
de luz que penetra en el ojo.
5.- Pupila: Estructura del ojo que consiste en un orificio situado en la parte
central del iris por el cual penetra la luz al interior del globo ocular. Se trata
de una abertura dilatable y contráctil, aparentemente de color negro que
tiene la función de regular la cantidad de luz que le llega a la retina.
6.- Imagen digital: Es una matriz de bits que definen el color y la intensidad
de cada píxel en una imagen.
12
7.- Píxel: Es el elemento mínimo de una imagen, viene a ser cada celda en
la que se puede descomponer una imagen digital.
8.- Imagen RGB: Es una imagen digital que maneja 3 canales (color rojo,
verde y azul) y la resultante tiene tonalidades que surgen de las
combinaciones entre los colores primarios. Para esa codificación cada píxel
necesita 3 bytes, codificando cada color primario con 1 byte.
9.- Imagen en escala de grises: Es una imagen que requiere menor
información por píxel, puesto que los componentes RGB se mantienen fijos
en toda la imagen para formar la combinación de color gris y solo se
especifica un valor de intensidad para cada píxel, en comparación con las 3
intensidades que se requieren en las imágenes RGB. Cada píxel solo
requiere 8 bis, el rango de O a 255 va desde el negro al blanco. También se
le conoce como imagen de intensidad.
10.- Imagen binaria: Muestra únicamente dos valores: O y 1. Gráficamente
el cero representa el color negro y el uno el color blanco. Se le conoce como
imágenes blanco y negro.
11.- Procesamiento digital de imágenes: Técnicas que se aplican a las
imágenes digitales con el objetivo de mejorar la calidad y/o facilitar la
búsqueda de información.
12.- Proceso de filtrado: Técnica para obtener a partir de una imagen
origen otra final cuyo resultado sea más útil para efectuar operaciones de
procesado sobre ella.
13.- Morfología: Conjunto de herramientas y procedimientos que se utilizan
para extraer los componentes de una imagen utilizados para la
13
representación y descripción de regiones. Se aplica para imágenes de
intensidad e imágenes binarias.
14.- Segmentación de imágenes: Proceso que divide la imagen en sus
partes que la constituyen, se procede iterativamente hasta aislar las
regiones u objetos de interés
15.- Umbralización: Es un método de segmentación de imágenes el cual
consiste en convertir una imagen en escala de grises o una imagen binaria,
de manera que los objetos queden separadas del fondo.
16.- Distancia de Hamming: Cantidad de posiciones en las que son
diferentes dos cadenas, por ejemplo la distancia de Hamming entre las
siguientes cadenas de bits 01010101 y 0101000 es 2.
17.- Histograma de una imagen digital: Representa la frecuencia relativa
de los niveles de gris de la imagen.
3.1 PROCESAMIENTO DIGITAL DE IMAGENES
Cuando se hace referencia al término: "digitalizar una imagen", se
quiere decir que la imagen capturada por alguna cámara fotográfica u otro
dispositivo se convertirá en un archivo, para ser analizado por alguna
aplicación de software en. una computadora digital. Este archivo se
representa mediante un arreglo de píxeles.
Comúnmente se usa la combinación de los colores primarios (rojo,
amarillo y azul) para crear toda la gama de colores que conocemos; sin
14
embargo, las imágenes digitales utilizan la codificación RGB (rojo,
verde y azul respectivamente) para la representación de cada pixel. Para
representar la intensidad de cada componente de la codificación RGB, se
utilizará 8 bits (1 byte), los valores van del rango O a 255. Al ser tres colores
básicos se necesitan 3 bytes en total. Aquí unos ejemplos:
Color rojo= (255, O, O); Color verde= {0, 255, O); Color azul= (0, O, 255);
Color blanco = Color rojo + Color verde + Color azul = (255, 255, 255);
Color morado = Color rojo + Color azul = (255, O, 255);
En la Figura 3, se puede apreciar como la región seleccionada es
representada en formato RGB (cuadrado que está dentro del puntero en
forma de cruz). Como la región seleccionada es una parte del cielo que está
de fondo, casi todos los píxeles tienen el valor de 255 para sus 3
componentes:
R:255 R:255 R:255 R:255 R:255 G:255 G:255 G:255 G:255 G:255 8:255 8:255 8:255 8:255 8:255
R:255 R:255 R:255 R:255 R:255 G:255 G:255 G:255 G:255 G:255 8:255 8:255 8:255 8:255 8:255
R:255 R:255 R:255 R:255 R:255 G:255 G:255 G:255 G:255 G:255 6:255 8:255 8:255 6:255 8:255
R:255 R:255 R:255 R:255 R:255 G:255 G:255 G:255 G:255 G:255 6:255 8:255 8:255 8:255 8:255
R:255 R:255 R:255 R:255 R:255 G:255 G:255 G:255 G:255 G:255 8:255 8:255 8:255 8:255 8:255
Figura 3: Imagen RGB descompuesta
15
En la Figura 4, se selecciona la parte delantera del ómnibus, se logra
tomar un sector de color gris (cuadrado que está dentro del puntero en
forma de cruz), se puede apreciar el cambio en los valores de los
componentes RGB, en promedio casi todos los píxeles tienen el mismo
valor para cada componente.
Figura 4: Imagen RGB descompuesta
Otro punto a mencionar en las imágenes digitales es su tamaño.
Dentro del ámbito de procesamiento de imágenes, el tamaño espacial
(ancho y altura) no toma mayor relevancia, ya que una imagen de tamaño
espacial considerable no puede resultar tan útil al momento de analizarla si
la cantidad de pixeles que almacena no es lo suficiente como para
representar algun detalle en particular. Una imagen de mayor calidad es la
que alberga más píxeles tal como se aprecia en el Figura 5:
16
Figura 5: La imagen de la izquierda es de tamaño 35x40 pixeles, la
imagen de la derecha es de 280x320 píxeles [1 ].
Los archivos gráficos suelen tener tamaños grandes debido a la gran
cantidad de píxeles que manejan, por ello se desarrollaron técnicas de
compresión de archivos, que consisten básicamente en algoritmos
matemáticos que reducen la cantidad de bits necesarios para describir la
imagen, entre ellos: JPG, GIF, PNG, BMP entre otras.
Podemos decir entonces que una imagen RGB será representada
por una matriz tridimensional de tamaño mxnx3 píxeles, y cada píxel
corresponderá a los colores rojo, verde y azul. Una vez definido este
concepto podemos estudiar a las imágenes en escala de grises o escala
monocromática. Para convertir una imagen RGB a una imagen en escala
de grises, primero debemos definir el nivel de profundidad de tono de
gris, el cual se mide en bits. Llamaremos "n" a este nivel (normalmente se
17
menciona en cantidad de bits), a continuación se muestran unos gráficos
que describen gamas de tonalidad de acuerdo al valor de "n":
Para n = 1 bit hay sólo 2 valores: negro = O y blanco = 1
Para n =2 bits hay 4 tonalidades que van desde: negro = O hasta blanco = 3
Para n =3 bits hay 8 tonalidades: negro = O y blanco = 7
Las imágenes que son objeto de nuestro estudio tienen un nivel de 8
bits, el negro = O y el blanco= 255, si convertimos la Figura 5 a escala de
grises con un nivel de intensidad de 8 bits se puede apreciar que ya no
aparecen los componentes RGB, sino un solo valor:
18
Figura 6: Imagen en escala de grises .
Entonces, una imagen en escala de grises será representada por una
matriz bidimensional de mxn elementos, donde "m" es el número de pixeles
de largo· y "n" el número de píxeles de ancho. Cada valor de la matriz se
encuentra en el rango de O(negro) a 255(blanco). Una aproximación de
cómo se calcula cada valor viene,por la siguiente fórmula:
GRA Y=0.30*R+0.59*G+0.11*8 [7]
Una imagen binaria vendría ser una imagen en escala de grises con
nivel de intensidad de 2 bits, si bien se reduce al mfnimo los datos
necesarios para representar la imagen, es de mucha utilidad este tipo de
imágenes ya que se puede aprovechar las propiedades geométricas de lo ·
objetos en la figura, la mayoría de aplicaciones de software se basa en este
tipo de imágenes.
19
Figura 7: Imagen binaria de ejemplo
Llamaremos binarización al proceso de convertir una imagen en
escala de grises a imagen binaria, para ello se debe definir el umbral de
binarización. Si dibujamos un histograma de la Figura 6, donde el eje X
vendría a ser el rango de intensidad de gris (O a 255) y el eje Y la frecuencia
de cada píxel en la imagen, podríamos observar que las mayores
frecuencias lo tienen los intensidades 255(color blanco) , 150 (gris claro):
1 1
Figura 8: Histograma de una imagen en escala de grises
20
El umbral de binarización vendría a ser el valor que clasificará los
píxeles como parte de un objeto o parte del fondo de una imagen, si el píxel
es mayor al umbral se convertirá en un píxel blanco (fondo), si es menor se
convertirá en un píxel negro (objeto). Si binarizamos la Figura 6, con un
umbral de binarización de 150, obtendríamos la Figura 9:
Figura 9: Imagen binarizada con un umbral de 150 en una escala de 8 niveles
De acuerdo a lo que se desea buscar en la imagen, se debe definir el
umbral óptimo para binarizarla adecuadamente, la determinación de este
valor es crítico para el proceso de segmentación del iris que se verá mas
adelante. El método más apropiado para definir el umbral es el de Otzu, el
21
cual consiste en realizar una serie de iteraciones con todos los niveles de
intensidad que pueda tener la imagen, y seleccionar el nivel con menor
varianza entre segmentos. A continuación mostraremos cada paso que se
sigue en el método de Otzu con una imagen en escala de grises de tamaño
7X7 de nivel 6 para calcular el umbral óptimo:
Imagen a analizar
o 1 2 3 4 5
~ntensidad de gris
20
15
10
5
o
Histograma de la imagen
o 1 2 3 4 5
Figura 1 O: Imagen que será sometida al método de Otzu y su histograma
Primero, dividamos el histograma en 2 segmentos: la parte posterior
o fondo de la imagen, y la parte frontal. Elijamos algún umbral aleatorio,
digamos el nivel de intensidad 3(no afectará el resultado ya que el método
es iterativo y se encontrará el umbral óptimo):
22
Histograma : Parte posterior Histograma: Parte frontal
20
10 9
8 '7 }
6
4
2
o (1 1 2 3 4 5
Figura 11: División del histograma de la Figura 1 O.
Luego, para cada segmento se calcularán las siguientes variables
estadísticas:
Peso segmento posterior 11mbral-I
I frecuencia(i) W = . i=O "d d
P maxuna mt ens1 a
I frecuencia(i) i=O
Media segmento posterior 11mbra/-I
I frecuencia(i) * i u = i=O
p umbral-!
I frecuencia(i) i=O
Varianza segmento posterior 11mbra/-I
I (i- u P )2 * frecuencia(i)
(j' = i=O p 11mbra/-I
I frecuencia(i) i=Ü
23
Peso segmento frontal máximaint ensidad
I frecuencia(i) W = i=wnbra/
f máximaint ensidad
I frecuencia(i) i=O
Media segmento frontal máximaint ensidad
I frecuencia(i) * i U¡=
i=utnbral máximaint ensidad
I frecuencia(i) i=wnbral
Varianza segmento frontal max ima intensidad
I (i- u 1 )2 * frecuencia(i)
CY¡ = i=wnbral máxima int ensidad
I frecuencia(i) i=umbral
Para el umbral = 3 se muestran los cálculos:
. (20+6+4) Peso segmento posterzor: W = ( ) = 0.612
- p 20 + 6 + 4 + 7 + 9 + 3
. . (20 X Ü + 6 X 1 + 4 X 2) Medra segmento posterzor : uP = ( ) = 0.466
- - 20+6+4
Varianzª- segmentQ_posterior<JP ((ü-0.46~2 x20+(1-0.46~2 x6+(2-0.46~2 x4) =Ü.515
(20+6+4)
Peso t fi t l W (7 + 9 + 3) 0388 segmen o_ ron a : 1 = (20 + 6 + 4 + 7 + 9 + 3) = .
(7x3+9x4+3x5) Media segmento_ frontal : u 1 = (
7 +
9 +
3) = 3. 789
Varianza_ segmento_ frontal: rr 1 ((3 -3.789Y x 7 + (4-3.789Y x 9 + (5 -3.789Y x3) =0.4Sl
(7+9+3)
24
Finalmente, para calcular la varianza entre segmentos promediamos las
calculadas anteriormente con su peso respectivo:
Varianza_ entre_segmentos. a; =(aP * WP)+ (a1 * W1 ) = (0.515* 0.612) + (0.481 *0.388) = 0.502
Se debe repetir iterativamente estos pasos con cada nivel de gris, el valor
umbral óptimo corresponderá al de mínima varianza entre segmentos,
para la imagen a analizar de la Figura 1 O corresponde 6 iteraciones (el nivel
de intensidad va de O a 5):
Iteración 1: umbral = O
wp =O a-p =O wr =1 a-1 =3.123 a-¡ =3.123
Iteración 2: umbral = 1
Binarizar con umbral = 1
wp = 0.4082 a- p = o w1 = 0.5918 a-1 = 1.688 a-¡ = 0.9992
25
Iteración 3: umbral = 2
Binar!zar con umbral= 2
wp = o.5306 (} p = 0.1775 w1 = 0.4694 (} 1 = 0.8582 O"¡ = 0.497
Iteración 4: umbral = 3
Bina rizar con umbral= 3
wp = o.6122 (} p = o.5155 w1 = 0.3878 (} 1 = 0.4819 O"¡ = o.5025
Iteración 5: umbral = 4
Binarizar con umbral = 4
wp = 0.7551 (} p = 1.4024 w1 = 0.2448 (} 1 = 0.1875 O"¡ = 1.1049
26
Iteración 6: umbral = 5
Blnariz.ar con umbra~ =5
wp = o.9388 (j p = 2.5959 w1 = o.o612 (j 1 =o (ji = 2.437
El umbral óptimo para la imagen de la Figura 1 O siguiendo el método de
Otzu se obtiene en la segunda iteración, el valor es 2 con una varianza
entre segmentos de 0.992.
3.2. MORFOLOGIA Y FILTRO DE IMAGENES
Ahora que se tiene definido los conceptos de imagen binaria e
imagen en escala de grises, podemos explicar en que consiste la morfología
y filtros de imágenes. La morfología busca identificar estructuras, formas,
tamaños en imágenes basándose en la teoría de conjuntos (las imágenes
se representarán mediante conjuntos), pudiéndose realizar las operaciones
básicas en cada una de ellas, también se les conoce como operaciones
unitarias, entre ellas tenemos: complemento, traslación y reflexión; y las
operaciones entre 2 imágenes, como la unión, intersección [7]. Para el
procesamiento de imágenes normalmente se utilizan combinaciones de
ambas dependiendo de lo que se busca analizar y/o extraer de la imagen.
27
A B AUB
u =
A
n
Figura 13: Operaciones básicas entre imágenes
Las operaciones morfológicas simplificará el análisis de las
imágenes, se realizan entre dos imágenes (conjuntos): la primera es la
imagen inicial sobre la cual se espera buscar o formar alguna figura, y la
segunda es el elemento estructurante, una imagen predefinida con la cual
interaccionará la imagen inicial [7). Todo elemento estructurarte debe tener
un punto de inicio, el cual se comparará con cada píxel de la imagen que
se desee someter. La elección del elemento estructurante dependerá de lo
que se desee obtener (rellenar agujeros, eliminar regiones pequeñas, etc).
29
Figura 14: Ejemplos de elementos estructurantes, los puntos de inicio de cada
elemento ha sido marcado por el círculo negro dentro de su respectivo píxel. El
punto de inicio no necesariamente es el centro de la imagen o el inicio de una
línea, todo dependerá del análisis que se requiera.
Las operaciones morfológicas más usadas son: dilatación, erosión,
apertura y cierre. Llamaremos a la imagen inicial 1 y al elemento
estructurador E, ambas son imágenes binarias con un fondo negro. El
proceso de dilatación consiste en realizar una traslación iterativa de E por
todo 1, y cada vez que el punto de inicio de E coincida con un píxel blanco
de 1, deberá activarse todos los demás píxeles que se encuentren debajo
del punto de inicio o a su alrededor [7].
30
Imagen inicial Elemento estructurante Imagen dilatada
Dilatar
Figura 15: Dilatación de una imagen con 2 elementos estructurantes
La dilatación también puede representarse como la unión entre 1
(imagen inicial) y la imagen resultante de trasladar 1 (imagen trasladada),
usando como vector de traslación al elemento estructurador E [7]. Es
importante señalar que la dilatación cumple la propiedad conmutativa entre
elemento estructurador e imagen inicial, así como la propiedad distributiva
entre la imagen inicial y la unión dos elementos estructurantes, se realiza la
dilatación por separado con cada elemento y al final se realiza la unión entre
imágenes. En la Figura 16 mostramos el resultado de la dilatación tomando
la imagen inicial de la Figura 15 y se aprecia el mismo resultado, primero se
realiza la traslación (imagen trasladada) y luego se procede con la unión
entre las imágenes:
31
Imagen inicial Elemento estructurante lmagen traslada
Imagen inicial imagen traslada imagen dilatada
u =
Figura 16: Usando teoría de conjuntos podemos representar la dilatación
como: 1 EB E = U 11 tE E
Si la dilatación se puede representar como la unión de los traslados,
la erosión se representa como la intersección entre traslados negativos. La
dilatación y erosión son muy similares en el sentido de que lo que uno hace
a la imagen inicial el otro lo hace al fondo de la imagen [7]. La erosión
consiste en realizar una traslación iterativa de E alrededor de 1, y cada vez
que todos los píxeles de E coincidan en valor con los píxeles de 1, deberá
quedarse marcado dicho punto de inicio. Una vez que se haya finalizado el
recorrido, la imagen erosionada vendría a ser la unión de todos los puntos
marcados como inicio:
32
imagen inicial Elernento estructurante Imagen erosionada
Erosionar
Figura 17: Imágenes erosionadas
La erosión no cumple la propiedad conmutativa a diferencia de la
dilatación, cumple la propiedad distributiva respecto a la intersección [7].
También podemos representarla como la intersección entre 1 y la imagen
resultante de la traslación inversa de 1 tomando como vector al elemento
estructurador. Mostramos a continuación el resultado tomando la imagen
inicial de la Figura 15 y se aprecia el mismo resultado:
33
Imagen inicial Elemento estructurante Imagen traslada
Trasladar inversa
Imagen inicial Imagen traslada Imagen dilatada
('i =
Figura 18: Usando teoría de conjuntos podemos representar la erosión como:
IeE = n 1_1 te E
A partir de la dilatación y erosión se puede definir muchos
filtros sobre una imagen binaria, con tan sólo combinarlos y usando un
elemento estructurador apropiado. La apertura es una operación
morfológica resultado de la combinación de una erosión y dilatación
secuencialmente usando el mismo elemento estructurador [7]. Como puede
verse, la erosión sirve para eliminar ciertas partes de una imagen que no
coinciden exactamente con el elemento, y al dilatar la parte resultante
recuperamos formas perdidas durante la erosión, por eso es que la
apertura se usa para eliminar regiones pequeñas, puntos aislados, etc. Se
representa de la siguiente forma:
34
lOE = (!E> E) EB E
imagen inicial
Elemento estructurante
Erosionar 1•1 1 1 1 1 1
Imagen erosionada
Figura 19: Primera fase de la apertura: erosionar la imagen
35
Imagen erosionada
Elemento estructurante
Dilatar 1•1 1 1 1 1 1
Imagen aperturada
Figura 20: Segunda fase de la apertura: dilatar la imagen
36
El cierre es una combinación de una dilatación y erosión
secuencialmente con el mismo elemento estructurador. Se representa
como: 1 • E = (1 ffi E)E>E
Imagen inicial
Elemento estructurante
Dilatar 1•1 1 1 1 1 1
imagen dilatada
Figura 21: Primera fase del cierre: dilatar la imagen
37
Imagen dilatada
Elemento estructurante
Erosionar 1•1 1 1 1 1 1
~ Imagen cerrada
Figura 22: Segunda fase del cierre: erosionar la imagen
38
Ahora explicaremos los filtros sobre imágenes. Los filtros son
operaciones que permiten reducir las variaciones de intensidad entre
píxeles vecinos(a esto se le conoce como suavizar la imagen), buscar
píxeles donde hay cambios bruscos de intensidad (detectar bordes), o
eliminar el ruido. Entiéndase por ruido a la información no deseada dentro
de una imagen digital. El origen del mismo puede estar en la transmisión y/o
adquisición de la imagen. Hay varios tipos de ruido: gaussiano, uniforme,
impulsivo.
Figura 23: La primera imagen corresponde al ruido del tipo gaussiano, la
segunda a una imagen con ruido del tipo impulsivo.
39
Los filtros pueden clasificarse en dominio del espacio: convolución
y correlación, y dominio de la frecuencia: transformada de Fourier. Los filtros
que más se utiliza en el presente trabajo son las de dominio del espacio,
tanto los filtros lineales (media y gaussiano), como los filtros no lineales
(mediana). La convolución de una función Y(x,y) respecto a la función
X(x,y) genera la nueva función Z(x,y) definida por la siguiente fórmula:
"' "' Z(x,y) = ¿ ¿x(i,j)Y(x- i,y- j)[7]
i=-ooj=-oo
La correlación no será muy utilizado dentro del modelo propuesto, en
adelante usaremos las convoluciones de 3X3 o 5X5 elementos. Los filtros
lineales consisten en generar una nueva imagen a partir de una imagen
inicial realizando operaciones dentro de un entorno de vecindad alrededor
de cada píxel de la imagen inicial. Se denomina vecindad de un pixel al total
de vecinos en el plano horizontal y vertical, si se habla de una vecindad de
tipo 4, se hace referencia a un total de 4:
x,y-1
x-1,y x,y-1 x+1, y
x,y+1
40
Sea 1 la matriz que representa una imagen digital, M una matriz de
coeficientes de tamaño (2a+1) x (2b+1) que se usará como operador sobre
el entorno de vecindad de cada píxel (también se le conoce como máscara
de convolución) y R la imagen resultante de aplicar un filtro lineal,
podemos definir a R como:
a b
R(x,y) = I IM(i,j)l(x+i,y+ J)[7] i~-aj~-b
y
Ori en
rv1atriz de coeficientes
M(-1,-1) M[-1,0) M[-1,1)
X M(0,-1) f·.il(O,O) M(0,1)
Mtl,-1) M(1,0) M(1,1)
Figura 24: En la figura la máscara de convolución es una matriz de tamaño 3X3
El filtro de la media consiste en recorrer cada píxel y reemplazarlo
por la media de los píxeles vecinos. Dependiendo del tamaño de la máscara
a elegir, la matriz de coeficiente variará:
41
1/9
1/9
1/25
1/25
1/25
1/25
1/25
1/9
1/25
1/25
1/25
1/25
1/25
1 {Q. ! -·
1/9
1/25
1/25
1/25
1/25
1/25
Máscara de un filtro de media de tamaño 3X3
1/25 1/25
1/25 1./25
1/25 1/25 P•,•1áscara de un filtro de media de tamano sxs
1/25 1/25
1/25 1/25
La principal desventaja de este filtro es la sensibilidad a cambios
locales o crear nuevas intensidades que no aparecen en la imagen inicial
añadiendo ruido o perdiendo información.
El filtro gaussiano resulta de promediar con distintos pesos cada
píxel de la imagen, donde estos valores tratan de representar la función
gaussiana:
2 Jr(J' 2 e G (X' y)
1
42
1/273
1 4
4 16
7 ~~ .¡_!:;e
4 16
1 4
l 4
25 16
41 26
26 16
7 4
1
4
7
4
1
Máscara de un filtro gaussiano con tamaño SXS y un cr=l.O
Una ventaja del filtro gaussiano es que podemos realizar dos
convoluciones en el eje horizontal y vertical separadamente de acuerdo al
ruido que se desee eliminar. Además es más uniforme que el filtro de la
media ya que no asigna los mismos pesos a cada píxel, sino que el valor
máximo aparece en el píxel central y disminuye en dirección a los extremos.
El filtro de mediana reemplaza el píxel central por la mediana de los
píxeles contenidos en la vecindad del filtro. Recordando el concepto de
mediana, se calcula ordenando el conjunto de valores sobre el cual se está
analizando, luego se selecciona aquel valor que divide en la mitad a la
agrupación.
43
•!":>=' _ ..... _, 111 14>¡) 130 123
1?.0:: 105 Conjunto de valores { 100~ 1057 109, 110, 120
128j 129,, 1311 134}
125 105 La mediana es 120, el píxel central110 será reernplazado por este valor
126 131
12·3 130 131 132 133
Si bien hay un proceso de ordenamiento para el cálculo de la
mediana que adiciona un tiempo al procesamiento, el filtro es muy útil pues
fuerza los píxeles diferenciados dentro del vecindario a ser más parecido
entre ellos, logrando una homogenización en caso de ruidos aleatorios, pero
también ocasiona perdida de líneas, redondear esquinas, entre otros.
Existe un filtro para detectar bordes dentro de la imagen, siendo uno
de los más robustos actualmente: filtro de Canny. Los pasos principales del
algoritmo son:
1.- Se realiza una convolución con un filtro gaussiano. De esta forma se
tendrá una distribución uniforme.
2.- Se calcula el gradiente de la imagen resultante del paso 1, para
determinar los píxeles donde se produce máxima variación (mayor módulo
del vector gradiente). También se determina la dirección del vector
gradiente
44
3.- La matriz M correspondiente al módulo del gradiente de la función
gaussiana tendrá valores grandes donde la variación de la intensidad sea
grande. Se eliminan (igualan a cero) aquellos píxeles que no son máximos
locales en la dirección del gradiente (que es perpendicular al borde).
4.- Se realiza un proceso de doble umbralización para determinar los
píxeles del borde: se marcan los píxeles con valor por encima de un umbral
U 1; se marcan aquellos píxeles conectados a los primeros cuyo valor este
por encima de un segundo umbral U2 (U2<U1). Esto eliminará falsos bordes
o bordes dobles.
Figura 25: Si aplicamos filtro de canny a la Figura 6.
45
CAPITULO IV
DESCRIPCION DEL MODELO PROPUESTO
Se presenta el esquema para el reconocimiento de iris. Se divide en
4 etapas el proceso de reconocimiento: segmentar iris, transformar iris,
codificar iris, calcular DH (distancia de haming). La entrada para el sistema
es un vector de imágenes tomadas de la base de datos CASIA Iris lnterval
3.0, consta de un total de 2660 imágenes de 249 personas [1]. Se muestra
un diagrama de flujo de datos del sistema, el proceso de segmentar iris se
dividirá 2 niveles más, en el primer subnivel consta de 4 subprocesos
(binarizar imagen, localizar máxima región pupilar, identificar ruido y
localizar pupila en región, localizar iris), es aquí donde se detalla cada
proceso con sus respectivas dependencias y salidas que alimentan a sus
sucesores. También se describirá el pseudocódigo de cada proceso en
todos los niveles y en los anexos la· implementación de cada uno. Como
único parámetro se tiene el. umbral de decisión, el cual viene a ser un valor
entre O y 1, que se comparará con la distancia de haming obtenida entre 2
imágenes distintas, si es menor o igual se considera que las imágenes
comparadas pertenecen a la misma persona(ÉXITO), si es mayor
corresponde a personas diferentes(FRACASO).
46
o
[IMAGEN]
...
UMBRAL DE DECISION
·>~ ., .....
¡~ :~~~
~~~ SISTEMA DE RECONOCIMIENTO DE IRIS ¡:::
1
:~~
~ ... ~ ... • .... ~ ... • .... • .... • .... ~ .. ~ .. ~ .. ~ .. ~ .. ~ .. ~ .. ~ .. ~ .. • .. .._ .. .._ .. ~ .. .._ .. .._ .. .._ .. ._ .. .._ .. .._ .. ~ .. .._ ... _.:;. .. ·_ ... _ ... _ ... _ .. .._ .. .._ .. .._ .. .._ .. .._ .................... .._ .. .._ .. .._ ........ .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .......................... .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._<.. .. .._ .. .._ .. .._ .. .._ .. .._ .. .._ .. .._,.._ .. .._ .. .._ .. .._~~~~:
Figura 26: Sistema de reconocimiento de iris
47
[EXITO, fRACASO]
:@ [RADIOIRIS ,RADIOPUPILA ,COLUMNAPUPILA ,FILAPUPILA ,IRIS]
SEGMENTAR IRIS 1;= ' NN>'ú.'ú'ú.'ú.'ú.'•.'"-'"-·•••••••>Y>'•'"-'b~~¡
[IMAGEN]
o
l----.. ~L TRANSFORMAR IRIS ;::
·-:~·:·:~~~~-:·:·:·:·:·:·:~~~·:·:~~~~~~~~~~~~-:·:~·:·:·:·j~ 1 /F:, 1" ~:.
11-l CODIFICAR IRIS ~-, ... ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,,,,.,.,.,., .... wd~¡:
(fJ
[IRISCOORDENADASPOLARES]
UMBRAL DE DECISION
[CODIGOIRIS] .. [EXITO, FRACASO]
fó :~~~ ·V'
~ CALCULAR DH l~ :~~~
:~:~
.~~ ..
··~·~·~···················································-~~~~~
Figura 27: Descomposición del sistema de reconocimiento: en la etapa de segmentación habrá 2 niveles adicionales para un mejor
detalle de la propuesta
48
4.1 ESQUEMA DE SEGMENTACIÓN DEL IRIS
El objetivo en esta etapa es detectar la pupila y el iris, asumiendo que
ambos tienden a ser círculos y con el mismo centro (esta aproximación no
afectará al reconocimiento de la persona como se verá en los resultados),
detectaremos primero las coordenadas del centro de la pupila y su radio,
luego se calcula el radio del iris y finalmente se recorta la imagen para sólo
quedarnos con el iris.
La segmentación consiste en 4 etapas: binarizar la imagen de
acuerdo al contraste usando el método de Otzu explicado en el capítulo 3,
luego se identifica la región convexa de mayor área donde se puede
localizar la pupila, dentro de esta región se identifica el ruido en esta región
producto de la cámara que utilizó CASIA para obtener las imágenes, se
procede a eliminar el ruido y se identifica a la pupila. Luego se recorta la
imagen en el sector que esta fuera del ruido de las pestañas superiores e
inferiores. Sobre este sector se obtendrá el radio del iris, luego de aplicar el
filtro de Canny explicado en el capítulo 3.
Sólo en la etapa de binarización se interactúa con la base de datos
liberada por CASIA, la imagen inicial obtenida se usa en las etapas
posteriores a la binarización ya que la información a codificar se encuentra
en ella. Al final de esta etapa se obtendrá las coordenadas del centro del iris
y su radio, la pupila formará parte del fondo de la imagen.
49
[IMAGEN]
--ro
BINARIZAR IMAGEN t' •"•"•"•"•"•"•"•"•"•"NN•"•"•"•"•"•"•"•"•"•"•"•"•"•"NNo;¡~¡
[imagenBinarizada]
o " '- -1 LOCALIZAR MAXIMA r 1 [imagenüriginaiRecortadaMaximaRegionPosiblePupila,xc,yc,rc]
f~ REGION PUPILAR ~~ ... "''' ''''''' '"' ''' ""''' ------~:1~
[imagenlniciaiCASIA] ~__..JO :~.
IDENTIFICAR RUIDO Y :~: ~ LOCALIZAR PUPILA @
EN REGION ¡~3, -~~~~;:~~~;:~;:~;:~;:~;:~,~,~~'~'~"~ .. ~ .. ~ .. ~ .. ~ .. ~ .. ~ .. ; .. ~ .. ~ .. ~ .. ~ .. ~ .. ! .. ; .. ; .. ~ .. ; .. ~ .. ; .. ~ .. ~ .. ; .. ~ .. ~ .. ;~;~~-
[filaPupila ,columnaPupila ,radioPupila]
O :-Jiris,radiolris]
'..¡ •'• .. ; .. . ,...., LOCALIZAR IRIS , '-"-'
Figura 28: Descomposición del proceso de segmentación del iris
50
4.1.1 Binarización imagen inicial
El objetivo de este proceso es generar una imagen binaria
(imagenBinarizada) y otra en escala de grises (imagenlniciaiCASIA). Se
binariza de acuerdo a un umbral óptimo como el que se detallo en el
capitulo anterior, se rellenan los agujeros con pixeles blanco. También se
convierte el archivo de la base de datos en una matriz bidimensional. Esta
última imagen servirá de input para otros procesos.
Pseudocódigo : LEER IMAGEN
ENTRADA: CODIGOPERSONA
SALIDA: IMAGENINICIALCASIA
VARIABLES:
RUTABASEDEDATOS = "/. ./";
NOMBREARCHIVO = '"';
INICIO
LEER CODIGOPERSONA;
NOMBREARCHIVO = RUTABASEDEDATOS + CODIGOPERSONA;
LEER NOMBREARCHIVO;
IMAGENINICIALCASIA = CONVERTIRMATRIZ (NOMBREARCHIVO);
FIN
51
Pseudocódigo : BINARIZAR IMAGEN DE ACUERDO A CONTRASTE
ENTRADA: IMAGENINICIALCASIA
SALIDA: IMAGENBINARIZADA
VARIABLES:
IMAGENENESCALADEGRISES;
TAMAÑOMATRIZ;
NIVELCONTRASTE;
INICIO
TAMAÑOMATRIZ = DIMENSIONES(IMAGENENESCALADEGRISES);
SI TAMAÑOMATRIZ = 3
IMAGENENESCALADEGRISES CONVERTIRGRIS(IMAGENINICIALCASIA);
SINO
IMAGENENESCALADEGRISES = IMAGENINICIALCASIA;
FIN SI
NIVELCONTRASTE CALCULARNIVEL(IMAGENENESCALADEGRISES);
=
=
IMAGENBINARIZADA = BINARIZAR(IMAGENENESCALADEGRISES, NIVELCONTRASTE);
FIN
52
Pseudocódigo : RELLENAR AGUJEROS BLANCOS
ENTRADA: IMAGENBINARIZADA
SALIDA: IMAGENBINARIZADAFINAL
VARIABLES:
TOTALPIXELES;
RADIO;
INICIO
TOTALPIXELES = CONTARPIXELESNEGROS(IMAGENBINARIZADA);
RADIO= RAIZCUADRADA(TOTALPIXELES/3.1415);
IMAGENBINARIZADAFINAL = ELIMINARREGI6NESMENORESDIAMETRO(IMAGENBINARIZADA ,2*RADIO);
IMAGENBINARIZADAFINAL =- IMAGENBINARIZADAFINAL;
FIN
53
(ó [IMAGEN] __..
~
¡~ LEER IMAGEN t~:
<··········.w.·.w.•.•.•.•.w.w<•W-'<•'•W-'<<•J¡~
[imagenlniciaiCASIA]
~ ;~.
\.. ~u BINARIZAR IMAGEN 1~: ___, DE ACUERDO A :::: ,
CONTRASTE ¡~¡: . ·--~~-~~~~~:-~:-~~~~:-~~~~:-~:-m:-:-~~:-~~:-:-~:-~:A~ 1 [imagen Bina rizad a]
(fJ r.:~::
y RELLENAR AGUJEROS~~~~ [imagenBínarízada.¡. BLANCOS .¡;~
;~~~= '~,•,•,•,•,• .. •,•.::,•,•,•,•..t .. "•'•'•'•'•'•'•'•'•"•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•;~~~~:
Figura 29: Subprocesos de la segmentación del iris
54
4.1.2 Localización de la máxima región pupilar
El objetivo en esta etapa es encontrar un círculo que envuelva
completamente a la pupila. Como se mostrará en los resultados, no
necesariamente será concéntrica a la pupila, en algunos casos son círculos
tangentes, en otros el círculo hallado es la pupila misma. Se obtendrá las
coordenadas del centro de este círculo, así como su radio. Decimos que es
la máxima región porque el bucle donde se realiza la búsqueda va
disminuyendo hasta encontrar el primer círculo. Pueden encontrarse varios
círculos, pero sólo basta el de mayor radio ya que los procesos de
segmentación posteriores se encargarán de eliminar el ruido dentro de ella y
encontrar la pupila.
En la última etapa se recorta la imagen original, dándole un fondo
blanco a todos los elementos que se encuentren fuera de dicha región. De
esta manera se segmenta la imagen original para que la búsqueda de la
pupila sea en una región más acotada y con la certeza que se encuentra
dentro de dicha región. Se implementó un método para determinar el centro,
ya que el elemento estructurante que se utilizó no fue exactamente un
círculo, sino un octógono.
55
Pseudocódigo CALCULAR RADIO MAXIMO REGION CONTIENE
PUPILA
ENTRADA: IMAGENBINARIZADAFINAL
SALIDA: RADIOMAXIMO
VARIABLES:
RADIOMAXIMOCIRCULOPIXELESBLANCOS;
RADIOMAXIMOLIMITANDOAL TURAS;
RADIONMAXIMOREGIONESCONVEXAS;
RADIOMAXIMOTEORICO;
PIXELES;
MAXIMAFILAQUECONTIENEALMENOSUNPUNTOBLANCO;
MINIMAFILAQUECONTIENEALMENOSUNPUNTOBLANCO;
FILAS; COLUMNAS; CANTIDADDECUADRADOS; LADOCUADRADO;
INICIO
FILAS= NUMEROFILAS(IMAGENBINARIZADAFINAL);
COLUMNAS= NUMEROCOLUMNAS(IMAGENBINARIZADAFINAL);
PIXELES =CONTARPIXELESNEGROS(IMAGENBINARIZADAFINAL);
RADIOMAXIMOCIRCULOPIXELESBLANCOS= RAIZCUADRADA(PIXELES/3.1415);
DESDE FILA= 1 HASTA FILAS
FILA= OBTENERFILA(IMAGENBINARIZADAFINAL,FILA);
56
SI FILA = VECTORCEROS;
SALIR;
SINO
MINIMAFILAQUECONTIENEALMENOSUNPUNTOBLANCO = FILA;
FIN SI
FIN DESDE
DESDE FILA= 1 HASTA FILAS
VAR = FILAS- FILA +1 ;
FILA= OBTENERFILA(IMAGENBINARIZADAFINAL,VAR);
SI FILA= VECTORCEROS;
SALIR;
SINO
MAXIMAFILAQUECONTIENEALMENOSUNPUNTOBLANCO = FILA;
FIN SI
RADIOMAXIMOLIMITANDOAL TU RAS = (MINIMAFILAQUECONTIENEALMENOSUNPUNTOBLANCO+ MAXIMAFILAQUECONTIENEALMENOSUNPUNTOBLANC0)/2;
CANTIDADDECUADRADOS = CONTARCUADRADOS(IMAGENBINARIZADAFINAL);
RADIONMAXIMOREGIONESCONVEXAS = RAIZCUADRADA(CANTIDADDECUADRADOS*LADOCUADRADO*LADO CUADRAD0/3.1415);
RADIOMAXIMOTEORICO = (FILAS- FILAS/4)/2;
RADIOMAXIMO
MINIMO(RADIOMAXIMOCIRCULOPIXELESBLANCOS,
57
=
RADIOMAXIMOLIMITANDOAL TURAS,RADIONMAXIMOREGIONESCON
VEXAS,RADIOMAXIMOTEORICO);
FIN
Pseudocódigo : BUSCAR MAXIMA REGION CIRCULAR CONTIENE
PUPILA
ENTRADA: IMAGENBINARIZADAFINAL, RADIOMAXIMO
SALIDA: IMAGENENCONTRADAFORMADISCO
VARIABLES:
RADIOREAL = RADIOMAXIMO;
CIRCULO;
INICIO
CIRCULO= GENERARCIRCULO(RADIOREAL);
DESDE RADIOREAL=RADIOMAXIMO HASTA 1
SI CIRCULO & IMAGENBINARIZADAFINAL =CIRCULO
SALIR;
ELSE
RADIOREAL = RADIOREAL- 1;
CIRCULO= GENERARCiRCULO(RADIOREAL);
FIN SI
FIN DESDE
IMAGENENCONTRADAFORMADISCO =CIRCULO;
58
Pseudocódigo : LOCALIZAR CENTRO DE CIRCUNFERENCIA
ENTRADA: IMAGENENCONTRADAFORMADISCO
SALIDA: X,Y,RC
VARIABLES:
VALORMINIMOENCONTRADOXC;
VALORMAXIMOENCONTRADOXC;
VALORMINIMOENCONTRADOYC;
VALORMAXIMOENCONTRADOYC;
FILAS;COLUMNAS;
INICIO
FILAS= OBTENERNUMERODEFILAS(IMAGENENORIGINALCASIA)
COLUMNAS=
OBTENERNUMERODECOLUMNAS(IMAGENENORIGINALCASIA);
DESDE FILA= 1 HASTA FILAS
SIIMAGENENCONTRADAFORMADISCO(FILA) <> 1
VALORMINIMOENCONTRADOXC = FILA;
FIN SI
FIN DESDE
59
DESDE FILA= FILAS HASTA 1
SIIMAGENENCONTRADAFORMADISCO(FILA) = 1
VALORMAXIMOENCONTRADOXC =FILA
FIN SI
FIN DESDE
X=(
VALORMINIMOENCONTRADOXC+VALORMAXIMOENCONTRADOXC)/2
DESDE COLUMNA = 1 HASTA COLUMNAS
SI IMAGENENCONTRADAFORMADISCO(COLUMNA) <> 1
VALORMINIMOENCONTRADOYC =COLUMNA;
FIN SI
FIN DESDE
DESDE COLUMNA = COLUMNAS HASTA 1
SI IMAGENENCONTRADAFORMADISCO(COLUMNA) <> 1
VALORMAXIMOENCONTRADOYC =COLUMNA;
FIN SI
FIN DESDE
X=(
VALORMI NIMOENCONTRADOXC+VALORMAXIMOENCONTRADOXC)/2
Y=(
VALORMINIMOENCONTRADOYC+VALORMAXIMOENCONTRADOYC)/2
RC=MAXIMO(CANTIDADCEROSPORCOLUMNA(IMAGENENCONTRAD
AFORMADISCO)
60
Pseudocódigo : RECORTAR REGION CIRCULAR
ENTRADA: IMAGENENORIGINALCASIA, XC,YC,RC
SALIDA:·IMAGENORIGINALRECORTADA
VARIABLES:
FILAS, COLUMNAS
INICIO
FILAS= OBTENERNUMERODEFILAS(IMAGENENORIGINALCASIA)
COLUMNAS=
OBTENERNUMERODECOLUMNAS(IMAGENENORIGINALCASIA);
DESDE FILA= 1 HASTA FILAS
DESDE COLUMNA= 1 HASTA COLUMNAS
SI (XC-FILA)* (XC-FILA)+(YC-COLUMNA)*(YC-COLUMNA) > RC*RC
CONVERTIRPIXELBLANCO(IMAGENORIGINALCASI[FILA][COLUMNA];
FIN SI
FIN DESDE
FIN DESDE
FIN
61
-------1.,. CALCULAR RADIO MAXIMO ~j imagenBinarizad t~:
~ REGION CONTIENE PUPILA ~j
ro
,,,,,.,,, .. , .. ..._.ú.,.",.•,•o.'·'·'-'·'·'-'·'·'"'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·'·)~¡
j_
LOCALIZAR CENTRO
:~~ ~~~~~ ~~~~~
CIRCUNFERENCIA ilt;
._,_,_,_,,,,,_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,_,_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;l~
[imagenlniciaiCASIA]
[radioMaximo]
fó ..___....
BUSCAR MAXIMA REGION ~ . CIRCULAR CONTIEN PUPILA ~~:
,,,,,,,,,,w,','•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•'•',w~~IJ [imagenEncontradaFormaDiscoPorStrel]
[xc,yc,rc]
r-::::1 .....::.J
[imagenOriginaiRecortadaMaximaRegionPosiblePupila]
fó RECORTAR REGION
CIRCULAR ~¡¡¡ .•>:•:~:·:·:~•:·:~:;..:-..:•:•:o:.;;:~,:-.:•'K-0:.'-X•~~"K•".'•: .. :'-:•:•:•:·:;;.:;.:.:~;~;~
1 r;:-¡
.....::.J
Figura 30: Descomposición del proceso de localización de máxima región pupila
62
4.1.3 Identificación de ruido y localización de la pupila en región
Como se ha mencionado, la cámara que utilizó CASIA para capturar
las imágenes le agregó un ruido exactamente en la región pupilar (puntos
blancos producto del reflejo). A pesar de tener acotada la región donde
sabemos con certeza se encuentra la pupila, debemos identificar el ruido
para rellenarlo, de tal forma que la búsqueda del círculo sea efectiva. En
caso no identificáramos el ruido, podríamos entrar en escenarios donde el
circulo hallado es de menor radio que la pupila.
Exactamente la pupila no es un círculo, dentro del método buscar
región circular para pupila, se halla la mínima región circular que la
contenga. Además, las esquinas de la imagen binaria pasada como input no
forman parte del fondo porque son píxeles blancos, se define una función
para la conversión a pixeles negros.
Para encontrar las coordenadas del centro del círculo que envuelve a
la pupila primero se debe encontrar el punto más alto, en este caso si
empezamos a realizar la búsqueda de la fila donde aparece el primer píxel
blanco, la columna de este punto define la columna del centro, y luego
buscamos el punto que este más al extremo derecho donde aparece el
último píxel blanco, la fila de este punto define la fila del centro. Luego
empezamos a generar círculos hasta que la región reunida entre este
63
círculo generado y la imagen sin ruido en las esquinas sea igual a la región
reunida.
Pseudocódigo : LOCALIZAR PUPILA EN REGION
ENTRADA: IMAGENORIGINALRECORTADA,XC, YC, RC
SALIDA: IMAGENPUPILA
VARIABLES:NIVEL,IMAGENBINARIA,LADODELCUADRAO,RUIDO,
IMAGENSINRUIDODENTRODEPUPILA,FILAS,COLUMNAS
INICIO
FILAS= OBTENERNUMERODEFILAS(IMAGENENORIGINALCASIA)
COLUMNAS=
OBTENERNUMERODECOLUMNAS(IMAGENENORIGINALCASIA);
NIVEL =
CALCULARNIVELCONTRASTE(IMAGENORIGINALRECORTADA);
IMAGENBINARIA =
BINARIZARIMAGEN(IMAGENORIGINALRECORTADA,NIVEL);
IMAGENSINRUIDODENTRODELAPUPILA
IMAGENORIGINALRECORTADA;
DESDE FILA= 1 HASTA FILAS
DESDE COLUMNA = 1 HASTA COLUMNAS
VAR = (XC-FILA)*(XC-FILA)+(YC-COLUMNA)*(YC-COLUMNA);
SIIMAGENBINARIA[FILA][COLUMNA] = 1 & VAR < RC*RC
64
=
IMAGENSINRUIDODENTRODELAPUPILA[FILA,COLUMNA] =O;
RUIDO= RUID0+1;
FIN SI
FIN DESDE
FIN DESDE
LADODELCUADRADO=RAIZCUADRADA(RUIDO);
IMAGENSINRUIDODENTRODEPUPILA=FIL TROMEDIANA(IMAGENORI
GINALRECORTADA, LADODELCUADRADO);
NIVEL = CALCULARNIVELCONTRASTE(IMAGENSINRUIDODENTRODEPUPILA
);
IMAGENPUPILA =
BINARIZARIMAGEN(IMAGENSINRUIDODENTRODEPUPILA,NIVEL);
FIN
Pseudocódigo: BUSCAR REGION CIRCULAR PARA PUPILA
.ENTRADA: IMAGENPUPILA
SALIDA: FILAPUPILA,COLUMNAPUPILA,RADIOPUPILA
VARIABLES: IMAGENBINARIZADASINRUIDOENESQUINAS,
65
CANTIDADPIXELESBLANCOS,FLAGCONTIENECIRCULO,CIRCULO,
REGIOREUNIDA
INICIO
IMAGENBINARIZADASINRUIDOENESQUINAS=
ELIMINARRUIDOESQUINASSUPERIORESINFERIORES(IMAGENPUPIL
A);
CANTI DADPIXELESBLANCOS=CALCULARCANTIDADPIXELESBLANC
os
(IMAGENBINARIZADASINRUIDOENESQUINAS);
MINIMORADIO=RAIZCUADRADA(CANTIDADPIXELESBLANCOS/3.1415
);
[PUNTOMASAL TO,PUNTOMASEXTREMO]=
LOCALIZARPUNTOSEXTREMOSIMAGENBINARIZADA(IMAGENBINAR
IZADASINRUIDOENESQUINAS);
CIRCULO=GENERARCIRCULOS(COORDENADAX(PUNTOMASEXTRE
MO),COORDENADAY(PUNTOMASAL TO),MINIMORADIO);
FLAGCONTIENECIRCULO=FALSE;
MIENTRAS FLAGCONTIENECIRCULO
REGIOREUNIDA = CIRCULO
IMAGENBINARIZADASINRUIDOENESQUINAS;
SI REGIONREUNIDA =CIRCULO;
66
[imag,enOriginaiRecortadaMaximaRegionPosiblePupila,xc,yc,rc]
[imagenBinarizadaNuevoNiveiContraste,imagenSinRuidoDentroDeLaPupila]
f'ó :~~~:
LOCALIZAR PUP'UI f.
1
EN REGION :¡::
'•'•'•'•'•'•'•'NNNNNNNNNNNNN•'NNNNN,'•'•'•'•'•'•'•'•'•'•'•'•'•'•'-"•'•'-"•'•'•'•'•'h'NNNNNN,'•'•'•';l~i ._,_,_,_>w-'''""'''''''''''' [imagenPupila]
c.::J
[filaPupila,columnaPupila,radioPupila]
lto 1 (ó
[imagenlniciaiCASIAJ 1 BUSCAR REGION CIRCULAR PARA PUPILA ~
->.-wm.~""·"'"-·'~-·w,J Figura 31: Descomposición del proceso de localización de la pupila
68
4.1.4 Localización del iris
El objetivo en esta etapa es extraer el iris de la imagen original. Al
tener las coordenadas del centro de la pupila y el radio, encontraremos el
radio del iris analizando la cuarta parte del imagen, la que se encuentra en
el cuarto cuadrante. Se elige esta zona porque es la que está con mayor
probabilidad de no verse afectada por las pestañas de la persona.
Se aplica un filtro de canny para detectar bordes, se empieza la
búsqueda hasta encontrar el primer píxel blanco partiendo de la primera fila
y desde el extremo derecho. Si en la primera fila no se encuentra resultados
se pasa a la siguiente fila. El punto encontrado define el límite del iris,
columna del punto define el radio del iris. Finalmente se recorta la imagen
original en una corona circular, el radio externo vendría a ser el radio del iris
y el radio interno el radio de la pupila que se paso como valor de entrada, al
igual que las coordenadas del centro de la pupila.
Pseudocódigo : CALCULAR RADIO DEL IRIS
ENTRADA:
IMAGENINICIALCASIA,FILAPUPILA,COLUMNAPUPILA,RADIOPUPILA
SALIDA: IRISRECORTADA,RADIOIRIS,
69
VARIABLES: FILAS, COLUMNAS, IRIS
INICIO
FILAS= OBTENERNUMERODEFILAS(IMAGENENORIGINALCASIA)
COLUMNAS=
OBTENERNUMERODECOLUMNAS(IMAGENENORIGINALCASIA);
DESDE FILA= FILAPUPILA HASTA FILAS
DESDE COLUMNA= COLUMNAPUPILA HASTA COLUMNAS
IRIS[FILA-FILAPUPILA+1][COLUMNA
COLUMNAPUPILA+1]=1MAGENINICIALCASIA[FILA,PUPILA];
FIN DESDE
FIN DESDE
IRISRECORTADA = FIL TROCANNY(IRIS);
FILAS= OBTENERNUMERODEFILAS(IRISRECORTADA)
COLUMNAS= OBTENERNUMERODECOLUMNAS(IRISRECORTADA);
DESDE FILA= 1 HASTA FILAS
DESDE COLUMNA= COLUMNAS/2 HASTA COLUMNAS
VAR=COLUMNAS-COLUMNA+COLUMNAS/2;
SI IRISRECORTADA(FILA,VAR) = 1
SI VAR/COLUMNAS < 7/8
RADIOIRIS = VAR;
FIN SI
FIN SI
FIN DESDE
70
SI RADIOIRIS >O
SALIR;
FIN SI
FIN DESDE
FIN
Pseudocódigo : EXTRAER IRIS
ENTRADA:
IMAGENJNICIALCASIA,FILAPUPILA,COLUMNAPUPILA,RADIOPUPILA,
RADIOJRJS
SALIDA: IRIS
VARIABLES: FILAS, COLUMNAS,LIMITEXC,LIMITEYC
INICIO
FILAS= OBTENERNUMERODEFILAS(IMAGENENORJGJNALCASIA)
COLUMNAS=
OBTENERNUMERODECOLUMNAS(JMAGENENORJGJNALCASIA);
DESDE FILA= 1 HASTA FILAS
DESDE COLUMNA= 1 HASTA COLUMNAS
VAR=(FJLAPUPILA-FILA)*(FILAPUPILA-FILA)+
(COLUMNAPUPILA-COLUMNA)* (COLUMNAPUPILA-COLUMNA);
SI VAR < RADIOPUPILA*RADIOPUPILA & VAR > RADIOIRIS*RADIOIRIS
71
IMAGENINICIAL[FILA,COLUMNA]=255;
FIN SI
FIN DESDE
FIN DESDE
SI FILAPUPILA+RADIOIRIS > FILAS
LIMITEXC = FILAS;
SINO
LIMITEXC = FILAPUPILA+RADIOIRIS;
FIN SI
SI COLUMNAPUPILA+RADIOIRIS > COLUMNAS
LIMITEYC = COLUMNAS;
SINO
LIMITEYC = COLUMNAPUPILA+RADIOIRIS;
FIN SI
DESDE FILA= FILAPUPILA-RADIOIRIS HASTA LIMITEXC
DESDE COLUMNA= COLUMNAPUPILA-RADIOIRIS HASTA LIMITEYC
IRIS[FILA-FILAPUPILA+RADIOIRIS+1][COLUMNA
COLUMNAPUPILA+RADIOIRIS+1]=1MAGENINICIALCASIA[FILA,PUPILA];
FIN DESDE
FIN DESDE
FIN
72
(filaPupila,columnaPupila,radiaPupila]
[radialris]
(imagenlnicia!CASIA]
EXTRAER IRIS 1 [iris]
Figura 32: Descomposición del proceso de localización del iris
73
4.2 TRANSFORMACION DEL IRIS Y CODIFICACION
A partir de la imagen del iris en formato polar, se aplica la transformada
Haar a la imagen hasta llegar al nivel 5 del árbol (se toma como parámetro).
La implementación de la transformada rápida de Haar es así:
Paso 1: Dado el vector [2 4 3 5 6 8 7 9] calcular la media de cada elemento
y
su vecino:
(2+4)/2=3
(3+5)/2=4
(6+8)/2=7
(7+9)/2=8
Vector calculado: [3 4 7 8]
Paso 2: Calculamos la diferencia entre estos vectores, como el vector inicial
es de doble tamaño sólo se toma las posiciones impares para la diferencia:
Vector original: [2 4 3 5 6 8 7 9]
Vector calculado: [3 4 7 8]
Vector diferencia: [-1 -1 -1 -1]
El vector final se compone de la unión entre el vector calculado y vector
diferencia:
Vector final: [3 4 7 8 -1 -1 -1 -1]
74
También podemos expresar esta operación de la siguiente forma:
Vector original = [2 4 3 5 6 8 7 9]
Vector final= [3 4 7 8 -1 -1 -1 -1]
Matriz de coeficientes= [1/2 O O O 1/2 O O O; 1/2 O O O -1/2 O O O; O 1/2 O O O
1 /2 o o; o 1 /2 o o o -1 /2 o o; o o 1 /2 o o o 1 /2 o; o o 1 /2 o o o -1 /2 o; o o o 1/2
o o o 1/2;0 o o 1/2 o o o -1/2]
Vector originai=Vector final * Matriz de coeficientes
Esto se aplica para cada fila de una matriz, luego a la matriz resultante se le
vuelve aplicar pero esta vez por cada columna, aquí un ejemplo con una
matriz:
64 2 3 61 60 6 7 57 9 55 54 12 13 51 50 16
17 47 46 20 21 43 42 24 40 26 27 37 36 30 31 33 32 34 35 29 28 38 39 25 41 23 22 44 45 19 18 48
49 15 14 52 53 11 10 56 8 58 59 5 4 62 63 1
Y la matriz resultante:
75
32.5 o o o o o o o o o o o o o o o o o o o 4 -4 4 -4 o o o o 4 -4 4 -4 o o .5 .5 27 -25 23 -21 o o -.5 -.5 -11 9 -7 5 o o .5 .5 -5 7 -9 11 o o -.5 -.5 21 -23 25 -27
Pseudocódigo : CODIFICAR IRIS
ENTRADA: IMAGEN, NUMERODENIVELES
SALIDA: MATRIZHAAR
VARIABLES: FILAS, COLUMNAS,LIMITEXC,LIMITEYC
INICIO
FILAS= OBTENERNUMERODEFILAS(IMAGENENORIGINALCASIA)
COLUMNAS=
OBTENERNUMERODECOLUMNAS(IMAGENENORIGINALCASIA);
K=LOGARITMOENBASE2(FILAS);
L=LOGARITMOENBASE2(COLUMNAS);
DESDE P= 1 HASTA P<= NUMERODENIVELES
DESDE 1 = 1 HASTA 1 <=M
DESDE J = 1 HASTA J <=N
76
SI (K-1)/2 <= J < (K-1/2)/21
MATRIZHAAR[i][j] = 2A(Kf2)
SINO
SI (K-1/2)/2K <= J < (K-1)/21.
MATRIZHAAR[i]U] = -2A(Kf2)
SINO
MATRIZHAAR[i]U] = O
FIN SI
FIN SI
FIN DESDE
FIN DESDE
FIN DESDE
FIN
77
CAPITULO V
PRUEBAS Y RESULTADOS
5.1 SIMULACION DEL ESQUEMA
Mostramos los resultados para cada etapa de la segmentación, se
utiliza 4 imágenes elegidas aleatoriamente de la base de datos para mostrar
los resultados. En la primera etapa, binarizar la imagen, se debe obtener 2
imágenes como salida: la imagen en escala de grises (IMAGEN INICIAL
CASIA) y la imagen binarizada:
Figura 33: Binarización de la imagen inicial
78
Los resultados para las 4 imágenes, nótese que para la segunda imagen la
pupila va diferenciándose, en varias imágenes se repite este escenario,
debido a la calidad de imagen, al dibujar el histograma se diferencia
claramente dos clases: el nivel de intensidad de la pupila y pestañas
(primera clase) se diferencia de la esclarea e iris (segunda clase):
Figura 34: Binarización de 4 imágenes
79
En la segunda etapa, localizar máxima región pupilar, se obtendrá la
imagen inicial recortada que puede contener a la pupila, nótese que hay una
imagen encontrada en forma de disco, que no es exactamente una
circunferencia, por ello se definió un método para localizar el centro y radio
del círculo:
Figura 35: Fase de localización de máxima región pupilar
Para obtener la imagen encontrada en forma de disco, se busca el
primer círculo blanco que se encuentra en la imagen binarizada, por ello
llamamos la máxima región, porque habrán círculos de menor radio, pero
que ya no será necesario seguir generándolos porque con certeza la pupila
o gran parte de ella (como la primera imagen), se encuentra envuelta en
dicha región. Nótese que la imagen encontrada en forma de disco no es
exactamente un círculo sino un polígono, salvo en el segundo caso donde la
imagen binarizada es exactamente la pupila, se establece una lógica distinta
para la obtención del radio. En el caso del polígono se busca el círculo que
quede circunscrito en él:
80
Figura 36: Localización de máxima región pupilar en 4 imágenes
En la tercera etapa, identificar ruido y localizar pupila en región, se
detectará la pupila, previa identificación del ruido dentro de ella producto del
81
reflejo de la cámara. Se rellenará el ruido con pixeles negros para que la
pupila quede marcada completamente:
Figura 37: Detección de la región pupilar
Se puede ver que en la primera imagen, la pupila no quedó envuelta
completamente, por eso para localizar el círculo que envuelve a la pupila se
calculan los puntos extremos (el más alto y el más alejado en dirección a la
derecha), de esta forma se completará la parte que falta de la pupila. Para
los demás casos, la pupila se encuentra en la región completamente, en la
segunda imagen la figura recortada es la pupila misma, en la cuarta, la
pupila es tangente a la figura recortada:
82
Figura 38: Localización de la pupila en 4 imágenes
En la cuarta etapa, localizar iris, se identificará el círculo que
envuelve al iris. Para el modelo propuesto se asume que el centro de este
círculo es el mismo del que envuelve a la pupila, si bien no se es tan exacto
asumir lo concentricidad de los círculos, los resultados al calcular la tasa de
falsos rechazos pueda verse afectada:
83
Figura 39: Localización de la pupila en 4 imágenes
Para encontrar el iris, sólo analizaremos la parte que esta fuera de
las pestañas superiores. Para calcular el radio del iris debemos localizar el
extremo del iris (primer píxel blanco que aparece desde el extremo
derecho), este punto define el límite del iris. Se aplicó el filtro de Canny
(lrisRecortada), empezamos a barrer la imagen partiendo del extremo
derecho, hasta encontrar el primer píxel blanco, sólo se recorre hasta la
mitad del largo de la figura. En la primera figura no se encuentra ningún
pixel blanco en la primera fila, por eso se la búsqueda en la siguiente fila.
Para el caso de la segunda y cuarta imagen el primer píxel blanco es ruido,
por eso se excluye una zona de la imagen donde se ignora la aparición de
los píxeles blancos:
84
Figura 40: Localización de un sector de iris en 4 imágenes
Una vez que tenemos la imagen del iris, se procede a convertir la
imagen a coordenadas polares, como se puede ver en la imagen, hay
sectores de color negro, es parte del ruido que no será incluida en la
codificación. Los puntos negros dentro de la región gris serán eliminados
con un filtro de mediana. Sobre esta imagen se aplicará la transformada de
HAAR para generar el código del iris, que vendría a ser una cadena de bits.
85
5.2 RESULTADOS
Para evaluar el modelo de segmentación propuesto, se tomará las
imágenes CASIA Iris lnterval 3.0, consta de un total de 2660 imágenes de
249 personas [1], la cantidad de imágenes por persona difiera en esta (en 3
casos sólo se encontró una imagen de la persona [1]):
Persona #Imágenes Persona #Imágenes Persona #Imágenes P·ersona #Imágenes
1 20 31 2 61 5 91 9 2 20 32 5 62 5 92 20 3 7 33 5 63 1.3 93 20 4 7 34 5 64 14 94 14 5 8 35 5 65 14 95 14 6 7 36 20 66 14 96 14 7 20 37 3 67 14 97 14 g 19 38 4 68 13 98 13
9 9 39 5 69 13 99 11
10 5 40 5 70 13 100 14
11 19 41 5 71 14 101 14 12 6 42 20 72 14 102 14
13 7 43 19 73 14 103 14
14 7 44 7 74 14 104 20
15 5 45 21 75 12 105 14
16 4 46 4 76 14 106 14
17 6 47 7 77 7 107 14
18 3 48 6 78 14 108 12
19 40 49 5 79 14 109 13
20 6 50 5 80 12 110 14
21 g 51 5 8.1 20 111 14
22 5 52 5 82 14 112 14
2.3 6 53 23 83 14 113 14
24 2 54 4 84 14 114 14
25 5 55 5 85 14 115 20
26 3 56 5 86 13 116 14
27 5 57 5 87 13 117 14
28 22 58 5 88 14 118 14
29 40 59 5 89 14 119 14
30 20 60 20 90 14 120 14
Total 341 Total 240 Total 391 Total 432
87
Persona #Imágenes Persona #Imágenes Persona #Imágenes Persona #Imágenes
121 13 151 1 181 7 211 1~· _¡
1.22. 14 152 5 182 19 212 9 123 14 153 5 183 7 213 .,
.!.
124 14 154 5 184 5 214 8 125 20 155 3 185 6 215 6
126 14 156 15 186 9 216 1
127 13 157 10 187 7 217 4 128 12 158 5 188 20 218 18 129 14 159 19 189 1 219 19
130 14 160 17 190 5 220 6
131 12 161 20 191 20 221 7
132 14 162 20 192 7 222 3
133 13 163 10 193 5 223 3
134 14 164 10 194 5 224 22
!35 14 165 18 195 5 225 7
136 20 166 13 196 5 226 7
137 14 167 20 197 6 227 6
138 14 168 20 198 5 228 3
139 13 169 20 199 20 229 19
140 14 170 15 200 2 230 10
141. 12 171 S 201 5 231 8
142 14 172 8 202 6 232 3
143 14 173 7 203 6 233 4
144 14 174 6 204 2 23.4 6
145 14 175 6 205 9 235 4
146 14 176 8 206 5 2.36 3
147 5 177 3 207 5 237 " .::;
148 14 178 7 208 S 238 4
149 14 179 20 209 20 239 20
150 5 180 6 21{} 7 240 5
Total 41}4 Total 327 Total 239 Total 247
Persona #Imágenes
241 3 242 3 243 2 244 6
245 4 246 3 247 8
248 S
249 2
Total 39
88
Cada imagen de la base de datos se compara con todos los demás,
en CASIA Iris lnterval 3.0 habrá un total de 3 536 470 comparaciones. Se
realizará un estudio de las distribuciones de la distancia de Hamming de 2
tipos:
1.-lntra-Ciase: comparaciones entre códigos de iris de la misma persona.
En total se realizará 17 771 comparaciones.
2.-lnter-Ciase: se compara códigos de iris de personas distintas. Se
realizará 3 518 699 comparaciones.
En la Figura 42 se observan curvas de la distribución de probabilidades de
la distancia de Hamming al comparar códigos generados por el mismo iris e
iris diferentes en los experimentos de Daugman [8] sobre una versión de
base datos CASIA anterior:
D.07r---~-"T"""-...,.....--r---r----r-"'"""T----r-----r-.___
0.06
fl.05
{L02
DistríbuciÓH Intra-dase
X
{\ Distribución Inter-dase
Figura 42: Distribución de probabilidades en los experimentos de Daugman [8]
89
Para realizar el reconocimiento, Daugman definió un umbral de
decisión X [8], si la distancia de Hamming obtenida es menor que el umbral
X, entonces los códigos comparados fueron generados por el mismo iris, en
caso de ser mayor se decide que fueron generados por iris diferentes.
Como se aprecia en la Figura 42, las distribuciones se encuentran
solapadas. El área bajo la distribución inter-clase a la izquierda del umbral
X, vendría a ser la probabilidad de una falsa identificación, y el área bajo la
distribución intra-clase a la derecha del umbral X es la probabilidad de un
falso rechazo.
Para evaluar los resultados del modelo se utilizan los siguientes
indicadores:
Tasa de verdaderos reconocimientos (VRE): Representa el porcentaje de
las identificaciones que se realizaron acertadamente.
Tasa de falsos rechazos (FRC): Representa el porcentaje de los códigos
que fueron erróneamente rechazados (su valor es calculado como 1-VRE).
Tasa de verdaderos rechazos (VRC): Representa el porcentaje de los
rechazos que se realizaron acertadamente.
Tasa de falso reconocimiento (FRE): Representa el porcentaje los
códigos que fueron reconocidos perteneciendo a otra persona (su valor es
calculado como 1-VRC).
En la Figura 43 y Figura 44 se muestra las distribuciones de la distancia de
Hamming intra-clase e inter-clase respectivamente del modelo propuesto.
90
1600,00 1523
1427
1400,00 1321
1200,00 1123
1000,00
,¡¡ .. .. 801 823 ~ 800,00 = .. r:
753 721 ... 665 650 647
600,00
500 523 523 470
420 420 400,00 343
320 356 356
200,00
0,00
270 256232250
1 230 143
li'T TTTI 1,, ; ~ 1 1 1 o o o o o o o 5
1° 11r
o ,...; N "' '<t Ln "' " 00 "' o ,...; N "' '<t Ln "' .... 00 "' o ,...; N "' '<t Ln "' .... 00 "' o ,.; N m '<t Ln \J:) " 00 "' o M N m '<t Ln o o o o o o o o o o M .... M ,...; .... ,...; .... .... .... .... N N N N N N N N N N m "' "' m M m "' m "' "' a '<t '<t, ~ '<1", '<t, o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o' o o o o
Distancia de Hamming
Figura 43: Distribución de distancia de Hamming entre códigos de iris de la misma persona
91
900000,00
800000,00
700000,00
600000,00
·6 500000,00 = ~ = 1;;¡
~ 400000,00
300000,00
200000,00
100000,00
0,00 _,
65202 71403 68217 72134 50321
178021
140213
295014
250123
790825
697823
450992
234788
141409
~36 0~7 ~38 0~9 DAD OA1 OA2 0~3 0~4 0~5 OA6 0A7 0~8 OA9 ~50
Distancia de Hamming
Figura 44: Distribución de distancia de Hamming entre códigos de iris de personas distintas
92
Si tomamos como umbral de decisión la distancia de Hamming igual
a 0.36, tendríamos una tasa de falsos rechazos igual al 0.00%, pero la tasa
de falsos reconocimientos sería 12.23%(un total de 2175 comparaciones).
En el caso que eligiéramos como umbral de decisión el valor de 0.46,
tendríamos una tasa de falsos reconocimientos de 0.00%, pero la tasa de
falsos rechazos sería de 34.18%(un total de 1 202 862 comparaciones). El
grado de separación entre ambas distribuciones puede calcularse como [9]:
Donde (pr;ar) y Cp2;a2) son la media y la desviación estándar de las
distribuciones intra-clase e ínter-clase respectivamente.
0.200
0.150
lllntra-Ciase
0.100 FRC=O FRE=l2.23% 11 lnter-Ciase
0.050
q ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ o o o o o o o o o o o o o o o o o
Figura 45: Resultados de comparar ambas distribuciones
93
Si establecemos como rango del umbral decisión los valores
comprendidos entre 0.36 y 0.46, se puede observar que a medida que un
error disminuye el otro crece, por lo tanto, la elección del umbral.de decisión
dependerá del principal objetivo, si la correcta identificación o el rechazo de
impostores, más no ambas al mismo tiempo.
··umb'ral dé'cJecisión• 1·· ..• i''vRE{%) ..... FBG(%); ..• •···VRC{%)'' .'FRE(%} 0.36 86.467 13.533 100.000 0.000
0.37 87.761 12.239 98.100 1.900
0.38 88.127 11.873 96.100 3.900
0.39 88.335 11.665 94.200 5.800
0.40 88.464 11.536 92.100 7.900
0.41 90.468 9.532 90.700 9.300
0.42 91.908 8.092 90.400 9.600
0.43 93.214 6.786 86.400 13.600
0.44 94.620 5.380 81.300 18.700
0.45 96.624 3.376 74.200 25.800
0.46 100.000 0.000 65.800 34.200
Si comparamos los resultados obtenidos con otros experimentos,
Daugman [9] obtiene un VRE de 100% cuando el FRE es igual 0.08%
utilizando filtros de Gabor 20 en dicho trabajo. Boles [11] utiliza
transformada de wavelets y cruces por cero para el reconocimiento y
análisis del iris, obtiene un VRE de 100% cuando el FRE es igual 8.13%. En
el modelo propuesto, el VRE es 100% cuando el FRE es 34.2 %, el más
optimo vendría a ser el primero ya que asegura una autenticidad totalmente
confiable con una mínima tasa de falsos rechazos.
94
CONCLUSIONES
1.- No se logró desarrollar un modelo de segmentación que minimice las
tasas de falsos rechazos y falsos reconocimientos al mismo tiempo. Si el
principal objetivo es evitar impostores, se elegirá como umbral de decisión el
valor de 0.36 teniendo una tasa de verdaderos reconocimientos de 86,4%.
Si se desea autenticar a todas las personas, se debe elegir como umbral de
decisión el valor de 0.46, pero se tendrá una tasa de verdaderos rechazos
de 65,8%.
2.- Se considera para el modelo de segmentación propuesto una tasa de
falsos rechazos (FRC) óptima de 9.532% y una tasa de falsos
reconocimientos (FRE) de 9.3% eligiendo como umbral de decisión el valor
de 0.41. Para umbrales distintos a dicho valor, la diferencia entre FRC y
FRE es mayor a 1.5%, por lo que si se desea equilibrar los objetivos (evitar
impostores y autenticar a las personas), se debe elegir umbrales donde los
valores de FRC y FRE no difieran tanto.
3.- Se definieron nuevos métodos de segmentación para la localización del
iris: se identifica a la pupila en el proceso la localización de la máxima
región pupilar, es decir, cierta región de la imagen donde se encuentra la
pupila o una parte de ella, y luego se localiza el iris mediante la detección de
bordes entre la esclerótica e iris en una zona de la imagen que está libre de
ruido.
95
4.- Se logró un tiempo de respuesta promedio de 2 segundos entre el
proceso de segmentación y la codificación del iris. En una implementación
de un sistema de autenticación real es importante mantener el tiempo de
respuesta menor a 4 segundos, ya que los usuarios no pueden esperar
tanto para ser autenticados.
5.- Se revisaron los algoritmos y técnicas actuales en el tratamiento de
imágenes digitales, pero no se modificó o propuso algún tipo de filtro nuevo
que se pueda reutilizar en otras investigaciones. Se utilizaron las
operaciones morfológicas unitarias conocidas y los filtros comúnmente
usados en el procesamiento de imágenes digitales.
96
RECOMENDACIONES
1.- Realizar modificaciones en la etapa de localización de iris, partiendo de
la premisa que no será concéntrica a la pupila y añadir un proceso de
detección de párpados antes de realizar la transformación a coordenadas
polares.
2.- Realizar pruebas del proceso de localización de máxima región pupilar
sobre otra base de datos distinta a CASIA, por ejemplo podría usarse Ubiris
[1 0]. La alta resolución de las imágenes de CASIA [1 ], así como el entorno
donde se utilizó la cámara [1 ], ayuda a definir la región pupilar máxima
luego de un proceso de binarización básico, pero no se garantiza que
suceda lo mismo con otras imágenes capturadas en un entorno distinto y a
una distancia más alejada, por lo que habría que realizar mejoras en dicho
proceso.
97
81 BLIOGRAFÍA
[1] "Note on CASIA-Iris V.3", Chinese Academy of Sciences,
http://www.cbsr.ia.ac.cnllrisDatabase.htm, Mar.2007.
[2] García-Vasquez, & Ramírez-Acosta, "Advances in Iris Recognition:
Perspectives and Opportunities of Research in Biometric Algorithms", ISSN
1405-5546, 2012.
[3] John Daugman, "The importance of being random: statistical principies of
iris recognition", The Computer Laboratory,University of Cambridge, 2001
[4] Bertillon, M.A, "La couleur de l'iris", Revue scientifque(SER3,A22,T1Ú),
65-73. 1885.
[5] Flom L., Safir A., "Iris Recognitions System" United States Patent, No.
4641349, 1987.
[6] Daugman, J.G., "Biometric Personal ldentification System Based on Iris
Analysis" United States Patent No. 5291560, 1994.
[7] Gonzales R, Woods R, "Digitallmage Processing (3a. ed.)" United States
ISBN 9780131687288, 2008.
[8] J. G. Daugman, "High confidence visual recognition of persons by a test
of statical independence" IEEE Transactions On Pattern Analysis and
Machine lntelligence, vol. 15, no. 11, November 1993.
[9] J. G. Daugman, "How iris recognition works," IEEE Transactions On
Circuits And Systems For Video Technology, vol. 14, no. 1, pp. 21-30,
January 2004.
[1 O] Hugo Proenca and Luis A. Alexandre. "Ubiris: A noisy iris image
database". volume 1, pages 970-977, 2005.
98
[11] W. Boles and B. Boashash, "A human identification technique using
images of the iris and wavelet transform," IEEE Trans. Signal processing,vol.
46, pp. 1185-1188,Apr. 1998
99
ANEXOS
Se muestra el código fuente de todos los procesos, debido a la sintaxis de
Matlab, el espacio entre nombres para una función no existe, por eso se suprime
cada espacio en el nombre del proceso.
~unction [imagenBinarizada] = binarizarimagenDeAcuerdoContraste(imageninicial); disp( '%H'-:%~%%%%'>%.1~}-&:Ji.<. P4.9~tütUi~.XJ,Q:binarizarimagenDeilcuerdoContraste%%%%'<%H';%HH~');
if ndims(imagen!nicial) == 3
disp( 'La ,ÚJ),"t~.J;! ~ s¡p,;~~X,<T;;Lz~ en RGB, ~ \;:J2)),Y$'X,~j~ en t;,«~~QJ~ de W.;;h?,$'J~'');
.imagenEnEscalasDeGrises = rgb2gray(imageninicial); el se
disp( 'La j..zc,%fl5'J! .;¿~ §.t ~!l:S'2-~&;:,:,"l en .QP,;,~.~ de .g,¡;JAst~·');
.imagenEnEscalasDeGrises = imageninicial; end
nive!Contraste = graythresh(imagenEnEscalasDeGrises); ·imagenBinarizada = im2bw(imagenEnEscalasDeGrises,nivelContraste);
disp( ['Se b(JJb~);j.J,..Q la J.h'J.~f.!.~n de &>&»~~~; "'l ~lJ . .,YjÜ de ~9~1SLW.RSh':·' int2str( nive!Contraste)]); :disp ( l 2; ~ ~ :>;.i ~;~ Y>i ~<~;z; Fin u,¡;~~~~s!.á:fJJá~Jh~R.: binar iztu: I2tiagenDeltcuerdoContrast.e?s i"~r% ~$ ::->% ~.;~;:?; ~%~ 1~~ 1 ) ;
end
100
funotion [iruagenBinarizadaFinal] = rellenarAgujerosBlancos(iruagenBinarizada);
[totalPixelesNegro,totalPixelesBlancos] = contabilizarPixelesNegrosYBlancos(iruagenBinarizada); radio = round(sqrt(totalPixelesNegro/3 .1115));
disp( ['El radio :;Jsl ~~if..~~~lQ .~)t:ª area ~ JQ.\\~l a la &:m~á.;i~;\ de .Pi*-~.~~§. ~~.~B ~;.: ' int2str(radio) '. ']); disp ( [' .~l.UD}J,.¡.~¡ 1?..<::. ;~,:;W;:g~~J m'$. -~!;,.~ ll).~.i.I.QI al &l.:U~K~);:¡Q 9..~.1 p,;,¡¡¿,y.J.Q · ' ] ) ; iruagenBinariaRellenadoAgujerosBlancos = bwareaopen(iruagenBinarizada,2*radio); imagenBinarizadaFinal = ~imagenBinariaRellenadoAgujerosBlancos;
end
101
function [radio]=calcularRadioMaximoRegionContienePupila(imagenBinarizada)
%~~Á~~t~~~ a la ~~1~%~~%%%%%%%%%~%%%%%%%%%%%%%%%%%%%%%%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%i%%%%%%%%%%i%%%~%%%%%%i%%%%%%%%%%%%%%%%%%i%%%%%%%%%%%%%i%%%%%%%%%%%%%%%%%%i%%
disp( 1 ~~%~J%%t~%~;t.;%~~LP.j,~_A~ -1'~~~~"~ücl.~~l2: celen.le.r:Rad.i.oHaxinv.)RegionCont. i.enePupt lf1.%%%t_;%~%~i.:%%%%%% ¡);
[ro~s cols]=size(imagenBinarizada); totalPixelesNegro = O; radioHaximoCirculoPixelesBlancos = O; for i= 1: ro~s
end
for j=l:cols
end
if imagenBinarizada(i,j) == 1
totalPixelesNegro=totalPixelesNegro+1; end
radioHaximoCirculoPixelesBlancos = round(sqrt(totalPixelesNegro/3.1415)); disp(['Raciiol1axtrnoC:ir:culoPixeleslllancos:' int2str(radioHaximoCirculoPixelesBlancos)]); disp( [' t.oto::tlPixele.:;Blancos: ' int2str( totalPixelesNegro)]);
diametro=2*radioHaximoCirculoPixelesBlancos; imagenBinarizadaSinRuidosHenoresA!Diametro = b~areaopen(imagenBinarizada,diametro);
%~~R.?. .YJ! .PJ!n~.,Q PJ..~.Q%%%%% %~;% %~. %%% %%%%~;% %%%2;%%%~%~;.% %S;%%% i:%% %%%% 2;%%2; %%% ;;~.% %S;i; %2;%%% %~;%%S;%%~.;%%%%%%%
%~%%%%~%%i%%%~%%%i%%%%%%%%%~%%%~%%%%%%%%%%i%%%%%%%%%%i:%%%%%%%~%%%%~~%%%%~%%%%%~%%%%~%%%%%%%%%%%%%
minimaF i laQueCont ieneAll1enosUnPuntoB lanco=O; maximaFilaQueConcieneA!HenosUnPuntoBlanco=O; radioHaximoLimitandoAlturas = O; for i= 1.: ro~s
end
if imagenB inar izadaS inRuidosUenoresAlD iametro ( i, : ) continue;
else
end
minimaFilaQueContieneAH!enosUnPuntoBlanco = i; break;
for i= 1.: ro~s
j=ro~s- i + 1.;
.eml
if imagenBinarizadaSinRuidosMenoresAlDiametro(j,:) continue;
else
end
maximaFilaQueContieneAll1enosUnPuntoBlanco = j; break;
102
zeros( 1. ,cols)
zeros(1.,cols)
distancia=(maximaFilaQueContiene!lMenosUnPuntoBlanco-minimaFilaQueContiene!lMenosUnPuntoBlanco);
radioMaximoLimitando!lturas=floor(distancia/2);
disp( [ 1 FadioEaxüaoLi.mi.tandoAltm:::~s:' int2str(radioMaximoLimitando!lturas)]);
ladodelcuadrado=:;O;
cuadrado=ones ( lacio de lcuadraclo+ L: lacio de !cuadrado+ l.) ;
cantidadDeCuadrados=O;
x=(floor(rows-J)/ladodelcuadrado)-1;
y=(floor(cols-J)/ladodelcuadrado)-1;
for i=.1: x
en1l
for j=J :y
fl=( i-.l) * laclodelcuadrado+.t;
f2= ( i) *lado de !cuadrado+ .1.;
el=( j -1) * ladodelcuadrado+.1.;
c2=(j)*ladodelcuadrado+1;
region!Comparar=imagenBinarizada(fl:f2,cl:c2);
if region!Comparar == cuadrado
end
eml
cantidadDeCuadrados=cantidadDeCuadrados+1;
radioi!ax imoRegionesConvexas=round( sqrt ( lado de !cuadrado* lado de lcuadrado*cant idaclDeCuadrados/3 . 1415) )
disp( [ 1 FadioHaxiraoRegione:3Convex<ts:' int2str( radio~laximoRegionesConvexas)]);
disp ( [ 1 P.rea: ' int2 str ( lado de !cuadrado* lado de lcuadrado*cant idadDeCuadrados)] ) ;
radiolfaximoTeorico = floor((rows- (rows/1))/2);
disp( [ 1 radioHaxüaoTeoneo:' int2str( raclioi!aximoTeorico)]);
vectorRadios= [raclioi!ax imoC irculoP ixe lesB lancos radio~lax imoL imi tanda!! t uras racliolfax imoTeor ico radio:
radio= min(vectorRadios(J.,:));
clisp(['&:J rad.i.o de ~1WJ: :,:~mÁs~:' int2str(radio)]);
disp ( 1 %% %%%t¿~~;-!¿ %% f}.n J))~.a~~§:_QJ)JJ,j~~Q: c:alcularPad:icHaxirooRegi.onConr:. ienePup].la% %%!J%%~i:%%%%% %% 1 ) ;
en1l
103
funo t ion [ iruagenEncontradaF armaD isco] =buscarHax iruaRegionC ircularCont ienePup i la( iruagenB inar izada 1 radioHax)
disp( '%%%H%%%%%%\JJ~i»1v ~~~:,~;LíX~i~~~&:bus,~arfraxiwRRegionCircularCont.ienePupila%%%H%W;%%<%%%');
%En la il~A!JP!l Flll" "" .r'"ri\rP r-mr1n input la X'Pr!iÓ'l ff\'" «e )Jn«~a e~ lrl·~nr·a(niY~l ii'!U"'l a 1¡'. "'" hA,·á la%Ú%%' \j;N.fi»,._,,p¡v; ~PA0 ~\A. t¡.JJr~o'i#.f?,i;>¡ ~:¡/.}.'¡.'¡., ".''\¡;¡:;M:;...,«; m~); w;;.,_ .~lo'tM ·._"Fj, {t._,.,.,~~ .. ., -+>:4"././.¡.;w:::. ·w~~'Al..."f:)w r -/iih Q~'$;<J.rtv
%U~&l&-~:JZ! .R9U~~ 2,t"-1 lo ~r~~m.}.~~ para ~~~. d ""~Rlt~Sh~ de la Qnf'.J:"í!ü9» j.J~9,lR.?:~ sea lmí! Ui~~MS: de ~,~QP~%;'
[rows cols] = size(iruagenBinarizada);
iltlagenB inar i zadaüpuesta =, iruagenB inar izada;
radioReal = radio!Iax;
.figuraEnForruaDiscoForruadaPorStrel = strel( 'disk' 1radioReal);
iruagenCerradaConEstructuraStrel = iruclose(iruagenBinarizadaOpuesta 1figuraEnForruaDiscoForruadaPorStrel);
disp( ['J»J;:J,.Q !;~~ .. 1 pJ~Ql;.:' datestr(now) 1 1 radioinicial: 1 intZstr(radioReal)]);
while iltlagenCerradaConEstruct uraStre 1 == ones ( rows 1 co ls)
radioReal = radioReal - 1;
figuraEnForruaDiscoFormadaPorStrel = strel( 'disk' 1radioReal);
iruagenCerradaConEstructuraStrel = iruclose(iruagenBinarizadaOpuesta,figuraEnForruaDiscoForruadaPorStrel);
.en(!
disp( ['Fin ~kü !~~u;Js;: 1 datestr(now) ' 1 ~,~ :adío real ~1:\G:PJ~\.¡&t~R Q.Q¡ ~)i.¡,s,l ~~: 1 intZstr(radioReal)]);
imagenEncontradaForruaDisco = iruagenCerradaConEstructuraStrel;
en!l
104
function [xc,yc,rc] = localizarCentroCircunferencia(imagenEncontradaFormaDiscoPorStrel);
%Se J.!'t:P,J~~~~~ ¡,m J.!J,;,QJ,i,Q m;,9.9~~!JJ»á:~ para JQ!;"~lJ;,~, ti ~~U/~ y radio de la ;(,i&!%",§!/sHH%%H%%i%i
=•y,~ q~~ Hatlab no ~J tan ~"'~'1-~tQ en J~¡;:. xRQ4/Jt;»»..~S!~ t~n~»R~ en q~JtN.~ U\!~ la j.Jg).\~0~ HHHHH%nH: \m~ g,~yp);yJ.,Q, ~.tul no ~~ ~iSW!W:~~ ~m ~.W,2.J.JQ eJAQ -!m ,~_,t;,Q,ggn_qy,%% ~% H%%%% w,% HH H%%% H H% Ws%:
[rows cols]=size(imagenEncontradaFormaDiscoPorStrel); for i=1: rows
en!l
arrayCeros = find(imagenEncontradaFormaDiscoPorStrel(i,:) ==O); cantidadCerosPorFilas=length(arrayCeros); vectorCantidadCerosPorFila(i) = cantidadCerosPorFilas;
for j=l:cols
end
arrayCeros = find(imagenEncontradaFomaDiscoPorStrel(:,j) ==O); cantidadCerosPorColt~nas=length(arrayCeros);
vectorCantidadCerosPorColumna(j) = cantidadCerosPorColumnas;
maximo = max(vectorCantidadCerosPorFila); [fil,col] = size(vectorCantidadCerosPorFila); flagMinimoEncontrado = O; valodlinimoEncontrado = O; valorHaximoEncontrado = ü; for i=1: col
if vectorCantidadCerosPorFila(i) == maximo if flagMinimoEncontrado == n
flagHinimoEncontrado = l; valorMinimoEncontrado = i;
else
end
end
if flagi!inimoEncontrado ==
end
if vectorCantidadCerosPorFila(i) < vectorCantidadCerosPorFila(i-l) valorHaximoEncontrado = i-.t; l>reak;
end
end xc=round((valorMinimoEncontrado+valorHaximoEncontrado)/2);
105
maximo = max(vectorCantidadCerosPorCollUilna);
[fil,col] = size(vectorCantidadCerosPorCollUilna); flagHinimoEncontrado = O; valorHinimoEncontrado O; valorf!ax imoEncontrado = O; for i=l: col
if vectorCantidadCerosPorCollUilna(i) if flag!IinimoEncontrado == O
else
end
flagHinimoEncontrado = J.;
valor!IinimoEncontrado = i;
if flag!IinirnoEncontrado
maximo
if vectorCantidadCerosPorColurnna(i) < vectorcantidadCerosPorColurnna(i-1) valorl~aximoEncontrado = i-J; Jaeak;
end
eml
entl
eml
yc=round( (valor!IinimoEncontrado+valor!IaximoEncontrado) /2); rc=round(maximo/2);
disp( ['El ;~mt;;:._Q de la ;¡:j,Q:!.¡.¡;:,)'t ~ ~.¡;¡r,;;.m:;.w;;;&:~ en. la ;t;i;l~:' int2str(xc)]); disp ( [' ~-?J~WJU$i.: ' int2 str ( yc) ' , s¡j, tudi'J f,U'i.: ' int2 str (re)] ) ;
funotion [imagenEnEscalaDeGrisesRecortada] = recortarRegionCircular(imagenEnEscalaDeGrisesOriginal,xc,yc,rc);
imagenEnEscalaDeGrisesRecortada=imagenEnEscalaDeGrisesOriginal; [rows cols]=size(imagenEnEscalaDeGrisesOriginal); for i=i:ro¡¡s
en!l
for j= i: cols
en!l
if ((xc-i).~2+(yc-j).~2 > (rc)~2) imagenEnEscalaDeGrisesRecortada(i,j) = 255;
end
disp(! Se W,~ .. ~}l~i~~~ de {;/~ .. ~J~&&¡ c~:•n ~~~¿~ ~~J~mv~~-i &.RS~.~~ lo .RU~ ~A\.~ W~?! ;;k~"'~ ~~J.1A.> 1);
disp( ! ~%%%~:;:;~;~;%~%.JAi~) ... ~ ~.9~Y~S!J.R~*"'~J1t1.: recortarRegion( ircular~~~%1%~%%%~~~:;~ 1 ) ;
106
function [ imagenBinar i zadaNuevoNi ve !Contraste, imagenSinRuidoDentroDeLaPup i la, imagenPupi la] = locali zarPupi laEnRegion
( imagenOr iginalRecortadaMax imaRegionPosib lePupi la, xc, yc, radioMaximaRegionPos ib lePup ila};
[ro¡¡s cols]=size( imagenOriginalRecortadal!aximaRegionPosiblePupila);
nivelContraste = graythresh( imagenOriginalRecortadallaximaRegionPosiblePupila);
imagenBinarizadaNuevoNivelContraste = im2b11(imagenOriginalRecortadaMaximaRegionPosiblePupila,nivelContraste);
image nS inRuido DentroDeLaPup i la = imagenOr iginalRecortadallax imaRegionPos ib lePup i la;
cantidadRuidoDentroDeLaRegion = O;
for i=l:ro11s
end
for j=i:cols
enli
if imagenBinarizadaNuevoNivelContraste( i,j) == 1 & ( (xc-i) . 11 2+(yc-j) . 11 2 < (radiollaximaRegionPosiblePupila)"?.)
imagenS inRuidoDentroDeLaPup ila( i, j) = O;
cantidadRuidoDentroDeLaRegion = cantidadRuidoDentroDeLaRegion+1;
end
lado = round( sqrt( cantidadRuidoDentroDeLaRegion));
imagenSinRuidoDentroDeLaPupila = medfilt2(imagenSinRuidoDentroDeLaPupila,[lado lado]);
iSe define ~w .R~Q.R-},9. mttQ,.~R para ~~J~>f,ll\ ~w.~~, ~ .\!!.!_~ .h~ t\lr:9,.k~~ de l!atlab no ~.¡;,~n PJ..~-~iB:~I ~~~~~\!~~'ª~~~,~l.\~% %en ~~tQ la m~~~J!RJª de,~ jJ:telt.~i.~~~ en J~~ ~ASJ;...\t'Q~(O V 255)%%:•i%~%%t•i%%~%%!;%%~%%%%%%~%%t;%%~%%%%~%~%%~%%t;%~%i%%~%%
[frecuenciaintensidades,nivelesDeintensidad]=imhist(imagenSinRuidoDentroDeLaPupila);
[umbral, imagenEsPupila] = calcularUmbralHistograma( frecuenciaintensidades, lOO) ;
imagenBinarizadaSinRuidoDentroDeLaPupila = im2b11(imagenSinRuidoDentroDeLaPupila,(umbral)/256);
imagenBinarizadaSinRuidoDentroDeLaPupilainversa = •imagenBinarizadaSinRuidoDentroDeLaPupila;
imagenPupila = imfill( imagenBinarizadaSinRuidoDentroDeLaPupila!nversa,' hales');
end
107
function [posicionUrnbral,figuraEsPupila] = calcularUmbralHistograma(vectorHistograma,posiblePuntoinflexion);
disp( 1 mmmW•Jm,~JR tf9~liUU,\r¡tQ: c:.J.cularTJ!rbralEiatogram"%HHHm%W;% 1);
disp( [' ~J V,.9R.át'.l:.&; ~~9 de infh:xior. ~,~: 1 int2str(posiblePuntoinflexion)]);
vectorintensidades = vectorHistograma 1;
[m,n]=size(vectorintensidades);
vectorlntensidades(1,.1.) = O;
vectorlntensidades(l,n) = O;
valorHaximoPixelesHenores!PosiblePuntoinflexion = max(vectorintensidades(l:posiblePuntoinflexion));
valorHaximoPixelesHayores!PosiblePuntoinflexion = max(vectorintensidades(posiblePuntoinflexiont1:n));
%5e ~CJ! tl Y~<tlQ;. ~l.!Ü~;~l con mayor ¡;~~s&&:i.~ al .pJl.llS:Q de i!l~;JjQ¡¡, en &-M-Q U!1 y~j~ pjw~~ con la m.~t'~ t~-s~~j,
i§~ &mll,~ ~ltnayor W,Q;., J,)~Q ?,~ )},)~[(.'% ~l lÜxll con mayor ~~~J.í\ &ls?.m!.~§ !i~All.Wl~.Q, en S,.~~~ &.M~Q para ~;¡l.,¡¡¡~~ con la
%m.J.P.~ lf:~ii,!,!Slf!<J,)! ¡¡¡; ~9J\l'% ~1 QISUP4: Yí\J.y¡.~.t-9. ¡¡.~ ;.Wü,fl con la tJ».:;¡U~~ de ~~h~í\4: al V..R~~p de i,'lt,l~.«J,Qn lo mayor VQP.lli.U:
vector Pos ic ionesl!ax imoP ixelesl!enoresAlPunto Inflex ion = f ind(vector Intensidades( 1: posible Punto Inf lexion) ==
valorllaximoPixelesllenoresAPosiblePuntoinflexion);
vectorPosicionesl!aximoPixelesHayoresAlPuntoinflexion = find(vectorintensidades(posiblePuntoinflexiont1:n)=
valorHaximoPixelesllayoresAPosiblePuntoinflexion);
índice Valor llax imoP ixe lesl!enor APos ib 1 ePunto I nf lex ion = vector Pos ic io nesl!ax imoP ixe 1 es He nor esAlPunto Inf lex ion
( length(vectorPosicionesl!aximoPixelesllenoresAlPuntoinflexion): length(vectorPosicionesl!aximoPixelesHenoresAlPuntoinflexion));
indiceValorl!ax irnoP ixe lesl!ayoresAPos ib lePunto Inf lexion = vectorPos icionesllaximoP ixe lesMayoresA!Puntoinf lex ion( 1: 1) ;
indiceVa!orl!ax irnoP ixe !esl!ayoresAPos ib lePunto Inf lexion = indiceValorl·!ax imoPixe lesl!ayoresAPosib lePuntoinf lexion + posib!ePuntoinflexion;
108
valorPixelU!iliralParaBinarizar = min(vectorintensidades(indiceValorHaximoPixelesHenorAPosiblePuntoinflexion:
indiceValorMax imoP ixelesllayoresAPos ib lePunto Inflex ion) ) ;
vectorPosicionesPixelUmbralParaBinarizar = find(vectorintensidades(indiceValorMaximoPixelesHenorAPosiblePuntoinflexion:
ind iceVa lar llax ilno P ixe lesHayo res APos ib le Punto Inf lex ion) ==valor Pixel Umbra lParaB inar izar) ;
posicionU!iliral = vectorPosicionesPixelU!iliralParaBinarizar(l.:1)+(indiceValorliaximoPixelesMenorAPosiblePuntoinflexion-i);
disp( [ 1 El ~'\?,;.ÜAQ local ;;,.n:, la t~~~~:i~ ~J: 1 int2str( indiceValorMaxilnoPixelesMenorAPosiblePuntoinflexion)]);
disp ( [ 1 ~.llf11!Üit\Q ~91: la ~¡~;;~~ @:í 1 int2 str ( indiceValorllax imoP ixe lesMayoresAPos ib lePunto Inf lexion)] ) ;
disp( [ 1 ~.1 ~~4,?,1 para ~t~iA~ ~~: 1 int2str( posicionUmbral)]);
if valorllaximoPixelesllayoresAPosiblePuntoinflexion == O
figuraEsPupila = 1 Y~~,¡;a';
else figuraEsPupila = ~~~j~';
disp( [1 El ~j_2.~9~ .s;.;~Jjgr;!Q ~.:~r~~ a .\mil ;mpJ).~ ~ht&l.$!.~: 1 figuraEsPupila]);
end
109
function [filaPupila 1 colm~naPupila 1 radioPupila] = buscarRegionCircularParaPupila(imagenPupila);
disp(: ~~;t~1S,~%t~%~\JJ~fo.~JR. ~JJ;lJ;,,-~;U:[i,~~:buBc8.rHeqionCirc11.1.&rParaPt.tpi l.a%~:z%~;;~t;~:zi:~;:;:% 1);
%\~%%~%%%%%%%%%%~%%%%%%%%%%%%%%%~%%%%%%%~%%%%%%%%%%1%%~%%%~%%%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~%%%%%%%%%%%
%La QgpjJ'i\ no 1;,8 ~~ gJ,~,\\lQ .~ll,.~.~,íJt~s¡!1!,~ 1 en !;~.~ t\.t!;9,Q.9. (?.,\!~9»-J,~~ la mili.~~ re~¡ion %~HH%%%%%H~%~~HH%H~ %circular .r;¡~,¡s¡ la ~Qlll~JU,W, con la tJJli~JJ~~Itq de no v~e..WS:4: W.m:;{,~JQ,g en la .~~a,.t~ s\,?,l irisH%%%HiH%%W:HH
[ro11s cols] = size( imagenPupila);
%Se 9!~~~ ¡;p.).~ en J~ ~ír~k~~ de la ,U;!~¡¡;~¡; J!~5W Q,~~.cg. t<l~l*W{ y gl .P4:Q~lmJ~~ W,yQ.lÚ<~mmmmH %~JQj:,.!;,R S;9J,>',.lt~ Jll-~~~ p.m;: (;,.ii,R ~ ~f,(.~WQ .~JiniJE~ ti ~.J!i,c'~qiWM%HH%%%%%H%%%%%%HH~%%%H%%%%%H
imagenBinarizadaSinRuidosEnEsquinas = eliminarRuidoEsquinasSuperioresinferiores(imagenPupila); vectorCantidadPixelesBlancos = find(imagenBinarizadaSinRuidosEnEsquinas == 1); [cantidadPixelesBlancos e]= size(vectorCantidadPixelesBlancos); minimoRadioCirculoQueContendraLaRegion=round( sqrt( cantidadPixelesBlancos/3 .l. 'l 15)) ;
[ coordenadaXPuntollasAl to 1 coordenada YPuntollasAl to 1 coordenadaXPuntol!asExtremo 1 coordenada YPuntol!asExtremo] localizarPuntosExtremosimagenBinarizada(imagenBinarizadaSinRuidosEnEsquinas); flagCirculoContieneRegion = O; 1rhile flagC irculoCont ieneRegion == G
end
circuloGenerado = generarCirculos(coordenadaXPuntollasExtremo 1coordenadaYPuntollasAlto 1
minimoRadioCirculoQueContendraLaRegion 1 rol15 1 Cols); regionReunida = circuloGenerado 1 imagenBinarizadaSinRuidosEnE5quinas; if regionReunida == circuloGenerado
flagCirculoContieneRegion = 1; else
minimoRadioCirculoQueContendraLaRegion=minimoRadioCirculoQueContendraLaRegiont.1.;
e mi
f i laPupila=coordenadaXPuntol{asExtremo; col~naPupila=coordenadaYPuntoHasAlto;
radioPupila=minimoRadioCirculoQueContendraLaRegion;
disp( [' L::, PJ.lt:J~JJ?.;: ~l.\(,}~ .h\1\l.tl:;u;; (.tJ);;.,~J..&El ','J.: (' int2str(filaPupila) 1,
1 int2str(col~naPupila)]);
disp( ['El radio <::\>;; la :R:>l.P.J.),í. -%~ :' int2str(radioPupila)]); disp(; ~t¡~~!s;:~?;~~~~Fin ¡~_¡Q,~,~~*.J.m&1;;,Q.!huecarRe;rionCircularParaPupila~ 1;;:~~i:%~;~%~~i%% 1
);
e mi
110
funotion [irisRecortada,radio] = calcularRadioiris(irnagen,xc,yc,rc);
%5e: ~~.lj;¡;;;; la ~t.;~ U.~~ de: la .iJ>@W',.p,, ~ ;;;QJjJ~ ~l tilJ<l;,!.;;: de Canny pa1:aH%%H%H%%HHHH;
%~t~M..t-..~ ~ J.JJJJá.~ $l r:adío%%%%%%%~.;%%%%%~%%~%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~
[rows cols]=size(irnagen); iris=irnagen(xc:J.:ows,yc:co!s); [histograma c]=irnhist(iris); [posicionUrnbra!,figuraEsPupila] = ca!cu!arUrnbra!Histograrna(histograrna,J.OO); irnagenBinarizada = irn2bw( iris,posicionUrnbra!f;'.S6); ir isRecortada = edge ( iris 1
1 C~u1ny 1 ) ;
[rows co!s]=size(irisRecortada); radio=U; for i= 1: rows
end
for j=(co!s/2):co!s k=co!s-j+(cols/2);
en1l
if irisRecortada(i,k)
if (k/cols) < (7/8) radio = k;
end
end
if radio > U break;
end
disp( 1 ~%-%i:'%% -ti;%%:.;;,· Fin .p/\>~R.-9..S:J.~:~41-~~: cal,::ul::tr:Radioir· is~;% ~~~ ~ ::;~%~;i:%!;%f;' ) ;
end
funotion .[iris]=extraeriris(irnagen,xc,yc,radiÓinterno,radioExterno);
[rows cols]=size(irnagen);
for i =1: rows
for j = l:cols if ((xc-i)"2+(yc-j)''2) < (radiointerno"2) 1 ((xc-i)"2+(yc-j)"2) > (radioExterno"2)
imagen( i ,j )=;·; ·'.'.;s;
end
en1l
end
if xc+radioExterno > rows
lirniteXc rotJs;
else lirniteXc = xc+radioExterno;
end if yc+radioExterno > cols
lirniteYc cols;
el se limiteYc = yc+radioExterno;
en1l iris=irnagen(xc-radioExterno:lirniteXc, yc-radioExterno:lirniteYc);
end
111
function [irisCoordenadasPolares]=transformariris(imagen,xc,yc,ri,re);
[rows cols]=size(imagen); for i = J:rows
end
:for j= 1: e o ls z=sqrt((i-xc)A2+(j-yc)A2); if z < re & z > ri
eml en(l
x=i-xc; y=j-yc; angulo=asin(abs(x)/z); ¡ ifx<CI&y>D
theta=angulo; end if X < Ci & y < Ci
theta=pi-angulo; end ifx>O&y<D
theta=p i+angulo; end ifx>O&y>U
theta=2*pi-angulo; end p=ceil(((z-ri)/(re-ri))*63+1); irisCoordenadasPolares(p,ceil((theta/(2*pi))*512))=imagen(i,j);
112
twwtion [ir isCode] =codificar Iris ( P) ; k=6;
[M,N]=size(P);
P=double( P);
tor i = 1: M
:Eo1.· j=1: M
i:f (k-1)/(2Ak) <= j < (k-l/2)/(2Al) Hm(i,j) = (2A(k/2))/sqrt(64);
else
Hm(i,j)
else
-(2A(k/2))/sqrt(64);
Hm(i,j) O; end
:Eor i J.:N
:Eor j=l :N
end
end
i:f (k-1.)/(2Ak) <= j < (k-l/2)/(2Al)
Hn(i,j) = (ZA(k/2))/sqrt(512);
else
end
Hn(i,i) else
Hn(i,j)
end
-(2A(k/2))/sqrt(512);
l"l • .. ,
C= Hm*P*Hn; tor i = 1.: !~
:Eor j= 1 :N
ii:E C(i,j) <u irisCode( i*j) O;
else
irisCode(i*j) 1; end
end
end
113