universidad nacional de ingenieria facultad...

113
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

Upload: trinhkiet

Post on 01-Oct-2018

216 views

Category:

Documents


0 download

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

ATIZ1
Nuevo sello

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'

Complemento

A A'

Traslación

A

ReflExión

Figura 12: Operaciones unitarias

28

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

FLAGCONTIENECIRCULO = TRUE;

SINO

MINIMORADIO = MINIMORADIO + 1;

FIN SI

FIN MIENTRAS

FIN

67

[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

86

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