Articulo de referencia

Eigenface

Algunos eigenfaces de los Laboratorios AT&T de Cambridge Un eigenface ( / ˈ aɪ ɡ ən -/ EYE -gən- ) es el nombre que se le da a un conjunto de vectores propios cuando se utiliza ...

Algunos eigenfaces de los Laboratorios AT&T de Cambridge

Un eigenface ( / ˈ ɡ ən -/ EYE -gən- ) es el nombre que se le da a un conjunto de vectores propios cuando se utiliza en el problema de visión por computadora del reconocimiento de rostros humanos . [ 1 ] El enfoque de usar eigenfaces para el reconocimiento fue desarrollado por Sirovich y Kirby y utilizado por Matthew Turk y Alex Pentland en la clasificación de rostros. [ 2 ] [ 3 ] Los vectores propios se derivan de la matriz de covarianza de la distribución de probabilidad sobre el espacio vectorial de alta dimensión de las imágenes de rostros. Los propios eigenfaces forman un conjunto base de todas las imágenes utilizadas para construir la matriz de covarianza. Esto produce una reducción de dimensionalidad al permitir que el conjunto más pequeño de imágenes base represente las imágenes de entrenamiento originales. La clasificación se puede lograr comparando cómo los rostros son representados por el conjunto base.

Historia

El enfoque de eigenfaces comenzó con la búsqueda de una representación de baja dimensión de imágenes faciales. Sirovich y Kirby demostraron que el análisis de componentes principales podría usarse en una colección de imágenes faciales para formar un conjunto de características base. [ 2 ] Estas imágenes base, conocidas como eigenpictures, podrían combinarse linealmente para reconstruir imágenes en el conjunto de entrenamiento original . Si el conjunto de entrenamiento consta de M imágenes, el análisis de componentes principales podría formar un conjunto base de N imágenes, donde N < M. El error de reconstrucción se reduce al aumentar el número de eigenpictures; sin embargo, el número necesario siempre se elige menor que M. Por ejemplo, si necesita generar un número de N eigenfaces para un conjunto de entrenamiento de M imágenes faciales, puede decir que cada imagen facial puede estar compuesta de "proporciones" de todas las K "características" o eigenfaces: Imagen facial 1 = (23% de E 1 ) + (2% de E 2 ) + (51% de E 3 ) + ... + (1% E n ).

En 1991, M. Turk y A. Pentland ampliaron estos resultados y presentaron el método de reconocimiento facial basado en eigenfaces. [ 3 ] Además de diseñar un sistema para el reconocimiento facial automatizado mediante eigenfaces, demostraron una forma de calcular los autovectores de una matriz de covarianza, de modo que las computadoras de la época pudieran realizar la descomposición en autovalores en un gran número de imágenes faciales. Las imágenes faciales suelen ocupar un espacio de alta dimensión, y el análisis de componentes principales convencional resultaba intratable en dichos conjuntos de datos. El artículo de Turk y Pentland demostró métodos para extraer los autovectores a partir de matrices cuyo tamaño dependía del número de imágenes, en lugar del número de píxeles.

Una vez establecido, el método eigenface se amplió para incluir métodos de preprocesamiento para mejorar la precisión. [ 4 ] También se utilizaron múltiples enfoques de variedades para construir conjuntos de eigenfaces para diferentes sujetos [ 5 ] [ 6 ] y diferentes características, como los ojos. [ 7 ]

Generación

Un conjunto de eigenfaces se puede generar mediante un proceso matemático llamado análisis de componentes principales (PCA) aplicado a un gran conjunto de imágenes que representan diferentes rostros humanos. De manera informal, los eigenfaces pueden considerarse un conjunto de "ingredientes faciales estandarizados", derivados del análisis estadístico de numerosas fotografías de rostros. Cualquier rostro humano puede considerarse una combinación de estos rostros estándar. Por ejemplo, el rostro de una persona podría estar compuesto por el rostro promedio más un 10 % del eigenface 1, un 55 % del eigenface 2 e incluso un -3 % del eigenface 3. Cabe destacar que no se necesitan muchos eigenfaces combinados para lograr una aproximación razonable de la mayoría de los rostros. Además, dado que el rostro de una persona no se registra mediante una fotografía digital , sino como una lista de valores (un valor para cada eigenface en la base de datos utilizada), se requiere mucho menos espacio para cada rostro.

