Sei sulla pagina 1di 153

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERA


MECNICA Y ELCTRICA

TESIS

RECONOCIMIENTO DE ROSTROS PARA
CONTROL DE ACCESO DE PERSONAL
IMPLEMENTADO CON TECNOLOGA .NET



QUE PARA OBTENER EL TTULO DE
INGENIERO EN COMUNICACIONES Y ELECTRNICA

PRESENTA:
GUSTAVO ALFONSO GARCA RICRDEZ

ASESORES:
DRA. PATRICIA CAMARENA GALLARDO
ING. ARMANDO MANCILLA LEN


MXICO, D.F. 2008

2
AGRADECIMIENTOS

A mi madre, por tu amor que ha sido siempre motor de mis acciones y fuente
inagotable de energa para seguir luchando. Por tus cuidados y tus desvelos, por
tu optimismo, por mostrarme el mejor camino, por la admiracin que me haces
sentir y por ser la mejor mam del mundo. Gracias por darme la vida y apoyarme
cada segundo de ella!

A mi Mam Licha, por ser un ejemplo inspirador, una oracin por las noches y una
bendicin cada da. Por ensearme tantas cosas y compartir conmigo la poesa,
tus grandes historias, tus carcajadas y la velada del chocolate. Gracias por tu
ternura y cario!

A Vane, por acompaarme desde que llegu a este mundo y ser siempre mi
cmplice y mi confidente, te quiero mucho hermanita! A Christian, por amar a mi
hermana y hacerla tan dichosa.

A mi Mami Lichita, por tu cario y tus cuidados interminables, por ser mi mami,
por estar siempre preocupada por m y por quererme tanto. A mis ahijados,
Marisol y Csar, por ser una gran felicidad para m y contagiarme de sus sonrisas.
Los quiero mucho!

A mi ta Pepita, a mi ta Maggy y a mis primos, por los grandes momentos
compartidos y su cario incondicional.

3

A Lul, por ser ms que una ta, una amiga que me ha apoyado siempre que la he
necesitado, por nuestras largas charlas y tu inmenso cario.

A Fer, por ayudarme tanto en la carrera y en la vida, por ser cmplice de tantas
aventuras y contagiarme de tu alegra, por las perennes enseanzas y consejos y
por quererme tanto. Eres parte de m, te quiero mucho!

A Jessie, por ser el amor de mi vida, por llenarme de tanta felicidad cada instante,
por tu ternura y tu infinito amor, por apoyarme en todo y creer siempre en m. Te
amo!

Al Ing. Ren, la Dra. ngeles, Betito, Eris, Beb, Rosi y Michael, por su gran
cario, su apoyo incondicional y sus bendiciones. Muchas gracias, los quiero
mucho!

A Luis, Olga, Nena Ana y Nena Nena, por su gran amistad y su cario, por los
fabulosos partidos de futbol y las risas interminables.

Al Lic. Roberto, Sra. Sarita, Sari, Chiva y Susi, por regalarme un lugar en su
familia, por brindarme su cario y su apoyo en los momentos ms difciles, por
compartir conmigo risas, historias, consejos y grandes recuerdos que siempre
llevar en mi corazn. Los quiero mucho!


4
A Eduardo, Gerardo, Jos Luis y Alejandro, por las historias y los grandes
momentos compartidos, por su eterna amistad y por estar presentes siempre en
mi vida.

A Magdiel y Romn, mis grandes amigos de la carrera porque sin ustedes no
habra llegado hasta aqu.

A la Dra. Paty Camarena, por su cario sin fin, por ayudarme siempre, en la
carrera, en la tesis y en la vida, por mostrarme un gran ejemplo de talento y
dedicacin, por impulsarme a ser mejor y lograr cada da ms. Muchsimas
gracias!

Al Ing. Armando Mancilla, por ensearme tanto y por el gran apoyo para la
realizacin de esta tesis.

A la Escuela Superior de Ingeniera Mecnica y Elctrica del Instituto Politcnico
Nacional, por darme la oportunidad de estudiar una carrera y a todos mis
profesores por compartir sus conocimientos.

A todos los que han cruzado por mi vida y que han contribuido a hacer de m lo
que hoy he llegado a ser.



5
NDICE
1. INTRODUCCIN............................................................................................................. 6
2. PLANTEAMIENTO DEL PROBLEMA...................................................................... 12
3. OBJETIVOS................................................................................................................... 18
3.1. OBJETIVO GENERAL ......................................................................................... 18
3.2. OBJETIVOS PARTICULARES........................................................................... 18
4. LA BIOMETRA COMO FUNDAMENTO.................................................................. 19
4.1. DEFINICIN Y ANTECEDENTES...................................................................... 19
4.1.1. FASES DE SISTEMAS BIOMTRICOS.................................................... 22
4.1.2. TASAS DE ERROR FAR Y FRR................................................................. 23
4.1.3. ESTNDARES ............................................................................................... 26
4.2. SISTEMAS TRADICIONALES vs. SISTEMAS BIOMTRICOS .................. 29
4.3. SISTEMAS MULTIBIOMTRICOS E HBRIDOS............................................ 34
5. DESARROLLO.............................................................................................................. 36
5.1. ALGORITMO.......................................................................................................... 39
5.1.1. FUNCIONAMIENTO INTERNO................................................................... 48
5.1.2. LIMITANTES DEL ALGORITMO................................................................ 53
5.1.3. BIBLIOTECA DEL ALGORITMO................................................................ 56
5.2. PROTOTIPO........................................................................................................... 59
5.2.1. DISPOSITIVO DE ENTRADA...................................................................... 60
5.2.2. BASE DE DATOS.......................................................................................... 63
5.2.3. SOFTWARE DE ADMINISTRACIN......................................................... 70
5.2.3.1. JAVA......................................................................................................... 71
5.2.3.2. TECNOLOGA .NET............................................................................... 73
5.2.3.3. CLASES ................................................................................................... 79
6. ANLISIS DE RESULTADOS.................................................................................. 119
6.1. ANLISIS ESTADSTICO.................................................................................. 119
7. CONCLUSIONES Y RECOMENDACIONES......................................................... 134
8. GLOSARIO.................................................................................................................. 140
9. BIBLIOGRAFA........................................................................................................... 147
10. APNDICE................................................................................................................. 153
10.1. NDICE DE FIGURAS....................................................................................... 153


6
1. INTRODUCCIN
En el siglo XXI, la identificacin del ser humano ha cobrado gran relevancia.
Con la globalizacin y el desarrollo constante del comercio trasnacional, los
negocios actuales atienden a millones de individuos alrededor del mundo. Esto
genera una problemtica: la identificacin personalizada.
Al contratar un servicio bancario o asistir al trabajo, al visitar a un familiar en
un hospital o al inscribirse en la universidad, al usar la tarjeta de crdito en alguna
tienda departamental o, simplemente, al pagar en el supermercado, se requiere
algn tipo de identificacin.
Desde tiempos remotos, el hombre ha buscado incansablemente la manera
de resguardar sus bienes. Al principio, colocar lo valioso en un lugar recndito
resultaba un escondite magnfico; sin embargo, a menudo se converta en un
riesgo ir de visita a retirar fondos o a incrementarlos, pues siendo muchos los
posibles espas y recordando tambin que las paredes oyen, la historia
terminaba en la prdida de lo resguardado.
Hubo variados intentos por hacer mapas de los escondites, para as poder
volver con certeza al sitio preciso. Con frecuencia, estos mapas hacan referencia
a lugares distantes (no olvidemos las historias de piratas) a los que difcilmente un
ser humano poda volver en toda su vida, por lo que este sistema demostraba
claramente su falta de pragmatismo.
Poco despus el hombre invent las cerraduras y candados. Este
mecanismo le permita asegurar (al menos temporalmente) lo valioso y permitirle
el acceso slo a aqul que tuviera un su poder la llave. De nuevo se top con un

7
inconveniente: si la llave era robada, lo resguardado por ella, sin duda, tambin
desapareca.
El primer cerrojo mecnico descubierto hasta ahora data del ao 1800 a.C.
y fue encontrado en las ruinas del palacio de Khorasabad en una antigua ciudad
de Asiria llamada Nnive, cerca de la actual ciudad de Mosul, Irak. Este
mecanismo era conocido como el cerrojo egipcio debido a su extenso uso en ese
pas. Los griegos utilizaban un mtodo mucho ms sencillo, que consista en
asegurar la puerta con un perno en el interior, de modo que al insertar la llave (de
madera o hierro) en forma de cua, sta empujaba el perno y liberaba la puerta.
Los romanos fabricaron el primer cerrojo completamente metlico basado en los
principios del egipcio y agregando algunas variaciones como la guarda de llave:
una proyeccin o elevacin en el ojo de la cerradura para evitar que el mecanismo
fuese manipulado con objetos distintos a la llave.
1

Eventualmente, con el fin de que las llaves se convirtieran en elementos
casi imposibles de duplicar, stas evolucionaron hasta que hoy en da se usan en
forma de tarjetas magnticas y otras variantes para brindar mayor seguridad. Sin
embargo, el problema de la identificacin persista: aqul que poseyera la llave
(cualquiera que fuese su fisonoma) tendra acceso a lo valioso, tuviese o no
derecho a ello.
Tiempo despus, tal vez inspirado en aquella frase tan trillada brete
Ssamo proveniente de los cuentos de Al Bab y los cuarenta ladrones, y con la
ayuda de la tecnologa provista por las computadoras, el hombre cre las

1
Travellog, History of Locks and Keys, [http://www.queensnewyork.com/history/locks.htm], 2004.

8
contraseas, consistentes en una palabra clave que, introducida en el sistema,
brinda acceso a lo valioso.
2

Las contraseas tienen la misma funcin que las llaves fsicas: constituyen
la primera barrera en el control de acceso. Sin embargo, hereda los mismos
defectos que su predecesora: aquel que conozca la contrasea tendr pleno
acceso a lo valioso, sin importar si es o no el propietario.
As pues, a pesar de mltiples intentos, no se haba podido establecer una
relacin estrecha, directa y segura entre el individuo y la llave, es decir, lograr una
identificacin confiable.
En un intento ms por fortalecer el reciente proceso de identificacin, se
propuso combinar las llaves. De esta manera, el individuo deba portar una llave
fsica y una contrasea para tener acceso a lo valioso. (Este procedimiento es sin
duda una herencia de las "cofradas", en que la cerradura que resguardaba un
tesoro slo poda abrirse si confluan de manera simultnea todos los poseedores
de la custodia). Un claro ejemplo de este mecanismo, es el frecuentemente usado
al ir al cajero automtico: se introduce la tarjeta magntica y a continuacin se
requiere la contrasea. As, la llave y la contrasea dependen la una de la otra,
pues el acceso a lo valioso est supeditado a la posesin de ambas, adecuada y
simultneamente.
Para aumentar la seguridad, se disearon tarjetas con caractersticas que
en el momento tecnolgico de su creacin eran imposibles de duplicar. Esta
solucin, aunque temporal, ha permitido a muchas empresas mejorar su operacin

2
El trmino lo valioso hace referencia a cualquier objeto o informacin que un individuo o
corporacin precise resguardar.

9
cotidiana, con las ventajas e inconvenientes que acarrea el desarrollo tecnolgico
en materia de seguridad.
En cuanto a las contraseas, se haba creado un problema serio: si la
contrasea era demasiado larga y complicada, era prcticamente imposible de
recordar por lo cual haba que anotarla en algn sitio, lo cual significaba regresar
al principio de la historia pues se volva demasiado vulnerable; si, por el contrario,
la contrasea era corta y sencilla, a los amantes de lo ajeno les resultaba
sumamente fcil adivinarla. (Tal vez el caso ms conocido es la utilizacin de las
fechas de cumpleaos en los candados y cerraduras de portafolios y maletas de
viajero). Para sortear esta dificultad, se propusieron reglas para hacer ms slidas
las contraseas, as como mtodos para encriptarlas.
3

La mayora de los sistemas comerciales (hardware y software) sugieren a
los administradores modificar las contraseas que tienen programadas de fbrica,
para evitar que terceros manipulen tales sistemas.
En los actuales sistemas de acceso bancario por Internet se utilizan
generadores de contraseas de una sola vez u OTPs para evitar que el robo o
prdida de contraseas perjudique a los usuarios.
4
Las claves generadas se
utilizan en combinacin con un nmero o nombre de usuario y una contrasea
esttica; adems, nicamente son vlidas durante una sesin y por tanto no
pueden volver a ser utilizadas.
Aunque con todas estas mejoras se ha logrado una relacin directa entre la
llave y la contrasea, no sucede lo mismo entre ellas y el individuo, pues

3
Vase el Glosario.
4
De las siglas en ingls OTP (One Time Password) documentado en el RFC 2289,
[http://www.faqs.org/rfcs/rfc2289.html].

10
permanece la incgnita de saber si tal llave y contrasea son propiedad de aqul
que en un momento dado las tenga en su poder.
Cabe aqu la posibilidad de que por descuido o bajo coercin, el individuo
hubiese perdido o cedido tanto la llave como la contrasea y as, de una u otra
manera (con menor o mayor violencia), alguien ms tuviese acceso a lo valioso.
Se vuelve a enfrentar el precipicio que separa al individuo de una
identificacin confiable, qu hacer entonces para construir un puente seguro que
ayude a resolver dicho problema?
A raz de fructuosas investigaciones por parte de expertos alrededor del
mundo, la tecnologa permiti echar un vistazo a lo ms bsico, algo que el
hombre siempre lleva consigo y que resulta prcticamente imposible de duplicar:
el cuerpo humano.
As es como surge lo que hoy se conoce como biometra: una alternativa lo
suficientemente eficaz para lograr una identificacin confiable y segura.
5

El presente trabajo pretende desarrollar una aplicacin basada en la
biometra, como una aportacin en favor del uso de sistemas biomtricos para
lograr una identificacin confiable al momento de brindar acceso, tanto al personal
de una empresa como a sus clientes y, de esta manera, lograr mejoras en la vida
diaria, en cuanto a la seguridad se refiere.
Para describir las fases del proceso desarrollado en esta investigacin, se
incluye el siguiente diagrama:



5
Vase el Glosario.

11
Figura 1. Diagrama de las fases del proceso desarrollado.

Identificacin del problema
a resolver
Investigacin del tema
Biometra
Bsqueda del algoritmo
Eleccin de un lenguaje de
programacin adecuado
Diseo de un prototipo para
resolver el problema
Construccin del prototipo
Pruebas con el prototipo
Anlisis de los resultados
de las pruebas

12
2. PLANTEAMIENTO DEL PROBLEMA
Desde finales del siglo pasado, en los diversos sectores de la poblacin y a
distintos niveles, se ha observado una tendencia a buscar un control absoluto de
los recursos, tanto materiales como humanos.
Dejando de lado los recursos materiales, por no ser objeto de esta
investigacin, conviene concentrarse en el control de los recursos humanos y,
para ser ms precisos, no se discutir la eficiencia de los recursos humanos
derivada de los conocimientos de los individuos y todo lo concerniente a la
psicologa del trabajo y otras reas aplicables y, en cambio, s se enfocar la
atencin en lo referente al control de acceso de las personas en instalaciones
fsicas, como una medida precisa de su eficiencia.
Con el fin de aclarar la terminologa, se deben considerar algunas
definiciones, adems de lo expuesto en el Glosario.
Segn el diccionario Larousse, eficiencia es la capacidad para cumplir o
realizar bien una funcin.
6

El Diccionario de la Real Academia Espaola de la Lengua dice que
eficiencia proviene del latn efficienta y significa capacidad de disponer de
alguien o de algo para conseguir un efecto determinado.
7

Tambin el diccionario Larousse se refiere a acceso como:
8

Accin de llegar a un lugar
Lugar de entrada o paso

6
El Pequeo Larousse Ilustrado, Mxico, Ed. Larousse, 10. ed., 2004, p. 369.
7
Real Academia Espaola, Diccionario de la Lengua Espaola, 22. ed., [http://www.rae.es/], 2001.
8
Larousse, op. cit., p. 34.

13
Por su parte, el Diccionario de la Lengua Espaola seala que acceso
proviene del latn accessus y proporciona las siguientes definiciones:
9

Accin de llegar o acercarse
Entrada o paso
En el diccionario Larousse, control tiene las siguientes acepciones:
10

Comprobacin, inspeccin o intervencin
Lugar donde se verifica alguna inspeccin
Con el objetivo de crear una definicin adecuada para la presente
investigacin diremos que la eficiencia en el control de acceso ser la
capacidad de comprobar o inspeccionar de manera certera la entrada y salida del
personal.
Para el administrador de una microempresa, darse cuenta de la hora de
salida y llegada de su personal es un problema prcticamente insignificante, pues
le resultara fcil anotar en una simple hoja tales registros y al final de la semana o
de la quincena, puede calcular fcilmente lo devengado por el empleado.
Ahora bien, al considerar empresas ms grandes y con un nmero de
empleados mayor, es decir, si hablamos de una empresa con una nmina de ms
de 250 empleados, resolver el problema del control de acceso con una hoja de
papel resulta extenuante para una sola persona o demasiado costoso para la
empresa si requiere contratar a ms personas slo para llevar el registro del
personal; es bajo estas circunstancias que el problema del control de acceso
adquiere relevancia.

9
Diccionario de la Lengua Espaola, ibidem.
10
Larousse, op. cit., p. 285.

14
Hasta mediados del siglo pasado, el control de acceso del personal tal y
como se concibe hoy en da no exista, sin embargo, haba formas, aunque
precarias e impersonales, de llevar a cabo alguna clase de control. En algunos
sitios como las minas, se les citaba a los trabajadores a determinada hora y una
vez reunidos, se les contaba y enviaba a trabajar; al finalizar el turno, era lgico
pensar que no podan salir ms de los que entraron (y s menos, pues en muchos
casos perecan trabajando) por lo que slo a los que entraron y lograron salir se
les cubra su salario.
En nuestro pas, hasta finales de la dcada de 1960, el control de acceso
de personal continuaba siendo prcticamente nulo. En la mayora de las empresas,
el empleado nicamente llegaba, trabajaba su jornada (en teora 8 horas) y se iba
en cuanto poda.
A principios de la dcada de 1970 surgieron algunos intentos por crear un
control de acceso de personal. Era comn ver en la empresas medianas que se
llevara a cabo el control de acceso del personal utilizando la pirmide jerrquica
existente para que as los empleados de ms bajo nivel reportaran con sus jefes
inmediatos sus horas de entrada y salida y stos, a su vez, se reportaran con sus
respectivos jefes inmediatos y as, hasta llegar a los gerentes y directores. Cada
uno de estos escalones de la pirmide deba referir sus anotaciones tambin al
rea de recursos humanos o contabilidad, segn la organizacin de cada empresa,
para que al trmino del periodo pudiesen determinar el monto que le corresponda
a cada empleado y, en su caso, los descuentos por tiempo no laborado.
Sin embargo, esta solucin resultaba poco precisa debido a que dependa
en gran medida de la relacin de los empleados con su jefe directo, pues si exista

15
(como suele suceder) una amistad o algn lazo consanguneo, se caa en los ya
tan conocidos compadrazgo y trfico de favores, dos notables enemigos de las
corporaciones, tanto pblicas como privadas, que afectan sus intereses y su
desarrollo porque generan el pago de horas no trabajadas y, en algunos casos
ms graves (y no menos comunes), por aviadores que ni siquiera asistan a
trabajar y que simplemente se presentaban a firmar de recibido por un cheque
quincenal.
11

Por el contrario, si exista animadversin entre algn empleado y su jefe
directo, este ltimo se encargaba de inventarle faltas y retardos con el fin de
perjudicar su imagen ante el rea de contabilidad, demeritando as su capacidad
profesional y ponindolo en la lista de espera de algn recorte de personal. En
ocasiones esto resultaba perjudicial para la empresa (y obviamente para el
trabajador) pues deba prescindir de un buen empleado nicamente a causa de
una mala relacin entre un trabajador y su jefe directo.
Durante la dcada de 1970, una de las soluciones preferidas por las
fbricas consista en contratar a uno o varios individuos, conocidos como
tomadores de tiempo, para contar cuntos empleados se encontraban trabajando
y cuntas horas permanecan hacindolo. Esta solucin contina
implementndose en algunas obras de construccin, a pesar del costo que ello
implica.
A finales de la dcada de 1970 y durante los aos de 1980, las preferencias
de las empresas apuntaron hacia una solucin semejante: colocar en los accesos

11
El trmino coloquial aviadores se refiere a aquellas personas que tienen un cargo en una
empresa o institucin por medio del cual perciben un sueldo sin realizar prcticamente ningn
trabajo.

16
de los edificios o plantas, a recepcionistas que pudieran llevar el control de quin y
cundo, para despus realizar un reporte al rea correspondiente. Esta solucin,
adems de costosa resulta inconveniente pues, como se ha expuesto
anteriormente, las relaciones interpersonales se vean inmiscuidas y los reportes
no resultaban fidedignos.
Durante este mismo periodo y hasta principios de la dcada de 1990,
aquellas empresas interesadas en el progreso tecnolgico optaron por colocar
mquinas checadoras: dispositivos que imponan sellos con la hora marcada por
un reloj en tarjetas personalizadas que contenan la informacin referente al
trabajador. De esta manera, lo que se deba hacer era llegar al lugar de trabajo,
tomar la tarjeta propia y colocarla de tal manera que se imprimiese la hora en el
espacio que tena dedicado para la fecha de la que se tratase; sin embargo, esto
no siempre suceda en realidad, pues a menudo un empleado poda ausentarse o
llegar tarde y lograr que un compaero de trabajo sellase la tarjeta en su
representacin y as no tener repercusiones al final de la quincena.
12

En Mxico, a partir de los aos de 1990 se comienzan a utilizar tarjetas
magnticas que permiten al empleado tener acceso a determinadas zonas de un
edificio, incluyendo elevadores y estacionamientos restringidos. Esta solucin
permitira fortalecer la seguridad, pues evitaba que personal no autorizado
irrumpiese en reas de informacin o infraestructura estratgica o de gran
especializacin, susceptible a ser robada o daada.

12
Checar es un mexicanismo, derivado de la palabra check en ingls que significa examinar,
controlar o cotejar.

17
No fue sino hasta el ao 2000 cuando se hace notoria la proliferacin del
uso de las tarjetas magnticas, pudiendo encontrarlas en congresos y eventos de
mediana a gran magnitud, as como en universidades, hoteles, centros de
diversin y todo tipo de establecimientos comerciales.
La resea previa se encuentra basada en el surgimiento de dichas
soluciones en nuestro pas, lo cual no significa que las anteriores hayan cado en
desuso, pues su implementacin ha dependido del tamao de las empresas y de
su capacidad econmica, pudiendo encontrar los dispositivos primitivos an en
muchos sitios del pas en plena aplicacin, por retrgradas que parezcan desde un
punto de vista tecnolgico.
Ahora bien, an con la maravilla de las tarjetas magnticas y su versatilidad,
sigue sin alcanzarse el objetivo principal, o sea poder lograr una identificacin
confiable.
Si tomamos en cuenta todas las dificultades por las que atraviesan las
empresas, tanto pblicas como privadas, en la tarea de llevar a cabo el control de
acceso del personal, el tema central de la presente investigacin es cul sera
una solucin eficiente y confiable que evitara que los empleados influyeran
negativamente en el registro de las asistencias y los horarios de entrada y salida?

18
3. OBJETIVOS
3.1. OBJETIVO GENERAL
Proponer un instrumento para mejorar el control de acceso del personal
mediante la creacin de un prototipo que aborde el problema de la identificacin.
13

3.2. OBJETIVOS PARTICULARES
a) Identificar cul es la metodologa que pueda sustentar el diseo de un
prototipo para abordar el problema de la identificacin
b) Determinar cul es el algoritmo ms viable para desarrollar el prototipo
c) Elegir el dispositivo de adquisicin de video que rena los requisitos
adecuados para el prototipo
d) Elaborar una base de datos que contenga la informacin de los
usuarios y sus respectivas caractersticas
e) Elaborar un software para administrar los procesos y recursos del
prototipo
f) Probar el prototipo con una muestra de usuarios

