Está en la página 1de 10

SISTEMA DE RECONOCIMIENTO DE ROSTROS

SISTEMA DE RECONOCIMIENTO DE ROSTROS

Categoría:
Pre-grado - Alumno

Área Temática:
Ingeniería de Sistemas – Procesamiento Digital de Imágenes

Autor
Sandra María Villa Palacios

Universidad Peruana de Ciencias Aplicadas (UPC)


Escuela de Ingeniería Electrónica

Asesor
Dr. Guillermo Kemper Vásquez

RESUMEN

El presente proyecto propone un sistema computacional capaz de reconocer rostros a partir de imágenes
faciales capturadas a través de una cámara web. El sistema compara paramétricamente la imagen adquirida
con aquellas almacenadas en una base de datos (usuarios registrados). Para ello, se desarrolló una aplicación
en MATLAB, utilizando la interfaz visual Guide. En esta aplicación se pueden controlar los parámetros
utilizados para el proceso de reconocimiento. El método de reconocimiento empleado es basado en el
procesamiento de imágenes “eigenfaces”. Actualmente el sistema se encuentra en la fase de ajuste y
calibración de parámetros. Los resultados parciales obtenidos hasta el momento son presentados al final del
presente trabajo.

ABSTRACT

This project consists on the implementation of a system that recognises faces using facial images that are
taken with a webcam, comparing them with others that are saved in a database. For that reason, an application
in Matlab was developed, using the Guide interface, to create visual applications. With this application, the
parameters used for recognition process can be controlled, which defines the efficiency of the processes. This
paper explains the performance of this system and the mathematical fundamentals used to its development.

I.- INTRODUCCIÓN

En la actualidad, la seguridad es un tema que tiene gran importancia a nivel mundial. En el Perú, el aumento
de la delincuencia ha hecho que muchas empresas y entidades opten por el uso de sistemas de seguridad cada
vez mas sofisticados. Es por ello que en los últimos años se ha explotado los sistemas biométricos como
métodos efectivos de seguridad. La biometría es un campo tecnológico que consiste en identificar personas a
través de características físicas únicas.
Desde la percepción del ser humano, la forma más sencilla de reconocer personas es a través del rostro, ya
que este tiene características únicas como distancia entre los ojos, anchura de la nariz, forma de la barbilla,
pómulos, forma de la boca, etc.
El presente trabajo apunta al desarrollo de un sistema computacional de seguridad basado en el
reconocimiento de rostros, que explota las características anteriormente mencionadas..

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 1


SISTEMA DE RECONOCIMIENTO DE ROSTROS

II.- OBJETIVOS

• Desarrollar un sistema de reconocimiento de rostros de gran confiabilidad


• Estudiar e implementar técnicas de procesamiento digital de imágenes que permitan minimizar tasa de
error del sistema.
• Validar el sistema empleando los métodos convencionales descritos en la literatura científica
especializada.
• Implementar un sistema de fácil operatividad con el usuario.
• Desarrollar un sistema de bajo costo para ser instalado en cualquier sistema operativo Windows.

III.- JUSTIFICACION

Se desea desarrollar un sistema que sea capaz de reconocer personas a partir de sus características faciales y
compararlas con una base de datos para identificar finalmente si se trata de una persona registrada o no. Para
esto, es necesario que el sistema sea lo más confiable posible. Esto significa que el margen de error debe ser
mínimo, ya que de no ser así podría ocasionar problemas en una situación real. Asi mismo el procesamiento
debe ser computacionalmente lo mas eficiente posible.
El hardware estará conformado por una computadora, una cámara web y una plataforma en la cual el
individuo colocará su rostro para poder capturar la imagen.
El sistema será desarrollado totalmente en el Perú y tendrá un costo bajo, lo cual permitirá que tenga mayor
accesibilidad por parte de usuarios y empresas.
Asi mismo se apunta a obtener un producto final que sea de fácil operatividad por parte del usuario,
visualmente atractivo y capaz de ser instalado en sistemas operativos Windows, los cuales son los mas
utilizados por la mayoría de usuarios de computadora.

IV.- APLICACIONES

