Institutos Universitarios

Eigen-caras y codificación

Eigen-caras y codificación

Objetivo:

 

Validar la proyección y posterior reconstrucción de una imagen conteniendo una cara sobre un espacio de eigen - caras. 
El cálculo de las eigen - caras se sostiene en el método estadístico de componentes principales. En el análisis de componentes principales se busca, partiendo de una matriz inicial de datos, generar unas nuevas variables de tal forma que estas últimas puedan expresar de una forma más estructurada la variabilidad de la primera matriz. En concreto la matriz de variables resultantes está ahora ordenada, de forma que todas las variables están incorrelacionadas y la primera variable es la que contiene más variabilidad del grupo inicial, la segunda variable es la segunda con más variabilidad y así sucesivamente. Es posible demostrar que la transformación de la matriz original necesaria para que se cumplan esas condiciones, depende de la matriz de autovectores asociados a los autovalores de la matriz original de datos; es decir la matriz de autovectores determina la rotación a la que hay que someter las variables iniciales para que cumplan las condiciones anteriores.

 

Obtención de la base de eigen - caras

Para la utilización de esta técnica con imágenes bidimensionales, es necesario codificarlas primero como un vector, para ello basta concatenar cada fila tras la anterior y posteriormente construir una matriz formada por columnas que contienen los vectores de imágenes. Ahora es posible realizar el análisis de componentes principales. El cálculo de los autovectores P viene dado por la solución a la siguiente ecuación:

Var(X) P = P L

siendo:

X la matriz que contiene en sus columnas las imágenes.
Var(X) la matriz de dispersión de la matriz inicial de datos X.
L el vector de autovalores de X.
P la matriz de autovectores asociada a L.

Y las llamadas eigen - caras son los autovectores P normalizados. Estas son llamadas así por que la representación de estos autovectores como imágenes se asemejan a caras. El cálculo de las eigen - caras es muy dependiente de la geometría de la imagen, por eso se ha introducido un paso previo que es la "normalización" de las caras. Para ello se ha buscado que ojos y boca (y por tanto la cara en general) "caigan" sobre unos puntos predeterminados en la imagen.

A continuación se presentan algunas de las primeras eigen - caras generadas de una base de imágenes inicial de 140 caras, éstas fueron "normalizadas" antes de ser introducidas dentro del Análisis de Componentes Principales.

 

Visualización de las Eigen - Caras 1,2,3,4,5 y 140

Proyección de una cara

Teniendo los autovectores ya normalizados ( para que cumplan la condición de ortogonalidad y ortonormalidad), se pueden proyectar las caras con las que formamos esta base ( o cualquier otra cara) sobre este espacio; para ello:

Y = P" X

siendo Y la matriz de componentes o el resultado de la proyección de X sobre P. En este momento tenemos cada cara definida por un vector conteniendo rango (Var(X)) elementos, los valores de cada elemento de ese vector determinarán el peso de cada autovector sobre esa imagen, es decir, determinan la importancia de cada uno de los rasgos sintetizados por los autovectores en esa cara.
El análisis de componentes principales es un método holístico de extracción de rasgos, los rasgos vienen determinados por su mayor o menor constancia a través de las imágenes; así, si todas la imágenes tienen una estructura ovalada formando una cara, ésta aparecerá en el primer autovector y así sucesivamente. Si el grupo inicial de imágenes son caras, la primera eigen-cara viene a ser un promedio general, como un filtro paso-bajo que representa la estructura gruesa de una imagen. Si una imagen se proyecta sobre esa eigen-cara, el resultado será cercano a uno, si la imagen no contiene una cara, el resultado distará de uno lo suficiente como para establecer un umbral que determine si una imagen contiene o no una cara.

Reconstrucción de una cara

Teniendo los componentes, es posible ahora reconstruir la cara original, para ello basta realizar la transformación lineal:

Xrec = P Y

siendo:
Xrec La matriz de imágenes reconstruida.
P Matriz de Autovectores.
Y Componentes de las imágenes proyectadas.

La calidad de la reconstrucción dependerá de diversos factores como el número de caras usadas para generar el espacio de eigen - caras, la geometría de las imágenes etc ...