13
Vase el Glosario.

19
4. LA BIOMETRA COMO FUNDAMENTO
4.1. DEFINICIN Y ANTECEDENTES
Segn el diccionario Larousse, anteriormente se conoca a la biometra
como la parte de la biologa que estudia los procesos biolgicos aplicando
mtodos estadsticos.
14

Sin embargo, debido al avance tecnolgico y a la mejor adecuacin de
dicho trmino, tal definicin se mud a lo que hoy en da se conoce como
bioestadstica.
As pues, tenemos la definicin que se utiliza actualmente:
La biometra consiste en mtodos de identificacin y autenticacin de los
seres humanos a travs de caractersticas fisiolgicas y de comportamiento.
15

En otras palabras, la biometra se encarga de crear mtodos basados en
las caractersticas fsicas y de la conducta de un individuo con el propsito de
identificarlo.
Los mtodos que actualmente estn en desarrollo se basan en
caractersticas tales como: huella digital, huella de la mano, geometra de la mano,
geometra de un dedo, iris, retina, rostro, estructura del odo, estructura de las
venas, ADN, voz, forma de caminar, firma y dinmica del teclado. Las primeras
diez son caractersticas fsicas; la voz, constituye una mezcla de caractersticas
fsicas y de conducta; y el resto, son caractersticas nicamente relativas a la
conducta.

14
Larousse, op. cit., p. 156.
15
Homini, Biometra, [http://www.homini.com/new_page_1.htm], 2004.

20
Aunque cabe la posibilidad, pues siempre existe alguna que otra excepcin,
de que algunas de estas caractersticas sean idnticas tratndose de individuos
diferentes, permiten una vasta aplicacin pues arrojan errores nfimos. Tal es el
caso de los sistemas biomtricos basados en ADN, pues la ciencia dice que la
probabilidad de que existan dos personas con un perfil gentico idntico es de uno
en tres billones, ya que la naturaleza ha permitido escapar a la regla de ADN
nicos a los gemelos monocigticos, es decir, que provengan del mismo vulo.
Fuera de ellos, no existen dos personas con el ADN idntico.
A pesar de que la biometra es fcilmente asociada con tcnicas futuristas y
ciencia ficcin, ha sido utilizada desde tiempos de los faraones egipcios con fines
comerciales y judiciales.
Los comerciantes de la Edad Antigua deban ser hbiles utilizando tcnicas
biomtricas, pues les era necesario identificar a sus clientes cuando volvan horas
despus de haber hecho la compra a retirar sus nuevas propiedades. En una
poca en la que nadie posea una identificacin con fotografa o pasaporte, deban
ser muy observadores y recordar o escribir, los que supieran- los rasgos fsicos
de sus clientes y evitar as malos entendidos.
En el Viejo Oeste, tambin se haca uso de la biometra, pues se
recompensaba a quien capturaba vivo o muerto a alguien cuyas caractersticas
fsicas saltaban a la vista tales como cicatrices (Cara cortada, por ejemplo),
medidas corporales, edad, color de los ojos, tamao y estado de la dentadura, por
mencionar nicamente algunos rasgos.
Tambin existen registros del uso de la biometra en China desde el siglo
XIV, documentado por un explorador y escritor llamado Joao de Barros que

21
menciona en sus textos que los comerciantes chinos mojaban con tinta la palma
de la mano de sus clientes (sobre todo de los nios y jvenes) y conservaban la
huella producida con el fin de identificarlos posteriormente.
16

De igual forma, los cientficos han encontrado evidencia arqueolgica que
demuestra el uso de la biometra en Babilonia, pues contaban con un sistema
manual que les permita reconocer a los individuos por medio de huellas
dactilares.
17

En 1882 Alphonse Bertillon, jefe de la divisin de identificacin criminal del
departamento de polica de Pars, Francia, desarroll un mtodo detallado de
identificacin basado en ciertas medidas corporales, descripciones fsicas y
fotografas. El Sistema Bertillon de Identificacin Antropomtrica tuvo gran
aceptacin, hasta que la identificacin de huellas digitales lo sustituy.
18

La identificacin basada en huellas digitales tiene gran aplicacin en
sistemas de seguridad, pues resulta una buena solucin para pases como la India,
donde una gran parte de la poblacin (entre el 40% y 60%) es analfabeta y su
principal medio de identificacin es la huella digital.
19


16
Colaboradores de Wikipedia, La enciclopedia libre, Biometra,
[http://es.wikipedia.org/wiki/Biometria], 2007.
17
Microsoft Corporation, Encarta Premium, [DVD], 2006.
18
Idem.
19
MapXL Inc., Maps of World, [http://www.mapsofworld.com/thematic-maps/world-illiteracy-
map.htm], 2007.

22
4.1.1. FASES DE SISTEMAS BIOMTRICOS
Los diversos sistemas basados en la biometra realizan procedimientos
similares, que podemos resumir en tres fases:
a) Fase de registro: Consiste en la extraccin de una o ms
caractersticas fsicas o de conducta de un individuo por medio
de un algoritmo, para su almacenamiento en una base de datos
b) Fase de comparacin: Consiste en comparar las caractersticas
de un individuo con las almacenadas previamente en la base de
datos
c) Fase de validacin: Consiste en la aceptacin o rechazo de la
identificacin en base al umbral de decisin establecido en el
sistema
El umbral de decisin es un valor que establece un lmite por debajo del
cual la identificacin ser aceptada y, en contraposicin, si se sobrepasa ese valor
la identificacin se rechazar.
Durante la fase de registro se utiliza un algoritmo de extraccin de
caractersticas que es el encargado de codificar los rasgos ms significativos de
del individuo para poder almacenarlos en una base de datos.
En la fase de comparacin se utiliza un algoritmo de cotejo, que se encarga
de calcular el valor de la similitud entre las caractersticas presentadas por un
individuo para su identificacin y aquellas que se encuentran almacenadas en la
base de datos. Si el valor calculado resulta estar dentro del rango permitido por el
umbral de decisin el sistema producir una autentificacin exitosa para el
individuo en cuestin.

23
4.1.2. TASAS DE ERROR FAR Y FRR
Existen dos parmetros muy importantes para los sistemas basados en la
biometra pues definen sus tasas de errores intrnsecos, que son:
a) FAR (False Acceptance Rate) o tasa de aceptacin falsa.
20

b) FRR (False Rejection Rate) o tasa de rechazo falso.
21

La FAR expresa la probabilidad de que un individuo cualquiera sea
reconocido de manera errnea como dueo legtimo de los datos de referencia.
La FAR depende del umbral de decisin seleccionado, por debajo del cual los
datos de verificacin y los de referencia deben coincidir para obtener una
autenticacin exitosa. Mientras menor sea el valor del umbral de decisin, menor
ser la FAR y mayor resultar la probabilidad de cometer errores de FRR.
La FRR expresa la probabilidad de que el dueo legtimo de los datos
biomtricos de referencia sea rechazado de manera errnea. La FRR tambin
depende del umbral de decisin determinado, por debajo del cual los datos de
verificacin y los de referencia deben coincidir para obtener una autenticacin
exitosa. Mientras mayor sea el valor del umbral de decisin, menor ser la FRR y
mayor la probabilidad de cometer errores de FAR.
Un sistema biomtrico ideal tendra valores nfimos en sus FAR y FRR, sin
embargo en la prctica esto no sucede pues resultan inversamente proporcionales
ya que mientras la FAR aumenta, la FRR disminuye y viceversa.

20
Vase el Glosario.
21
Idem.

24

Figura 2. Comportamiento relativo de la FAR y la FRR.
Los conceptos de FAR y FRR tambin se pueden expresar empleando una
notacin matemtica.
22

Se considerar que Q y R representan las caractersticas de rostros reales.
Supngase que R representa las caractersticas de referencia para el
sistema, compuesta por N bits.
Por otro lado, Q representa las caractersticas de un rostro desconocido
que se pretende identificar, compuesta tambin por N bits.
Si R Q implica que Q y R son caractersticas del mismo rostro.
Si R Q implica que Q y R son caractersticas de rostros diferentes.
Asimismo, se considera que h representa la distancia Hamming entre Q y
R , por lo que podr tomar valores desde cero hasta N .
La distancia Hamming es el nmero de smbolos diferentes en posiciones
correspondientes de dos cadenas de igual longitud, es decir, el nmero de
sustituciones requeridas para convertir una cadena en la otra.
23

Supngase que
U
d representa el umbral de decisin.

22
Dr. George Bebis y Dr. Ali Erol, Conferencia presentada por Milind Zirpe, A Biometrics
Individuality, Department of Computer Science & Engineering of the University of Nevada,
[http://www.cse.unr.edu/~bebis/CS790Q/Lect/Chapter_14.ppt], otoo de 2005.
23
Vase el Glosario.

25
Por lo tanto, si
U
d R Q h ) , ( se dice que Q y R pueden pertenecer al mismo
rostro.
Si
U
d R Q h > ) , ( , entonces se dice que Q y R pueden pertenecer a rostros
diferentes.
As pues, la probabilidad de que cometer errores relacionados con la FAR y
la FRR, con un determinado umbral de decisin, se puede expresar de la siguiente
manera:
( ) ( )
U U
d h P d FAR = para el caso en que R Q
( ) ( )
U U
d h P d FRR > = para el caso en que R Q
Esta probabilidad ser calculada numricamente en base a las pruebas
realizadas durante la presente investigacin, en la seccin 6.1 Anlisis Estadstico.

26
4.1.3. ESTNDARES
Un indicador del creciente inters por los sistemas biomtricos es el
surgimiento de estndares para regularlos. Estos estndares se han convertido en
un punto clave para la estrategia de los negocios. Para cualquier tecnologa, los
estndares aseguran la existencia de productos competitivos en el mercado pues
es en base a ellos que se puede escoger un producto en vez de otro, esto resulta
lo ptimo, pues se tiene un parmetro contra el cual compararlos.
A pesar de que los estndares biomtricos se han ido haciendo cada vez
ms sofisticados, no se ha logrado su unificacin y continan siendo muchas las
propuestas en referencia a este tema. Entre los diversos estndares biomtricos
que existen, destacan los siguientes:
24

a) INCITS M1-Biometrics Technical Committee: El Comit Tcnico
M1 ha sido creado por la Mesa Directiva del International
Committee for Information Technology Standards (INCITS), para
establecer como una prioridad para los Estados Unidos de
Amrica la necesidad de desarrollar y aprobar estndares
biomtricos tanto a nivel nacional como internacional. Este
comit considera crtica la inclusin de estndares de formatos
comunes para archivos e interfaces de aplicaciones.
b) Common Biometric Exchange File Format: En este estndar el
Common Biometric Exchange Formats Framework (CBEFF)
describe un conjunto de elementos de datos comunes para

24
Information Technology Laboratory of the National Institute of Standards and Technology,
Biometrics Standards, [http://www.itl.nist.gov/div893/biometrics/standards.html], 2007.

27
tecnologas biomtricas e independientes de la aplicacin o
plataforma que se est usando (e.g. dispositivos mviles, tarjetas
inteligentes, proteccin de datos, almacenamiento de datos
biomtricos). CBEFF facilita el intercambio de datos biomtricos
entre diferentes componentes de un sistema o entre diferentes
sistemas, promueve la interoperabilidad entre sistemas y
aplicaciones basadas en biometra, provee compatibilidad a
futuro con mejoras tecnolgicas y simplifica el proceso de
integracin entre software y hardware.
c) ANSI INCITS 358-2002, Information Technology - BioAPI
Specification (Version 1.1) - BioAPI V1.1: Esta especificacin
define la Application Programming Interface (API) o interfaz de
programacin de aplicaciones y la Service Provider Interface
(SPI) o interfaz de proveedor de servicios para una interfaz de
tecnologa biomtrica. BioAPI V1.1 define un estndar de sistema
abierto API que permite a las aplicaciones comunicarse con una
amplia gama de tecnologas biomtricas, de manera unificada. Al
tratarse de una especificacin de sistema abierto, la BioAPI est
enfocada para su uso a travs de un gran espectro de entornos y
as incluirse en sistemas multiplataforma.
d) Human Recognition Services Module (HRS) of the Open Group's
Common Data Security Architecture (CDSA): CDSA es un
conjunto de servicios de seguridad por capas y un entorno
criptogrfico que provee una infraestructura para la creacin de

28
aplicaciones multiplataforma, con interoperabilidad y seguridad
habilitada para ambientes cliente-servidor.
e) ANSI X9.84-2000 Biometrics Management and Security for the
Financial Services Industry: Este estndar del American National
Standards Institute (ANSI) especifica los requisitos de seguridad
mnimos en la administracin efectiva de datos biomtricos para
la industria de servicios financieros y de seguridad en lo referente
a la recoleccin, distribucin y procesamiento de datos
biomtricos. Este estndar especifica la seguridad del software
utilizado durante el ciclo de vida biomtrico; la administracin de
datos biomtricos durante su ciclo de vida; la utilizacin de
tecnologa biomtrica para la verificacin o identificacin tanto de
clientes como de empleados de un banco; la aplicacin de
tecnologa biomtrica en los controles de acceso fsicos y
lgicos; mtodos para encapsular los datos biomtricos y las
tcnicas para la transmisin y almacenamiento seguro de datos
biomtricos.
f) ANSI/NIST-ITL 1-2000 Fingerprint Standard Revision: Este
estndar especifica un formato comn para ser usado en el
intercambio de datos de identificacin como huellas digitales,
rostros, cicatrices, marcas y tatuajes de manera efectiva a travs
de lneas jurisdiccionales o entre sistemas hechos por diferentes
fabricantes.

29
4.2. SISTEMAS TRADICIONALES vs. SISTEMAS BIOMTRICOS
Para poder demostrar con mayor claridad las ventajas que poseen los
sistemas de control de acceso de personal basados en sistemas biomtricos sobre
aquellos sistemas tradicionales, es preciso hacer un breve anlisis.
Un sistema tradicional bastante utilizado es el de registro en recepcin,
donde existen una o varias personas encargadas de anotar la hora de entrada y
salida del personal.
Dentro de las desventajas que implica esta solucin, tenemos:
a) Costo elevado de implementacin y ejecucin pues se requiere
contratar personal para llevar a cabo el control de acceso
b) La posibilidad de que el personal encargado de llevar el control
tenga amistad o animadversin con algn empleado y decida
desviar a favor o en contra los registros de las entradas y salidas
c) El riesgo de cometer un error en los registros de los horarios por
parte del personal encargado
d) La necesidad de hacer un anlisis manual de la hora de entrada
y salida del personal, lo que implica una gran inversin de tiempo
por parte del rea de contabilidad para determinar el salario
devengado en el periodo
e) La imposibilidad de que el personal encargado de llevar el control
conozca a todos los empleados y stos deban identificarse con
algn medio provisto para ello, lo que da pi a falsificaciones

30
f) El desaprovechamiento de recursos humanos al destinar
personal a recepcin que no haga nada o casi nada en las horas
no pico
Una de las ventajas de este sistema, podra ser:
a) La rapidez al momento de hacer los registros, si es que hay
suficiente personal asignado a esta tarea
Otro de los sistemas tradicionales cuyo uso se ha extendido notablemente,
es el reloj checador. ste impone sellos sobre una tarjeta de papel que tiene
impresos los das laborales del mes o periodo deseado. Tales sellos marcan la
hora de entrada y salida del personal.
Este sistema posee varios inconvenientes como son:
a) La imposibilidad de saber si fue el dueo de la tarjeta o no quien
la sell en el checador, lo cual permite que los empleados sellen
en lugar de sus amigos para evitar que acumulen retardos o
faltas
b) El riesgo de que un empleado se equivoque de fecha al colocar
el sello y genere confusin en el rea de contabilidad
c) La necesidad de hacer un anlisis manual de la hora de entrada
y salida del personal para cada fecha marcada en la tarjeta, lo
que implica una gran inversin de tiempo por parte del rea de
contabilidad para determinar el salario devengado en el periodo
d) La necesidad de rotular y sustituir las tarjetas de papel al finalizar
el periodo
Dentro de las conveniencias de utilizar este sistema se encuentran:

31
a) Bajo costo de adquisicin, instalacin y mantenimiento
b) Sencillez de uso
Un sistema que aunque ms moderno no tuvo un uso tan abundante como
el anterior lo constituye el teclado numrico. En l se introduca un nmero de
empleado y una clave para poder validar la hora de entrada o de salida, segn
correspondiera.
Las inconveniencias que acarrea este sistema, entre otras, son:
a) La imposibilidad de saber si fue el empleado o no quien digit los
datos en el sistema, dando cabida a malos manejos por parte de
los empleados
b) El riesgo de que el empleado olvide la clave y no pueda validar
su entradas y salidas
c) El riesgo de que un tercero robe los datos de validacin y los
utilice para acceder a sitios restringidos
Los beneficios que tiene emplear este sistema son:
a) Bajo costo de adquisicin, instalacin y mantenimiento
b) Sencillez de uso
c) Una disminucin en la carga de trabajo del rea de contabilidad
al ser el propio sistema quien calcula el total de las horas
trabajadas, los retardos y faltas existentes. Esto depende del
software de administracin con que se cuente

32
Otro sistema tambin moderno pero con mucho mayor aceptacin lo
constituyen las tarjetas plsticas, cuya diversidad se puede englobar en tres
grandes grupos: las de banda magntica, las de proximidad y las de chip.
25

Aunque tecnolgicamente son diferentes, cumplen una misma funcin que
es la de guardar la identificacin de un individuo.
Dentro de las desventajas de utilizar este sistema, sobresalen:
a) La imposibilidad de asegurar que quien posee la tarjeta en ese
momento es su dueo legtimo
b) La posible sustitucin o falsificacin de la tarjeta para obtener
acceso a zonas restringidas
c) El riesgo de robo o extravo que permita a terceros ingresar an
sin tener autorizacin para ello
d) La posibilidad de que el empleado olvide la tarjeta y por tanto no
pueda acceder a las instalaciones a laborar
e) El deterioro propio del uso de las tarjetas y su necesaria
sustitucin
Algunas de las ventajas que aporta este sistema son:
a) El costo de adquisicin es asequible para empresas pequeas,
medianas y grandes ya que est en funcin del nmero de
empleados y lectores necesarios
b) Sencillez de uso
c) Posibilidad de instalar varios lectores en red, incluso en
diferentes sucursales

25
Vase el Glosario.

33
d) Una disminucin en la carga de trabajo del rea de contabilidad
al ser el propio sistema quien calcula el total de las horas
trabajadas, los retardos y faltas existentes. Esto depende del
software de administracin con que se cuente
Para mejorar la eficiencia y seguridad en el control de acceso, se opt por
combinar algunos sistemas como es el caso del teclado y las tarjetas plsticas
donde adems de presentar una tarjeta como parte sustancial de la identificacin,
deba complementarse con la introduccin de una contrasea para as poder
ingresar la hora de entrada o salida al sistema.
Sin embargo, ni an con la fusin de estos dos sistemas poda diluirse un
gran inconveniente:
La imposibilidad de saber si el poseedor de la tarjeta y la
contrasea eran realmente quien pretendan ser, lo que segua
suponiendo un riesgo para la seguridad de la empresa
Existen algunos sistemas tradicionales ms pero debido a que su uso no se
extendi tanto como los anteriores, al menos en nuestro pas, se ha determinado
que su anlisis no es imprescindible.

34
4.3. SISTEMAS MULTIBIOMTRICOS E HBRIDOS
A pesar de no ser el principal objeto de esta investigacin el desarrollo de
sistemas multibiomtricos e hbridos, no se pueden dejar de mencionar por ser
una variante ms donde los sistemas biomtricos han demostrado ser una
solucin muy robusta en cuanto a seguridad se refiere y bastante viable en
trminos econmicos.
Un sistema multibiomtrico consiste en dos o ms sistemas biomtricos
operando conjuntamente en el proceso del control de acceso.
Un sistema hbrido es aquel que adems de contar con uno o ms sistemas
biomtricos, utiliza uno o ms sistemas convencionales. Esto le permite
aprovechar las ventajas de ambos sistemas y minimizar el impacto de sus
respectivos errores y desventajas.
Existen dos modos de operacin de los sistemas biomtricos:
a) Modo de identificacin
b) Modo de verificacin
El modo de identificacin es el que utilizan los sistemas biomtricos
aislados, cuyo tpico funcionamiento consiste en adquirir las caractersticas de un
individuo a travs de un sensor y compararlas con aquellas caractersticas
previamente almacenadas en su base de datos. Luego entonces, en base a su
umbral de decisin, el sistema biomtrico determinar si algn registro concuerda
y si debe o no validar al individuo en cuestin.
Ahora bien, el modo de verificacin se aplica para los sistemas
multibiomtricos e hbridos y consiste en la indexacin de los registros de la base
de datos a travs de un sistema biomtrico secundario o de uno convencional. Un

35
ejemplo tpico de este modo de operacin se puede encontrar en un sistema
hbrido que cuente con un teclado (sistema convencional) y un escner de huella
digital (sistema biomtrico). Para obtener acceso, el usuario introduce su nmero
de empleado en el teclado y a continuacin coloca su dedo en el escner para que
el sistema coteje las caractersticas extradas por medio del escner con aquellas
que estn asociadas a dicho nmero de empleado y realiza la comparacin. En
caso de que concuerden, el sistema permitir el acceso al individuo en cuestin.
La presente investigacin propone un sistema biomtrico aislado que opere
con el modo de identificacin.

36
5. DESARROLLO
Adems del gran inters que gui al autor para la elaboracin del presente
trabajo, el porqu de la eleccin de un sistema biomtrico como es el basado en el
reconocimiento de rostros, se debe principalmente a dos cuestiones:
a) La opcin de utilizar un sistema biomtrico diferente a los
basados en huella digital que tanto estudio y aplicacin tienen
actualmente y proponer el uso de una tecnologa ms compleja,
moderna y an en pleno desarrollo
b) Dentro de las caractersticas que se podran utilizar para
construir sistemas biomtricos, el rostro represent una opcin
asequible y al alcance de las posibilidades de la presente
investigacin, tanto econmica como bibliogrficamente
Como se indicar en captulos posteriores, el algoritmo usado en la
presente investigacin lo constituye un algoritmo comercial, es decir, un algoritmo
previamente creado por un tercero. Sin embargo, existe una aportacin de cdigo
sustancial pues de nada servira el algoritmo como tal si no hubiese una forma de
manipularlo y lograr que cumpliera su propsito.
Esta aportacin de cdigo consiste en la creacin de una aplicacin que
controla al algoritmo y permite administrar todos los recursos indispensables para
su buen funcionamiento. Tambin administra las bibliotecas que lo conforman y el
video adquirido a travs de una cmara digital.
26