El producto final podrá ser utilizado en diversas aplicaciones relacionadas con seguridad y acceso restringido.
Una de ellas está relacionado con empresas o áreas en las que se permite el ingreso a un número limitado de
personas. También se puede aplicar en lugares públicos con gran concurrencia de personas. Asi mismo
aeropuertos para la identificación de requisitoriados o personas sospechosas de algún delito.

V.- DESCRIPCION DEL SISTEMA PROPUESTO

El sistema está conformado por un programa desarrollado en MATLAB y por una parte de hardware. Esta
última es conformada por una computadora conectada a una cámara web para poder capturar las imágenes de
los rostros de diferentes personas. La cámara web estará colocada sobre un soporte, el cual a su vez tendrá una
base donde la persona colocará el rostro para que la cámara web pueda capturar la imagen respectiva. El
diseño consiste en una caja, donde se encontrará la cámara web en un extremo y en el otro el soporte del
rostro. Además se colocará una lámpara fluorescente en la parte superior para asegurar una adecuada
iluminación. El esquema de la base propuesta se muestra en la Fig. 1.

En la parte de software, se ha implementado un algoritmo que permite segmentar las imágenes capturadas
para obtener únicamente la imagen del rostro D esa forma se descarta información de otro tipo que puede ser
no relevante para los objetivos del programa. Posteriormente, se procede con la descomposición de las
imágenes para luego aplicarles la técnica de Análisis de Componentes Principales, con lo cual finalmente se
procede a realizar el reconocimiento. A continuación se explicarán los temas involucrados para la realización
del algoritmo y posteriormente los pasos que se siguieron para la implementación del programa.

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 2


SISTEMA DE RECONOCIMIENTO DE ROSTROS

Fig. 1 Base para la captura de imágenes

Segmentación de imágenes:

Una vez que la imagen es capturada con la cámara web, se procede con el algoritmo de segmentación, el cual
está basado en las proyecciones de las derivadas de las filas y columnas de los valores de la imagen.
Previamente, se le aplica el filtrado de mediana a la imagen, para quitar el ruido y suavizar la imagen. Luego
se procede a recuantizar la imagen a dos bits, para que los cambios sean más bruscos y de esta manera las
derivadas se detecten mejor. Luego, se obtiene el negativo de la imagen recuantizada para que el fondo y todo
elemento no perteneciente al rostro sea oscuro y facilitar la segmentación (ver Fig. 2).

Fig. 2 (a) Imagen capturada después de aplicar el filtrado de mediana. (b) Imagen recuantizada a dos bits. (c)
Imagen negativa.

De la imagen negativa, se obtienen los vectores Pv(n) y Ph(n), que son las proyecciones de las columnas y las
filas, respectivamente (ver Fig. 3). Como cada fila y columna tiene información de los valores de los píxeles,
las proyecciones tienen la información de los píxeles de toda la imagen. A estos vectores se les calcula la
derivada para poder ver los cambios de estos valores, es decir, cambios de tonalidades en la imagen.

A partir de de Ph(n) y Pv(n), se obtienen las derivadas Ph’(n) y Pv’(n) (ver Fig. 4). , donde “n” es el índice
que corresponde a cada elemento que contienen los vectores.

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 3


SISTEMA DE RECONOCIMIENTO DE ROSTROS

4
x 10
6

0
0 50 100 150 200 250

4
x 10
6

0
0 50 100 150 200 250 300 350

Fig. 3 Proyecciones de filas y columnas

3000

2000

1000

-1000

-2000
0 50 100 150 200 250

4000

2000

-2000

-4000
0 50 100 150 200 250 300 350

Fig. 4 Derivada de las proyecciones de filas y columnas, respectivamente

Para las columnas, se obtiene el valor máximo, que indica la primera variación de tonalidad. Este valor se va a
usar para segmentar la imagen en el eje vertical. El valor máximo de Pv’(n) puede ser expresado como :

Pv’max = Pv’(nmax) (1)

donde:

Pv’(nmax) > Pv’(n) para todo n ≠ nmax (2)

El valor “nmax” es el índice del valor máximo del vector. De la misma forma, “nmin” es el índice del valor
mínimo del vector.

