Título del Proyecto: Medición de distancias reales en una escena 3D a partir de una fotografía y objetos de referencia. Tutor: Luis Álvarez León Descripción General: La medición del espacio que nos rodea es una de las tareas más necesaria y tediosa a la que se enfrenta la humanidad desde hace siglos. Hoy en día, gracias a las nuevas tecnologías de la información, la gestión y tratamiento de imagen nos permiten observar los espacios a medir de manera digital, sin necesidad de estar presente en ellos. En este proyecto pretendemos desarrollar un software que permita a un usuario final calcular medidas en espacios de tres dimensiones a partir de imágenes en dos dimensiones del mismo por medio de puntos de referencia que son tomados en la imagen. Por ejemplo, si tenemos una fotografía de una habitación y conocemos el tamaño de las baldosas del suelo, utilizando dicha información podemos extrapolar para estimar otras medidas en la habitación como la distancia que hay entre 2 muebles, etc.. Como es lógico, en este tipo de aplicación, se hará hincapié en conseguir la mayor precisión posible, para ello será necesario hacer uso de técnicas de detección de contornos y manejo de escalas de la imagen (zoom). Este tipo de aplicación podría ser de interés en diversos campos como lo son la robótica (cálculo de distancias, en función de lo que ve), la arquitectura (medición de áreas de construcción), etc… Objetivos del proyecto: El objetivo principal del proyecto es diseñar e implementar un software para calcular distancias reales en una escena 3D a partir de una fotografía, tomando como referencia el tamaño de objetos presentes en la escena, como por ejemplo, una baldosa. Para alcanzar este objetivo, tendremos que ir abordando diferentes cuestiones como son: el análisis de requisitos del software, su diseño, así como la introducción de diversos algoritmos de tratamiento de imágenes para manejar aspectos como la detección de contornos con alta precisión, el cálculo de homografías con el fin de conocer las diferentes perspectivas presentes en la fotografía de la escena 3D. El hecho de que la interfaz sea amigable y efectiva, se obtendrá a partir de la realización de un diseño que incluya herramientas de zoom que permitan señalar con precisión los puntos de referencia. También se realizará un esfuerzo importante para que el uso del software sea lo más intuitivo posible, minimizando el número de “clicks” necesarios para ejecutar una acción. Metodología: Para las etapas de análisis y desarrollo se hará uso de las herramientas aprendidas en ingeniería del software. En cuanto al análisis, lo enfocaremos en un entorno orientado a objetos con UML, el cual comprende las etapas de análisis de requisitos de usuario, análisis de requisitos de software, diseño de la plataforma y diseño de la aplicación. Mientras que en la etapa de desarrollo nos basaremos en un ciclo de vida en espiral consistente en las actividades de determinación de objetivos, alternativas y restricciones, análisis de alternativas e identificación o resolución de riesgos, desarrollo del producto del siguiente nivel y, por último, planificación de la siguiente fase, cuyo ciclo repetiremos hasta que alcancemos los objetivos del proyecto. Etapas y planificación temporal estimada. Etapa 1. Análisis. Estudio y valoración de las especificaciones y requerimientos necesarios para alcanzar los objetivos del proyecto. (Duración estimada 30 horas). Etapa 2. Diseño. Diseño del software necesario para la elaboración del proyecto. Se hará un especial énfasis en diseñar una interfaz de usuario amigable y eficiente. (Duración estimada 40 horas). Etapa 3. Implementación. Etapa principal del proyecto que a su vez se divide en los siguientes apartados: Etapa 3.1. Detección de primitivas en la imagen. Se pretenderá conseguir la mayor precisión en cuanto a las trazas que realice el usuario en la imagen, ya sea para indicar los puntos de referencia, como para realizar mediciones en el espacio. Para ello se implementarán algoritmos de detección de segmentos y esquinas en una imagen con objeto de refinar y mejorar la información suministrada por el usuario a través de los puntos de referencia. (Duración estimada 30 horas). Etapa 3.2. Implementación de algoritmos para la extracción de las matrices de homografías de los planos de la imagen. A través de los puntos de referencia en los planos, identificados por el usuario, se realizarán los cálculos de las matrices de homografías que definen los mismos. Estas matrices de homografía definen la perspectiva con la que ha sido tomada la imagen. (Duración estimada 20 horas). Etapa 3.3. Cálculo de la distancia entre puntos situados en un mismo plano. Se utilizará la matriz de homografía del plano, para calcular los puntos en función de la perspectiva detectada a partir de los puntos de referencia identificados por el usuario. (Duración estimada 20 horas). Etapa 3.4. Cálculo de la distancia entre puntos situados en planos distintos. Para calcular distancias entre puntos situados en planos distintos (por ejemplo un punto en el suelo y otro en la pared), supondremos que los planos son perpendiculares entre sí (por ejemplo las paredes suelen ser perpendiculares al suelo). En ese caso, es posible, y así lo haremos, conociendo la línea de intercepción de los 2 planos (por ejemplo la línea de unión del suelo con la pared) implementar funciones que permitan calcular con precisión la distancia real entre los puntos 3D. (Duración estimada 40 horas). Etapa 3.5. Implementación de la interfaz gráfica. Diseño e implementación de la interfaz gráfica eficiente y amigable. La interfaz debe ser intuitiva, deberá contener herramientas de zoom que permitan al usuario definir los puntos de referencia. Y deberá minimizar el número de clicks necesarios para realizar una operación. (Duración estimada 70 horas). Etapa 4. Resultados y Conclusiones. En esta etapa se realizará una validación de todo el trabajo realizado en el proyecto, incluyendo su aplicación en situaciones reales. Para ello se realizarán mediciones en un espacio real y a posteriori se realizarán los mismos cálculos a partir de imágenes realizadas a la zona usando la aplicación desarrollada. A parte, cada etapa será verificada con sus pruebas pertinentes, desarrollándose así, una interfaz provisional para verificar el funcionamiento correcto del sistema. Finalmente, se aportarán las conclusiones obtenidas a lo largo de todo el proyecto. (Duración estimada 40 horas). Temporización global del proyecto: El tiempo global estimado para el desarrollo completo del proyecto es de 290 horas. Medios Necesarios para la elaboración del proyecto: El proyecto estará orientado para usuarios de sistemas operativos Windows. Los medios necesarios para su realización son: un ordenador personal, sistema operativo Windows XP y herramienta de desarrollo Borland C++Builder 3 o superior.