Para efectos de la presente investigacin, a esta aplicacin se le ha
denominado software de administracin.

26
Vase el Glosario.

37
Tambin como parte de la aportacin de cdigo, se encuentra una base de
datos que se cre para almacenar toda la informacin relativa a los usuarios del
sistema biomtrico. En ella se crearon los procedimientos almacenados
adecuados para la interaccin con el software de administracin, as como para la
conservacin de la integridad de los datos contenidos.
27

En resumen, con el fin de crear un prototipo que aborde adecuadamente el
problema de la identificacin, en este estudio se ha desarrollado un sistema
basado en reconocimiento de rostros compuesto de una cmara digital que sirve
como dispositivo de entrada, un algoritmo encargado del reconocimiento, un
software de administracin y una base de datos.
El software es capaz de administrar tanto la cmara como el algoritmo, as
como de generar reportes y almacenar los datos de cada usuario en la base de
datos.
El funcionamiento del sistema, se ilustra con el siguiente diagrama:


27
Vase el Glosario.

38

Figura 3. Diagrama a bloques del funcionamiento del sistema.
Cmara de
video
Algoritmo
Base de
datos
Caractersticas del
individuo frente a la cmara
Caractersticas
previamente
almacenadas
Comparacin de caractersticas
Validacin
Aceptar al usuario y registrar la hora
y fecha
Rechazar al
usuario
Positiva Negativa
Usuario

39
5.1. ALGORITMO
En general, un sistema de reconocimiento de rostros realiza, entre otras,
tres tareas primordiales: la primera consiste en la deteccin del rostro en las
imgenes dadas, la segunda se encarga de la extraccin de caractersticas y la
tercera compara tales caractersticas con aquellas almacenadas previamente en la
base de datos y devuelve el resultado correspondiente.
En cada una de ellas el algoritmo de reconocimiento de rostros desempea
una funcin fundamental pues es el encargado de traducir, por as decirlo, las
imgenes adquiridas a travs de la cmara digital en arreglos de bytes que
representen los rostros detectados o, lo que lo mismo, realizar el extracto de tales
rostros en un conjunto de datos que contenga sus particularidades o
caractersticas principales que los hagan nicos e identificables para el sistema.
En la actualidad existen mltiples compaas alrededor del mundo que se
encargan del desarrollo y comercializacin de algoritmos de reconocimiento de
rostros. Entre los algoritmos desarrollados se encuentran el Verilook, FaceIt,
FACEngine, Betaface y Ti-Face, por mencionar algunos.
Es necesario hacer referencia a los algoritmos que se han desarrollado
como proyectos de cdigo abierto que, aunque resultan menores en cantidad, su
calidad es realmente sobresaliente. En este grupo se encuentran algoritmos tales
como Libface, Torch3vision, Machine Perception Toolbox y la biblioteca OpenCV
(Open Computer Vision Library) desarrollada por Intel.
En la siguiente tabla se muestran las caractersticas de los algoritmos de
reconocimiento de rostros que estuvieron disponibles en sus respectivos sitios de
Internet, para la presente investigacin.

40
S
o
p
o
r
t
e

e
n

M

x
i
c
o

N
o

N
o

S


N
o

N
o

M

l
t
i
p
l
e
s

m
u
e
s
t
r
a
s

d
e

u
n

m
i
s
m
o

r
o
s
t
r
o

S


N
o

N
o

T
o
l
e
r
a
n
c
i
a

a

l
a

p
o
s
t
u
r
a

N
/
A

1
5


1
0


N
/
A

1
5


T
a
m
a

o

d
e

l
a
s

c
a
r
a
c
t
e
-
r

s
t
i
c
a
s

N
/
A

7

K
B

2
.
4

K
B

N
/
A

1
5

K
B

S
D
K

S


V
e
l
o
c
i
d
a
d

d
e

r
e
c
o
n
o
-
c
i
m
i
e
n
t
o

N
/
A

1
0
,
0
0
0

r
o
s
t
r
o
s

p
o
r

s
e
g
u
n
d
o

1
0
0
,
0
0
0

r
o
s
t
r
o
s

p
o
r

s
e
g
u
n
d
o

N
/
A

5
0
,
0
0
0

r
o
s
t
r
o
s

p
o
r

s
e
g
u
n
d
o

M

l
t
i
p
l
e
s

r
o
s
t
r
o
s

e
n

l
a

m
i
s
m
a

i
m
a
g
e
n

N
/
A

N
o

S


N
/
A

R
e
c
o
n
o
c
i
m
i
e
n
t
o

e
n

t
i
e
m
p
o

r
e
a
l

S


R
e
c
o
n
o
c
i
m
i
e
n
t
o

e
n

i
m

g
e
n
e
s

f
i
j
a
s

S


A
l
g
o
r
i
t
m
o

F
a
c
E
n
g
i
n
e

F
a
c
e
I
t

V
e
r
i
l
o
o
k

B
e
t
a
f
a
c
e

T
i
-
F
a
c
e

Figura 4. Tabla de caractersticas de los algoritmos.

41
Despus de revisar los diversos algoritmos existentes, se decidi utilizar
uno de tipo comercial. Tal decisin se debi a que la mayor parte de los algoritmos
encontrados presentaban algunos inconvenientes para obtenerlos, entre los
cuales destacan los siguientes:
a) Imposibilidad de conocer las especificaciones tcnicas del
producto
b) Deficiencia en la informacin de sus sitios web
c) Deplorable servicio de soporte al solicitar datos faltantes va
correo electrnico
d) Imposibilidad de determinar si se trata de un Software
Development Kit (SDK) o kit de desarrollo de programas,
28
o de
una aplicacin independiente
e) En caso de deducir que se trataba de un SDK, result imposible
determinar las bibliotecas o componentes que lo conformaban,
as como el lenguaje en que haban sido escritos
f) Imposibilidad de conocer sus alcances
g) Falta de soporte en Mxico
h) Encontrarse an en fase de prueba
i) Imposibilidad de conocer sus aplicaciones actuales, su
confiabilidad y su posicionamiento en el mercado
j) No cumplir con las expectativas de eficiencia pretendidas por
esta investigacin

28
Kit proviene del idioma neerlands y significa conjunto de productos y utensilios suficientes para
conseguir un determinado fin, que se comercializan como una unidad.

42
k) No ser asequible para el presente proyecto, en trminos
econmicos
Tomando en cuenta lo anterior, el algoritmo elegido fue el Verilook 2.0
Standard SDK de la empresa lituana Neurotechnologija,
29
cuya versatilidad result
adecuada para llevar a cabo la presente investigacin.
Neurotechnologija provee algoritmos biomtricos de reconocimiento de
rostro y huella digital, as como diversos productos para el desarrollo de software
para empresas de seguridad, sistemas integrados y produccin de hardware.
Actualmente hay ms de 1100 proveedores de sistemas integrados de seguridad y
sensores de huella digital, en ms de 60 pases, que utilizan y venden licencias
con la tecnologa de Neurotechnologija incluida en sus propios productos.
Neurotechnologija fue fundada en 1990 en Vilnius, Lituania y lanz su
primer sistema de identificacin de huella digital en 1991. Desde entonces,
Neurotechnologija ha lanzado ms de 30 productos y versiones actualizadas, tanto
para identificacin como verificacin de personal. Con una combinacin de
algoritmos veloces y gran confiabilidad, la tecnologa en biometra de
Neurotechnologija puede ser usada para control de acceso, seguridad de equipos
de cmputo, bancos, control de puntualidad y asistencia y aplicaciones
gubernamentales, entre otras.
De acuerdo a los datos que proporciona la propaganda comercial de la
empresa, Neurotechnologija ha logrado uno de los mejores resultados de
confiabilidad en mltiples competencias de biometra, incluyendo la International
Fingerprint Verification Competition (FVC2006, FVC2004, FVC2002 y FVC2000) y

29
Neurotechnologija, [http://www.neurotechnologija.com], 2008.

43
la National Institute of Standards & Technology (NIST) Fingerprint Vendor
Technology Evaluation para el Departamento de Justicia de los Estados Unidos de
Norteamrica (FpVTE 2003), donde Neurotechnologija se mantuvo entre las
mejores cinco compaas en cuanto a exactitud en las pruebas de huella nica.
Cabe mencionar que para la realizacin de este proyecto fue necesario
adquirir una copia del algoritmo de reconocimiento de rostros Verilook 2.0
Standard SDK por lo que se cuenta con la licencia correspondiente para su
uso en una aplicacin biomtrica que es el objetivo especfico de este trabajo.
Al inicio del desarrollo de este prototipo, se emple la nica versin liberada
del algoritmo Verilook que era la 1.0. Posteriormente, Neurotechnologija incluy
mejoras notables en su algoritmo y liberaron la versin 2.0, por lo que se decidi
reestructurar el proyecto y se opt por emplear la tecnologa .NET para dotar de
caractersticas multiplataforma y mayor alcance al prototipo, puesto que los
creadores de la versin 2.0 haban ideado la manera de encapsular las bibliotecas
del algoritmo para hacerlas compatibles con tal tecnologa. Actualmente la versin
liberada es la 3.2, sin embargo, por economa de tiempo, se opt por no utilizarla
puesto que tal decisin redundara en una segunda reestructuracin del proyecto y
el tiempo requerido implicara un retraso significativo en la presentacin de esta
investigacin.
Entre las caractersticas que motivaron que el presente trabajo seleccionara
el citado algoritmo, destacan las siguientes:
a) La versatilidad provista por un algoritmo diseado como SDK. De
esta manera, el algoritmo de reconocimiento de rostros Verilook
incluye una serie de bibliotecas (*.dll) y su correspondiente

44
conjunto de funciones (o mtodos) para poder accederlas.
Asimismo, se acompaa de un manual en el que se vierten los
tipos de datos necesarios y devueltos, las estructuras de datos,
los cdigos de error y los parmetros utilizados.
b) La velocidad del algoritmo para comparar caractersticas de
rostros. El algoritmo Verilook est diseado para poder comparar
las caractersticas de los rostros almacenadas en la base de
datos a razn de 100,000 por segundo, lo que se traduce en un
mayor nmero de operaciones posibles para el proyecto.
c) La compatibilidad con C#. Desde que Microsoft introdujo el C# al
mundo de la programacin, ha resultado ser una solucin
altamente confiable y muy poderosa que, segn los expertos,
constituye un gran avance en esta materia y una herramienta
capaz de desplazar al lenguaje Java, su principal competidor. As
pues, se ha traducido la presente investigacin en lenguaje C#
para aprovechar sus inigualables ventajas.
d) La compatibilidad con mltiples dispositivos de video. El
algoritmo Verilook fue diseado para operar con una gran
diversidad tanto de cmaras digitales como de webcams (o
cmaras web), heredndole al presente proyecto tal
compatibilidad, pues aunque se sustituya el dispositivo de
entrada no ser necesario cambiar ni una sola lnea de cdigo.
e) El reducido tamao de las caractersticas. Durante el proceso de
reconocimiento, el algoritmo extrae las caractersticas del rostro y

45
las almacena en un arreglo binario de solamente 2,464 bytes, lo
que facilita la tarea de comparacin y almacenamiento en la base
de datos.
El motor de reconocimiento de rostros de Verilook tiene cuantiosos
componentes que son apropiados para cualquier sistema moderno de
reconocimiento de rostros, como son:
30

Detector de rostros: Es capaz de detectar cualquier nmero de
rostros de frente o casi de frente dentro de imgenes en escala
de grises. Cada porcin de la imagen es comparada con modelos
de rostros bsicos y clasificada, en caso de que pertenezca al
grupo de imgenes con posibles rostros.

30
Neurotechnologija, op. cit.

46

Figura 5. Deteccin de rostros del Verilook.

Estimador de postura del rostro y detector de caractersticas
faciales: Es capaz de detectar las caractersticas del rostro (por
ejemplo los ojos) as como de estimar la rotacin de la cabeza.
Estos datos son utilizados por un preprocesador para eliminar la
transformacin afn y normalizar el contraste de la imagen.
31

Extractor de caractersticas: Mltiples etapas de normalizacin
fotomtrica son usadas para extraer las caractersticas faciales
nicas con diferentes frecuencias espaciales. Con las
caractersticas ms significativas (descubiertas tras un gran
nmero de pruebas en bases de datos con rostros

31
Vase el Glosario.

47
pertenecientes a individuos de diferente edad, sexo, raza y
apariencia) se realiza una aproximacin con Gabor wavelets y se
almacenan en un conjunto de caractersticas para lograr una
comparacin ms rpida.
32


Figura 6. Puntos ms significativos del rostro humano.
Generalizacin de caractersticas: Si varios conjuntos de
caractersticas del mismo rostro estn disponibles, su
informacin puede ser unida dentro de uno solo con el fin de
cubrir un rango de apariencias diferentes, para un
reconocimiento ms preciso.
Comparador de caractersticas: Es capaz de comparar las
caractersticas faciales adquiridas con aquellas almacenadas en
una base de datos. El clculo de la similitud entre dos
caractersticas es casi tan rpido como realizar una comparacin
entre dos cadenas de caracteres.

32
Vase el Glosario.

48
5.1.1. FUNCIONAMIENTO INTERNO
Para ilustrar la metodologa empleada en esta investigacin se explicar
con mayor detalle el funcionamiento del algoritmo Verilook.
La gran diversidad de algoritmos para la deteccin de rostros en una
imagen o secuencia de imgenes se puede dividir en dos grandes grupos: el
primero engloba mtodos que consideran la imagen como uno todo y utilizan
tcnicas generales de reconocimiento de patrones para llegar a un modelo y se
enfocan en la imagen completa o una regin de sta pero sin buscar rasgos
faciales; el segundo abarca mtodos especializados en rasgos faciales que se
encargan de examinar la imagen para encontrar sus puntos ms significativos
como son ojos, cejas, boca, nariz, etc.
El motor de deteccin de rostros del algoritmo Verilook pertenece al
segundo de estos grupos.
Para la localizacin de los puntos caractersticos del rostro, tras mltiples
etapas de normalizacin, se utiliza el modelo Face Bunch Graph. Aunque un
objeto simple puede ser representado por grafos etiquetados, un objeto ms
complejo requiere de una representacin ms especfica para poder incluir todo
tipo de variaciones. Tal es el caso del rostro humano, ya que puede incluir
mltiples diferencias con nicamente variar la edad, sexo u origen tnico.
El modelo Face Bunch Graph posee una estructura de pila (primero en
entrar, primero en salir) que combina grafos de rostros muestra. Es muy
importante que cada uno de los grafos posea la misma estructura y que los nodos
hagan referencia a los mismos puntos caractersticos.

49
Un jet es una representacin condensada y robusta de una distribucin de
niveles de gris locales. Se basa en una transformada de Gabor wavelets, que es
una convolucin con una familia de Gabor wavelets complejos con la forma de
ondas planas delimitadas por una funcin Gaussiana. Las wavelets son
semejantes en el sentido de que todas pueden provenir de una wavelet madre, ya
sea por rotacin o por escala.
As pues, los Gabor wavelets se basan en una familia de filtros que
permiten ser fijados en determinada orientacin y frecuencia y que adems se
pueden acotar sus lmites a una regin de la imagen. Un filtro Gabor es un filtro
lineal cuya respuesta al impulso est definida por una funcin armnica
multiplicada por una funcin Gaussiana. Debido al teorema de Convolucin, la
transformada de Fourier de la respuesta al impulso de un filtro Gabor es la
convolucin de la transformada de Fourier de la funcin armnica y la
transformada de Fourier de la funcin Gaussiana. La expresin bsica de los
Gabor wavelets consiste en un ncleo gaussiano modulado mediante una
sinusoide:
( )

+ =
+

' 2 cos ) , (
2
2 2 2
2
' '
fx e y x W
y x