Los eigenfaces creados aparecerán como áreas claras y oscuras dispuestas en un patrón específico. Este patrón permite identificar y evaluar las distintas características del rostro. Se utilizará un patrón para evaluar la simetría , el estilo de vello facial, la línea del cabello o el tamaño de la nariz y la boca. Otros eigenfaces presentan patrones más difíciles de identificar, y su imagen puede no parecerse en nada a un rostro real.

La técnica empleada para crear eigenfaces y utilizarlas en el reconocimiento facial también se emplea fuera de este ámbito: reconocimiento de escritura , lectura de labios , reconocimiento de voz , interpretación de lenguaje de señas / gestos manuales y análisis de imágenes médicas . Por lo tanto, algunos prefieren usar el término «eigenface» en lugar de «eigenimage».

Implementación práctica

Para crear un conjunto de eigenfaces, se debe:

  1. Prepare un conjunto de entrenamiento de imágenes de rostros. Las imágenes que componen el conjunto de entrenamiento deben haber sido tomadas bajo las mismas condiciones de iluminación y deben estar normalizadas para que los ojos y la boca estén alineados en todas las imágenes. También deben ser remuestreadas a una resolución de píxeles común ( r × c ). Cada imagen se trata como un vector, simplemente concatenando las filas de píxeles de la imagen original, lo que resulta en una sola columna con r × c elementos. Para esta implementación, se supone que todas las imágenes del conjunto de entrenamiento se almacenan en una única matriz T , donde cada columna de la matriz es una imagen.
  2. Resta la media . La imagen promedio a debe calcularse y luego restarse de cada imagen original en T.
  3. Calcula los autovectores y autovalores de la matriz de covarianza S. Cada autovector tiene la misma dimensionalidad (número de componentes) que las imágenes originales y, por lo tanto, puede considerarse una imagen en sí misma. Los autovectores de esta matriz de covarianza se denominan, por consiguiente, autocaras. Representan las direcciones en las que las imágenes difieren de la imagen media. Normalmente, este paso es computacionalmente costoso (si es que es posible), pero la aplicabilidad práctica de las autocaras radica en la posibilidad de calcular los autovectores de S de forma eficiente, sin necesidad de calcular S explícitamente, como se detalla a continuación.
  4. Elija los componentes principales. Ordene los valores propios en orden descendente y organice los vectores propios en consecuencia. El número de componentes principales k se determina arbitrariamente estableciendo un umbral ε en la varianza total. Varianza totalv=(λ1+λ2+...+λnorte){\displaystyle v=(\lambda _{1}+\lambda _{2}+...+\lambda _{n})}, n= número de componentes, yλ{\displaystyle \lambda }representa el valor propio del componente.
  5. k es el número más pequeño que satisface(λ1+λ2+...+λk)v>ϵ{\displaystyle {\frac {(\lambda _ {1}+\lambda _ {2}+...+\lambda _ {k})}{v}}>\epsilon }

Estas eigenfaces ahora se pueden usar para representar tanto rostros existentes como nuevos: podemos proyectar una nueva imagen (con la media restada) sobre las eigenfaces y así registrar cómo ese nuevo rostro difiere del rostro promedio. Los valores propios asociados a cada eigenface representan cuánto varían las imágenes del conjunto de entrenamiento con respecto a la imagen promedio en esa dirección. Se pierde información al proyectar la imagen sobre un subconjunto de los vectores propios, pero las pérdidas se minimizan al conservar las eigenfaces con los valores propios más grandes. Por ejemplo, trabajar con una imagen de 100 × 100 producirá 10 000 vectores propios. En aplicaciones prácticas, la mayoría de los rostros se pueden identificar mediante una proyección sobre entre 100 y 150 eigenfaces, de modo que la mayoría de los 10 000 vectores propios se pueden descartar.

Código de ejemplo de Matlab

Aquí hay un ejemplo de cálculo de eigenfaces con la base de datos extendida de rostros de Yale B. Para evitar cuellos de botella computacionales y de almacenamiento, las imágenes de rostros se muestrean a un factor de 4×4=16.

