Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SISTEMAS Y AUTOMTICA
ESCUELA TCNICA SUPERIOR DE INGENIEROS
UNIVERSIDAD DE SEVILLA
RECONOCIMIENTO FACIAL
MEDIANTE VISIN
ARTIFICIAL
INGENIERA DE TELECOMUNICACIN
Autor:
Csar Reyes Lpez
Tutor:
Dr. Eduardo Fernndez Camacho
Sevilla, Mayo de 2005
Pgina 1
NDICE
1. MOTIVACIN Y OBJETIVOS.................................................... 7
1.1.
INTRODUCCIN ......................................................................................................... 7
1.2.
OBJETIVOS ................................................................................................................. 8
1.3.
ESTRUCTURA........................................................................................................... 11
2.2.
2.2.1.
INTRODUCCIN................................................................................................... 12
2.2.2.
2.2.3.
ALGORITMOS....................................................................................................... 14
2.3.
2.2.3.1.
Correlacin y FFT......................................................................................................16
2.2.3.2.
PCA y Eigenfaces......................................................................................................18
2.2.3.3.
2.2.3.4.
2.2.3.5.
2.3.1.
2.3.2.
RECONOCIMIENTO FACIAL................................................................................ 26
2.3.2.1.
2.3.2.2.
PCA Y EIGENFACES................................................................................................29
2.3.3.
ESTRUCTURA........................................................................................................... 40
3.2.
ENTORNO DE TRABAJO.......................................................................................... 41
3.2.1.
FUENTE DE ILUMINACIN.................................................................................. 41
3.2.1.1.
Pgina 2
3.2.1.3.
3.2.2.
ENTORNO ESTRUCTURADO.............................................................................. 42
3.2.3.
3.2.4.
3.3.
3.3.1.
OPENCV................................................................................................................ 45
3.3.2.
4. IMPLEMENTACIN................................................................. 48
4.1.
ESTRUCTURA........................................................................................................... 48
4.2.
DISEO ..................................................................................................................... 49
4.2.1.
4.2.2.
4.2.2.1.
4.2.2.2.
4.2.2.3.
RECONOCIMIENTO .................................................................................................56
4.2.2.4.
SALIR ........................................................................................................................56
4.2.3.
4.2.3.1.
4.2.3.2.
4.2.3.2.1.
4.2.3.2.2.
4.2.3.2.3.
4.2.3.2.4.
4.2.3.2.5.
4.2.3.2.6.
4.2.3.2.7.
4.2.3.2.8.
4.2.3.2.9.
4.2.3.2.10.
4.2.3.2.11.
4.2.3.2.12.
4.2.3.2.13.
4.2.3.2.14.
4.2.3.2.15.
4.2.3.2.16.
4.2.3.2.17.
4.2.3.2.18.
4.2.3.2.19.
4.2.3.2.20.
4.2.3.2.21.
4.2.3.2.22.
cvLoadImage ........................................................................................................56
cvSaveImage ........................................................................................................56
cvNamedWindow..................................................................................................57
cvShowImage .......................................................................................................57
load_object_detector ............................................................................................57
detect_and_draw_object.......................................................................................57
cvDestroyAllWindows ...........................................................................................58
cvCalcEigenObjects..............................................................................................58
cvEigenProjection .................................................................................................58
cvEigenDecomposite ...........................................................................................59
cvReleaseImage ..................................................................................................59
cvReleaseCapture ...............................................................................................59
cvCreateMemStorage ..........................................................................................60
cvReleaseMemStorage........................................................................................60
cvPyrDown...........................................................................................................60
cvHaarDetectObjects ...........................................................................................60
cvGetSeqElem .....................................................................................................61
cvRectangle .........................................................................................................61
cvResize ..............................................................................................................61
cvCaptureFromCAM ............................................................................................62
cvGrabFrame .......................................................................................................62
cvRetrieveFrame..................................................................................................62
Pgina 3
cvCopy.................................................................................................................62
cvFlip ...................................................................................................................63
cvCvtColor ...........................................................................................................63
cvWaitkey ............................................................................................................63
4.2.3.3.1.
4.2.3.3.2.
4.2.3.3.3.
4.2.3.3.4.
4.2.3.3.5.
4.2.3.3.6.
4.2.3.3.7.
4.2.3.3.8.
camara_y_foto ......................................................................................................64
almacena ..............................................................................................................64
guarda_foto...........................................................................................................64
compara................................................................................................................65
realce_mono .........................................................................................................66
parecido ................................................................................................................66
extract_and_norm .................................................................................................66
guardian................................................................................................................67
4.3.
FUNCIONAMIENTO .................................................................................................. 67
4.4.
4.4.1.
4.5.
RESULTADOS........................................................................................................... 89
ESTRUCTURA........................................................................................................... 91
5.2.
CONCLUSIONES ...................................................................................................... 91
5.3.
6. BIBLIOGRAFA........................................................................ 97
7. ANEXOS ................................................................................ 101
7.1.
7.2.
OBSERVACIONES.................................................................................................. 104
7.3.
7.4.
Pgina 4
NDICE DE ILUSTRACIONES
Ilustracin 1: (a) y (c) imgenes faciales originales, (b) y (d) imgenes binarias de bordes. __ 19
Ilustracin 2: Ejemplos de redes neuronales ______________________________________ 22
Ilustracin 3: Ejemplo de Red Neuronal para Reconocimiento Facial ___________________ 23
Ilustracin 4: Ejemplo de Reconocimiento Facial por plantillas ________________________ 24
Ilustracin 5: Ejemplo de correlacin de caras. Caras y FFT __________________________ 28
Ilustracin 6: Ejemplo de correlacin de frontales de coches y camiones ________________ 29
Ilustracin 7: Ejemplo de base de datos de caras (Fuente FERET) _____________________ 33
Ilustracin 8: Eigenfaces de las caras anteriores ___________________________________ 33
Ilustracin 9: Cara original e histograma__________________________________________ 37
Ilustracin 10: Funcin de Distribucin ___________________________________________ 38
Ilustracin 11: Cara realzada e histograma _______________________________________ 38
Ilustracin 12: Diagrama de flujo del programa principal _____________________________ 50
Ilustracin 13: Diagrama de flujo de la funcin COMPARA ___________________________ 51
Ilustracin 14: Imgenes de la base de datos______________________________________ 53
Ilustracin 15: Interfaz Grfica. Pantalla inicial _____________________________________ 54
Ilustracin 16: Pantalla inicial __________________________________________________ 68
Ilustracin 17: Nmero de opcin introducido incorrecto _____________________________ 69
Ilustracin 18: Opcin 0, Nuevo Usuario__________________________________________ 69
Ilustracin 19: Introduccin del nombre del nuevo usuario Cesar Demo ______________ 70
Ilustracin 20: Cara de usuario Cesar Demo detectada ___________________________ 70
Ilustracin 21: Fichero caras.txt con el nuevo usuario almacenado ____________________ 71
Ilustracin 22: Captura de una fotografa de usuario con mala posicin _________________ 72
Ilustracin 23: Error, No se ha encontrado una cara _______________________________ 72
Ilustracin 24: Opcin 1, Reconocimiento_________________________________________ 73
Ilustracin 25: Usuario Reconocido. Acceso Permitido_______________________________ 74
Ilustracin 26: Caras de usuario actual y parecido (Reconocimiento correcto) ____________ 74
Ilustracin 27: Usuario No Reconocido. Acceso Denegado ___________________________ 75
Ilustracin 28: Valores de las distancias entre caras ________________________________ 77
Ilustracin 29: Valores inversos de las distancias entre caras _________________________ 80
Ilustracin 30: Ejemplo de reconocimiento fallido. No cumple 2 condicin _______________ 81
Ilustracin 31: Cumplimiento de la 3 condicin de reconocimiento _____________________ 82
Ilustracin 32: Fallo en el cumplimiento de la 1 y 2 condicin de reconocimiento _________ 83
Ilustracin 33: Ejemplo. Imgenes de la base de datos ______________________________ 84
Ilustracin 34: Imgenes originales y realzadas en escala de grises ____________________ 86
Ilustracin 35: Eigenfaces _____________________________________________________ 88
Ilustracin 36: Imagen del usuario a reconocer. Original y realzada ____________________ 88
Ilustracin 37: Tabla de resultados ______________________________________________ 89
Ilustracin 38: Icono de Instalacin de la librera OpenCV ___________________________ 102
Ilustracin 39: Face_Training.xml ______________________________________________ 103
Ilustracin 40: Ejecutar programa de Reconocimiento Facial _________________________ 103
Pgina 5
Pgina 6
1. MOTIVACIN Y OBJETIVOS
1.1. INTRODUCCIN
En los ltimos aos, el desarrollo de nuevo hardware y software
informtico para sistemas de seguridad ha experimentado un gran impulso, tal
es el caso de los sistemas de reconocimiento por huella dactilar, voz, iris y
facial. Entre estos, destaca por perfilarse como el ms prometedor el
reconocimiento facial.
La identificacin de caractersticas faciales ha recibido un fuerte impulso
gracias al avance en la tecnologa de video multimedia propicindose as un
aumento de cmaras en los lugares de trabajo y en el hogar con un reducido
coste. El reconocimiento facial se puede aplicar en el control de accesos a
edificios pblicos y privados, cajeros automticos, laboratorios de investigacin
y tambin como clave secreta de acceso para el uso de ordenadores
personales o terminales mviles de ltima generacin.
Podran utilizarse estos sistemas para tener bases de datos con las
personas que entran y salen de lugares emblemticos, como ya se ha hecho
Csar Reyes Lpez
Pgina 7
en
una
base
de
datos.
Estos
procesos,
deteccin
1.2. OBJETIVOS
El objetivo de este proyecto es la creacin de un software de
reconocimiento facial que utilice como medio de captacin de imgenes una
cmara web.
Se ha considerado este proyecto como parte de una instalacin
domtica, lo que ha conllevado una serie de restricciones e imposiciones
respecto a sus caractersticas.
De las muchas aplicaciones que puede ofrecer una vivienda inteligente,
una de ellas es la seguridad. Un sistema de reconocimiento facial sera parte
importante de est, permitiendo o denegando el acceso a aquellas personas
ajenas a la vivienda o enclave residencial que no pertenecieran a una base de
datos propia o no tuvieran el permiso requerido. Adems, un sistema de
Pgina 8
Pgina 9
Pgina 10
2. INTRODUCCIN TERICA
2.1. ESTRUCTURA
En este apartado se realiza una introduccin a las tcnicas y
conocimientos tericos requeridos para la ejecucin del proyecto as como una
visin de los diferentes mtodos de trabajo y estudios realizados hasta la fecha.
En una primera seccin se detalla como ha sido estudiado el problema
del reconocimiento facial, el mtodo de trabajo y las diferentes tcnicas
empleadas para la resolucin del mismo.
En la segunda y ltima parte se detallan las tcnicas empleadas en este
proyecto para la consecucin de los objetivos iniciales en el proceso del
reconocimiento facial, diferencindose entre tcnica para la deteccin de caras
dentro de una imagen y tcnica para el reconocimiento de dicha cara una vez
detectada.
Pgina 11
INTRODUCCIN
Pgina 12
2.2.2.
MTODO DE TRABAJO
Pgina 13
resultantes
de
una
previa
clasificacin
de
los
rostros
2.2.3.
ALGORITMOS
facial,
continuacin
se
describen
brevemente
sus
Pgina 14
Ventajas:
Tiempo
de
cmputo
pequeo
elevado
Pgina 15
Ventajas:
Buena exactitud.
2.2.3.1.
Correlacin y FFT
= I1(i + x, j + y )I2(i, j)
(1)
(2)
(3)
i=1 J=1
Pgina 16
(4)
(5)
siendo x la transpuesta de x.
Puede observarse que ahora, el operador convolucin no son dos
sumatorios sino simplemente una multiplicacin en el dominio de Fourier, por
tanto para cada punto, ahora solo hay que calcular un producto.
La imagen deseada IC se haya sin ms que realizar la antitransformada
a IfC.
IC = F 1 (IfC)
(6)
Pgina 17
2.2.3.2.
PCA y Eigenfaces
su
funcionamiento
en
el
apartado
2.3.2.1
PCA
2.2.3.3.
Pgina 18
his(i) 0.15h w
i =T
Ilustracin 1: (a) y (c) imgenes faciales originales, (b) y (d) imgenes binarias de bordes.
Pgina 19
donde i son los eigenvalues de S. Las filas de K contienen los kernels. Los
kernels tienen espacialmente propiedades locales y son topogrficos en el
sentido de que estn indexados por localizaciones espaciales. La matriz semilla
K transforma X a la salida LFA O = KXT. La matriz V es la raz cuadrada inversa
de la matriz de covarianza de los coeficientes principales. Esta transformada
esfera los componentes principales (normalizada su varianza de salida a la
unidad) y minimiza la correlacin en la salida LFA. Otra manera de interpretar
la salida LFA O es que esta es la reconstruccin de la imagen usando los
coeficientes PCA esferizados, O = P(VPTXT).
LFA genera una representacin n-dimensional, donde n es el nmero de
pxeles de la imagen. Desde que se tienen n salidas descritas por p << n
variables linealmente independientes, existen correlaciones independientes en
la salida. Existen algoritmos para reducir la dimensionalidad de la
representacin mediante la eleccin de un subconjunto M de salidas que sean
lo ms incorreladas posible. El algoritmo de sparsification es un algoritmo
iterativo basado en una regresin lineal mltiple. En cada iteracin, el punto de
salida que sea peor predicho, mediante la regresin lineal mltiple para los
puntos de M, se aade a M. Debido a las propiedades topogrficas de los
kernels, la seleccin de los puntos de salida es equivalente a la seleccin de
los kernels para la representacin. El algoritmo de sparsification selecciona
diferentes series de kernels, M, por cada imagen problemtica a la hora del
reconocimiento.
Pgina 20
= C ( M , N )C ( M , M ) 1
La condicin de fin se produce cuando M = N .
2.2.3.4.
Pgina 21
Pgina 22
2.2.3.5.
Basado en Plantillas
Pgina 23
inicial. El siguiente paso es sencillo: para una nueva imagen se comparan las
regiones de sta con las almacenadas en la base de datos y se extraen
conclusiones.
El preprocesamiento de la imagen debe constar de mtodos de
deteccin de zonas significativas, como son la zona de la boca, nariz y ojos,
para su posterior almacenaje, para ello puede utilizarse el mtodo de la
correlacin explicado anteriormente. Pueden tenerse mscaras estndar de
ojos, por ejemplo, que al correlacionarlas con las imgenes, nos den las zonas
de las mismas donde se encuentran los ojos de la cara, y as para otras zonas
con otras mscaras.
pesar
de
ser
un
sistema
sencillo
conceptualmente,
Pgina 24
2.3.1.
DETECCIN DE CARAS
Pgina 25
2.3.2.
RECONOCIMIENTO FACIAL
Pgina 26
2.3.2.1.
Pgina 27
Pgina 28
2.3.2.2.
PCA Y EIGENFACES
Pgina 29
Pgina 30
Pgina 31
subespacio
dimensional.
La
idea
principal
del
Anlisis
de
Pgina 32
1 M
n .
M n=1
Pgina 33
k =
1 M T
uk n
M n=1
1 M
n nT = AA T
M n=1
Pgina 34
u l = v lk k l = 1, , M
k =1
k2 = ( k )
RESUMEN
Resumiendo y sintetizando, el proceso de reconocimiento facial
mediante el uso de la descomposicin en valores principales (PCA) y
Eigenfaces consta de los siguientes pasos:
Pgina 35
1.-
del paso anterior es menor que este umbral, la imagen de la cara de entrada es
considerada como conocida, si es mayor, se considera desconocida.
2.3.3.
HISTOGRAMA
Un histograma de una imagen en escala de grises, no es ms que una
funcin discreta, en la que cada valor representa el nmero de puntos con el
mismo nivel de gris, sobre el nmero total de puntos de una imagen.
Para realzar una imagen mediante el uso de su histograma, se intenta
expandir en la medida que se pueda las zonas de dicho histograma que
presenten elevados valores y prximos entre si, igualacin de histograma, lo
Pgina 36
Pgina 37
que sumar para cada una de las componentes del eje horizontal del histograma
el valor de la componente vertical ms los valores de las componentes
anteriores, se tiene entonces una curva como la siguiente:
Pgina 38
Pgina 39
Pgina 40
FUENTE DE ILUMINACIN
3.2.1.1.
Pgina 41
3.2.1.2.
3.2.1.3.
3.2.2.
ENTORNO ESTRUCTURADO
Pgina 42
3.2.3.
CMARA WEB
USB
Sensor:
Pgina 43
RGB24
I420
Control de exposicin:
Automtico
Balance de blancos:
Automtico
Campo de visin:
50 grados 5% (diagonal)
Rango de enfoque:
Pgina 44
3.2.4.
EQUIPO INFORMTICO
Memoria:
Proview 17
OPENCV
Pgina 45
3.3.2.
Pgina 46
4. IMPLEMENTACIN
4.1. ESTRUCTURA
En este apartado se describe detalladamente como se ha implementado
el sistema de reconocimiento facial, desde su diseo, hasta los resultados de
su funcionamiento.
Dentro del bloque de DISEO, en una primera seccin se muestran
los diagramas de flujo de la funcin o programa principal y del mdulo
compara, el ms importante del sistema de reconocimiento facial diseado.
En la segunda seccin se detalla la estructura interna del sistema, los
mdulos principales en los que se divide y una descripcin de los mismos.
La tercera seccin contiene la descripcin de todas las funciones
utilizadas para el diseo e implementacin del sistema de reconocimiento
facial, tanto funciones de librera de OpenCV, como las diseadas
exclusivamente para el sistema, funciones propias. Las funciones de librera de
C++ utilizadas no son descritas por no ser relevantes.
Pgina 47
4.2. DISEO
4.2.1.
DIAGRAMA DE FLUJO
Pgina 48
Pgina 49
Pgina 50
4.2.2.
ESTRUCTURA INTERNA
4.2.2.1.
Pgina 51
Pgina 52
Una vez mostrada esta pantalla, el usuario ha de elegir una de las tres
opciones, 0 para introducir el rostro del usuario a la base de datos, 1 para el
reconocimiento de la cara del usuario mediante la comparacin con las ya
almacenadas en la base de datos y 2 para salir del programa. El programa
principal almacena el valor introducido y segn sea este, se actuar de una
manera u otra. Primero se comprueba que sea un carcter vlido, es decir, si
no es ni 0, 1 2, se imprime un mensaje de error y se vuelve a la pantalla
inicial. Si el valor introducido es alguno de los anteriores, dentro del bucle
infinito de la funcin MAIN se decide que lnea de accin seguir (ver diagrama
de flujo, Ilustracin 8). Para cada una de las dos primeras opciones, una vez
finalizada la ejecucin de sus bloques y funciones, han de liberarse las
variables iniciales, as como cerrar las ventanas abiertas hasta el momento,
para ello se utilizan las funciones cvDestroyAllWindows(), que cierra todas las
ventanas con imgenes abiertas, remove(*.jpg), que elimina los ficheros *.jpg
utilizados, imgenes auxiliares para el intercambio de informacin entre
funciones, y cvReleaseImage y cvReleaseCapture que liberan la memoria
de los diferentes tipos de variables.
Pgina 53
4.2.2.2.
NUEVO USUARIO
se
muestra
por
pantalla
mediante
las
funciones
Pgina 54
4.2.2.3.
RECONOCIMIENTO
4.2.2.4.
SALIR
Pgina 55
FUNCIONES INTERNAS
4.2.3.
4.2.3.1.
4.2.3.2.
4.2.3.2.1.
cvLoadImage
Tipo:
iscolor=1 )
4.2.3.2.2.
cvSaveImage
Tipo:
image )
Pgina 56
4.2.3.2.3.
cvNamedWindow
Tipo:
4.2.3.2.4.
cvShowImage
Tipo:
image)
4.2.3.2.5.
load_object_detector
Tipo:
load_object_detector ()
4.2.3.2.6.
detect_and_draw_object
Tipo
Pgina 57
4.2.3.2.7.
cvDestroyAllWindows
Tipo:
anteriormente.
4.2.3.2.8.
cvCalcEigenObjects
Tipo:
void*
int
ioFlags,
int
ioBufSize,void*
userData,
eigVals )
4.2.3.2.9.
cvEigenProjection
Tipo:
int
void
nEigObjs, int
cvEigenProjection(
ioFlags, void*
void*
userData,
eigInput,
float*
Pgina 58
4.2.3.2.10.
cvEigenDecomposite
Tipo:
int
void
cvEigenDecomposite(
nEigObjs, void*
eigInput, int
IplImage*
ioFlags,
obj,
void*
coeffs )
4.2.3.2.11.
cvReleaseImage
Tipo:
datos y manejador.
4.2.3.2.12.
cvReleaseCapture
Tipo:
Pgina 59
4.2.3.2.13.
cvCreateMemStorage
Tipo:
CvMemStorage*
cvCreateMemStorage
(int
block_size = 0)
4.2.3.2.14.
cvReleaseMemStorage
Tipo:
void
cvRelesaseMemStorage
(CvMemStorage**
storage)
4.2.3.2.15.
cvPyrDown
Tipo:
filter = CV_GAUSSIAN_5x5 )
cvHaarDetectObjects
Tipo:
Pgina 60
4.2.3.2.17.
cvGetSeqElem
Tipo:
4.2.3.2.18.
cvRectangle
Tipo:
4.2.3.2.19.
cvResize
Tipo:
interpolation = CV_INTER_LINEAR )
Pgina 61
4.2.3.2.20.
cvCaptureFromCAM
Tipo:
4.2.3.2.21.
cvGrabFrame
Tipo:
y lo almacena internamente.
4.2.3.2.22.
cvRetrieveFrame
Tipo:
4.2.3.2.23.
cvCopy
Pgina 62
Tipo:
4.2.3.2.24.
cvFlip
Tipo:
flip_mode = 0 )
4.2.3.2.25.
cvCvtColor
Tipo:
code )
4.2.3.2.26.
cvWaitkey
Tipo:
Pgina 63
4.2.3.3.
4.2.3.3.1.
Funciones Propias
camara_y_foto
Funcin propia
Tipo
4.2.3.3.2.
almacena
Funcin propia
Tipo
4.2.3.3.3.
guarda_foto
Funcin propia
Tipo
Pgina 64
4.2.3.3.4.
compara
Funcin propia
Tipo
de
imgenes
son
utilizadas
por
la
funcin
Pgina 65
4.2.3.3.5.
realce_mono
Funcin propia
Tipo
Descripcin: funcin
realza
una
imagen
mediante
el
4.2.3.3.6.
parecido
Funcin propia
Tipo
4.2.3.3.7.
extract_and_norm
Funcin propia
Tipo
valor
de
fila
columna,
existen
tres
niveles,
Pgina 66
4.2.3.3.8.
guardian
Funcin propia
Tipo
4.3. FUNCIONAMIENTO
El funcionamiento del sistema de reconocimiento facial diseado es
bastante intuitivo, sobre todo en lo referente a la interfaz grfica. El ejecutable
del programa es llamado por un fichero .cmd, secuencia de comandos de
Windows, en el que se llama al ejecutable del programa creado por el
compilador de C++ y se le pasa el parmetro que necesita dicho programa
principal como ya se ha comentado con anterioridad, el fichero de
entrenamiento para el detector facial, fichero tipo .xml.
Pgina 67
Puede
observarse
como
debajo
del
nombre
del
programa
Pgina 68
NUEVO USUARIO
Si se elige la opcin Nuevo Usuario, es decir, se introduce el carcter
0 por teclado, el sistema muestra por pantalla el mensaje Pulse una tecla
para fotografiarse y abre una ventana llamada Capturando donde se
muestra la imagen proveniente de la cmara web instalada en el sistema.
Pgina 69
Ilustracin 19: Introduccin del nombre del nuevo usuario Cesar Demo
Pgina 70
Pgina 71
RECONOCIMIENTO
Pgina 72
Una vez capturada una fotografa del usuario el sistema comprueba que
exista una cara en la imagen para poder aplicar el proceso de reconocimiento,
si no se encuentra ninguna cara, mostrar un mensaje de error como en el
mismo caso de Nuevo Usuario. Si el proceso de deteccin encuentra una
cara, pasa el control al mdulo compara, que realizar el proceso de
reconocimiento de dicha cara con las que ya tiene almacenadas. El resultado
de dicho proceso puede ser, usuario reconocido, o no.
Si la cara del usuario actual es reconocida, es decir, se han cumplido
los criterios establecidos, el sistema muestra diferentes mensajes. Primero
muestra la exactitud con la que la cara ha sido reconocida, es decir, la
probabilidad de que el usuario actual pertenezca a los usuarios ya
almacenados; despus, el tiempo que se ha tardado en el proceso de
reconocimiento, desde que se captur la foto del usuario actual y su
reconocimiento. Posteriormente el sistema muestra el mensaje de ACCESO
PERMITIDO !!! y el nombre del usuario al que su cara se parece.
Pgina 73
Pgina 74
SALIR
Si se elije la opcin Salir, es decir, se introduce el carcter 2 por
teclado, en el men principal, simplemente se cierra la ventana actual y por
tanto se finaliza el programa.
Pgina 75
Pgina 76
Pgina 77
descomposicin
en
valores
principales,
coeficientes
Pgina 78
Pgina 79
Pgina 80
Pgina 81
Pgina 82
Pgina 83
4.4.1.
Pgina 84
Pgina 85
Pgina 86
Pgina 87
Para poder llevar a cabo el reconocimiento hace falta una cara inicial,
para este caso ha sido la siguiente:
Pgina 88
4.5. RESULTADOS
En este apartado se van a mostrar los resultados obtenidos en cuanto a
tiempo de cmputo y fiabilidad en los reconocimientos, dos de las
caractersticas restrictivas que se tenan en los objetivos iniciales del sistema.
En la siguiente tabla se muestra para diferentes nmeros de usuarios, el
tiempo de cmputo, tiempo medio que tarda el sistema en reconocer o no a un
Tiempo de cmputo
% xito
% Reconocimiento
0.98 seg.
98 %
81 %
10
1.25 seg.
97 %
79 %
20
1.72 seg.
92 %
77 %
80
6.18 seg.
88 %
72 %
porcentaje =
Pgina 89
valores
inferiores
al
pueden
ser
admisibles.
Pgina 90
5. CONCLUSIONES Y LNEAS DE
DESARROLLO FUTURAS
5.1. ESTRUCTURA
En este apartado se muestran las conclusiones a las que se ha llegado
una vez finalizado el proyecto fin de carrera, primera seccin, y un anlisis de
las lneas de avance en el campo del reconocimiento facial y futuros trabajos y
mejoras tomando como punto de partida este proyecto, segunda y ltima
seccin.
5.2. CONCLUSIONES
Recordando los objetivos iniciales del proyecto: << Por formar parte de
una instalacin domtica la solucin aportada deba de cumplir ciertos
requisitos: uno de ellos era la utilizacin de una cmara web como sistema de
Pgina 91
Pgina 92
Condiciones de iluminacin
Pgina 93
Pgina 94
Pgina 95
Resumen
Existen
diferentes
mejoras
aplicables
al
sistema
diseado,
Pgina 96
6. BIBLIOGRAFA
[1]
[2]
[3]
[4]
Programacin
[5]
Pgina 97
[6]
[7]
[8]
OpenCV
[9]
http://www.intel.com/software/products/ipp/index.htm
[10]
http://sourceforece.net/projects/opencvlibrary
[11]
http://groups.yahoo.com/group/OpenCV
PCA y Eigenfaces
[12]
[13]
[14]
http://ai.ucsd.edu/Tutorial/matlab.html#eigenfaces
[15]
http://ith.mx/revista_espacio_ith/numero_2/r02_rostros.htm
Pgina 98
[16]
www.facedetection.com
www.kranf.tk
Redes Neuronales
[18]
Universidad de Chicago
http://people.cs.uchicago.edu/qingj/thesisHtml/
Visin Artificial
[19]
http://www.cvc.uab.es/~joans/webaerfai/visind.html
[20]
http://www.uc3m.es/uc3m/dpto/IN/dpin04/vision.html
[21]
http://web.mit.edu/
[22]
http://www.gatech.edu
Enlaces de inters
[23]
Biometra
http://www.biometrics.org
Pgina 99
[24]
Extraccin de caractersticas
http://www.geocities.com/facerecognition/
[25]
[26]
Fallos Drsticos
http://www.notbored.org/face-misrecognition.html
Pgina 100
7. ANEXOS
7.1. GUIA DE USUARIO
Para poder ejecutar el programa diseado de reconocimiento facial han
de cumplirse ciertos requisitos tcnicos, tanto a nivel de hardware como de
software ( ver seccin 3, componentes del sistema ).
En cuanto al hardware necesario, se precisa de un ordenador personal,
de caractersticas similares o superiores al utilizado para el desarrollo del
sistema, si se quiere que los tiempos de procesado permanezcan parecidos o
inferiores a los mostrados, y una cmara web correctamente instalada con los
drivers que se adjuntan con la misma.
En cuanto al software, el sistema operativo requerido puede variar,
siempre que permanezca dentro de la familia de Microsoft Windows
(95/98/NT/2000/XP). Se necesita tambin la librera OpenCV, que se puede
obtener de forma gratuita [10].
Pgina 101
Pasos a seguir
Pgina 102
Pgina 103
7.2. OBSERVACIONES
A continuacin se detallan algunas observaciones tanto de diseo como
de ejecucin del programa de reconocimiento facial creado.
los
nuevos
values_norm.txt
usuarios.
no
es
Los
ficheros
necesario
values.txt
crearlos,
se
crean
Pgina 104
ficheros
de
texto
auxiliares
de
la
descomposicin
normalizacin de valores.
Pgina 105
Pgina 106
//
DEFINICIN DE FUNCIONES
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
// Funcin que recibe la imagen en la que ha de buscarse una cara segn el
// clasificador "cascade" pasado como parmetro
void detect_and_draw_objects( IplImage* image, CvHaarClassifierCascade* cascade,
int do_pyramids )
{
IplImage* small_image = image;
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* faces;
int i, scale = 1;
Pgina 107
Pgina 108
}
/////////////////////////////////////////////////////////////////////////////////
// Funcin que accede a la cmara WEB del equipo y realiza la captura
// de una fotografa
IplImage* camara_y_foto(CvCapture* capture)
{
IplImage* image;
IplImage *frame, *frame_copy = 0;
printf("\n Pulse una tecla para fotografiarse... ");
capture = cvCaptureFromCAM(-1);
cvNamedWindow( "Capturando...", 0 );
for(;;) // Visualizacin de la cmara WEB
{
if( !cvGrabFrame( capture ))
break;
frame = cvRetrieveFrame( capture );
if( !frame )
break;
if( !frame_copy )
frame_copy = cvCreateImage( cvSize(frame->width,frame->height),
IPL_DEPTH_8U, frame->nChannels );
if( frame->origin == IPL_ORIGIN_TL )
cvCopy( frame, frame_copy, 0 );
else
cvFlip( frame, frame_copy, 0 );
cvGrabFrame(capture);
image=cvRetrieveFrame(capture);
cvShowImage("Capturando...",frame);
if( cvWaitKey( 10 ) >= 0 )
// Sale si se pulsa una tecla
break;
}
cvSaveImage( "captura.jpg", image );
cvDestroyWindow("Capturando...");
Pgina 109
return image;
}
/////////////////////////////////////////////////////////////////////////////////
// Funcin que almacena el nombre del nuevo usuario en el fichero "caras.txt"
// actualizando el nmero de usuarios
int almacena(void)
{
int n_fotos=0;
int n_f[2];
FILE* fichero_out;
if((fichero_out=fopen("caras.txt", "r+")) == NULL)
printf("\n\n\n\t Error abriendo el fichero\n");
rewind(fichero_out);
// Posiciona el puntero al principio del fichero
n_f[0]=getc(fichero_out)-48;
// Obtiene el nmero de usuarios actuales leyendo
n_f[1]=getc(fichero_out)-48;
// los 2 primeros caracteres del fichero, se convierten
// a entero restando 48 a su valor ASCII.
if (n_f[1]==9)
{
// Aumenta en 1 el nmero de usuarios
n_f[1]=0;
// teniendo en cuenta que se tiene la componente 1 del
n_f[0]++;
// vector n_f para las decenas y la componente 0 para
}
// las unidades
else
n_f[1]++;
rewind(fichero_out);
// Posiciona el puntero al principio del fichero
fprintf(fichero_out,"%d%d",n_f[0],n_f[1]); // Se escribe el nuevo numero de usuarios
fseek( fichero_out,0, SEEK_END);// Posiciona el puntero al final del fichero
fprintf(fichero_out,"\n");
// Posiciona el puntero en una nueva lnea
fprintf(fichero_out," %s",persona);
// Se escribe el nombre del nuevo usuario
fclose(fichero_out);
// Cierre del fichero
n_fotos=10*n_f[0]+n_f[1];
// Conversin a entero del nmero de usuarios
return n_fotos;
// Retorno del nmero entero de usuarios
}
/////////////////////////////////////////////////////////////////////////////////
// Funcin que compara la nueva imagen con las almacenadas anteriormente mediante la
// distancia entre los eigenvectors del subespaciovectorial formado por todas las caras
// de la base de datos.
int compara(IplImage* original)
{
const int n = 100;
// numero de imgenes a usar
const int nEigens = n-1;
// numero de eigenobjects
int i, j, k, numcara, numcara2, numcara_n, numcara_n2, digit = 10;
char foto[30] = "caras/cara00.jpg";
int n_f[2];
char n_fc[2];
double max, max_n, val, val_n, dist, dist_n;
// distancia entre vectores
double menor, menor2, menor_n, menor_n2, umbral, vdist[n], vdist_n[n];
FILE* outFile;
// archivo para resultados
FILE* outFile_n;
// archivo para resultados con realce
CvMemStorage* storage = cvCreateMemStorage(0);
Pgina 110
Pgina 111
Pgina 112
Pgina 113
Pgina 114
// UMBRAL DE DISCERNIMIENTO
}
// LIMPIEZA DE MEMORIA
for( i=0; i<n_fotos; i++ )
{
Pgina 115
Pgina 116
Pgina 117
}
nombre_cara[10]=num[n_f[0]];
nombre_cara[11]=num[n_f[1]];
parecido=cvLoadImage(nombre_cara,1);
cvNamedWindow( "Parecido", 0);
cvShowImage( "Parecido", parecido);
}
/////////////////////////////////////////////////////////////////////////////////
// Funcin que guarda la foto de la cara del nuevo usuario dentro de la carpeta "caras"
// del directorio de trabajo y escribe su nombre al final del fichero "caras.txt"
void guarda_foto(int n_foto,IplImage* cara)
{
char nombre_cara[20]="caras/cara00.jpg";
int n_f[2];
FILE* fichero_out;
if((fichero_out=fopen("caras.txt", "r+")) == NULL)
printf("\n\n\n\t Error abriendo el fichero\n");
rewind(fichero_out);
// Posiciona el puntero al principio del fichero
n_f[0]=getc(fichero_out)-48;
// Obtiene el nmero de usuarios
n_f[1]=getc(fichero_out)-48;
fclose(fichero_out);
// Cierra el fichero
nombre_cara[10]=num[n_f[0]];
nombre_cara[11]=num[n_f[1]]; // Guarda la foto como caraXX.jpg,
cvSaveImage(nombre_cara,cara);
// con XX el n de usuario
}
/////////////////////////////////////////////////////////////////////////////////
// Funcin segn el resultado devuelto por la funcin "compara", 0 si no se
// ha encontrado correspondencia entre caras o el nmero de la cara a la que
// se parece el usuario actual, deniega o permite el acceso al sistema,
// como forma de validar la permanencia o no al grupo cerrado de usuarios
void guardian(int resultado)
{
FILE* pf;
int i,au=0;
char nombre[60];
if (resultado == 0)
// No se encontr correspondencia entre caras
{
printf("\n\n\n\t ACCESO DENEGADO !!! \n");
}
else
// Se encontr correspondencia con la cara "resultado"
{
printf("\n\n\n\t ACCESO PERMITIDO !!! \n");
pf=fopen("caras.txt","r");
// Se busca su nombre en el fichero "caras.txt"
au=fgetc(pf);
// Y se muestra por pantalla
Pgina 118
cvWaitKey(5000);
// Margen de 5 segundos
}
}
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
// PROGRAMA PRINCIPAL (Recibe como parmetro de entrada el tipo de detector facial)
void main(int argc, char** argv )
{
clock_t start,finish;
time_t ltime1, ltime2;
double duracion;
char opt='0';
while ( opt != '2' )
{
int resultado,n_fotos,usuarios;
e_cara=0;
IplImage* image;
CvCapture* capture = 0;
CvHaarClassifierCascade* cascade;
cascade = load_object_detector(argv[1]);
se utilizar
int n_f[2];
FILE* fichero_out;
if((fichero_out=fopen("caras.txt", "r+")) == NULL)
printf("\n\n\n\t Error abriendo el fichero\n");
rewind(fichero_out);
n_f[0]=getc(fichero_out)-48;
n_f[1]=getc(fichero_out)-48;
fclose(fichero_out);
usuarios=10*n_f[0]+n_f[1];
system("cls");
printf("\n \t RECONOCIMIENTO FACIAL \n\t=======================");
printf("\n\n \t ( El numero actual de usuarios es %d )\n",usuarios);
printf("\n \t Elija una opcion:");
printf("\n\n\t 0 - Nuevo Usuario \n\n\t 1 - Reconocimiento \n\n\t 2 - Salir\n\n ");
printf("\t Opcion: ");
Pgina 119
Pgina 120
las ya almacenadas
finish = clock();
time( <ime2 );
duracion=(double)(finishstart)/(4*CLOCKS_PER_SEC);
printf("\n\n\t El tiempo de computo ha sido de %2.2f
segundos",duracion);
ltime1=ltime2-ltime1;
//printf("\n\n\t El tiempo de computo ha sido de %ld
segundos",ltime1/2);
guardian(resultado);
// Permite o Prohbe su
acceso al sistema
}
}
else if ( opt == '2' ) break;
// SALIR
cvWaitKey(50000);
cvDestroyAllWindows();
remove("foto.jpg");
remove("captura.jpg");
getchar();
cvWaitKey(50000);
cvReleaseImage( &image );
cvReleaseCapture( &capture );
// Espera 5 segundos
// Elimina todas las ventanas
// Borra las imgenes auxiliares
// foto.jpg y captura.jpg
// Libera Memoria
Pgina 121
del
contenido
de
los
ficheros
de
texto
values.txt
4246.69
0.00
0.00
377.80
0.00
0.00
-2283.68
0.00
-0.00
366.34
-0.00
0.00
-686.90
0.00
0.00
0.00
0.00
-0.00
0.00
-0.00
1528.90
-0.00
-0.00
-341.58
-0.00
0.00
438.55
0.00
0.00
-519.34
-0.00
-0.00
0.00
0.00
0.00
-0.00
-0.00
-1903.03
-0.00
0.00
2036.45
-0.00
-0.00
1277.08
-0.00
0.00
696.29
0.00
0.00
0.00
-0.00
-0.00
0.00
-0.00
777.80
-0.00
-0.00
708.89
-0.00
0.00
1635.60
-0.00
-0.00
1837.27
0.00
-0.00
0.00
0.00
0.00
0.00
0.00
174.85
0.00
0.00
-2815.72
0.00
0.00
166.65
-0.00
-0.00
-363.80
0.00
0.00
0.00
0.00
-0.00
0.00
0.00
-1877.30
0.00
-0.00
-1170.77
-0.00
0.00
3108.72
0.00
0.00
0.00
-0.00
0.00
0.00
-1594.67
0.00
-1483.28
-0.00
-1429.08
0.00
0.00
0.00
-3891.74
1872.29
-1154.19
5186.67
3415.82
-1080.41
0.00
-0.00
1133.85
-325.99
0.00
Pgina 122
0.00
0.00
-0.00
-0.00
0.00
-0.00
0.00
0.00
-490.55
-0.00
0.00
214.22
0.00
-0.00
2902.36
-0.00
0.00
-1099.92
0.00
0.00
0.00
-0.00
-0.00
0.00
0.00
4339.42
-0.00
-0.00
2435.63
0.00
-0.00
-1003.37
0.00
0.00
-390.77
0.00
-0.00
0.00
-0.00
-0.00
-0.00
-0.00
-1501.96
-0.00
-0.00
-202.90
0.00
0.00
355.39
0.00
-0.00
52.09
-0.00
0.00
0.00
0.00
0.00
-4737.31
-0.00
-0.00
-745.17
-0.00
-0.00
-1011.12
0.00
-0.00
-288.60
0.00
-0.00
-599.33
-0.00
0.00
0.00
0.00
0.00
1482.03
-0.00
-0.00
1495.36
-0.00
0.00
2800.75
0.00
-0.00
1952.07
0.00
-0.00
0.00
-0.00
0.00
0.00
-0.00
-418.27
-0.00
0.00
-429.41
0.00
0.00
468.79
0.00
-0.00
-1699.04
-0.00
0.00
0.00
-0.00
0.00
-0.00
0.00
-1416.03
-0.00
0.00
1529.46
0.00
-0.00
1918.13
-0.00
0.00
-1115.35
0.00
0.00
0.00
-0.00
-0.00
0.00
0.00
576.87
0.00
0.00
-3271.75
0.00
-0.00
-475.53
-0.00
-0.00
532.93
0.00
0.00
0.00
-0.00
-0.00
0.00
-0.00
1238.48
-0.00
-0.00
-354.25
-0.00
0.00
-19.38
0.00
-0.00
200.94
-0.00
-0.00
0.00
0.00
0.00
-1699.35
-0.00
-0.00
1122.25
-0.00
-0.00
-1673.58
0.00
0.00
922.43
-0.00
-0.00
0.00
-0.00
-0.00
2237.13
3393.87
-2952.03
-903.93
0.00
-0.00
-1393.12
3576.40
4833.69
-4936.48
-2312.34
-0.00
-0.00
3613.02
-0.00
-0.00
-3976.29
0.00
-0.00
3394.32
-0.00
-0.00
-1395.39
-0.00
-0.00
-1055.64
0.00
-0.00
0.00
-0.00
-0.00
-5219.13
0.00
-0.00
3335.14
-0.00
-0.00
-1175.32
-0.00
0.00
384.42
0.00
0.00
-943.94
-0.00
-0.00
0.00
-0.00
0.00
2410.59
0.00
0.00
3695.54
0.00
-0.00
2388.28
-0.00
-0.00
-2913.42
-0.00
0.00
193.64
0.00
-0.00
0.00
-0.00
-0.00
-0.00
-0.00
-700.29
-0.00
-0.00
1491.59
-0.00
0.00
-1039.11
0.00
0.00
33.78
-0.00
-0.00
0.00
-0.00
0.00
-0.00
-0.00
-3269.53
-0.00
0.00
-1458.73
0.00
0.00
-1251.64
-0.00
-0.00
372.93
-0.00
0.00
0.00
0.00
-0.00
-3534.58
-4885.16
0.55 0.18 0.74 0.12 -0.26 0.24 0.00 -0.14 0.49 0.82 -0.10
0.08 0.21 -0.41 -0.20 0.71 -0.59 0.45 0.52 -0.43 -0.20 0.99
-0.46 -0.44 -0.34 -0.04 -0.40 0.46 -0.23 -0.39 -0.40 0.14 -0.68
-0.11 0.54 -0.36 -0.20 -0.00 0.60 0.15 0.25 -0.37 -0.30 0.05
0.31 0.42 0.87 0.09 -0.35 0.55 0.05 -0.72 0.71 0.96 0.03
-0.34 0.01 0.85 0.04 -0.36 0.47 -0.26 -0.20 -0.30 0.26 -0.24
Pgina 123
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
-0.51 -0.46 0.00 0.22 0.21 0.43 0.08 -0.16 0.15 0.03 -0.20 0.48 0.84 -0.09
1.00 -0.35 0.00 0.69 0.18 -0.29 0.28 -0.30 0.40 -0.19 -0.40 0.25 1.00 -0.02
-0.34 -0.13 0.00 -0.35 0.72 -0.29 0.03 0.05 0.31 -0.35 0.72 1.00 -0.43 -0.50
0.12 0.02 0.00 -0.04 -0.21 -0.31 0.28 0.21 -0.28 0.55 -0.50 -0.39 -0.06 0.40
-0.10 -0.19 0.00 0.26 -1.00 -0.37 0.22 0.62 -0.69 0.79 0.69 -0.43 -0.02 -0.23
0.96 0.63 0.00 -0.18 0.67 -0.38 -0.15 0.02 0.60 -0.02 0.77 -0.39 -0.47 0.20
0.16 -0.55 0.00 0.17 0.13 -0.43 1.00 0.17 -0.27 -0.19 -0.62 -0.10 0.08 0.56
0.66 -0.36 0.00 0.33 -0.10 -0.35 0.06 -0.47 0.63 -0.19 -0.59 0.70 0.52 -0.35
-0.16 0.17 0.00 0.52 0.13 0.78 0.12 -0.20 0.24 -0.02 -0.15 0.68 0.88 -0.14
-0.01 0.06 0.00 0.26 0.23 -0.40 -0.02 0.62 -0.69 1.00 1.00 -0.40 -0.28 0.78
-0.57 0.30 0.00 -0.42 -0.05 -0.11 -0.55 0.13 -0.67 -0.54 -0.33 -0.44 -0.75 -0.51
-0.48 -0.34 0.00 -1.00 -0.93 1.00 -0.55 -1.00 0.88 -0.90 -0.87 -0.00 -0.77 -0.98
0.13 -0.30 0.00 0.76 0.01 -0.38 -0.43 0.98 -0.66 -0.14 0.80 -0.44 -0.73 1.00
-1.00 0.06 0.00 -0.76 0.09 0.44 -0.08 -0.08 0.05 -0.54 0.58 0.99 -0.67 -0.42
0.00000
12.94919
9.66863
11.58117
3.61426
6.32508
3.71048
5.39849
11.92512
11.72295
13.12566
13.03500
10.75858
7.19925
2.16778
14.84009
13.48694
16.27687
15.99594
12.48253
13.61623
11.95634
Umbral: 6.30
Valor menor: 2.17
Numero de cara: 14
Valor medio: 10.56
vector 1
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
12.94919
0.00000
12.69613
8.00964
15.47850
13.67810
12.75774
13.36119
11.63646
7.76151
7.11582
8.69892
9.07186
-0.36 0.01 0.00 -0.41 -0.76 -0.45 -0.47 0.22 -0.73 -0.16 -0.01 -0.48 -0.89 0.10
-0.43 0.12 0.00 -0.08 -0.24 -0.24 0.35 -0.12 -1.00 0.69 -0.20 -0.72 0.08 0.15
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
15.09014
14.26236
4.36961
11.02403
21.17693
5.78515
13.03571
8.44374
10.73376
vector 2
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
9.66863
12.69613
0.00000
8.43922
10.86570
6.67112
9.65750
7.75549
10.44132
8.75424
11.89215
9.21479
10.09999
6.63626
10.51980
14.41563
7.68575
11.73779
16.69207
11.47090
8.63041
10.22205
vector 3
0:
1:
2:
3:
4:
5:
6:
7:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
11.58117
8.00964
8.43922
0.00000
12.46730
9.94053
10.49228
10.83124
Pgina 124
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
10.19435
8.13004
10.01336
2.46594
9.32477
11.78882
11.71552
8.95250
9.98430
17.19286
12.74928
12.33085
8.98476
10.52743
vector 4
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
3.61426
15.47850
10.86570
12.46730
0.00000
7.95877
5.54571
6.68752
13.48748
12.67613
15.38344
14.01596
11.77251
6.79051
3.62532
16.58861
15.27328
15.62602
19.27382
14.26741
15.50415
13.37245
vector 5
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
6.32508
13.67810
6.67112
9.94053
7.95877
0.00000
6.78956
9.36550
11.84942
10.85041
12.85720
11.13353
11.36228
9.36942
6.72826
15.18974
9.89194
13.48639
17.14562
11.90013
11.01361
9.99877
vector 6
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
3.71048
12.75774
9.65750
10.49228
5.54571
6.78956
0.00000
6.42781
12.08212
9.94540
11.34076
11.99353
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
8.55848
8.13077
4.56688
13.45694
11.48763
15.38145
16.40694
11.84650
11.85733
9.07560
vector 7
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
5.39849
13.36119
7.75549
10.83124
6.68752
9.36550
6.42781
0.00000
12.53686
11.08979
13.86981
11.43781
9.57684
4.67307
7.24771
15.62514
13.21657
17.16808
16.20735
14.13912
13.25436
12.56640
vector 8
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
11.92512
11.63646
10.44132
10.19435
13.48748
11.84942
12.08212
12.53686
0.00000
15.06749
14.78176
9.20854
14.60539
11.59919
12.00250
13.52797
11.43991
15.80908
14.02124
4.77646
11.90848
16.32492
vector 9
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
11.72295
7.76151
8.75424
8.13004
12.67613
10.85041
9.94540
11.08979
15.06749
0.00000
6.50356
10.04262
4.68949
11.25097
12.62831
8.36632
Pgina 125
dist = 9.31630
dist = 17.16030
dist = 12.82465
dist = 16.14863
dist = 7.90980
dist = 5.26598
vector 10
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
13.12566
7.11582
11.89215
10.01336
15.38344
12.85720
11.34076
13.86981
14.78176
6.50356
0.00000
11.21715
9.28934
14.77271
13.47830
5.82343
11.74394
19.59360
10.21389
16.36610
8.46990
7.29541
vector 11
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
13.03500
8.69892
9.21479
2.46594
14.01596
11.13353
11.99353
11.43781
9.20854
10.04262
11.21715
0.00000
10.56504
12.53788
13.12194
9.13282
10.84690
17.82067
12.25994
11.88358
9.46574
12.52894
vector 12
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
10.75858
9.07186
10.09999
9.32477
11.77251
11.36228
8.55848
9.57684
14.60539
4.68949
9.28934
10.56504
0.00000
10.35717
12.09948
10.20409
10.96519
16.99680
12.88283
16.05761
20:
21:
dist =
dist =
9.64181
8.82080
vector 13
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
7.19925
15.09014
6.63626
11.78882
6.79051
9.36942
8.13077
4.67307
11.59919
11.25097
14.77271
12.53788
10.35717
0.00000
8.55487
17.28116
12.63024
13.68640
18.32441
13.12297
13.27581
13.10370
vector 14
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
2.16778
14.26236
10.51980
11.71552
3.62532
6.72826
4.56688
7.24771
12.00250
12.62831
13.47830
13.12194
12.09948
8.55487
0.00000
14.93889
13.69937
16.92466
17.35312
12.11341
14.26276
12.08488
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
14.84009
4.36961
14.41563
8.95250
16.58861
15.18974
13.45694
15.62514
13.52797
8.36632
5.82343
9.13282
10.20409
17.28116
14.93889
0.00000
12.01335
22.07407
6.69735
15.01035
9.80695
10.24616
Pgina 126
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
13.48694
11.02403
7.68575
9.98430
15.27328
9.89194
11.48763
13.21657
11.43991
9.31630
11.74394
10.84690
10.96519
12.63024
13.69937
12.01335
0.00000
11.45584
12.21015
10.19692
4.79295
9.52257
16.27687
21.17693
11.73779
17.19286
15.62602
13.48639
15.38145
17.16808
15.80908
17.16030
19.59360
17.82067
16.99680
13.68640
16.92466
22.07407
11.45584
0.00000
22.24299
13.55115
13.82103
17.75041
15.99594
5.78515
16.69207
12.74928
19.27382
17.14562
16.40694
16.20735
14.02124
12.82465
10.21389
12.25994
12.88283
18.32441
17.35312
6.69735
12.21015
22.24299
0.00000
14.93323
10.63363
14.85285
vector 19
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
12.48253
13.03571
11.47090
12.33085
14.26741
11.90013
11.84650
14.13912
4.77646
16.14863
16.36610
11.88358
16.05761
13.12297
12.11341
15.01035
10.19692
13.55115
14.93323
0.00000
12.16725
16.76732
vector 20
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
13.61623
8.44374
8.63041
8.98476
15.50415
11.01361
11.85733
13.25436
11.90848
7.90980
8.46990
9.46574
9.64181
13.27581
14.26276
9.80695
4.79295
13.82103
10.63363
12.16725
0.00000
8.70026
vector 21
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
dist =
11.95634
10.73376
10.22205
10.52743
13.37245
9.99877
9.07560
12.56640
16.32492
5.26598
7.29541
12.52894
8.82080
13.10370
12.08488
10.24616
9.52257
17.75041
14.85285
16.76732
8.70026
0.00000
Pgina 127
Values_norm.txt
PROYECTO FIN DE CARRERA
RECONOCIMIENTO FACIAL
CSAR REYES LPEZ
Fichero con valores EIGENFACES con Realce
Eigenvalues realce
510668736.00
171120288.00
118985520.00
90055712.00
59504864.00
51875972.00
38113536.00
35950624.00
28586326.00
26743352.00
25320370.00
21452764.00
18641864.00
18234646.00
17308886.00
15243974.00
14319143.00
12291709.00
10812834.00
9182146.00
8615054.00
Descomposicin en coeficientes
obj:0
0.00
0.00
0.00
obj:1
0.00
0.00
-0.00
obj:2
-0.00
0.00
0.00
obj:3
0.00
0.00
0.00
obj:4
0.00
0.00
0.00
obj:5
-0.00
0.00
-0.00
obj:6
0.00
0.00
-0.00
obj:7
-0.00
0.00
0.00
obj:8
-0.00
0.00
0.00
obj:9
0.00
6423.89
0.00
-0.00
-2973.22
-0.00
0.00
-660.99
-0.00
-0.00
784.41
0.00
0.00
-484.69
0.00
-0.00
0.00
-0.00
-0.00
-5635.04
-0.00
-0.00
899.84
-0.00
0.00
-180.34
0.00
0.00
754.74
-0.00
-0.00
1493.81
-0.00
-0.00
-0.00
-0.00
0.00
3171.29
-0.00
-0.00
2273.11
0.00
-0.00
4139.56
-0.00
-0.00
-2425.56
0.00
-0.00
1144.41
-0.00
-0.00
-0.00
-0.00
0.00
-2466.67
-0.00
-0.00
1291.19
0.00
-0.00
1161.83
-0.00
0.00
-1691.28
0.00
-0.00
-3098.54
-0.00
-0.00
-0.00
0.00
-0.00
-3382.12
0.00
0.00
-1796.20
0.00
-0.00
273.13
0.00
0.00
-384.60
0.00
0.00
-0.00
-0.00
-0.00
-1786.12
-0.00
-0.00
-5786.41
0.00
0.00
1196.41
0.00
-0.00
-0.00
-0.00
-0.00
0.00
0.00
-2331.90
0.00
-0.00
2258.64
-0.00
0.00
434.90
-0.00
0.00
0.00
-0.00
-0.00
-0.00
0.00
5054.32
0.00
-0.00
1333.32
0.00
-0.00
459.64
-0.00
-0.00
0.00
-0.00
-0.00
0.00
0.00
-0.00
-0.00
-2277.11
0.00
0.00
1698.25
0.00
-0.00
-884.54
-0.00
-0.00
-0.00
-0.00
-0.00
-0.00
-2345.39
0.00
1190.95
-0.00
604.00
-0.00
-2468.73
0.00
0.00
0.00
6118.07
0.00
-0.00
4391.35
-1250.49
-0.00
0.00
1775.30
-0.00
-0.00
-2919.92
0.00
-0.00
3948.24
-889.55
-0.00
-0.00
3765.78
5597.35
-5854.70
Pgina 128
-0.00
0.00
0.00
-0.00
0.00
0.00
-1792.19
0.00
0.00
-289.69
0.00
-0.00
920.91
-0.00
-0.00
-27.77
0.00
0.00
0.00
0.00
0.00
2544.01
-0.00
-0.00
2532.75
0.00
0.00
-1923.54
0.00
-0.00
-2730.52
0.00
-0.00
-0.00
0.00
0.00
0.00
-0.00
-1480.22
-0.00
0.00
817.03
0.00
-0.00
2745.87
-0.00
-0.00
3865.22
-0.00
0.00
0.00
-0.00
0.00
-0.00
-0.00
-580.75
-0.00
0.00
4419.38
-0.00
-0.00
1289.16
0.00
-0.00
-184.65
-0.00
-0.00
0.00
-0.00
-0.00
0.00
0.00
-3600.10
-0.00
0.00
-2598.27
-0.00
-0.00
-711.09
0.00
0.00
-851.75
0.00
-0.00
0.00
-0.00
-0.00
-6401.65
-0.00
-0.00
650.80
0.00
0.00
-812.01
0.00
0.00
-276.36
-0.00
-0.00
530.61
-0.00
-0.00
-0.00
0.00
0.00
-2722.32
-0.00
0.00
932.44
0.00
0.00
-1514.95
0.00
-0.00
-4037.52
0.00
0.00
2717.94
-0.00
-0.00
-0.00
0.00
0.00
3312.28
-0.00
-0.00
757.08
-0.00
-0.00
1503.37
0.00
-0.00
932.72
-0.00
-0.00
-0.00
-0.00
-0.00
0.00
-0.00
814.91
0.00
0.00
-977.47
0.00
0.00
954.97
-0.00
-0.00
519.53
-0.00
0.00
0.00
0.00
0.00
0.00
0.00
5422.17
-0.00
-0.00
-4212.19
0.00
0.00
1603.80
0.00
0.00
-1333.80
-0.00
-0.00
-0.00
-0.00
-0.00
-5108.93
-0.00
-0.00
2259.17
0.00
-0.00
-43.64
0.00
0.00
230.96
0.00
-0.00
836.13
-0.00
-0.00
-0.00
0.00
0.00
-5382.45
-0.00
-0.00
-4783.35
0.00
0.00
-592.04
-0.00
0.00
-103.78
-0.00
0.00
-1681.74
0.00
0.00
0.00
0.00
0.00
-6724.55
-0.00
-0.00
-2013.05
-0.00
-0.00
-1921.09
5381.76
6529.32
5324.02
0.00
-0.00
-5649.57
3051.00
0.11 0.99 -0.50 -0.61 0.46 0.66 -0.62 0.00 -0.25 0.12 -0.83
0.30 -0.20 -0.16 0.23 -0.65 -0.31 -0.04 0.00 -0.23 0.30 0.97
-0.36 -0.50 0.29 -0.04 0.49 -0.01 -0.04 0.00 -0.20 -0.42 -0.15
0.11 -0.51 0.35 -0.08 0.77 -0.17 0.52 0.00 -0.13 -0.34 0.81
0.03 0.75 0.16 0.02 0.34 0.35 -0.53 0.00 -0.16 0.15 -0.62
-0.40 -0.53 -0.24 -0.07 0.41 1.00 -0.36 0.00 1.00 -0.51 -0.38
0.40 0.68 0.03 0.07 -0.52 -0.26 -0.12 0.00 -0.23 0.45 -0.35
-0.01 -0.63 -0.46 0.16 0.13 -0.31 -0.27 0.00 -0.17 0.48 -0.09
-0.82 0.94 -0.58 0.23 0.25 -0.16 -0.04 0.00 0.27 -0.72 0.16
0.17 -0.47 1.00 -0.15 -0.39 0.13 1.00 0.00 -0.19 0.58 0.49
-0.07 -0.23 0.48 0.02 -0.78 0.00 0.64 0.00 -0.16 0.39 -0.06
-0.23 -0.56 -0.15 0.05 0.63 0.05 0.37 0.00 -0.12 -0.47 0.32
Pgina 129
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
0.00000
15.14834
13.16237
14.37275
5.25850
11.33809
9.41842
9.62799
11.78378
16.51455
15.53561
14.86766
13.76997
7.63823
3.78821
16.80810
14.77430
9.81923
15.67380
12.26830
15.89394
13.70733
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
15.14834
0.00000
10.52360
9.23958
14.60626
14.11732
8.64374
10.67288
13.02898
9.11018
6.78933
10.53837
7.31442
12.75605
16.78191
3.81775
8.34165
12.34981
5.70319
14.80091
3.97697
10.58155
vector 2
0:
dist_n = 13.16237
1:
dist_n = 10.52360
0.47 1.00 0.11 -0.19 0.35 -0.50 0.52 -0.56 -0.46 -0.24 0.00 -0.24 0.20 -0.35
0.22 -0.05 0.96 0.21 -0.54 -0.64 -0.28 0.10 -0.14 -0.72 0.00 -0.23 0.36 -0.82
-0.12 -0.22 0.88 -0.04 1.00 -0.04 -0.50 0.44 0.91 -0.58 0.00 0.98 0.07 -0.73
-0.05 0.14 -0.10 0.30 -0.42 0.40 0.23 -1.00 -0.27 0.43 0.00 -0.09 0.03 1.00
-0.70 0.70 -0.54 0.50 -0.63 0.14 0.03 0.13 -0.15 0.42 0.00 0.39 0.11 -0.71
0.26 0.24 -0.29 -0.54 0.41 -0.69 -0.11 0.38 -0.51 -0.92 0.00 -0.24 -0.59 -0.30
0.17 0.13 0.01 0.52 0.16 0.38 0.34 -0.23 -0.55 0.53 0.00 -0.04 0.06 0.04
0.28 -0.35 -0.51 -1.00 0.96 -0.33 0.61 0.21 -0.38 -0.13 0.00 0.38 -1.00 0.61
0.04 0.22 -0.16 0.66 -0.44 0.26 0.33 0.14 -0.17 0.18 0.00 -0.25 -0.03 0.81
-0.02 -0.44 0.26 0.35 -0.58 0.77 -1.00 -0.74 0.75 0.51 0.00 -0.11 0.77 0.19
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
0.00000
5.99733
11.09121
9.72905
12.26408
7.61439
9.74148
12.61407
11.79021
4.70818
12.15377
9.11165
13.78241
10.71050
9.87302
6.82259
11.31807
12.57705
8.96749
15.63207
vector 3
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
14.37275
9.23958
5.99733
0.00000
12.88791
13.38355
13.35125
10.29793
11.67398
9.11823
11.02165
3.86065
13.53619
11.47543
14.96605
7.93460
10.11719
10.24051
9.89815
13.25764
7.43652
12.83300
vector 4
0:
1:
2:
3:
4:
5:
6:
7:
8:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
5.25850
14.60626
11.09121
12.88791
0.00000
9.62315
7.54399
10.48097
10.73210
Pgina 130
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
15.18969
13.93936
12.67775
13.31029
9.85336
6.42951
14.91564
12.07499
9.59681
13.65290
10.22630
14.18237
13.69493
vector 5
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
11.33809
14.11732
9.72905
13.38355
9.62315
0.00000
10.90655
12.86337
12.62437
17.46439
15.30531
11.82008
14.07886
14.03130
8.96733
14.64634
9.39600
11.20787
15.09789
12.70430
13.76573
14.28588
vector 6
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
9.41842
8.64374
12.26408
13.35125
7.54399
10.90655
0.00000
10.11392
12.37940
12.09015
9.20839
14.32307
7.60692
12.06451
10.23364
10.24348
9.93752
11.65388
8.66750
12.26918
10.54188
9.48185
vector 7
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
9.62799
10.67288
7.61439
10.29793
10.48097
12.86337
10.11392
0.00000
10.92533
12.66779
11.60524
10.10262
10.26251
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
3.98943
11.92362
12.17622
12.81267
8.40724
11.93343
13.16596
11.40077
15.04906
vector 8
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
11.78378
13.02898
9.74148
11.67398
10.73210
12.62437
12.37940
10.92533
0.00000
16.78453
15.43260
9.75362
13.57081
12.13869
12.46419
13.93299
14.01210
7.19424
13.06051
5.06912
12.87795
19.21516
vector 9
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
16.51455
9.11018
12.61407
9.11823
15.18969
17.46439
12.09015
12.66779
16.78453
0.00000
5.04789
10.87369
10.68692
14.36706
17.56236
7.98268
12.57652
16.54593
7.62536
18.93590
9.11359
8.40982
vector 10
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
15.53561
6.78933
11.79021
11.02165
13.93936
15.30531
9.20839
11.60524
15.43260
5.04789
0.00000
11.97113
7.43473
13.94027
16.48231
5.87244
10.09871
Pgina 131
dist_n = 15.09998
dist_n = 4.84685
dist_n = 18.52200
dist_n = 7.83664
dist_n = 8.06388
vector 11
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
vector 12
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
vector 13
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
14.86766
10.53837
4.70818
3.86065
12.67775
11.82008
14.32307
10.10262
9.75362
10.87369
11.97113
0.00000
13.12041
11.40606
15.36266
10.31489
10.13226
9.47184
11.46459
12.38716
9.18510
14.29723
13.76997
7.31442
12.15377
13.53619
13.31029
14.07886
7.60692
10.26251
13.57081
10.68692
7.43473
13.12041
0.00000
12.70440
15.79961
9.72191
10.44536
10.73806
6.95928
15.38944
9.57761
13.54685
7.63823
12.75605
9.11165
11.47543
9.85336
14.03130
12.06451
3.98943
12.13869
14.36706
13.94027
11.40606
12.70440
0.00000
10.89159
14.58733
13.54105
8.02372
14.54440
14.98363
13.49102
21:
dist_n = 16.50626
vector 14
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
3.78821
16.78191
13.78241
14.96605
6.42951
8.96733
10.23364
11.92362
12.46419
17.56236
16.48231
15.36266
15.79961
10.89159
0.00000
17.38830
14.04244
12.02487
16.45505
12.43891
17.01960
14.29668
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
16.80810
3.81775
10.71050
7.93460
14.91564
14.64634
10.24348
12.17622
13.93299
7.98268
5.87244
10.31489
9.72191
14.58733
17.38830
0.00000
8.21569
14.30324
4.67695
15.91357
4.29276
10.02599
vector 16
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
14.77430
8.34165
9.87302
10.11719
12.07499
9.39600
9.93752
12.81267
14.01210
12.57652
10.09871
10.13226
10.44536
13.54105
14.04244
8.21569
0.00000
13.77646
7.90403
15.17009
6.80059
11.88445
Pgina 132
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
9.81923
12.34981
6.82259
10.24051
9.59681
11.20787
11.65388
8.40724
7.19424
16.54593
15.09998
9.47184
10.73806
8.02372
12.02487
14.30324
13.77646
0.00000
12.85411
9.65029
12.37356
19.04203
vector 18
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
15.67380
5.70319
11.31807
9.89815
13.65290
15.09789
8.66750
11.93343
13.06051
7.62536
4.84685
11.46459
6.95928
14.54440
16.45505
4.67695
7.90403
12.85411
0.00000
15.48134
5.18235
10.06757
vector 19
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
12.26830
14.80091
12.57705
13.25764
10.22630
12.70430
12.26918
13.16596
5.06912
18.93590
18.52200
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
12.38716
15.38944
14.98363
12.43891
15.91357
15.17009
9.65029
15.48134
0.00000
14.56277
19.17538
vector 20
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
15.89394
3.97697
8.96749
7.43652
14.18237
13.76573
10.54188
11.40077
12.87795
9.11359
7.83664
9.18510
9.57761
13.49102
17.01960
4.29276
6.80059
12.37356
5.18235
14.56277
0.00000
11.14679
vector 21
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
dist_n =
13.70733
10.58155
15.63207
12.83300
13.69493
14.28588
9.48185
15.04906
19.21516
8.40982
8.06388
14.29723
13.54685
16.50626
14.29668
10.02599
11.88445
19.04203
10.06757
19.17538
11.14679
0.00000
Pgina 133