CENTRO DE INFORM ´ATICA INDUSTRIAL
S EGUIMIENTO DE POSE DEL OBSERVADOR UTILIZANDO C AMARA WEB ´
Tesis presentada para optar por el T´ıtulo de Ingenier´ıa en Ciencias Inform ´aticas
Autor: Liudmila Cecilia Rodr´ıguez Ricardo
Tutor: MSc.Liudmila Pupo Pe ˜ na Co-tutor: MSc.Yoander Cabrera D´ıaz
La Habana, Junio de 2011
Yo, Liudmila Cecilia Rodr´ıguez Ricardo, declaro ser autor de la presente tesis y re- conozco a la Universidad de las Ciencias Inform ´aticas los derechos patrimoniales de la misma, con car ´acter exclusivo.
Para que as´ı conste, firmo la presente declaraci ´on de autor´ıa en La Habana a los d´ıas del mes de del a ˜no .
Firma del autor
Firma del Tutor MSc. Liudmila Pupo Pe ˜na
Firma del Co-Tutor MSc. Yoander Cabrera D´ıaz
Nombre y Apellidos: Liudmila Pupo Pe ˜na Edad: 26 a ˜nos
Ciudadan´ıa: cubana
Instituci ´on: Universidad de las Ciencias Inform ´aticas (UCI) T´ıtulo: MSc en Inform ´atica Aplicada
Categor´ıa Docente: Instructor E-mail: [email protected]
Graduado de Ingener´ıa en Ciencias Inform ´aticas en la UCI en el a ˜no 2007, con 6 a ˜nos de experiencia en los temas de Gr ´aficos por Computadora y Realidad Virtual.
Profesora del Dpto. de Visualizaci ´on y Realidad Virtual.
A mi familia
A todos los profesores que me ayudaron de una forma u otra en el desarrollo de la investigaci ´on especialmente a mi tutora Liudmila Pupo y el profesor Ernesto Guevara.
A la UCI, por haberme permitido conocer personas tan especiales como: mis amigas y compa ˜neras Sandra, Irenna, Dayanis, principalmente a Yoana, Libeidy Liusba, que las considero m ´as que mis amigas, mis hermanas blancas como yo les digo. No puedo dejar de mencionar a Adriel, Alexis, Adri ´an Fonseca Juan Carlos, personas que siempre me apoyaron mucho durante estos a ˜nos de uni- versidad.
Este trabajo est ´a dedicado a mi familia especialmente a mi abuela Virtudes y a mi mam ´a.
El seguimiento de pose del observador es el proceso que se realiza para obtener posici ´on y orientaci ´on del punto de vista de la persona que interact ´ua con un Sistema de Visualizaci ´on Estereosc ´opica utilizando una c ´amara web. Los motores y bibliotecas gr ´aficas que utilizan t ´ecnicas de visualizaci ´on estereosc ´opica, necesitan conocer la pose 1 del usuario que observa la escena, para mostrar los objetos desde un punto de vista realista en el mundo virtual. Graphics Library Stereo Vision Engine (GLSVe) es una biblioteca gr ´afica desarrollada en la facultad en conjunto con la Universidad de Oviedo, que permite la creaci ´on de sistemas estereosc ´opicos. El objetivo de este trabajo ha sido incorporarle a GLSVe el seguimiento de pose del observador utilizando c ´amara web, para lograrlo se realiz ´o un estudio de los m ´etodos y t ´ecnicas existentes para la construcci ´on de sistemas de este tipo. Como resultado del estudio se constru- y ´o un m ´odulo en C++ con interfaz para C Sharp utilizando la biblioteca Artoolkit, que realiza seguimiento de pose del observador utilizando c ´amara web y un demo que demuestra la correcta integraci ´on con GLSVe.
Palabras clave: GLSVe, observador, seguimiento de pose, visualizaci ´on estereosc ´opi- ca
1posici ´on y orientaci ´on
Introducci ´on 1
Estructura del documento . . . 3
1. Fundamentaci ´on Te ´orica 4 1.1. Realidad virtual y visualizaci ´on estereosc ´opica . . . 4
1.2. Sistemas de seguimiento . . . 7
1.2.1. T ´ecnicas de seguimiento de pose con c ´amaras de video en tiem- po real . . . 10
1.2.2. T ´ecnicas de calibraci ´on de c ´amara . . . 13
1.2.3. Tipos de calibraci ´on de c ´amara . . . 15
1.3. Bibliotecas para el desarrollo de visi ´on por computadora . . . 15
1.3.1. OpenCv . . . 16
1.3.2. ArToolkit . . . 16
1.3.3. Touchless . . . 17
2. Soluci ´on Propuesta 19 2.1. Propuesta del sistema . . . 19
2.2. Calibraci ´on de c ´amara . . . 21
2.3. Descripci ´on del patr ´on utilizado . . . 23
2.4. Detecci ´on y reconocimiento de patrones . . . 24
2.5. Estimaci ´on de la posici ´on y orientaci ´on del patr ´on. . . 26
2.6. Metodolog´ıas y herramientas para el desarrollo de software . . . 31
2.6.1. Biblioteca gr ´afica . . . 31
2.6.2. Lenguajes de programaci ´on . . . 31
2.6.3. Framework de desarrollo . . . 32
2.6.4. Entorno integrado de desarrollo utilizado . . . 32
2.6.5. Herramienta de modelado . . . 32
2.6.6. Metodolog´ıa de software . . . 33
3. Dise ˜no de la soluci ´on 34 3.1. Caracter´ısticas del sistema . . . 34
3.1.1. Modelo de dominio . . . 34
3.1.2. Personal relacionado con el sistema . . . 35
3.1.3. Requisitos de Software . . . 35
3.1.4. Exploraci ´on. Historia de Usuario . . . 37
3.1.5. Planeaci ´on del sistema . . . 40
3.2. Construcci ´on de la soluci ´on . . . 42
3.2.1. Tarjetas Contenido, Responsabilidad y Colaboraci ´on (CRC) . . . 42
3.2.2. Diagrama de componentes . . . 45
3.2.3. Patrones de dise ˜no . . . 46
3.2.4. Est ´andares de codificaci ´on . . . 47
3.3. Desarrollo de las iteraciones . . . 48
3.3.1. Iteraci ´on 1 . . . 49 3.3.2. Iteraci ´on 2 . . . 50 3.3.3. Iteraci ´on 3 . . . 51
4. An ´alisis de resultados 52
4.1. Pruebas de aceptaci ´on . . . 53
Conclusiones 55
Recomendaciones 56
Referencias bibliogr ´aficas 57
Acr ´onimos 59
1.1. Aplicaci ´on en la medicina, juegos y educaci ´on . . . 5
1.2. Visualizaci ´on de los Sistemas Realidad Virtual (SRV) en monitores 2D . 5 1.3. Dispositivos de visualizaci ´on estereosc ´opica . . . 5
1.4. Formas de interacci ´on con los Sistemas de Visualizaci ´on Estere- osc ´opica (SVE) . . . 6
1.5. Vista desde diferentes perspectivas . . . 6
1.6. Immersion’s CyberGlove . . . 8
1.7. Ascension Flock of Birdsun dispositivo de tracking magn ´etico . . . 9
1.8. Gafas (con led incorporados) utilizadas para el tracking infrarrojo . . . . 9
1.9. Controles del Nintendo Revolution . . . 10
1.10.T ´ecnicas de seguimiento . . . 11
2.1. Composici ´on del sistema propuesto . . . 20
2.2. Modelo geom ´etrico de la c ´amara . . . 21
2.3. Matriz de par ´ametros intr´ınsecos . . . 23
2.4. Patr ´on de ARtoolKit . . . 23
2.5. Morfolog´ıa del patr ´on . . . 24
2.6. Imagen capturada (a), imagen despu ´es de la umbralizaci ´on (b). . . 25
2.7. Conexi ´on de componentes (c), contornos (d). . . 25
2.8. Extracci ´on de bordes y esquinas del marcador (e), detecci ´on de coor- denadas tridimensionales del marcador (f). . . 26
2.9. Sistemas de coordenadas de la c ´amara y el marcador . . . 27
2.10.Imagen antes de la normalizaci ´on y despu ´es de la normalizaci ´on . . . . 27
2.11.Vectores de direcci ´on unitaria . . . 29
2.12.Matriz de transformaci ´on obtenida . . . 30
3.1. Diagrama de dominio . . . 35
3.2. Diagrama de componentes . . . 46
4.1. Prueba con realidad aumentada . . . 52
4.2. Vista de la aplicaci ´on . . . 53
3.1. Personal relacionado con el sistema. . . 35
3.2. Historia de Usuario (HU) activar c ´amara web. . . 37
3.3. HU cargar el fichero del patr ´on. . . 38
3.4. HU detectar y reconocer un patr ´on. . . 38
3.5. HU posiciones en XYZ. . . 38
3.6. HU orientaci ´on del patr ´on. . . 39
3.7. HU vector orientaci ´on. . . 39
3.8. HU actualizaci ´on de posici ´on y orientaci ´on. . . 39
3.9. HU cerrar video. . . 40
3.10.Esfuerzo de trabajo. . . 40
3.11.Estimaci ´on del tiempo de construcci ´on de cada iteraci ´on. . . 42
3.12.Descripci ´on de la clase Tracking camara. . . 43
3.13.Clase Video de la biblioteca ARtoolKit . . . 43
3.14.Clase que contiene las principales funcionalidades de ARtoolKit . . . . 44
3.15.Descripci ´on de la clase C tracking. . . 44
3.16.Descripci ´on de la biblioteca gr ´afica. . . 45
3.17.Descripci ´on de la clase Tracking. . . 45
3.18.Estimaci ´on de tiempo de la iteraci ´on1 . . . 49
3.19.Estimaci ´on de tiempo de la iteraci ´on2 . . . 50
3.20.Estimaci ´on de tiempo de la iteraci ´on3 . . . 51
4.1. Pruebas de Aceptaci ´on realizadas al sistema . . . 54
Los SRV brindan una nueva interfaz que ayuda a crear la ilusi ´on de que el usuario est ´a inmerso en un mundo generado por el ordenador, presupone una visualizaci ´on avanzada de entornos tridimensionales [Tecnopeixe, 2008].
El desarrollo de los motores y bibliotecas gr ´aficas han propiciado el auge de los SRV.
Las aplicaciones de estos sistemas se ven reflejadas en diferentes sectores de la sociedad como: la medicina, los video-juegos, la educaci ´on y la investigaci ´on cient´ıfica.
En la actualidad las t ´ecnicas de visualizaci ´on estereosc ´opica est ´an incluidas entre las funcionalidades que brindan los motores gr ´aficos. Estas t ´ecnicas contribuyen a mejo- rar la visualizaci ´on de aplicaciones tridimensionales (3D) en dispositivos 2D (moni- tores, televisores, pantallas de proyecci ´on), aumentando la sensaci ´on de profundidad en estas aplicaciones.
Aunque estas t ´ecnicas mejoran la inmersi ´on visual del observador que interact ´ua con los sistemas estereosc ´opicos; presentan el inconveniente de que si ´este cambia su posici ´on relativa respecto a la pantalla, los objetos de la escena no son actualizados para ser observados desde el nuevo punto de vista.
La forma convencional de solucionar el problema, usada por los motores gr ´aficos, es permitir cambiar la posici ´on y orientaci ´on de los objetos a trav ´es de la interacci ´on con mouse y teclado. De esta forma se obtienen aproximaciones pobres y poco realistas.
Una mejor forma ser´ıa estimar la posici ´on y orientaci ´on del observador respecto a la escena en tiempo real.
El seguimiento de pose es la t ´ecnica que permite obtener posici ´on y orientaci ´on del observador en una escena mediante una c ´amara en cada instante de tiempo2.
Para la creaci ´on de aplicaciones estereosc ´opicas, nuestra universidad cuenta con una biblioteca llamada GLSVe. Esta biblioteca no tiene incorporada funcionalidades que permitan realizar un seguimiento de pose del observador, esto presupone que los usuarios siempre observan los objetos mostrados desde una perspectiva fija, aunque var´ıe de posici ´on o ´angulo de visi ´on. Existe entonces la necesidad de incorporar a GLSVe esta funcionalidad.
Por lo tanto elproblema cient´ıfico que esta se ha propuesto resolver investigaci ´on es
¿C ´omo brindar seguimiento de pose del observador a la biblioteca GLSVe?
Elobjeto de estudio de este trabajo son los sistemas de seguimiento y el campo de acci ´on estar ´a sobre los sistemas de seguimiento de pose a usuario3.
El objetivo de la investigaci ´on es desarrollar un m ´odulo que permita realizar seguimiento de pose del observador para ser incorporado a la biblioteca GLSVe.
Para dar cumplimiento al objetivo propuesto se han definido las siguientes tareas de investigaci ´on:
Investigar los elementos a tener en cuenta en un sistema de seguimiento de pose, para definir el adecuado para un sistema de visi ´on estereosc ´opica.
Conciliar diferentes bibliotecas para el trabajo con la c ´amara y selecci ´on de una de ellas.
Investigar las t ´ecnicas de calibraci ´on extr´ınseca e intr´ınseca de la c ´amara, para lograr seguimiento de pose del observador de forma m ´as efectiva.
Elaborar soluciones t ´ecnicas que permitan realizar seguimiento de pose del ob- servador para ser incorporado a la biblioteca GLSVe.
2Esto se conoce en la literatura cient´ıfica como tracking
3Esto se conoce en la literatura cient´ıfica como head-tracking
Realizar una aplicaci ´on de prueba que permita visualizar las nuevas funcionali- dades incorporadas a la biblioteca GLSVe.
Con el cumplimiento de las tareas propuestas se podr ´a dotar a GLSVe de un m ´odulo que permita realizar el seguimiento de la pose del observador. Pudi ´endose obtener en las aplicaciones finales que se elaboren, un mayor realismo de las escenas simuladas.
Para mejor compresi ´on del documento, se dividir ´a en cap´ıtulos los cuales contendr ´an todas las especificaciones de las tareas planteadas.
El Cap´ıtulo 1 “Fundamentaci ´on Te ´orica” se analizaron los sistemas de seguimiento de pose, las t ´ecnicas y m ´etodos para realizar seguimiento de pose utilizando c ´amara web, las bibliotecas de visi ´on por computadora utilizadas para este tipo de seguimiento y la calibraci ´on de c ´amara.
ElCap´ıtulo 2 “Soluciones T ´ecnicas” se expone la propuesta de soluci ´on al problema, adem ´as de los m ´etodos, t ´ecnicas, bibliotecas y herramientas utilizados.
ElCap´ıtulo 3 “Dise ˜no de la soluci ´on” se exponen el an ´alisis, dise ˜no y construcci ´on de la soluci ´on propuesta.
ElCap´ıtulo 4 “An ´alisis de resultados” se exponen las pruebas de precisi ´on, aceptaci ´on e integraci ´on del m ´odulo de seguimiento de pose realizado.
Fundamentaci ´ on Te ´ orica
En este cap´ıtulo se realiza una descripci ´on detallada de la situaci ´on probl ´emica de la investigaci ´on. Tambi ´en se exponen las t ´ecnicas y bibliotecas de visi ´on por computado- ra, que permiten realizar seguimiento de pose del observador utilizando c ´amara web, en sistemas de visualizaci ´on estereosc ´opicos.
1.1. Realidad virtual y visualizaci ´ on estereosc ´ opica
Un SRV, es un sistema de visualizaci ´on por computadora que se encarga de simular alg ´un fen ´omeno del mundo real vali ´endose de varios dispositivos y recursos para la visualizaci ´on e interacci ´on. Estos sistemas tienen gran auge y desarrollo en la actua- lidad y su uso se extiende a diferentes campos de la sociedad como: la medicina, los video-juegos, la educaci ´on y la investigaci ´on cient´ıfica.
Los dispositivos en los que se muestran las aplicaciones de Realidad Virtual (RV) son planos (ver figura 1.2), esto dificulta en gran medida que una persona pueda percibir que est ´a observando un objeto u escena 3D. Por esta raz ´on muchas personas no perciben la sensaci ´on de inmersi ´on en estos sistemas.
Lainmersi ´on se logra tratando que la persona que interact ´ua con la aplicaci ´on virtual
Figura 1.1: Aplicaci ´on en la medicina, juegos y educaci ´on
Figura 1.2: Visualizaci ´on de los SRV en monitores 2D
se sienta como si estuviera en el mundo real, para esto se act ´ua sobre algunos sen- tidos como el o´ıdo, el tacto y la vista. Para aumentar la inmersi ´on visual surgen las t ´ecnicas de Visualizaci ´on Estereosc ´opica (VE).
Los motores y bibliotecas gr ´aficas incluyen t ´ecnicas de VE para desarrollar aplica- ciones que permitan representar escenas 3D con mayor sensaci ´on de profundidad visual y realismo a la vista del observador. Cada una de estas t ´ecnicas tiene un forma- to asociado y cada formato utiliza un dispositivo (ver figura 1.3)para su visualizaci ´on.
Figura 1.3: Dispositivos de visualizaci ´on estereosc ´opica
Lainteracci ´on es la capacidad que tienen los SRV y los SVE de poder introducir datos del mundo real al entorno virtual y poder sentir o percibir sus reacciones. Permitiendo
al espectador no s ´olo ver o sentir los objetos en el espacio, sino tambi ´en modificarlos o afectarlos de alguna manera [Tecnopeixe, 2008].
La interacci ´on mejora sustancialmente la percepci ´on espacial, porque el movimien- to es uno de los efectos visuales que m ´as contribuye a la ilusi ´on de profundidad [Vincent, 2006]. Existen varias formas de introducir datos en los SVE, las m ´as conoci- das a trav ´es de dispositivos como el mouse, teclado, mandos wii y el movimiento del observador que interact ´ua con la escena.
Figura 1.4: Formas de interacci ´on con los SVE
¿Porque es necesario el seguimiento de pose del observador en los SVE?
Un aspecto importante para lograr la correcta visualizaci ´on de los objetos en los SVE es el punto de vista desde el cual la persona los observa. Esto se fundamenta en que cuando miramos un objeto en el mundo real desde diferentes posiciones, se obtienen diferentes vista del objeto o sea la perspectiva del objeto tambi ´en cambia 1.5.
Figura 1.5: Vista desde diferentes perspectivas
Los motores gr ´aficos desarrollan aplicaciones desde un punto de vista est ´atico, de esta forma, si la persona que est ´a interactuando con la aplicaci ´on cambia la posici ´on u orientaci ´on de su cabeza, no visualizar´ıa el objeto como si estuviera en el mundo real. Una forma de solucionar el problema ser´ıa conocer la posici ´on y orientaci ´on de
la cabeza del observador de la escena en tiempo real y as´ı actualizar el modo en que la escena muestra los objetos en cada momento.
La precisi ´on y exactitud del seguimiento de pose del observador es fundamental para lograr una adecuada interacci ´on e inmersi ´on de los usuarios en los sistema de realidad virtual que usen VE, si el punto de vista del observador no se encuentra en la posici ´on que el tracking reporta, el usuario ver ´a los objetos distorsionados o escalados (grande, peque ˜nos, comprimidos) causando efectos y sensaciones no deseadas, que conllevan al fracaso de las aplicaciones.
1.2. Sistemas de seguimiento
Diferentes autores definen el tracking o seguimiento como:
La t ´ecnica que permite conocer en cada momento la posici ´on y orientaci ´on del usuario en el mundo virtual [Tecnopeixe, 2008].
La localizaci ´on autom ´atica del usuario y de su orientaci ´on [Camacho, 2009].
El proceso de seguir un punto o una serie de puntos cuadro a cuadro en una secuencia de datos que var´ıan al transcurrir el tiempo, para obtener posici ´on y orientaci ´on en cada momento [L ´opez, 2007].
En esta investigaci ´on cuando se hable de seguimiento de pose del observador se estar ´a haciendo referencia al tracking de usuario para obtener posici ´on y orientaci ´on del punto de vista del usuario que interact ´ua con un SVE.
Entre las fuentes de datos m ´as comunes que permiten seguir la pose del observador, para obtener informaci ´on de sus movimientos, se encuentran: los campos electro- magn ´eticos, los sistemas mec ´anicos, las se ˜nales ultras ´onicas, los leds infrarrojos y el procesamiento de video:
El tracking ultras ´onico usualmente utiliza frecuencias de sonido alrededor de los 40 kHz. Mediante m ´etodos de triangulaci ´on, se obtiene el tiempo y la localizaci ´on del sonido que viaja desde un emisor a uno o varios receptores. La ventaja de esta t ´ecnica se encuentra en la peque ˜na escala de transmisores que utiliza y la desventaja est ´a en la velocidad a la que viaja el sonido, lo cual convierte en lento el proceso de sincronizaci ´on de sonido y la actualizaci ´on de los valores del sistema, adem ´as la velocidad puede variar dependiendo del entorno en que se encuentre, lo que provoca que el tracking no sea estable [Noris, 2005].
El tracking mec ´anico es utilizado fundamentalmente para la captura de ´angulos y rangos de movimiento mediante sensores flexibles. La ventaja de estos sistemas con- siste en la exactitud y la velocidad con que se actualizan los datos y no son suscep- tibles a interferencias, pues los sensores son directamente cableados en la m ´aquina.
La principal desventaja del seguimiento mec ´anico es el volumen de trabajo que es limitado por la instalaci ´on el ´ectrica de la propia m ´aquina [Noris, 2005].
Figura 1.6: Immersion’s CyberGlove
El tracking electromagn ´etico usa los mismos principios que el seguimiento ul- tras ´onico, env´ıa un campo magn ´etico el cual es inducido dentro de sensores que pueden medir la distancia desde el origen. La direcci ´on del campo magn ´etico gene- rado, permite al sensor extraer informaci ´on de orientaci ´on del impulso registrado. La desventaja de esta t ´ecnica consiste en que el tama ˜no del volumen de trabajo va a es- tar limitado por la potencia que tenga el campo magn ´etico generado y la interferencia con cuerpos met ´alicos en la vecindad [Noris, 2005]. La figura 1.7 muestra algunos de
los dispositivos utilizados para generar un campo magn ´etico.
Figura 1.7: Ascension Flock of Birdsun dispositivo de tracking magn ´etico
El tracking infrarrojo es un tipo de tracking de video que resuelve el problema de la iluminaci ´on del medio y el ruido en la imagen, pero la desventaja de esta tecnolog´ıa en comparaci ´on con el seguimiento de video est ´andar es el costo del equipamiento (ver figura 1.8) y la interferencia de cuerpos calientes en el campo de visi ´on de la c ´amara [Noris, 2005].
Figura 1.8: Gafas (con led incorporados) utilizadas para el tracking infrarrojo
El tracking de radio en la industria del entretenimiento, el Nintendo Revolution (ver figura 1.9) es controlado por varios jugadores al mismo tiempo. Dos sensores de radio permiten determinar la posici ´on de los controles mediante m ´etodos de triangulaci ´on y al inclinar los sensores que se encuentran dentro de los controles permite medir la orientaci ´on.
Eltracking de video es la soluci ´on m ´as accesible, pues el equipamiento para realizar el seguimiento est ´a limitado solamente a un video o una c ´amara de video. Una o m ´as c ´amaras permiten calcular posici ´on y orientaci ´on de un objeto o un patr ´on proyectado dentro de la imagen. Es la mejor opci ´on para el trabajo con aplicaciones en tiempo
Figura 1.9: Controles del Nintendo Revolution
real. Las principales desventajas de este tipo de tracking son: tienden a disminuir con la distancia, las condiciones del medio luminoso y el ruido influyen en la ejecuci ´on del seguimiento causando problema al reconocer el objeto se desea seguir [Noris, 2005].
El tracking de video tiene gran variedad de usos, algunos son: la interacci ´on humano- computadora, la seguridad y la vigilancia, la comunicaci ´on y compresi ´on de v´ıdeo, la realidad aumentada, el control de tr ´afico y en el cine.
1.2.1. T ´ecnicas de seguimiento de pose con c ´amaras de video en tiempo real
Siempre que se trabaja con v´ıdeo (tanto en tiempo real como pre-grabado) y se de- sea saber lo que sucede en la secuencia (movimiento de la c ´amara o de los objetos), parte del problema se basa en saber hacia d ´onde se mueven ciertos puntos carac- ter´ısticos en un fotograma con respecto a los siguientes o anteriores. En la captura de movimiento en v´ıdeo, debe estimarse el movimiento de ciertos bloques de p´ıxeles.
El proceso para hacer seguimiento de pose del observador mediante c ´amara consta t ´ecnicamente de dos fases: la detecci ´on del usuario, para localizarlo dentro de la ima- gen en la secuencia de video y el reconocimiento, para identificarlo en cada secuencia de video.
Seg ´un [Carlos P ´erez, 2003a], [Carlos P ´erez, 2003b] existen dos v´ıas para realizar el seguimiento de pose del observador: basadas en marcas y las no basadas en marcas, como se muestra en la figura 1.10.
Figura 1.10: T ´ecnicas de seguimiento
Seguimiento basado en marcas
El seguimiento basado en marcas es utilizado en casos en los que el espacio de la escena se encuentra bien definido y las caracter´ısticas del entorno donde se van a utilizar son bien conocidas. Los patrones deben ser ´unicos en el contexto que se vayan a utilizar y dif´ıcil de confundir con caracter´ısticas y colores que pueda poseer la persona que lo va a utilizar. Una mala selecci ´on del patr ´on, pueden incidir de forma negativa en la precisi ´on de los valores del seguimiento.
Para la detecci ´on y reconocimiento de patrones dentro de una imagen se utilizan t ´ecni- cas de an ´alisis de im ´agenes y m ´etodos de detecci ´on de patrones, que utilizan Tem- plate Matching y bases de im ´agenes de conocimiento.
Seguimiento no basado en marcas
Cada una de las t ´ecnicas no basadas en marcas emplea diferentes caracter´ısticas para realizar el seguimiento. Estas caracter´ısticas pueden ser del entorno en que se desarrolla el tracking o espec´ıficas del objeto a seguir.
El seguimiento basado en an ´alisis de estructuras planas, se refiere a elementos geo- m ´etricos presentes en la escena, que contengan superficies planas y puntos clave presentes en estas superficies.
El seguimiento basado en modelos como su nombre lo indica, emplean modelos geo- m ´etricos de tipo CAD o una proyecci ´on del objeto, dependiendo del entorno sobre el que se va a ejecutar el seguimiento. Los seguimientos basados en modelos suelen ser robustos, precisos y f ´aciles de implementar.
El seguimiento basado en caracter´ısticas extra´ıdas de la imagen, se basa fundamen- talmente en el planteamiento de la siguiente interrogante: ¿por qu ´e hacer seguimiento del objeto entero cuando se puede obtener el mismo resultado haciendo seguimiento solo de las caracter´ısticas? Este planteamiento suele ser computacionalmente m ´as eficiente que el basado en modelo, pero es menos robusto [Carlos P ´erez, 2003a]. Las dos ´ultimas t ´ecnicas (basadas en geometr´ıa epipolar y seguimiento por detecci ´on) usan diferentes tipos de restricciones geom ´etricas para la realizaci ´on del seguimiento.
Seg ´un la bibliograf´ıa consultada [Guti ´errez, 2010] dependiendo de los grados de liber- tad que se quieran obtener con el sistema, se pueden definir 3 tipo de seguimiento de pose: seguimiento 2D 1, 4D2y 3D3.
En la variante 2D solo se toma en consideraci ´on la posici ´on del usuario en el plano imagen, es decir, no tenemos en cuenta la distancia a la c ´amara. Esta variante pre- senta la peculiaridad de que una misma traslaci ´on del observador es interpretada de distinta forma en funci ´on de la distancia de ´este a la c ´amara.
En la variante con 4D se considera la traslaci ´on de la cabeza en los 3 ejes de coor- denadas, es decir, se a ˜nade un nuevo grado de libertad determinado por la distancia de la cabeza a la pantalla y un segundo grado m ´as definido por el movimiento de la cabeza hacia los lados del cuerpo.
12 grados de libertad, movimiento en los ejes x,y.
2Es un t ´ermino medio que se utiliza para referirse a los 4 grados de libertad, movimiento en los ejes (x,y,z) y rotaci ´on en (x,y)
36 grados de libertad, movimiento y rotaci ´on en los ejes x,y,z.
La variante 3D considera la traslaci ´on en los 3 ejes, tambi ´en se considera el ´angulo de la cabeza con respecto a los 3 ejes. Esta variante es la m ´as compleja, pero permite reflejar todos los movimientos de la cabeza.
1.2.2. T ´ecnicas de calibraci ´ on de c ´amara
Otro de los aspectos importantes cuando se va a implementar un seguimiento de pose utilizando c ´amara es la calibraci ´on, pues tiene gran influencia en la precisi ´on y exactitud del tracking. La calibraci ´on de c ´amara comprende dos aspectos distintos. En primer lugar es necesario determinar la relaci ´on que existe entre la posici ´on respecto a la c ´amara de los puntos observados y la imagen que de ellos se obtiene.
La bibliograf´ıa [Rodr´ıguez, 2003], clasifica la calibraci ´on de c ´amara en:
T ´ecnicas de optimizaci ´on lineal. Su principal ventaja es la simplicidad del mode- lo empleado, que revierte en un algoritmo de c ´omputo simple y r ´apido. Mediante un proceso de ajuste por m´ınimos cuadrados se determina la matriz que relaciona las coordenadas tridimensionales de los puntos de control y las de sus im ´agenes. En su contra tienen que no son aptos cuando introducimos la distorsi ´on de la lente como un factor a calibrar, limitando por tanto la exactitud de las medidas realizadas, y la dificultad aparejada a la obtenci ´on de los par ´ametros a partir de la matriz calculada.
T ´ecnicas de optimizaci ´on no lineal. Cuando el modelo empleado para la c ´amara se aleja del pin-hole b ´asico y se introducen par ´ametros que reflejan la distorsi ´on causada por la presencia de lentes.
Otras bibliograf´ıas como [Garcia, 2007], aportan otras clasificaciones:
Computaci ´on lineal vs no lineal:
Lineal: usan t ´ecnicas de resoluci ´on de sistemas de ecuaciones lineales, son muy simples de implementar y muy r ´apidos (como el DLT 4).
4Direct Linear Transform, algoritmo creado en 1971 para calibrar c ´amaras
No lineal: se basan en el uso de m ´etodos iterativos, como el algoritmo Gold Standard. Generalmente se requiere una buena aproximaci ´on inicial obtenida de un m ´etodo lineal. Son mucho m ´as lentos, pero permiten resolver modelos de c ´amara m ´as complejos (ej: modelar la distorsi ´on) que incluyen un mayor n ´umero de par ´ametros.
Calibraci ´on expl´ıcita vs impl´ıcita:
Expl´ıcita: se obtienen los valores de cada uno de los par ´ametros que forman el modelo.
Impl´ıcita: se obtienen generalmente matrices de transformaci ´on que contienen el conjunto de todos los par ´ametros. No se puede conocer el valor exacto de algunos par ´ametros.
Calibraci ´on en un paso vs multipaso
Un solo paso: en cada ciclo del proceso de resoluci ´on se actualizan todos los par ´ametros a la vez.
Multipaso: en cada fase se obtiene un conjunto distinto de par ´ametros, us ´andose aproximaciones en los primeros pasos para aquellos que a ´un no se hayan cal- culado y aplic ´andose los resultados que se van obteniendo en los siguientes pasos.
Patr ´on en un plano vs m ´ultiples planos
Todos los puntos del patr ´on est ´an en el mismo plano. Por tanto, tienen la ventaja de reducir el ruido en las coordenadas del patr ´on, ya que una de las coordenadas 3D es nula.
Multipaso y m ´ultiples planos: dentro de este grupo se pueden distinguir dos tipos.
Por un lado, aquellos que necesitan conocer la relaci ´on entre los planos, gene- ralmente se opta por que formen un diedro, es decir, dos planos que forman un
´angulo de 90 grados.
Por otro lado, aquellos en los que no es necesario conocer la relaci ´on entre las posiciones de los planos. Generalmente pueden ser adquisiciones sobre el mismo patr ´on variando la colocaci ´on del mismo o realizando movimientos de la c ´amara.
1.2.3. Tipos de calibraci ´ on de c ´amara
Calibraci ´on intr´ınseca de la c ´amara, consiste en extraer de la matriz de calibraci ´on obtenida de una imagen, las caracter´ısticas intr´ınsecas son: propiedades internas como la distancia focal, centro de proyecci ´on, no cambian si se mueve la c ´amara [Garcia, 2007].
Calibraci ´on extr´ınseca de la c ´amara consiste en extraer de la matriz de calibraci ´on obtenida de una imagen, las propiedades siguientes: vectores de traslaci ´on y rotaci ´on relativos al movimiento [Garcia, 2007].
1.3. Bibliotecas para el desarrollo de visi ´ on por com- putadora
Conocer e identificar un objeto (incluida su posici ´on relativa al observador), as´ı como recuperar algunas de sus caracter´ısticas, es una labor que normalmente recae sobre la disciplina conocida como visi ´on por computadora. La realidad virtual se basa en gran medida en esta disciplina, y si bien la visi ´on no es el ´unico sentido para ser aumentado, s´ı que es uno de los m ´as importante en lo que ata ˜ne a la misma [Camacho, 2009].
A continuaci ´on se realiza una descripci ´on de bibliotecas que sirven como base para desarrollar aplicaciones que utilizan t ´ecnicas de visi ´on por computadora.
1.3.1. OpenCv
OpenCv(Open Source Computer Vision Library)[Bary Gradsky, 2008]. Es una bibliote- ca de tratamiento de im ´agenes, destinada principalmente a aplicaciones de visi ´on por computadora en tiempo real. La biblioteca est ´a escrita en C y C++ corre bajo Linux, Windows y Mac OS X. Tiene un activo desarrollo para interfaces como: Python, Ruby, Matlab y otros lenguajes.
OpenCv se caracteriza por implementar una gran variedad de herramientas para la in- terpretaci ´on de la imagen, siendo la Iplimage su principal estructura para el tratamiento de las mismas. Es compatible con Intel Image Processing Library (IPL) que implemen- ta algunas operaciones en im ´agenes digitales y permite optimizar las funcionalidades en m ´as de la mitad de las estructuras. OpenCv es principalmente una biblioteca que implementa algoritmos para: la calibraci ´on de c ´amara, la detecci ´on de rasgos, rastrear (Flujo ´Optico), el an ´alisis de la forma (Geometr´ıa, Contorno que Procesa), el an ´alisis de movimientos (Plantillas del Movimiento, Estimadores), la reconstrucci ´on 3D (Trans- formaci ´on de vistas), la segmentaci ´on de objetos y el reconocimiento (Histograma, etc.).
1.3.2. ArToolkit
Es una biblioteca para el desarrollo de aplicaciones de realidad aumentada en tiempo real. Es de libre uso para fines no comerciales y fue desarrollada por el Dr. Hirokazu Kato de la Universidad de Osaka en Jap ´on. El seguimiento del punto de vista del usuario se realiza siguiendo diversos patrones cuadrados. Principalmente incluye fun- ciones de seguimiento y reconocimiento, aparte del render OpenGL para los objetos
sint ´eticos. Es una biblioteca originalmente en C++, aunque permite convertir c ´odigo a otros lenguajes como Java o Python.
ArToolkit utiliza t ´ecnicas de visi ´on por computadora para calcular la posici ´on y orien- taci ´on de la c ´amara respecto a un patr ´on defino por la biblioteca, permitiendo al pro- gramador conocer donde se encuentra exactamente el mismo dentro de la escena.
Entre las funcionalidades que se pueden lograr con ArToolkit se encuentran:
Seguimiento y orientaci ´on individual de la c ´amara.
Utiliza c ´odigos de seguimiento sencillos y optimizados.
Detecta patrones cuadrados dentro de una imagen.
Sencillo c ´odigo de calibraci ´on de la c ´amara.
Las funcionalidades de ArToolkit, adem ´as de permitir crear aplicaciones de realidad aumentada, son muy eficiente para desarrollar sistemas de seguimiento basado en marcas.
1.3.3. Touchless
Se trata de una biblioteca para la plataforma .NET que permite crear aplicaciones multi-touch con una c ´amara web como interfaz. Touchless incluye una aplicaci ´on de prueba que se puede descargar y capturar gestos que luego ser ´an reconocidos. Se caracteriza por[wittysparks, 2004]:
Disponible solo para Microsoft Windows.
Reconocimiento de gestos humanos a trav ´es de c ´amara web.
Touchless es un experimento no concluido y en pleno desarrollo que a ´un no es na- da sofisticado. Es un motor sencillo que explota t ´ecnicas no muy avanzadas de re- conocimiento de im ´agenes para buscar objetos llamativos en las im ´agenes capturadas por la c ´amara web y usarlos como marcadores que luego se utilizar ´an para interactuar con la aplicaci ´on. [wittysparks, 2004].
Despu ´es de haber analizados las diferentes bibliotecas se puede concluir que la biblioteca OpenCv puede ser utilizada para realizar seguimiento basado en carac- ter´ısticas y marcas por la eficiencia de sus algoritmos para el tratamiento y an ´alisis de im ´agenes. Para el seguimiento basado en marcas es mejor utilizar ARtoolKit, es una biblioteca orientada espec´ıficamente a la detecci ´on de marcas, ahorra tiempo y tama ˜no de c ´odigo en las aplicaciones. Ambas bibliotecas implementan algoritmos para realizar calibraci ´on lineal y no lineal de c ´amara. ARtoolKit adem ´as posee un registro amplio de calibraciones de c ´amara, de donde se pueden obtener los valores de dis- torsi ´on de lente y matriz intr´ınseca sin necesidad de realizar el proceso de calibraci ´on completo. Touchless no es muy recomendable pues no posee una estructura robusta y posee grandes desventajas con sus hom ´ologas desde el punto de vista funcional.
Soluci ´ on Propuesta
En este cap´ıtulo se describe la propuesta de soluci ´on para resolver el problema planteado en la investigaci ´on, se proponen m ´etodos y algoritmos de detecci ´on y re- conocimiento de patrones, descripci ´on de la geometr´ıa de c ´amara y las herramientas seleccionadas para el desarrollo de la aplicaci ´on.
2.1. Propuesta del sistema
El sistema estar ´a compuesto por una c ´amara de video situada frente al observador de la escena. La c ´amara captura los movimiento del observador mediante un patr ´on situado en el dispositivo que se utilice para visualizar el formato de la escena estereos- c ´opica, como muestra la figura 2.1.
El sistema debe capturar todos los movimientos que pueda realizar el observador de una escena mientras no pierda el contacto visual con la c ´amara, por lo que se deci- di ´o realizar un seguimiento 3D de la pose. El observador para visualizar el formato de las t ´ecnicas mostradas en las escenas estereosc ´opicas utiliza dispositivos de vi- sualizaci ´on, conociendo donde se encuentran posicionados y como est ´an orientados estos dispositivos en la escena, se pueden estimar la posici ´on y orientaci ´on del punto
Figura 2.1: Composici ´on del sistema propuesto
de vista del observador. Los dispositivos pueden variar su modelo, tama ˜no, color, en dependencia de la t ´ecnica que se visualice o la fabricaci ´on de los mismos, por lo que se descart ´o la posibilidad de realizar un seguimiento basado en caracter´ısticas. Uti- lizar patrones en los dispositivos permite realizar un seguimiento independientemente de las caracter´ısticas que posean los mismos, por lo que se utilizar ´a un seguimien- to basado en marcas. La captura de las im ´agenes en tiempo real se realiza a trav ´es de una sola c ´amara, por este motivo se realiza la calibraci ´on para obtener la matriz intr´ınseca, fundamental para realizar un seguimiento con mayor precisi ´on.
Como el sistema de seguimiento es basado en marcas, se seleccion ´o la biblioteca ArToolkit[Hirokazu Kato, 2009] a la cual se hizo referencia en el cap´ıtulo anterior, es una biblioteca de procesamiento de im ´agenes en video, con amplias funcionalidades para el trabajo con marcadores.
Actualmente a los SVE creados en la facultad no brindan la funcionalidad de inte- ractuar con los usuarios mediante el seguimiento del movimiento de la cabeza. La GLSVe tiene un sistema de seguimiento que utiliza colores como patr ´on a seguir, lo que tiende a confundir muchas veces la zona de detecci ´on y reconocimiento de la marca, adem ´as de los problemas de iluminaci ´on caracter´ısticos de estos sistemas, estos inconvenientes afectan considerablemente la precisi ´on de los valores que se obtienen. En el seguimiento de marcas que se propone se usan patrones cuadrados que mejoran considerablemente la precisi ´on y exactitud del seguimiento. Tambi ´en se
utiliza la t ´ecnica de binarizaci ´on de imagen dado un valor de intensidad de p´ıxel, que mejora sustancialmente los problemas que causa la iluminaci ´on del medio en el que se desarrolle el seguimiento.
2.2. Calibraci ´ on de c ´amara
La calibraci ´on es el primer paso que se realiza cuando se trabaja con una c ´amara, pues garantiza mayor exactitud en la estimaci ´on de los puntos. A continuaci ´on se describe la geometr´ıa de c ´amara, para ayudar a entender el origen de los valores de la matriz intr´ınseca de calibraci ´on utilizada en la soluci ´on. Esta descripci ´on est ´a basada en: [Garcia, 2007] y [Bary Gradsky, 2008], documentos que pueden ser utilizados para profundizar en el contenido.
Se definen dos modelos de c ´amaras: aquellas con un centro definido, y las que tienen su centro en el infinito. Respecto a estas ´ultimas, hay una caracterizaci ´on concreta llamada c ´amara af´ın, que se usa como generalizaci ´on de la proyecci ´on paralela (sin perspectiva). La figura 2.2, muestra el modelo geom ´etrico de una c ´amara con centro de proyecci ´on definido (pin-hole model).
Figura 2.2: Modelo geom ´etrico de la c ´amara
Donde f es la distancia focal, P la distancia del objeto respecto al centro de proyecci ´on
y p es la proyecci ´on del objeto en el plano de la imagen. A este modelo se le incluyen dos par ´ametros nuevos cx y cy que se interpretan como el posible desplazamiento que pueda poseer el centro de proyecci ´on de la imagen. El resultado es un modelo relativamente simple en el cual el punto P del mundo f´ısico cuyas coordenadas son (X,Y,Z), es proyectado en la pantalla en alg ´un p´ıxel, dado por las siguientes ecuaciones 2.1, 2.2.
xpantalla = fx(X
Z) + cx (2.1)
ypantalla = fy(Y
Z) + cy (2.2)
¿C ´omo se puede entonces caracterizar una c ´amara a partir de una imagen tomada con ella? La relaci ´on de un objeto del mundo f´ısico denotado por un mapa de puntos P con coordenadas (X, Y, Z) a puntos en la imagen p=(x, y) es llamado transformaciones proyectivas. Si se dispone de las suficientes correspondencia Xi ←→ xi, se puede esti- mar una matriz de c ´amara P3x4(ver figura 2.12), de forma que x = PX . Cuando se rea- lizan transformaciones proyectivas, es conveniente utilizar coordenadas homog ´eneas.
Las coordenadas homog ´eneas asociadas a un punto en un espacio proyectivo de di- mensi ´on n, se expresa t´ıpicamente como (n + 1) - la dimensi ´on del vector (por ejemplo, x, y, z se convierte en x, y, z, w), debe cumplirse tambi ´en, que si cualquiera de los dos puntos proporcionales son equivalentes. En este caso, el plano de la imagen represen- ta el espacio proyectivo y tiene dos dimensiones, entonces los puntos en el plano se representaran como un vector tridimensional p=(p1, p2, p3) . Todo esto se formula de forma ideal, suponiendo que la lente de la c ´amara es perfecta y no presenta distorsi ´on.
El resultado final de este proceso es una matriz de 3x4, que contiene las propiedades f´ısicas de la c ´amara utilizadas posteriormente en el proceso de estimaci ´on de la posi- ci ´on y orientaci ´on del patr ´on a seguir en la pantalla.
Figura 2.3: Matriz de par ´ametros intr´ınsecos
La matriz intr´ınseca se obtuvo utilizando el fichero camera-para.dat de la biblioteca ARToolKit.
2.3. Descripci ´ on del patr ´ on utilizado
El patr ´on utilizado es una imagen cuadrada, asim ´etrica, en blanco y negro, descrita por un cuadro negro que contiene uno blanco cuatro veces m ´as peque ˜no que ´el, el cuadro blanco contiene figuras en el centro de color negro, como se muestra en la figura 2.4.
El material en que se imprime la plantilla conviene que no sea brillante y el tama ˜no de la marca debe ser suficiente como para que la c ´amara capte el dibujo dentro del cuadro blanco y no tan grande como para que no quepa en el ´angulo de visi ´on de la c ´amara. Este mismo tipo de marcador es utilizado tambi ´en por la biblioteca ARtoolKit.
Figura 2.4: Patr ´on de ARtoolKit
Las caracter´ısticas morfol ´ogicas del patr ´on a seguir est ´an recogidas en un archivo que gestiona la biblioteca ARtoolKit llamado patt.name pattern. En la figura 2.5 puede verse parte del contenido del archivo patt. que caracteriza morfol ´ogicamente al patr ´on.
La informaci ´on que brinda puede ser interpretada de la siguiente manera, las cifras indican el nivel de gris de los p´ıxeles del cuadro interior del marcador en un rango de 0 a 255, de modo que 255 representa al blanco puro y 0 al negro puro.
Figura 2.5: Morfolog´ıa del patr ´on
2.4. Detecci ´ on y reconocimiento de patrones
En en el desarrollo de esta aplicaci ´on se ha necesitado usar algunas funciones exter- nas (de la biblioteca ARToolKit) de an ´alisis de im ´agenes para detectar los marcadores de los dispositivos de seguimiento en cada frame del v´ıdeo de entrada. Estas fun- ciones se basan en un enfoque de detecci ´on de esquinas con un algoritmo de esti- maci ´on orientado a la rapidez.
Lo primero que se realiza es la captura de la imagen( como se muestra en la figura 2.6 inciso (a)) a trav ´es de la c ´amara, la imagen es sometida a un proceso de um- bralizaci ´on o binarizaci ´on( ver figura 2.6 (b)). En este proceso se utiliza un valor de
umbral (de 0 a 255), de forma que los p´ıxeles cuya intensidad supere el valor del um- bral definido, son transformados en p´ıxeles de color negro y el resto se transforman en p´ıxeles blancos.
Luego de este proceso la imagen a analizar queda completamente en blanco y negro, esto reducir ´a el campo de b ´usqueda y agilizar ´a el proceso de detecci ´on. Luego se buscan todas las regiones cuadrada(ver figuras 2.7 (c) y (d)) que se encuentren en la imagen binarizada, todas las regiones cuadradas puede que no sean marcadores, por eso para cada cuadro se captura el patr ´on que contiene dentro y es comparado constantemente con plantillas de patrones definidas en archivos llamadospre-trained.
Cada patr ´on posee un identificador asociado, despu ´es que se detecta el marcador se compara en la secuencia de video el identificador del nuevo patr ´on encontrado con el anterior. Al finalizar este proceso se obtienen las coordenadas tridimensionales del marcador como se muestra en las im ´agenes(2.8 (e) y (f)).
Figura 2.6: Imagen capturada (a), imagen despu ´es de la umbralizaci ´on (b).
Figura 2.7: Conexi ´on de componentes (c), contornos (d).
Figura 2.8: Extracci ´on de bordes y esquinas del marcador (e), detecci ´on de coorde- nadas tridimensionales del marcador (f).
2.5. Estimaci ´ on de la posici ´ on y orientaci ´ on del pa- tr ´ on.
La relaci ´on entre las coordenadas del marcador y las coordenadas de la c ´amara se estima mediante el an ´alisis de la imagen. Conociendo el tama ˜no del patr ´on usado para estimar la posici ´on y orientaci ´on, se calcula la matriz de transformaci ´on de las coorde- nadas del marcador a las coordenadas de la c ´amara. Esta matriz de transformaci ´on (Tcm) se puede ver representada en las siguientes ecuaciones 2.3 y 2.4.
Xc
Yc Zc 1
=
V11 V12 V13 Wx V21 V22 V23 Wy V31 V32 V33 Wz
0 0 0 1
Xm
Ym Zm 1
(2.3)
=
V3x3 W3x1
0 0 0 1
Xm
Ym Zm
1
= T cm
Xm
Ym Zm
1
(2.4)
Figura 2.9: Sistemas de coordenadas de la c ´amara y el marcador
Despu ´es de tratar la imagen de entrada con una umbralizaci ´on en blanco y negro, los cuadril ´ateros contorneados exteriormente pueden ser definidos por cuatro segmentos de l´ıneas que son extra´ıdos. Los par ´ametros de estos cuatro segmentos de l´ıneas y las coordenadas de los cuatro v ´ertices donde los segmentos de l´ıneas se intersectan son almacenados por un proceso posterior realizado por ARtoolKit.Los cuadril ´ateros formados por los segmentos de l´ıneas son normalizados (ver figura 2.10) y la sub- imagen interna al cuadril ´atero es comparada por emparejamiento con el patr ´on que se le ha dado al sistema inicialmente.
Figura 2.10: Imagen antes de la normalizaci ´on y despu ´es de la normalizaci ´on
Para este proceso de normalizaci ´on la siguiente ecuaci ´on 2.5 representa la transfor- maci ´on de la perspectiva que se usa. Todas las variables en la matriz de transforma- ci ´on se determinan sustituyendo las coordenadas de la pantalla y las coordenadas de los cuatro v ´ertices detectados en el marcador por (xc, yc) y (Xm, Ym) respectiva-
mente. Despu ´es el proceso de normalizaci ´on se lleva a cabo usando esta matriz de transformaci ´on.
hxc hyc h
=
N11 N12 N13 N21 N22 N23 N31 N32 1
Xm
Ym 1
(2.5)
Cuando dos lados paralelos de un marcador son proyectados en la imagen, las ecua- ciones de estos segmentos lineales en las coordenadas de la pantalla de la c ´amara (camera screen) son las siguientes:
a1x+ b1y+ c1 = 0 a2x+ b2y+ c2 = 0
(2.6)
Para el patr ´on el valor de estos par ´ametros ha sido ya obtenido en el proceso de determinaci ´on de l´ıneas. Dada la matriz de la perspectiva de la proyecci ´on P obtenida mediante la calibraci ´on de la c ´amara en la ecuaci ´on 2.7, las ecuaciones de los planos que incluyen los dos lados respectivamente pueden ser representadas como la 2.8 en el sistema de coordenadas de la c ´amara sustituyendo XC y YC en la 2.7 por x y y en las ecuaciones 2.6.
P =
P11 P12 P13 0 0 P22 P23 0
0 0 1 0
0 0 0 1
,
hxc hyc h 1
= P
Xc
Yc Zc 1
(2.7)
a1P11Xc+ (a1P12+ b1P22)Yc+ (a1P13+ b1P23+ c1)Zc = 0 a2P11Xc+ (a2P12+ b2P22)Yc+ (a2P13+ b2P23+ c2)Zc = 0
(2.8)
Dado que los vectores normales a estos planos son n1 y n2 respectivamente, el vec- tor de direcci ´on de los dos lados paralelos del cuadril ´atero es dado por la salida del
producto n1 y n2.
Dados los dos vectores de direcci ´on unitarios obtenidos a partir de los dos pares de lados paralelos del cuadril ´atero siendo estos u1y u2, estos vectores deben ser perpen- diculares. Sin embargo los errores en el procesamiento de la imagen provocan que los vectores no sean exactamente perpendiculares. Para compensar esto dos vectores de direcci ´on unitarios y esta vez s´ı perpendiculares son definidos como v1 y v2en le plano que contiene a u1 y u2 como se muestra en la siguiente figura(2.11).
Figura 2.11: Vectores de direcci ´on unitaria
Dado que el vector de direcci ´on unitario perpendicular a v1 y v2 es v3, ya se tiene la componente V3x3 de la matriz de trasformaci ´on Tcm para pasar de las coordenadas del marcador a las coordenadas de la c ´amara que ser´ıa [V1tV2tV3t], ver en 2.3.
A partir de la componente de rotaci ´on V3x3de la matriz de transformaci ´on, se pueden obtener usando las ecuaciones 2.3, 2.4 y 2.7 las coordenadas de los cuatro v ´ertices del marcador en el sistema de coordenadas del marcador, y esas coordenadas en el sistema de coordenadas de la c ´amara, ocho ecuaciones que contienen los compo- nentes de la transformaci ´on WxWy Wz son generados y el valor de esas componentes de transformaci ´on Wx Wy Wz son obtenidos de esas ecuaciones.
La matriz de transformaci ´on encontrada por el m ´etodo anterior puede tener errores.
Sin embargo estos pueden reducirse mediante el siguiente proceso. Las coordenadas del v ´ertice del marcador en el sistema de coordenadas del marcador pueden ser trans- formadas en coordenadas del sistema de coordenadas de la c ´amara usando la matriz
de transformaci ´on obtenida. Entonces la matriz de transformaci ´on se optimiza hasta que la suma de las diferencias entre estas coordenadas transformadas y las coor- denadas medidas directamente en la imagen sean m´ınimas. Aunque hay 6 variables independientes en la matriz de transformaci ´on, solo los componentes de la rotaci ´on ser ´an optimizados y despu ´es la transformaci ´on de los componentes es reestimada usando el m ´etodo mencionado anteriormente. Mediante la iteraci ´on de este proceso un n ´umero de veces la matriz de transformaci ´on es encontrada con m ´as precisi ´on. Es posible llevar a cabo la optimizaci ´on con todas las seis variables independientes, no obstante el coste computacional ser´ıa considerable.
Mediante este proceso la funci ´on arGetTransMat obtiene la matriz3x4 de transforma- ci ´on (como muestra la figura 2.12) entre el sistema de coordenadas del marcador y el sistema de coordenadas de la c ´amara, es decir la posici ´on y orientaci ´on relativa del marcador con respecto a sistema de referencia de la c ´amara.
Figura 2.12: Matriz de transformaci ´on obtenida
2.6. Metodolog´ıas y herramientas para el desarrollo de software
2.6.1. Biblioteca gr ´afica
GLSVe (Graphics Library Stereo Vision Engine), est ´a escrita en C Sharp y programada sobre OpenGL. Es dise ˜nada para facilitarle principalmente a investigadores o estu- diantes la creaci ´on de aplicaciones gr ´aficas y de realidad virtual incorporando t ´ecnicas estereosc ´opicas.
2.6.2. Lenguajes de programaci ´ on
El C++ es un lenguaje de programaci ´on, dise ˜nado a mediados de los a ˜nos 1980, por Bjarne Stroustrup, como extensi ´on del lenguaje de programaci ´on C. Las principales caracter´ısticas de C++ son el soporte para programaci ´on orientada a objetos y el so- porte de plantillas o programaci ´on gen ´erica (templates). Se puede decir que C++ es un lenguaje que abarca tres paradigmas de la programaci ´on: la programaci ´on estructura- da, la programaci ´on gen ´erica y la programaci ´on orientada a objetos [Oduardo, 2009].
Se utiliza C++ para desarrollar una biblioteca de enlace din ´amico (DLL) que realiza el seguimiento de pose del observador que interact ´ua, con un SVE mediante una c ´amara web.
Como el objetivo general de esta investigaci ´on es integrar a GLSVe la funcionalidad seguimiento de pose del observador, se utiliz ´o el lenguaje de programaci ´on C Sharp para desarrollar una interfaz que permitiera incorporar las funcionalidades del m ´odulo hecho en C++ en GLSVe.
2.6.3. Framework de desarrollo
Un framework 1 de desarrollo es una infraestructura de software que crea un entorno com ´un para integrar aplicaciones e informaci ´on compartida dentro de un dominio dado.
Es una aplicaci ´on semi-completa que contiene componentes est ´aticos y din ´amicos que pueden ser personalizados para obtener aplicaciones de usuario espec´ıficas.
Las aplicaci ´on se desarrolla en Microsoft. Net, es un framework independiente de software, provee un extenso conjunto de soluciones predefinidas para necesidades ge- nerales de la programaci ´on de aplicaciones, y administra la ejecuci ´on de los programas escritos espec´ıficamente con la plataforma.
Se utilizaron las funciones de interoperabilidad que brinda el framework para importar funciones de C++ a C Sharp.
2.6.4. Entorno integrado de desarrollo utilizado
Un entorno de desarrollo integrado, en ingl ´es Integrated Development Environment (IDE), es un programa compuesto por un conjunto de herramientas para un progra- mador. Un IDE es un entorno de programaci ´on que ha sido empaquetado como un programa de aplicaci ´on. Los IDEs pueden ser aplicaciones por s´ı solas o pueden ser parte de aplicaciones existentes.
Se utiliz ´o Visual Studio 2008 con el framework. Net para desarrollar la interfaz del m ´odulo desarrollado en C Sharp y su integraci ´on a la biblioteca GLSVe.
2.6.5. Herramienta de modelado
El Lenguaje Unificado de Modelado(UML) es un lenguaje gr ´afico para visualizar, es- pecificar, construir y documentar cada una de las partes que comprende el desarro- llo de software. Lenguaje Unificado de Modelado (UML) posee formas de modelar
1marco de trabajo para el desarrollo de software
conceptos como lo son procesos de negocio y funciones de sistema, adem ´as de as- pectos concretos como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables [Larman, 1999]. Se puede aplicar en el desarrollo de software entregando gran variedad de formas para dar so- porte a una metodolog´ıa de desarrollo de software pero no especifica en s´ı mismo qu ´e metodolog´ıa o proceso usar.
Fue seleccionada la edici ´on Community de Visual Paradigm que es gratuita, soporta la versi ´on 2.0 de UML y permite su extensi ´on mediante la conexi ´on de m ´odulos conecta- bles (plug-in) o usando plantillas (templates). Es una herramienta CASE que utiliza UML como lenguaje de modelado. Visual Paradigm Community es una herramien- ta UML profesional que soporta el ciclo de vida completo del desarrollo de software:
an ´alisis y dise ˜no orientados a objetos, construcci ´on, pruebas y despliegue. El software de modelado UML ayuda a una m ´as r ´apida construcci ´on de aplicaciones de calidad, y a un menor coste. Permite dibujar todos los tipos de diagramas de clases, c ´odigo inverso, generar c ´odigo desde diagramas y generar documentaci ´on [Paradim, 2007].
2.6.6. Metodolog´ıa de software
Extreme Programming (XP) es una metodolog´ıa ´agil centrada en potenciar las rela- ciones interpersonales como clave para el ´exito en el desarrollo del software, pro- moviendo el trabajo en equipo, preocup ´andose por el aprendizaje de los desarrolla- dores, y propiciando un buen clima de trabajo. XP se basa en la retroalimentaci ´on continua entre el cliente y el equipo de desarrollo, comunicaci ´on fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente adecuada para proyectos peque ˜nos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo t ´ecnico [Beck, 2002]. Por las caracter´ısticas anteriormente mencionadas se seleccion ´o esta metodolog´ıa.
Dise ˜ no de la soluci ´ on
En este cap´ıtulo se expone todo lo referente al dise ˜no e implementaci ´on de la solu- ci ´on propuesta. Se ilustran los aspectos fundamentales de la ingenier´ıa de software como: requisitos funcionales y no funcionales, historias de usuarios, planificaci ´on del desarrollo de la aplicaci ´on, descripci ´on de las clases y est ´andar de codificaci ´on.
3.1. Caracter´ısticas del sistema
3.1.1. Modelo de dominio
Debido a que no se cuenta con una definici ´on total de los procesos de negocio, se plantea confeccionar un modelo de dominio. Un modelo de dominio es una descripci ´on gr ´afica del contexto del sistema. Es un modelo conceptual que relaciona gr ´aficamente los t ´erminos m ´as importantes que se manejan en el sistema.
Figura 3.1: Diagrama de dominio
3.1.2. Personal relacionado con el sistema
Se define como persona relacionada con el sistema a aquella que est ´a de una forma u otra vinculada al proceso de desarrollo de la aplicaci ´on, y las que interact ´uan con el mismo.
Personal relacionado con el sistema Justificación
Desarrollador Persona encargada de implementar e integrar las funcionalidades de la aplicación.
Usuario Persona que va a interactuar con la aplicación.
Tabla 3.1: Personal relacionado con el sistema.
3.1.3. Requisitos de Software
Requisitos funcionales:
Activar la c ´amara de video Cargar fichero del patr ´on.
Detectar y reconocer el patr ´on dentro de la imagen.
Cerrar video
Obtener posici ´on en (x,y,z).
Obtener orientaci ´on.
Obtener Quat1
Actualizar posici ´on y orientaci ´on.
Requisitos no funcionales:
Hardware:
C ´amara web CPU Pentium 4.
512 RAM
La aceleraci ´on gr ´afica debe estar en correspondencia con aplicaci ´on gr ´afica donde se utilice el sistema.
Software:
Sistema operativo Window XP / Window 7 Controlador de la c ´amara web.
Rendimiento:
La aplicaci ´on debe funcionar en tiempo real.
La aplicaci ´on debe tener un alto nivel de procesamiento y un buen manejo de la memoria de la m ´aquina.
1vector de 4 valores que contiene la rotaci ´on de un punto, se conoce como quaternion
3.1.4. Exploraci ´ on. Historia de Usuario
Uno de los artefactos m ´as importantes que genera la metodolog´ıa XP son las historias de usuario HU. Estas tienen el mismo prop ´osito que los casos de uso y son escritas por el propio cliente, tal y como ven ellos las necesidades del sistema, por tanto son descripciones cortas y escritas en el lenguaje del usuario sin terminolog´ıa t ´ecnica.
Las HU conducen al proceso de creaci ´on de las pruebas de aceptaci ´on, los cuales servir ´an para verificar que estas historias se han implementado correctamente. Otra de sus caracter´ısticas es que solamente proporcionan los detalles sobre la estimaci ´on del riesgo y cu ´anto tiempo conllevar ´a su implementaci ´on.
Durante el an ´alisis de exploraci ´on se identificaron 8 HU, cada una de ellas respon- diendo a las diferentes funcionalidades solicitadas por el cliente y dando una idea de c ´omo debe ser su posterior implementaci ´on. Estas se describen a continuaci ´on:
Historia de Usuario
No. 1 Nombre: Activar cámara
Usuario: usuario
Programador responsable: Liudmila Cecilia Rodríguez Ricardo.
Prioridad en el dominio: Alta. Nivel de Complejidad: Alta.
Tiempo de Estimación: 2 semanas. Iteración Asignada: 1
Descripción: Carga un archivo XML, que permite activar una cámara web conectada a la computadora y ajustar los parámetros de calibración.
Información adicional (Observaciones): La aplicación necesita conocer si existe conectada una cámara web para poder empezar la captura de imágenes.
Tabla 3.2: HU activar c ´amara web.
Historia de Usuario
No. 2 Nombre: Cargar fichero del patrón
Usuario: usuario
Programador responsable: Liudmila Cecilia Rodríguez Ricardo.
Prioridad en el dominio: Alta. Nivel de Complejidad: Alta.
Tiempo de Estimación: 1 semana. Iteración Asignada: 1
Descripción: Permite cargar el patrón que se va a necesitar en el proceso de detección.
Información adicional (Observaciones): Para poder empezar la detección de un patrón es necesario cargar los datos del mismo.
Tabla 3.3: HU cargar el fichero del patr ´on.
Historia de Usuario
No. 3 Nombre: Detectar y reconocer el patrón dentro de la imagen.
Usuario: usuario.
Programador responsable: Liudmila Cecilia Rodríguez Ricardo.
Prioridad en el dominio: Alta. Nivel de Complejidad: Alta.
Tiempo de Estimación: 3 semanas. Iteración Asignada: 1
Descripción: En este proceso mediante métodos de detección se busca el patrón dentro de la imagen capturada del video. Devuelve la una matriz de transformación.
Información adicional (Observaciones): La aplicación necesita localizar el patrón en la imagen para poder ubicar su posición y orientación.
Tabla 3.4: HU detectar y reconocer un patr ´on.
Historia de Usuario
No. 4 Nombre: Obtener posición en (x,y,z).
Usuario: usuario
Programador responsable: Liudmila Cecilia Rodríguez Ricardo.
Prioridad en el dominio: Media. Nivel de Complejidad: Media.
Tiempo de Estimación: 2 semanas. Iteración Asignada: 2 Descripción: Obtiene la posición en X,Y,Z del patrón encontrado
Información adicional (Observaciones): Datos importantes para poder interactuar con los objetos en el mundo virtual.
Tabla 3.5: HU posiciones en XYZ.