Luego se procede a calcular el valor :

Lp = N – nmax (3)

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 4


SISTEMA DE RECONOCIMIENTO DE ROSTROS

donde “N” es el número de columnas de la imagen y “Lp” el valor equivalente al número de columnas
posteriores al valor máximo.

Luego se procede a calcular el vector Pv1’(n), el cual contendrá los valores de las proyecciones posteriores al
valor máximo. De manera similar, se calcula el vector Pv2’(n). Este vector contiene los valores de Pv1’(n)
desde la mitad hasta el último valor, ya que en este tramo se encuentra el valor mínimo, el cual indica la
segunda variación de tonalidad. Con estos valores, se procede a segmentar la imagen. El procedimiento
matemático se puede expresar como :

Pv1’(n) = Pv’(n + nmax) n = 0, 1, …., Lp - 1 (4)

Pv1’(n) = Pv’(n + nmax) n = 0, 1, …., Lp - 1 (5)

Pv2’(n) = Pv1’(Lp/2 + n) n = 0, 1, …., Lp/2 - 1 (6)

Pv2’min = Pv2’(nmin) (7)

donde:

Pv2’(nmin) < Pv2’(n) para todo n ≠ nmin (8)

Luego se forma el vector con los valores de las proyecciones, desde el índice del valor máximo hasta el índice
del valor mínimo, con lo cual se obtiene las proyecciones de la imagen segmentada con sus respectivos
índices. Estos últimos son utilizados para indicar las columnas a descartar y finalmente segmentar la imagen
en las columnas.
Posteriormente se procede a segmentar la imagen en las filas. A diferencia de las columnas, en las filas no se
utilizará la derivada de las proyecciones debido a que, como se puede observar en la figura 3, sólo hay un
cambio brusco cerca de la fila 50, lo cual indica que hay cambio de tonalidad. Si se observa la figura 2c, en
las primeras filas tienen valores bajos, lo cual se ve reflejado en las proyecciones, y luego cambia a valores
altos que corresponden al rostro. Pero en las últimas filas, donde termina el rostro, no hay cambios
significativos como en el caso de las columnas, por lo que no se podría utilizar el mismo tipo de segmentación
que en las columnas ya que no segmentaría bien, para lo cual se requiere que el límite inferior del rostro vaya
apoyado en una base y de esta manera descartar la parte del cuello o los hombros. De las filas, se obtiene
“Ph(m)”, donde m = 0, 1, …., M-1 (M es el número de filas de la imagen). Luego se calcula el valor máximo
del vector “Ph(m)” para segmentar la parte superior de la imagen :

Ph(mmax) > Ph(m) para todo m ≠ mmax (9)

luego se obtiene :

Ph1(m) = Ph(m = 0, 1, …, mmax/2) (10)

donde “Ph1(m)” contendrá los valores de las proyecciones desde la primera fila hasta aquella cuyo índice es
la mitad del “mmax” (donde “mmax” es el índice del valor máximo de las filas). De esta manera se obtiene el
rango donde se encuentra el cambio brusco que indica cambio de tonalidad (de fondo a rostro).
Para que el cambio sea más evidente, se procede con el submuestreo en factor de 3 de “Ph1(m)”, y a este
último vector se le calcula la derivada, con lo cual se procede a segmentar la imagen en las filas. El
procedimiento se puede expresar como :

Phd(m) = Ph1(3m) Donde m = 0, 1, …, mmax/6 (11)

Phd’(m1) > Phd’(m) Para todo m ≠ m1 (12)

donde “m1” es el índice del valor máximo de Phd’(m)

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 5


SISTEMA DE RECONOCIMIENTO DE ROSTROS

4
x 10
10

0
0 50 100 150 200 250
4
x 10
4

0
0 20 40 60 80 100 120
4
x 10
4

0
0 5 10 15 20 25 30 35 40

Fig. 5 Proyecciones de las filas, proyecciones de las filas hasta la mitad del vector y las proyecciones
submuestreadas en factor de 3

Como el tamaño de las imágenes segmentadas puede variar, se procede a estandarizarlo con pixeles de la
imagen entera o quitándole pixeles sobrantes, según sea el caso. Luego de esto, se obtiene finalmente la
imagen segmentada, como se puede apreciar en la Fig. 6.

