Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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