donde
)
`

+ =
+ =


ycos sen '
sen cos '
x y
y x x

El parmetro representa la desviacin estndar de la curva.
La letra f es el valor de la frecuencia central.
El ngulo est en funcin de la orientacin de las lneas paralelas de la
funcin Gabor.

50
El parmetro especifica la elipticidad del soporte de la funcin Gabor.
Para 1 = , el soporte es circular. Para 1 < el soporte es elptico y se alarga con
respecto a la orientacin de las lneas de la funcin.
La letra griega representa el defasamiento.
Dado que los ncleos Gabor son semejantes a ondas, los coeficientes
varan alrededor de la frecuencia central de los ncleos, lo que causa problemas al
momento de comparar jets, debido a que un pequeo desplazamiento resultara
en coeficientes muy diferentes. Sin embargo, las magnitudes varan lentamente y
pueden ser usadas para la comparacin.
Los jets son robustos con respecto a las variaciones en iluminacin, escala,
traslacin y distorsin.
Todos los jets que hacen referencia al mismo punto caracterstico (por
ejemplo, todos los jets del ojo izquierdo) estn unidos en un mismo conjunto, del
cual se puede seleccionar cualquier jet como una descripcin alternativa de ese
punto caracterstico. El conjunto del ojo izquierdo puede contener un ojo masculino,
uno femenino, ambos cerrados o abiertos, etc. Cada punto caracterstico se
encuentra representado por tales conjuntos de descripciones alternativas y de
cada conjunto se puede seleccionar cualquier jet independientemente de los jets
seleccionados en otros conjuntos. Esto implica un abanico de combinaciones muy
completo y a la vez muy general, incluso si se utilizan pocos grafos.
As pues, se define una estructura de grafo sobre el rostro cuyos nodos son
los puntos caractersticos previamente definidos y que corresponden a rasgos que
presentan mayores diferencias entre los individuos. En cada nodo del grafo se

51
calculan las Gabor wavelets, obtenindose los jets correspondientes. A cada nodo
se le coloca una etiqueta con las coordenadas del punto caracterstico y su jet
asociado. Por su parte, las aristas generadas se identifican con la distancia entre
los nodos conectados.
De esta manera, el modelo Face Bunch Graph permite la representacin de
las caractersticas del rostro y hace posible la determinacin de las diferencias
entre individuos. La versatilidad del modelo depende de la cantidad y diversidad
de los rostros muestra elegidos.
El objetivo de este modelo es encontrar los puntos caractersticos
obteniendo el grafo que maximice la similitud con el grafo muestra considerado.
Por lo tanto, la similitud entre los grafos estar supeditada a la similitud entre los
jets correspondientes.
Para lograr este objetivo es necesario conocer la posicin inicial de un nodo.
Posteriormente, dada la estimacin inicial del nodo, se calcula el jet
correspondiente y se halla la similitud con cada uno de los jets del Face Bunch
Graph para el nodo en cuestin. Esto se repite para ubicaciones contiguas a la
inicial y se seleccionan las coordenadas del nodo cuyo valor de similitud sea
mximo. El mismo tratamiento se le da a los nodos restantes.
Dado que a partir del Face Bunch Graph se pueden determinar las
distancias promedio entre nodos para el conjunto de rostros muestra, es posible
estimar la posicin de los distintos nodos a partir de las coordenadas de los ojos.
Tales coordenadas fueron previamente obtenidas en la etapa de deteccin de
rostros.

52
Despus de haber encontrado e identificado todos los nodos del grafo,
comienza la etapa de extraccin de caractersticas. En esta etapa se recolectan
los jets de los nodos para formar un conjunto que representar el rostro del
individuo en el sistema, es decir, se logra de esta manera hacer una sntesis de
sus caractersticas. Tales caractersticas pueden ser almacenadas en apenas
2,464 bytes.
Posteriormente, ser posible comparar estas caractersticas con las
almacenadas de manera previa en la base de datos.

53
5.1.2. LIMITANTES DEL ALGORITMO
Resulta evidente que conforme la tecnologa avanza, va sorteando
obstculos y planteando nuevas soluciones, sin embargo no consigue evadir todas
las dificultades de un momento a otro por lo que su evolucin se da de manera
paulatina. Tales dificultades representan limitantes temporales que, en un futuro
no muy lejano, se espera sean superadas.
Estas limitantes consisten en determinadas condiciones y especificaciones
que se deben observar para lograr un ptimo funcionamiento del algoritmo, entre
las que se encuentran las siguientes:
La posicin del rostro debe ser completamente frontal a la
cmara. La mxima variacin de la rotacin e inclinacin en
cualquier direccin con respecto a la frontal es de 10 grados.
La expresin del rostro debe ser neutral, con los ojos abiertos y
la boca cerrada. Aunque es posible realizar la extraccin de
caractersticas con un rostro sonriente (con la boca cerrada) no
se recomienda. Dentro de las expresiones no recomendables
para utilizar el algoritmo destacan las siguientes: sonrisa con la
boca abierta, cejas enarcadas, ojos cerrados, ojos sin mirar a la
cmara, hacer bizco y fruncir el ceo. Tampoco se debe cubrir,
total o parcialmente, uno o ambos ojos con cabello, ni permitir
que el armazn de los lentes lo haga.
Los cambios en el rostro tales como barba y bigote, tienen una
gran influencia en la calidad del reconocimiento y si estos

54
cambios se producen con frecuencia en algn individuo, la base
de datos los debera incluir.
La iluminacin debe ser uniforme en ambos lados del rostro, as
como en la parte superior e inferior. No debe existir un haz de luz
notable, en ninguna direccin, ni sombras visibles. No se debe
utilizar una fuente de iluminacin demasiado intensa y enfocada
en un solo punto.
Los lentes no deben provocar ningn efecto negativo. Sin
embargo, en caso de existir un reflejo de luz se debe crear un
ngulo de al menos 45entre la iluminacin, la cmara y el
individuo. Si no fuera posible eliminar el reflejo de la luz en los
lentes, stos no deben usarse. El algoritmo reconocer mejor a
los individuos con los mismos lentes que usaron cuando se
dieron de alta. Los lentes deben ser transparentes para que los
ojos y sus irises sean completamente visibles, por lo tanto los
lentes obscuros o entintados no deben usarse.
El dispositivo de video puede ser cualquier cmara digital o
cmara web que tenga una resolucin verdadera de al menos
640 x 480 pixeles y sea de una marca reconocida. Cmaras con
calidades inferiores no son aptas para uso biomtrico. Las
imgenes utilizadas para dar de alta a un individuo y las

55
empleadas para reconocerlo, deben provenir del mismo
dispositivo de video.
33


33
En este texto se ha aceptado la convencin de utilizar el trmino pixel sin acento, an en su
plural pixeles. Vase el Glosario.

56
5.1.3. BIBLIOTECA DEL ALGORITMO
La biblioteca del algoritmo fue escrita en lenguaje C y se encuentra
encapsulada dentro del archivo VLook.dll que cuenta con los siguientes
mtodos:
34

En lo referente al registro, contiene el mtodo VLRegistrationType que sirve
para determinar el tipo de registro a utilizar. En el presente caso, se configur para
usar un HASP.
35

Tambin dentro del registro, se encuentra el mtodo VLGenerateId que
sirve para generar un cdigo de identificacin relacionado con el nmero de serie.
Uno ms de los mtodos referentes al registro, lo es el VLRegister que
registra la biblioteca VeriLook.
Para la inicializacin de la biblioteca, se utiliza el mtodo VLInitialize que
permite su uso dentro de la aplicacin.
Cuando se termina de utilizar la biblioteca VeriLook, es posible finalizarla
con el mtodo VLFinalize.
Para la consulta y configuracin de los parmetros, que en captulos
posteriores se describirn ampliamente, se utilizan los mtodos VLGetParameter y
VLSetParameter, respectivamente.
Dentro del grupo de mtodos de deteccin de rostros, figura el mtodo
VLDetectFaceOnce que se utiliza para detectar un rostro dentro de una imagen.
Por otro lado, tambin dentro del mencionado grupo, el mtodo

34
Por tratarse de programacin orientada a objetos, se le denomina mtodo a lo que en la
programacin tradicional o procedimental se le conoce como funcin.
35
Vase el Glosario.

57
VLDetectMultipleFacesOnce sirve para detectar varios rostros dentro de una
imagen.
El ltimo mtodo del grupo de deteccin de rostros y el que fue utilizado en
la presente investigacin, lo constituye el mtodo VLDetectFace cuyo objetivo es
detectar rostros en una secuencia de imgenes, es decir, en video.
Por su parte, el mtodo VLExtract se encarga de la extraccin de las
caractersticas del rostro o rostros detectados.
Existe tambin un mtodo denominado VLGeneralize que se ocupa de
agrupar varias caractersticas de un mismo rostro dentro una sola coleccin. Esto
se debe a que en algunos escenarios se podra considerar necesario extraer
varias veces las caractersticas del rostro de un individuo pero en diferentes
condiciones (con barba y sin barba, sin bigote y con bigote, con mayor y menor
iluminacin, etc.). Esto se utiliza para hacer ms preciso el reconocimiento, al
tener el sistema a un individuo asociado con varias caractersticas del mismo.
Por ltimo, se encuentra el mtodo VLVerify que se encarga de comparar
dos caractersticas y determinar, en base al umbral de decisin, si se trata o no del
mismo individuo. Una de las caractersticas debe obtenerse a travs del
dispositivo de video mientras que la otra proviene de la base de datos.
Adems de la biblioteca mencionada, existe otra que consiste en un
componente para capturar el video desde la cmara digital y tratarlo antes de su
utilizacin por el algoritmo. Esta biblioteca se encuentra encapsulada en el archivo
VLCapturer.dll.
Cabe mencionar que dado que el presente proyecto muestra el desarrollo
de un prototipo, fue necesario evaluar constantemente la eficiencia del equipo

58
utilizado y del cdigo, teniendo en algunas ocasiones que sustituir tanto uno como
el otro. Por lo tanto, aqu se vern plasmados dichos cambios y los nombres de los
mtodos y cdigo en general reflejarn sus diferentes versiones con un ndice
numrico, en la mayora de los casos.
Asimismo, los nombres de variables y mtodos aparecern en este texto
con su acentuacin respectiva, an cuando en el cdigo compilado no se incluya
ningn acento.
Para facilitar la comprensin del funcionamiento del prototipo, dentro del
cuerpo de este texto se han incluido diagramas y explicaciones. Asimismo, se ha
decidido incluir un pseudocdigo en la presente investigacin, como un recurso
para describir mejor lo que en el texto se explica.

59
5.2. PROTOTIPO
Para llevar a cabo la programacin y las pruebas del prototipo, se utiliz
una computadora con un procesador Intel Pentium 4 a 3.33 GHz, 1.37 GB de
memoria RAM, sistema operativo Microsoft Windows XP, Microsoft DirectX 9.0c,
Microsoft XML Parser (MSXML) 3.0 y la biblioteca Microsoft GDI+.
Tales caractersticas satisfacen los requerimientos tcnicos exigidos por el
algoritmo Verilook que son: una computadora con un procesador de 1 GHz o
superior, sistema operativo Microsoft Windows 2000/XP/2003, Microsoft DirectX
8.1 o superior, Microsoft XML Parser (MSXML) 3.0 y la biblioteca Microsoft GDI+.
El sistema cuenta con tres bloques principales:
1) Dispositivo de entrada
2) Base de datos
3) Software de administracin


60
5.2.1. DISPOSITIVO DE ENTRADA
El dispositivo de entrada consta de una cmara digital con una resolucin
de 640 x 480 pixeles.
Inicialmente, el proyecto comenz a desarrollarse con una cmara digital
Sony Handycam DCR-HC30 de 640 x 480 pixeles. Sin embargo, este equipo
present serios problemas en cuanto a estabilidad, debido a que los controladores
no superaban la prueba del logotipo de Windows encargada de comprobar la
compatibilidad con Windows XP, que fue la plataforma utilizada para este proyecto.
Esto no implica la inexistencia de compatibilidad sino que determina la deficiencia
de la misma, por no encontrarse al 100%.
36

Cabe mencionar que se realiz una bsqueda de controladores ms
adecuados, sin embargo result infructuosa dado que el fabricante no haba
liberado ninguna otra versin de sus controladores.
Por lo tanto, hubo que sustituir la primera cmara por el modelo usado
actualmente: una cmara Logitech QuickCam Communicate, cuyas caractersticas
satisfacen los requerimientos tcnicos exigidos por el algoritmo, a pesar de ser
una sencilla cmara web.
Para conectarse a la computadora, esta cmara consta de una interfaz USB
(Universal Serial Bus) versin 2.0, capaz de trasportar hasta 480 Mbps y sus
controladores superan la prueba del logotipo de Windows. Estas caractersticas
permiten darle buena calidad de video a la aplicacin.
Cabe mencionar que la eleccin del dispositivo de entrada se debi
principalmente a la disponibilidad de los recursos con los que cont la presente

36
Vase el Glosario.

61
investigacin. De este modo, al iniciar el proyecto estaba disponible la cmara
digital Sony Handycam DCR-HC30, que cumpla cabalmente con los requisitos
exigidos por el algoritmo, por lo que se comenz a trabajar con ella. Sin embargo,
por las razones anteriormente expuestas, fue necesario adquirir un nuevo equipo:
la cmara Logitech QuickCam Communicate.
La justificacin del porqu utilizar estos equipos y no otros en razn de la
disponibilidad se remite a la finitud de los recursos de un proyecto. En la mayora
de los casos, el presupuesto de un proyecto de investigacin es finito por lo que
los recursos se limitan a l y se ajustan, en consecuencia. As pues, an cuando la
presente investigacin tena en un principio un recurso fsico que lo constitua la
primera cmara, hubo la necesidad de adquirir por medio de recursos financieros
otra cmara. Es decir, se tuvo que realizar un ajuste en la asignacin de los
recursos para poder continuar con el proyecto, por lo que la inclusin de otras
cmaras implicara lgicamente nuevos ajustes que no resultaran viables para
esta investigacin. De igual forma, el obtener cmaras arrendadas o en prstamo
no representara una solucin asequible, pues el proyecto requiere que el
dispositivo de entrada est presente en todo momento para llevar a cabo las
pruebas.
No obstante lo anterior, se tomaron en consideracin otras cmaras que
satisfacen los requerimientos exigidos por el algoritmo, las cuales, segn se infiere,
se podran utilizar para replicar las pruebas llevadas a cabo con el prototipo. Sin
embargo, el utilizar otras cmaras no es objeto de la presente investigacin.

62
En la siguiente tabla se muestran las dos cmaras que se utilizaron, as
como aquellas que se tomaron en cuenta al momento de adquirir la segunda
cmara.
Cmara
Resolucin
recomendada
(640 x 480
pixeles)
Tipo de
cmara
Interfaz
USB 2.0
Controladores
aprobados
para Windows
Sony Handycam
DCR-HC30
S
Cmara de
video
S No
Logitech
QuickCam
Communicate
S Cmara web S S
Logitech
QuickCam Orbit
AF
S Cmara web S S
Genius Look 317 S Cmara web S S
Microsoft
VX-3000
S Cmara web S S
Microsoft
VX-6000
S Cmara web S S
Logitech
QuickCam for
Notebooks
S Cmara web S S
Genius Look
1320
S Cmara web S S
Creative Live!
Cam Video IM
S Cmara web S S
Creative Live!
Cam Video IM
Pro
S Cmara web S S
Figura 7. Tabla de cmaras.

63
5.2.2. BASE DE DATOS
La base de datos est hecha con SQL Server 2000 en su versin Personal,
que permite su uso para fines acadmicos. Este servidor de base de datos
propiedad de Microsoft, utiliza el lenguaje de programacin denominado Transact-
SQL.
Al crear la base de datos y sus tablas se utiliz el SQL Server Enterprise
Manager, que es un administrador muy til en cuanto a diseo se refiere. Para
crear los procedimientos almacenados y hacer las pruebas en la base de datos se
utiliz el Analizador de consultas SQL, introduciendo lenguaje Transact-SQL.
Cabe mencionar que este lenguaje no es sensible a maysculas o
minsculas, caracterstica que no se debe dejar a un lado al visualizar los prrafos
posteriores donde se incluya el cdigo.
Es conveniente puntualizar que aunque no se utilizaron acentos en el
cdigo, s se incluirn en las siguientes lneas para evitar que parezcan errores
ortogrficos. Adems de las consideraciones anteriores resulta oportuno
mencionar que para facilitar la explicacin de los procedimientos almacenados se
har uso de un pseudocdigo.
La base de datos se denomin Registro01 y en su estructura interna
contiene tablas y procedimientos almacenados.
En la primera tabla, de nombre Principal01, se han incluido tres columnas:
Identificador, Nombre y Caractersticas.
Identificador Nombre Caractersticas
(smallint) (varchar) (varbinary)


64
La columna Identificador almacena un tipo de datos smallint cuya longitud
es de 2 bytes, por lo cual es posible representar valores desde -2
15
a 2
15
-1 o, lo
que es lo mismo, de -32,768 a 32,767. Sin embargo, esta columna slo emplear
los valores positivos puesto que ser utilizada para asociar un nmero diferente a
cada usuario. Esta columna cuenta con una propiedad de identidad sin duplicidad
por lo que cada nmero ser nico y no ser posible asignarlo nuevamente an
cuando el usuario haya sido eliminado. Tambin se ha determinado que tal
nmero sea generado automticamente por la base de datos, comenzando con el
nmero 1 e incrementndolo sucesivamente en una unidad.
La columna Nombre posee un tipo de datos varchar y una longitud mxima
de 100 bytes, dado lo cual ser capaz de almacenar hasta 98 caracteres pues en
Transact-SQL el tamao de almacenamiento es la longitud real de los datos
especificados ms 2 bytes. De esta manera, se optimiza el espacio en disco
requerido para la base de datos pues no se reservarn los 100 bytes sino que se
adecuar al nmero de caracteres insertados. Esta columna contendr el nombre
del usuario.
La columna Caractersticas contiene un tipo de datos varbinary y tiene una
longitud mxima de 2,464 bytes, que es el tamao definido por el algoritmo.
Habra sido posible establecer esta columna con un tipo de datos binary y una
longitud fija de 2,464 bytes, sin embargo, representaba una gran flexibilidad al
momento de programar puesto que antes de acoplar la base de datos con la
aplicacin fue necesario realizar exhaustivas pruebas con la finalidad de
comprobar su funcionalidad. Esta columna se destinar a almacenar las

65
caractersticas del rostro extradas por el algoritmo y administradas por la
aplicacin.
La segunda tabla, denominada Horarios01, contiene dos columnas:
identificador y fechayhora.
identificador fechayhora
(smallint) (smalldatetime)

La columna identificador almacena un tipo de datos smallint cuya longitud
es de 2 bytes, por lo cual es posible representar valores desde -2
15
a 2
15
-1 , lo
que es lo mismo, de -32,768 a 32,767. A diferencia de la columna Identificador de
la tabla Principal01, sta no posee la propiedad de identidad sin duplicidad puesto
que en la tabla Horarios01 se almacenarn todos los registros de los usuarios,
tanto de entrada como de salida, por lo que en un determinado periodo de tiempo
es posible que existan mltiples entradas del mismo usuario.
La columna fechayhora contiene un tipo de datos smalldatetime de 4 bytes
de longitud. Es capaz de registrar fechas desde el 1de enero de 1900 hasta el 6
de junio de 2079 y cuenta con una precisin de un minuto, caractersticas
apropiadas para el presente proyecto y que permiten una optimizacin de los
recursos. En esta columna se incluirn los registros de los horarios de entrada y
salida de los usuarios. En caso de que se necesitara aumentar el rango de las
fechas, se utilizara una variable de tipo datetime que abarca desde el 1de enero
de 1753 hasta el 31 de diciembre del ao 9999.
Cabe mencionar que ninguna de las columnas est diseada para aceptar
valores nulos pues de nada servira tener un registro de un usuario que no
contuviera la fecha y la hora.

66
Con el objeto de preservar la integridad de la base de datos, se crearon
procedimientos almacenados. stos permiten ser llamados desde la aplicacin,
recibiendo los parmetros adecuados y devolviendo los datos correspondientes.
De esta manera, se protege la integridad de la base de datos pues nicamente
puede ser modificada a travs de sus procedimientos almacenados y stos slo
ejecutarn el cdigo que contienen y que ha sido verificado previamente. Tambin
resultan convenientes pues no se sobrecarga la aplicacin ya que es el servidor
de la base de datos el que realiza las operaciones.
El procedimiento PruebaContarRegistros01 se cre para poder determinar
el nmero de usuarios que la base de datos tiene registrados. No recibe ningn
parmetro y devuelve el nmero de registros como un valor entero.
count(todos los registros) from principal01
El procedimiento PruebaLlenarArreglos01 se utiliza para llenar de forma
ordenada los arreglos de la aplicacin que contendrn los datos de los usuarios
para as poder tenerlos en RAM y reducir el tiempo de respuesta al acceder tal
informacin. De esta manera, se sacrifican recursos destinados a la propia
aplicacin pero se eleva la velocidad de respuesta de la misma y se libera un poco
la carga del servidor de la base de datos. Este procedimiento almacenado no
recibe ningn parmetro y devuelve los valores contenidos en las tres columnas
de la tabla Principal01, con sus respectivos tipos de datos y ordenados por la
columna Identificador.
select (todos los registros) from principal01 order by identificador
El procedimiento PruebaChecking01 se encarga de crear un registro en la
tabla Horarios01 en el que se incluir tanto el identificador del usuario como el

67
horario en el que ha sido reconocido por la aplicacin. As pues, se almacenarn
los datos que la aplicacin le enve a travs de los dos parmetros de entrada que
son identif y ji, con sus correspondientes tipos de datos. Este procedimiento
almacenado recibe los parmetros mencionados y no devuelve ningn valor.
insert into horarios01 (identificador,fechayhora)
values (@identif,@ji)
El procedimiento PruebaCrearUsuario02, como su nombre lo indica, sirve
para dar de alta un nuevo usuario, para lo cual cuenta con dos parmetros de
entrada y uno de salida. A travs de los dos primeros recibe una cadena con el
nombre del usuario y sus caractersticas desde un arreglo binario. En caso de
haber sido creado el usuario con xito, mediante el tercer parmetro devuelve el
valor que le fue asignado y, en caso contrario, devuelve el valor 0, que hace la
funcin de variable de control pues el valor inicial del conteo del identificador es el
nmero 1, por lo tanto la aplicacin deduce que se trata de un error en la creacin
al no ser un nmero vlido para tal campo. A la vez, verifica que no exista en la
base de datos ningn usuario con el nombre propuesto para evitar duplicados en
los nombres, ya que sera totalmente perjudicial la existencia de un usuario
asociado a dos o ms identificadores. De esta manera, el procedimiento
almacenado se encarga de evitar cualquier error en la administracin,
minimizando as la posibilidad de un error humano en el sistema.
if(usuario no existe)
{ //crear usuario }
El procedimiento almacenado PruebaListaUsuarios01 fue diseado para
devolver un listado ordenado por el identificador que contenga a todos los usuarios

68
dados de alta en la base de datos. Este procedimiento almacenado no recibe
ningn parmetro y devuelve la informacin referente a todos los usuarios.
select identificador,nombre from principal01 order by identificador
El procedimiento almacenado PruebaModificarTabla04 cumple la funcin de
modificar los datos de algn usuario que se encuentre dado de alta en la base de
datos. Para esto, recibe una cadena con el nombre que sustituir al existente y el
identificador con el que se asociar, haciendo antes una confirmacin de que
dicho identificador existe y sea posible su modificacin. Este procedimiento
almacenado recibe dos parmetros y devuelve un valor nulo, slo en caso de que
el intento de modificacin no sea exitoso.
if(usuario existe)
{ //actualiza sus datos}
El procedimiento almacenado PruebaReporteFechas02 sirve para generar
un reporte con todos los registros existentes en la base de datos que se
encuentren en el periodo de tiempo determinado, es decir, los registros cuyas
fechas se hallen entre la de inicio y la de fin, inclusive. Para alcanzar tal objetivo,
el procedimiento almacenado debe recibir en sus parmetros de entrada los
valores que contengan los lmites del periodo requerido y hacer una conversin
explcita con ellos para poder efectuar las operaciones correspondientes. Como
resultado, el procedimiento almacenado devolver aquellos registros que
satisfagan las condiciones determinadas.
if(inicio < fechayhora < fin)
{ // selecciona los registros}
El procedimiento almacenado PruebaEliminarUsuario03 se encarga de
eliminar el registro de un usuario. Para evitar errores, verifica en la base de datos

69
la existencia del identificador recibido a travs de su parmetro de entrada y, en
caso de comprobarla positivamente, procede a la eliminacin de dicho registro.
Este procedimiento almacenado recibe un parmetro de entrada y no devuelve
ningn valor.
if(usuario existe)
{ // elimnalo }

70
5.2.3. SOFTWARE DE ADMINISTRACIN
El software de administracin consiste en una aplicacin basada en el
lenguaje C#. Ha sido diseada utilizando el compilador denominado Visual C#
2005 Express Edition, descargado del sitio de Microsoft con una licencia que
permite el uso para fines acadmicos.
Inicialmente, este software de administracin comenz a programarse en
Visual Basic 6.0 y, aunque con notables inconvenientes, presentaba un buen
panorama que resultara en una aplicacin decente, desde el punto de vista de
funcionalidad.
Sin embargo, se decidi utilizar un lenguaje de ltima generacin que
representara un avance ms significativo y se pudiese crear una aplicacin
adecuada a la actualidad.
Se estudiaron las caractersticas de algunos lenguajes de programacin,
entre los que destacaron Java de Sun Microsystems y C# de Microsoft.

71
5.2.3.1. JAVA
El surgimiento de Java a principios de la dcada de 1990, conocido
entonces como Oak, se tradujo en una alternativa a los lenguajes de programacin
ms sobresalientes que eran el clsico C y su sucesor C++ (con el soporte de
clases, o programacin orientada a objetos), ya que James Gosling, el creador de
Java, se preocup por encontrar en estos lenguajes las deficiencias que
abrumaban la vida de la programacin e incluir las correcciones en su propio
lenguaje.
37

A pesar de ser una buena alternativa, no supona un avance sustancial en
cuanto a programacin pues sus aplicaciones eran limitadas aunque no
despreciables. Unos aos ms tarde, atraves por una etapa de letargo en la que
cay en desuso.
No fue sino hasta agosto de 1995, cuando gracias al esfuerzo de Bill Joy
(cofundador de Sun y uno de los desarrolladores principales del sistema operativo
Unix de Berckley) el lenguaje Java se convirti en una alternativa muy poderosa.
El resurgido Java fue modificado a fondo para ser totalmente compatible con
Internet y as poder ganarle terreno a Microsoft en el campo de la creacin de
software.
Java inclua mejoras muy interesantes y por las que muchos programadores
apostaron, como fue el hecho de ser un lenguaje de programacin orientado a
objetos y poseer una naturaleza sencilla pero poderosa. Por si fuera poco, la
ejecucin del cdigo en Java result ser segura y controlada ya que se reservaba

37
rea de Lenguajes y Sistemas Informticos de la Universidad de Burgos, Historia de Java,
[http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_2.htm], octubre de 1999.

72
un espacio para tal ejecucin y un programa no poda disponer de los recursos de
la computadora a menos que esta autorizacin fuera hecha de forma explcita. Por
tanto, los virus escritos en lenguaje Java no podan acceder los datos del usuario.
Otra de las caractersticas sobresalientes de Java era el espacio de
memoria tan reducido que ocupaba, por lo que era fcilmente incrustado junto con
los navegadores.
Una de las razones del xito de Java reside en su capacidad de
multiplataforma, es decir, no importaba el sistema operativo donde se ejecutara, el
mismo cdigo segua funcionando de manera prcticamente transparente.
Para lograr tal avance, se cre la mquina virtual de Java, hoy conocida
como JRE (Java Runtime Environment), que consiste en un software capaz de
traducir y ejecutar cdigo Java en una plataforma determinada. As pues,
resultaba ms sencillo y eficiente que Sun Microsystems se encargara de crear
tales mquinas virtuales para cada plataforma existente en vez de que los
programadores tuvieran que crear n cantidad de versiones de sus programas para
que pudieran usarse en todas las plataformas.
A pesar de todas las ventajas, surgi un problema: la velocidad de
ejecucin. Los fabricantes de software diseaban sus programas a placer y los
encapsulaban en un cdigo intermedio, el cual era distribuido. Cuando el usuario
final adquira tales programas, los ejecutaba utilizando la mquina virtual de Java y
sta se encargaba de traducir y ejecutar el cdigo intermedio en la plataforma
existente, lo cual empleaba una gran cantidad de tiempo en comparacin con el
tiempo que sus competidores consuman al ejecutar directamente un programa
creado para una plataforma especfica.

73
5.2.3.2. TECNOLOGA .NET
Para competir con Java, Microsoft decidi crear su propio lenguaje de
programacin en el que vertiera las correcciones apropiadas a los lenguajes
existentes, aprovechar las ventajas aportadas por Java y sacarle tanto jugo como
el que la tecnologa le permitiera.
Los primeros rumores de que Microsoft estaba desarrollando un nuevo
lenguaje de programacin surgieron en 1998, haciendo referencia a un lenguaje
que entonces llamaban COOL y que decan era muy similar a Java. En junio de
2000, Microsoft despej todas las dudas liberando la especificacin de un nuevo
lenguaje llamado C#. A esto le sigui rpidamente la primera versin de prueba
del entorno de desarrollo .NET, que inclua un compilador de C#. El nuevo
lenguaje estaba diseado por Anders Hejlsberg (creador de Turbo Pascal y
arquitecto de Delphi), Scott Wiltamuth y Peter Golde.
38

La decisin de utilizar este lenguaje para el presente proyecto deriva de una
evaluacin minuciosa de sus caractersticas:
a) C# es un lenguaje orientado a objetos y con una fuerte herencia
de C/C++ al igual que de Java. Ambos comparten muchos
conceptos que surgieron con la evolucin de C++, como son:
Gestin automtica de memoria
Ambos compilan a un lenguaje intermedio, independiente
de plataforma
No hay necesidad de incluir archivos de cabecera

38
Departamento de Informtica de la Escuela Universitaria de Tecnologa Tcnica en Informtica
de Oviedo, C#, [http://petra.euitio.uniovi.es/asignaturas/historia/trabajos/c-almo/], 2007.

74
Tampoco hay necesidad de declarar una clase antes que
otra con dependencias circulares
No hay funciones o constantes globales, todo pertenece a
una clase
Siempre se usa el operador ., no hay necesidad de usar
:: ->
Las sentencias if necesitan un valor booleano, es decir,
verdadero o falso, por lo que no aceptan valores enteros
Todos los valores deben de ser inicializados antes de ser
usados
No admiten herencia mltiple
b) El tamao de los tipos de datos bsicos es fijo e independiente
del compilador, sistema operativo o mquina para quienes se
compile (a diferencia de C++), lo que facilita la portabilidad del
cdigo.
c) C# incorpora en el propio lenguaje elementos que a lo largo de
los aos ha ido demostrndose son muy tiles para el desarrollo
de aplicaciones y que en otros lenguajes como Java o C++ hay
que simular, como un tipo bsico decimal que permite realizar
operaciones de alta precisin con nmeros reales de 128 bits.
d) C# incluye una instruccin foreach que permite recorrer
colecciones con facilidad y es ampliable a tipos definidos por el
usuario.

75
e) C# contiene un tipo bsico string para representar cadenas.
f) C# distingue un tipo boolean especfico para representar valores
lgicos.
g) C# soporta las caractersticas propias del paradigma de
programacin orientada a objetos: encapsulacin, herencia y
polimorfismo.
h) En lo referente a la encapsulacin es importante sealar que
adems de los modificadores public, private y protected, C#
aade otro modificador llamado internal, que puede combinarse
con protected e indica que al elemento a cuya definicin precede
slo puede accederse desde su mismo ensamblado.
i) En C# existe un modificador denominado sealed que seala
explcitamente que una clase no puede heredar.
j) C# posee un modificador denominado virtual que nos sirve para
marcar mtodos que puedan ser alterados o sustituidos, para
hacer ms reutilizable el cdigo.
k) Permite la sobrecarga de operadores.
l) En C# el cdigo incluye numerosas restricciones para asegurar
su correcto funcionamiento y no permitir el uso de punteros. Sin
embargo, y a diferencia de Java, en C# es posible saltarse
dichas restricciones y poder manipular objetos a travs de
punteros. Para ello basta marcar las regiones de cdigo como
inseguras, con el modificador unsafe, y podrn usarse en ellas
punteros de forma similar que en C++, lo que implica gran

76
versatilidad para los programadores en aquellas situaciones en
las que el uso de apuntadores permita una eficiencia y velocidad
de procesamiento mayores.
Adems de las caractersticas mencionadas, C# tiene otras ventajas como
son la compatibilidad con componentes COM existentes y la reutilizacin de
cdigo proveniente de otros lenguajes de programacin.
39

La tecnologa .NET permite a los programadores escribir cdigo en el
lenguaje que ms les acomode pues hay un sin fin de compiladores que generan
su cdigo intermedio, es decir, si un programador domina Delphi o incluso Java,
puede encontrar un compilador a su medida e incursionar en la tecnologa .NET.
Para que un lenguaje de programacin forme parte de la familia .NET, es
necesario que cumpla con una especificacin conocida como CLS (Common
Language Specification) que engloba un conjunto de reglas bsicas.
40

La tecnologa .NET comprende aplicaciones de servidor, entorno de
desarrollo, componentes para los sistemas operativos, servicios y una plataforma
de desarrollo denominada framework .NET.
El framework .NET es una infraestructura de desarrollo que est compuesta
por diversos recursos, entre los cuales se destaca el ms importante que es una
mquina virtual conocida como CLR (Common Language Runtime), sobre la cual
se ejecutan las aplicaciones.
De este modo, los programas no poseern cdigo nativo de ningn
microprocesador en particular, sino instrucciones MSIL (Microsoft Intermediate

39
Vase el Glosario.
40
Ruiz, Diego, C#, Argentina, MP Ediciones, Coleccin Manuales USERS, 1. ed., 2005, p. 20.

77
Language) que sern traducidas a cdigo nativo en el momento de su ejecucin
por medio de un compilador Just-In-Time.
Dicho compilador se encarga de traducir el cdigo intermedio en cdigo que
comprenda la computadora (o plataforma) en la que se va ejecutar y, para ahorrar
recursos y tiempo, slo convierte la porcin de cdigo que vaya necesitando,
evitando as la conversin de todo el cdigo desde el inicio de la ejecucin.
El framework tambin define una biblioteca base de clases BCL (Base
Class Library), a la cual puede acceder cualquier lenguaje desarrollado para la
plataforma.
Con .NET se pueden desarrollar aplicaciones para Internet y para Windows,
as como para dispositivos mviles como celulares y PDAs (Personal Digital
Assistant), lo que demuestra que la plataforma es verstil y muy poderosa.
As pues, al ser independiente de la plataforma, se puede desarrollar en C#
(o algn otro lenguaje de la familia .NET) y pretender que su ejecucin sea
transparente en cualquier plataforma, siempre y cuando exista un framework
adecuado para tal plataforma.
Adems, no tiene trascendencia alguna el hecho de que el programador
haya desarrollado en una plataforma basada en Windows y pretenda ejecutar su
aplicacin en Linux, mientras se cuente con el framework apropiado.
El presente proyecto de tesis ha sido desarrollado en una plataforma
basada en Windows XP Professional SP2 con un procesador Intel Pentium 4 a
3.33 GHz, 1.5 GB de memoria RAM y un disco duro de 100 GB.
Inicialmente, se utiliz el framework versin 1.1 por ser el disponible en ese
momento, sin embargo, cuando Microsoft liber la versin 2.0 se opt por

78
introducirla al proyecto y basarlo en ella, por el principio de actualidad que se le ha
intentado dar a esta investigacin.
El software de administracin, desde el punto de vista del cdigo, consiste
en una solucin denominada tesis2006_02. En el entorno de desarrollo se le
denomina solucin a un proyecto o conjunto de proyectos creados para un fin
determinado. En este caso, la solucin posee un nico proyecto denominado
tesis02.
Es conveniente recalcar que aunque no se utilizaron acentos en el cdigo,
s se incluirn en las prximas lneas para evitar que parezcan errores ortogrficos.
Adems, con el objetivo de facilitar la explicacin de las clases y sus mtodos se
har uso de un pseudocdigo, en los casos donde resulte conveniente. Es
importante mencionar que el pseudocdigo incluido en esta investigacin cumple
un propsito demostrativo y econmico, por lo que las lneas de cdigo que
carecen de trascendencia y/o que forman parte de las reglas bsicas del lenguaje
de programacin y an de la programacin en general, no sern transcritas y se
considerarn tcitas.
A continuacin se comentar cada una de las clases que conforman el
proyecto, se mostrar su visualizacin y se incluir un diagrama UML.
41


41
Vase el Glosario.

79
5.2.3.3. CLASES
Clase InfoMenu

Figura 8. Diagrama UML de la clase InfoMenu.
Esta clase, heredada de Form, cuenta con un constructor que no recibe
parmetros y otro sobrecargado que recibe parmetros de la clase PrincipalForm
para inicializar sus variables. En su evento Load despliega el copyright del
algoritmo y el tamao de las caractersticas empleado.
private void InfoMenu_Load(object sender, EventArgs e)
{
this.Text = "Copyright del algoritmo";
ResultadoLabel.Text = "Los derechos del algoritmo de reconocimiento "+
"de rostro estn reservados por:" + CopyLib;
ResultadoLabel.Text += "El tamao de las caractersticas del rostro es de " +
TamanoCarac + " bytes";
}
Tambin posee un botn cuya exclusiva funcin es la de cerrar la forma.

80

Figura 9. Visualizacin de la clase InfoMenu en tiempo de ejecucin.


81
Clase InfoMenu2

Figura 10. Diagrama UML de la clase InfoMenu2.
Esta clase despliega el copyright de la tesis, en el que se incluyen los datos
del autor as como la institucin ante quien se presenta.
Posee una etiqueta que contiene la informacin y un botn cuya nica
funcin consiste en cerrar la forma.

Figura 11. Visualizacin de la clase InfoMenu2 en tiempo de ejecucin.


82
Clase Parameters

Figura 12. Diagrama UML de la clase Parameters.
Esta clase se utiliza para visualizar los parmetros con que opera el
algoritmo, as como tambin para realizar las modificaciones pertinentes.
El evento Load se encarga de obtener los parmetros que tiene asignados
VL1, que es un objeto de tipo Verilook, y llena los espacios de las cajas de texto
para mostrarlos al usuario. Asimismo, define la validacin de tipo para cada caja

83
de texto con el fin de evitar que los datos introducidos en ellas no correspondan al
tipo esperado.
private void Parameters_Load(object sender, EventArgs e)
{
minIODvar=VL1.GetParameter(VeriLook.DetectFaceMinIOD);
maxIODvar=VL1.GetParameter(VeriLook.DetectFaceMaxIOD);
similitudvar=VL1.GetParameter(VeriLook.DetectFaceSimilarityThreshold);
simetriavar=VL1.GetParameter(VeriLook.DetectFaceSymmetryThreshold);
minIODmaskedTextBox.ValidatingType = typeof(int);
maxIODmaskedTextBox.ValidatingType = typeof(int);
similitudmaskedTextBox.ValidatingType = typeof(float);
simetriamaskedTextBox.ValidatingType = typeof(float);
}
Los eventos TypeValidationCompleted de las cajas de texto se disparan
cuando se escribe algn dato en las cajas de texto. Si los datos introducidos son
vlidos, asignar el valor a la variable respectiva y, en caso contrario, mostrar un
mensaje de error.
private void minIODmaskedTextBox_TypeValidationCompleted
(object sender, TypeValidationEventArgs e)
{
if (e.IsValidInput)
{
minIODvar = (int)e.ReturnValue;
}
else
{
MessageBox.Show("Dato NO vlido para Distancia Interocular Mnima!");
}
}
El evento click del botn Aceptar, se encarga de sustituir los parmetros de
VL1 con los introducidos por el usuario y, posteriormente, cerrar la forma.
private void AceptarParam_Click(object sender, EventArgs e)
{
VL1.SetParameter(VeriLook.DetectFaceMaxIOD, maxIODvar);
VL1.SetParameter(VeriLook.DetectFaceMinIOD, minIODvar);
VL1.SetParameter(VeriLook.DetectFaceSimilarityThreshold, similitudvar);
VL1.SetParameter(VeriLook.DetectFaceSymmetryThreshold, simetriavar);
}
La funcin del botn Cancelar es desechar los cambios y cerrar la forma.
Los parmetros que posee el objeto VL1 son los siguientes:

84
a) Distancia interocular mnima: Se refiere a la distancia mnima que
debe existir entre los ojos al momento de reconocer un rostro, es
decir, si la distancia que existe entre el ojo derecho y el izquierdo
de las imgenes procesadas es menor a la establecida por este
parmetro, tales imgenes sern descartadas por las rutinas de
deteccin de rostro y no se podr procesar al usuario. Este
parmetro est medido en pixeles.
b) Distancia interocular mxima: En contraposicin al parmetro
anterior, si la distancia existente entre el ojo derecho y el
izquierdo de las imgenes procesadas excede el valor
establecido por este parmetro, dichas imgenes sern
descartadas por las rutinas de deteccin de rostro y no se podr
procesar al usuario. Al igual que el parmetro anterior, sus
unidades son pixeles.
Por definicin, la distancia interocular es la distancia que existe
entre los centros de rotacin de los globos oculares de un
individuo o aquella que existe entre los lentes de instrumentos
pticos.
42

c) Umbral de similitud: Este parmetro se refiere a qu tan
parecidas a un rostro deben ser las imgenes procesadas para
que sean consideradas como tal. Por lo tanto, mientras mayor
sea el valor de este parmetro, se considerarn slo los rostros
ms parecidos al esquema interno del algoritmo, desechando

42
Vase el Glosario.

85
aquellos que exceden las expectativas del mismo, es decir, si
rebasan el margen determinado por este parmetro sern
descartados por las rutinas de deteccin de rostro.
Similitud significa semejanza, parecido, analoga. Semejanza es
la cualidad de semejante que se define como aquello que tiene
aspectos o caractersticas iguales o similares a otra persona o
cosa con la que se compara.
43

d) Umbral de simetra: Este parmetro hace referencia al hecho de
que la parte izquierda y la derecha del posible rostro sean iguales.
Tambin considera que las partes del posible rostro (ojos, nariz y
boca, principalmente) se encuentren en el sitio esperado, de
acuerdo con el esquema interno del algoritmo. Mientras menor
sea el valor definido por este parmetro, se podrn detectar
rostros ms extraos o con menor simetra y viceversa.
Simetra es la armona resultante de ciertas posiciones de los
elementos que constituyen un conjunto.
44


Figura 13. Visualizacin de la clase Parameters en tiempo de diseo.

43
El Pequeo Larousse Ilustrado, Mxico, Ed. Larousse, 10. ed., 2004, pp.917, 928.
44
Ibdem.

86
Clase Reportes

Figura 14. Diagrama UML de la clase Reportes.
Esta clase fue creada con el fin de realizar un reporte impreso que incluya
de manera resumida los registros de entrada y salida de todos los usuarios
almacenados en la base de datos, dentro de un periodo de tiempo especfico.
El evento Load, contiene instrucciones para mostrar al administrador dos
seleccionadores de fechas: el primero mostrar una fecha con un mes de retraso y
el segundo mostrar la fecha actual. De este modo, el primero determina el lmite
inferior del periodo de tiempo adecuado para realizar el reporte, mientras que el
segundo determina el lmite superior que, obviamente, no tendra sentido
representar una fecha posterior a la actual, aunque desde el punto de vista de

87
funcionalidad no existira ningn problema pues mostrara los resultados igual que
si se pusiera la fecha actual ya que no existe ningn registro en una fecha
posterior.
private void Reportes_Load(object sender, EventArgs e)
{
RetrasoCalendario = new TimeSpan(30 das);
InicioDateTimePicker = DateTime.Now.Subtract(RetrasoCalendario);
}
El botn Generar se encarga de llamar al procedimiento almacenado
PruebaReporteFechas02 y pasarle como parmetros los lmites superior e inferior
del periodo de tiempo seleccionado previamente. Tambin utiliza un pequeo
algoritmo para mostrar organizadamente los registros e incluirlos en la caja de
texto, de tal suerte que se muestren los nombres de los usuarios comenzando por
el identificador menor y todos sus registros ordenados por fechas de manera
ascendente.
private void GenerarButton_Click(object sender, EventArgs e)
{
SqlCommand cmd2=new SqlCommand("dbo.PruebaReporteFechas02");
SqlParameter pa1 = new SqlParameter("inicio", SqlDbType.SmallDateTime);
SqlParameter pa2 = new SqlParameter("fin", SqlDbType.SmallDateTime);
}
El botn Salir cierra la forma.
El evento PrintPage de Documento, contiene las configuraciones bsicas de
impresin como son: mrgenes izquierdo, derecho, superior e inferior, as como la
fuente y su tipo. Tambin contiene el origen de los datos que se utilizarn para la
impresin.
El botn Imprimir, como su nombre lo indica, se encarga de enviar al
perifrico correspondiente los datos a imprimir, no sin antes consultar al usuario

88
sobre algunas configuraciones de ltimo momento como son el nmero de copias
y la impresora deseada, entre otras.

Figura 15. Visualizacin de la clase Reportes en tiempo de ejecucin.


89
Clase ListaUsuarios

Figura 16. Diagrama UML de la clase ListaUsuarios.
Esta clase se ocupa de mostrarle al administrador una lista con todos los
usuarios contenidos en la base de datos, nicamente con fines informativos.
Contiene dos constructores: uno bsico y el otro sobrecargado, recibiendo
como parmetro un comando SQL previamente definido en la clase PrincipalForm,
en la que nos enfocaremos ms adelante.
As pues, ejecuta el procedimiento almacenado, recupera la informacin de
la base de datos y la muestra a manera de listado dentro de una caja de texto
destinada a tal fin. Adems incluye el nmero total de usuarios registrados, al final
de la lista.
private void ListaUsuarios_Load(object sender, EventArgs e)
{
while (readListaU.Read())
{
ListaUtextBox.Text += readListaU.GetValue(0).ToString();
ListaUtextBox.Text += readListaU.GetValue(1).ToString();
}
}
La nica funcin del botn Aceptar es la de cerrar la forma.

90

Figura 17. Visualizacin de la clase ListaUsuarios en tiempo de ejecucin.


91
Clase ModificarUsuarios

Figura 18. Diagrama UML de la clase ModificarUsuarios.
Esta clase, como su nombre lo indica, se ocupa de realizar modificaciones
en lo referente a los nombres de los usuarios existentes, en caso de haber existido
un error al crearlos o simplemente por as convenir a la administracin.
Posee un constructor bsico que inicializa los componentes de la forma.
Su evento Load contiene instrucciones para cambiar a false los valores de
algunos controles que por conveniencia deben permanecer invisibles e
inhabilitados al momento de cargar la forma. Asimismo, ejecuta el procedimiento
almacenado PruebaListaUsuarios01 con el fin de mostrar un listado de los

92
usuarios al administrador. El tipo de control elegido para contener dicha
informacin se denomina ListBox o caja de lista.
private void ModificarUsuarios_Load(object sender, EventArgs e)
{
SqlCommand cmdListaU = new SqlCommand("dbo.PruebaListaUsuarios01");
while (readListaU.Read())
{
ModificarUListBox.Items.Add(readListaU.GetValue(0).ToString()+
readListaU.GetValue(1).ToString());
}
}
El evento SelectedIndexChanged de la ListBox se encarga de copiar una
cadena con el nombre de usuario seleccionado por el usuario y desplegar una
etiqueta con l.
private void ModificarUListBox_SelectedIndexChanged(object sender,
EventArgs e)
{
DatosUsuarioModificarlabel.Text = ModificarUListBox.SelectedItem.ToString();
}
Se le solicita al administrador escribir dentro de la caja de texto la
modificacin al nombre de usuario seleccionado.
Una vez que se han introducido los nuevos datos, se debe hacer click en el
botn Modificar cuya funcin es la de verificar que tales datos constituyan un
nombre de usuario vlido para el sistema, es decir, que la cadena respectiva no
contenga espacios al inicio o que no se trate de una cadena vaca, cuya insercin
en la base de datos carecera de objeto por no poder determinar posteriormente
de qu usuario se trata y esto perjudicara la integridad de la base de datos.
Asimismo, el botn Modificar despliega los controles que al cargar la forma
fueron ocultados. De esta manera, se habilitan y hacen visibles tres etiquetas y un
botn. Las primeras dos etiquetas muestran al administrador cul ser el resultado
de las modificaciones, es decir, cul es el aspecto de la cadena continente del

93
nuevo nombre de usuario que reemplazar a la existente en la base de datos. La
tercera etiqueta muestra la advertencia de permanencia en la modificacin de los
datos y un botn de confirmacin para evitar errores.
private void Modificarbutton_Click(object sender, EventArgs e)
{
if (cadena no vaca ni contiene caracteres invlidos)
{
// listo para la modificacin
}
else
{
ResultadoModificaLabel.Text = "Cadena invlida";
}
El botn Confirmar se encarga de ejecutar el procedimiento almacenado
PruebaModificarTabla04 el cual posee dos parmetros de entrada: el primero
contiene la cadena con el nombre de usuario nuevo o, en tal caso, la modificacin
al mismo y, el segundo, ostenta el identificador que le fue asignado al usuario en
cuestin, al momento de su creacin, dentro de la base de datos.
Asimismo, mediante un bloque finally se asegura de que, en caso de haber
sido exitosa la modificacin en la base de datos, los arreglos que contienen la
informacin de todos los usuarios sean actualizados para as impedir que la
aplicacin genere errores al no existir coherencia entre la informacin que maneja
en RAM y la existente en la base de datos.
private void ConfirmarButton_Click(object sender, EventArgs e)
{
try
{
// intentar la modificacin en la base de datos
}
catch
{
MessageBox.Show("Ocurrio un error al modificar");
}
finally
{ //actualiza los arreglos }
}

94
Por ltimo, el botn Cancelar se ocupa de desechar los cambios previos a
la confirmacin y cerrar la forma.

Figura 19. Visualizacin de la clase ModificarUsuarios en tiempo de ejecucin.


95
Clase EliminarUsuarios

Figura 20. Diagrama UML de la clase EliminarUsuarios.
Esta clase posee un constructor bsico que se ocupa de inicializar todos
sus componentes.
Con su evento Load, la clase EliminarUsuarios le introduce a algunos
componentes, entre ellos el botn Confirmar, valores false en las propiedades de
visibilidad y habilitacin para evitar la interaccin con el usuario al cargar la forma.
Adems, ejecuta el procedimiento almacenado PruebaListaUsuarios01 con el fin
de mostrar al administrador la lista de los usuarios existentes en la base de datos.
El tipo de control escogido para mostrar tal informacin se denomina ListBox o
caja de lista.


96
private void EliminarUsuarios_Load(object sender, EventArgs e)
{
SqlCommand cmdListaU = new SqlCommand("dbo.PruebaListaUsuarios01");
while (readListaU.Read())
{
EliminarUListBox.Items.Add(readListaU.GetValue(0).ToString() +
readListaU.GetValue(1).ToString());
}
}
El evento SelectedIndexChanged de la ListBox, copia una cadena con el
nombre del usuario seleccionado a una etiqueta para mostrarla al administrador.
private void EliminarUListBox_SelectedIndexChanged(object sender,
EventArgs e)
{
DatosUsuarioEliminarlabel.Text = EliminarUListBox.SelectedItem.ToString();
}
Una vez seleccionado el usuario, se hace click en el botn Eliminar y ste
despliega una etiqueta mostrando la advertencia de permanencia en el borrado de
los datos y un botn de confirmacin para evitar errores al momento de eliminar.
Al hacer click en el botn Confirmar, se llama al procedimiento almacenado
PruebaEliminarUsuario03 que se ocupa de eliminar al usuario de la base de datos,
previa consulta de existencia, es decir, si por alguna razn no determinada llegara
a ocurrir un error, la integridad de la base de datos no se vera comprometida ya
que el diseo permite que verifique la existencia del usuario antes de realizar
modificacin alguna de manera irreversible.
Asimismo, mediante un bloque finally se asegura de que, en caso de haber
sido exitosa la eliminacin, los arreglos que contienen los datos de los usuarios
sean actualizados para evitar errores dentro de la aplicacin.
private void ConfirmarButton_Click(object sender, EventArgs e)
{
try
{
// intentar la eliminacin en la base de datos
}

97
catch
{
MessageBox.Show("Ocurrio un error al eliminar");
}
finally
{
//actualiza los arreglos
}
}
Cabe mencionar que una vez eliminado un usuario en forma definitiva, su
identificador no podr ser usado por el sistema nuevamente, esto por razones de
seguridad pues no convendra confundir al sistema reasignando identificadores
que fueron utilizados previamente y dados de baja. sta es una medida ms de
control para preservar la integridad del sistema.
Finalmente, utiliza el botn Salir para cerrar la forma.

Figura 21. Visualizacin de la clase EliminarUsuarios en tiempo de ejecucin.


98
Clase CrearUsuarios

Figura 22. Diagrama UML de la clase CrearUsuarios.
Esta clase se utiliza como prembulo para dar de alta a un usuario en la
base de datos ya que se encarga de validar el nombre de usuario, es decir,
verifica que la caja de texto no contenga espacios en el principio o que no sea una
cadena vaca, para as resguardar la integridad de la base de datos al momento
de introducirle la informacin.
Su constructor es bsico y se encarga de inicializar los componentes de la
clase.

99
Al presionar el botn Crear, verifica por medio de un sencillo algoritmo que
la cadena propuesta por el administrador sea vlida para el sistema, es decir, que
no sea nula o empiece con un espacio.
private void Crearbutton_Click(object sender, EventArgs e)
{
if (cadena no vaca ni contiene caracteres invlidos)
{
// listo para crear
}
else
{
ResultadoLabel.Text = "Cadena invlida";
}
El evento Load de la forma, en lo referente a algunos elementos, inicializa
sus atributos de visibilidad y habilitacin con el valor false para evitar su aparicin
en el momento de cargar la forma y la interaccin con el usuario.
En caso de que los datos introducidos sean invlidos, cambiar estos
atributos para mostrar un mensaje de error. Una vez que los datos han sido
validados, modifica los atributos de los elementos escondidos a true para poder
hacerlos visibles y la interaccin con ellos sea posible.
Uno de los elementos que aparecern ser el botn de Confirmar que se
encarga de ejecutar un mtodo de la forma PrincipalForm a travs de su delegado
GBDel01. Los delegados son clases especiales, y sus objetos son bsicamente
contenedores de referencias a mtodos de otros objetos.
45

private void ConfirmarButton_Click(object sender, EventArgs e)
{
if (Principal.GBDel01 != null)
{
Principal.GBDel01(this);
}
}

45
Ruiz, Diego, op. cit., p.199.

100
Una explicacin ms detallada se incluir en la descripcin de la clase
PrincipalForm, aunque por ahora cabe mencionar que se ocupa de dar de alta al
usuario cuando las imgenes de su rostro estn siendo procesadas por el
algoritmo.


Figura 23. Visualizacin de la clase CrearUsuarios en tiempo de diseo.


101
Clase VideoControl

Figura 24. Diagrama UML de la clase VideoControl.
Esta clase est destinada a realizar operaciones de control con las
imgenes adquiridas y procesadas por el algoritmo, as como a dibujar elipses
para ubicar los ojos de los rostros reconocidos.
Esta clase hereda las propiedades y mtodos de la clase Panel, con el fin
de facilitar el manejo de las imgenes.
En su constructor, adems de la inicializacin bsica, agrega una
modificacin a la propiedad de DoubleBuffer con el fin de brindar estabilidad a la
aplicacin al momento de mostrar las imgenes. Cuando el valor de esta
propiedad es true, el dibujo se realiza en un bfer y, una vez terminado, el

102
resultado aparece en la pantalla. El doble bfer evita que se produzca un
parpadeo como consecuencia de volver a dibujar el control.
public VideoControl()
{
this.SetStyle(ControlStyles.DoubleBuffer, true);
}
El mtodo Dispose contiene las instrucciones para eliminar el objeto creado
en base a determinada clase. Todas las clases poseen un mtodo Dispose de
manera intrnseca, pues resultara absurdo crear un objeto que no puede ser
destruido. En algunos casos, como en el presente, es necesario sobrescribir este
mtodo para incluir instrucciones propias para la adecuada destruccin de dicho
objeto. De esta manera, se procura mantener poco saturada la memoria del
equipo de cmputo que ejecuta la aplicacin y as favorecer su estabilidad.
protected override void Dispose(bool disposing)
{
// destruye los objetos para liberar memoria
}
El mtodo setOjos recibe dos parmetros de la clase PrincipalForm que son
las coordenadas actuales de los ojos del rostro reconocido y copia sus valores a
variables propias de la clase.
public void setOjos(Point izq, Point der)
{
ojoIzq = izq;
ojoDer = der;
}
De manera anloga, el mtodo setCuadro (denominado as porque al inicio
de este proyecto se propuso fueran recuadros y posteriormente se opt por
colocar las elipses) recibe las coordenadas actuales de los ojos del rostro
reconocido y las longitudes de ancho y alto que sern utilizadas para crear una
elipse alrededor de cada ojo. Tambin copia estos valores a variables locales.

103
public void setCuadro(Point izqPunto, Point derPunto, int ancho, int alto)
{
izqEsquina = izqPunto;
derEsquina = derPunto;
this.anchoCuadro = ancho;
this.altoCuadro = alto;
}
El mtodo OnPaint se ejecuta cada vez que se vuelve a dibujar la forma, ya
que tiene un evento asociado. El objeto de colocar el cdigo dentro de este
mtodo es el de crear un efecto de continuidad en el dibujo. Para fines didcticos,
se puede considerar al video como una sucesin de imgenes. No existira
problema al momento de dibujar las elipses alrededor de los ojos sobre una
imagen fija, pero al tratarse de video las imgenes se suceden una tras otra, lo
cual provocara que las elipses fuesen visibles un solo instante. Sin embargo, se
puede sacar ventaja del hecho de que cuando se inserta una nueva imagen se
dispara un evento que ejecuta el mtodo OnPaint. As pues, mientras la sucesin
de imgenes contina, las elipses alrededor de los ojos se fijan a cada una de
esas imgenes, provocando el efecto deseado que es el de ver las elipses sin
intermitencias.
protected override void OnPaint(PaintEventArgs pe)
{
Graphics g = pe.Graphics;
Pen pluma = new Pen(Color.Blue, 3);
g.DrawEllipse(pluma,(izqEsquina.X-anchoCuadro),(izqEsquina.Y-altoCuadro),
anchoCuadro, altoCuadro);
g.DrawEllipse(pluma,(derEsquina.X-anchoCuadro),(derEsquina.Y-altoCuadro),
anchoCuadro, altoCuadro);
}
Cabe mencionar que las elipses sern visibles siempre y cuando el
algoritmo determine que existe un rostro en las imgenes procesadas, as que de
existir una intermitencia, sta ser asociada al mero funcionamiento del algoritmo

104
y no a un error en el diseo pues, como se ha explicado, tal situacin ha sido
prevista.
Por ltimo, el mtodo OnPaintBackground constituye un artificio para evitar
que el fondo del objeto heredado de la clase Panel se vuelva a dibujar, con el fin
de no desperdiciar recursos. As pues, cada vez que se dispare el evento asociado
y ste ejecute el mtodo OnPaintBackground, nada suceder.
protected override void OnPaintBackground(PaintEventArgs pevent)
{
// el background no se actualiza
}
A diferencia de las clases anteriores, esta clase no posee visualizacin
propia, ya que es dentro de la clase PrincipalForm donde se ve representada.


105
Clase Program

Figura 25. Diagrama UML de la clase Program.
Esta clase es creada automticamente por el compilador y sirve de punto
de referencia para la ejecucin de la aplicacin, es decir, es el principal punto de
entrada a la aplicacin. Contiene un solo mtodo esttico que se encarga de crear
un objeto de la clase PrincipalForm que constituye la forma substancial de la
aplicacin.
static class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Principal());
}
}
No posee representacin visual.


106
Clase PrincipalForm

Figura 26. Diagrama UML de la clase PrincipalForm.
Esta clase representa la columna vertebral de la aplicacin, a travs de ella
se llevarn a cabo las rutinas de reconocimiento y a partir de ella se acceder a
las dems clases.
En una primera seccin encontraremos la mayora de las declaraciones de
variables necesarias para la aplicacin, as como declaraciones de arreglos de
objetos y de bytes, delegados y constantes, entre otras.
Posee un constructor bsico, que se encarga de inicializar todos los
componentes de la forma.
Cabe mencionar que con el fin de realizar una administracin eficiente de
los posibles errores, no se ha escatimado en el uso de bloques trycatch pues

107
permiten realizar una operacin a sabiendas de que en caso de existir un error,
ste ser oportunamente notificado al administrador y as se podr solventar,
haciendo referencia a la causa de tal error.
El evento Load de esta clase realiza las siguientes funciones:
a) Ejecuta el mtodo Register de la clase Verilook para comprobar
que el centinela se encuentra correctamente instalado. Este
mtodo recibe dos parmetros: el primero es el nmero de serie
y el segundo es el tipo de centinela a utilizar, que en este caso es
un HASP o centinela USB. De no estar presente el centinela o de
no ser coincidentes las licencias, arrojar un mensaje de error y
deber reiniciarse la aplicacin una vez solucionado el
problema.
46

El centinela es un hardware que hace la funcin de candado para
que se pueda acceder al algoritmo slo en caso de encontrarse
presente en el equipo y cuyos datos de la licencia coincidan con
los existentes en dicho hardware. Por ser un algoritmo con
copyright, se deben preservar los protocolos exigidos por su
fabricante.
VL1.Register(serialNumber, "HASP");
b) Realiza una comprobacin de los dispositivos de adquisicin de
video instalados en el equipo. Por tratarse de un prototipo, en
caso de detectar ms de un dispositivo, nicamente considerar
el primero y lo utilizar para realizar todas las operaciones

46
Vase el Glosario.

108
necesarias. Si no encontrase ningn dispositivo conectado,
mostrar un mensaje de error y la aplicacin deber reiniciarse
tras conectar un dispositivo adecuado.
try
{
// buscar dispositivos activos
}
catch
{
MessageBox.Show("Es probable que el dispositivo se encuentre
desconectado o apagado.");
}
c) En caso de que la bsqueda de un dispositivo de video haya sido
exitosa, intentar inicializarlo para poder usarlo. Si llegase a fallar
la inicializacin, desplegar un mensaje de error e informar de
la necesidad de reiniciar la aplicacin despus de haber
solucionado el problema.
try
{
// Inicializar dispositivo
}
catch
{
MessageBox.Show("Ocurri un error al inicializar dispositivo);
}
d) Intentar establecer una conexin con el servidor de la base de
datos Registro01 con seguridad integrada, basada en el sistema
operativo. De no ser posible, informar del error inmediatamente
a travs de un mensaje visible en el que solicitar sea reiniciada
la aplicacin una vez tomadas las medidas necesarias para
solventar el problema.




109
try
{
con01 = new SqlConnection("Data Source=localhost; Initial
Catalog=Registro01; Integrated Security=SSPI;");
con01.Open();
}
catch
{
MessageBox.Show("Error al conectarse a la base de datos.");
}
e) Ejecuta el mtodo ActualizarArreglos para cargar la informacin
ubicada en la base de datos referente a los usuarios registrados
y colocarla en RAM para optimizar la velocidad de respuesta de
la aplicacin.
public static void ActualizarArreglos()
{
SqlCommand cmdContar = new
SqlCommand("PruebaContarRegistros01");
numUsuarios = (int)cmdContar.ExecuteScalar();
SqlCommand LlenarArr = new
SqlCommand("PruebaLlenarArreglos01");
while (LlenarArr.Read())
{
// extraer y cargar datos
}
}
f) Configura el parmetro de Umbral de Similitud con un valor
determinado previamente en tiempo de diseo, a partir de las
pruebas efectuadas.
VL1.SetParameter(VeriLook.DetectFaceSimilarityThreshold,
SIMILARITY_THRESHOLD);
g) Determina el valor de la constante que ser utilizada como
umbral de comparacin. Este valor se aplica al momento en que
el algoritmo compara las caractersticas extradas del rostro
ubicado frente al dispositivo de video y las caractersticas que
tiene almacenadas en la base de datos, si el valor arrojado

110
durante este procedimiento es mayor al umbral de comparacin,
la identificacin ser positiva y se proceder a realizar el registro
de horarios correspondiente. En caso contrario, la identificacin
ser negativa y la comparacin descartada.
MATCH_THRESHOLD = umbral de comparacin;
Por la propia naturaleza de la programacin orientada a objetos y su tan
favorable falta de linealidad, se explicarn los mtodos y eventos del cdigo en el
mismo orden en el que han sido transcritos. Esto es debido a lo infructuoso que
resultara, hasta cierto punto, el tratar de explicar el cdigo en un orden pseudo
lineal de ejecucin, ya que mientras algunos mtodos son ejecutados a peticin
del administrador, hay otros que se ejecutan a cada instante y en consecuencia de
diversas situaciones, en interaccin con los eventos disparados y por la
correlacin existente entre dos o ms mtodos.
El objeto axCapturador se encarga de trasportar y adecuar las imgenes
adquiridas por el dispositivo de video para poderlas procesar por el algoritmo de
reconocimiento de rostros.
private AxCapturer axCapturador;
El evento Image del axCapturador se dispara cada vez que se obtiene una
imagen a procesar desde el dispositivo de video, es decir, este evento se est
continuamente disparando mientras el dispositivo est encendido y enviando la
informacin correspondiente.
void axCapturador_Image(object sender, CapturerEvents_ImageEvent e)
{
// administracin del video
}

111
La variable listoFin se utiliza para optimizar los recursos y mantener la
estabilidad de la aplicacin. En caso de que esta variable posea un valor false, el
cdigo dentro de la sentencia if correspondiente se ejecutar una y otra vez,
mientras el evento permanezca disparndose. Sin embargo, al acceder al men o
abrir alguna otra ventana, como la de parmetros o la de lista de usuarios, a esta
variable se le asignar el valor de true por lo que el cdigo dentro del bloque if
mencionado quedar sin ejecutarse an cuando el evento Image del axCapturador
contine disparndose. Esto con el fin de evitar errores dentro de la aplicacin
pues resultara un desastre que mientras el administrador se encuentra eliminando
un usuario, por poner un ejemplo, la primera mitad del cdigo se ejecute
considerando la existencia del usuario y la segunda mitad no encuentre al usuario
en cuestin. Asimismo, desde el punto de vista de los recursos, resultara un
desperdicio el que se estuvieran procesando imgenes y por lo tanto posibles
rostros, dibujndolas en un control que en ese momento ni siquiera es visible pues
por lo regular existe una forma sobre l y, aunque no la hubiera, no resulta
imprescindible pues la atencin del administrador se encuentra en otro sitio.
if (listoFin == false)
{
// se controla el video y se procesa con el algoritmo
}
else
{
/* no hace falta controlar el video porque el administrador est configurando la
aplicacin o realizando alguna consulta y no es necesario buscar rostros */
}
En un primer bloque try-catch, se calcula la longitud de la imagen
proveniente del argumento del evento, considerndola un arreglo de bytes. A
continuacin se inicializa un arreglo de bytes con la longitud obtenida y se le copia

112
el contenido del argumento del evento, es decir, la imagen. Una vez que se tiene
la imagen fija en memoria se le pasa como argumento al constructor de un objeto
de tipo bitmap, el cual encapsula mapas de bits, que estn formados por los datos
de pixeles de una imagen de grficos y sus atributos, es decir, bitmap es un objeto
que se utiliza para trabajar con imgenes definidas mediante datos de pixeles.
A continuacin se define la paleta de colores que conservar el bitmap y se
le pasa el valor de ste a la variable imagen de la clase VideoControl. Cabe
mencionar que para fines de eficiencia del algoritmo y a causa de su propio diseo,
las imgenes procesadas son filtradas en escala de grises.
En caso de existir un error en este bloque, se generar un mensaje de error
para poner al tanto al administrador.
try
{
int imagenLongitud = ((byte[])e.image).Length;
imagenArr = new byte[imagenLongitud];
Array.Copy((byte[])e.image, imagenArr, imagenLongitud);
Bitmap bm = new Bitmap(e.width, e.height, imagenArr);
ColorPalette pal = bm.Palette;
}
catch
{
MessageBox.Show("Error en el bitmap");
}
En un segundo bloque try-catch, se declara una variable de tipo estructura
que contendr los detalles de los posibles rostros, provenientes de las imgenes
procesadas, como la posicin del ojo derecho y del ojo izquierdo, entre otros.
try
{
detallesEx = new VLFrameDetailsEx();

}
catch (Exception ex)
{
MessageBox.Show("Error al detectar rostros: " + ex.ToString());
}

113
Dentro de un bloque condicional if, cuyo fin es asegurar que ninguna
excepcin haya sido arrojada a causa de la ejecucin de la funcin DetectFace,
propia del algoritmo, se encuentra otro bloque condicional if, anidado a ste.
if ( DetectFace != VeriLookException)
{
if (foundFace)
{
// rostro encontrado
}
}
El segundo bloque if se ocupa de verificar que dentro de las imgenes
procesadas por el algoritmo se haya encontrado un rostro del cual sea posible
extraer sus caractersticas con uno de dos fines: comparar dichas caractersticas
con las existentes en la base de datos o extraerlas para almacenarlas en la base
de datos.
Para ambas opciones se inicializan variables que contienen las
coordenadas x y y de los ojos derecho e izquierdo, respectivamente. Despus,
tales variables se envan como parmetros a los mtodos setOjos y setCuadro de
la clase VideoControl.
ojoIzq = new Point(leftEye.X, leftEye.Y);
ojoDer = new Point(rightEye.X, rightEye.Y);
setOjos(ojoIzq, ojoDer);
setCuadro(ojoIzq, ojoDer, ancho, alto);
Para llevar a cabo el procedimiento de comparacin, primero se extraen las
caractersticas del rostro, a travs del mtodo ExtraerCaractersticas, y se
inicializa un arreglo que las contenga. En seguida, se llama al mtodo
CompararRostro.
byte[] Caractersticas = ExtraerCaractersticas(e, ojoIzq, ojoDer);
CompararRostro();

114
El mtodo ExtraerCaracteristicas recibe como parmetros a la imagen por
procesar, la posicin del ojo derecho y la posicin del ojo izquierdo. A travs de la
funcin Extract del algoritmo, las caractersticas del rostro son extradas. Este
mtodo devuelve un arreglo de bytes conteniendo tales caractersticas.
private byte[] ExtraerCaractersticas(CapturerEvents_ImageEvent e, Point ojoIzq,
Point ojoDer)
{
byte[] caractersticas = VL1.Extract(imagen, ojoIzq, ojoDer);
return caractersticas;
}
El mtodo CompararRostro se encarga de comparar las caractersticas
extradas por el algoritmo con cada una de las existentes en la base de datos, de
tal forma que arroja una identificacin positiva al ser mayor el resultado del mtodo
Verify que el umbral de comparacin. En caso de que ms de un registro en la
base de datos satisfaga tal requisito, es decir, que su valor Verify se encuentre
ms all del umbral de comparacin, se tomar como vlido a aqul que resulte
mayor.
private void CompararRostro()
{
for (int i = 0; i < numUsuarios; i++)
{
VL1.Verify(caractersticas, arrCarac[i]);
// predomina el valor mayor
}
}
La situacin antes planteada deriva de la posibilidad de encontrarse con
dos o ms rostros demasiado parecidos y cuyas caractersticas confundan al
sistema y ste concluya que ambos rostros pueden ser tal o cual individuo. Para
solventar este problema, se debe elevar el umbral de comparacin y as disminuir
la posibilidad de cometer un error. En otras palabras, el umbral de comparacin

115
nos servir para modificar la FAR y la FRR, as como la relacin que existe entre
ellas.
Una vez identificado el usuario frente al dispositivo de video, se ejecuta el
procedimiento almacenado PruebaChecking01 para crear un registro que
contenga la fecha y hora. Asimismo, se despliega una etiqueta informando al
usuario de los detalles del registro asentado en la base de datos.
SqlCommand cmd1 = new SqlCommand("dbo.PruebaChecking01");
Para llevar a cabo el procedimiento de almacenaje de un nuevo usuario en
la base de datos, primero se extraen las caractersticas del rostro, a travs del
mtodo ExtraerCaracteristicas, y se inicializa un arreglo que las contenga.
Posteriormente, se hace un llamado al mtodo GuardarUsuario.
private void GuardarUsuario()
{
SqlCommand cmdGuardarU= new SqlCommand ("PruebaCrearUsuario02");
SqlParameter paramNombre = new SqlParameter("namae", VarChar);
SqlParameter paramCarac = new SqlParameter("car", VarBinary);
SqlParameter paramID = new SqlParameter("identif", Int);
ActualizarArreglos();
}
Este ltimo mtodo se encarga de ejecutar el procedimiento almacenado
PruebaCrearUsuario02, pasndole como parmetros de entrada el nombre
dispuesto por el administrador en la clase CrearUsuarios y las caractersticas
extradas por el algoritmo y almacenadas en un arreglo de bytes. Tambin utiliza
un parmetro de salida: el identificador.
Cabe mencionar que tal identificador es proporcionado automticamente
por la base de datos y, en caso de que el nombre dispuesto por el administrador
se encuentre dentro de algn registro existente, el procedimiento almacenado
devolver el valor 0 (cero) que servir como control para la aplicacin. Asimismo,

116
desplegar una etiqueta informando al administrador del xito o fracaso en la
creacin del usuario.
Antes de finalizar, el mtodo GuardarUsuario llama al mtodo
ActualizarArreglos que se ocupa, como su nombre lo indica, de mantener
actualizados en RAM los arreglos que contienen la informacin de los usuarios de
la base de datos con fines de optimizacin, como se ha mencionado anteriormente.
public static void ActualizarArreglos()
{
SqlCommand cmdContar = new SqlCommand("PruebaContarRegistros01");
numUsuarios = (int)cmdContar.ExecuteScalar();
SqlCommand LlenarArr = new SqlCommand("PruebaLlenarArreglos01");
while (LlenarArr.Read())
{
// extraer y cargar datos
}
}
Para esto ejecuta el procedimiento almacenado PruebaContarRegistros01
que le devuelve el nmero de registros existentes en la base de datos y a
continuacin inicializa o reinicializa, segn sea el caso, tres arreglos que
contendrn los identificadores, nombres y caractersticas del rostro,
respectivamente. Estos arreglos se encuentran indexados para facilitar su acceso
y manipulacin.
A continuacin se ejecuta el procedimiento almacenado
PruebaLlenarArreglos01 que servir de base para transferir la informacin
existente en la base de datos a RAM. No requiere de ningn parmetro, tanto de
entrada como de salida.
Cabe mencionar que cada vez que la base de datos sufra alguna
modificacin ser necesario actualizar los arreglos en RAM para evitar que la
aplicacin trabaje con datos errneos u obsoletos.

117
En caso de que llegase a ocurrir alguna modificacin a los datos alojados
en RAM no prevista en el cdigo, causada por fallas en el equipo anfitrin o algn
virus informtico, tal circunstancia no ser bice para conservar la integridad de la
base de datos pues sta slo puede ser modificada a travs de los procedimientos
almacenados y la resultante diferencia temporal entre los datos en RAM y en la
base de datos causara a lo ms una excepcin en la aplicacin cuya solucin
implicara su reinicio, ms no conllevara a la prdida de informacin crtica para la
administracin de la aplicacin.
Volviendo a la clase PrincipalForm, tambin incluye una serie de eventos
para controlar el men y un mtodo para cerrar la forma que, para fines de la
presente investigacin carece de sentido describir porque, adems de guardar
notorias semejanzas, su sencillez permite a la presente investigacin no distraerse
de su principal tarea y slo mencionarlos, para enfocarse en otros particulares que
demandan mayor atencin.

Figura 27. Visualizacin de la clase PrincipalForm en tiempo de diseo.


118


Figura 28. Visualizacin de la clase PrincipalForm en tiempo de ejecucin.


119
6. ANLISIS DE RESULTADOS
Al momento de evaluar las pruebas realizadas con este prototipo fue
necesario considerar que existen diversas variables inherentes a la adquisicin de
video, que afectan notablemente el desempeo del algoritmo. Ejemplos de ello
son los problemas de escalas, iluminacin, poses y las expresiones de los rostros.
Para minimizar el impacto de estas variables, en esta investigacin se
llevaron a cabo las pruebas en condiciones de operacin controladas, tales como:
escalas iguales, iluminacin uniforme, pose frontal y expresin neutra en los
rostros de los individuos que participaron en las pruebas.
Es conveniente sealar que a pesar de existir bases de datos creadas para
probar el desempeo de algoritmos de reconocimiento de rostros tales como la
base de datos FERET (Facial Recognition Technology), compuestas de imgenes
fijas de rostros extranjeros, durante la presente investigacin se opt por realizar
las pruebas con video en tiempo real y con rostros mexicanos.
Como se ha mencionado anteriormente, el error siempre est presente al
ser inherente a los sistemas biomtricos, por lo que fue necesario determinar a
travs de un anlisis estadstico la probabilidad de que tales errores ocurran.
6.1. ANLISIS ESTADSTICO
La intencin de este anlisis es determinar la probabilidad de que el sistema
cometa errores, relacionados tanto con la FAR como con la FRR.
47

Para la muestra a analizar se seleccionaron cinco rostros de la base de
datos, que est alimentada con ms de cien rostros diferentes.

47
Vase el Glosario.

120
Esto responde a que por razones de disponibilidad de los voluntarios cuyos
rostros se encuentran almacenados en la base de datos, no fue posible hacer las
pruebas con todos ellos, sino que fue necesario acotar el nmero de individuos a
una muestra de menor tamao.
Dado que ninguno de los individuos pertenecientes a la muestra poseen
caractersticas que puedan facilitar o dificultar de manera significativa la operacin
del sistema, puede considerarse que la muestra es de naturaleza aleatoria, para
efectos de la prueba estadstica.
48

Como ya se dijo, la idea de llevar a cabo un anlisis estadstico se basa en
la importancia de poder determinar la probabilidad de que el sistema cometa
errores asociados a la FAR y la FRR, inherentes a todo sistema biomtrico, para
poder valorar la eficiencia del sistema y tambin poder determinar el alcance de
sus aplicaciones.
Antes de describir la prueba estadstica, es necesario hacer una breve
revisin a algunos aspectos tericos.
El conjunto de resultados posibles de un experimento se conoce como
espacio muestral.
49

En la mayora de los experimentos para el clculo de probabilidades, no es
tan interesante conocer un resultado aislado, sino saber si pertenece a
determinado conjunto de resultados o no.
Un evento o suceso es un subconjunto de un espacio muestral, es decir, un
conjunto de posibles resultados que se pueden dar en un experimento aleatorio.

48
Vase el Glosario.
49
Kreyszig, Erwin, Introductory Mathematical Statistics, Estados Unidos, Wiley International, 1. ed.,
1970, pp. 38-53.

121
Formalmente, definiendo a S como un espacio muestral, entonces un
evento es un subconjunto { } S E
n
= ,..., ,
2 1
, donde
n
,..., ,
2 1
son cada uno
de los elementos de una serie de posibles resultados.
Se dice que un evento E ocurre, si el resultado del experimento aleatorio
es un elemento de E .
Cabe mencionar que, dentro del concepto de evento, tambin podra
considerarse a todo el espacio muestral, como un caso especial.
El espacio muestral y los eventos de un experimento pueden representarse
grficamente mediante diagramas de Venn, de la siguiente manera:

Figura 29. Diagrama de Venn que representa un espacio muestral S, el evento E y su complemento E
c
.
Considerando que el conjunto de puntos dentro del rectngulo es el espacio
muestral S , entonces, el conjunto de puntos que se encuentran delimitados por la
curva cerrada representan un evento denominado E . El conjunto de todos los
elementos o resultados que no se encuentran en E se conoce como el
complemento de E y se denota como
c
E .
Un evento que no contiene elementos se denomina evento imposible o
evento vaco y se denota como .

122
Suponiendo que se lleva a cabo un experimento n veces y que en esta serie
de n intentos un evento E ocurre precisamente k veces, entonces a k se le
denomina frecuencia absoluta o, simplemente, frecuencia, mientras que a
n
k
se le
conoce como frecuencia relativa de E en esa serie. Esta frecuencia relativa ser
denotada por ) (
~
E f , por lo tanto:
n
k
E f = ) (
~

Dado que k no puede ser negativa y no puede exceder n, siempre existir la
siguiente relacin:
1 ) (
~
0 E f
O lo que es lo mismo, la frecuencia relativa de un evento es un nmero no
negativo que no puede exceder el valor de 1.
En aplicaciones de la teora de la probabilidad, frecuentemente sern de
mayor inters mltiples eventos relacionados, que uno solo.
Considerando un experimento aleatorio con su correspondiente espacio
muestral S y cualesquiera dos eventos A y B , entonces:
B A
significa que un evento ocurrir si y slo si A ocurre o B ocurre, o ambos A y B
ocurren. Al evento B A se le conoce como unin de los eventos A y B .
Cabe mencionar que B A consiste en todos los elementos de S
contenidos en A o B , o ambos. La notacin de B A coincide con la usada en la
Teora de Conjuntos, donde B A denota la unin de dos conjuntos.
As tambin,

123
B A
significa que un evento ocurrir si y slo si A y B ocurren simultneamente, es
decir, dentro del mismo desarrollo del experimento en cuestin. Al evento B A
se le conoce como la interseccin de los eventos A y B .
Es conveniente mencionar que B A consiste en todos los elementos del
espacio muestral S contenidos tanto en A como en B . De igual manera, la
notacin B A coincide con la Teora de Conjuntos, donde B A denota la
interseccin de dos conjuntos.
Si A y B no pueden ocurrir simultneamente, se les denomina eventos
mutuamente exclusivos o eventos desarticulados. En este caso, si y slo si
= B A , entonces A y B no tendrn puntos en comn.

Figura 30. Diagrama de Venn que representa la unin e interseccin de los conjuntos A y B.
Si todos los elementos de un evento A estn tambin contenidos en un
evento B , entonces a A se le conoce como subevento de B , y se representa de
dos formas:
a) B A
b) A B

124
Los conceptos de unin e interseccin pueden aplicarse a ms de dos
conjuntos, de la siguiente manera:
Si se considera que
n
A A,...,
1
son mltiples eventos en un espacio muestral
S , entonces el evento formado por todos los elementos contenidos en uno o ms
de los n eventos se le denomina unin de
n
A A ,...,
1
y se denota como:
n
A A A ...
2
, o de manera compacta
U
n
i
i
A
1 =

El evento formado por el total de los elementos contenidos en todos los n
eventos se le denomina interseccin de
n
A A,...,
1
y se expresa como:
n
A A A ...
2
, o de manera compacta
I
n
i
i
A
1 =

Si cuando un evento ocurre tiene como consecuencia que algn otro evento
no pueda ocurrir, es decir, si =
k j
A A para cualquier j y j k , entonces a tales
eventos se les denomina mutuamente excluyentes.
Ahora bien, la Teora de la Probabilidad tuvo sus orgenes en el estudio de
juegos de azar, por lo que es conveniente presentar desde el punto de vista
matemtico el concepto clsico de probabilidad, como fundamento de la
estadstica.
Si se tira un dado, saldr alguno de los seis nmeros que aparecen en cada
una de sus caras (1, 2, 3, 4, 5 6). Obviamente, estos eventos son mutuamente
excluyentes. Si el dado es exacto, es decir, si su forma es estrictamente cbica y
la masa del material de que est construido est distribuida de manera
homognea, se puede suponer que, por razones de simetra, cada uno de los seis

125
eventos tiene la misma posibilidad de ocurrir. Se dice entonces, que en este
experimento existen seis eventos equiprobables, o casos con la misma
probabilidad.
De manera similar, en diversos experimentos se podr hallar un
determinado nmero de casos de igual probabilidad, es decir, eventos
mutuamente excluyentes que tienen la misma posibilidad de ocurrir.
Si en un determinado juego de azar existen m casos de igual probabilidad,
el jugador puede dividirlos en dos clases: los casos en los que gana el juego y
aquellos en los que no gana. Si existen w casos en los que gana, entonces, por
obviedad, la fraccin
m
w
es una medida de las posibilidades que tiene de ganar el
juego.
De lo anterior se desprende la definicin clsica de probabilidad matemtica
de Laplace, descrita a continuacin:
La probabilidad ) ( A P de un evento A en un experimento aleatorio es:
m
w
A P = ) (
donde w es el nmero de casos en que el evento A ocurre y m es el nmero total
de casos de igual probabilidad en el experimento.
Se puede observar que la definicin de Laplace se da en trminos de casos
con igual probabilidad. De ah que tal definicin slo se puede aplicar a
experimentos en los cuales exista un nmero finito de casos de igual probabilidad.
Desafortunadamente, la mayora de los problemas prcticos no son de este tipo,
por lo que la definicin de Laplace no es aplicable. Por ejemplo, si fuera necesario

126
determinar la probabilidad de que un paciente fuera curado por algn tratamiento
mdico en especfico, o la probabilidad de que una mquina produjera artculos
defectuosos, no se lograra encontrar casos con igual probabilidad. Lo anterior se
debe a que existen casos donde no es posible considerar un espacio discreto sino
que resulta necesario considerar un espacio continuo.
As pues, la experiencia muestra que si se lleva a cabo varias veces un
experimento aleatorio, los eventos ocurren obedeciendo ciertas reglas. En
particular, la frecuencia relativa de un evento tiende a ser constante. Esto es, si se
realizan mltiples secuencias del experimento, las frecuencias relativas
correspondientes sern casi las mismas, por lo que se dice que tal experimento
presenta regularidad estadstica o estabilidad de frecuencias relativas.
La gran mayora de los experimentos aleatorios de importancia presentan
esta estabilidad como caracterstica esencial. As pues, se puede llegar a la
conclusin de que la frecuencia relativa de un evento E en la realizacin de un
gran nmero de veces de un experimento aleatorio es aproximadamente igual un
determinado nmero ) (E P .
Por esta razn, se considera la existencia de un nmero ) (E P al que se le
denomina probabilidad del evento E en un experimento aleatorio. Cabe
mencionar que este nmero es no es una propiedad absoluta de E , sin embargo
s lo relaciona con un determinado espacio muestral S , es decir, con un
experimento aleatorio especfico.

127
La aseveracin de que E tiene una probabilidad ) (E P significa entonces
que si se repite el experimento varias veces, prcticamente la frecuencia relativa
) (
~
E f ser aproximadamente igual a ) (E P .
Luego entonces, la probabilidad es la contraparte de la frecuencia relativa
emprica, por lo que sus propiedades bsicas deben ser determinadas conforme a
la frecuencia relativa. Tales propiedades quedan descritas mediante los siguientes
teoremas:
a) Si E es cualquier evento del espacio muestral S , entonces:
1 ) ( 0 E P
b) Al total del espacio muestral le corresponder:
1 ) ( = S P
c) Si A y B son eventos mutuamente excluyentes, entonces:
) ( ) ( ) ( B P A P B A P + =
Existen algunos otros teoremas que se derivan de los tres primeros, como
son:
d) Adicin de eventos mutuamente excluyentes: Si
n
E E ,...,
1
son
eventos mutuamente excluyentes, entonces:
) ( ... ) ( ) ( ) ... (
2 1 2 1 n n
E P E P E P E E E P + + + =
e) Adicin de eventos arbitrarios: Si A y B son eventos
cualesquiera dentro de un espacio muestral S , entonces:
) ( ) ( ) ( ) ( B A P B P A P B A P + =

128
f) Complemento: La probabilidad de que un evento E y su
complemento
c
E , dentro de un espacio muestral S , est dada
por:
) ( 1 ) (
c
E P E P =
Con frecuencia se requiere calcular la probabilidad de un evento B si se
sabe que un evento A ha ocurrido. Por ejemplo, cuando se lanzan dos dados
seleccionando solamente los tirajes cuya suma sea igual o mayor a siete (evento
A) y es necesario calcular la probabilidad de que el tiraje del segundo dado sea
igual a cuatro (evento B ). A esto se le conoce como probabilidad condicional de
B dado A y se denota como ) | ( A B P . En este caso, A sirve como un espacio
muestral reducido y la probabilidad resultante es la fraccin de ) ( A P que le
corresponde a B A . Esto es:
) (
) (
) | (
A P
B A P
A B P

= , siempre y cuando 0 ) ( A P
De manera similar, la probabilidad condicional de A dado B es:
) (
) (
) | (
B P
B A P
B A P

= , siempre y cuando 0 ) ( B P
Existe otro teorema que conviene recordar y es el que se refiere a la regla
de la multiplicacin:
Si A y B son eventos dentro de un espacio muestral S , si 0 ) ( > A P y si
0 ) ( > B P , entonces:
) | ( ) ( ) | ( ) ( ) ( B A P B P A B P A P B A P = =
A su vez, el teorema de la probabilidad total consiste en lo siguiente:

129
Sean
n
E E E ,..., ,
2 1
eventos mutuamente excluyentes cuya probabilidad de
cada uno es diferente de cero y sea Q un evento cualquiera del que se conocen
las probabilidades condicionales ) | ( ),..., | ( ), | (
2 1 n
E Q P E Q P E Q P , entonces la
probabilidad del evento Q est dada por la siguiente expresin:
) | ( ) ( ... ) | ( ) ( ) | ( ) ( ) (
2 2 1 1 n n
E Q P E P E Q P E P E Q P E P Q P + + + =
Una vez hecha la revisin terica, es conveniente mostrar a continuacin
los resultados obtenidos en la presente investigacin desde el punto de vista
estadstico, resumidos en la siguiente tabla:


Rostros
Resultados
Rostro
A
Rostro
B
Rostro
C
Rostro
D
Rostro
E
Totales
xito 46 45 43 44 49 227
FAR 6 10 8 4 7 35
FRR 8 5 9 12 4 38
Total 60 60 60 60 60 300

Figura 31. Tabla con los resultados obtenidos en el anlisis estadstico.
Las letras A, B, C, D y E representan los rostros de los voluntarios que
formaron parte de la prueba estadstica. A cada uno de los cinco voluntarios se le
aplicaron sesenta pruebas con el prototipo, lo que gener un total de trescientas
pruebas. Los resultados individuales fueron clasificados de forma que se pudieran
identificar los xitos de los fracasos y de estos ltimos se hicieron dos divisiones:
los errores asociados a la FAR y aquellos correspondientes a la FRR.

130
Los errores asociados a la FAR consistieron en aquellos donde el prototipo
confunda el rostro del voluntario con otro rostro de la base de datos. Para estas
pruebas, se decidi fijar un tiempo de tres segundos de espera para el
reconocimiento del rostro, y una vez transcurrido este tiempo se determinaba que
la prueba implicaba un error de tipo FRR.
Para visualizar mejor los resultados se construyeron las siguientes grficas:
0
5
10
15
20
25
30
35
40
45
50
P
r
u
e
b
a
s
Rostro A Rostro B Rostro C Rostro D Rostro E
xito
FAR
FRR

Figura 32. Grfica de barras con los resultados de las pruebas de cada uno de los rostros.


131
xito
FAR
FRR

Figura 33. Grfica circular con el total de los resultados de las pruebas.

Utilizando el teorema de la probabilidad total, se tiene que:
) | ( ) ( ) | ( ) ( ) | ( ) ( ) | ( ) ( ) | ( ) ( E FAR P E P D FAR P D P C FAR P C P B FAR P B P A FAR P A P FAR + + + + =

Lo anterior quiere decir que la probabilidad del prototipo de cometer errores
asociados a la FAR consiste en la suma de las probabilidades de cometer tales
errores, dados cada uno de los rostros de los voluntarios. Dicho de otra forma, si
se considera que las pruebas aplicadas a cada uno los rostros representan
eventos mutuamente excluyentes y tratndose del rostro A, por mencionar alguno,
se requiere conocer la probabilidad de que se cometan errores asociados a la FAR
(como un segundo evento) una vez que haya ocurrido A, entonces se calcular la
probabilidad de que aparezca el rostro A por la probabilidad de los errores
asociados a FAR dado ese rostro. Anlogamente se obtienen las probabilidades
para los rostros restantes, las cuales se sumarn como lo indica el teorema de la
probabilidad total, para obtener el resultado.

132
Puesto que se emplearon cinco rostros en las pruebas, la probabilidad de
cada uno es de
5
1
, mientras que la probabilidad de que se comentan errores tipo
FAR dado un determinado rostro se obtiene de los datos recopilados en las
sesenta pruebas realizadas a cada uno. Por ejemplo, a partir de los datos que
aparecen en la Tabla 1 se puede observar que, de las sesenta pruebas aplicadas
al rostro A, seis resultaron ser errores asociados a la FAR, por lo que la
probabilidad de cometer errores asociados a FAR dado el rostro A es igual a
60
6
.
As pues, la FAR se calcula de la siguiente manera:
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
=
60
7
5
1
60
4
5
1
60
8
5
1
60
10
5
1
60
6
5
1
FAR
|

\
| + + + +
|

\
|
=
60
7 4 8 10 6
5
1
FAR
60
7
60
35
5
1
=
|

\
|
|

\
|
= FAR
11667 . 0 = FAR
De manera anloga se calcula la FRR:
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
=
60
4
5
1
60
12
5
1
60
9
5
1
60
5
5
1
60
8
5
1
FRR
|

\
| + + + +
|

\
|
=
60
4 12 9 5 8
5
1
FRR
150
19
60
38
5
1
=
|

\
|
|

\
|
= FRR
12667 . 0 = FRR

133
Tambin se puede calcular la eficiencia del sistema en base a los xitos
que tuvo:
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
+
|

\
|
|

\
|
=
60
49
5
1
60
44
5
1
60
43
5
1
60
45
5
1
60
46
5
1
) (xito P
|

\
| + + + +
|

\
|
=
60
49 44 43 45 46
5
1
) (xito P
300
227
60
227
5
1
) ( =
|

\
|
|

\
|
= xito P
75667 . 0 ) ( = xito P
Como se observa en los resultados anteriores, la probabilidad de que el
sistema acepte a una persona por determinar errneamente que es otra es de
11.667%, mientras que la probabilidad de que el sistema rechace a una persona
por decretar que no tiene sus caractersticas en la base de datos es de 12.667%.
Por lo tanto, aunque inicialmente se pretenda igualar los valores de la FAR
con los de la FRR para lograr el punto de equilibrio, la presente investigacin
permiti llegar a la conclusin de que los errores atribuidos a la FAR deban ser
inferiores porque el impacto que producen en la seguridad del sistema es mucho
mayor.

134
7. CONCLUSIONES Y RECOMENDACIONES
En la presente investigacin se logr elaborar un prototipo que aborda el
problema de la identificacin, tomando como fundamento la biometra.
La biometra result ser la solucin ms adecuada a dicho problema porque
logra crear una relacin directa y confiable entre el individuo y su medio de
identificacin, dado que este ltimo lo constituyen una o varias caractersticas
fsicas o de comportamiento inherentes al individuo, y no alguna contrasea u
objeto que se pueda olvidar o extraviar. Por lo tanto, los sistemas biomtricos son
superiores a los tradicionales, que inexorablemente estn destinados a la
obsolescencia.
La caracterstica biomtrica seleccionada para esta investigacin fue el
rostro, debido a que supera algunas barreras que la huella digital posee como su
competidor ms cercano, tanto en viabilidad como en comercializacin. Ello se
debe a que las huellas digitales de algunas personas no pueden ser escaneadas,
ya sea por su edad, por el trabajo al que se dedican o porque hayan sido borradas
(de manera voluntaria o involuntaria) por alguna sustancia qumica.
El prototipo desarrollado en la presente investigacin consta de tres
bloques principales: el dispositivo de entrada, la base de datos y el software de
administracin.
El dispositivo de entrada lo constituye una cmara web que provee la
alimentacin de video al sistema. Esta cmara fue la segunda que se utiliz en el
presente trabajo pues la primera presentaba problemas de compatibilidad con el
sistema operativo Windows, lo que produca inestabilidad en el sistema.

135
La base de datos desarrollada en lenguaje Transact-SQL concentra toda la
informacin de los usuarios del sistema y contiene procedimientos almacenados
que proveen la operatividad suficiente para generar, mostrar, modificar y eliminar
los datos necesarios.
Por ltimo, el software de administracin se cre durante la presente
investigacin para gestionar los recursos de forma eficiente y llevar a cabo el
objetivo del prototipo, es decir, el software es el encargado de orquestar todos los
elementos del prototipo para obtener un resultado til. Este software tambin
controla el algoritmo de reconocimiento de rostros que se utiliz en la presente
investigacin. El software se dise para distribuir la carga de procesamiento de
manera uniforme, para lograr que se mantuviera respondiendo, es decir, para
evitar que se congelara la aplicacin. Esto se logr distribuyendo una parte de la
carga al servidor de la base de datos (haciendo que se ocupara de algunas tareas
por su cuenta) y la otra parte a la aplicacin central, incluyendo llamadas al
recolector de basura y bloqueos al flujo de video mientras se estuviera accediendo
a los mens o realizando operaciones en las que no se requera el video. Este
software se desarroll con la tecnologa .NET, especficamente en lenguaje C#,
que constituye una herramienta muy poderosa y verstil.
El algoritmo de reconocimiento de rostros que mejor se adapt a las
necesidades de la presente investigacin fue el Verilook por sus caractersticas
tcnicas, econmicas y de soporte, como son: tener la capacidad de comparar
hasta 100,000 rostros por segundo, proveer especificaciones precisas, ser un kit
de desarrollo de programas (SDK), tener un tamao de caractersticas biomtricas
reducido, ser asequible para el presente proyecto y contar con soporte en Mxico.

136
Cabe mencionar que inicialmente se utiliz la versin 1.1 del algoritmo Verilook
puesto que era la ms reciente. Sin embargo, con fines de actualizacin, el
prototipo que se desarroll para esta investigacin se reconstruy por completo y
de manera integral, cuando apareci la versin 2.0.
El principal obstculo que se encontr en la realizacin de las pruebas fue
poder reunir las caractersticas de ms de cien rostros en la base de datos y luego
conseguir hacerle sesenta pruebas a cada uno de los rostros de los cinco
voluntarios que se utilizaron como muestra. (Los resultados se pueden observar
en las figuras 31, 32 y 33, en el captulo 6, Anlisis de Resultados). Tambin fue
necesario controlar las variables que afectan el funcionamiento del algoritmo, tales
como la iluminacin y la posicin del rostro. Es conveniente sealar que a pesar
de existir bases de datos creadas para probar el desempeo de algoritmos de
reconocimiento de rostros tales como la base de datos FERET (Facial Recognition
Technology), compuestas de imgenes fijas de rostros extranjeros, durante la
presente investigacin se opt por realizar las pruebas con video en tiempo real y
con rostros mexicanos.
Dados los valores de FAR y FRR del prototipo que especficamente se
desarroll para este proyecto de investigacin, se infiere que este procedimiento
es una solucin viable en un entorno de baja seguridad.
Por el contrario, en escenarios donde la seguridad es crtica, el prototipo
desarrollado en este trabajo enfrentara dificultades en cuanto a la seguridad se
refiere, por tener valores de FAR relativamente elevados.
La razn por la que valores altos de la FAR resultan nocivos a los sistemas
biomtricos es que este tipo de error consiste en confundir a un individuo con otro,

137
es decir, darle acceso a alguien que no lo debera tener. Por otra parte, el efecto
que provocan valores altos de la FRR es negar el acceso a alguien con
autorizacin, lo que causa un menor impacto en cuanto a seguridad se refiere, a
pesar de las innecesarias molestias que ello evidentemente ocasiona.
En el caso del prototipo desarrollado en la presente investigacin se
advierte que los valores altos de la FAR estn supeditados principalmente a dos
factores. En primer trmino, a pesar de que la cmara de video cumple con los
requerimientos mnimos del algoritmo de reconocimiento de rostros, las
caractersticas tcnicas de dicha cmara se encuentran en los lmites inferiores de
tales requerimientos por lo que si se pretendiera disminuir los valores de la FAR se
debera sustituir la cmara por una de mayor resolucin. En segundo trmino,
dada la sensibilidad del algoritmo a la iluminacin, poses y expresiones del rostro,
para obtener valores menores de la FAR sera conveniente controlar de manera
ms estricta las variaciones en estos aspectos.
A manera de conclusin, del desarrollo del trabajo se puede deducir que
mientras mayor seguridad se requiera, es conveniente que el sistema biomtrico
presente valores de FAR cercanos a cero y siempre menores a los valores de
FRR.
Se recomienda continuar con investigaciones posteriores para desarrollar
soluciones para control de acceso, identificacin y control de asistencia y
puntualidad basadas en reconocimiento de rostros. En trminos generales, las
investigaciones futuras que se realicen en el campo de la biometra resultarn
seguramente de mucha utilidad, por la confiabilidad que se obtiene con los
resultados. Cabe mencionar que ha sido conveniente utilizar la tecnologa .NET

138
para desarrollos como el que se presenta en esta investigacin, por lo que sera
conveniente continuar haciendo uso de esta poderosa herramienta.
Tambin es recomendable que en el futuro se continen explorando los
beneficios que los sistemas biomtricos traen consigo, en especial los sistemas
multibiomtricos, pues si las soluciones basadas en una sola caracterstica
biomtrica resultan confiables, an ms deben serlo aquellas que incluyen dos o
ms caractersticas biomtricas. De igual forma, se pueden desarrollar soluciones
muy verstiles y con costos reducidos si se utilizan conjuntamente elementos tanto
de sistemas biomtricos como de sistemas tradicionales, resultando en una
solucin hbrida.
As pues, queda an mucha investigacin por realizar acerca de la
biometra, que resulta ser un campo en pleno y constante desarrollo.
Para ilustrar la importancia que en el futuro pueda tener la investigacin en
este campo, se puede mencionar que para los juegos olmpicos de China en 2008,
el Comit Experto de Seguridad Nacional de ese pas est desarrollando un
sistema de identificacin antiterrorista con 1.3 millones de rostros registrados, en
cuya base de datos se incluirn tanto ciudadanos chinos como extranjeros.
50

Asimismo, durante la preparacin de los juegos olmpicos de Inglaterra en
el 2012, los cerca de 100,000 trabajadores dedicados a la implementacin de la
infraestructura sern incluidos en un sistema multibiomtrico, en el que

50
Agencias, Juegos Olmpicos: Preparan sistema antiterrorista, Mxico, Publimetro, 13 de abril del
2007, p. 10.

139
diariamente tendrn que cruzar filtros de seguridad equipados con reconocimiento
de rostro y de la palma de la mano.
51



51
OConnor, A. y Sherman, J., Biometrics screening for Olympics workers, Inglaterra, The Times, 5
de marzo del 2008, p. 23.

140
8. GLOSARIO
Algoritmo: Secuencia de instrucciones que le indica a un sistema cmo resolver
un problema en particular. Un algoritmo consta de un nmero finito de pasos a
seguir.
Aplicacin: Programa informtico que permite a un usuario utilizar una
computadora con un fin especfico. Las aplicaciones son parte del software de una
computadora, y suelen ejecutarse sobre el sistema operativo. Una aplicacin de
software suele tener un nico objetivo: navegar en Internet, revisar el correo,
explorar el disco duro, editar textos, jugar, etc. En general, una aplicacin es un
programa compilado (aunque a veces interpretado), escrito en cualquier lenguaje
de programacin.
Autenticacin: Accin y efecto de comprobar que algo o alguien es realmente lo
que dice o aparenta. Dentro de un sistema biomtrico, la identidad y legitimidad de
una persona es confirmada a travs de la identificacin o verificacin. Cabe
mencionar que autenticar y autentificar son sinnimos, segn lo que establece la
Real Academia Espaola.
Biblioteca: En informtica, una biblioteca es una coleccin o conjunto de
subprogramas usados para desarrollar software. En general, las bibliotecas no son
ejecutables, pero s pueden ser usadas por ejecutables que las necesitan para
poder funcionar correctamente. Casi todos los sistemas operativos proveen
bibliotecas que implementan la mayora de los servicios del sistema. En algunos
textos, se encuentra tambin como librera pero este vocablo es una traduccin
incorrecta de la palabra library del idioma ingls, que significa biblioteca.

141
Biometra: Mtodos de identificacin y autenticacin de los seres humanos a
travs de caractersticas fisiolgicas y de comportamiento. El trmino biometra se
deriva de los vocablos griegos bios (vida) y metron (medida). En consecuencia,
biometra es la ciencia de medir las caractersticas fisiolgicas. En el mundo de la
tecnologa de la informacin, el trmino se refiere a los mtodos automatizados de
identificacin o verificacin de la identidad de un individuo basados en criterios
fisiolgicos o de comportamiento tpico.
Caractersticas biomtricas: Se dividen en caractersticas activas de
comportamiento tpico y caractersticas pasivas fisiolgicas. Las caractersticas
activas incluyen a la dinmica de firma, huella de voz, dinmica de teclado y
movimiento, por mencionar algunas. Las caractersticas pasivas incluyen la huella
digital, reconocimiento de rostros, patrones de iris, geometra de la mano, patrones
de retina y estructura de las venas, entre otras.
Chip: Vocablo que se suele utilizar en idioma ingls, que significa pequeo circuito
integrado que realiza numerosas funciones en ordenadores y dispositivos
electrnicos.
COM: Siglas que significan Component Object Model para describir la tecnologa
que permite a los componentes de software comunicarse entre s. COM es usado
por los programadores para crear cdigo reutilizable, as como para unir
componentes para formar una aplicacin y sacar provecho de los servicios de
Windows.
Controlador: Software que le permite a una computadora operar determinado
dispositivo de entrada y/o salida.

142
Dispositivo biomtrico: Elemento de un sistema biomtrico que contiene un
sensor capaz de capturar una muestra biomtrica de un individuo.
Distancia Hamming: Es el nmero de smbolos diferentes en posiciones
correspondientes de dos cadenas de igual longitud, es decir, el nmero de
sustituciones requeridas para convertir una cadena en la otra. Por ejemplo, la
distancia Hamming entre 1001101 y 1011001 es 2, pues se tendra que sustituir el
1 de la tercera posicin (de derecha a izquierda) por un cero (o viceversa), as
como el 0 de la quinta posicin.
Distancia interocular: Es la distancia que existe entre los centros de rotacin de
los globos oculares de un individuo o aquella que existe entre los lentes de
instrumentos pticos.
Encriptar: Es una manera de codificar la informacin para evitar que un tercero
pueda accederla en caso de ser interceptada mientras se encuentra viajando por
una o ms redes.
Estadstica: Rama de la matemtica que utiliza grandes conjuntos de datos
numricos para obtener inferencias basadas en el clculo de probabilidades.
FAR (False Acceptance Rate): Tambin denominada tasa de aceptacin falsa es
el valor estadstico utilizado para medir el rendimiento biomtrico durante las
tareas de verificacin e identificacin. Indica el porcentaje de veces que un
sistema produce una falsa aceptacin, lo cual ocurre cuando un individuo es
errneamente vinculado con la informacin biomtrica existente de otra persona.
Por ejemplo: Carlos declara ser Javier, y el sistema acepta esta declaracin.

143
Frecuencia espacial: Se define como el nmero de ciclos de cambio del valor
almacenado en un pixel por unidad de distancia (p. ej. 10 ciclos/mm), en
determinada direccin de una imagen.
FRR (False Rejection Rate): Tambin denominada tasa de rechazo falso es el
valor estadstico utilizado para medir el rendimiento biomtrico durante las tareas
de verificacin e identificacin. Indica el porcentaje de veces que el sistema
produce un falso rechazo. Ocurre un falso rechazo cuando un individuo no es
vinculado con sus propias caractersticas biomtricas. Por ejemplo: Carlos declara
ser Carlos, pero el sistema incorrectamente rechaza dicha declaracin.
Gabor wavelets: Mtodo inventado en 1946 por un cientfico britnico-hngaro
para descomponer las seales en paquetes de tiempo-frecuencia. A partir de un
campo visual bidimensional, la transformada de Gabor genera un campo
tetradimensional: dos dimensiones son espaciales y las otras dos representan la
frecuencia espacial y la orientacin.
Hardware: Se refiere a los componentes fsicos o dispositivos con que cuenta un
equipo de cmputo.
HASP: Siglas que significan Hardware Against Software Piracy que es un sistema
de proteccin y licenciamiento basado en hardware. Inicialmente los HASPs se
conectaban al puerto paralelo o al puerto serie, pero las versiones ms modernas
de HASP se conectan directamente a un puerto USB. Cuando un software
protegido por el HASP es ejecutado, ste verifica que el dispositivo se encuentre
conectado al equipo, de ser as, el software recibe una licencia y la aplicacin se
carga normalmente. En caso de que el HASP no sea detectado o no se encuentre

144
instalado, la ejecucin de la aplicacin ser cancelada. Al HASP se le conoce
comnmente como centinela.
Identificacin: Accin y efecto de reconocer que una persona o cosa es la misma
que se supone o se busca. En los sistemas biomtricos, se utiliza como un medio
para establecer la identidad de un individuo. Durante la identificacin, el individuo
presenta sus caractersticas biomtricas y, despus, se buscan tales
caractersticas dentro de un conjunto de datos de referencia hasta encontrar la
que ms se asemeje. De aqu que a este proceso tambin se le conozca como
una comparacin de 1:N (uno a muchos).
Mtodos biomtricos: Mtodos que reconocen individuos basndose en sus
caractersticas biomtricas.
Normalizacin fotomtrica: Consiste en igualar los niveles de brillo de imgenes
que han sido tomadas bajo diferentes condiciones de iluminacin.
Normalizar: Consiste en adaptar el rango de variacin de grises entre crestas y
valles de una imagen a un rango deseado para facilitar el procesado de las
siguientes etapas.
Pixel: Abreviatura de las palabras en ingls picture element (elemento de imagen)
que es el elemento ms pequeo de una imagen al que se puede aplicar
individualmente un color o una intensidad.
Probabilidad: En un proceso aleatorio, razn entre el nmero de casos favorables
y el nmero de casos posibles.
Procedimiento almacenado: En programacin, un tipo de subrutina o porcin de
cdigo dentro de un programa ms grande, que realiza una tarea especfica y es
relativamente independiente del resto del cdigo. La mayora de los lenguajes de

145
programacin incluyen soporte para la creacin de procedimientos almacenados y
otros tipos de subrutinas. Los procedimientos almacenados suelen usarse para
reducir la duplicacin de cdigos en un programa, para reutilizar los cdigos,
descomponer problemas complejos en piezas simples (mejorando la posibilidad de
mantenimiento y la facilidad de extensin del cdigo), mejorar la lectura del cdigo
de un programa, ocultar o regular parte de un programa, entre otros. Los
procedimientos almacenados se ejecutan slo cuando son llamados y pueden
recibir parmetros, aunque no forzosamente requieren devolver un valor.
Prototipo: Modelo, primer ejemplar construido industrialmente de una mquina,
aparato, vehculo, etc., y destinado a experimentar en funcionamiento sus
cualidades y caractersticas, con vistas a la posterior construccin en serie y
comercializacin.
Reconocimiento de rostros: Sistema biomtrico fsico basado en el anlisis de
las caractersticas faciales.
Software: Se refiere a los componentes lgicos o programas con que cuenta un
equipo de cmputo.
Transformacin afn: Es una transformacin geomtrica de seis parmetros que
consiste en un escalamiento seguido de una rotacin, una traslacin y una
correccin de la torsin.
UML: Siglas que significan Unified Modeling Language que es el lenguaje de
modelado de sistemas de software ms conocido y utilizado en la actualidad y
consiste en un lenguaje grfico para visualizar, especificar, construir y documentar
un sistema de software.

146
Verificacin: Accin de probar que algo es verdadero o exacto. En el contexto de
los sistemas biomtricos, se refiere al proceso que ocurre cuando un usuario
ingresa un dato que le haga referencia (nmero de registro o nombre de usuario) y
a travs de procesos biomtricos el sistema determina si se trata o no del
individuo de referencia.

147
9. BIBLIOGRAFA
Fuentes citadas:
El Pequeo Larousse Ilustrado, Mxico, Ed. Larousse, 10. ed., 2004.
Ruiz, Diego, C#, Argentina, MP Ediciones, Coleccin Manuales USERS, 1.
ed., 2005.
Kreyszig, Erwin, Introductory Mathematical Statistics, Estados Unidos, Wiley
International, 1. ed., 1970.
Microsoft Corporation, Encarta Premium, [DVD], 2006.
Real Academia Espaola, Diccionario de la Lengua Espaola, 22. ed.,
[http://www.rae.es/], 2001.
Colaboradores de Wikipedia, La enciclopedia libre, [http://es.wikipedia.org/],
2008.
Wikipedia contributors, The Free Enciclopedia, [http://en.wikipedia.org/],
2008.
Travellog, History of Locks and Keys,
[http://www.queensnewyork.com/history/locks.htm], 2004.
Dr. George Bebis y Dr. Ali Erol, Conferencia presentada por Milind Zirpe, A
Biometrics Individuality, Department of Computer Science & Engineering of
the University of Nevada,
[http://www.cse.unr.edu/~bebis/CS790Q/Lect/Chapter_14.ppt], otoo de
2005.
Advameg, Inc., Internet RFC/STD/FYI/BCP Archives,
[http://www.faqs.org/rfcs/rfc2289.html], 2004.

148
Homini, Biometra, [http://www.homini.com/new_page_1.htm], 2004.
MapXL Inc. [contactus@mapsofworld], Maps of World,
[http://www.mapsofworld.com/thematic-maps/world-illiteracy-map.htm], 2007.
Information Technology Laboratory of the National Institute of Standards
and Technology, Biometrics Standards,
[http://www.itl.nist.gov/div893/biometrics/standards.html], 2007.
Neurotechnologija, [http://www.neurotechnologija.com], 2007.
rea de Lenguajes y Sistemas Informticos de la Universidad de Burgos,
Historia de Java, [http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_2.htm],
octubre de 1999.
Departamento de Informtica de la Escuela Universitaria de Tecnologa
Tcnica en Informtica de Oviedo, C#,
[http://petra.euitio.uniovi.es/asignaturas/historia/trabajos/c-almo/], 2007.
Agencias, Juegos Olmpicos: Preparan sistema antiterrorista, Mxico,
Publimetro, 13 de abril del 2007.
OConnor, A. y Sherman, J., Biometrics screening for Olympics workers,
Inglaterra, The Times, 5 de marzo del 2008.

149
Fuentes del Glosario:
NEC & AV-Mediamap, Technical Glossary,
[http://www.de.nec.de/glossar/glossar.php?lang=ENG&alph=f&kword=879],
2007.
Alegsa, Diccionario Informtico, [http://www.alegsa.com.ar/], 2008.
About, Inc. & U.S. Department of Defense, Interocular distance,
[http://usmilitary.about.com/od/glossarytermsi/g/i3238.htm], 2008.
Short, Nicholas, National Aeronautics and Space Administration, Spatial
Filtering, [http://rst.gsfc.nasa.gov/Sect1/Sect1_13.html], 2007.
U.S. Geological Survey, USGS MIPS Glossary,
[http://terraweb.wr.usgs.gov/software/mips/link/glossary.html], 2002.
McLennan, Bruce, Department of Computer Science of the University of
Tennessee, Gabor Wavelets, [http://www.cs.utk.edu/~mclennan/anon-
ftp/FCNAI-summary-TR/node5.html], 1998.
National Academy of Sciences, Wavelets,
[http://www7.nationalacademies.org/spanishbeyonddiscovery/mat_008276-
06.html], 2008.
Departamento de Ingeniera Audiovisual y Comunicaciones de la
Universidad Politcnica de Madrid, Huella,
[http://www.atvs.diac.upm.es/huella/texto_3.htm], 2007.
USGS, Astrogeology Research Program, Production of Digital Image
Models with Integrated Software for Imagers and Spectrometers,
[http://isis.astrogeology.usgs.gov/Isis2/isis-bin/intro_digi_mosaic.cgi], 2007.

150
Ortiz, Gabriel, Transformacin afn,
[http://www.gabrielortiz.com/index.asp?Info=013], 2008.
Subgerencia de Informacin Geogrfica del Agua de la Comisin Nacional
del Agua, Diccionario de Sistemas de Informacin Geogrfica,
[http://siga.cna.gob.mx/], 2008.
Ministerio del Interior, Glosario de biometra,
[http://www.biometria.gov.ar/referencia/ref_glossary_f.php], 2007.


151
Otras fuentes consultadas:
Cramr, Harald, Mtodos Matemticos de Estadstica, Madrid, Aguilar, S.A.
de Ediciones, 2 ed., 1960.
Lipschutz, Seymour, Probabilidad, Mxico, McGraw-Hill, 1 ed., 1991.
Spiegel, Murray R, Theory and Problems of Statistics, Nueva York,
McGraw-Hill, 1 ed., 1961.
Infante Gil, Said y Zrate de Lara, Guillermo P., Mtodos Estadsticos: un
enfoque interdisciplinario, Mxico, Editorial Trillas, 2 ed., 1997.
Siegel, Sydney y Castellan, John N., Estadstica No Paramtrica aplicada a
las ciencias de la conducta, Mxico, Editorial Trillas, 4 ed., 1995.
Gutirrez Pulido, Humberto y De la Vara Salazar, Romn, Anlisis y Diseo
de Experimentos, Mxico, McGraw-Hill, 1 ed., 2004.
Lipschutz, Seymour, Theory and Problems of Set Theory and Related
Topics, San Francisco, McGraw-Hill, 1 ed., 1964.
Hernndez Sampieri, Roberto, Fernndez Collado, Carlos y Baptista Lucio,
Pilar, Metodologa de la Investigacin, Mxico, McGraw-Hill, 3 ed., 2003.
Larman, Craig, UML y Patrones: una introduccin al anlisis y diseo
orientado a objetos y al proceso unificado, Madrid, Pearson Educacin, 2
ed., 2003.
Microsoft Corporation, MSDN Library, [http://www.msdn.com], 2008.
Rodrguez Gmez-Stern, Miguel y Besteiro Gorostizaga, Marco Antonio,
Desarrollo de aplicaciones .NET con Visual C#, Madrid, McGraw-Hill, 1 ed.,
2002.

152
MacDonald, Matthew, Pro .NET 2.0 Windows Forms and Custom Controls
in C#, New York, Apress, 1 ed., 2006.
Joyanes Aguilar, Luis y Fernndez Azuela, Matilde, C# Manual de
Programacin, Madrid, McGraw-Hill, 1 ed., 2002.
Schildt, Herbert, C# Manual de Referencia, Mxico, McGraw-Hill, 1 ed.,
2003.
Noyes, Brian, Data Binding with Windows Forms 2.0: Programming Smart
Client Data Applications with .NET, Massachussetts, Addison Wesley, 1 ed.,
2006.
Jones, Allen y Freeman, Adam, C# para desarrolladores de Java, Madrid,
McGraw-Hill, 1 ed., 2003.
Ceballos Sierra, Francisco Javier, El lenguaje de programacin C#, Mxico,
Alfaomega Grupo Editor, 1 ed., 2002.
Pajares Martinsanz, Gonzalo y De la Cruz Garca, Jess M., Visin por
Computador: Imgenes digitales y aplicaciones, Mxico, Alfaomega Grupo
Editor, 1 ed., 2002.
De la Escalera Hueso, Arturo, Visin por Computador: Fundamentos y
Mtodos, Madrid, Pearson Educacin, 1 ed., 2001.


153
10. APNDICE
10.1. NDICE DE FIGURAS
Objeto Pgina
Figura 1. Diagrama de las fases del proceso desarrollado. 11
Figura 2. Comportamiento relativo de la FAR y la FRR. 24
Figura 3. Diagrama a bloques del funcionamiento del sistema. 38
Figura 4. Tabla de caractersticas de los algoritmos. 40
Figura 5. Deteccin de rostros del Verilook. 46
Figura 6. Puntos ms significativos del rostro humano. 47
Figura 7. Tabla de cmaras. 62
Figura 8. Diagrama UML de la clase InfoMenu. 79
Figura 9. Visualizacin de la clase InfoMenu en tiempo de ejecucin. 80
Figura 10. Diagrama UML de la clase InfoMenu2. 81
Figura 11. Visualizacin de la clase InfoMenu2 en tiempo de ejecucin. 81
Figura 12. Diagrama UML de la clase Parameters. 82
Figura 13. Visualizacin de la clase Parameters en tiempo de diseo. 85
Figura 14. Diagrama UML de la clase Reportes. 86
Figura 15. Visualizacin de la clase Reportes en tiempo de ejecucin. 88
Figura 16. Diagrama UML de la clase ListaUsuarios. 89
Figura 17. Visualizacin de la clase ListaUsuarios en tiempo de ejecucin. 90
Figura 18. Diagrama UML de la clase ModificarUsuarios. 91
Figura 19. Visualizacin de la clase ModificarUsuarios en tiempo de ejecucin. 94
Figura 20. Diagrama UML de la clase EliminarUsuarios. 95
Figura 21. Visualizacin de la clase EliminarUsuarios en tiempo de ejecucin. 97
Figura 22. Diagrama UML de la clase CrearUsuarios. 98
Figura 23. Visualizacin de la clase CrearUsuarios en tiempo de diseo. 100
Figura 24. Diagrama UML de la clase VideoControl. 101
Figura 25. Diagrama UML de la clase Program. 105
Figura 26. Diagrama UML de la clase PrincipalForm. 106
Figura 27. Visualizacin de la clase PrincipalForm en tiempo de diseo. 117
Figura 28. Visualizacin de la clase PrincipalForm en tiempo de ejecucin. 118
Figura 29. Diagrama de Venn que representa un espacio muestral S, el evento E y su complemento Ec. 121
Figura 30. Diagrama de Venn que representa la unin e interseccin de los conjuntos A y B. 123
Figura 31. Tabla con los resultados obtenidos en el anlisis estadstico. 129
Figura 32. Grfica de barras con los resultados de las pruebas de cada uno de los rostros. 130
Figura 33. Grfica circular con el total de los resultados de las pruebas. 131

Potrebbero piacerti anche