Fig. 6 Imagen segmentada

Descomposición Wavelet:

La descomposición wavelet es una técnica que se utiliza para descomponer la imagen de entrada en cuatro
sub-imágenes. En el programa se utiliza la descomposición wavelet para reducir las dimensiones de las
imágenes sin perder la información facial necesaria. El resultado de la descomposición esta conformado
cuatro sub-imágenes, que contienen detalles principales, detalles verticales, detalles horizontales y detalles
diagonales. Para el presente trabajo, se descompuso la imagen dos veces, por lo cual se obtienen cuatro sub-
imágenes cuyas dimensiones son cuatro veces menor que la imagen original; sin embargo, los detalles
principales no se pierden. Para el programa, se utiliza la sub-imagen con los detalles principales y se le
normaliza, a fin de que el rango de grises, se encuentre entre 0 y 255.

En la Fig. 7 se observa la descomposición Wavelet de una imagen facial.

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 6


SISTEMA DE RECONOCIMIENTO DE ROSTROS

Fig. 7 Imagen facial y sus respectivas subimágenes. (wavelets)

Análisis de Componentes Principales (ACP):

El ACP es un método matemático que da origen al método de “eigenfaces”. El método consiste en la


recolección de imágenes de rostros de varias personas que son luego combinadas y convertidas en una matriz.
Los vectores que conforman esta matriz son los denominado vectores “eigenfaces”. Estos pueden ser
combinados adecuadamente para reconstruir cualquier imagen facial del conjunto.
Para describir el método, asúmase en primer lugar que se tiene un conjunto de “M” imágenes, que
previamente fueron segmentadas (de P filas y Q columnas), que son convertidas a vectores “Φi ”. Con ello se
construye una matriz que contiene a cada vector como columna. La matriz resultante presenta por tanto
“PxQ” filas y “M” columnas:

Y =[Φ1, Φ2 ,.......,
ΦM ] (13)

En seguida se calcula el vector promedio de la matriz:

M
1
ψ=
M ∑Φ
i =1
i (14)

Luego se calcula el vector que indica la distancia de cada vector “Φi ” al vector promedio:

Γi = Φ i − ψ (15)

Estos vectores se almacenan en una matriz “A”:

A = [Γ1 , Γ2 ,.......,Γ M ] (16)

Luego se halla la matriz de covarianza para poder hallar sus autovalores y autovectores:

∑Γ
1
C ({Φ i }) = T
i Γi = AA T (17)
M i =1

Como la matriz de covarianza “C” está conformada por PxQ filas y PxQ columnas, resulta ser demasiado
grande, por lo que el programa demoraría excesivamente en procesar la información. Para evitar esto, se
procede inicialmente a plantear la siguiente igualdad:

A T Av i = µ i v i (18)

donde “ ìi ” y “vi ” son los autovalores y autovectores de A TA, de longitud (MxM).

Luego se multiplica “A” por A TA:

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 7


SISTEMA DE RECONOCIMIENTO DE ROSTROS

AA T Av i = Aµ i vi = µi Av i (19)

donde AA T viene a ser la matriz “C”. Con este artificio se obtienen los autovalores y autovectores de la matriz
“C”. Los autovectores de “C” se hallan de la siguiente manera:

M
ui = Avi = ∑v
i =1
ik Γk (20)

Luego se toman los autovectores de los autovalores de mayor valor (por encima de un umbral), ya que
contienen la mayor información respecto a las imágenes del conjunto.
Los autovectores escogidos se almacenan en una matriz “Uk ”, donde “k” es el número de autovectores
elegidos:

U kT = [u1 , u 2 ,......,u k ]T (21)

Al ser multiplicada la traspuesta de la matriz “Uk ”, con la matriz “A”, resulta la matriz del espacio
transformado, la cual contiene los datos de las imágenes proyectadas en el nuevo espacio de dimensión “k”.

Ω k = U kT A (22)

