CINVESTAV-IPN

Maestría en Ciencias de la Computación

Jose Luis Ortigosa Flores

Realidad Aumentada

Tarea 5: Cálculo de la homografía

MATERIAREALIDAD AUMENTADA
ALUMNOORTIGOSA FLORES JOSE LUIS
FECHA ENTREGA24-NOV-2015

Actividades

  1. Realizar un patrón con triangulos rectos
  2. Tomar una fotografía del patrón en perspectiva
  3. Calcular la homografía
  4. Verificar si es correcto el cálculo
  5. Programa en octave

Patrón con triangulos rectos, fotografía y modelo

Patrón con triangulos rectos
Modelo

La homografía asociara los puntos que estan en los ángulos rectos de los triangulos 3,1,6 y 7 con los puntos A,B,C y D del modelo. De tal manera que podra transformas puntos del modelo a puntos en la imagen.

Calcular la homografía

El conjunto de puntos

El conjunto de puntos homogeinizados de la imagen son los siguientes: P1 = { (68,119,1)T,(180,100,1)T,(63,257,1)T y (183,280,1)T}

El conjunto de puntos homogeinizados del modelo son los siguientes: P2 = { (-3,3,1)T,(3,3,1)T,(-3,-3,1)T y (3,-3,1)T}

Normalización de los vectores

Para normalizar los vectores necesitamos crear la matriz T asociada a cada conjunto de puntos.

Matriz T

Se debe de cálcular la matriz T para cada conjunto de puntos. Para la cual con ayuda de libreOffice se calcula la media, y desviación estandar, para cada conjunto.

Cálculos para determinar desviación estandar y media para el conjunto de puntos de la imagen. (P1)
Cálculos para determinar desviación estandar y media para el conjunto de puntos del modelo. (P2)

Una vez obtenidos los datos necesarios se construyen las matrices T1(Asociada con los puntos de la imagen) y T2 (asociada con los puntos del modelo)

Resumen de cálculos obtenidos.

Las matrices obtenidas son las siguientes.

Matriz T1
Matriz T2

Una vez obtenidas las matrices ya podemos normalizar los vectores. Para normalizar los vectores, simplemente multiplicamos cada vector por la matriz T, (Cada vector del conjunto P1 por la matriz T1 y analogamente para P2 y T2)

Normalización de los vectores correspondientes a la imagen. (conjunto P1) Para obtener el conjunto de vectores P1'
Normalización de los vectores correspondientes a la imagen. (conjunto P2) Para obtener el conjunto de vectores P2'

Calculando la Homografía

Como se puede ver en la formula siguiente para calcular H que es la homografía necesitamos tener 3 matrices la inversa de la matriz T1 H' y la matriz T2. De esas tres matrices ya tenemos T2 y podemos calcular la inversa de T1, sólo hace falta calcular H'.

Calculando H'

Debemos de calcular H', lo que sabemos de H' es que un lambda multiplicado por un vector(normalizado) de la imagen (P1') sera igual a multiplicar H' por el vector (normaliado) del modelo (P2')

Al realizar la multiplicación de matrices y despejando a u y v, tendremos el par de ecuaciones siguientes.

Que en su forma matricial seria algo como lo siguiente:

De donde se deduce que para encontrar la matriz H' debemos de tener a lo menos 4 vectores, para poder resolver el sistema de ecuaciones y obtener los valores de H'. Se requieren de 4 vectores en el modelo y los otros 4 vectores en la imagen para generar almenos 8 ecuaciones.

Tomamos una pareja (uno de la imagen y otro del modelo) de vectores y los sustituimo en las ecuaciones anteriores (forma matricial) para rellenar la matriz. de 8x8. Y esto lo repetimos para las parejas restantes.

Al terminar obtendremos unas matrices como las siguientes:

Para resolver este sistema de ecuaciones sólo hace falta calcular la inversa de la matriz A(8x8) y multiplicarla por el vector V a fin de encontrar la solución para los elementos de H'.

En la imagen anterior podemos ver que la matriz verde (8x8) es la inversa de A y que la estamos multiplicando por el vector V, con lo que obtenemos cada uno de los elementos de H'.

Matriz H'
Calculando H

Para calcular H se necesitaba resolver la siguiente ecuación.

Como ya tenemos T2 y H' ya sólo resta calcular la inversa de T1 que es la siguiente:

Ya con las tres matrices las multiplicamos para obtener H y con ella la homobrafía.

La homografía

Al finalizar la multiplicación obtenemos que la homografía es la siguiente matriz.

Verificar si es correcto el cálculo

Para verificar que el cálculo fue correcto sólo resta multiplicar un vector del modelo por la homografía y nos tiene que dar el vector correspondiente en la imagen, y comparar el resltado de la multiplicación con el vector correspondiente para checar si sus valores son cercanos.

Segun la formula de arriba si multiplicamos un vector de nuestro modelo (P2) por la matriz H (la homografía) debemos obtener el vector correspondiente en P1

El la siguiente imagen vemos los resultados de multiplicar cada uno de los vectores.

En los recuadros vemos del lado izquierdo el resultado de multiplicar un vector del modelo por la homografia y del lado izquierdo el original.

Como se puede ver en la imagen anterior los puntos parecen cercanos, en donde en ocaciones el error es grande por ejemplo en el P14 en la coordenada Y vemos que hay una diferencia de 50px.

Ahora resta verificar si al calcular la inversa de la matriz H y al multiplicar vectores que estan en la imagen nos regresa vectores en el modelo. Para lo cual calculamos H^⁻1

Y realizamos las multiplicaciones.

Verificación de la inversa de la homografía, mandando puntos de la imagen al modelo.

Como podemos ver en la imagen la inversa manda casi correctamente los puntos de la imagen al modelo.

Las posibles causas de que la homografía tenga errores es que la imagen no tiene la suficiente perspectiva como para que funcione mas precisamente la homobrafía o que hay que considerar un lambda.

Programa

Script en Octave