Calibración Automática De Cámaras En La Plataforma Jdec.

   EMBED

Share

Preview only show first 6 pages with water mark for full document please download

Transcript

´ INGENIER´IA SUPERIOR DE INFORMATICA Curso acad´ emico 2007-2008 Proyecto Fin de Carrera Calibraci´ on Autom´ atica de C´ amaras en la plataforma jdec. Tutor: Jos´e M. Ca˜ nas Plaza Autor: Redouane Kachach A mi mujer, mis padres y hermanos Que estar´ıan muy orgullosos de poder ver esto A todos los amigos Agradecimientos. Quiero dar las gracias a todo el grupo de rob´otica de la URJC. De manera especial a Jos´e Mar´ıa Ca˜ nas por su confianza, sus conocimientos facilitados y su apoyo y paciencia que han sido clave para llevar a cabo este proyecto. Quiere agradecer tambi´en a mi mujer por su paciencia y apoyo a lo largo del desarrollo de este proyecto y como no, dar las gracias a mis padres y mis hermanos que tanto tiempo han esperado este momento apoy´andome con todo lo que han podido a lo largo de la carrera. Finalmente quiero dar las gracias a todos los amigos y compa˜ neros. Me gustar´ıa hacer una lista con todos los nombres, pero me temo que seria larga y llena de ausencias. Gracias a todos por el apoyo y los buenos ratos que hemos pasado juntos. ´Indice general Resumen 1 1. Introducci´ on 2 1.1. Visi´on por computador . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2. Visi´on 3D y calibraci´on de c´amaras . . . . . . . . . . . . . . . . . 6 1.3. Calibraci´on Autom´atica de C´amaras en la plataforma jdec. . . . . 10 2. Objetivos 11 2.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3. Metodolog´ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3. Plataforma de desarrollo 15 3.1. Arquitectura jdec para aplicaciones rob´oticas. . . . . . . . . . . . 15 3.2. GSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3. OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4. Glib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.5. Biblioteca gr´afica Xforms . . . . . . . . . . . . . . . . . . . . . . . 19 3.6. Herramienta de calibraci´on ARtoolKit . . . . . . . . . . . . . . . 20 4. Rectificador de im´ agenes 23 4.1. Dise˜ no general e integraci´on con jdec . . . . . . . . . . . . . . . . 24 4.2. An´alisis con geometr´ıa proyectiva . . . . . . . . . . . . . . . . . . 25 4.3. C´alculo de la matriz H . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4. Reconstrucci´on de la imagen rectificada . . . . . . . . . . . . . . . 30 4.5. Interfaz del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.6. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 i ´INDICE GENERAL ii 5. Calibrador 34 5.1. Dise˜ no general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.2. Calibrador basado en DLT . . . . . . . . . . . . . . . . . . . . . . 35 5.2.1. El modelo Pinhole de c´amara . . . . . . . . . . . . . . . . 35 5.2.2. Matriz gen´erica de proyecci´on . . . . . . . . . . . . . . . . 40 5.2.3. C´alculo de la matriz gen´erica de proyecci´on . . . . . . . . 41 5.2.4. Descomposici´on RQ . . . . . . . . . . . . . . . . . . . . . . 42 5.3. Detecci´on autom´atica del patr´on . . . . . . . . . . . . . . . . . . . 45 5.3.1. Filtro de color . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.3.2. Agrupamiento . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.3.3. Ordenamiento de puntos . . . . . . . . . . . . . . . . . . . 48 5.4. Interfaz del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.4.1. Ventana OpenGL . . . . . . . . . . . . . . . . . . . . . . . 51 5.4.2. Integraci´on con progeo . . . . . . . . . . . . . . . . . . . . 53 5.5. Modos de funcionamiento del calibrador . . . . . . . . . . . . . . 55 5.5.1. Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.5.2. Autom´atico . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.5.3. Semiautom´atico . . . . . . . . . . . . . . . . . . . . . . . . 57 6. Conclusiones y Trabajos futuros 58 6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 6.2. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 ´Indice de figuras 1.1. Detecci´on de matr´ıculas . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Reconocimiento de caras . . . . . . . . . . . . . . . . . . . . . . . 4 1.3. Sistema de control de calidad . . . . . . . . . . . . . . . . . . . . 5 1.4. Reconstrucci´on de una imagen panor´amica a partir de dos im´agenes 5 1.5. Flujo sangu´ıneo en el cerebro humano . . . . . . . . . . . . . . . . 6 1.6. Perdida de informaci´on geom´etrica por causa de la proyecci´on perspectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.7. Robots equipados con visi´on est´ereo . . . . . . . . . . . . . . . . . 7 1.8. Reconstrucci´on del terreno de marte . . . . . . . . . . . . . . . . . 7 1.9. Triangulaci´on usando dos c´amaras . . . . . . . . . . . . . . . . . . 8 2.1. Modelo espiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.1. Pipeline de OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2. fdesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.3. Realidad virtual con ARtoolKit . . . . . . . . . . . . . . . . . . . 20 3.4. Primer paso de calibraci´on . . . . . . . . . . . . . . . . . . . . . . 21 3.5. Segundo paso de calibraci´on . . . . . . . . . . . . . . . . . . . . . 22 4.1. correcci´on de distorsi´on perspectiva y radial . . . . . . . . . . . . 23 4.2. Algoritmo de rectificaci´on . . . . . . . . . . . . . . . . . . . . . . 24 4.3. Esquema de integraci´on . . . . . . . . . . . . . . . . . . . . . . . 25 4.4. Mapeo entre dos planes . . . . . . . . . . . . . . . . . . . . . . . . 27 4.5. Reconstrucci´on del plano de la pared . . . . . . . . . . . . . . . . 27 4.6. Reconstrucci´on del plano de la pancarta de rob´otica . . . . . . . . 30 4.7. Reconstrucci´on de la imagen de un CD utilizando 4 puntos aleatorios del borde . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.8. Interfaz de usuario del rectificador . . . . . . . . . . . . . . . . . . 31 iii ´INDICE DE FIGURAS iv 4.9. Recuperaci´on de la foto frontal de un monumento . . . . . . . . . 32 4.10. Imagen de la carretera rectificada . . . . . . . . . . . . . . . . . . 33 5.1. Integraci´on con jdec . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.2. Modelo de C´amara oscura . . . . . . . . . . . . . . . . . . . . . . 36 5.3. El modelo Pinhole usado en OpenGL . . . . . . . . . . . . . . . . 36 5.4. Esquema del modelo Pinhole . . . . . . . . . . . . . . . . . . . . . 37 5.5. Representaci´on de la c´amara . . . . . . . . . . . . . . . . . . . . . 38 5.6. Entrada/Salida del calibrador . . . . . . . . . . . . . . . . . . . . 40 5.7. Patr´on de calibraci´on y ejes asociados . . . . . . . . . . . . . . . . 41 5.8. Resultados de calibraci´on . . . . . . . . . . . . . . . . . . . . . . . 44 5.9. Proyecci´on de objetos virtuales . . . . . . . . . . . . . . . . . . . 45 5.10. Patr´on de calibraci´on . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.11. Sistema de detecci´on autom´atica . . . . . . . . . . . . . . . . . . 46 5.12. Entrada/Salida del filtro HSV . . . . . . . . . . . . . . . . . . . . 47 5.13. Diagrama de entrada/salida del Agrupador . . . . . . . . . . . . . 48 5.14. Diagrama de entrada/salida del Detector de l´ıneas . . . . . . . . . 49 5.15. Interfaz de usuario del calibrador . . . . . . . . . . . . . . . . . . 50 5.16. Calibraci´on de un par est´ereo de c´amaras . . . . . . . . . . . . . . 51 5.17. Representaci´on en OpenGL de la escena formada por el patr´on y la c´amara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.18. Modo progeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.19. Orden de introducci´on de puntos en el modo manual . . . . . . . 56 5.20. Detecci´on autom´atica de los puntos del patr´on . . . . . . . . . . . 57 Resumen La inform´atica ha logrado grandes avances en la u ´ltima d´ecada y su uso se ha extendido notablemente. Uno de los sectores que m´as se ha beneficiado de estos avances es la visi´on computacional, donde el aumento de potencia de c´alculo y la bajada de precios de las c´amaras han abierto nuevas posibilidades. Dentro de este campo un tema cl´asico es la calibraci´on de c´amaras, que consiste en averiguar los par´ametros extr´ınsecos e intr´ınsecos de una c´amara. A partir de este conocimiento se puede sacar m´as provecho a los fotogramas recibidos por las c´amaras, por ejemplo estimar la posici´on 3D de un objeto o medir distancias desde una imagen o varias. Este proyecto trata de resolver este problema de forma autom´atica bas´andose en la t´ecnica de DLT (Direct Linear Transformation) incorporando esta funcionalidad a la plataforma software jdec. La t´ecnica implementada se basa en tener un patr´on de calibraci´on en 3D del cual se conoce perfectamente su geometr´ıa y la posici´on de ciertos puntos significativos en ´el, por ejemplo por sus colores. El algoritmo de calibraci´on desarrollado consiste en los siguientes pasos: capturar la imagen del patr´on 3D, detectar los p´ıxeles de la imagen donde caen los puntos 3D coloreados, construir un sistema de ecuaciones con la informaci´on de correspondencia entre ambos, resolver el sistema optimizando la matriz soluci´on y extraer los par´ametros de la c´amara descomponiendo esta u ´ltima. Como paso previo a la resoluci´on de calibraci´on se ha construido un rectificador de im´agenes, que deshaciendo las transformaciones debidas a la proyecci´on, reconstruye un plano de la realidad 3D mape´andolo con el de la propia imagen. La idea es similar a la del calibrador pero el sistema de ecuaciones en este caso es m´as sencillo de resolver, compatible determinado. 1 Cap´ıtulo 1 Introducci´on La visi´on es el principal sentido utilizado por los humanos para moverse en el mundo. Es cierto que el ser humano est´a dotado con varios tipos de sentidos como el olfato o el tacto, sin embargo la cantidad de informaci´on que nos dan estos sentidos es incomparable con la que recibimos a trav´es de la visi´on. Nuestra capacidad de interpretaci´on de se˜ nales visuales y la variedad de colores que podemos percibir han contribuido en el desarrollo de la inteligencia humana. Vista su importancia y la cantidad de informaci´on generada por este sentido, siempre se ha intentado emular en m´aquinas, de ah´ı la visi´on artificial siempre ha sido uno de los campos de gran inter´es para los investigadores dentro del campo de la inteligencia artificial. 1.1. Visi´ on por computador Nuestros ojos son mucho m´as desarrollados que cualquier c´amara de hoy en d´ıa, y m´as all´a, el procesamiento de se˜ nal que hace nuestro cerebro es mucho m´as complicado que cualquier programa de procesamiento de im´agenes. De hecho todav´ıa hay ciertas habilidades que no se comprenden completamente. M´as all´a de querer imitar al ser humano, en vez de entender toda la informaci´on contenida en una imagen, la visi´on por computador se centra en sacar cierta informaci´on de inter´es para alguna tarea especifica. Por ejemplo si tenemos la foto de un coche, el ser humano es capaz de percibir todo el entorno, ver de qu´e marca se trata y sacar la m´axima informaci´on posible, sin embargo para un programa inform´atico le basta con detectar la matr´ıcula para identificar a este coche. 2 ´ CAP´ITULO 1. INTRODUCCION 3 Figura 1.1: Detecci´on de matr´ıculas La visi´on artificial se ha beneficiado en gran medida del aumento en capacidad de c´alculo, de las nuevas tecnolog´ıas en fabricaci´on de c´amaras y del abaratamiento de precios de estos sensores. De hecho, en campos como la rob´otica, en relaci´on cantidad de informaci´on/precio, no hay sensor que compita con las c´amaras. La dificultad en este caso no radica en tener los datos disponibles, sino en procesarlos. Dise˜ nar e implementar un algoritmo que saque informaci´on u ´til de una imagen no es tarea f´acil, y hacer que funcione en tiempo real tampoco. A´ un con este tipo de dificultades las c´amaras siguen siendo consideradas de los mejores sensores para extraer informaci´on. Los factores mencionados han abierto el camino a la investigaci´on en este sector ya que no requiere recursos econ´omicos excesivos, de hecho, hoy en d´ıa se pueden hacer aplicaciones bastante sofisticadas con una webCam y el PC de casa. Esto hace que los avances en este sector est´en al alcance de cualquiera. La visi´on por computador se puede dividir en dos secciones: visi´on 2D y visi´on 3D, siendo este u ´ltimo el campo que m´as inter´es y m´as pasi´on levanta entre los investigadores en los u ´ltimos a˜ nos. La visi´on 2D se puede definir como el proceso de extraer informaci´on u ´til de una imagen sin necesidad de saber en ning´ un momento informaci´on 3D alguna de la escena capturada en la imagen. Las aplicaciones en este sector son m´ ultiples y se extienden a campos desde la rob´otica hasta la medicina. Un problema cl´asico en este campo es el de reconocimiento. Los humanos tenemos la capacidad de reconocer a un objeto sin apenas esfuerzo. Sin embargo, implementar estas caracter´ısticas en una m´aquina cuesta m´as de lo que parece y en general se a˜ naden muchas restricciones para facilitar la ´ CAP´ITULO 1. INTRODUCCION 4 labor a la m´aquina. Un ejemplo de este tipo de sistemas son los OCR, sistemas capaces de reconocer letras y s´ımbolos y de extraer el texto desde una imagen. Sin embargo, el conjunto de objetos o s´ımbolos que podr´an reconocer es acotado y la capacidad de aprendizaje en general es mala. Una de las posibles aplicaciones de esta t´ecnica es el control del acceso a un Parking (ver figura 1.1) Otra aplicaci´on t´ıpica de la visi´on 2D por computador es el reconocimiento de caras humanas (ver figura 1.2) donde el sistema dispone de una base de datos amplia con caras humanas caracterizadas de cierta manera y de una c´amara colocada estrat´egicamente para detectar la cara con precisi´on. El sistema trata de identificar la cara capturada contra la base de datos. Las aplicaciones de este sistema son numerosas, desde el control de acceso a un laboratorio de la NASA hasta la identificaci´on de criminales en un aeropuerto. Figura 1.2: Reconocimiento de caras En el campo industrial las c´amaras son ampliamente utilizadas para el control de calidad, ya que en general esta tarea es repetitiva y aburrida para los seres humanos y conlleva un elevado riesgo de error. Existen sistemas de control de calidad que se basan en capturar la imagen del producto y verificar si cumple ciertas caracter´ısticas. En el ejemplo de la figura 1.3 podemos ver un sistema capaz de descartar piezas que no cumplen ciertas especificaciones de calidad. ´ CAP´ITULO 1. INTRODUCCION 5 Figura 1.3: Sistema de control de calidad Siempre en el marco de visi´on 2D, podemos reconstruir una imagen panor´amica a partir de dos im´agenes. En la figura 1.4 podemos ver un ejemplo de esta t´ecnica. Figura 1.4: Reconstrucci´on de una imagen panor´amica a partir de dos im´agenes Otra de las ´areas beneficiadas con los avances en este campo es la medicina. Hoy en d´ıa las im´agenes m´edicas son una herramienta b´asica para analizar y detectar muchas enfermedades. Por ejemplo disponer de una imagen ilustrativa del flujo sangu´ıneo (ver figura 1.5) en el cerebro ayuda para estudiar, analizar y detectar muchas enfermedades. En definitiva, disponer de una imagen en condiciones ayuda much´ısimo en el proceso de an´alisis de enfermedades y la cura de las mismas. ´ CAP´ITULO 1. INTRODUCCION 6 Figura 1.5: Flujo sangu´ıneo en el cerebro humano 1.2. Visi´ on 3D y calibraci´ on de c´ amaras Otro campo muy activo en visi´on artificial es la visi´on 3D, que se puede definir como el proceso de extracci´on de informaci´on tridimensional a partir de im´agenes de dos o m´as c´amaras. Las im´agenes que ofrecen las c´amaras son bidimensionales y se obtienen mediante un proceso de proyecci´on de la realidad en el cual mucha informaci´on se pierde a causa de la distorsi´on perspectiva que sufre la imagen proyectada, como es el caso de la profundidad (ver figura 1.6). Figura 1.6: Perdida de informaci´on geom´etrica por causa de la proyecci´on perspectiva La visi´on 3D trata de recuperar la informaci´on perdida mediante algoritmos que aprovechan la naturaleza lineal del modelo de la c´amara para reconstruir la realidad. De ah´ı viene su importancia, pues mucha informaci´on u ´til es tridimensional. Sin embargo, recuperar esta informaci´on no es tarea f´acil, sobre todo si uno ´ CAP´ITULO 1. INTRODUCCION 7 de los requisitos impuestos es la alta precisi´on. En este caso hacen falta algoritmos complejos y elaborados que trabajen con las im´agenes de m´as de una c´amara. Otro campo con perspectivas al futuro y que ha contribuido en el desarrollo de la visi´on artificial es la rob´otica. Los u ´ltimos robots que la NASA envi´o al planeta rojo iban equipados con un par est´ereo de c´amaras de alta precisi´on para navegar en un entorno tan complicado. En el caso de los robots humanoides, Qrio (ver figura 1.7(b)) es uno de los m´as famosos. Se trata de un robot dotado de un par est´ereo de c´amaras que le ayudan para llevar acabo sus tareas. (a) Sonda Spirit (b) Qrio Figura 1.7: Robots equipados con visi´on est´ereo Otra aplicaci´on de visi´on 3D es la reconstrucci´on de mapas por sat´elite de zonas donde los humanos no podemos llegar(ver figura 1.8), hacer mediciones sobre los mismos y sacar informaci´on m´etrica que a priori se desconoce. Figura 1.8: Reconstrucci´on del terreno de marte La informaci´on tridimensional que se saca de las im´agenes es de gran im- ´ CAP´ITULO 1. INTRODUCCION 8 portancia, se pueden construir aplicaciones muy robustas que hacen uso de esta informaci´on. Los humanos nos movemos en un mundo tridimensional y razonamos bas´andonos en la informaci´on percibida del mismo, esto hace que la informaci´on tridimensional sea natural y rica para emular alg´ un comportamiento humano en las m´aquinas. Bas´andose en esta idea hay varios algoritmos de navegaci´on visual implementados en robots para moverse en un entorno semiestructurado ´agilmente [Pe˜ na, 2005], para ello hay que dotar al robot con un par de c´amaras para reconstruir la escena que est´a viendo en tres dimensiones y tomar decisiones de navegaci´on. En la industria hay muchos tipos de sensores que nos permiten calcular la profundidad como los l´aseres o s´onares. Sin embargo las medidas ofrecidas por este tipo de sensores pierden informaci´on muy importante como es el color de los objetos, y en general son de precio muy elevado comparados con las c´amaras. Esto hace de ´estas el mejor sensor para extraer informaci´on en tres dimensiones aunque sea de manera indirecta. Para recuperar la informaci´on tridimensional a partir de im´agenes, hace falta disponer de varias c´amaras calibradas. Con una sola c´amara esto es imposible, ya que dado un p´ıxel solo podemos saber el rayo ´optico que proyecta en el mismo, seguimos siendo incapaces de saber el punto 3D en concreto. Todos los puntos que pertenecen al rayo ´optico que une un p´ıxel junto con el foco de la c´amara proyectan en el mismo. Para determinar el punto 3D hacen falta al menos dos c´amaras calibradas situadas estrat´egicamente. Dado un p´ıxel de la primera imagen, recuperamos el rayo que lo produce, haciendo lo mismo con el p´ıxel correspondiente en la segunda imagen obtenemos el segundo rayo, triangulando (ver figura 1.9), somos capaces de estimar la posici´on 3D del punto en la realidad. Figura 1.9: Triangulaci´on usando dos c´amaras ´ CAP´ITULO 1. INTRODUCCION 9 Calibrar una c´amara consiste en saber ciertos par´ametros de la misma que a priori desconocemos. Cuando compramos una c´amara, en general el fabricante nos dice ciertos par´ametros de la misma como la distancia focal. El proceso de calibraci´on trata de sacar todos los par´ametros que hace falta saber para deshacer los efectos de proyecci´on en una c´amara. Estos par´ametros se dividen en dos tipos: intr´ınsecos y extr´ınsecos. Los primeros son propios de la c´amara y no cambian. En general son la distancia focal, el tama˜ no de los p´ıxeles y el punto principal. Los segundos son la posici´on y orientaci´on de la c´amara en tres dimensiones tomando como referencia alg´ un sistema de coordenadas absoluto en el mundo. Para calibrar c´amaras han surgido varias t´ecnicas. Hay varios aspectos a tener en cuenta a la hora de comprar los resultados obtenidos por una o otra t´ecnica, siendo la precisi´on de los resultados obtenidos la m´as importante. A continuaci´on algunas de las t´ecnicas m´as utilizadas: DLT: [Abdel-Aziz y Karara, 1971] fueron los primeros en desarrollar DLT (Direct Linear Tranformation). Esta t´ecnica trata de detectar los dos tipos de par´ametros a la vez mediante una ecuaci´on lineal. M´as tarde [KARARA, 1979] mejor´o el m´etodo para tener en cuenta las distorsiones ´opticas. La simplicidad del modelo y los buenos resultados obtenidos por el mismo han hecho que se extienda su uso en la comunidad cient´ıfica. M´ etodos en dos pasos: La idea principal de estos m´etodos es hacer la calibraci´on en dos pasos para evitar la inestabilidad que resulta al intentar hallar todos los par´ametros a la vez. El m´etodo m´as famoso en este tipo es el TSAI [Tsai, 1986] “two stage”. La idea de esta t´ecnica es calcular la soluci´on directa con ecuaciones lineales y posteriormente se ajustan los par´ametros obtenidos realizando varias iteraciones. M´ etodos matem´ aticos: En este tipo de m´etodos, todos los elementos son representados mediante elementos matem´aticos. [MARTINS, 1991], presenta un m´etodo con estas caracter´ısticas denominado el m´etodo de los dos planos. La idea b´asica de este m´etodo es que en vez del rayo ´optico, los puntos del plano imagen y sus correspondientes en el espacio tridimensional est´an unidos por la intersecci´on de dos planos de calibraci´on basados en una interpolaci´on matem´atica. De esta menara se consigue que el procedimiento sea lineal y las distorsiones se compensen con la interpolaci´on. ´ CAP´ITULO 1. INTRODUCCION 10 Sin embargo resulta dif´ıcil incorporar ciertos tipos de errores sistem´aticos usando esta t´ecnica. 1.3. Calibraci´ on Autom´ atica de C´ amaras en la plataforma jdec. En los u ´ltimos a˜ nos el n´ umero de los proyectos dentro del grupo de rob´otica que trabajan con temas relacionados con visi´on 3D ha ido creciendo de forma muy considerable. [Pineda, 2006] ha desarrollado un algoritmo de localizaci´on de un objeto en 3D basado en un filtro de part´ıculas. El proyecto de [Marug´an, 2006] generaliza el problema anterior a la localizaci´on 3D multiobjeto. La tesis doctoral [Gonz´alez, 2008] aborda el problema de localizaci´on visual de objetos en 3D empleando varias t´ecnicas. En la mayor´ıa de estos proyectos hace falta trabajar con c´amaras calibradas. De ah´ı surgi´o la necesidad de disponer de un calibrador autom´atico propio para el grupo y disponible para libre uso del resto de la comunidad cient´ıfica. Hasta el momento para calibrar una c´amara hab´ıa que recurrir a otras herramientas externas de manejo dif´ıcil y tedioso que hac´ıan de la calibraci´on un proceso aburrido, largo, y sin el resultado adecuado. Bajo estas circunstancias y con la voluntad de obtener un calibrador propio en la plataforma jdec, surgi´o la idea de este proyecto de fin de carrera. El objetivo a groso modo consiste en solucionar el problema de la calibraci´on bas´andose en el m´etodo de DLT. Se ha optado por implementar esta t´ecnica ya que permite obtener todos los par´ametros de la c´amara en un solo paso con una precisi´on razonable. En el siguiente cap´ıtulo vamos a presentar los objetivos concretos de este proyecto. En el cap´ıtulo 3 se presentan las herramientas software y la plataforma sobre la cual se apoya el desarrollo de este proyecto. En el cap´ıtulo 4 presentaremos el rectificador de im´agenes que constituye un paso previo para abordar el problema de calibraci´on. En el cap´ıtulo 5 veremos los pasos que se han seguido para construir el calibrador autom´atico de c´amaras. Finalmente en el el cap´ıtulo 6 recapitulamos las conclusiones interesantes de este proyecto y trazamos las lineas futuras del mismo. Cap´ıtulo 2 Objetivos Despu´es de haber presentado el contexto general y particular en el que se ha desarrollado este proyecto, en este cap´ıtulo vamos a fijar sus objetivos concretos y presentar los requisitos para su realizaci´on. Hablaremos tambi´en de la metodolog´ıa y el ciclo de vida que se ha seguido para el desarrollo de los componentes software que constituyen este proyecto. 2.1. Objetivos El objetivo principal de este proyecto es la construcci´on de un calibrador autom´atico de c´amaras. La t´ecnica base utilizada es DLT (Direct Linear Trasnformation) que consiste en utilizar un patr´on 3D de geometr´ıa conocida con el fin de hallar los par´ametros intr´ınsecos y extr´ınsecos (posici´on, orientaci´on) de una c´amara. Para llegar al objetivo final, se ha establecido un subobjetivo inicial que consiste en construir un rectificador de im´agenes. Adem´as, se han establecido otros subojetivos parciales que constituyen el camino hacia la soluci´on final de la calibraci´on. En resumen los objetivos de este proyecto son los siguientes: Construir un rectificador de im´agenes capaz de deshacer perspectivas. Construir un calibrador autom´atico donde los puntos de control son introducidos manualmente por el usuario. 11 CAP´ITULO 2. OBJETIVOS 12 Construir un calibrador autom´atico de c´amaras mejorado, dot´andole con un sistema inteligente de detecci´on autom´atica de puntos de control, aumentando la comodidad de su uso. 2.2. Requisitos La versi´on final del calibrador tiene que responder a los siguientes requisitos: La implementaci´on tanto del rectificador como del calibrador tiene que ser en forma de un esquema de jdec. Los algoritmos fruto de este proyecto tienen que respetar la misma pol´ıtica de patentes de jdec (GPL). El calibrador tiene que permitir el c´alculo de las matrices de intr´ınsecos y extr´ınsecos de la c´amara a partir del patr´on de calibraci´on 3D en un solo paso y con la m´ınima intervenci´on del usuario. El tiempo requerido para calibrar la c´amara tiene que ser menor que un minuto. El calibrador debe permitir un modo de calibraci´on manual donde el usuario introduzca los puntos de control picando sobre la imagen de entrada. El calibrador debe permitir la detecci´on autom´atica del patr´on 3D de tal manera que para calibrar una c´amara baste con ense˜ narle el patr´on. El sistema de detecci´on autom´atica no deber´ıa imponer restricciones al usuario para la detecci´on del patr´on de calibraci´on, como la posici´on o orientaci´on del mismo. La precisi´on de los resultados de calibraci´on obtenidos tienen que ser independiente del modo utilizado. Integrar el calibrador con la biblioteca progeo de jdec. Para poder utilizar los resultados de calibraci´on como valores de entrada de progeo. 2.3. Metodolog´ıa Para el desarrollo de los componentes software de este proyecto nos hemos basado en una metodolog´ıa iterativa incremental (ver figura 2.1). Donde cada CAP´ITULO 2. OBJETIVOS 13 iteraci´on a˜ nade nueva funcionalidad que se integra con la ya disponible. El modelo utilizado se acerca bastante al modelo espiral sin embargo en el caso concreto de este proyecto no se hace an´alisis previo de riesgos. Figura 2.1: Modelo espiral Se ha seguido la misma metodolog´ıa para el dise˜ no y la implementaci´on de los dos productos software construidos en este proyecto: el rectificador de im´agenes y el calibrador autom´atico de c´amaras. Tras un periodo de estudio de geometr´ıa proyectiva en el cual se ha basado en el libro [Hartley y Zisserman, 2004], y de estudio del abanico de t´ecnicas utilizadas para resolver el problema de calibraci´on, entramos en el ciclo iterativo incremental del desarrollo. En cada iteraci´on se fijan los subobjetivos, se dise˜ nan los componentes, pasamos a la implementaci´on de ´estos y finalmente las pruebas de integraci´on. Una vez terminado este proceso el tutor supervisaba y validaba las pruebas propuestas, y en caso de ´exito pas´abamos a la siguiente iteraci´on. Se manten´ıan reuniones semanales con el tutor con el fin de estudiar el estado del desarrollo y planificar las siguientes etapas. Cada iteraci´on daba fruto a un nuevo prototipo con nueva funcionalidad a˜ nadida al algoritmo. En este proyecto se han realizado varias iteraciones, cada una a˜ nade nueva funcionalidad al producto final: CAP´ITULO 2. OBJETIVOS 14 Iteraci´ on 0: Estudio de geometr´ıa proyectiva bas´andose en el libro [Hartley y Zisserman, 2004]. Iteraci´ on 1: Rectificador de im´agenes basado en un sistema de ecuaciones compatible determinado. Iteraci´ on 2: Calibrador DLT autom´atico de una sola c´amara. Iteraci´ on 3: Integraci´on con OpenGL para visualizar la escena compuesta por la c´amara y el patr´on 3D y la posici´on relativa entre ambos. Iteraci´ on 4: Calibrador de un par est´ereo de c´amaras. Iteraci´ on 5: Calibrador dotado de un sistema inteligente de detecci´on de puntos de control. Iteraci´ on 6: Integraci´on del calibrador con la biblioteca progeo de jdec. Cap´ıtulo 3 Plataforma de desarrollo En este cap´ıtulo vamos a presentar la plataforma software sobre la cual se ha desarrollado este proyecto. Adem´as de apoyarse en la arquitectura jdec, nuestro software hace uso de otras bibliotecas auxiliares que le facilitan algunas tareas muy concretas. La elecci´on de estas librer´ıas ha tenido en cuenta los requisitos y restricciones impuestos en las secciones anteriores. 3.1. Arquitectura jdec para aplicaciones rob´ oticas. Jdec 1 (Jerarqu´ıa Din´amica de Esquemas) es una plataforma desarrollada ´ıntegramente en la URJC para facilitar la programaci´on de robots y de aplicaciones relacionadas con la visi´on artificial. Su origen se remonta al a˜ no 1997 como fruto de una tesis doctoral [Plaza, 2003] desde entonces ha ido creciendo de un a˜ no para otro con nuevas funcionalidades. Este proyecto se ha desarrollado sobre la versi´on 4.2 de jdec. La arquitectura software jdec encapsula toda la complejidad detr´as de un API f´acil que permite al desarrollador programar aplicaciones sin tener que saber los detalles de esta arquitectura. Jdec ofrece un concepto abstracto de proceso llamado esquema. Un esquema equivale a un flujo de ejecuci´on y se pueden crear jerarqu´ıas padre/hijo de esquemas trabajando concurrentemente para realizar cierta funci´on. Para comunicar entre los esquemas, jdec se apoya en el mecanismo de variables compartidas que pueden ser desde simples medidas num´ericas 1 https://trac.robotica-urjc.es/jde/ 15 CAP´ITULO 3. PLATAFORMA DE DESARROLLO 16 hasta im´agenes. Hay dos tipos de esquemas: los esquemas creados por usuarios, cuyo objetivo es resolver ciertas situaciones con las que se encuentre el robot o facilitar a otros esquemas datos derivados de otros m´as sencillos, y los esquemas b´asicos. Estos u ´ltimos pueden ser tanto perceptivos como motores, ambos son generados por los drivers. El objetivo de los esquemas b´asicos es poner a disposici´on de otros esquemas las variables que representan los sensores o actuadores. Los otros esquemas leer´an los datos de los sensores o escribir´an las acciones a realizar en esas variables. En este proyecto vamos a implementar dos esquemas: el rectificador y el calibrador. Los dos necesitan acceder a dos variables compartidas colorA y colorB que almacenan las im´agenes de entrada que se encuentran disponibles a trav´es de cualquier driver de v´ıdeo/im´agenes soportado por la plataforma. Jdec dispone de tres tipos de drivers para ofrecer v´ıdeo/imagen: mplayer, firewire e imagefile que permite obtener la imagen a partir de un fichero. El tipo de driver utilizado no afecta al funcionamiento de los esquemas ya que ´estos s´olo interact´ uan con las variables compartidas. El driver concreto que esta ofreciendo est´a variable es transparente al esquema. 3.2. GSL GSL2 (GNU Scientific Library) es una librer´ıa de uso libre que ofrece un conjunto muy amplio de operaciones matem´aticas de todo tipo. La biblioteca ha sido escrita de forma entera en el lenguaje C y ofrece un API muy f´acil de usar facilitando al programador el uso de las distintas funcionalidades que ofrece. Entre ´ las distintas rutinas que esta biblioteca ofrece podemos encontrar: Algebra lineal, N´ umeros complejos, Polinomios, Vectores y Matrices, Permutaciones y m´as operaciones. GSL ha sido utilizada con frecuencia en este proyecto sobre todo para c´alculos matriciales que son muy frecuentes en la geometr´ıa proyectiva. Tambi´en se han utilizado las funciones ofrecidas por la misma para la resoluci´on de sistemas de ecuaciones compatibles determinados y sistemas de ecuaciones lineales sobredimensionados. 2 http://www.gnu.org/software/gsl/ CAP´ITULO 3. PLATAFORMA DE DESARROLLO 3.3. 17 OpenGL OpenGL3 (Open Graphics Library) es una especificaci´on est´andar desarrollada por Silicon Graphics Inc. que ofrece un API multilenguaje y multiplataforma para describir y renderizar escenas 2D y 3D de una forma muy sencilla combinando las funciones b´asicas ofrecidas por esta librer´ıa. Se puede encontrar una descripci´on detallada de las funcionalidades ofrecidas por esta biblioteca en el libro [Opengl et al., 2005]. OpengGL describe un conjunto de funciones y su comportamiento. Los fabricantes Hardware crean implementaciones que respetan la especificaci´on. Estas tiene que pasar una serie de pruebas para certificar su implementaci´on como implementaci´on OpenGL. Hay varias implementaciones para m´ ultiples plataformas Hardware y Software como Linux, Windows, MacOS. OpenGL tiene dos misiones: Ocultar la complejidad de la interfaz con las diferentes tarjetas gr´aficas, presentando al programador una API u ´nica y uniforme. Ocultar la capacidad Hardware de las tarjetas gr´aficas ofreciendo al usuario un API uniforme independientemente de si la tarjeta lo implementa o no. En caso negativo, OpenGL trata de emular el comportamiento por software sin embargo el rendimiento ofrecido en este caso no es el ´optimo. Las operaciones b´asicas de OpenGL operan sobre elementos b´asicos: puntos, l´ıneas, pol´ıgonos. El proceso de convertir estos elementos en p´ıxeles se traduce mediante un pipeline (tuber´ıa) denominada la m´aquina de estados de OpenGL (ver figura 3.1). La estandarizaci´on de OpenGL y su extensi´on en la industria gr´afica ha hecho que los fabricantes de tarjetas gr´aficas incluyan ya soporte hardware para primitivas de OpenGL, entre esta podemos encontrar: Z-Buffering (buffer de profundidad). Mapeado de texturas. Alpha blending. 3 http://www.opengl.org/ CAP´ITULO 3. PLATAFORMA DE DESARROLLO 18 Operaciones b´asicas de puntos y l´ıneas. Figura 3.1: Pipeline de OpenGL En este proyecto OpenGL se usa para visualizar la escena compuesta por la c´amara y el patr´on de calibraci´on mostrando la posici´on relativa de uno respecto al otro. Esto nos viene bien para depurar el valor de los par´ametros extr´ınsecos obtenidos por el calibrador. Adem´as, se utiliza para generar la imagen sintetizada vista por la c´amara. Otra ventaja de utilizar OpenGL es aprovechar la GPU para realizar todas las operaciones anteriores descargando a la CPU de este trabajo. As´ı la visualizaci´on no ralentiza significativamente la velocidad de ejecuci´on de la aplicaci´on. 3.4. Glib Glib4 es una librer´ıa de bajo nivel que ofrece un conjunto muy amplio de TADs y operaciones para usar los mismos. Tiene un conjunto de APIs muy coherente y ofrece desde tipos b´asicos como gint hasta tipos complejos como listas, conjuntos, tablas hash, strings y m´as tipos. Se trata de una biblioteca ampliamente utilizada en varios proyectos de software libre como gimp o GTK. Las ventajas de utilizar esta librer´ıa han sido 4 http://library.gnome.org/devel/glib/ CAP´ITULO 3. PLATAFORMA DE DESARROLLO 19 varias desde ganar tiempo hasta asegurarse que los tipos b´asicos en los que se apoyan los componentes software son libres de BUGs y portables. Adem´as de todas estas ventajas se trata de una biblioteca muy bien documentada lo que facilita bastante la labor de programaci´on y abre el abanico para utilizar toda una variedad de TADs. En este proyecto se ha utilizado la versi´on 2.0 de esta librer´ıa, que est´a disponible en forma de un paquete Debian: libglib2.0-0 y libglib2.0-dev. El segundo paquete es el de desarrollo necesario para enlazar con glib. 3.5. Biblioteca gr´ afica Xforms Uno de los elementos m´as importantes de nuestra aplicaci´on es la interfaz gr´afica, ya que nos permite visualizar los resultados obtenidos y depurar el funcionamiento. Xforms es una biblioteca de libre uso escrita en C. Su misi´on principal es facilitar la creaci´on y uso de interfaces gr´aficas sobre el sistema X-Window de Linux ocultando la complejidad de ´esta al programador. Para ello ofrece un extenso repertorio de elementos gr´aficos sencillos (botones, diales, canvas..) que juntos permiten crear interfaces complejas. La biblioteca ofrece una herramienta fdesign (ver figura 3.2) de uso visual que nos permite crear y personalizar la interfaz de nuestro programa de manera muy sencilla. En este proyecto Xforms ha sido utilizada para crear la interfaz gr´afica tanto del esquema rectificador como del esquema calibrador. Cabe se˜ nalar que Xforms ofrece un canvas especial para OpenGL gl canvas. Este u ´ltimo ha sido utilizado para dibujar la escena del calibrador que consta del patr´on 3D y una representaci´on con puntos y l´ıneas de la c´amara. CAP´ITULO 3. PLATAFORMA DE DESARROLLO 20 Figura 3.2: fdesign 3.6. Herramienta de calibraci´ on ARtoolKit ARtoolKit es una herramienta software para desarrollar aplicaciones de realidad virtual. Tambi´en es una librer´ıa que implementa un conjunto muy amplio de algoritmos para resolver varios problemas relacionados con la visi´on artificial facilitando la labor a los desarrolladores que usan esta plataforma para construir proyectos m´as complejos. Figura 3.3: Realidad virtual con ARtoolKit En este proyecto vamos a utilizar esta herramienta para dos objetivos: Como referencia para comparar los resultados de calibraci´on obtenidos. CAP´ITULO 3. PLATAFORMA DE DESARROLLO 21 Para comprar el proceso de calibraci´on utilizado por el calibrador construido en este proyecto con el proceso de calibraci´on empleado por esta herramienta. ARtoolKit ofrece un conjunto muy amplio de utilidades. De estas, las importantes para el marco de este proyecto son las de calibraci´on de c´amaras, donde ARtoolKit soporta dos variantes de calibraci´on: Calibraci´ on en dos pasos: En este tipo de calibraci´on el usuario tiene que hacer los siguiente pasos: • Ejecutar calib dist: Para ello tiene que imprimir el patr´on de la figura 3.4. A continuaci´on tiene que capturar la imagen y marcar los puntos de izquierda a derecha, de arriba para abajo, como se indica en la figura 3.4. Figura 3.4: Primer paso de calibraci´on Esta operaci´on hay que realizarla varias veces (n´ umero configurable). Cuantas m´as veces se ejecuta, m´as precisos son los par´ametros de salida que vienen a ser las coordenadas del punto principal y los factores de distorsi´on. Estos par´ametros se utilizan como datos de entrada para el siguiente paso. • Ejecutar calib cparam: Para realizar este paso hace falta imprimir el patr´on de la figura 3.5 y fijarlo sobre un soporte s´olido para que no se mueva. Esta vez, lo que hay que marcar son las l´ıneas. El orden es de arriba para abajo y de izquierda a derecha. Esta operaci´on se repite CAP´ITULO 3. PLATAFORMA DE DESARROLLO 22 varias veces alejando cada vez el patr´on con una distancia determinada (configurable). Una vez llegamos al n´ umero de iteraciones requerido, ARtoolkit procesa todos estos datos para dar los resultados definitivos de calibraci´on. El proceso de c´alculo suele tardar unos minutos. Para llevar a cabo los dos pasos anteriores, hace falta adem´as de la c´amara, herramientas b´asicas de medici´on como una regla y un suporte s´olido para fijar el patr´on impreso. Figura 3.5: Segundo paso de calibraci´on Los movimientos del patr´on tienen que ser muy precisos ya que constituyen una fuente de error adicional al proceso de calibraci´on. Los dos pasos en conjunto se pueden llevar acabo en un intervalo de quince minutos aproximadamente. Calibraci´ on en un solo paso: Es exactamente lo mismo que el primer paso de la calibraci´on en dos pasos, utilizando el mismo patr´on de calibraci´on pero ejecutando calib cparam2. Se puede encontrar una descripci´on m´as detallada de las dos t´ecnicas en el sitio web oficial de ARtoolKit 5 . 5 http://www.hitl.washington.edu/artoolkit/documentation/usercalibration.htm#onestep Cap´ıtulo 4 Rectificador de im´agenes En este cap´ıtulo vamos a describir el rectificador de im´agenes desarrollado que constituye el primer subobjetivo hacia la construcci´on del calibrador. El problema de la rectificaci´on consiste en deshacer alg´ un efecto que produjo la c´amara en la imagen capturada. Estos efectos pueden ser b´asicamente de dos tipos: Distorsi´on por perspectiva (fruto de capturar la imagen con cierto ´angulo) o distorsi´on radial (fruto de la distorsi´on de la lente). En las siguientes im´agenes (ver figura 4.1) podemos ver un ejemplo de estos dos tipos de distorsi´on. Figura 4.1: correcci´on de distorsi´on perspectiva y radial 23 ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 24 El rectificador construido en este proyecto corrige exclusivamente el primer tipo de distorsi´on: distorsi´on perspectiva, bas´andose en el modelo lineal de la c´amara. Dada una imagen trataremos de reconstruir un plano contenido en la misma, deshaciendo la transformaci´on perspectiva. 4.1. Dise˜ no general e integraci´ on con jdec El algoritmo de rectificaci´on consiste en los siguientes pasos: (1) Captura de imagen, (2) c´alculo de la matriz H y (3) la generaci´on de la imagen sintetizada. El diagrama de la figura 4.2 describe estos pasos. Figura 4.2: Algoritmo de rectificaci´on Estos tres pasos han sido implementados e integrados dentro de la plataforma jdec en forma de un esquema que se relaciona con el resto de la plataforma seg´ un se aprecia en el diagrama de la figura 4.3: ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 25 Figura 4.3: Esquema de integraci´on La relaci´on entre el esquema rectificador y jdec consiste en leer la variable compartida colorA. La manera de rellenar esta variable es flexible ya que se puede obtener a trav´es de cualquier driver de im´agenes soportado por jdec. Si cambiamos el driver utilizado para obtener esta variable, esto no afectara al funcionamiento del rectificador ya que se hace de manera transparente al esquema. La elecci´on del driver se deja al usuario final. Este puede especificarlo cambiando el contenido del fichero de configuraci´on de la plataforma jdec llamado jde.conf. La variedad de drivers que ofrecen im´agenes dentro de la plataforma jdec nos permite rectificar im´agenes provenientes desde varias fuentes. La captura de la imagen y la elecci´on de puntos de entrada, se realizan a trav´es de la interfaz gr´afica de usuario construida para facilitar estas tareas al usuario. 4.2. An´ alisis con geometr´ıa proyectiva Este proyecto se basa fundamentalmente en la geometr´ıa proyectiva[Hartley y Zisserman, 2004]. La geometr´ıa es el estudio de puntos y l´ıneas y la relaci´on entre ellos bas´andose en un conjunto de reglas b´asicas que se llaman axiomas. Esta disciplina ha sido utilizada durante mucho tiempo hasta que Descartes em´ pez´o a formular estas relaciones bas´andose en Algebra. La geometr´ıa proyectiva trata de aprovechar este hecho para formular ciertas relaciones en el espacio de forma algebraica y aprovecharlas para ciertas demostraciones. Esta herramienta matem´atica resulta muy u ´til para expresar las relaciones que se representan en ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 26 la rectificaci´on de im´agenes. En geometr´ıa proyectiva, una l´ınea en el plano se representa con la ecuaci´on ax + by + c = 0 variando los valores de a, b y c podemos obtener varias l´ıneas. Sin embargo, esta representaci´on no es u ´nica ya que k(ax + by + c = 0) representa la misma l´ınea para cualquier constante k distinta de cero. Dicho esto, los vectores k(a,b,c) forman una clase de equivalencia llamada vector homog´eneo. El conjunto de clases de equivalencia de vectores en espacio proyectivo P2 . El punto (0, 0, 0)T R3 − (0, 0, 0)T forma el no pertenece a este espacio ya que no hay ninguna l´ınea que cumpla estas caracter´ısticas. Dado un punto P = (x, y, 1)T pertenece a la l´ınea l = (a, b, c)T si y solo si: ax + by + c = 0 esta ecuaci´on se puede escribir en forma de producto escalar (x, y, 1)(a, b, c)T = (x, y, 1) · l = 0. Si multiplicamos por cualquier valor k distinto de cero, la ecuaci´on no cambia. De la misma manera el conjunto de vectores (kx, ky, k)T representa el mismo punto en R2 . Dicho esto, los puntos se pueden representar con vectores ho- mog´eneos igual que las l´ıneas. Cualquier vector (x1 , x2 , x3 )T representa el punto (x1 /x3 , x2 /x3 )T de R2 asi que tanto los puntos como las l´ıneas se pueden repre- sentar como vectores de tres elementos dentro del espacio Teorema 4.2.1 Una funci´on h : P2 → P2 P2 . es una transformaci´on lineal si y solo si existe una matriz 3x3 tal que para cualquier punto en P2 es cierto que h(x) = Hx Una vez descritos los elementos geom´etricos principales en este escenario: l´ıneas y puntos, vamos a describir la transformaci´on que sufre un plano 3D al proyectarle sobre el plano imagen. En t´erminos geom´etricos, una proyecci´on transforma un figura en otra equivalente manteniendo todas sus propiedades de proyecci´on invariantes. Aprovechando la linealidad del modelo de c´amara, Pinhole, descrito en la secci´on 5.2.1 intentaremos deshacer las transformaciones resultantes de la proyecci´on. ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 27 Figura 4.4: Mapeo entre dos planes En la imagen 4.4 podemos ver c´omo la c´amara transforma el plano πw del mundo en el plano πim de la imagen. La rectificaci´on intenta darle la vuelta a este mapeo y obtener el plano πw a partir del plano de la imagen πim . El modelo de c´amara Pinhole utilizado en este proyecto se basa en la proyecci´on perspectiva que a su vez es una transformaci´on lineal. A continuaci´on podemos ver c´omo se pasa de una imagen que sufri´o una transformaci´on de proyecci´on perspectiva a una imagen frontal sintetizada donde se reconstruye el plano de la pared tras haber elegido las cuatro esquinas de la ventana para formar las correspondencias. Figura 4.5: Reconstrucci´on del plano de la pared Seg´ un el modelo Pinhole la ecuaci´on general del modelo de c´amara que relaciona un punto cualquiera del espacio Pw con un p´ıxel Pim de la imagen: ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES Pim = M Pw 28 (4.1) Donde M3x4 es la matriz gen´erica de proyecci´on. A˜ nadiendo la restricci´on adoptada en el proceso de rectificaci´on que consiste en que los puntos que forman la correspondencia tienen que pertenecer al mismo plano, la ecuaci´on 4.1 se puede reescribir: Pim = HPw Pw ∈ π w (4.2) Donde πw es el plano que queremos reconstruir y H3x3 una matriz homog´enea de ocho grados de libertad (el noveno es para la escala). Para deshacer la transformaci´on basta con calcular la matriz H y aplicar la transformaci´on inversa: Pw = H −1 Pim (4.3) La relaci´on 4.2 de proyecci´on se puede representar con una matriz homog´enea H de nueve elementos:  0     x1 h11 h12 h13 x1 x20  = h21 h22 h23 · x2 x30 h31 h32 h33 x3 4.3. (4.4) C´ alculo de la matriz H Dado que H es homog´enea, kH tambi´en es una soluci´on v´alida para el sistema anterior. As´ı que podemos dividir todos los elementos de H por h33 y pasamos a tener ocho inc´ognitas en vez de nueve. Para hallar los ocho elementos necesitamos ocho ecuaciones lineales independientes. Si desarrollamos el sistema anterior y dividimos por la coordenada homog´enea obtenemos lo siguiente: x10 h11 .x + h12 .y + h13 = 0 x3 h31 .x + h32 .y + 1 0 x2 h21 .x + h22 .y + h23 y0 = 0 = x3 h31 .x + h32 .y + 1 x0 = Desarrollando este sistema llegamos a: (4.5) (4.6) ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 29   h11 h12   h13   0     h21 x y 1 0 0 0 −x0 x −x0 y   = x0  0 0  y h22 0 0 0 x y 1 −y x −y y    h23   h31 h32 (4.7) En este sistema de ecuaciones las inc´ognitas son las hij. Dada la correspondencia entre dos puntos (x,y) y (x’,y’) que pertenecen a la imagen 2D de entrada y de salida respectivamente somos capaces de obtener dos ecuaciones. Para resolver las ocho inc´ognitas hacen falta cuatro puntos de correspondencia entre el plano original πim y el plano rectificado πw . Para obtener ocho ecuaciones linealmente independientes, los cuatro puntos tienen que ser coplanares pero no colineales. Es aqu´ı donde aprovechamos nuestro conocimiento previo para marcar cuatro puntos de entrada que cumplen esta precondici´on y sus correspondientes en la salida. El sistema de ecuaciones construido en este caso es compatible determinado y tiene una soluci´on u ´nica. En resumen, el algoritmo para calcular esta matriz H consiste de los siguientes pasos: Elegir cuatro puntos en la imagen de entrada (xi , yi , zi ) i ∈ 1...4 Elegir cuatro puntos en la imagen de salida (x0i , yi0 , zi0 ) i ∈ 1 . . . 4 que corresponden a los ya elegidos en la imagen de entrada. El orden de correspondencia es muy importante. Formar un sistema lineal de ocho ecuaciones (cada correspondencia genera dos ecuaciones). Resolver el sistema obteniendo los ocho elementos de la matriz H. Todos los c´alculos matriciales llevados a cabo se han basado en gsl. En concreto la resoluci´on del sistema lineal compatible determinado A · x = B se ha realizado con la funci´on gsl linalg LU solve que se llama despu´es de haber descompuesto la matriz A utilizando la t´ecnica LU que se puede efectuar con la funci´on gsl linalg LU decomp. ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 4.4. 30 Reconstrucci´ on de la imagen rectificada Una vez calculada la matriz H ya podemos construir la imagen rectificada. Para ello hacemos uso de las ecuaciones 4.5. El proceso de construcci´on consiste en recorrer la imagen de salida y por cada p´ıxel (x0 , y 0 ) calculamos su correspondiente (x, y) en la imagen de entrada y lo pintamos con el mismo color. Se puede dar el caso de que el mismo p´ıxel de la imagen de entrada se mapea a varios p´ıxeles de la imagen de salida. El resultado es una imagen sintetizada reconstruida a partir de la imagen de entrada y la matriz H. Figura 4.6: Reconstrucci´on del plano de la pancarta de rob´otica En la figura 4.6 podemos ver un ejemplo de rectificaci´on. En la imagen rectificada se puede apreciar c´omo se ha construido correctamente el plano 3D en el que se encuentra la pancarta del equipo de rob´otica de URJC. Sin embargo el plano de la mesa ha sufrido una distorsi´on ya que es otro plano distinto y para rectificar ese concretamente habr´a que calcular la matriz que le corresponde. Tambi´en se puede observar que las esquinas superior derecha e inferior derecha de la imagen de salida son de color blanco. Esto se debe a que es imposible reconstruirlas ya que la informaci´on necesaria para hacerlo no ha sido capturada en la imagen de entrada. El rectificador puede transformar cualquier plano mientras los cuatro puntos de entrada elegidos pertenezcan al mismo y que sean no colineales. En la figura 4.7 se puede ver c´omo se reconstruye la imagen de un CD picando en cuatro puntos aleatorios del borde del circulo. ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 31 Figura 4.7: Reconstrucci´on de la imagen de un CD utilizando 4 puntos aleatorios del borde 4.5. Interfaz del usuario Para facilitar la labor al usuario se ha dotado al rectificador con una interfaz gr´afica que le permite elegir los puntos de correspondencia y manejar toda la funcionalidad asociada de manera sencilla. Figura 4.8: Interfaz de usuario del rectificador La interfaz se divide en dos partes: INPUT: Esta zona tiene los siguientes controles: • Get Image: Captura la imagen • Discard: Descarta la imagen capturada ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 32 • Hide points: No mostrar los puntos elegidos por el usuario • Undo: Deshacer el u ´ltimo punto seleccionado en la imagen capturada OUTPUT: Como se puede ver en la interfaz, esta zona tiene los mismos controles que la anterior, sin embargo las funciones son ligeramente distintas. • Rectify: Este bot´on s´olo se activa una vez que se hayan introducido los cuatro puntos de entrada y los cuatro de salida. Al pulsarlo, dibuja la imagen rectificada en la zona OUTPUT. • Discard: Descarta la imagen rectificada permitiendo al usuario volver a introducir nuevas correspondencias (sin perder los que ya introducidos en INPUT). • Undo: Deshacer el u ´ltimo punto seleccionado en la parte rectificada. • Rectangle Mode: Este modo permite al usuario introducir la esquina superior izquierda y la inferior derecha del rect´angulo ahorrando al usuario el hecho de tener que ajustar los cuatro puntos para obtener un rect´angulo bien formado. Si no esta activado, el usuario tiene que introducir los cuatro puntos. Por cada uno de ellos el sistema dibuja dos lineas para guiar al usuario a la hora de introducir el siguiente punto. 4.6. Aplicaciones Las aplicaciones del rectificador en la vida real son varias, como la recuperaci´on de vistas frontales de fotos antiguas de monumentos que igual ya no existen (ver figura 4.9): Figura 4.9: Recuperaci´on de la foto frontal de un monumento ´ CAP´ITULO 4. RECTIFICADOR DE IMAGENES 33 Tambi´en se da el caso en ciertas aplicaciones que necesitan trabajar con im´agenes con vistas frontales, sin embargo es imposible colocar la c´amara en una situaci´on para obtener una vista de este tipo. Un ejemplo de estas aplicaciones es el PFC de V´ıctor Hidalgo [Bl´azquez, 2008] que trata de construir un radar visual. Para ello, coloca una c´amara encima de un puente con lo que la imagen de la carretera sufre la distorsi´on de perspectiva por la posici´on de la c´amara. Para recuperar una vista realista de la carretera se ha utilizado el rectificador construido en este proyecto para obtener una vista desde arriba de la carretera( ver figura 4.10). Figura 4.10: Imagen de la carretera rectificada En general cualquier aplicaci´on que necesita hacer mediciones sobre im´agenes necesita deshacerse primero de las distorsiones en perspectiva para poder trabajar directamente sobre el plano real. Cap´ıtulo 5 Calibrador En este cap´ıtulo vamos a abordar el problema de la calibraci´on y ver los pasos seguidos para resolverlo. Hablaremos tambi´en de la integraci´on del calibrador dentro de la plataforma jdec del algoritmo de detecci´on autom´atica del patr´on de calibraci´on y c´omo ha sido implementado. Finalmente analizaremos en detalle la interfaz gr´afica de usuario y los distintos modos de funcionamiento soportados por el calibrador desarrollado. 5.1. Dise˜ no general Tal y como hemos adelantado en la introducci´on, el calibrador ha sido dise˜ nado en forma de un esquema de jdec e integrado en esta plataforma. En el diagrama de la figura 5.1 bloques podemos ver c´omo se ha llevado a cabo la integraci´on con el resto de elementos que forman la plataforma jdec. Figura 5.1: Integraci´on con jdec 34 CAP´ITULO 5. CALIBRADOR 35 En el diagrama de la figura 5.1 el calibrador accede en modo lectura a las variables compartidas colorA y colorB. Estas son rellenadas o bien por el driver de c´amara mplayer o por el driver c´amara firewire. La forma de rellenar las variables es totalmente transparente al esquema calibrador. Seg´ un la figura 5.1 la arquitectura software del esquema calibrador consta de tres partes: calibrador core: Implementa el algoritmo de calibraci´on DLT y todas las funciones necesarias para llevarlo a cabo. detecci´on autom´atica: Este componente a su vez se divide en tres partes que en conjunto implementan la autodetecci´on del patr´on de calibraci´on: Filtro HSV de color, agrupamiento de p´ıxeles, ordenamiento de puntos. gui : Implementa la interfaz gr´afica de usuario. En las siguientes secciones se tratar´an con m´as detalle cada una de los componentes que en conjunto construyen el esquema calibrador. 5.2. Calibrador basado en DLT En esta secci´on vamos a presentar el modelo matem´atico del calibrador. Veremos como se combina junto con la t´ecnica DLT para representar y resolver el problema de calibraci´on. 5.2.1. El modelo Pinhole de c´ amara Es el modelo de la c´amara en el cual se basa DLT. Asume la intuici´on de que todos los rayos atraviesan una caja por un agujero (foco de la c´amara) para impactar en el otro lado de la caja (plano imagen) (ver figura 5.2 ). El comportamiento de las lentes seg´ un este modelo es lineal. Sin embargo las lentes reales tienen distorsiones radiales que provienen de la fabricaci´on y que hacen que el comportamiento de dicha lente no sea ideal. De ah´ı la necesidad de a˜ nadir ciertas correcciones a este modelo para acercarlo lo m´as posible al comportamiento real de una c´amara. CAP´ITULO 5. CALIBRADOR 36 Figura 5.2: Modelo de C´amara oscura Figura 5.3: El modelo Pinhole usado en OpenGL En este modelo, el sistema de referencia de la c´amara se sit´ ua en el centro de proyecci´on, haciendo que el eje Z sea el eje ´optico de la c´amara de tal manera que el plano imagen se sit´ ua perpendicular al eje ´optico a una distancia igual a la distancia focal de la c´amara. La intersecci´on del eje principal con el plano imagen se denomina punto principal (ver fig 5.4). Normalmente, el plano imagen se sit´ ua delante del punto de proyecci´on C que se supone constante. De esta manera obtenemos una imagen sin inversi´on. El modelo Pinhole sirve para modelar lentes delgadas ya que estas no desv´ıan mucho el rayo que las atraviesa. Sin embargo en el caso de lentes gruesas este modelo no resulta adecuado. CAP´ITULO 5. CALIBRADOR 37 Figura 5.4: Esquema del modelo Pinhole Dada una c´amara cualquiera, ´esta se caracteriza con dos tipos de par´ametros: Par´ ametros intr´ınsecos: Dependen del modelo utilizado para representar la c´amara. En el modelo Pinhole son: • fx : distancia focal multiplicada por el factor de tama˜ no de p´ıxeles en el eje X, Sx • fy : distancia focal multiplicada por el factor de tama˜ no de p´ıxeles en el eje Y, Sy • (U0 , V0 ): punto principal Par´ ametros extr´ınsecos: Estos representan la posici´on y orientaci´on de la c´amara en el mundo. En general se representan con dos matrices gen´ericas de rotaci´on y traslaci´on RT. Pero en el caso de rotaci´on hay varias maneras de representarla (cuaterniones, ´angulos de Euler, foco de atenci´on + rol, etc). En este proyecto en concreto vamos a utilizar una matriz gen´erica de rotaci´on. El problema de calibraci´on tal y como hemos descrito en la secci´on 1 consiste en hallar los par´ametros intr´ınsecos y extr´ınsecos de una c´amara. Este proyecto se apoya en el modelo Pinhole como modelo base sin tener en cuenta los par´ametros de distorsi´on radial de la c´amara. CAP´ITULO 5. CALIBRADOR 38 Figura 5.5: Representaci´on de la c´amara Como podemos observar en la figura anterior en el tri´angulo (C,Pw ,Pw0 ), un punto Pwcam expresado en el sistema de coordenadas de la c´amara con coordenadas [X,Y,Z] se proyecta en un punto del plano de imagen Pim de coordenadas (x,y). Aplicando el teorema de Tales en este tri´angulo obtenemos:     f X x = y Z Y (5.1) El siguiente paso es convertir el punto (x,y) en (u,v) que viene a ser los p´ıxeles correspondientes en el sensor de la imagen. Para ello, tenemos que saber el tama˜ no de los p´ıxeles en horizontal y vertical. La conversi´on se hace utilizando las siguientes ecuaciones: u = S x · x + U0 (5.2) v = Sy · y + V0 (5.3) Donde (U0 , V0 ) son las coordenadas del punto principal en p´ıxeles. La correspondencia de un punto 3D Pwcam a otro punto 2D Pim no es u ´nica. Dado un punto Pim (u,v) todos los puntos que pertenecen a la recta que une el centro de proyecci´on C con el Pwcam y Pim impactan en el mismo punto Pim . Utilizando coordenadas homog´eneas, la ecuaci´on 5.1 se puede expresar: CAP´ITULO 5. CALIBRADOR 39  cam   X u Y   λ v  = K ·  Z  1 1 w (5.4)    X cam    fx 0 U0 0   u Y    λ v = 0 fy V0 0  Z  0 0 1 0 1 1 w (5.5) El punto Pwcam est´a expresado en el sistema de coordenadas de la c´amara. En la vida real las coordenadas vienen expresadas respecto a otro sistema de referencia absoluto que no tiene porqu´e ser el de la c´amara. Dado un punto Pwabs expresado en un sistema de referencia en el universo, para hallar el punto Pim correspondiente a este punto lo primero que tenemos que hacer es expresar el mismo en el sistema de referencia de la c´amara. S´olo entonces podemos aplicar la ecuaci´on 5.5 para hallar el punto Pim . De modo gen´erico, para pasar del sistema de coordenadas absoluto al sistema de referencia de la c´amara, tenemos que aplicar una rotaci´on y una traslaci´on (alguna de ellas podr´ıa ser nula). Las matrices correspondientes a este cambio de base se denominan matriz de rotaci´on y traslaci´on extr´ınseca, RText . Este cambio de coordenadas se puede expresar de forma matricial en coordenadas homog´eneas con la siguiente ecuaci´on: Pwcam = R · T · Pwabs      X X r11 r12 r13 tx Y  r21 r22 r23 ty   Y      = r31 r32 r33 tz   Z  Z  1 w 1 cam 0 0 0 1 (5.6) (5.7) Recapitulando lo anterior, para calcular el punto Pim correspondiente a un punto Pwabs cualquiera tenemos que hacer los siguientes pasos: trasladar Pwabs al punto Pwcam expresado en el sistema de referencia de la c´amara utilizando la ecuaci´on 5.7 proyectar el punto Pwcam sobre la imagen utilizando la ecuaci´on 5.5 CAP´ITULO 5. CALIBRADOR 40 Combinando estas dos ecuaciones obtenemos la ecuaci´on general para proyectar cualquier punto 3D del universo sobre el plano imagen: la ecuaci´on 5.9 . En la vida real esto no es siempre posible, pues el sensor de c´amara es de tama˜ no limitado y habr´a ciertos puntos que salen de su campo de visi´on. Pim = K · R · T · Pwabs       r11 r12 r13 tx  X fx 0 U0 0  u    v  =  0 fx V0 0 r21 r22 r23 ty   Y  r31 r32 r33 tz   Z  0 0 1 0 1 im 1 w 0 0 0 1 5.2.2. (5.8) (5.9) Matriz gen´ erica de proyecci´ on Despu´es de haber presentado los elementos que componen el problema de la calibraci´on desde el punto de vista matem´atico, llega el momento de estudiar la soluci´on basada en DLT. La idea detr´as de esta t´ecnica es estudiar el paso de 3D a 2D de una c´amara de tal manera que dado un patr´on de calibraci´on del cual se conoce con antelaci´on la posici´on de ciertos puntos que pertenecen al mismo (por ejemplo respecto a un marco de referencia ligado al mismo objeto para facilitar los c´alculos), estudiar la correspondencia entre estos puntos 3D y los correspondientes en 2D una vez capturada una imagen del patr´on con la c´amara. Dicho esto el diagrama de entrada salida de DLT ser´ıa: Figura 5.6: Entrada/Salida del calibrador CAP´ITULO 5. CALIBRADOR (a) Patr´on de calibraci´on utilizado en este proyecto. Consta de 31 puntos. 41 (b) Ejes asociados al patr´on de calibraci´on Figura 5.7: Patr´on de calibraci´on y ejes asociados Si reescribimos la ecuaci´on 5.9 para dejar s´olo una matriz como inc´ognita: La matriz gen´erica de proyecci´on, ´esta tendr´ıa el siguiente aspecto:    X    u h11 h12 h13 h14   v  = h21 h22 h23 h24   Y  Z  h31 h32 h33 h34 1 1 w 5.2.3. (5.10) C´ alculo de la matriz gen´ erica de proyecci´ on El primer paso hacia la soluci´on es calcular las once inc´ognitas de la matriz M ya que h34 se puede fijar a un valor constante. Siguiendo un razonamiento similar al del rectificador har´ıan falta como m´ınimo seis emparejamientos para resolver todos los elementos de la matriz ya que cada punto proporciona dos ecuaciones de la siguiente manera: h11 · x + h12 · y + h13 · z + h14 h31 · x + h32 · y + h33 · z + 1 h21 · x + h22 · y + h23 · z + h24 v = h31 · x + h32 · y + h33 · z + 1 u = (5.11) (5.12) Dicho esto, nuestro patr´on de calibraci´on deber´ıa contener al menos seis puntos para hallar la matriz de calibraci´on. Las posiciones 3D de estos puntos constituyen el conocimiento a priori del calibrador. El usuario tiene que introducir los puntos 2D (picando sobre la imagen capturada) de tal manera que cada punto 3D tiene un punto pareja 2D que viene a ser la proyecci´on del mismo sobre la imagen. CAP´ITULO 5. CALIBRADOR 42 Con seis puntos podemos formular doce ecuaciones para resolver once inc´ognitas. Se trata de un sistema de ecuaciones lineal sobredimensionado ya que disponemos de un n´ umero mayor de ecuaciones que de inc´ognitas por resolver. La soluci´on en este caso no ser´ıa exacta ya que cada subconjunto de once ecuaciones posibles dar´ıa una soluci´on distinta pero parecida a la que dar´ıa otro subconjunto. Nuestro objetivo es hallar la soluci´on que menos error comete a la hora de pasar de 3D a 2D. Esta tarea se conoce como optimizaci´on de un sistema sobredimensionado. El problema equivalente trabajando con una sola dimensi´on, es buscar una l´ınea que pase por un conjunto de puntos que no est´an alineados. Evidentemente encontrar la l´ınea exacta que pasa por todos los puntos es imposible. Lo que se puede hacer es hallar la l´ınea que menor distancia tiene respecto a todos ellos. En este caso en vez de una l´ınea tenemos que buscar una matriz, y en vez de puntos tenemos varios conjuntos de puntos 2D proyectados. Se trata de buscar la matriz que comete el m´ınimo error a la hora de proyectar los puntos 3D a sus correspondientes en 2D respecto a sus posiciones originales que se saben a priori. Una vez construido el sistema de ecuaciones sobredimensionando, para resolverlo hemos utilizado la funci´on ofrecida por GSL gsl multifit linear que resuelve el problema apoy´andose en el m´etodo de M´ınimos Cuadrados. El resultado son las once inc´ognitas que forman la matriz M (ver ecuaci´on 5.10). Esta manera de solucionar el sistema de ecuaciones nos abre el abanico para utilizar m´as puntos en el patr´on con lo que la soluci´on obtenida podr´a ser cada vez m´as precisa. En nuestro caso hemos utilizado 31 puntos uniformemente distribuidos sobre el patr´on para obtener una mayor precisi´on en los c´alculos. Para obtener mejor resultados en la calibraci´on los puntos elegidos en el patr´on tienen que formar un volumen. Es recomendable que est´en uniformemente distribuidos a lo largo del patr´on. 5.2.4. Descomposici´ on RQ El siguiente paso es descomponer la matriz gen´erica de proyecci´on, a partir de ahora M, en KR[I| − C] donde K es la matriz de intr´ınsecos, R es la matriz de rotaci´on y T la de traslaci´on. CAP´ITULO 5. CALIBRADOR 43 Para ello nos apoyamos en la descomposici´on RQ. Una variante de QR. La matriz K es una matriz de 3x3 triangular superior, R es de 3x3 una matriz de rotaci´on ortogonal, y T una matriz de traslaci´on de 3x1. El algoritmo de descomposici´on consiste en los siguientes pasos. Dada la matriz M3x4 se puede ver como M = [N |p4] si aplicamos la QR a la inversa de N el resultado es: N −1 = QS (N −1 )−1 = (QS)−1 N = S −1 Q−1 N = KR Donde1 K = S −1 y R = Q−1 La descomposici´on QR no es u ´nica. Para forzar la unicidad ponemos una restricci´on de signo positivo sobre la distancia focal de tal manera si fx es negativa entonces invertimos el signo de la primera columna de K y la fila correspondiente de R. Lo mismo para fy en caso de que sea negativa. El siguiente paso, siempre dentro de la descomposici´on de la matriz M, es obtener la posici´on 3D del foco de la c´amara. Con el u ´ltimo resultado tenemos: M = KRT = KR[I| − C] (5.13) Sabemos que M = [N |p4] de ah´ı : M = N [I|N −1 p4] (5.14) Comparando las dos u ´ltimas ecuaciones: C = N −1 · p4 (5.15) Con esto quedan determinados los par´ametros de nuestra c´amara: 1 La inversa de una matriz ortogonal es otra matriz ortogonal, y la inversa de una matriz triangular superior es otra matriz de las mismas caracter´ısticas. CAP´ITULO 5. CALIBRADOR 44 M = KRT (5.16) Una vez calibrada la c´amara podemos ver los resultados de la calibraci´on sobre ´ la interfaz de usuario de nuestro componente. Estos se presentan de la siguiente manera: Figura 5.8: Resultados de calibraci´on La matrices R y T representan la rotaci´on y la posici´on de la c´amara respectivamente respecto al marco de referencia asociado al patr´on de calibraci´on 5.7(b). R es una matriz de rotaci´on gen´erica y T representa la posici´on 3D de la c´amara donde las coordenadas est´an expresadas en cent´ımetros para facilitar su manejo. Con los par´ametros de calibraci´on de la c´amara en mano, sabemos c´omo se pasa del mundo real 3D al mundo 2D (la imagen). Es decir podemos proyectar cualquier punto del espacio sobre una imagen captada por la c´amara calibrada. Esto nos permite dibujar objetos virtuales sobre la imagen. En la imagen de la figura 5.9 proyectamos un cubo imaginario sobre el patr´on de calibraci´on. Este hecho nos abre el abanico dentro del grupo de rob´otica para trabajar en un futuro cercano en temas relacionados con realidad virtual o realidad aumentada. CAP´ITULO 5. CALIBRADOR 45 Figura 5.9: Proyecci´on de objetos virtuales 5.3. Detecci´ on autom´ atica del patr´ on En la primera soluci´on que se implement´o del calibrador, el usuario ten´ıa que introducir los puntos del patr´on picando sobre la imagen capturada. Esto resultaba poco c´omodo, aunque sigue siendo mucho m´as sencillo que el proceso de calibraci´on adoptado por ARtoolKit. Para hacer que el proceso sea lo m´as sencillo posible se ha dotado a nuestro calibrador con un sistema inteligente para detectar autom´aticamente los puntos relevantes del patr´on. Figura 5.10: Patr´on de calibraci´on Para facilitar la autodetecci´on, los puntos del patr´on han sido coloreados de tal manera que se puede distinguir entre tres clases: CAP´ITULO 5. CALIBRADOR 46 El centro: de color amarillo, es el centro del cubo de calibraci´on El eje central: de color azul es el primero en la secuencia de entrada de puntos. Puntos normales: de color rosa Esta caracterizaci´on ayuda a reconocer y ordenar f´acilmente los puntos. Es imprescindible saber la posici´on del eje central para romper la simetr´ıa del patr´on y establecer el orden de entrada de los puntos. El sistema de autodetecci´on se basa en tres subsistemas: un filtro de color para detectar los p´ıxeles coloreados, un algoritmo K-medias para clasificarlos, y finalmente un algoritmo propio para detectar las l´ıneas formadas por los puntos detectados. En las siguientes secciones estudiaremos con m´as detalle cada uno de estos subsistemas. La figura representa la relaci´on de entrada/salida que existe entre ellos. Figura 5.11: Sistema de detecci´on autom´atica CAP´ITULO 5. CALIBRADOR 5.3.1. 47 Filtro de color Para hacer que la detecci´on sea m´as sencilla hemos optado por un filtro de color HSV ya que es m´as robusto a cambios de iluminaci´on que otros filtros como RGB. Para facilitar la labor de ordenamiento hemos elegido tres colores relevantes: amarillo para el centro, azul para el eje central, y rosa para el resto de puntos. Figura 5.12: Entrada/Salida del filtro HSV Para conseguir que la detecci´on autom´atica funcione en tiempo real hemos utilizado una implementaci´on muy eficaz de este filtro disponible ya en la plataforma de jdec ,se trata de la librer´ıa colorspaces. Esta u ´ltima utiliza una tabla Lookuptable para buscar el valor HSV correspondiente al valor RGB de un p´ıxel (todos los drivers ofrecen im´agenes en RGB, de ah´ı la necesidad de esta transformaci´on). La tabla de b´ usqueda se calcula s´olo una vez al inicio del programa. La implementaci´on eficaz de esta librer´ıa ha hecho posible que la detecci´on autom´atica funcione en tiempo real bajo ciertas condiciones. 5.3.2. Agrupamiento Esta etapa recibe como entrada el conjunto de puntos filtrados por el paso anterior e intenta agruparlos en subconjuntos de una ventana de diez p´ıxeles. El algoritmo de agrupamiento y clasificaci´on consta de los siguientes pasos: Crear clases de puntos 2D que tienen el mismo color y que est´an separados por una distancia menor que diez p´ıxeles. Filtrar ruido descartando grupos que tienen menos de tres elementos. Fusionar los grupos cuyos centros est´an a una distancia menor que el tama˜ no de ventana multiplicado por ra´ız de dos (diagonal de la ventana). Crear tres clases de puntos seg´ un su color: amarillo, azul, rosa. Para el color amarillo que representa el centro nos quedamos con la clase con mayor n´ umero de elementos. CAP´ITULO 5. CALIBRADOR 48 Obtenemos los centros de todas las clases. Estos ser´an los puntos 2D detectados. El diagrama de entrada salida del Agrupador es el siguiente: Figura 5.13: Diagrama de entrada/salida del Agrupador 5.3.3. Ordenamiento de puntos Este subsistema recibe como entrada el centro y un conjunto de puntos. Su labor es detectar todos los puntos que forman l´ıneas que parten del centro hacia el exterior y clasificarlos de menor a mayor seg´ un su distancia al centro. El algoritmo detector consta de los siguientes pasos: Calcular la distancia de todos los puntos respecto al centro y ordenarlos respecto al mismo. Formar cinco vectores Vi con el centro y los puntos m´as cercanos a ´este (mientras no haya puntos m´as cerca en la misma direcci´on). Recorrer todos los puntos y asignarlos al vector Vi correspondiente bas´andose en el producto escalar y el ´angulo formado con este: producto_scalar(V_{i},get_vector(centro,Punto_{j})) > 0 && angulo_formado(V_{i},get_vector(centro,Punto_{j})) <= umbral Ordenar los puntos que pertenecen al mismo vector (l´ınea) seg´ un su distancia con el centro. Ordenar los puntos que pertenecen al eje central. Ordenar los vectores (l´ıneas) seg´ un el ´angulo que forman con el eje central. Para ello hemos utilizado la funci´on atan2 que nos permite saber el cuadrante al cual pertenece un ´angulo. CAP´ITULO 5. CALIBRADOR 49 El diagrama de entrada salida de este subsistema es el siguiente: Figura 5.14: Diagrama de entrada/salida del Detector de l´ıneas ´ Con esto obtenemos el conjunto de puntos 2D ordenados. Estos ser´an emparejados con los puntos 3D que se conocen a priori para formar el sistema de ecuaciones descrito en la secci´on 5.2.3 5.4. Interfaz del usuario La interfaz del usuario (ver figura 5.15) esta compuesta por varios elementos. Estos han sido agrupados en varias ´areas dependiendo de la funcionalidad de cada uno. A continuaci´on una descripci´on detallada del comportamiento de cada uno de ellos. ´ Areas: im´ agen 1 : La imagen observada por la c´amara 1 im´ agen 2 : La imagen observada por la c´amara 2 ventana ogl: Venta OpenGL donde se dibuja la escena una vez calibrada la c´amara ´ Camera 1: Area de resultados de calibraci´on de la c´amara 1 ´ Camera 2: Area de resultados de calibraci´on de la c´amara 2 CAP´ITULO 5. CALIBRADOR 50 Figura 5.15: Interfaz de usuario del calibrador Botones: Capturar imagen : Captura la imagen observada en este momento por las dos c´amaras Descartar : Descarta las dos im´agenes capturadas Calibrar : Cuando est´a activado permite al usuario obtener la calibraci´on de las c´amaras. Se activa una vez el usuario haya picado sobre todos los puntos del patr´on Undo: Deshace el u ´ltimo punto seleccionado sobre la imagen Hide Test Points: Una vez calibrada la c´amara se puede utilizar este bot´on para proyectar un conjunto de puntos de test utilizando los resultados de calibraci´on obtenidos Hide Control Points: Lo mismo que el anterior para puntos de control Hide Selected Points: Lo mismo para los puntos introducidos por el usuario CAP´ITULO 5. CALIBRADOR 51 Progeo mode : Se activa cuando la c´amara ya est´a calibrada, permite al usuario ver en la escena OpenGL en 3D el rayo ´optico correspondiente al p´ıxel pulsado en la imagen de entrada Test calib: Se activa cuando la c´amara ya est´a calibrada, y permite redibujar el patr´on de calibraci´on utilizando la matriz de calibraci´on Auto mode: Activa la autodetecci´on del patr´on de calibraci´on. Semiauto: Se activa autom´aticamente cuando auto mode falla en detectar todos los puntos de forma autom´atica, dando paso al usuario para introducir los puntos que no se han detectados correctamente. El calibrador ofrece tambi´en la posibilidad de calibraci´on de un par est´ereo de c´amaras a la vez, facilitando la labor a la hora de trabajar con dos c´amaras. En este caso, en la escena de openGl se dibujan las dos c´amaras y el soporte que las une. En la imagen 5.16 podemos ver un ejemplo de calibraci´on de un par est´ereo. Figura 5.16: Calibraci´on de un par est´ereo de c´amaras 5.4.1. Ventana OpenGL Esta ventana ayuda a visualizar la posici´on y orientaci´on de la c´amara (o dos c´amaras si estamos calibrando un par ester´eo) en el mundo respecto al patr´on de CAP´ITULO 5. CALIBRADOR 52 calibraci´on (ver figura 5.17). La c´amara se representa mediante puntos y l´ıneas donde el punto rojo representa el foco de la c´amara. En cada c´amara se dibuja la imagen que se esta visualizando en este momento por la misma. Esto ayuda al usuario a comprobar la correcci´on de los par´ametros extr´ınsecos obtenidos visualizando la escena. Cabe recordar que todas las operaciones gr´aficas llevadas a cabo por OpenGL se hacen a trav´es de la GPU aliviando el uso de la CPU para el resto de la plataforma. Figura 5.17: Representaci´on en OpenGL de la escena formada por el patr´on y la c´amara Para visualizar la escena formada por la c´amara y el patr´on usamos una c´amara virtual de OpenGL controlada por el usuario. Una vez calibrada la c´amara en la ventana OpenGL aparecer´a una representaci´on de toda la escena en la que se dibuja la c´amara (con una representaci´on de puntos y l´ıneas) y su posici´on, orientaci´on respecto al patr´on de calibraci´on. Esto permite al usuario comprobar de manera sencilla si las matrices de los extr´ınsecos han sido bien calculadas. Adem´as, activando el modo progeo puede comprobar la correcci´on y precisi´on de los par´ametros intr´ınsecos obtenidos. ´ OpengGL utiliza los Angulos de Euler para representar las rotaciones, sin embargo el calibrador devuelve una matriz gen´erica de rotaci´on que tiene el siguiente formato: CAP´ITULO 5. CALIBRADOR   r11 r12 r13 r21 r22 r23 r31 r32 r33 53 (5.17) ´ Para convertir esta matriz en Angulos de Euler nos apoyamos en las siguientes ecuaciones. Supongamos que θ,λ,φ son los ´angulos de Euler que queremos calcular: θ = acos(r33) r32 λ = acos( ) −sin(θ) r13 φ = asin( ) sin(θ) (5.18) (5.19) (5.20) Donde θ,λ,φ representan las rotaciones sobre los ejes Z,X,Z respectivamente. El usuario dispone de dos modos para controlar la c´amara virtual de OpenGL a la hora de visualizar toda la escena: a) Desplazando la c´amara virtual y manteniendo el punto de mira fijo. Para ello el usuario tiene que hacer un click sobre la ventana ventana ogl con el bot´on izquierdo del rat´on y moverse con el mismo al sitio deseado. b) Manteniendo fija la posici´on de la c´amara virtual y moviendo el punto de mira. Para ello el usuario tiene que hacer clic con bot´on derecho sobre la ventana ventana ogl, ajustar el radio del punto de mira (eso es el radio de la esfera que tiene como origen el centro de coordenadas en la que el punto de mira puede moverse) y mover el rat´on hacia donde quiere mirar. En cualquier momento se puede congelar la imagen visualizada pulsando el bot´on central del rat´on. Tambi´en se puede acercar la escena y alejarla con la rueda del rat´on. 5.4.2. Integraci´ on con progeo Para representar transformaciones de proyecci´on 3D → 2D el grupo de rob´otica de la URJC hace uso de una biblioteca de geometr´ıa proyectiva llamada progeo. Para utilizarla hace falta disponer de c´amaras calibradas. Hasta el momento la calibraci´on se ha hecho con ARtoolKit. Uno de los objetivos de este proyecto es integrar el calibrador con esta biblioteca, para ello basta con proporcionar a progeo las matrices K,R y T. Esto hace que la integraci´on de los resultados de CAP´ITULO 5. CALIBRADOR 54 calibraci´on (las matrices) ofrecidos por nuestro calibrador y esta biblioteca sea inmediata. Proyectos de fin de carrera como el de [Marug´an, 2006] o [Pineda, 2006] se basan en esta biblioteca, adem´as de otras herramientas construidas dentro del grupo. Esto hace que todas las aplicaciones basadas en progeo pueden utilizar los par´ametros de calibraci´on ofrecidos por nuestro calibrador. Progeo es una librer´ıa que ofrece un API con unas cuantas funcionalidades, las b´asicas son: Proyectar: Esta funci´on permite proyectar un punto 3D del mundo al p´ıxel 2D correspondiente en la imagen. extern int project(HPoint3D in, HPoint2D *out, TPinHoleCamera camera); Retro-proyectar: Esta funci´on realiza la funci´on inversa, quiere decir que permite obtener la recta de proyecci´on que une del foco de la c´amara junto con el rayo 3D que proyecta en un p´ıxel in del plano imagen. Para ello basta con unir el foco con el punto out devuelto por esta funci´on. extern int backproject(HPoint3D *out, HPoint2D in, TPinHoleCamera camera); El calibrador est´a dotado de un modo progeo mode que permite comprobar que la integraci´on con progeo se ha llevado a cabo correctamente. Este modo s´olo se puede activar despu´es de haber calibrado la c´amara. Permite al usuario moverse sobre la imagen capturada y al mismo tiempo visualizar el rayo 3D que parte del foco de la c´amara y cruza el objeto en el mismo p´ıxel que el usuario esta atravesando con el rat´on sobre la imagen capturada. Esto prueba que la funci´on backproject esta funcionando correctamente. Si en alg´ un momento el usuario quiere congelar el rayo basta con pulsar el bot´on centro del rat´on sobre la imagen. CAP´ITULO 5. CALIBRADOR (a) P´ıxel de la imagen real 55 (b) La l´ınea dibujada representa el rayo 3D que sale del foco de la c´amara y cruza el patr´on en el p´ıxel de la imagen de la izquierda Figura 5.18: Modo progeo Este modo tambi´en, es muy u ´til para comprobar que la calibraci´on obtenida es precisa. En la figura 5.18 podemos ver una ilustraci´on de este modo. El rayo azul que se puede ver en la imagen representa el rayo ´optico que sale del foco de la c´amara (punto rojo). 5.5. Modos de funcionamiento del calibrador Uno de los objetivos principales de este proyecto es hacer que el uso del calibrador sea lo m´as c´omodo posible. Para ello se ha dotado al mismo con tres modos de funcionamiento distintos: Manual, Semiautom´atico, Autom´atico, siendo el primero el que m´as intervenci´on de usuario requiere. En las siguientes secciones veremos con m´as detalle el funcionamiento del calibrador en cada uno de ellos. 5.5.1. Manual En este modo, despu´es de capturar la imagen del patr´on el usuario tiene que pinchar en todos los puntos siguiendo el orden descrito en la figura 5.19. Respetar el orden es muy importante ya que las correspondencias entre los puntos 2D introducidos por el usuario y los puntos 3D del patr´on (se conocen a priori) tienen que ser las correctas. El programa va guiando al usuario indic´andole el n´ umero de puntos que han sido seleccionados hasta el momento y el siguiente punto 3D a elegir. CAP´ITULO 5. CALIBRADOR 56 Figura 5.19: Orden de introducci´on de puntos en el modo manual Una vez seleccionados todos los puntos, el calibrador activar´a el bot´on de calibraci´on dando al usuario la opci´on de calibrar la c´amara. Si en alg´ un momento el usuario se equivoca a la hora de elegir alg´ un punto, puede deshacerlo pulsando sobre el bot´on Undo situado justo debajo de la imagen de entrada. 5.5.2. Autom´ atico Para trabajar en este modo, el usuario tiene que activarlo pulsando el bot´on Auto mode y dirigir la c´amara hacia el patr´on. El sistema de detecci´on autom´atica se encarga de detectar y de ordenar autom´aticamente los puntos. Si lo consigue, se congela la imagen y se dibujan los puntos que han sido detectados (ver figura 5.20). En este momento, el bot´on de calibraci´on se enciende dando al usuario la posibilidad de calibrar la c´amara. En cada momento el sistema va dibujando sobre la imagen de entrada los puntos que ha conseguido reconocer. Si el usuario quiere utilizar estos puntos para completarlos, lo u ´nico que tiene que hacer es pulsar el bot´on capturar imagen. En este momento la imagen se congela, y el sistema de detecci´on pasa a ser semiautom´atico. Si por alguna raz´on la imagen capturada no es la deseable el usuario puede descartar la imagen pulsando el bot´on Descartar. CAP´ITULO 5. CALIBRADOR 57 Figura 5.20: Detecci´on autom´atica de los puntos del patr´on 5.5.3. Semiautom´ atico Este modo ha sido dise˜ nado para situaciones en las que la iluminaci´on es muy mala y el sistema autom´atico no consigue reconocer todos los puntos. Hay dos maneras para activarlo. Capturar la imagen y pulsar el modo autom´atico. Si este u ´ltimo no consigue reconocer todos los puntos entonces dibuja el subconjunto reconocido, dando la opci´on al usuario de introducir el resto de puntos (los que no han sido detectados). Cabe se˜ nalar que esta vez el usuario no est´a obligado a respetar el orden, hallarlo es tarea del sistema de detecci´on inteligente . Estando en el modo autom´atico (sin haber capturado la imagen con antelaci´on), si en alg´ un momento el usuario observa que hay un conjunto suficiente de puntos para calibrar, entonces puede pulsar el bot´on capturar imagen para pasar a este modo e introducir los pocos puntos que quedan. De nuevo el orden no es importante. Estando en este modo, si el sistema inteligente de detecci´on detecta por error puntos no deseados, el usuario puede eliminarlos pulsando el bot´on izquierdo del rat´on sobre el punto no deseado e introducir el punto correcto. Cap´ıtulo 6 Conclusiones y Trabajos futuros A lo largo de los cap´ıtulos anteriores hemos visto c´omo se ha abordado el problema de calibraci´on, as´ı como los pasos y t´ecnicas que hemos seguido para resolverlo. En este cap´ıtulo resumimos las conclusiones que se han sacado con la realizaci´on de este proyecto, haremos un repaso de los objetivos planteados en el cap´ıtulo 2 y acabaremos trazando las posibles l´ıneas futuras de este proyecto. 6.1. Conclusiones El objetivo general de construir un calibrador autom´atico de uso sencillo se ha conseguido. Seg´ un vimos en el cap´ıtulo 2 este objetivo lo articulamos en tres subobjetivos, que tambi´en se han satisfecho. En primer lugar, el objetivo de construir un rectificador se ha logrado con el componente descrito en el cap´ıtulo 4, capaz de reconstruir planos de la realidad a partir de planos de imagen de los cuales el usuario introduce cuatro correspondencias. Esta informaci´on se utiliza para construir un sistema de ecuaciones compatible determinado, donde las inc´ognitas son los elementos de la matriz H que relaciona ambos planos. Invirtiendo H, desde el plano imagen se puede reconstruir el plano en la realidad. En segundo lugar, el objetivo de construir un calibrador se ha cumplido con el componente descrito en el cap´ıtulo 5. La t´ecnica base ha sido DLT utilizando un patr´on 3D de geometr´ıa conocida (ver figura 5.10). El algoritmo de calibraci´on consiste en construir un sistema de ecuaciones sobredimensionado a partir 58 CAP´ITULO 6. CONCLUSIONES Y TRABAJOS FUTUROS 59 de las correspondencias entre los puntos 3D (conocidos a priori) y los puntos 2D introducidos por el usuario en el orden correspondiente. Las inc´ognitas de este sistema son los elementos de la matriz de proyecci´on M3x4 . El u ´ltimo paso es descomponer esta matriz M en KRT con la t´ecnica RQ donde K es la matriz de intr´ınsecos y RT son las matrices de los extr´ınsecos. Finalmente El sistema inteligente de detecci´on autom´atica descrito en la secci´on 5.3 ayuda a cumplir el tercer objetivo . Para ello se han implementado tres modos de uso (ver la secci´on 5.5): manual, semiautom´atico y autom´atico. Siendo este u ´ltimo el modo que menos intervenci´on del usuario requiere, ya que para calibrar una c´amara basta con ense˜ narle el patr´on. Estos modos ayudan a cumplir el objetivo general de la comodidad de uso. En cuanto a los requisitos descritos en la secci´on 2.2, ´estos se han cumplido con las implementaci´on del calibrador descrito en el cap´ıtulo 5 y la implementaci´on del rectificador descrita en el cap´ıtulo 4. A continuaci´on haremos un breve repaso por los requisitos explicando como se han cumplido: Tanto el rectificador como el calibrador han sido implementados en forma de esquemas jdec e integrados en esta plataforma. El sistema de detecci´on autom´atica del patr´on cumple con el requisito de sencillez de uso ya que no impone al usuario ninguna condici´on especial para trabajar en este modo. El calibrador cumple con el requisito del tiempo total de calibraci´on ( es menor que un minuto.) ya que en el peor de los casos, permite obtener los resultados en menos de un minuto (modo manual). Mientras que en el mejor de los casos el tiempo requerido es menos de diez segundos (modo autom´atico). En cuanto al funcionamiento de las herramientas desarrolladas, a lo largo de este proyecto se han podido hacer varias observaciones, a continuaci´on un recorrido de las m´as destacadas: Los intr´ınsecos var´ıan ligeramente de una ejecuci´on a otra. Esto se debe a las distintas fuentes de error durante el proceso de calibraci´on, empezando por el CAP´ITULO 6. CONCLUSIONES Y TRABAJOS FUTUROS 60 conjunto de puntos introducido por el usuario. Es imposible introducir el mismo conjunto de puntos 2D de una ejecuci´on a otra. Adem´as, a´ un con la optimizaci´on del sistema de ecuaciones sobredimensionado, siempre queda un error residual imposible de evitar. A esto le sumamos los errores m´etricos a la hora de fabricar el patr´on de calibraci´on. Todos estos factores contribuyen a que los datos obtenidos de una ejecuci´on a otra cambien ligeramente. Sin embargo la amplitud del cambio no es muy grande y sigue siendo parecido al de ARtoolKit a´ un cuando esta herramienta usa t´ecnicas de calibraci´on en dos pasos y el calibrador de este proyecto es de un u ´nico paso. La precisi´on de los resultados obtenidos cambia dependiendo de la distancia entre el patr´on y la c´amara. Cuanto m´as lejos est´a el patr´on, menos precisos son los resultados de calibraci´on obtenidos. En este sentido los extr´ınsecos se han mostrado m´as estables que los intr´ınsecos de una ejecuci´on para otra. Este hecho facilita el c´alculo de los par´ametros extr´ınsecos de c´amaras situadas a larga distancia (por ejemplo, en el techo, o sobre un puente) s´olo hace falta construir un patr´on visible desde las mismas. El sistema inteligente de detecci´on autom´atica implementa varios modos de uso del calibrador. El modo autom´atico detecta todos los puntos del patr´on en condiciones de buena iluminaci´on. Sin embargo, cuando la iluminaci´on no es la ´optima este modo detecta la m´axima cantidad de puntos posible, pasando al modo semiautom´atico donde el usuario tiene que introducir s´olo los puntos que no han sido detectados, relajando incluso el orden de los puntos introducidos. Comparando el calibrador construido en este proyecto con la herramienta ARtoolKit descrita en la secci´on 3.6, cabe destacar la facilidad de uso que supone nuestro calibrador.Esto se ha conseguido gracias a los distintos modos de funcionamiento descritos en la secci´on 5.5. Estos hacen que el proceso de calibraci´on sea muy c´omodo en comparaci´on con el proceso utilizado por ARtoolKit. Para calibrar una c´amara, necesitamos s´olo el patr´on 3D a diferencia de ARtoolKit que requiere disponer de herramientas de medici´on adicionales y suportes para fijar el patr´on de calibraci´on impreso. El tiempo necesario para calibrar una c´amara es menor que el de ARtoolKit (quince minutos aproximadamente). Con el calibrador construido en este proyec- CAP´ITULO 6. CONCLUSIONES Y TRABAJOS FUTUROS 61 to, en el mejor de los casos (modo autom´atico) la calibraci´on es inmediata ya que el usuario s´olo interviene para ense˜ nar el patr´on a la c´amara. En el peor de los casos (modo manual) el usuario tiene que picar en 31 p´ıxeles. A´ un as´ı, el tiempo requerido por este modo es menos de un minuto y el esfuerzo requerido por parte del usuario es aceptable. La intervenci´on del usuario en el proceso iterativo de calibraci´on utilizado por ARtoolKit constituye una fuente de errores importante. Esto conlleva a la inestabilidad de los resultados obtenidos. Utilizando nuestro calibrador basado en DLT, la intervenci´on del usuario es m´ınima, de esta manera quitamos esta fuente de error y aumentamos la estabilidad de los resultados obtenidos. 6.2. Trabajos futuros En este proyecto se ha conseguido dar el primer paso dentro del grupo de rob´otica en lo que se refiere a creaci´on de calibradores autom´aticos de c´amaras. Sin embargo todav´ıa queda mucho por hacer. Queda pendiente hacer un an´alisis estad´ıstico completo del comportamiento del calibrador variando el n´ umero de puntos, el tama˜ no del patr´on de calibraci´on, la distribuci´on de puntos sobre el volumen del patr´on. Todos, son factores que afectan a la calidad de los resultados obtenidos usando la t´ecnica DLT. Como se ha descrito en la secci´on 5.2.1, el modelo Pinhole utilizado en este proyecto no tiene en cuenta los errores que provienen de la distorsi´on radial de lentes. Una l´ınea futura podr´ıa ser ampliar este proyecto utilizando un modelo de c´amara m´as completo que tiene en cuenta este tipo de distorsiones. Otra posible mejora, es flexibilizar el patr´on utilizado, de tal manera que se puede cambiar de un patr´on por otro sin afectar al funcionamiento del calibrador. Cada usuario puede elegir el patr´on m´as adecuado a sus necesidades (Tama˜ no, n´ umero de puntos, etc). Tambi´en queda pendiente explorar otras t´ecnicas de calibraci´on y comparar sus resultados con los resultados obtenidos por el calibrador basado en DLT. Bibliograf´ıa [Abdel-Aziz y Karara, 1971] Abdel-Aziz y Karara. Direct linear transformation from comparator coordinates into object space coordinates in close-range photogrammetry. proceedings of the symposium on close-range photogrammetry (pp. 1-18). falls church, va: American society of photogrammetrymanual de programaci´on de robots con jde. 1971. [Bl´azquez, 2008] V´ıctor Hidalgo Bl´azquez. Detector visual de velocidades de coches en la plataforma jdec. 2008. [Gonz´alez, 2008] Pablo Barrera Gonz´alez. Aplicaci´on de los m´etodos secuenciales de monte carlo al seguimiento visual 3d de m´ ultiples objetos. 2008. [Hartley y Zisserman, 2004] R. I. Hartley y A. Zisserman. Multiple View Geometry in Computer Vision. Cambridge University Press, ISBN: 0521540518, second edition, 2004. [Marug´an, 2006] Sara Marug´an. Seguimiento 3d visual de m´ltiples personas utilizando un algoritmo evolutivo multimodal. 2006. [Opengl et al., 2005] Opengl, Dave Shreiner, Mason Woo, Jackie Neider, y Tom Davis. OpenGL(R) Programming Guide : The Official Guide to Learning OpenGL(R), Version 2 (5th Edition). Addison-Wesley Professional, August 2005. [Pe˜ na, 2005] Pedro D´ıaz Pe˜ na. Navegaci´on visual del robot pioneer. 2005. [Pineda, 2006] Antonio Pineda. Aplicaci´on de seguridad basada en visi´on. 2006. [Plaza, 2003] Jos´e Mar´ıa Ca˜ nas Plaza. Jerarqu´ıa din´amica de esquemas para la generaci´on de comportamiento aut´onomo. Tesis doctoral, Universidad Polit´ecnica de Madrid, 2003. 62 BIBLIOGRAF´IA 63 [Plaza, 2004] Jos´e Mar´ıa Ca˜ nas Plaza. Manual de programaci´on de robots con jde. URJC, pages 1–36, 2004. [Tsai, 1986] R.Y. Tsai. An efficient and accurate camera calibration technique for 3d machine vision. proceedings of ieee conference on computer vision and pattern recognition, miami beach, fl, pp. 364-374, 1986. 1986.