Teniendo los vectores que representan las proyecciones de cada imagen del conjunto sobre el espacio de
dimensión “k”, se procede al reconocimiento de datos, utilizando los “eigenfaces” “Ωk ”.
Cabe resaltar que mediante combinación lineal de los “eigenfaces” se puede reconstruir cualquiera de los
“M” rostros del conjunto. Sin embargo está reconstrucción no es perfecta debido a que se limitó las
dimensiones del espacio para mejorar la eficiencia computacional del sistema.

La reconstrucción se realiza de la siguiente forma:

Aˆ = U k Ω k (23)

Finalmente se obtiene la imagen reconstruida:

Yˆi = Aˆ i + ψ (24)

Programa:

Inicialmente el programa adquiere una imagen de rostro en escala de grises. Luego se realiza el procedimiento
ACP y se obtiene el vector “eigenfaces” de la imagen adquirida. En seguida el vector es comparado con todos
los vectores de las imágenes proyectadas almacenadas, calculando la distancia euclidiana normalizada entre
ellos. La distancia mínima obtenida será la que indique el usuario registrado con el cual el rostro de entrada
tiene mayor semejanza. Sin embargo, esta distancia mínima puede ser muy grande, lo que indicaría que
ninguno de los usuarios registrados coincide adecuadamente con el usuario de entrada. Para evitar este tipo de
problemas, se procedió a establecer un umbral, a fin de colocar un límite en la distancia mínima, y rechazar
usuarios que no están verdaderamente registrados. Si la distancia es menor al umbral, entonces el usuario se
considera como identificado, mostrando en pantalla el nombre respectivo y su foto reconstruida.

El programa ofrece también la opción de modificar la dimensión del espacio y de esa forma alterar el tiempo
de ejecución del mismo. Así mismo se ofrece la opción de poder registrar un nuevo usuario en cualquier
momento.

La interfaz visual de usuario del sistema propuesto es mostrada en la Fig. 8.

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 8


SISTEMA DE RECONOCIMIENTO DE ROSTROS

Fig. 8 Interfaz visual del sistema propuesto

VI.- RESULTADOS

Con estas adiciones al programa, se procedió al reconocimiento de las imágenes y después de comparar
resultados se obtuvo lo siguiente:

• Verdaderos aciertos: 92.26%


• Verdaderos Rechazos: 89.94%
• Falsos aciertos: 7.04 %
• Falsos Rechazos: 10.06%

VII.- CONCLUSIONES

• Se recomienda aumentar el número de imágenes de más personas en la base de datos para comprobar
mejor la efectividad del programa.
• A mayor número de imágenes, mayor tiempo de procesamiento del programa.
• Por ello se recomienda utilizar un número de autovectores intermedio.
• Se estableció un tamaño estándar para las imágenes capturadas ya que estas son convertidas luego a
vectores que se almacenan en una matriz.
• El algoritmo de segmentación ayuda a reducir las dimensiones de las matrices y esto hace posible que el
tiempo de procesamiento del programa sea menor.
• Se recomienda utilizar un fondo blanco para evitar problemas de iluminación.
• El recorte de las imágenes ingresadas por la webcam ayuda a quitar detalles sin importancia (no faciales)
e iguala en tamaño a las demás imágenes registradas.
• El proceso de reconocimiento devuelve como dato principal el nombre del usuario reconocido, lo cual
facilita la identificación de los mismos.

REFERENCIAS BIBLIOGRÁFICAS

[1] Turk, Mathew and Pentland, Alex, “Vision and Modeling Group, the Media Laboratory. Massachusetts
Institute of Technology”.

[2] Pecenovic, Zoran and Crivelli, Rocco, “Signal Processing Mini-project: Face recognition using
eigenimages”.
[3] Bergasa, Luis Miguel, “Aplicaciones con PCA”.

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 9


SISTEMA DE RECONOCIMIENTO DE ROSTROS

DATOS PERSONALES

Sandra María Villa Palacios


Av. Los Forestales Mz H6 lote 41. Urb. La Riviera de Monterrico. La Molina, Lima.
e-mail: u210026@upc.edu.pe, sandravilla445@hotmail.com
Teléf.: 01-3488507, Cel.: 01-93322949

UNIVERSIDAD PERUANA DE CIENCIAS APLICADAS 10