Full text
Dpto. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Visual Place Recognition Autor: Leandro Candau Sánchez de Ybargüen Tutor: Begoña Chiquinquira Arrue Ulles Trabajo Fin de Grado Grado en Ingeniería de Tecnologías Industriales Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019
iii Proyecto Fin de Carrera Grado de Ingeniería en Tecnologías Industriales Visual Place Recognition Autor: Leandro Candau Sánchez de Ybargüen Tutor: Begoña Chiquinquira Arrue Ulles Dpto. de Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019
v Trabajo de Fin de Grado: Visual Place Recognition Autor: Leandro Candau Sánchez de Ybargüen Tutor: Begoña Chiquinquira Arrue Ulles El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2019 El Secretario del Tribunal
vii AGRADECIMIENTOS A Paola y mi familia, por su apoyo incondicional a lo largo de los años. A mis maestros por sus enseñanzas y dedicación.
ix RESUMEN El objetivo de este trabajo de fin de grado consiste en estudiar y probar las tecnologías actuales que permiten el reconocimiento visual de un lugar previamente visitado. Este proceso se conoce como visual place recognition y es un problema bien definido en el ámbito de la visión artificial que se lleva estudiando desde hace varios años. Visual place recognition es una técnica utilizada para conocer con precisión la posición de la cámara que captura las imágenes, usualmente integrada como un sensor de un robot móvil. Consiste en reconocer un lugar previamente visto, y triangular la distancia a este lugar para obtener la posición relativa a la del observador. Visual place recognition permite, junto con otras técnicas de mapeado y estimación de posición, construir mapas sin tener conocimiento previo del terreno y dar soporte a sistemas de navegación autónoma. Existen diversas técnicas para realizar el reconocimiento visual de un lugar, y para definir este lugar. En este proyecto se hará uso de algunos de estos algoritmos, analizando los resultados obtenidos.
xvii ÍNDICE DE FIGURAS Figura 1.1 – Robots industriales empleando un sistema de reconocimiento de objetos con visión artificial. . 19 Figura 1.2 – Esquema de funcionamiento del sistema. ................................................................................... 20 Figura 2.1 – Condiciones cambiantes, izquierda. Fenómeno de aliasing perceptual, derecha. ....................... 23 Figura 2.2 - Esquema de un sistema de VPR .................................................................................................. 24 Figura 2.3 – Detector de bordes de Canny. ..................................................................................................... 26 Figura 2.4 – Detector de esquinas de Harris. ................................................................................................... 26 Figura 2.5 – Puntos característicos detectados en una escena aplicando SIFT ............................................... 27 Figura 2.6 – Problema frente a cambio de escala observado en los detectores de esquinas. ........................... 28 Figura 2.7 – Fase de detección de extremos en la escala-espacio del algoritmo SIFT. ................................... 28 Figura 2.8 – Puntos característicos detectados en una escena aplicando SURF .............................................. 29 Figura 2.9 - Esquema de la aproximación con filtros de caja e imágenes integrales. ..................................... 30 Figura 2.10 – Stitching de imágenes empleando puntos característicos SIFT. ............................................... 32 Figura 3.1 – Arquitectura global del sistema. .................................................................................................. 33 Figura 3.2 – Ventana principal de la aplicación. ............................................................................................. 34 Figura 3.3 – Logo OpenCV. ............................................................................................................................ 34 Figura 3.4 – Imágenes extraídas de RGB-D Dataset 7-Scenes de Microsoft. ................................................. 35 Figura 3.5 – Imágenes propias tomadas con diferentes condiciones climáticas y lumínicas. ......................... 36 Figura 4.1 – Cámara Logitech Carl Zeiss Tessar 1080p. ................................................................................ 38 Figura 4.2 – Captura de imagen con webcam. ................................................................................................ 39 Figura 4.3 – Ventana inicial de selección de imagen. ..................................................................................... 39 Figura 4.4 – Lectura de imágenes del dataset. ................................................................................................. 40 Figura 5.1 – Matching sin filtrado de imágenes capturadas por webcam........................................................ 41 Figura 5.2 – Matching tras el filtrado de imágenes capturadas por webcam. .................................................. 42 Figura 5.3 – Matching de imágenes capturadas por webcam con cambio brusco de perspectiva. .................. 42 Figura 5.4 – Matching de imágenes capturadas por webcam con cambio de iluminación. ............................. 43 Figura 5.5 – Emparejado entre imágenes del dataset con cambio leve de perspectiva. .................................. 43 Figura 5.6 – Emparejado entre imágenes del dataset con cambio de perspectiva. .......................................... 44 Figura 5.7 – Emparejado entre imágenes del dataset con cambio en la iluminación. ..................................... 44 Figura 5.8 – Emparejado entre imágenes del dataset con cambio brusco de perspectiva. .............................. 45 Figura 5.9 – Imagen objetivo para el análisis del rendimiento. ....................................................................... 45
19 1 INTRODUCCIÓN Y OBJETIVOS 1.1 Antecedentes El presente proyecto se enmarca bajo la normativa de los Trabajos de Fin de Grado de la Escuela Técnica Superior de Ingeniería de Sevilla para la obtención de los créditos correspondientes a la asignatura “Trabajo Fin de Grado” de la titulación de grado en ingeniería en tecnologías industriales. El departamento adjudicador del proyecto es el Departamento de Ingeniería de Sistemas y Automática, siendo la tutora Dña. Begoña Chiquinquira Arrue Ulles. 1.2 Objetivos El problema de la detección, por medio de la visión artificial, de una escena o lugar es uno de los retos por resolver más estudiados, debido a la creciente necesidad del mercado y la industria de plataformas con capacidad de navegar de forma segura y autónoma. Algunas de las aplicaciones más demandadas son robots móviles, vehículos autónomos o sistemas de navegación por ciudades. Es un problema fácil de definir, pero muy difícil de resolver debido a las condiciones cambiantes del propio ambiente. Esta problemática es tratada en numerosos artículos académicos y proyectos, y con el desarrollo de las recientes tecnologías de machine learning y deep learning, está teniendo de nuevo un auge en su popularidad. La visión por medio de cámara es uno de los sistemas más sencillos y baratos de aplicar en un sistema, y con los años los sistemas de captura de imagen han mejorado tanto en calidad como en coste y tamaño, siendo dispositivos cada vez más sofisticados. Esto causa que las cámaras sean uno de los sensores más empleados en la industria, siendo algunos de estos dispositivos cámaras multiespectrales, cámaras RGB o cámaras infrarrojas. En la Figura 1.1 vemos una aplicación sencilla de visión artificial en el ámbito de la robótica, en este caso aplicando una cámara y un sensor láser para detectar objetos y su posición en una cinta transportadora, para poder extraerlos de esta. Sistemas similares son ampliamente empleados en la industria dada su rentabilidad y sencillez, fomentando el desarrollo de mejores dispositivos. El problema que se trata de resolver es; dada una imagen de un lugar, ver si nuestro sistema es capaz de Figura 1.1 – Robots industriales empleando un sistema de reconocimiento de objetos con visión artificial.
determinar si ese lugar ha sido visto anteriormente. En este proyecto se definirá en detalle el concepto de percepción visual de un lugar, reconocimiento de este y se analizan algunos de los algoritmos clásicos empleados para la resolución del problema. Se evaluarán dichos conceptos teóricos mediante un sistema sencillo, empleando una webcam que permite a un PC tomar imágenes y procesarlas para tratar de determinar si corresponden al mismo lugar. Se escoge este sistema dado que el sensor empleado, la webcam, es fácil de obtener y emplear con un PC, y se puede calibrar para obtener resultados más fiables. Se contemplan las problemáticas relacionadas con el proceso como son los cambios de iluminación y posición para observar la respuesta de nuestro modelo frente a las mismas y se sacarán conclusiones de dicho estudio. El objetivo del proyecto es estudiar los sistemas de procesado de imágenes mediante software en una de las aplicaciones más demandadas por el mercado, como es el reconocimiento de lugares, empleando para su resolución librerías de software libres ampliamente utilizadas, las librerías de OpenCV [1] con el lenguaje de programación C++. Dichas librearías permiten procesamientos complejos de imágenes que resulta de gran utilidad en aplicaciones como el entrenamiento de una red neuronal de machine learning, estando además optimizadas para garantizar la eficiencia computacional y permitir su uso para aplicaciones de tiempo real. Otro objetivo perseguido con la resolución de este proyecto es estudiar el problema del reconocimiento de lugar, y cómo se ha tratado de resolver a lo largo de los años. 1.3 Metodología En este proyecto se ha llevado a cabo un estudio de los algoritmos clásicos de descripción de imagen extrayendo puntos de interés, aplicados en un sistema de reconocimiento de lugar. Para ello se ha desarrollado una aplicación software, cuyo esquema básico vemos en la Figura 1.2. Se ha desarrollado en el lenguaje de programación C++, empleando unas librerías populares de procesamiento de imagen open source, OpenCV, y desarrollando el software con la IDE Visual Studio de Microsoft. Como se explicará en detalle más adelante, la aplicación tiene dos modos de funcionamiento: emplear una cámara, previamente calibrada, para capturar imágenes o cargar varias imágenes guardadas en memoria. Las imágenes almacenadas forman un dataset; es decir un conjunto de datos conocidos que se puede emplear para evaluar el rendimiento del sistema. En el transcurso del se han estudiado los algoritmos SIFT y SURF de extracción de puntos característicos de imágenes y se han implementado en una aplicación con motivo de obtener un resultado visual del proceso. Figura 1.2 – Esquema de funcionamiento del sistema.
21 1.4 Estructura de la memoria Para una mejor exposición del contenido de este proyecto, se define brevemente el contenido que abarcan los capítulos posteriores. Se da una introducción teórica al problema de visual place recognition en el capítulo 2. Se define el problema del reconocimiento de lugar y se expone el modelo teórico de un sistema de reconocimiento de lugar empleando visión artificial. Se explican los módulos que componen dicho modelo en los apartados posteriores de dicho capítulo. La descripción de la arquitectura empleada en la aplicación se define el en capítulo 3, desde una perspectiva general, mostrando los componentes en los que se divide el sistema. Se dará una introducción de las librerías empleadas, justificando su utilización en este proyecto. El dataset empleado es presentado aquí, describiendo cómo se ha generado y las razones para su uso. Con la arquitectura general del sistema definida se pasa a definir el problema a resolver en el capítulo 4. Se definen los requisitos impuestos a las diversas partes del sistema. Posteriormente se explica la resolución del problema planteado para los dos modos de funcionamiento de la aplicación. Los resultados obtenidos se analizan en el capítulo 5, estudiando los problemas descritos en la definición teórica del capítulo 2, y cómo responde el sistema ante ellos. Por último, las conclusiones sacadas y las lecciones aprendidas se enumeran en el capítulo 6, así como los problemas que han surgido en el transcurso del proyecto y las mejoras propuestas.
2 VISUAL PLACE RECOGNITION 2.1 Introducción En el presente apartado se dará un contexto teórico del problema de reconocimiento de lugar. En primera instancia, definiremos el concepto de lugar viendo algunos ejemplos de estudios sobre la manera de describir el espacio que emplean los animales y los humanos. Se detallará cómo los componentes del sistema de reconocimiento de lugar por medio de la visión artificial heredan del modelo neuronal para definir computacionalmente la información que procesan. Por último, se pasará a explicar la relevancia del problema tratado y qué aplicaciones puede tener. Más adelante explicamos el modelo tradicional de un sistema de visual place recognition, los módulos que lo componen, así como las ventajas e inconvenientes de usar este tipo de sistemas, y los problemas que se tratan de resolver a la hora de aplicar su uso. Se explicarán en detalle los tres módulos que componen el sistema y las categorías que hay dentro de estos, así como algunos ejemplos del módulo de procesamiento de imagen que se va a tratar en el presente documento. 2.2 Definición del problema El reconocimiento de un lugar visualmente es un problema bien definido y muy tratado en el ámbito de la visión por computador, pero muy complejo de resolver. Consiste en dada una imagen de un lugar ser capaz de distinguir qué lugar es. Para poder llevar a cabo dicha distinción se necesita un conocimiento previo de dicho lugar, una definición de él con la que comparar la imagen que se visualiza. Por tanto, en primera instancia se debe definir el concepto de lugar. Según la Real Academia de lengua Española se define como: “Espacio ocupado o que puede ser ocupado por un cuerpo cualquiera.”, por tanto, se tiene que un lugar es una región del espacio. A la hora de definir un lugar se está definiendo una región del espacio, asignándole unas características distintivas y es esto lo que hace interesante la resolución del problema de su reconocimiento, pues conociendo el lugar y su definición se conoce una región del espacio a partir de la cual es posible obtener la región del espacio ocupada por el observador. En la naturaleza, los animales y los humanos son capaces de generar mapas en su memoria gracias a la distinción de lugares que son capaces de reconocer y gracias a ello pueden reconocer su posición, de hecho, el conocimiento que tienen del espacio se almacena como una serie de lugares conocidos y la relación espacial entre ellos. El estudio del proceso de mapeado y navegación, llevado a cabo en el cerebro de forma natural, tiene una larga tradición en los campos de psicología y neurociencia. En 1948, la investigación de Tolman [2] con ratas navegando por laberintos le llevaron a proponer el concepto de un mapa cognitivo, una representación mental del mundo con información de las relaciones entre los lugares que los animales aprenden. Este mapa cognitivo sirvió como base conceptual al concepto moderno del mapa interno en un sistema de visión por computador, donde el mapa almacena información disponible de los puntos en el espacio, de manera similar a como los animales almacenan diversos lugares de interés y las relaciones espaciales entre ellos. Investigaciones posteriores aplicando técnicas para obtener la actividad neuronal del cerebro de animales [3] llevó a la identificación de las células encargadas de reconocer un lugar previamente visitado, denominadas células de lugar, del inglés place cells, halladas en el hipocampo de las ratas por O’Keefe y Dostrovsky [4]. El reconocimiento de un lugar, observado por la activación de las células de lugar, es causado por la percepción visual y la noción de moción propia [5], es decir la idea aproximada de cuánto se ha movido y en qué dirección el cuerpo. Estudios posteriores comprobaron que, incluso si el ambiente cambia, alterando por ejemplo las distancias entre el punto de partida y el destino final, las células de lugar se actualizarán con la correcta localización corrigiendo el error en la estimación de movimiento. Los conceptos extraídos de los estudios anteriormente mencionados sirvieron de base en el desarrollo de los sistemas de reconocimiento visual por computador, como en el trabajo de C.Siagian y L. Itti de un sistema de localización inspirado en el modelo del mapa biológico [6]. Dichos sistemas incluyen componentes para la extracción de información mediante observación, sensores para capturar datos de moción y un mapa interno almacenado, y esta información se emplea en la tarea de reconocer un lugar previamente conocido. El lugar
23 por reconocer no necesariamente ha debido ser visitado por el sistema dado que el sistema de computación permite cargar información previamente obtenida. Esto nos permite distinguir entre dos procesos, uno en el cual el sistema tiene una preconcepción del lugar y otro en el que se parte de no tener ninguna información previa. Mientras que este conocimiento previo ayuda a mejorar la precisión del proceso, entendiendo por precisión el número de lugares reconocidos correctamente partido por el total de lugares reconocidos tanto de forma acertada como falsos positivos, también provoca que el sistema se comporte peor frente a variaciones en el aspecto de dichos lugares. La importancia del estudio del reconocimiento visual por computador viene de la mano de la creciente necesidad de mayor autonomía en las plataformas móviles, como robots o vehículos autónomos, y la necesidad, por seguridad, de conocer correctamente su entorno. La información visual es sencilla y barata de obtener y procesar, siendo ampliamente empleada en algoritmos de visión artificial. Algunos de éstos incluyen detección de lugares, objetos, formas y personas, en aplicaciones de realidad aumentada y mixta, y en el desarrollo de sistemas de navegación autónoma, entre otros. 2.3 Visual Place Recognition Visual place recognition, en adelante VPR, es un problema definido en el ámbito de la visión artificial. Consiste en, dada una imagen de un lugar, tomar la decisión de si ha sido previamente visitado o no. Existen una serie de requisitos que todo sistema de reconocimiento de lugar debe tener y debe hacer. Dado que el objetivo es reconocer un lugar, éstos se han de definir obteniendo, a partir de la información que se tiene de ellos, un modelo del lugar con el cual comparar. Un sistema de VPR debe mantener un mapa interno donde se posiciona el modelo que define el lugar, pues el objetivo final del sistema es determinar la posición propia en dicho mapa, comparando la información visual obtenida con los modelos almacenados en el mapa. Por último, se debe generar una estimación de si la información visual obtenida corresponde a un lugar existente en el mapa, y determinar qué lugar. Al determinar el lugar y la relación entre la ubicación propia y éste, el sistema de VPR permite obtener la posición propia dentro del mapa a partir de un proceso computacionalmente poco costoso y unos sensores económicos. Sin embargo, resolver el problema de VPR es una tarea difícil debido a la naturaleza inconsistente del proceso de captura de imágenes, y la variabilidad de aspecto en un lugar. Un buen sistema de reconocimiento de lugar debe ser capaz de distinguir entre imágenes con lugares aparentemente idénticos, conocido como fenómeno de aliasing perceptual, y ser inmune a las variaciones de apariencia debidas a tomar la captura de imagen desde un ángulo o posición diferente, con diferentes condiciones de iluminación y a cambios o movimientos de los objetos contenidos en el espacio de dicho lugar, Figura 2.1. Esto último se conoce como condiciones cambiantes, y suponen el mayor reto al que enfrentarse al desarrollar un sistema de percepción basado en visión artificial. Los sistemas de VPR se componen de tres módulos, cada uno de ellos encargado de resolver un problema independiente. De manera similar a la naturaleza la principal fuente de información para resolver el problema es la visión artificial y la odometría, es decir la percepción visual y la noción de moción propia mencionadas en los trabajos de O’Keefe y Dostrovsky. Esta información se contrasta con el mapa interno que contiene los modelos de los lugares conocidos y la relación entre ellos, y si se encuentra una o más coincidencias se decide cuál es la más probable de ser correcta. Los tres módulos del sistema de VPR son el módulo de captura y procesado de imagen, el mapa interno y el generador de confianza y se relacionan entre sí como se indica en la Figura 2.2. Figura 2.1 – Condiciones cambiantes, izquierda. Fenómeno de aliasing perceptual, derecha.
Como se ha mencionado anteriormente, el primer problema a resolver utilizando un sistema VPR es la definición del lugar que queremos reconocer. Cuando se define el lugar se crea un modelo con información obtenida a través de los sensores empleados, siendo el principal la visión artificial mediante el uso de cámaras y procesamiento de imágenes. Por tanto, se debe crear un modelo a partir de la información visual del lugar observado. Para ello se obtiene de la imagen una serie de puntos o zonas de interés que describen la imagen y se forma un modelo del lugar visualizado. Este primer paso se conoce como el procesamiento de imagen. Los modelos obtenidos a partir de las imágenes, combinados con otros sensores, se procesan para generar una representación interna del conocimiento que se tiene del espacio, conocida como el mapa interno del sistema. El mapa puede ser creado y cargado previamente, dotando al sistema de un conocimiento previo del ambiente por el que va a trabajar. Según el tipo de información almacenada en el mapa una clasificación de los tipos de mapas de VPR la encontramos en la Tabla 2.1, donde la principal distinción se da entre modelos con y sin información métrica del lugar. Figura 2.2 - Esquema de un sistema de VPR Nivel de abstracción del modelo Tipo de modelado del lugar Comentario Puramente recuperación de imagen Modelado por apariencia Sin información sobre posición. Topológico Modelado por apariencia Incluye información de la moción del observador. Topológico-métrico Modelado por apariencia Incluye información métrica entre los lugares, pero no de los propios lugares. Topológico-métrico Información métrica esparcida Sistema de SLAM. Incluye información métrica entre los lugares y de los propios lugares. Topológico-métrico Información métrica densa Sistema de SLAM. Incluye información métrica entre los lugares y de los propios lugares. Tabla 2.1 – Clasificación de mapas internos en sistemas de VPR
25 Finalmente, el último módulo tiene como fin determinar si un lugar ha sido previamente visualizado. El módulo se conoce como el módulo de generación de confianza, donde se compara la información visual entrante, ya tratada en el módulo de procesamiento, con la representación interna y, opcionalmente, la información captada por otros sensores, para generar una estimación con un cierto grado de confianza, sobre si el lugar visualizado coincide con un lugar previamente representado y cuál. Por lo general se entiende que, si dos modelos que representan a un lugar son aparentemente idénticos, o guardan mucha similitud, se trata del mismo lugar. Pero la veracidad de esta afirmación depende del ambiente en particular. Por ejemplo, si se trata de un ambiente repetitivo cabe la posibilidad de caer en el fenómeno de aliasing mencionado anteriormente. 2.4 Módulo de procesamiento de imagen Como se ha mencionado anteriormente, un aspecto fundamental de VPR es el modelo descriptivo de la imagen. Las técnicas de descripción de imagen se dividen en dos categorías: por un lado, las que extraen selectivamente fragmentos concretos de la imagen que son de alguna forma relevantes o notorios, y por otro lado las que describen la escena de forma global. Por tanto, las categorías en las que se divide el módulo de procesamiento de imagen son los que emplean descriptores locales y los que emplean descriptores globales. Los descriptores locales requieren de una fase previa de detección de regiones con características de interés en la imagen. Los descriptores globales no requieren de ninguna fase previa de detección y describen la imagen entera sin importar su contenido. En el presente documento se trata el módulo de procesamiento de imagen con descriptores locales, empleado distintos tipos de detectores de características. Los descriptores locales permiten combinar los puntos característicos con información geométrica, y son más robustos a cambios de orientación. Además, permiten definir lugares nuevos no definidos previamente y combinarlos para crear un mapa interno, incluso sin tener ningún conocimiento previo del entorno. La principal desventaja encontrada empleando descriptores locales es que presentan un rendimiento más pobre frente a los globales cuando existe una variación de las condiciones de iluminación. En cambio, los descriptores globales no se pueden combinar con información métrica, siendo más susceptibles de cambiar con la perspectiva que los locales, por lo que presentan problemas con cambios de orientación o posición del observador. La principal ventaja de su uso es que, mientras que los descriptores locales presentan un rendimiento pobre en condiciones ambientales y lumínicas variables, los globales son más robustos ante éstos. 2.4.1 Descriptores de características locales Los descriptores locales dividen la imagen, seleccionando regiones o puntos que se consideran de interés para definir el modelo de ésta. Tienen una primera etapa donde se detectan dichos puntos de interés que después se emplean para generar un modelo que describe la imagen. No existe una definición global de lo que se considera un punto característico en una imagen y su definición varía según el problema o el tipo de aplicación. En VPR se considera que un punto característico es un punto o región de interés para la definición del modelo de la imagen. Se emplean diversos algoritmos para identificar estas áreas de interés y describir la imagen. Los descriptores tempranos se centraban en zonas fácilmente reconocibles en la escena como esquinas, bordes y manchas, por ejemplo, el detector de bordes de Canny [7] de la Figura 2.3, o el detector de esquinas de Harris et al. [8] de la Figura 2.4. Estos algoritmos presentan un buen rendimiento frente a rotaciones en la imagen, sin embargo, son poco robustos frente a cambios de escala y perspectiva.
necesario. Como se observa en la Figura 2.2 es el módulo central, que recoge toda la información conocida y presenta el resultado del proceso. Dicho resultado puede ser utilizado en procesos como SLAM con reconocimiento de lugar proponiendo candidatos para el cierre del bucle, o para generar un bordado, stitching, en imágenes panorámicas, entre otras aplicaciones. Un ejemplo de bordado se muestra en la Figura 2.10, donde se emplea el algoritmo SIFT para describir dos imágenes del mismo lugar y se comparan para generar unos inliners, puntos emparejados entre los dos vectores de características. Por último, se aplica homografía, el cálculo de la variación de la posición de la cámara entre ambas tomas, para obtener la superposición de una imagen sobre otra. En entonos repetitivos se pueden dar casos de aliasing visual, el determinar erróneamente que dos lugares distintos, pero visualmente idénticos, corresponden a la misma localización. Para evitar este problema la solución más robusta se basa en incluir información métrica en el proceso. Otro problema que se puede presentar en este módulo es la variación del ambiente entre la imagen capturada y la almacenada en el mapa, provocando que se descarte un matching erróneamente. Estos problemas son ejemplos de lo que se conoce como falsos positivos y falsos negativos, respectivamente. Una medida usual del rendimiento de un sistema VPR se expresa en la Ecuación 1. Figura 2.10 – Stitching de imágenes empleando puntos característicos SIFT. 𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛= 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜𝑠 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜𝑠+𝐹𝑎𝑙𝑠𝑜𝑠 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 𝐸𝑣𝑜𝑐𝑎𝑐𝑖ó𝑛= 𝑃𝑜𝑠𝑜𝑡𝑖𝑣𝑜𝑠 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜𝑠 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜𝑠+𝐹𝑎𝑙𝑠𝑜𝑠 𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑜𝑠 Ecuación 1 - Precisión y evocación de un sistema VPR
33 3 ARQUITECTURA SOFTWARE DE LA APLICACIÓN 3.1 Introducción Para la resolución de este proyecto, desde la extracción de imágenes para su procesado hasta la presentación de un resultado, se ha hecho uso de una arquitectura modular software que se explicará en el presente apartado. Los módulos corresponden a objetos de C++ encargados de proporcionar el servicio requerido, de forma independiente al modo de funcionamiento del sistema. El motivo de realizar esta estructura modular es que resulta sencillo adaptar los módulos para modos de funcionamiento distintos, o incorporarlos en aplicaciones independientes. La funcionalidad de cada uno de los módulos se implementa mediante una clase de C++ utilizando las librerías de OpenCV. Uno de los modos de funcionamiento del sistema hace uso de un dataset como entrada de datos al sistema. Se explicará el proceso de selección de dicho dataset y la motivación de su uso. 3.2 Arquitectura global La aplicación desarrollada se estructura según una arquitectura modular esquematizada en la Figura 3.1. El sistema se compone de una clase que permite crear objetos con las funcionales de ambos módulos para que trabajen de forma independiente, donde cada módulo es una instancia de dicha clase. La clase permite inicializar un objeto como descriptor con cualquier algoritmo implementado en la librería opencv/features.h, incluyendo tanto SIFT como SURF, e implementa métodos que reciben de entrada una imagen como un objeto Mat de OpenCV y devuelven un vector de puntos de interés, dándole la funcionalidad del módulo de procesamiento de imagen. Estos vectores, junto con las imágenes originales, son los que emplea el segundo objeto para realizar la comparación y tomar la decisión de si corresponde al mismo lugar. La función main de la aplicación se encarga de instanciar las clases, inicializar un hilo independiente que ejecuta la cámara o lee las imágenes de la ruta donde se almacena el dataset, pasada como argumento a main, y hace uso de los objetos para procesar dichas imágenes. También se encarga de mostrar las imágenes en una ventana tras los diferentes procesados y lee comandos de usuario que permiten abrir o cerrar la aplicación, Figura 3.1 – Arquitectura global del sistema.
detener o continuar la captura de la cámara, seleccionar distintas imágenes del dataset y mostrar los resultados al usuario; tanto gráficamente como numéricamente. En la Figura 3.2 vemos la ventana principal de la aplicación, a la derecha para su uso con la cámara y a la izquierda para su uso con el dataset. 3.3 Visión Para la gestión de la visión artificial se hace uso de OpenCV, Figura 3.3, unas librerías open source desarrolladas originalmente por Intel [15] para visión artificial. Algunas aplicaciones incluyen el reconocimiento de objetos, la edición de imágenes y vídeos, calibración de cámaras, realidad aumentada y detección de puntos de interés de imágenes. Están desarrolladas en los lenguajes de programación C++, Java y Python, pero existen muchos wrappers, envoltorios, que permiten su uso en lenguajes no nativos, como EmguCV para C#. Emplearemos las librerías en su versión 3.4.3, con los módulos extras para emplear las funciones de detección de puntos de interés. Estas librerías son ampliamente utilizadas y poseen una extensa comunidad y buena documentación, facilitando su extensión. Entre las funciones que posee se incluyen detección y descripción de puntos de interés en imágenes aplicando varios algoritmos para ello, entre ellos los algoritmos SIFT y SURF empleados en este proyecto. También permite configurar varios parámetros de dichos algoritmos, como el nivel del umbral hessiano o el radio aplicado en el filtro de Lowe. Otras utilidades de las librerías empleadas son la lectura de imágenes a partir de su ruta en el sistema, empleado para cargar las imágenes del dataset, o la inicialización de un objeto de captura de video que permite inicializar una cámara conectada al PC, calibrarla y obtener los fotogramas para su posterior procesamiento. También permite mostrar imágenes, editarlas, dibujar o escribir sobre ellas. Esto permite crear la interfaz de la aplicación combinándolo con la lectura por teclado de los comandos del usuario, para generar una aplicación interactiva. Figura 3.2 – Ventana principal de la aplicación. Figura 3.3 – Logo OpenCV.
35 3.4 Dataset Para el desarrollo de este proyecto se ha empleado un dataset de imágenes para su procesamiento y análisis. Los requisitos fundamentales que debía cumplir dicho set de imágenes era que existieran imágenes que cubrieran la casuística descrita en el apartado 2 de visual place recognition: cambios en la posición, orientación, condiciones climáticas e iluminación. Con esto se pretende observar los problemas descritos en el procesamiento de imagen. El dataset contiene 72 imágenes, de 5 escenas diferentes. Para su elaboración se han tomado imágenes del dataset RGB-D 7-Scenes de Microsoft [16], concretamente de las escenas chess, pumpking y fire, donde se observan los mismos lugares desde perspectivas distintas. Se han tomado 8 imágenes de cada escena con cambios progresivos, resultando en un total de 24 de las 72 imágenes, y correspondiente a imágenes de interiores. Las 2 escenas restantes se han obtenido con la cámara de un móvil, viendo las mismas 2 escenas de exteriores en diferentes condiciones, para observar los fenómenos de cambio de iluminación y climáticos y de estos junto a cambios de perspectiva. Se han capturado 8 imágenes de cada escena en diferentes perspectivas para un día soleado y un día lluvioso, tratando de tomar las mismas 8 perspectivas. También se han tomado otras 4 fotos de noche y al amanecer de ambas escenas, para un total de 48 imágenes. Podemos ver un extracto representativo de las escenas en la Figura 3.4. para el dataset de Microsoft, y en la Figura 3.5. para las imágenes capturadas. Se ha optado por este dataset, pequeño en comparación con otros encontrados, para poder seleccionar una muestra aleatoria de este y compararla con todas las demás imágenes del conjunto. Dado que el tiempo de procesamiento en cada iteración era largo, debido a la limitada capacidad de computación del hardware empleado, se ha escogido un dataset poco extenso, pero con suficientes casos representativos de los problemas encontrados en un sistema de VPR más complejo. Figura 3.4 – Imágenes extraídas de RGB-D Dataset 7-Scenes de Microsoft.
Figura 3.5 – Imágenes propias tomadas con diferentes condiciones climáticas y lumínicas.
37 4 PROCESO DE RESOLUCIÓN 4.1 Introducción Una vez establecida la arquitectura general del proyecto, se procede ahora a explicar el proceso seguido para implementar dicha arquitectura. En el presente apartado se definirá el problema a resolver, y en particular se propondrán una serie de exigencias cuyo objetivo será evaluar el funcionamiento de la aplicación. Mediante dicha propuesta se espera justificar el empleo de la arquitectura en módulos, empleando para ello programación orientada a objeto. Una vez delimitado los objetivos particulares que deben cumplirse se procederá a su resolución para ambos modos de funcionamiento del sistema, capturando imágenes de forma continua mediante una cámara o procesando imágenes preestablecidas ordenadas en un dataset. 4.2 Definición del problema Para explicar el procedimiento seguido para la resolución del problema, en primer lugar, se definirá el problema que se espera resolver. Los objetivos de la aplicación se definen a continuación, según el proceso. En cuanto a la adquisición de imágenes con una webcam conectada: • Inicializar correctamente la cámara. • Calibrar la cámara para compensar los efectos de distorsión propios de cámaras estenopeicas, que se dan en mayor o menor medida en todas las cámaras comerciales. • Capturar la imagen de forma continua, independientemente del procesado de imagen que ocurra de fondo, de forma que el usuario pueda ver un video continuo. • Pausar, continuar y detener la adquisición de imágenes con la cámara. En la lectura de imágenes del dataset: • Leer la ruta pasada como argumento correctamente. • Detectar la existencia del directorio, y si contiene alguna imagen en formato válido. • Almacenar la dirección de todas las imágenes dentro de la ruta. • Abrir las imágenes, introduciendo su ruta y almacenarlas en un objeto Mat de OpenCV. Para la descripción de imágenes: • Detectar los puntos de interés empleando el algoritmo SIFT o SURF. • Describir las imágenes según el algoritmo SIFT o SURF, independientemente del empleado para la detección. • Funcionar de forma paralela a la adquisición de imagen, de forma que no penalice la latencia del video mostrado al usuario. Por último, al comparar las imágenes: • Realizar el emparejado, o matching, de los vectores de puntos de interés de ambas imágenes. • Filtrar los emparejamientos erróneos. • Tomar la decisión de si corresponden al mismo lugar. Adicionalmente, para el caso en el que se emplea el dataset se comprobarán las tomas de decisiones del módulo de comparación, midiendo el rendimiento del sistema. Los objetivos perseguidos se adaptan a la estructura modular presentada en la arquitectura del sistema, justificando el empleo de bloques independientes para la resolución del problema.
4.3 Imágenes de la webcam Para la resolución del problema definido previamente se hace uso de una webcam comercial, una cámara Logitech modelo Carl Zeiss Tessar HD 1080p. Las cámaras comerciales requieren ser calibradas previamente, un proceso que consiste en tomar varias capturas de un objeto de dimensiones conocidas para obtener las distorsiones propias causadas por la cámara. Las causas de estas distorsiones son dos; la distorsión óptica, causada por la lente de la cámara, y la distorsión de perspectiva. Para realizar la calibración se emplea una función de ejemplo de OpenCV con un tablero de ajedrez de dimensiones conocidas. Los resultados de la calibración se muestran en la Figura 4.1. Se inicializa la cámara con un objeto video capture de OpenCV, y los objetos de los módulos independientes. Dicho objeto se inicia y desde ese momento graba un vídeo continuo. El algoritmo muestra esta captura de vídeo leyendo el fotograma actual cada 30 milisegundos y mostrándoselo al usuario en una ventana. Se pide al usuario que pulse una tecla para realizar una captura, que será la imagen objetivo con la cual se compararán posteriormente las imágenes. El objetivo de la aplicación será comprobar si la imagen visualizada corresponde al mismo lugar que la imagen elegida. Dicha imagen pasa por el módulo de procesado de imagen, y se almacena junto con sus puntos de interés. Tras esto se activa un hilo de ejecución concurrente encargado de mostrar en todo momento al usuario la captura de la cámara frente a la imagen objetivo, mientras que la aplicación entra en el bucle principal. La ventana mostrada se ve en la Figura 4.2. Este hilo se podrá pausar y reanudar con una señal enviada desde el bucle en el proceso principal. Al cerrar dicho bucle la captura se detiene y se libera la memoria reservada por el hilo antes de detener la ejecución. El hilo mantiene actualizada una variable compartida de imagen, el fotograma de la cámara, y es el único que lo puede modificar. El bucle principal podrá copiar en un momento dado la imagen, pero no podrá modificar su valor, para evitar problemas de sincronización. El bucle principal de la aplicación espera en todo momento un comando de parte del usuario, en forma de una pulsación de tecla. Las opciones que ofrece son la pausa/reanudación del hilo de la cámara, el procesado del fotograma actual y la finalización de la aplicación. Si el usuario elige el procesado del fotograma actual se realiza una copia de la variable compartida por el hilo y se envía al módulo de procesado. El módulo de procesado aplica el algoritmo de detección y descripción escogido y devuelve la imagen y un vector de puntos de interés, que se envían al módulo de comparación y generación de confianza. 𝐶𝑎𝑚𝑒𝑟𝑎 𝑀𝑎𝑡𝑟𝑖𝑥:[5.335912589𝑒+02 0320 0 5.335912589e+02 240 0 0 1 ] 𝐷𝑖𝑠𝑡𝑜𝑟𝑡𝑖𝑜𝑛 𝑀𝑎𝑡𝑟𝑖𝑥: ( 2.862152e−02 3.735802e−01 0 0 −1.20631999 ) Figura 4.1 – Cámara Logitech Carl Zeiss Tessar 1080p.
39 En el módulo de comparación se emparejan los vectores de puntos de interés que recibe de entrada y devuelve una matriz de 2xn, siendo n el número de emparejados realizado. En dicho vector se almacenan los puntos de interés de ambas imágenes que se han emparejado y se procede a filtrarlos, empleando para ello el filtro de radios de Lowe. Tras el filtrado la matriz se reduce, dejando únicamente los elementos que pasan el filtro de radios. Con esta información el módulo toma la decisión de si la imagen corresponde al mismo lugar o no. 4.4 Imágenes del dataset Cuando se hace uso del dataset se pasa como argumento a la aplicación una ruta del sistema operativo hacia el directorio que contiene el conjunto de imágenes. En primer lugar, el código tratará de acceder a dicho directorio, avisando al usuario si no es capaz. Almacenará el nombre de todos los archivos en una lista de strings, que se filtra para quedarse únicamente con aquellos que sean imágenes, quedando finalmente una lista con los nombres de todas las imágenes, y la dirección de la carpeta donde están almacenadas. Tras inicializar los objetos de los distintos módulos, se mostrará al usuario una primera ventana, Figura 4.3, donde se permite visualizar las imágenes y escoger entre ellas la imagen objetivo, y, al seleccionar la imagen, ésta se enviará al módulo de procesamiento para obtener el vector de puntos de interés. La imagen y su vector de descripción se almacenan dónde puede acceder a ellas el módulo de comparación. Figura 4.2 – Captura de imagen con webcam. Figura 4.3 – Ventana inicial de selección de imagen.
Una vez seleccionada la imagen objetivo se inicia un bucle que itera por la lista de imágenes, abriéndolas con OpenCV, y mostrando una ventana interactiva al usuario, la ventana principal de la aplicación mostrada en la Figura 4.4 a la izquierda. Se leen los comandos del usuario como pulsaciones del teclado permitiendo mostrar la imagen siguiente o anterior, y enviar la imagen actual al módulo de procesado para comparar con el objetivo, a la derecha en la Figura 4.4. El tratamiento de la imagen elegida es idéntico al caso de la webcam, se procesa en el módulo de procesamiento y se envía al comparador junto con el objetivo para tomar la decisión de si corresponden al mismo lugar. Como en el caso de dataset los nombres de las imágenes corresponden a las escenas seguidas de un número se puede comprobar con una simple comparación de nombres si el reconocimiento de lugar se ha realizado correctamente. Esto nos permite obtener una medida del rendimiento del sistema. Figura 4.4 – Lectura de imágenes del dataset.
41 5 ANÁLISIS DE RESULTADOS 5.1 Introducción En este capítulo se mostrarán los resultados de ejecución del proceso de resolución explicado anteriormente, para ambos casos de funcionamiento del sistema. Se comentarán dichos resultados, comparándose con los problemas descritos para sistemas de VPR en el capítulo 2. 5.2 Resultados obtenidos con la webcam Se procede ahora a presentar los resultados obtenidos ejecutando la aplicación con la webcam. Se crea un escenario formado por un tablero de ajedrez y una torre formada por piezas de madera, sobre una mesa de madera y con un fondo formado por dos planos de color liso. Se ha escogido este escenario debido a que el tablero y la torre presentan abundantes puntos característicos, y el tablero presenta una fuerte simetría, siendo propenso a generar falsos positivos. Para evitar falsos positivos se aplica el filtro de radios de Lowe tras el proceso de matching. Se puede apreciar el efecto del filtro entre las figuras 5.1 y 5.2. En la Figura 5.1 se muestra el matching entre dos fotogramas con cambio de perspectiva despreciable, pero sin filtrado. Las líneas unen los puntos característicos emparejados, y dado que no se produce movimiento entre los fotogramas deberían ser horizontales. Sin embargo, se aprecia que varios de las líneas enlazan puntos distintos, cruzando de forma diagonal entre las imágenes. En la Figura 5.2 se muestra dos capturas consecutivas, con un movimiento de traslación leve entre ellas. Se aprecia que las líneas que representan los matches presentan un cierto paralelismo, dado que la rotación entre ambas escenas es despreciable, y que no aparecen líneas cruzadas como en el caso anterior, siendo eliminadas por el filtro de Lowe. Figura 5.1 – Matching sin filtrado de imágenes capturadas por webcam.
6 CONCLUSIONES Y DESARROLLOS FUTUROS 6.1 Conclusiones Se han estudiado y probado los algoritmos clásicos de detección de puntos característicos en imágenes más populares SIFT y SURF, comprobándose experimentalmente las limitaciones en su uso al tratar cambios abruptos de perspectiva o iluminación. Los algoritmos empleados se han implementado haciendo uso de las librerías de OpenCV en el lenguaje C++, creándose una aplicación interactiva para experimentar con estos algoritmos, visualizando los resultados en imágenes. Los resultados obtenidos demuestran que el sistema presenta un resultado pobre al lidiar con los problemas mencionados, pero da resultados muy robustos en condiciones apropiadas. Como se mencionó en la introducción el problema de visual place recognition ha tenido un resurgimiento con la aparición de las técnicas de deep learning, que permiten desarrollar algoritmos más avanzados basados en el uso de imágenes descritas mediante estos algoritmos, pero mejoran la eficiencia del sistema de reconocimiento permitiendo por ejemplo realizar tareas de clasificación y etiquetado de lugar según los objetos detectados, entre otros. Deep learning consiste en aplicar modelos computacionales de aprendizaje automático, inspirados en el comportamiento de las redes neuronales biológicas, entrenadas para realizar una tarea específica, como en [17], donde se emplea una red neuronal convolucional para la detección de objetos en tiempo real. El problema de VPR es de gran interés, y se siguen desarrollando soluciones en busca de un sistema que permita navegar de forma completamente autónoma y segura a robots en entornos con humanos presentes, un problema complejo de resolver. Durante el capítulo 2 se ha introducido el concepto de VPR, así como los problemas que se deben resolver para su uso viable en sistemas que se puedan considerar completamente autónomos. Se concluye que estos sistemas deben afrontar aun varios problemas que causan que no se viable su uso en sistemas de navegación autónomos de forma segura. Dichos problemas surgen de las limitaciones tecnológicas de estos sistemas y constituyen un campo de estudio que aún está madurando. Para la resolución del problema se ha preparado un conjunto de imágenes, y se ha desarrollado una aplicación que, mediante el uso de las librerías de OpenCV, permite implementar una solución presentada en el capítulo 4. Esta definición se propone tras la consideración de la necesidad de una estructura modular para el desarrollo de la aplicación, propuesta en el capítulo 3. Dada la dificultad de obtener un set de imágenes que cumpla las necesidades con el que probar el sistema, se toma la decisión de generar un dataset propio para este proyecto para evaluar el rendimiento. En el capítulo 5 se analizan los resultados obtenidos procediendo como se indica en proceso de resolución. Tras el análisis del rendimiento se obtiene una alta precisión a costa de un nivel de evocación muy bajo, sugiriendo que nuestro sistema no es capaz de identificar correctamente los lugares presentados al ser sometido a los problemas descritos en el capítulo 2. Sin embargo, en el caso más favorable, la respuesta del sistema es la esperada siendo capaz de reconocer la localización. Durante el desarrollo del proyecto la mayor dificultad ha consistido en el desarrollo de dicha aplicación, dada la falta de familiaridad con lenguajes de programación orientada a objeto como C++. Otras dificultades encontradas han sido el estudio del problema de reconocimiento visual de un lugar, dado que es un campo aun en desarrollo con múltiples publicaciones, estudios y artículos que tratan este problema de muy diversas formas. Se concluye este proyecto con los objetivos definidos en el capítulo 4 cumplidos, teniendo una aplicación final y un set de imágenes válidos y probados. 6.2 Mejoras y desarrollos futuros En el ámbito de la visión artificial existen muchos problemas en constante evolución, obteniendo resultados cada vez más eficientes y precisos mediante técnicas avanzadas como machine learning y deep learning. En este proyecto se han empleado algunos de los algoritmos más empelados para la descripción de puntos
49 característicos de imágenes y se han aplicado para la resolución de un problema de reconocimiento de lugar. Existen otros problemas con funcionamientos similares como el reconocimiento de objetos, de caras o la realidad aumentada que hacen uso de estos algoritmos y también resultan de interés. En cuanto a la aplicación desarrollada, sería deseable mejorar la eficiencia de esta, planteando estrategias más avanzadas para la resolución del problema de VPR. Además, computacionalmente la aplicación resulta costosa, no siendo aprovechable en aplicaciones de tiempo real. Por otro lado, el conjunto de imágenes empleado debe ser ampliado y mejorado para contemplar todas las situaciones que potencialmente puedan encontrarse al utilizar un sistema de navegación autónomo, de forma que se pueda experimentar y que puedan afrontarse de forma segura soluciones para la navegación autónoma basadas en VPR.
7 REFERENCIAS [1] O. S. C. V. L. (OpenCV). [En línea]. Available: https://opencv.org/. [2] E. C. Tolan, «Cognitive maps in rats and men,» Psychol. Rev., vol. 55, nº 4, pp. 189-208, 1948. [3] F. Strumwasser, «Long-term recording from single neurons in brain of unrestrained mammals,» Science, vol. 127, nº 3296, pp. 469-470, 1958. [4] J. O. a. J. Dostrovsky, «The hippocampus as a spatial map. Preliminary evidence from unit activity in the freely-moving rat,» Brain Res., vol. 34, nº 1, pp. 171-175, 1971. [5] J. O’Keefe, «Place units in the hippocampus of the freely moving rat,» Exp. Neurol., vol. 51, nº 1, pp. 78-109, 1976. [6] L. I. C. Siagian, «Biologically inspired mobile robot vision localization,» IEEE Trans. Robot, vol. 25, nº 4, p. 861–873, 2009. [7] J. Canny, «A computational approach to edge detection,» IEEE Trans. Pattern Anal. Mach. Intell., Vols. %1 de %2PAMI-8, nº 6, pp. 679-698, 1986. [8] C. H. a. M. Stephens, «A combined corner and edge detector,» de Proc. 4th Alvey Vis. Conf, 1988. [9] D. Lowe, «Object recognition from local scale-invariant features,» 1999. [10] T. T. a. L. V. G. H. Bay, «SURF: Speeded up robust features,» de Proc. Eur. Conf. Comput. Vis, 2006. [11] G. S. M. C. P. N. a. I. R. C. Mei, «A constanttime efficient stereo SLAM system,» de Brit. Mach. Vis. Conference, Londres, U.K., 2009. [12] A. M. R. a. M. Cazorla, «Comparativa de detectores de característicasvisuales y su aplicación al SLAM,» de X Workshop de agentes físicos, Cáceres, 2009. [13] A. O. a. A. Torralba, «Visual Perception – Fundamentals of Building the gist of a scene: The role of global image features in recognition,» de Awareness: Multi-Sensory Integration and High-Order Perception, New York, NY, USA, Elsevier, 2006, pp. 23-36. [14] S. M. a. D. I. A. Ranganathan, «Towards illumination invariance for visual localization,» de Proc. IEEE Int. Conf. Robot. Autom., 2013. [15] Intel. [En línea]. Available: https://www.intel.com/content/www/us/en/homepage.html. [16] Microsoft, «RGB-D Dataset 7-Scenes,» 2013. [En línea]. Available: https://www.microsoft.com/enus/research/project/rgb-d-dataset-7-scenes/. [17] K. H. R. G. J. S. Shaoqing Ren, «Faster R-CNN: Towards Real-Time Object Detection,» 2015. [18] B. G. C. Z. S. I. A. C. A. F. Jamie Shotton, «Scene Coordinate Regression Forests for Camera Relocalization in RGB-D Images | Proc. Computer Vision and Pattern Recognition (CVPR),» IEEE, Junio 2013.
51
8 GLOSARIO VPR: Visual Place Recognition SLAM: Simultaneous Location And Mapping SIFT: Scale-Invariant Feature Transforms SURF: Speeded-Up Robust Features