clear all ; close all ; load yalefaces [ h , w , n ] = size ( yalefaces ); d = h * w ; % vectorizar imágenes x = reshape ( yalefaces , [ d n ]); x = double ( x ); % restar la media mean_matrix = mean ( x , 2 ); x = bsxfun (@ minus , x , mean_matrix ); % calcular la covarianza s = cov ( x ' ); % obtener el valor propio y el vector propio [ V , D ] = eig ( s ); eigval = diag ( D ); % ordenar los valores propios en orden descendente eigval = eigval ( end : - 1 : 1 ); V = fliplr ( V ); % muestra la media y los vectores propios principales del 1.º al 15.º figura , subplot ( 4 , 4 , 1 ) imagesc ( reshape ( mean_matrix , [ h , w ])) colormap gray for i = 1 : 15 subplot ( 4 , 4 , i + 1 ) imagesc ( reshape ( V (:, i ), h , w )) end

Tenga en cuenta que, si bien la matriz de covarianza S genera muchos eigenfaces, solo se necesita una fracción de ellos para representar la mayoría de los rostros. Por ejemplo, para representar el 95 % de la variación total de todas las imágenes de rostros, solo se necesitan los primeros 43 eigenfaces. Para calcular este resultado, implemente el siguiente código:

% evaluar el número de componentes principales necesarios para representar el 95% de la varianza total. eigsum = suma ( eigval ); csum = 0 ; para i = 1 : d csum = csum + eigval ( i ); tv = csum / eigsum ; si tv > 0.95 k95 = i ; break end ; end ;

Cálculo de los autovectores

Realizar PCA directamente sobre la matriz de covarianza de las imágenes suele ser computacionalmente inviable. Si se utilizan imágenes pequeñas, digamos de 100  ×  100 píxeles, cada imagen es un punto en un espacio de 10 000 dimensiones y la matriz de covarianza S es una matriz de 10 000  × 10 000  = 10⁸ elementos. Sin embargo, el rango de la matriz de covarianza está limitado por el número de ejemplos de entrenamiento: si hay N ejemplos de entrenamiento, habrá como máximo N  1 vectores propios con valores propios distintos de cero. Si el número de ejemplos de entrenamiento es menor que la dimensionalidad de las imágenes, los componentes principales se pueden calcular más fácilmente como sigue.

Sea T la matriz de ejemplos de entrenamiento preprocesados, donde cada columna contiene una imagen con la media restada. La matriz de covarianza se puede calcular como S = TT T y la descomposición en vectores propios de S viene dada por

Svi=TTTvi=λivi{\displaystyle \mathbf {Sv} _{i}=\mathbf {T} \mathbf {T} ^{T}\mathbf {v} _{i}=\lambda _{i}\mathbf {v} _{i}}

Sin embargo, TT T es una matriz grande, y si en su lugar tomamos la descomposición en valores propios de

TTTi=λii{\displaystyle \mathbf {T} ^{T}\mathbf {T} \mathbf {u} _ {i}=\lambda _ {i}\mathbf {u} _ {i}}

Entonces observamos que al premultiplicar ambos lados de la ecuación por T , obtenemos

TTTTi=λiTi{\displaystyle \mathbf {T} \mathbf {T} ^{T}\mathbf {T} \mathbf {u} _{i}=\lambda _ {i}\mathbf {T} \mathbf {u} _{i}}

Esto significa que, si u i es un vector propio de T T T , entonces v i  = Tu i es un vector propio de S . Si tenemos un conjunto de entrenamiento de 300 imágenes de 100 × 100 píxeles, la matriz T T T es una matriz de 300 × 300, que es mucho más manejable que la matriz de covarianza de 10 000 × 10 000. Sin embargo, observe que los vectores resultantes v i no están normalizados; si se requiere normalización, debe aplicarse como un paso adicional.      

Conexión con SVD

Sea X el d×norte{\displaystyle d\times n}Matriz de datos con columnaincógnitai{\displaystyle x_{i}}como el vector de imagen con la media restada. Luego,

doovarianortedomi(incógnita)=incógnitaincógnitaTnorte{\displaystyle \mathrm {covarianza} (X)={\frac {XX^{T}}{n}}}

Sea la descomposición en valores singulares (SVD) de X :

incógnita=UΣVT{\displaystyle X=U{\Sigma }V^{T}}

Luego, la descomposición de valores propios paraincógnitaincógnitaT{\displaystyle XX^{T}}es:

incógnitaincógnitaT=UΣΣTUT=UΛUT{\displaystyle XX^{T}=U{\Sigma }{{\Sigma }^{T}}U^{T}=U{\Lambda }U^{T}}, donde Λ=diag (autovalores deincógnitaincógnitaT{\displaystyle XX^{T}})

Así podemos ver fácilmente que:

Las caras propias = las primerask{\displaystyle k}(knorte{\displaystyle k\leq n}) columnas deU{\displaystyle U}asociado con los valores singulares distintos de cero.
El i-ésimo valor propio deincógnitaincógnitaT=1norte({\displaystyle XX^{T}={\frac {1}{n}}(}con valor singular deincógnita)2{\displaystyle X)^{2}}(es decir,λi=1norteσi2{\displaystyle \lambda _{i}={\frac {1}{n}}\sigma _{i}^{2}})

Al utilizar la descomposición en valores singulares (SVD) en la matriz de datos X , no es necesario calcular la matriz de covarianza real para obtener las autocaras.

Uso en el reconocimiento facial

El reconocimiento facial fue la motivación para la creación de eigenfaces. Para este uso, eigenfaces ofrece ventajas sobre otras técnicas disponibles, como la velocidad y la eficiencia del sistema. Dado que eigenfaces es principalmente un método de reducción de dimensionalidad, un sistema puede representar a muchos sujetos con un conjunto de datos relativamente pequeño. Como sistema de reconocimiento facial, también es bastante invariante a grandes reducciones en el tamaño de la imagen; sin embargo, comienza a fallar considerablemente cuando la variación entre las imágenes vistas y la imagen de prueba es grande.

Para reconocer rostros, las imágenes de la galería —aquellas que ve el sistema— se guardan como colecciones de pesos que describen la contribución de cada eigenface a esa imagen. Cuando se presenta un nuevo rostro al sistema para su clasificación, se encuentran sus propios pesos proyectando la imagen sobre la colección de eigenfaces. Esto proporciona un conjunto de pesos que describen el rostro de prueba. Estos pesos se clasifican luego comparándolos con todos los pesos del conjunto de la galería para encontrar la coincidencia más cercana. El método del vecino más cercano es un enfoque simple para encontrar la distancia euclidiana entre dos vectores, donde el mínimo se puede clasificar como el sujeto más cercano. [ 3 ] : 590

Intuitivamente, el proceso de reconocimiento con el método eigenface consiste en proyectar las imágenes de consulta en el espacio facial abarcado por los eigenfaces calculados y encontrar la coincidencia más cercana a una clase de rostro en ese espacio facial.

Pseudocódigo [ 8 ]
  • Dado el vector de imagen de entradaUnorte{\displaystyle U\in \Re ^{n}}, el vector de imagen promedio de la base de datosMETRO{\displaystyle M}, calcula el peso de la k-ésima cara propia como:wk=VkT(UMETRO){\displaystyle w_{k}=V_{k}^{T}(UM)}
    Luego, forme un vector de pesos.W=[w1,w2,...,wk,...,wnorte]{\displaystyle W=[w_{1},w_{2},...,w_{k},...,w_{n}]}
  • Comparar W con vectores de pesoWmetro{\displaystyle W_{m}}de imágenes en la base de datos. Calcular la distancia euclidiana.d=WWmetro2{\displaystyle d=\|W-W_{m}\|^{2}}
  • Sid<ϵ1{\displaystyle d<\epsilon _ {1}}, entonces la entrada m en la base de datos es una candidata a reconocimiento.
  • Siϵ1<d<ϵ2{\displaystyle \epsilon _{1}<d<\epsilon _{2}}, entonces U puede ser un rostro desconocido y puede agregarse a la base de datos.
  • Sid>ϵ2,U{\displaystyle d>\epsilon _ {2},U}no es una imagen de un rostro.

Los pesos de cada imagen de la galería solo transmiten información que describe esa imagen, no ese sujeto. Una imagen de un sujeto bajo iluminación frontal puede tener pesos muy diferentes a los del mismo sujeto bajo una fuerte iluminación lateral izquierda. Esto limita la aplicación de dicho sistema. Los experimentos del artículo original sobre Eigenface presentaron los siguientes resultados: un promedio del 96 % con variación de luz, 85 % con variación de orientación y 64 % con variación de tamaño. [ 3 ] : 590

Se han realizado diversas extensiones al método eigenface. El método eigenfeatures combina métricas faciales (que miden la distancia entre rasgos faciales) con la representación eigenface. Fisherface utiliza análisis discriminante lineal [ 9 ] y es menos sensible a las variaciones de iluminación y pose del rostro. Fisherface utiliza datos etiquetados para conservar más información específica de la clase durante la etapa de reducción de dimensionalidad.

Otra alternativa a los eigenfaces y los Fisherfaces es el modelo de apariencia activa . Este enfoque utiliza un modelo de forma activa para describir el contorno de un rostro. Al recopilar numerosos contornos faciales, se puede utilizar el análisis de componentes principales para crear un conjunto de modelos base que capturen la variación de diferentes rostros.

Muchos enfoques modernos aún utilizan el análisis de componentes principales como medio para reducir la dimensionalidad o para formar imágenes base para diferentes modos de variación.

Revisar

Eigenface proporciona una forma relativamente sencilla de realizar el reconocimiento facial, ya que:

  • Su proceso de entrenamiento es completamente automático y fácil de programar.
  • Eigenface reduce adecuadamente la complejidad estadística en la representación de imágenes faciales.
  • Una vez calculados los eigenfaces de una base de datos, se puede lograr el reconocimiento facial en tiempo real.
  • Eigenface puede manejar grandes bases de datos.

Sin embargo, las deficiencias del método de eigenfaces también son evidentes:

  • Es muy sensible a la iluminación, la escala y la traslación, y requiere un entorno altamente controlado.
  • Eigenface tiene dificultades para capturar los cambios de expresión.
  • Los eigenfaces más significativos se refieren principalmente a la codificación de la iluminación y no proporcionan información útil sobre el rostro en sí.

Para mitigar la distracción causada por la iluminación, el método eigenface suele descartar los tres primeros eigenfaces del conjunto de datos. Dado que la iluminación suele ser la causa de las mayores variaciones en las imágenes faciales, los tres primeros eigenfaces capturan principalmente información sobre cambios de iluminación tridimensionales, lo que contribuye poco al reconocimiento facial. Al descartar estos tres eigenfaces, se logra una mejora considerable en la precisión del reconocimiento facial, pero otros métodos como fisherface y el espacio lineal siguen siendo superiores.

Véase también

Referencias

  1. Navarrete, Pablo; Ruiz-Del-Solar, Javier (noviembre de 2002). "Análisis y comparación de enfoques de reconocimiento facial basados ​​en el espacio propio" (PDF) . Revista internacional de reconocimiento de patrones e inteligencia artificial . 16 (7): 817– 830. CiteSeerX 10.1.1.18.8115 . doi : 10.1142/S0218001402002003 . S2CID 7130804. Archivado del original (PDF) el 10 de agosto de 2017. Recuperado el 28 de noviembre de 2016 .  
  2. 1 2 L. Sirovich; M. Kirby (1987). "Procedimiento de baja dimensión para la caracterización de rostros humanos". Journal of the Optical Society of America A . 4 (3): 519– 524. Bibcode : 1987JOSAA...4..519S . doi : 10.1364/JOSAA.4.000519 . PMID 3572578 . 
  3. 1 2 3 4 Turk, Matthew A; Pentland, Alex P (1991). "Reconocimiento facial mediante eigenfaces". Actas. Conferencia de la IEEE Computer Society de 1991 sobre visión por computadora y reconocimiento de patrones (PDF) . págs. 586–591 . doi : 10.1109/cvpr.1991.139758 . ISBN  0-8186-2148-6.
  4. Yambor, Wendy S.; Draper, Bruce A.; Beveridge, J. Ross (2002). "Análisis de algoritmos de reconocimiento facial basados ​​en PCA: selección de vectores propios y medidas de distancia" (PDF) . Métodos de evaluación empírica en visión por computadora . Serie en percepción automática e inteligencia artificial. Vol. 50. WORLD SCIENTIFIC. págs. 39–60 . doi : 10.1142/9789812777423_0003 . ISBN   978-981-02-4953-3ISSN 1793-0839 
  5. Belhumeur, PN; Kriegman, DJ (1996). "¿Cuál es el conjunto de imágenes de un objeto bajo todas las posibles condiciones de iluminación?". Actas de la Conferencia CVPR de la Sociedad de Computación del IEEE sobre Visión por Computadora y Reconocimiento de Patrones . págs. 270–277 . doi : 10.1109/cvpr.1996.517085 . ISBN  0-8186-7259-5.
  6. Burnstone, James; Yin, Hujun (2011). «Eigenlights: Recuperación de la iluminación a partir de imágenes faciales». Ingeniería de datos inteligentes y aprendizaje automatizado - IDEAL 2011. Notas de clase en ciencias de la computación. Vol. 6936. págs. 490–497 . doi : 10.1007/978-3-642-23878-9_58 . ISBN   978-3-642-23877-2.
  7. Moghaddam, B.; Wahid, W.; Pentland, A. (1998). "Más allá de los eigenfaces: coincidencia probabilística para el reconocimiento facial". Actas de la Tercera Conferencia Internacional IEEE sobre Reconocimiento Automático de Rostros y Gestos . págs. 30–35 . doi : 10.1109/afgr.1998.670921 . ISBN  0-8186-8344-9.
  8. M. Turk; A. Pentland (1991). "Eigenfaces para el reconocimiento" (PDF) . Journal of Cognitive Neuroscience . 3 (1): 71– 86. doi : 10.1162 / jocn.1991.3.1.71 . PMID 23964806. S2CID 26127529 .  
  9. Belhumeur, PN; Hespanha, JP; Kriegman, DJ (julio de 1997). "Eigenfaces vs. Fisherfaces: reconocimiento mediante proyección lineal específica de clase" (PDF) . IEEE Transactions on Pattern Analysis and Machine Intelligence . 19 (7): 711–720 . CiteSeerX 10.1.1.5.1467 . doi : 10.1109/34.598228 . ISSN 0162-8828 . Archivado (PDF) del original el 29 de marzo de 2018.  

Lecturas adicionales

  • M. Kirby; L. Sirovich (1990). "Aplicación del procedimiento de Karhunen-Loeve para la caracterización de rostros humanos". IEEE Transactions on Pattern Analysis and Machine Intelligence . 12 (1): 103– 108. doi : 10.1109/34.41390 .
  • A. Pentland, B. Moghaddam, T. Starner, O. Oliyide y M. Turk. (1993). " Eigenespacios modulares y basados ​​en vistas para el reconocimiento facial ". Informe técnico 245, MIT Media Lab.
  • MH Yang (2000). "Reconocimiento facial mediante eigenfaces de kernel". Actas de la Conferencia Internacional sobre Procesamiento de Imágenes . Vol.  1. pp. 37–40 . doi : 10.1109/ICIP.2000.900886 . 
  • R. Cendrillon; B. Lovell (2000). "Reconocimiento facial en tiempo real mediante eigenfaces" (PDF) . Visual Communications and Image Processing . pp. 269–276 . doi : 10.1117/12.386642 . 
  • T. Heseltine, N. Pears, J. Austin, Z. Chen (2003). " Reconocimiento facial: una comparación de enfoques basados ​​en la apariencia ". Actas del VII Congreso de Computación de Imágenes Digitales: Técnicas y Aplicaciones , vol. 1, 59-68.
  • D. Pissarenko (2003). Reconocimiento facial basado en rostros propios .
  • F. Tsalakanidoua; D. Tzovarasb; MG Strintzisa (2003). "Uso de eigenfaces de profundidad y color para el reconocimiento facial". Pattern Recognition Letters . 24 (9): 1427– 1435. Bibcode : 2003PaReL..24.1427T . doi : 10.1016/S0167-8655(02)00383-5 .
  • Delac, K., Grgic, M., Liatsis, P. (2005). " Métodos estadísticos basados ​​en la apariencia para el reconocimiento facial ". Actas del 47.º Simposio Internacional ELMAR-2005 centrado en sistemas y aplicaciones multimedia , Zadar, Croacia, 8-10 de junio de 2005, pp.  151-158.
  • Página principal de reconocimiento facial
  • Análisis de componentes principales (PCA) en el conjunto de datos FERET
  • Desarrollo de la inteligencia: Eigenfaces y el área fusiforme de la cara
  • Tutorial sobre reconocimiento facial mediante eigenfaces y clasificadores de distancia.
  • Código de ejemplo de Matlab para caras propias
  • Implementación de PCA con OpenCV + C++Builder6
  • Demostración de eigenfaces mediante applet de Java. Archivado el 1 de noviembre de 2011 en Wayback Machine.
  • Introducción a los eigenfaces
  • Función de reconocimiento facial en OpenCV
  • Reconocimiento de expresiones faciales basado en eigenfaces en Matlab. Archivado el 4 de junio de 2017 en Wayback Machine.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Eigenface&oldid=1335766723 "