Encuentro de Investigaci´on en Ingenier´ıa El´ectrica Zacatecas, Zac, Marzo 13—14, 2008
Implementaci´
on de un Sistema de
Reconocimiento de Huellas Dactilares en un
DSP Basado en la Funci´
on POC
Reducindo Ruiz, I.1
, Arce Santana, E. R.2 1
Unidad Acad´emica de Ingenier´ıa El´ectrica, Universidad Aut´onoma de Zacatecas.
2
Facultad de C´ıencias, Universidad Aut´onoma de San Luis Potos´ı.
1
Tel: (492) 9275613, e-mail: [email protected]
2
Tel: (449) 9105002, ext. 127, e-mail: [email protected]
Resumen — En este documento se pre-senta la informaci´on referente a la imple-mentaci´on de un sistema de identificaci´on de personas a trav´es de sus huellas dac-tilares, implementado en el DSP (Digi-tal Signal Processor) TMS320C6713 de la TI (Texas Instruments), usando el sen-sor dactilar FADT2 AFS8600 de la mis-ma compa˜n´ıa. El sistema biom´etrico im-plementado, esta basado en el algoritmo de reconocimiento de huellas dactilares por medio de la funci´on POC (Phase Only Cor-relation), usada como medida de simili-tud entre dos huellas dactilares. La mayor parte del algoritmo fue implementado en el DSP por medio de su programaci´on en CCS (Code Composer Studio) y el resto en MATLAB, obteniendo un sistema que trabaja en sincron´ıa, entre el DSP y MAT-LAB.
Abstract — On this paper is presented the information about the implementa-tion of a fingerprint identificaimplementa-tion sys-tem using the DSP (Digital Signal Proces-sor) TMS320C6713 from TI (Texas Instru-ments), and using the finger sensor FADT2 AFS8600 from the same company. The bio-metric system used, its based on the
fin-gerprint identification algorithm using the POC (Phase Only Correlation) function, using this function as a way of measuring the similarities between two fingerprints. Most of the algorithm was implemented on the DSP using its own programming en-vironment CCS (Code Composer Studio) and the rest using MATLAB, obtaining this way a system that works in synchrony between the DSP and MATLAB.
Descriptores — Biometr´ıa, Funci´on POC, Procesador Digital de Se˜nales, Proce-samiento Digital de Im´agenes.
I. INTRODUCCI ´ON
C
ON el avance en las tecnolog´ıas de la in-formaci´on, muchas de las labores que anteriormente eran realizadas por seres hu-manos son, gracias a las mejoras tecnol´ogicas, realizadas por sistemas automatizados [1]. Dentro de estas actividades que pueden ser automatizadas en la actualidad, se encuentra la identificaci´on de individuos o biometr´ıa. Para que una caracter´ıstica anat´omica pue-da ser utilizapue-da en un sistema biom´etrico,debe cumplir con las siguientes caracter´ısti-cas: Universalidad, Unicidad, Permanencia y Cuantificaci´on [2].
Un indicador biom´etrico que satisface estos requisitos es la huella dactilar. Sin embar-go, la gran variedad de imperfecciones en la adquisici´on de una misma huella (rotaciones, condiciones de la piel, ruido en la captura, traslaciones, deformaciones, etc.), es uno de los principales problemas [3]. En este trabajo se presenta la implementaci´on f´ısica de un sis-tema biom´etrico, que elimina una gran canti-dad de imperfecciones en la adquisici´on de las huellas dactilares, usando un algoritmo robusto basado en la funci´on POC [3].
II. SISTEMA DE IDENTIFICACI ´ON DE HUELLAS DACTILARES
En la Figura 1 se muestra el diagrama de blo-ques del sistema implementado cuya estruc-tura se divide en dos etapas: 1) etapa de reg-istro y 2) etapa de identificaci´on. En la etapa de registro ´unicamente se captura y almace-na la huella dactilar patr´on f, en una base de datos. Por otro lado, el objetivo de la eta-pa de identificaci´on es determinar un nivel de similitud entre la huella patr´onf y una huella candidata g. Esta etapa incluye los bloques de captura, extracci´on de las caracter´ısticas de las huellas mediante un pre-procesado y aplicaci´on de la funci´on POC [4].
Figura 1. Diagrama de bloques del sistema biom´etrico.
III. FUNCI ´ON POC
La funci´on POC [Koichi Ito et.al] es una me-dida de identificaci´on entre dos im´agenes que permite cuantificar la similitud entre ellas. Esta funci´on se define como la correlaci´on normalizada en el espacio de frecuencias en-tre dos im´agenes f yg de dimensiones N1 x N2 [3] y [4]: PF G(k1, k2) = F(k1, k2) ¯G(k1, k2) ¯ ¯F(k1, k2) ¯G(k1, k2) ¯ ¯ (1)
dondeF yGdenotan la Transformada Disc-reta de Fourier en 2D (DFT2D) de las hue-llas patr´on f y candidata grespectivamente,
F y G definen las componentes de fase de la DFT de f y g, G es el conjugado de G
y PF G representa la DFT2D de la funci´on POC. Consecuentemente, la funci´on POC en el dominio del tiempo en (2) se obtiene al aplicar la Transformada Inversa Discreta de Fourier en 2D (IDFT2D) en (1) [3] y [4], dan-do como resultadan-do: pf g(n1, n2) = 1 N1N2 P k1,k2 PF G(n1, n2)WN−k1n1 1 W −k2n2 N2 (2) conWN1 =e −jN2π 1 yW N2 =e −jN2π 2.
En general la funci´on POC representa una operaci´on semejante a la correlaci´on pero con propiedades m´as convenientes al problema de identificaci´on de huellas dactilares como son: es invariante a traslaciones, escalamientos de intensidad de la imagen y robustez al ruido, a diferencia de la funci´on de correlaci´on or-dinaria [3] y [4]. En la Figura 2 se ilustra la diferencia entre la aplicaci´on de la funci´on POC y la funci´on de correlaci´on ordinaria de las im´agenes f yg.
Figura 2. a) Imagenf, b) Imageng, c) Correlaci´on ordinaria entref y ella misma, d) Correlaci´on ordinaria entref yg, e) Funci´on POC entrefy ella
misma y f) Funci´on POC entref yg.
IV. IMPLEMENTACI ´ON DEL ALGORITMO DE IDENTIFICACI ´ON El proceso implementado para el re-conocimiento de las huellas dactilares con-siste en comparar una huella patr´on f con una huella candidata g, obteniendo de esta comparaci´on un valor de similitud que se uti-liza para validar o rechazar la huella candi-data.
El algoritmo fue implementado en el DSP TMS320C6713 el cual se muestra en la figu-ra 3, con el sensor dactilar FADT2 AFS8600 montado.
Figura 3. DSP TMS320C6713 y sensor dactilar FADT2 AFS8600 de Texas Instruments.
El funcionamiento del sistema comienza con el establecimiento de la comunicaci´on entre el DSP y MATLAB a trav´es de la librer´ıa RT-DX, a continuaci´on MATLAB inicia la cap-tura y el DSP obtiene la huella dactilar candi-dataga trav´es del sensor FADT2, que entre-ga una imagen de 96X96 pixeles y se maneja dentro del DSP como un arreglo lineal. Una vez capturada la huella se procede a la etapa del pre-procesado de las huellas, en la cual se van modificando las huellas candidata y pa-tr´on para reducir los errores de identificaci´on producidos por ruido, rotaci´on y desplaza-miento.
Dos funci´ones muy importantes para poder llevar acabo este trabajo son la DFT2D y la IDFT2D, el c´odigo con el que se programaron estas funciones en el DSP es el siguiente (para mayor detalle sobre la forma de programci´on del DSP ver [5]):
Transformada Discreta de Fourier en 2D void dft2(COMPLEX *x2,int m,int div,COMPLEX *out){
float sumRe = 0; float sumIm = 0; int i = 0; float real1 = 0; float real2 = 0; double imag1 = 0; double imag2 = 0; int cont_trig = 0;
for (i = 0; i < div; i++){ cont_trig=(i*m)%div;
real1 = x2[i].real*COS_ren[cont_trig]; real2 = x2[i].imag*SIN_ren[cont_trig]; imag1 = x2[i].imag*COS_ren[cont_trig]; imag2 = x2[i].real*SIN_ren[cont_trig]; sumRe += real1 + real2;
sumIm += (float)(imag1 - imag2); }
out[m].real = sumRe; out[m].imag = sumIm; }
Transformada Inversa Discreta de Fourier en 2D
void idft(COMPLEX *x2, int m, int div, int selec, COMPLEX *out){
float sumRe = 0; float sumIm = 0;
int i = 0; float real1 = 0; float real2 = 0; float imag1 = 0; float imag2 = 0; int cont_trig = 0;
for (i = 0; i < div; i++){ cont_trig=(i*m)%div; if(selec==201){ real1 = x2[i].real*COS_col[cont_trig]; real2 = x2[i].imag*SIN_col[cont_trig]; imag1 = x2[i].imag*COS_col[cont_trig]; imag2 = x2[i].real*SIN_col[cont_trig]; } else{ real1 = x2[i].real*COS_ren[cont_trig]; real2 = x2[i].imag*SIN_ren[cont_trig]; imag1 = x2[i].imag*COS_ren[cont_trig]; imag2 = x2[i].real*SIN_ren[cont_trig]; }
sumRe += real1 - real2; sumIm += imag1 + imag2; }
out[m].real = sumRe/div; out[m].imag = sumIm/div; }
El primer paso de el pre-procesado es el en-mascarar la huella candidata g que se mues-tra en la Figura 4, lo que consiste en aplicar un filtro pasa bajas en dos dimenciones en el dominio de las frecuencias, que cambia a ne-gro las zonas de la periferia de la imagen de la huella donde no hay informaci´on y ruido, obteniendo g0 a la que se le aplica la DFT2D
para obtener G.
Figura 4. a) Huella candidatag, b) Filtro de enmascaramiento y c) Huella enmascaradag0.
El c´odigo programado de la funci´on que en-mascara la huella es el siguiente:
void enmascara(int *imagen, float *masc){ int i;
float maximo = 0; COMPLEX *aux1=poc; FFT2D(imagen,fft);
for(i = 0; i < image_size; i++){
aux1[i].real=(fft[i].real*masc[i]); aux1[i].imag=(fft[i].imag*masc[i]); }
IFFT2D(aux1);
for(i = 0; i < image_size; i++){ masc[i]=aux1[i].real;
if(masc[i] > maximo) maximo = masc[i]; }
for(i = 0; i < image_size; i++)
if(masc[i] >= maximo*0.7) imagen[i] = 0; }
A continuaci´on, se entra en un ciclo donde MATLAB toma la huella patr´on f (enmas-carada previamente) de una base de datos, esta se comienza a rotar de -20o
a 20o
obte-niendo as´ı una imagen f0 en cada rotaci´on
(Figura 5). La imagen f0 es enviada al DSP
el cual le aplica la DFT2D para obtener F y calcula la funci´on POC entreF yG.
Figura 5. a) Huella patronf y b) Huella patron rotadaf0.
La func´on POC fue programada en el DSP como funci´on con parametros de entrada y salida para poder ser utilizada en cualquier paso de la programcai´on del DSP y el c´odigo de la funci´on es el siguiente:
COMPLEX fpoc(COMPLEX fx, COMPLEX gx) { COMPLEX aux1,p; float aux2; aux1.real=(fx.real*gx.real)+(fx.imag*gx.imag); aux1.imag=(fx.imag*gx.real)-(fx.real*gx.imag); aux2=sqrt((aux1.real*aux1.real)-(aux1.imag*aux1.imag)); p.real=aux1.real/aux2; p.imag=aux1.imag/aux2; return p; }
De las 41 rotaciones de la huellaf, se obtiene laf0con la que se logr´o el POC mas alto. Con
esta f0 y la g0 se ecuentra el desplazamiento
la posici´on donde est´a ubicado el pico m´as al-to de la funci´on POC, usando esta posici´on se procede a cortar las dos im´agenesf0 yg0 para
obtener solamente el ´area de las dos huellas que se traslapa y eliminar la informaci´on que no coincide entre estas, obteniendo as´ıf00 y
g00 que se muestran en la Figura 6,
terminan-do el pre-procesaterminan-do de las terminan-dos huellas.
Figura 6. a) ´Area de traslape entref0yg0, b) Huella
recortadaf00y c) Huella recortadag00.
El c´odigo para llevar acabo el corte o despla-zamiento de las dos imagenes de las huellas dactilares es el que se muestra acontinuaci´on: if(desplaza.columna<0) new_size.columna=N+desplaza.columna; else new_size.columna=N-desplaza.columna; if(desplaza.renglon<0) new_size.renglon=N+desplaza.renglon; else new_size.renglon=N-desplaza.renglon;
void desp_col_pos(unsigned char *imagen, int size,int corte){
int i,j,aux1,aux2; for (i = 0; i < N; i++) for(j = 0; j < size; j++){ aux1=vec_pos(i,corte+j); aux2=vec_pos(i,j); imagen[aux2]=imagen[aux1]; } for(i = 0; i < N; i++) for(j = 0; j < corte; j++){ aux1=vec_pos(i,size+j); imagen[aux1]=0; } }
void desp_ren_pos(unsigned char *imagen, int size, int corte){
int i,j,aux1,aux2; for (i = 0; i < N; i++) for(j = 0; j < size; j++){ aux1=vec_pos(corte+j,i); aux2=vec_pos(j,i); imagen[aux2]=imagen[aux1]; } for(i = 0; i < N; i++) for(j = 0; j < corte; j++){ aux1=vec_pos(size+j,i); imagen[aux1]=0; } }
void desp_ren_neg(unsigned char *imagen, int size, int corte){
int aux1,i,j; for(i = 0; i < N; i++) for(j = 0; j < corte; j++){ aux1=vec_pos(size+j,i); imagen[aux1]=0; } }
void desp_col_neg(unsigned char *imagen, int size, int corte){
int aux1,i,j; for(i = 0; i < N; i++) for(j = 0; j < corte; j++){ aux1=vec_pos(i,size+j); imagen[aux1]=0; } }
A las im´agenes ya procesadas f” y g” se les aplica la DFT2D para obtener F’y G’, el DSP realiza la Funci´on POC por ´ultima vez con F’y G’, se obtiene el pico m´aximo y se env´ıan los datos (POC, ´angulo de la rotaci´on, f” y g”) a MATLAB (Figura 7). Por ´ultimo, MATLAB muestra estos datos y cierra la co-municaci´on con el DSP, dando por finalizado el proceso.
Figura 7. a)F0, b)G0con una rotaci´on de 2 grados
V. CRITERIO DE IDENTIFICACI ´ON La funci´on POC produce m´ultiples picos que indican varios grados de similitud en difer-entes regiones de una misma imagen, esto de-bido a las posibles deformaciones que presen-tan las diversas muestras de una misma hue-lla dactilar. Con el objetivo de obtener un porcentaje de similitud se estableci´o el cri-terio de tomar la suma de los 2 picos m´as distintivos, estableciendo as´ı el porcentaje de similitud (matching) como la suma de las am-plitudes de los dos picos m´as grandes [4]. Se realizaron algunas pruebas con huellas dactilares de tres personas distintas hacien-do comparaciones entre ellas, arrojanhacien-do como resultado a primera vista, que cuando era la misma persona obteniamos un POC arriba de 0.09, y cuando eran de distintas personas las huellas comparadas, un POC por debajo de 0.06.
Para la toma de decisi´on sobre la validaci´on o rechazo de una huella dactilar candidata se propone la estimaci´on de un umbral, a trav´es de un an´alisis estad´ıstico, para que el sistema sea capaz de distinguir las huellas dactilares aut´enticas de las huellas impostoras. Cabe re-saltar que dicho estudio estad´ıstico no ha si-do realizasi-do, pero se plantea como trabajo a futuro de este proyecto.
VI. CARACTER´ISTICAS DEL SISTEMA Para el desarrollo del sistema biom´etrico se requiri´o de la utilizaci´on de los siguientes el-ementos de hardware:
Tarjeta DSP TMS320C6713 (32-bit, 200-167 MHz, Punto flotante).
Sensor de huellas dactilares FADT2 AFS8600.
PC con procesador Pentium 4 a 3.20 Ghz con 1Gb en RAM.
La tarjeta DSP cuenta con conexi´on USB para la comunicaci´on con la PC. As´ı mismo, cuenta con la extensi´on de perif´ericos para el acoplamiento de una tarjeta hija. Esta ´ultima en lo particular consta del sensor para huellas dactilares FADT2, no susceptible a la presi´on impresa. Las herramientas de software uti-lizadas en el sistema incluyen las plataformas de Code Composer Studio 3.0 (CCS) y MAT-LAB 6.5. La Figura 8 muestra la integraci´on de la plataforma utilizada para la realizaci´on del sistema de reconocimiento de huellas dac-tilares.
Figura 8. Plataforma del sistema biom´etrico.
VII. CONCLUSIONES
En este trabajo se logr´o la implementaci´on de un sistema de reconocimiento de personas por medio de las huellas dactilares basado en el uso de la funci´on POC. Este sistema se integr´o en su mayor´ıa en el DSP dejando solo la parte de las rotaciones a MATLAB, por ser un procedimiento que requiere de mayor potencia de procesamiento de la que dispone el DSP usado en este trabajo.
Los resultados obtenidos mostraron un de-sempe˜no aceptable, ya que son pr´acticamente iguales a los que se obtuvieron en la im-plementaci´on de este sistema usando ´ unica-mente MATLAB, asegurando de esta ma-nera que se program´o el algoritmo de re-conocimiento de huellas dactilares de forma eficiente en el DSP.
Como trabajo a futuro, se propone la apli-caci´on de un banco de filtros de Gabor con el prop´osito de mejorar la calidad en la in-formaci´on de cada huella para reducir la pro-babilidad de error, llevar acabo un estudio estad´ıstico para determinar el umbral que nos permitir´a aceptar o rechazar una huella, as´ı como implementar el algoritmo en su to-talidad y de forma eficiente en el DSP, para de esta forma obtener un dispositivo confiable que pueda ser empleado como un sistema de seguridad aut´onomo.
RECONOCIMIENTOS
Quisiera agradecer a la Secretar´ıa de Investi-gaci´on y Posgrado de la UASLP y a la Co-ordinac´on de Investigac´on y Posgrado de la UAZ por haberme brindado la oportunidad de participar en el verano de la ciencia re-gi´on centro 2007, as´ı como al Laboratorio de Comunicaciones de la Facultad de Ciencias de la UASLP y Analia Sicardi Segade por su apoyo durante mi estancia.
Referencias
[1] Domingo Morales L.,Javier Ruiz-del-Solar; “Sistemas Biom´etricos: Matching de Hue-llas Dactilares Mediante Transformada de HOUGH Generalizada”. Agosto 2007, http://www2.ing.puc.cl/ iing/ed429/sistemas bi ometricos.htm
[2] L. Hong and A. Jain, “Integrating Faces and Fingerprints for Personal Identification”, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 20, no. 12, pp. 1295-1307, 1998. [3] Koichi Ito et.al. “A Matching Algorithm Using Phase Only Correlation”, IEICE Trans. Funda-mentals, vol. E87-A, No. 3 March 2004.
[4] V. M. Cordero Alfaro, E. R. Arce Santana, “Sis-tema Biom´etrico para el Reconocimiento de Hue-llas Dactilares Basado en la Funci´on POC”. 20 de Julio de 2007.
[5] Rulph Chassaing.“Digital Signal Processing and Aplications whit the C6713 and C6416 DS”, John Wiley and Sons, Inc., New Jersey, 2005.