Desarrollo de un Multimarcador para Realidad Aumentada


Desde Diciembre del 2012 me empeñe en desarrollar mi propia detección de marcadores en CSharp y XNA, para ello estoy empleando OpenCvSharp, un marco de trabajo muy bueno que esta siendo portado desde OpenCv.

Para el desarrollo de diferentes pasos me he inspirado en js-aruco que me permitió entender los pasos para desarrollar la homografía. La codificación del marcador es propia y esta basada en una secuencia de 2 a la 9 combinaciones, es decir el marcador esta dividido en un tablero de 7 x 7 partes (49), de las cuales solo tomo 9 que son las centrales. La parte exterior permite crear una bloque totalmente negro que separa el marcador de la parte blanca, la segunda cuadricula interior determina la orientación y la siguiente cuadricula es la que permite determinar la codificación, cuyo resultado son 512 marcadores posibles.

Una vez ubicado e identificado el marcador, el siguiente reto fue determinar la rotación, traslación y escalado. Fue realmente una tarea ardua, debido a que se tenía que transmitir estos valores a 3D en XNA, que de por si es ya es difícil sino tienes mucha experiencia en trabajar con 3D. Luego de mucho investigar en la matemática proyectiva y funciones recomendadas  (ProjectPoints2, SolvePnP, Rodrigues, etc.) que fueron casi un dolor agudo de cabeza por los datos de entrada como de salida (interpretación); me decidí hacerlo a mi modo…. básicamente basarme en el ángulo de rotación y su cambio según los sentidos de orientación que me permite trasladar y rotar el objeto en 3D según el movimiento del marcado. Esto me  permite economizar en tiempo de ejecución y memoria.

El escalado fue mucho más sencillo pues tomé como referencia el perímetro y en función de este determinar el tamaño del modelo a presentar.

Este es el video de muestra del avance logrado; ahora queda optimizar el código y documentarlo para su posterior liberación.

Juan Cadillo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s