UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO INDUSTRIAL PROYECTO FIN DE CARRERA RECONSTRUCCIÓN 3D DE MODELOS UTILIZANDO TÉCNICAS DE VISIÓN ARTIFICIAL AUTOR: DIRECTORES: Vilá Ubieto, Karen Arranz Domingo, Álvaro Alvar Miró, Manuel Sánchez Miralles, Álvaro MADRID, junio 2009 Autorizada la entrega del proyecto del alumno/a: Karen Vilá Ubieto LOS DIRECTORES DEL PROYECTO Álvaro Arranz Domingo Fdo.: …………………… Fecha: ……/ ……/ …… Manuel Alvar Miró Fdo.: …………………… Fecha: ……/ ……/ …… Álvaro Sánchez Miralles Fdo.: …………………… Fecha: ……/ ……/ …… Vº Bº del Coordinador de Proyectos Álvaro Sánchez Miralles Fdo.: …………………… Fecha: ……/ ……/ …… Resumen Resumen Uno de los objetivos de la visión artificial es conseguir que un ordenador llegue a analizar una escena real como lo haría una persona. Para conseguir este propósito, es necesario crear un modelo 3D de dicha escena. La reconstrucción tridimensional tiene varias aplicaciones, como la navegación de un robot permitiéndole conocer en qué parte de la escena se encuentra y poder planificar sus movimientos sin necesidad de ayuda humana. También es útil para determinar magnitudes como distancias, superficies o volúmenes, lo cual puede ser aplicable para controles de calidad ya que se pueden verificar los procesos y superficies de los objetos que se estén fabricando. Otra aplicación es la digitalización de museos o monumentos históricos, para crear visitas virtuales a las cuales los usuarios pueden acceder desde Internet. Estas son algunas de las muchas utilidades existentes de la reconstrucción tridimensional y por esta razón surge la necesidad de desarrollar este proyecto. Lo que se pretende con este proyecto es conseguir un algoritmo que, a partir de imágenes, llegue a crear un modelo tridimensional de un objeto. Para conseguir dicho objetivo, en primer lugar se han estudiado las diferentes técnicas desarrolladas para la reconstrucción en 3D para conocer las posibilidades existentes. Algunas de estas técnicas como la telemetría láser o la luz estructurada permiten reproducir modelos muy exactos y precisos, pero con el inconveniente de emplear un equipo costoso. Otras tienen tiempos de ejecución muy altos como la visión estéreo densa y por ello se optó finalmente por una reconstrucción estereoscópica dispersa basada en puntos de interés, al proporcionar una solución robusta y a la vez más rápida que el resto de las técnicas investigadas. A continuación se analizaron los principales detectores de puntos de interés (esquinas y bordes), implantando algunos de ellos como los detectores Harris, KLT, SUSAN y CSS, para la detección de esquinas. i Resumen Los mejores resultados se obtuvieron con el detector de CSS, ya que es el detector que más esquinas del objeto detecta. Para la detección de bordes se estudiaron los detectores de Roberts, Sobel, Canny y LoG entre otros, siendo el Canny el que más bordes reales del objeto obtenía. Todos los detectores implantados se probaron con imágenes reales para realizar una comparación entre ellos, atendiendo a criterios de eficacia y rapidez. Otro tipo de detectores estudiados fueron los que permiten la detección de líneas rectas. El único detector implantado fue el basado en transformada de Hough, el cual se probó en distintas imágenes para comprobar su eficacia en objetos de geometrías rectas y también en objetos redondeados. Por último se investigó sobre la segmentación en imágenes, ya que éste es un paso esencial en todo proceso de reconstrucción. Se estudiaron e implantaron algunas técnicas, para conseguir separar un objeto del fondo de manera óptima, como los contornos activos y k-means. Estas técnicas se compararon y probaron con distintas imágenes. Ilustración 1.Obtención de un punto Q en el espacio. Una vez estudiado e implementado todos los detectores de puntos de interés y algoritmos de segmentación, se llevó a cabo la programación de un algoritmo que permitiera crear un modelo tridimensional. Así, el algoritmo final realiza una primera etapa de segmentación donde separa ii Resumen el objeto del fondo. De esta manera, se reduce la zona de trabajo. Después se procede a ejecutar un detector de esquinas, para identificar los puntos de interés del objeto. Por último se lleva a cabo la etapa de reconstrucción en 3D, realizando una correspondencia de puntos entre las dos imágenes para finalmente obtener sus puntos tridimensionales por un proceso de triangulación. Para comprobar la eficacia del algoritmo se realizaron varias pruebas con varias imágenes tomadas por una cámara estéreo. Los mejores resultados obtenidos con el algoritmo son con imágenes con objetos de geometrías rectas. Al tratarse de una reconstrucción estereoscópica basada en esquinas, los resultados obtenidos con objetos redondos no son los óptimos, puesto que estos objetos apenas contienen esquinas. En la Ilustración 2, se puede ver la reconstrucción de un cubo a partir de una imagen. Ilustración 2. Reconstrucción 3D de un objeto. El presente trabajo demuestra que se puede realizar un algoritmo que reconstruya un objeto en el espacio, dejándose como trabajo futuro su optimización para todo tipo de objetos. Además constituye una importante base para futuros desarrollos, ya que se han estudiado y comparado muchas técnicas para el análisis de imágenes. iii Summary Summary One of the goals of artificial vision is to permit that a computer gets to analyze a real scene, as a person would do. To achieve this purpose it is necessary to create a 3D model of that scene. The three-dimensional reconstruction has several applications, such as robot navigation, allowing it to know in what part of the scene he is located and being able to plan its movements without needing human help. It is also useful for determining quantities such as distances, areas or volumes, which may be applicable for quality controls as it can verify the processes and areas of objects that are being manufactured. Another application is the digitization of historical monuments and museums to create virtual tours, which users can access from the Internet. These are some of the many uses of three-dimensional reconstruction and for this reason there is a need to develop this project. The purpose of this project is to obtain an algorithm that, based on images, creates a three-dimensional model of an object. To achieve this aim, in first place the different techniques developed about 3D reconstruction were studied in order to know the different possibilities. Some of these techniques such as telemetry laser or structured light obtain models which are very accurate and precise, but with the disadvantage of using expensive equipment. Others have very high running times as dense stereo vision and therefore a stereoscopic disperse reconstruction based on interest points was chosen, as it provides a robust and faster solution than the other techniques investigated. Moreover, the main interest point detectors (corners and edges) were analysed, and some were implemented such as detectors Harris, KLT, SUSAN and CSS to detect corners. The best results were obtained with detector CSS since it is the detector that more corners of the object detects. For edge detection, detectors Roberts, Sobel, Canny and LoG were studied among others, being Canny the detector that more real edge of the object obtains. All implanted detectors were tested with real images iv 9 1. Introducción Summary to make a comparison between them, according to efficiency and speed criteria. Another types of detectors studied were detectors for straight-line detectionD isto The implemented was the Hough rsió nonly de lendetector te C orrebased cció n d e on distorsión transform, which was tested on different images to verify its effectiveness Figura 1.9: Ejemplo de rectificación de distorsión de lente. in straight line and rounded objects. Finally segmentation in images was investigated, as this is an essential Reconstrucción 3D step in every reconstruction process. Some of the techniques were studied A partir de las vistas, mediante la técnica de triangulación, es posible and implemented to obtain separation of enthe object Elfrom the obtener un modelo 3D delthe objeto proyectado las vistas. principio background, like active contours and k-means. The different techniques were compared and tested with C 1 different images. C entro óptico 1 C2 C entro óptico 2 Q O bjeto 3D B A V ista 2 V ista 1 FiguraIllustration 1.10: Triangulación: estimación de Q a partir de A y B. 1. Obtaining the point Q in three-dimensions. Having studied and implemented all the points of interest detection and segmentation algorithms, the programming of an algorithm was carried out that allowed to create a three-dimensional model. Therefore, the final algorithm has a first stage, were a segmentation of the image is done, separating the object from the background. In this way, the area of detection is reduced and later on corner detection is performed. The last step is the 3D reconstruction, where a matching between points of the two images is done to finally obtain the tree-dimensional points by a v Summary triangulation process. To verify the efficiency of the algorithm different tests were done with variety of images taken by the stereo camera. The best results obtained with the algorithm are with images with objects of straight geometries. As it a stereo reconstruction based on corners, the results obtained with rounded objects are not son good, as these objects don’t contain so many corners. In Illustration 2, the reconstruction of a cube is shown. Illustration 2. 3D Reconstruction of an object. This work shows that an algorithm can be done to reconstruct an object in three-dimensions, leaving for future developments the optimization for all kinds of objects. In addition it is an important basis for future developments, as many different techniques for image analysis were studied and compared. vi DOCUMENTO Nº 1: MEMORIA Índice Parte I Memoria ...................................................................................... 1 Capítulo 1 Introducción......................................................................... 2 1 Introducción..................................................................................... 2 1 Estudio de los trabajos existentes / tecnologías existentes....... 3 1.1 Técnicas de reconstrucción ................................................................................. 3 1.2 Técnicas multivistas ............................................................................................. 4 1.3 Cámara móvil o visión activa ............................................................................... 5 1.4 Técnicas de Luz Estructurada.............................................................................. 5 1.5 Telemetría Láser .................................................................................................. 6 1.6 Conclusiones........................................................................................................ 6 2 Motivación del proyecto ................................................................. 8 3 Objetivos ........................................................................................ 11 4 Metodología / Solución desarrollada........................................... 12 5 Recursos / herramientas empleadas........................................... 13 Capítulo 2 Reconstrucción por visión estéreo ................................. 14 1 Introducción................................................................................... 14 1.1 Imagen digital..................................................................................................... 14 1.2 Esquema de un sistema de visión artificial ........................................................ 15 2 Modelo de lente Pinhole ............................................................... 16 3 Visión estéreo................................................................................ 19 4 Geometría Proyectiva ................................................................... 21 5 Geometría epipolar........................................................................ 22 6 Correspondencia estéreo ............................................................. 23 7 Triangulación................................................................................. 24 Capítulo 3 Detección de Características ........................................... 26 1 Introducción................................................................................... 26 2 Detección de esquinas ................................................................. 27 2.1 Harris y Stephens............................................................................................... 28 2.2 Kanade-Lucas-Tomasi (KLT) ............................................................................. 30 2.3 Smith (SUSAN) .................................................................................................. 31 ii Índice 2.4 Curvature Scale Space (CSS) ........................................................................... 32 2.5 Comparación detectores de esquinas ............................................................... 34 2.6 Conclusiones...................................................................................................... 43 3 Detección de bordes ..................................................................... 43 3.1 Operador Robert Cross...................................................................................... 45 3.2 Operador Sobel.................................................................................................. 46 3.3 Operador Prewitt ................................................................................................ 46 3.4 Canny................................................................................................................. 46 3.5 LoG .................................................................................................................... 50 3.6 Comparación detectores de bordes ................................................................... 50 3.7 Conclusiones...................................................................................................... 55 4 Líneas rectas ................................................................................. 55 4.1 Transformada de Hough .................................................................................... 55 4.2 Pruebas detector de líneas rectas ..................................................................... 57 4.3 Conclusiones...................................................................................................... 57 Capítulo 4 Segmentación .................................................................... 59 1 Introducción................................................................................... 59 2 Contornos Activos ........................................................................ 59 3 Kmeans .......................................................................................... 61 4 Comparación de algoritmos de segmentación de imágenes.... 62 Capítulo 5 Algoritmo............................................................................ 70 1 Introducción................................................................................... 70 2 Segmentación................................................................................ 70 3 Detección de características........................................................ 71 4 Reconstrucción tridimensional.................................................... 72 4.1 Correspondencia estéreo................................................................................... 72 4.2 Triangulación...................................................................................................... 75 Capítulo 6 Matlab aplicado a visión artificial .................................... 76 1 Operaciones con matrices ........................................................... 76 1.1 Definición de una matriz..................................................................................... 76 1.2 Operadores ........................................................................................................ 77 1.3 Matrices particulares .......................................................................................... 77 1.4 Acceso a elementos de una matriz .................................................................... 77 iii Índice 2 Programación en MATLAB........................................................... 78 2.1 Sentencia if ........................................................................................................ 78 2.2 Sentencia for ...................................................................................................... 79 2.3 Sentencias while, break ..................................................................................... 79 3 Gráficos.......................................................................................... 80 3.1 Plot ..................................................................................................................... 80 3.2 Plot3 ................................................................................................................... 81 4 Funciones más importantes de la “Image Processing Toolbox” 81 4.1 Introducción........................................................................................................ 81 4.2 imread ................................................................................................................ 82 4.3 imwrite................................................................................................................ 82 4.4 imshow ............................................................................................................... 82 4.5 rgb2gray ............................................................................................................. 83 4.6 edge ................................................................................................................... 83 4.7 imresize.............................................................................................................. 83 4.8 conv2.................................................................................................................. 83 4.9 imfilter................................................................................................................. 83 4.10 immultiply ......................................................................................................... 84 Capítulo 7 Resultados ......................................................................... 85 Capítulo 8 Conclusiones ..................................................................... 89 Capítulo 9 Futuros desarrollos........................................................... 91 Bibliografía.............................................................................................. 92 Parte II Manual de usuario .................................................................. 95 Capítulo 1 Detección de características ............................................ 96 1 Detección de esquinas ................................................................. 96 1.1 Detector de Harris .............................................................................................. 96 1.2 Detector de KLT ................................................................................................. 97 1.3 Detector SUSAN ................................................................................................ 97 1.4 Detector CSS ..................................................................................................... 98 2 Detección de bordes ..................................................................... 98 3 Detección de líneas rectas ........................................................... 98 Capítulo 2 Segmentación .................................................................. 100 iv Índice 1 Contornos Activos ...................................................................... 100 2 K-means ....................................................................................... 101 Capítulo 3 Reconstrucción en 3D..................................................... 102 v Índice de figuras FIGURA 1. ROBOT MÓVIL ................................................................................................................................................. 9 FIGURA 2. MAPA EN 3D................................................................................................................................................... 9 FIGURA 3. APLICACIONES EN MEDICINA......................................................................................................................10 FIGURA 4. RECONSTRUCCIÓN DE UN ANFITEATRO ....................................................................................................10 FIGURA 5. CÁMARA BUMBLEBEE 2..............................................................................................................................13 FIGURA 6. IMAGEN FORMADA POR PÍXELES ................................................................................................................14 FIGURA 7.EJEMPLO DE IMAGEN ESTEREOSCÓPICA ....................................................................................................15 FIGURA 8. MODELO DE LA CÁMARA PINHOLE ............................................................................................................16 FIGURA 9. IMAGEN CON Y SIN DISTORSIÓN. ................................................................................................................18 FIGURA 10. MODELO DE DOS CÁMARAS ......................................................................................................................19 FIGURA 11. OBTENCIÓN DE UN PUNTO Q EN EL ESPACIO ........................................................................................20 FIGURA 12. GEOMETRÍA EPIPOLAR..............................................................................................................................23 FIGURA 13.DIFERENCIAS ENTRE UN BORDE Y UNA ESQUINA EN FUNCIÓN DE LA INTENSIDAD ..........................27 FIGURA 14.MÁSCARAS DE CONVOLUCIÓN 3X3..........................................................................................................29 FIGURA 15. DIFERENTES MÁSCARAS CIRCULARES EN DIFERENTES POSICIONES EN LA IMAGEN ........................31 FIGURA 16. DETECCIÓN DE ESQUINAS EN UN CUBO DE RUBIK ................................................................................37 FIGURA 17. DETECCIÓN DE ESQUINAS DE UNA GRAPADORA....................................................................................39 FIGURA 18. DETECCIÓN DE ESQUINAS EN UNA TALADRADORA ...............................................................................40 FIGURA 19. DETECCIÓN DE ESQUINAS EN UN COCHE ................................................................................................42 FIGURA 20. CAMBIOS DE DIRECCIÓN EN LA INTENSIDAD EN FUNCIÓN DEL GRADIENTE .....................................44 FIGURA 21. MÁSCARAS DE CONVOLUCIÓN 2X2 DEL OPERADOR ROBERT CROSS .................................................45 FIGURA 22. MÁSCARAS DE CONVOLUCIÓN 3X3 DEL OPERADOR SOBEL ................................................................46 FIGURA 23. MÁSCARAS DE CONVOLUCIÓN 3X3 DEL OPERADOR PREWITT ...........................................................46 FIGURA 24. EJEMPLO DE IMAGEN DE 5X5 PÍXELES ...................................................................................................48 FIGURA 25. ORIENTACIÓN DEL BORDE SEGÚN LA DIRECCIÓN DEL EJE ...................................................................49 FIGURA 26. MÁSCARAS DE CONVOLUCIÓN DE APROXIMACIÓN DEL LAPLACIANO ................................................50 FIGURA 27. DETECCIÓN DE BORDES EN UN CUBO DE RUBIK CON LOS DISTINTOS DETECTORES DE BORDES ...51 FIGURA 28.DETECCIÓN DE BORDES EN UNA GRAPADORA CON LOS DISTINTOS DETECTORES DE BORDES ........52 FIGURA 29.DETECCIÓN DE BORDES EN UNA TALADRADORA CON LOS DISTINTOS DETECTORES DE BORDES ...53 FIGURA 30.DETECCIÓN DE BORDES EN UN COCHE CON LOS DISTINTOS DETECTORES DE BORDES ....................54 FIGURA 31. REPRESENTACIÓN GRÁFICA DE LA TRANSFORMADA DE HOUGH (A) EN EL ESPACIO CARTESIANO, (B) ESPACIO PARAMÉTRICO ...............................................................................................................................57 FIGURA 32. DETECCIÓN DE LÍNEAS RECTAS EN LOS DISTINTOS OBJETOS ..............................................................58 FIGURA 33.RESULTADOS DE LA SEGMENTACIÓN DE LOS OBJETOS UTILIZANDO CONTORNOS ACTIVOS ............63 FIGURA 34. SEGMENTACIÓN DEL CUBO DE RUBIK UTILIZANDO K‐MEANS CON DISTINTO NÚMERO DE CLUSTERS ...............................................................................................................................................................................65 FIGURA 35. SEGMENTACIÓN DE UNA GRAPADORA UTILIZANDO K‐MEANS CON DISTINTO NÚMERO DE CLUSTERS ..............................................................................................................................................................66 FIGURA 36.SEGMENTACIÓN DE UNA TALADRADORA UTILIZANDO K‐MEANS CON DISTINTO NÚMERO DE CLUSTERS ..............................................................................................................................................................67 vi Índice de figuras FIGURA 37.SEGMENTACIÓN DE UN COCHE UTILIZANDO K‐MEANS CON DISTINTO NÚMERO DE CLUSTERS .......68 FIGURA 38. IMAGEN IZQUIERDA DEL CUBO EN ESCALA DE GRISES ..........................................................................71 FIGURA 39. IMAGEN IZQUIERDA DEL CUBO SEGMENTADO POR CONTORNOS ACTIVOS. .......................................71 FIGURA 40. IMAGEN SEGMENTADA DEL CUBO Y DETECCIÓN DE ESQUINAS. ..........................................................72 FIGURA 41. PUNTOS CORRESPONDIENTES EN LA IMAGEN DERECHA......................................................................73 FIGURA 42. LÍNEAS EPIPOLARES EN LA IMAGEN DERECHA. .....................................................................................74 FIGURA 43. CORRESPONDENCIA ENTRE IMÁGENES CON FACTOR DE CONFIANZA. ...............................................74 FIGURA 44. RECONSTRUCCIÓN 3D DE UN CUBO UTILIZANDO FACTOR DE CONFIANZA .......................................75 FIGURA 45. IMAGEN ESTEREOSCÓPICA DE UN CUBO .................................................................................................85 FIGURA 46. RECONSTRUCCIÓN 3D DEL CUBO ............................................................................................................86 FIGURA 47. RECONSTRUCCIÓN 3D DEL CUBO DESDE OTRA VISTA. ........................................................................86 FIGURA 48. RECONSTRUCCIÓN 3D DE UN CUBO UTILIZANDO FACTOR DE CONFIANZA .......................................87 FIGURA 49.IMAGEN ESTEREOSCÓPICA DE UNA GRAPADORA ...................................................................................88 FIGURA 50. RECONSTRUCCIÓN 3D DE LA GRAPADORA ............................................................................................88 vii Índice de tablas TABLA 1. TABLA COMPARATIVA DE LAS DIFERENTES TÉCNICAS DE RECONSTRUCCIÓN ........................................ 7 TABLA 2. COMPARACIÓN DE LOS DETECTORES DE ESQUINAS ..................................................................................36 TABLA 3. COMPARACIÓN DETECTORES DE ESQUINAS DEL CUBO DE RUBIK ..........................................................38 TABLA 4.COMPARACIÓN DETECTORES DE ESQUINAS EN LA GRAPADORA ..............................................................39 TABLA 5. COMPARACIÓN DE DETECTORES DE ESQUINAS EN UNA TALADRADOR ..................................................41 TABLA 6. TIEMPO DE EJECUCIÓN DE LOS DETECTORES DE ESQUINA EN LA IMAGEN DEL COCHE ........................43 TABLA 7.TIEMPO DE EJECUCIÓN DE LA SEGMENTACIÓN UTILIZANDO CONTORNOS ACTIVOS .............................64 TABLA 8. TIEMPO DE EJECUCIÓN DE LA SEGMENTACIÓN DEL CUBO DE RUBIK CON K‐MEANS ............................65 TABLA 9. TIEMPO DE EJECUCIÓN DE LA SEGMENTACIÓN DE UNA GRAPADORA CON K‐MEANS ...........................66 TABLA 10. TIEMPO DE EJECUCIÓN DE LA SEGMENTACIÓN DE UNA TALADRADORA CON K‐MEANS....................67 TABLA 11.TIEMPO DE EJECUCIÓN DE LA SEGMENTACIÓN DE UN COCHE CON K‐MEANS ......................................69 TABLA 12. COLOR, MARCADORES Y ESTILOS DE LÍNEA PARA LA FUNCIÓN PLOT..................................................81 viii Parte I MEMORIA Memoria. Introducción Capítulo 1 INTRODUCCIÓN 1 Introducción En los últimos años, los algoritmos para la reconstrucción de objetos reales en 3D han recibido atención significativa, no sólo en la visión artificial, sino también como herramientas para una variedad de aplicaciones en medicina, fabricación, robótica, arqueología y otros campos que requieren modelado en tres dimensiones de ambientes reales. Así, el objetivo principal de la reconstrucción 3D es obtener un modelo a partir de una imagen, es decir, imitar la capacidad que tienen los seres humanos de ver un mismo objeto en 3D cuando se le muestra una imagen del objeto en 2D. Este objetivo se concibe como algo necesario para conseguir un lenguaje gráfico de comunicación entre el ordenador y el ser humano. Algunas aplicaciones de la reconstrucción 3D se dan en el área de ingeniería biomédica. La reconstrucción de estructuras anatómicas a partir de imágenes médicas como resonancias magnéticas se ha convertido en una herramienta importante en el diagnostico médico y la planificación de terapias y procedimientos quirúrgicos. Otros tipos de aplicaciones pueden ser la reconstrucción de ciudades, edificios históricos o museos para visitas virtuales permitiendo al usuario la visión del lugar con la sensación de estar allí. La reconstrucción en tres dimensiones también puede ser utilizada en el ámbito industrial, como la creación de modelos CAD en 3D para luego fabricar prototipos. En cambio, el propósito de la reconstrucción en 3D en visión artificial permitirá analizar las características de una imagen, de tal forma que se podrá detectar, localizar y reconocer objetos en imágenes. Por ejemplo, si 2 Memoria. Introducción se recrea un modelo tridimensional de una escena, este modelo podría ser utilizado por un robot para navegar por la escena. 1 Estudio de los trabajos existentes / tecnologías existentes 1.1 Técnicas de reconstrucción Como se ha comentado el objetivo de la visión 3D es recuperar la información de profundidad o tercera dimensión a partir de imágenes. La reconstrucción 3D es el proceso mediante el cual objetos reales son reproducidos en un ordenador, manteniendo sus características físicas (dimensiones, volumen y forma). Existen diversas técnicas de reconstrucción, cuyo objetivo principal es obtener un algoritmo que sea capaz de realizar la conexión del conjunto de puntos representativos del objeto en forma de elementos de superficie. La eficiencia de las técnicas utilizadas define la calidad final de la reconstrucción. Existen distintas propuestas en la literatura del proceso de reconstrucción de objetos 3D que se podrían clasificar en cinco grupos: 1. Técnicas multivistas: permite extraer la información tridimensional mediante la puesta en correspondencia de las informaciones bidimensionales procedentes de dos o más captadores de imagen (ver [1]). 2. Cámara móvil: denominada en alguna bibliografía como técnicas de visión activa, permite extraer la información 3D a partir del flujo de imagen obtenido por un sensor, conocido el flujo de velocidades de la cámara. En este caso donde los parámetros de las cámaras cambian continuamente, y no es posible realizar una calibración clásica (ver [2]). 3. Técnicas de luz estructurada: son técnicas de visión activa en cuanto que modifican las condiciones del entorno. La distorsión producida por la proyección de patrones simples (rayos o planos), 3 Memoria. Introducción generados mediante luz coherente o luz láser, permite la extracción de la información tridimensional (ver [3]). 4. Telemetría láser: permiten determinar el mapa de profundidad de la escena con base al tiempo transcurrido entre la emisión y detección de un pulso láser (ver [4]). 5. Control de parámetros ópticos (Análisis enfoque/ desenfoque): permiten determinar el mapa de profundidad de la escena a partir del nivel de enfoque en cada píxel de la escena (ver [5]). 1.2 Técnicas multivistas El término multivista en visión se utiliza cuando existe más de una vista de una escena. A través de varias imágenes de una escena, tomadas desde distintos puntos de vista, se puede tener la idea de las características tridimensionales de la escena en estudio. Según el número de imágenes que se emplee, se habla de visión bifocal (dos imágenes o vistas), trifocal (tres imágenes o vistas), cuadrifocal (cuatro imágenes o vistas) o n-focal (n imágenes o vistas), y en cada uno de los casos se aplica una serie de restricciones basadas en la geometría. La geometría de dos vistas es conocida también como la geometría epipolar. Dentro de la visión estéreo también existen diferentes tipos de reconstrucción: dispersa y densa, como se comenta en [6]. La reconstrucción dispersa se basa en obtener las coordenadas tridimensionales de ciertas partes de la escena, cuya proyección en las imágenes se conocen como puntos de interés, los cuales pueden ser bordes, esquinas u otro tipo de puntos característicos. Por lo general este tipo de reconstrucción se utiliza en aplicaciones que necesitan conocer el entorno rápidamente y sin mayor detalle, por ejemplo las aplicaciones en tiempo real como la navegación de robots móviles. Por el contrario la reconstrucción densa implica obtener la totalidad de los puntos proyectados de cada objeto de la escena. Principalmente se utiliza para 4 Memoria. Introducción aplicaciones relacionadas con la graficación, realidad virtual y cualquier otra cuyo objetivo sea modelar digitalmente de manera realista una escena del mundo. El principal problema de este proceso es su consumo computacional, ya que mientras la reconstrucción dispersa se centra en puntos concretos, la densa exige una correlación entre todos los puntos de la imagen. El desarrollo de las técnicas de visión estéreo ha sido objeto de un gran esfuerzo de investigación en los últimos años. El objetivo de la visión estéreo es resolver dos problemas (ver [7]): el problema de correspondencia consistente en decidir para un punto del plano de imagen izquierdo, que punto en el plano de imagen derecho es correspondiente (son imágenes del mismo punto físico). El segundo problema es el problema de reconstrucción que trata de obtener, dados dos puntos correspondientes en ambos planos de imagen, las coordenadas 3D del punto en el espacio respecto a un sistema de coordenadas del mundo (ver [8]). 1.3 Cámara móvil o visión activa La visión activa permite la detección de objetos en movimiento y su seguimiento a través de la escena. Mediante sensores las cámaras pueden moverse adecuadamente, de manera que exista una correspondencia entre el mundo real y el virtual. Por lo general, se tratan de sistemas retroalimentados que permiten obtener las imágenes de mayor interés para realizar la reconstrucción. Además, se pueden controlar los parámetros de la cámara como el enfoque o el zoom. Este tipo de sistemas tienen un importante campo de aplicación en la robótica. 1.4 Técnicas de Luz Estructurada Dentro del campo de la visión tridimensional, existen un gran número de técnicas que hoy son empleadas con éxito en numerosas aplicaciones industriales. Entre todas ellas, se encuentra lo que se conoce como la luz estructurada. 5 Memoria. Introducción Este tipo de sistema se caracteriza por ser un método directo y activo. Un método directo se caracteriza por que se pueden obtener conclusiones estudiando los datos obtenidos directamente de las imágenes como comenta [9]. Además, se trata de un sistema activo debido a que es necesaria una fuente generadora de luz estructurada, por lo que introduce un tipo de energía al entorno donde se realiza el estudio. Los sistemas de luz estructurada se basan en estudiar la deformación que sufre un patrón de luz al ser intersecado por cualquier objeto. Este es el problema principal de este tipo de herramientas, ya que se necesita un tipo de luz concentrada en un punto. No valdría como sistema de iluminación, cualquiera de los sistemas normales que se emplean actualmente, como bombillas o fluorescentes ya que, están compuestos por ondas de diferentes frecuencias provocando que el haz se difumine por todo el entorno. Una de las mejores soluciones es emplear un haz láser, ya que se comporta en una luz ideal para este tipo de sistemas. Además del patrón de luz, es necesario tener una cámara que recoja todas las imágenes de la deformación del plano láser. 1.5 Telemetría Láser La telemetría láser consiste en medir el tiempo de recorrido de un rayo luminoso (láser) hasta la superficie de medida. Se puede medir de dos formas: con la medida del tiempo de vuelo y el cálculo por diferencia de fase. En el primer caso los datos se obtienen midiendo el tiempo entre la emisión del impulso luminoso y la observación del retorno. En el segundo se regula el impulso luminoso siguiendo una frecuencia determinada y se mide el desfase entre el rayo emitido y la luz retornada. 1.6 Conclusiones Las diferentes técnicas de reconstrucción existentes presentan varias ventajas e inconvenientes y por lo tanto dependiendo del fin de la reconstrucción unas serán más apropiadas que otras. La Tabla 1 muestra una comparación de las distintas técnicas de reconstrucción. Las técnicas 6 Memoria. Introducción de telemetría láser y luz estructurada consiguen construcciones con una gran exactitud y precisión, pero también presentan varias desventajas como el alto coste del equipo. Además de que este tipo de técnicas son especialmente dependientes en la geometría del objeto y necesitan ambientes muy controlados. Por el contrario, la visión estereoscópica que se basa en la triangulación entre un punto de la escena y al menos dos proyecciones de este punto sobre imágenes tomadas desde distintas perspectivas, es una de las técnicas más utilizadas para la reconstrucción tridimensional, por su robustez y su menor costo computacional y económico. Método Ventajas Telemetría láser Luz estructurada Visión estéreo dispersa Visión estéreo densa • • Exactitud Precisión • • • Robusto Rápido Coste reducido • Reconstrucción detallada Sensible a ambigüedades • Visión estéreo con n-vistas • Menor error Inconvenientes • • • • • • Equipo caro Dependiente de la geometría del objeto Ambientes controlados Menor exactitud Problemas con ciertas texturas Sensible a ambigüedades • Computacionalmente caro • • Geometría compleja Coste mayor Tabla 1. Tabla comparativa de las diferentes técnicas de reconstrucción Dentro de la visión estereoscópica, la reconstrucción dispersa permite reducir aún más el consumo computacional. Este tipo de reconstrucción limita la región de estudio alrededor de posibles características de una imagen como bordes o esquinas mientras que la reconstrucción densa implica una comparación de todos los puntos de las imágenes. Otra manera de mejorar la precisión y eliminar ambigüedad en el proceso de correspondencia estereoscópica es el uso de más de dos cámaras, sin 7 Memoria. Introducción embargo esto implica una mayor complejidad geométrica y el coste de al menos una cámara más. 2 Motivación del proyecto La visión artificial constituye uno de los temas de investigación que posee en la actualidad un espectro más amplio de posibles aplicaciones industriales, y que en un futuro inmediato adquirirá todavía una mayor relevancia. Muestra de ello son los múltiples esfuerzos que se dedican al tema además del interés que muestra la industria en estas aplicaciones. En la actualidad, el desarrollo de nuevas técnicas de procesamiento de imágenes, así como la evolución de los equipos informáticos, permite incluir la tercera dimensión como un objetivo real. La estimación de las coordenadas tridimensionales de un objeto en una escena es útil en muchas aplicaciones: • Control de calidad: En el control de calidad industrial se han hecho muy útiles las tecnologías tridimensionales, ya que pueden verificar los procesos y las superficies de los objetos que se estén fabricando. • Robots móviles: En el guiado de un robot móvil como en el de la Figura 1 se pueden aprovechar las reconstrucciones en 3D y así poder detectar, localizar y reconocer objetos para facilitar la navegación por la escena. 8 Memoria. Introducción Figura 1. Robot móvil • Cartografía y topografía: Para la elaboración de mapas tridimensionales como en el de la Figura 2 e imágenes 3D de un terreno. Figura 2. Mapa en 3D 9 Memoria. Introducción • Medicina: Ahora es muy común que los ordenadores y los robots estén ayudando a los médicos con operaciones que antes no podían llevarse a cabo. Además de para las operaciones, también se pueden utilizar para el estudio de enfermedades y detección de tumores. Figura 3. Aplicaciones en medicina • Modelado en 3D: En la creación de maquetas o reconstrucción de visitas virtuales en ciudades como en el de la Figura 4, museos… Figura 4. Reconstrucción de un anfiteatro En la reconstrucción en tres dimensiones se emplean diferentes métodos algunos de ellos ya mencionados anteriormente y por lo tanto lo que se pretende en este proyecto es emplear aquellas técnicas que mejor se 10 Memoria. Introducción adecuen tanto en efectividad y en velocidad en la reconstrucción de objetos. El aspecto de la velocidad es importante, ya que en casi todas las aplicaciones industriales se requiere que los sistemas funcionen en tiempo real, por ello se utiliza una técnica de reconstrucción basada en puntos de interés que permite un menor tiempo de procesado. Otro aspecto a tener en cuenta es el coste del equipo. Mientras que las técnicas de luz estructurada y telemetría láser desarrollan reconstrucciones más precisas y exactas, el coste de los equipos necesarios es más elevado. Por tanto, la reconstrucción por visión estéreo permite una solución robusta y rápida con un coste reducido. 3 Objetivos El proyecto consiste en la reconstrucción de objetos basándose en el análisis de imágenes adquiridas desde un par de cámaras dispuestas en forma paralela (cámaras estéreo). Las cámaras utilizadas estarán calibradas permitiendo obtener dos imágenes relacionadas entre sí. A partir de ese par de imágenes se deberá generar una malla en tres dimensiones, formada por puntos en tres dimensiones y rectas que unan los puntos. Por tanto los objetivos del proyecto son: • Análisis de imágenes. o Implantación y comparación de varios algoritmos de detección de esquinas. o Implantación y comparación de varios algoritmos de detección de bordes. o Implantación y comparación de varios algoritmos de detección de zonas de interés y/o segmentación. • Reconstrucción en 3D de varios objetos sencillos (con aristas rectas) a través de imágenes, utilizando los algoritmos de detección anteriormente implantados. 11 Memoria. Introducción 4 Metodología / Solución desarrollada Para llevar a cabo la reconstrucción, se realizarán las siguientes tareas: • Obtención de imágenes: Se capturarán imágenes con la cámara estéreo de diferentes objetos. Dichos objetos tendrán geometrías de creciente dificultad. • Detección de esquinas: Se buscarán varios algoritmos que sean capaces de detectar las esquinas de las imágenes escogidas. Además de la implantación de algunos de ellos en Matlab. Una vez implantados se llevará a cabo un análisis comparativo teniendo en cuenta la calidad de los puntos detectados y el tiempo de ejecución. La detección de esquinas se aborda en la sección de Detección de esquinas dentro del Capítulo 3, donde se explican los distintos algoritmos y se muestran las imágenes de prueba. • Detección de bordes o aristas: Se investigarán los posibles algoritmos capaces de detectar los bordes de las imágenes escogidas. Además de la implantación de algunos de ellos en Matlab. Se realizará una comparación de los distintos algoritmos atendiendo a criterios de calidad y tiempo de procesado. Este tipo de detección se explica en la sección Detección de Características en el Capítulo 3. • Detección de puntos de interés: Se analizará el estado del arte en este campo y se procederá a implantar los algoritmos más importantes. A continuación se hará una comparativa de los distintos algoritmos. Entre las zonas de interés se estudia la detección de líneas rectas en la sección Líneas rectas en el Capítulo 3. Por el contrario la segmentación de imágenes se explica en un capítulo aparte, Capítulo 4. Por último, se realizará una reconstrucción en tres dimensiones de los objetos utilizando los algoritmos encontrados que mejores resultados obtengan. El algoritmo final se trata en el Capítulo 5. 12 Memoria. Introducción 5 Recursos / herramientas empleadas El objetivo principal del proyecto es realizar un programa capaz de crear una maya en tres dimensiones con la geometría de un objeto obtenido con imágenes desde una cámara estéreo. Para conseguir esto se utilizará el programa Matlab especialmente la librería de Image Processing. También se empleará Simulink con la librería Video and Image Processing. La adquisición de las imágenes a reconstruir se realizará con una cámara estéreo, estando las dos cámaras en paralelo y con una resolución de 1024x768 píxeles. La cámara estéreo empleada fue el modelo Bumblebee2 como se muestra en la Figura 5. Figura 5. Cámara Bumblebee 2 13 Memoria. Reconstrucción por visión estéreo Capítulo 2 RECONSTRUCCIÓN POR VISIÓN ESTÉREO 1 Introducción 1.1 Imagen digital Una imagen digital está compuesta por una matriz de elementos rectangulares, denominados píxel y por lo tanto cada imagen digital está compuesta de una matriz de píxeles (M x N) como muestra la Figura 6. Figura 6. Imagen formada por píxeles En imágenes en escala de grises se tienen todos los tonos de grises entre blanco y negro, y por lo general se utilizan 256 tonos de escala de grises para definir la imagen (8 bits), siendo el negro puro el 0 y el blanco el 255. En el caso del color existen varios modelos para representarlo digitalmente. Los más utilizados en imagen digital son el modelo aditivo (RGB = Red, Green, Blue) y el substractivo (CMYK = Cian, Magenta, Yellow, Black). El modelo RGB forma todos los colores del espectro 14 Memoria. Reconstrucción por visión estéreo visibles mediante la mezcla de los tres colores básicos, rojo, verde y azul, en distinta intensidad y proporción, por esta razón se denominan colores aditivos. Por tanto, cada píxel en una imagen RGB está representado por un conjunto de tres componentes. 1.2 Esquema de un sistema de visión artificial El esquema básico de un sistema de visión artificial es una cámara que captura imágenes del mundo real, conectada a un ordenador que hará los cálculos necesarios, mostrando al usuario el resultado mediante una pantalla. El proceso de análisis de la imagen consta de varias etapas: adquisición de la imagen, preprocesamiento, segmentación, extracción de características, interpretación o clasificación. • Adquisición de la imagen: se obtiene la imagen adecuada del objeto en estudio (ver Figura 7). Figura 7.Ejemplo de imagen estereoscópica • Preprocesamiento: con el fin de mejorar la calidad de la imagen obtenida se emplean ciertos filtros digitales que eliminan el ruido en la imagen. • Segmentación: se identifican el objeto u objetos a estudiar. • Extracción de características: se detectan los atributos de interés del objeto a estudiar. • Interpretación: por último se lleva cabo una interpretación del objeto que en el caso de este proyecto se trataría de la propia reconstrucción tridimensional del mismo. 15 Memoria. Reconstrucción por visión estéreo 2 Modelo de lente Pinhole Matemáticamente, una cámara puede modelarse como una función de transformación que convierte puntos 3D a 2D. El modelo Pinhole suele ser el habitual para modelar cámaras digitales y se muestra en Figura 8. Un punto M en 3D se proyecta en el plano de la imagen a través del centro óptico C. El centro óptico se encuentra a una distancia del plano de la imagen denominada distancia focal f. El eje óptico de la Figura 8 es la recta que pasa por el centro óptico C y es perpendicular al plano de la imagen. Por lo general, el centro óptico suele estar entre el objeto y el plano de la imagen, sin embargo en algunas ocasiones puede estar detrás del plano de la imagen. Figura 8. Modelo de la cámara Pinhole La línea que une dos centros ópticos se llama línea base. Un punto 3D M es proyectado en el plano de imagen como m. Este punto m es la intersección de la recta formada por los puntos C y M con el plano de la imagen. Si M= (X,Y,Z)T y m=(x,y)T se puede obtener una relación: 16 Memoria. Reconstrucción por visión estéreo "x X 'nx* ' f $$ f = Z ) , ) & )ny, = ) 0 # $y =Y )( n ,+ )( 0 $% f Z 0 f 0 'X * 0 0* ) , , Y 0 0, - ) , )Z , 1 0,+ ) , (1+ Ecuación 1 ! f donde la matriz 0 0 0 0 0 0 se llama matriz de perspectiva. 1 0 0 f 0 Otro aspecto a tener en cuenta es que, normalmente, los puntos de una escena € se representan en el sistema de coordenadas del mundo y no en el de la cámara. Por lo tanto es necesario hacer una transformación que convierta coordenadas del mundo en coordenadas de la cámara (las coordenadas de la cámara son las referidas a un sistema de referencia con centro en el centro óptico de dicha cámara). Esta transformación, se trata de una rotación y una traslación que se representa mediante una matriz llamada matriz de parámetros extrínsecos: X r11 r12 Y = r21 r22 Z r31 r32 1 0 0 r13 r23 r33 0 t x X' t y Y' ⋅ t z Z' 1 1 Ecuación 2 siendo (X,Y,Z)€T las coordenadas de la cámara y (X,’Y’,Z’)T las coordenadas del mundo. La relación entre las coordenadas de la cámara (X,Y,Z)T y las centrales de la imagen (x,y) viene definido como: nx f ny = 0 n 0 X 0 0 0 Y f 0 0 ⋅ Z 0 1 0 1 Ecuación 3 € 17 Memoria. Reconstrucción por visión estéreo Por último, se debe mencionar la distorsión geométrica causada por las imperfecciones en la fabricación y montaje de las lentes de la cámara, su efecto es el mostrado en la Figura 9 . Esta distorsión se debe de tener en cuenta porque afecta a los puntos del plano de la imagen: x d = x + Dx (x, y) y d = y + Dy (x, y) Ecuación 4 € obtiene la imagen real a partir de la imagen ideal. La función de distorsión Figura 9. Imagen con y sin distorsión. Para obtener las coordenadas laterales de la imagen en necesaria la matriz K, llamada matriz de calibración de la cámara. x f = K x x d + Cx y f = K y y d + Cy Ecuación 5 € M=(X,’Y’,Z’)T es proyectado en la imagen como En conclusión, un punto m=(xf,yf)T de tal manera que el modelo final que relaciona ambas coordenadas sin distorsión es la Ecuación 6. 18 Memoria. Reconstrucción por visión estéreo nx f K x f ny f = 0 n 0 0 Ky f 0 Cx Cy 1 r11 r12 0 r r 0 ⋅ 21 22 r r 0 31 32 0 0 r13 r23 r33 0 t x X' t y Y' ⋅ t z Z' 1 1 Ecuación 6 € los parámetros de la matriz de la izquierda de la Ecuación 6 Siendo K x f 0 0 € 0 Cx Ky f 0 Cy 1 r11 r12 r21 r22 derecha r31 r32 0 0 0 0 los parámetros extrínsecos y los de la matriz de la 0 r13 r23 r33 0 tx ty los parámetros intrínsecos. La multiplicación de tz 1 ambas, resulta en la denominada matriz de proyección. € 3 Visión estéreo Se conoce como visión estéreo al empleo de dos o más cámaras para recuperar la información de profundidad de un objeto. Por lo general se suele emplear un modelo de dos cámaras como el mostrado en Figura 10. Figura 10. Modelo de dos cámaras Se define como centro óptico al punto situado a una distancia igual a la distancia focal del plano de la imagen y que permite proyectar la información 3D en el plano de la imagen. La idea general es que sabiendo que los puntos A y B de la Figura 11 son proyecciones de un mismo punto tridimensional Q y conociendo los centros ópticos de la proyección C1 y 19 Figura 1.9: Ejemplo de rectificación de distorsión de lente. Memoria. Reconstrucción por visión estéreo Reconstrucción 3D C2, se puede encontrar el punto Q a partir de la intersección entre las dos A partir de las vistas, mediante la técnica de triangulación, es posible rectas <Cobtener 1 , A> yun <Cmodelo 2 , B>.3D del objeto proyectado en las vistas. El principio C entro óptico 1 C1 C2 C entro óptico 2 Q O bjeto 3D B A V ista 2 V ista 1 Figura Figura 1.10: Triangulación: de A y B. 11. Obtención estimación de un puntode QQ enaelpartir espacio La visión estereoscópica consta de las siguientes etapas: • Establecimiento de correspondencias: empareja en las diferentes imágenes aquellos puntos 2D procedentes de un punto 3D común. • Calibración de las cámaras: una cámara se calibra mediante la determinación de los parámetros intrínsecos y extrínsecos. Los parámetros intrínsecos son aquellos que permiten describir la geometría y óptica del conjunto cámara y tarjeta de adquisición de imágenes. Mientras que los parámetros extrínsecos son los que describen la orientación y posición de la cámara, respecto a un sistema de coordenadas conocido que se suele denominar sistema de coordenadas mundo • Reconstrucción: determina por triangulación la profundidad de los puntos del objeto en escena, recuperando la tercera dimensión perdida durante el proceso de adquisición de la imagen. 20 Memoria. Reconstrucción por visión estéreo 4 Geometría Proyectiva Existen dos tipos diferentes de geometrías principales que se utilizan para la reconstrucción, la Proyectiva y la Euclidiana. La Geometría Euclidiana es un subconjunto de lo que se conoce como Geometría Proyectiva. La geometría Proyectiva modela adecuadamente el proceso de la proyección de imagen de una cámara fotográfica porque permite a parte de traslaciones y rotaciones, transformaciones en las proyecciones de la perspectiva. Si se supone un punto (x1,x2) en el plano Euclidiano, para representar ese mismo punto en el plano Proyectivo hay que añadir una tercera coordenada con un 1 al final (x1,x2,1). El punto (x1,x2,1) será el mismo punto que (nx1,nx2,n), siendo n el llamado parámetro proyectivo y por lo tanto se podría definir el punto como (nx1,nx2,nx3), Si una recta en el plano Euclidiano se define como ax1 + bx 2 + c = 0 Ecuación 7. Recta en el plano Euclidiano € se obtendría en el plano proyectivo ax1 + bx 2 + cx 3 = 0 Ecuación 8. Recta en el plano proyectivo donde € lT ⋅ x = x T ⋅ l = 0 Ecuación 9 € siendo una recta l = [a,b,c]T y un punto x = [x1, x 2 , x 3 ]T perteneciente a esa recta, de tal forma que existe una dualidad entre puntos y rectas, es decir, los puntos y rectas tienen la misma representación en el plano proyectivo. € € 21 Memoria. Reconstrucción por visión estéreo Para que un punto pertenezca a una recta en el plano proyectivo debe satisfacer la Ecuación 9. Por tanto se pueden transformar rectas en puntos y puntos en rectas donde: l = Fx Ecuación 10 Además, dadas dos rectas € l = [a,b,c]T y l'= [a',b',c']T si se desea saber el punto de intersección entre ambas se calcula como: € €m = l × l' Ecuación 11 La recta que pasa por dos € puntos x1, x2 queda definida por: l = x1 × x 2 Ecuación 12 € Para transformar un punto en el plano proyectivo de nuevo al plano Euclidiano solo es necesario dividir por la tercera coordenada. 5 Geometría epipolar La geometría de dos vistas es conocida como la Geometría Epipolar. Un punto M en el espacio es representado en dos imágenes como dos puntos proyectados m1y m2. Los centro ópticos de cada imagen C1 y C2 respectivamente como se presenta en la Figura 12(a). A partir de uno de los puntos proyectados en las imágenes no se puede determinar M, sin embargo se puede saber que el punto M debe estar en la recta que va desde el centro óptico C1 hasta m1, como se ve en la Figura 12(b). Para determinar el punto m2, se proyectan los posibles puntos de la recta entre C1 y m1 (ver Figura 12(c)). Uno de los puntos proyectados será m2, sin embargo no se puede saber exactamente la ubicación, solo que m2 pertenece a la proyección de la recta formada por C1 y m1. La proyección de esta recta en la imagen se denomina recta epipolar y se puede observar en la Figura 12(d). 22 espacio 3D en un plano de imagen 2D por medio de un centro óptico. Los centros ópticos en este caso son C1 y C2 . A partir de m1 solamente no se puede saber exactamente la ubicación exacta de M , ya que en el proceso Memoria. Reconstrucción porlavisión estéreo de proyección se ha perdido información de profundidad. Sin embargo, se 1 gen Ima Imag en 2 1 gen Ima Imag (a) en 2 (b) línea epipolar gen Ima 1 Imag en 2 1 gen Ima (c) Imag en 2 (d) Figura Figura4.1: 12.Geometrı́a Geometríaepipolar. epipolar A pesar de que no se pueda conocer el punto m2, es de gran utilidad saber que el punto correspondiente a m1 en la segunda imagen está sobre una línea y no en cualquier zona de la imagen. 6 Correspondencia estéreo Se trata de encontrar el punto de la imagen izquierda en la imagen derecha. La matriz fundamental F permite hallar la recta epipolar en una imagen conocido un punto en la otra imagen. Esta matriz es constante para una geometría bifocal dada, no depende ni de m1 y m2 ni M. Por tanto conocido un punto en la imagen izquierda se obtiene la recta epipolar en la imagen derecha, de tal forma que se reduce significativamente la zona de búsqueda del punto en la imagen derecha. Sin embargo aún hay que realizar una búsqueda por la línea epipolar. Existen varios métodos para obtener la correspondencia que se pueden dividir en locales y globales. Los métodos globales aplican restricciones a la imagen entera. Por lo general, estos métodos suelen ser robustos. Además se obtienen buenos resultados, pero son computacionalmente costosos. 23 Memoria. Reconstrucción por visión estéreo En cambio, los métodos locales emplean restricciones en los puntos alrededor del que se desea evaluar. La desventaja de utilizar métodos locales es que generalmente obtienen falsas correspondencias sobretodo en zonas donde las intensidades del punto son muy parecidas o cuando puntos en la imagen izquierda no aparecen en la imagen derecha o viceversa. Por el contrario estos métodos son fáciles de implantar y más rápidos que los globales. Dentro de los locales existen los basados en características y los basados en áreas. El método basado en área es el que se empleó para la reconstrucción. Este método utiliza la medida de correlación para evaluar la similitud entre un punto en la imagen izquierda y el posible correspondiente en la derecha. Para ello se recorre la recta epipolar en la imagen derecha y se calcula la correlación en función de los valores de intensidad de un vecindario del punto utilizando la suma normalizada de diferencias al cuadrado. Al realizar la búsqueda en la línea epipolar, puede ocurrir que existan varios puntos en la zona de la imagen de la derecha que se parezcan a los de la zona de la imagen de la izquierda. Si se define un factor que mida la similitud entre zonas, denominado factor de confianza, si hay varias zonas que se parecen, el factor de confianza será cero. Esto es equivalente a que la función de correlación a lo largo de la recta tiene varios mínimos locales que son comparables. Para obtener mejores resultados, una vez que se determina el punto de la recta, se hace una búsqueda local del máximo en un cuadrado centrado en el punto. Si todos los puntos de la zona de búsqueda tienen un valor de correlación parecido, se tratará de una zona sin texturas, con lo cual el factor de confianza será pequeño. El factor de confianza permite determinar como de parecidos son los dos puntos hallados. 7 Triangulación Por último, obtenidos los dos puntos en las dos imágenes se lleva a cabo el proceso de triangulación. La triangulación es el proceso de encontrar un punto tridimensional M a través de sus proyecciones m1 y m2. Para 24 Memoria. Reconstrucción por visión estéreo ello, se debe encontrar el punto de corte de las rectas formadas por los puntos m1 y m2 , y sus respectivos centros ópticos. Dicho punto de corte será el punto tridimensional M. Generalmente, las rectas se cruzan en el espacio y por lo tanto no existe solución exacta. Para ello, se empleará la técnica de los mínimos cuadrados para obtener un punto de corte aproximado. 25 Memoria. Detección de Características Capítulo 3 DETECCIÓN DE CARACTERÍSTICAS 1 Introducción En procesamiento de imágenes, el concepto de detección de características se refiere a la obtención de información de la imagen. Las características resultantes serán subconjuntos del dominio de la imagen, a menudo bajo la forma de puntos aislados, curvas continuas o regiones conectadas. Aunque no existe una definición exacta de qué constituye una característica, se puede definir, como una parte interesante de una imagen (interest point). Se suelen usar como punto de partida para muchos algoritmos de visión por ordenador. Debido a que el algoritmo se basa en dichas características, el algoritmo será tan bueno como sea su detector. Otra cosa a tener en cuenta, es que un buen detector de característica debe detectarla misma característica en dos o más imágenes diferentes de la misma escena, es decir, una de las propiedades que debe tener un detector de características es la repetibilidad o repetición. Otras propiedades que debe tener un detector de característica es exactitud (ya que debe detectar la característica en el píxel correcto) y estabilidad (debe detectar la característica después de que la imagen haya sufrido algún tipo de transformación geométrica como rotación o cambio de escala). Existen varios detectores de características ya desarrollados, que varían en el tipo de característica a detectar, la complejidad computacional y la repetibilidad. Estos detectores se pueden dividir en varios grupos siendo los más importantes los detectores de esquinas, de bordes y de líneas rectas. 26 Memoria. Detección de Características 2 Detección de esquinas Las esquinas en imágenes representan información útil y son muy importantes para describir objetos para su reconocimiento e identificación. Una esquina puede ser definida como la intersección de dos bordes. Una esquina también puede ser definida como un punto en el que hay dos bordes con direcciones distintas y dominantes en la zona cercana al punto. Otra forma de definir una esquina es como una zona donde las variaciones de intensidad en las direcciones x e y son grandes o dicho de otra manera una región donde la intensidad varía en ambas direcciones. Por el contrario, en un borde la intensidad sólo varía en una dirección como se ve en la Figura 13. Zona lisa: cambios en no hay Borde: sólo hay cambio Esquina: ninguna de intensidad en una sola intensidad dirección direcciones dirección cambio en de ambas Figura 13.Diferencias entre un borde y una esquina en función de la intensidad Un detector de esquinas requiere que se cumplan determinados requisitos. En primer lugar, todas las esquinas verdaderas deben ser detectadas y ninguna esquina falsa. En segundo lugar, las esquinas detectadas tienen que estar correctamente localizadas. Además el detector debe tener repetibilidad (estabilidad), ser robusto ante ruido y ser computacionalmente eficiente. Para la detección de esquinas en imágenes existen numerosos detectores, de los cuales aquí se van a tratar sólo algunos: Harris y Stephens, Kanade-Lucas-Tomasi (KLT), SUSAN y CSS. 27 Memoria. Detección de Características 2.1 Harris y Stephens Este algoritmo propuesto por Harris y Stephens como se puede ver en [10] es uno de los más usados, y se basa en la idea de Moravec en [11] de que una esquina está caracterizada por elevados cambios de intensidad. El algoritmo de Moravec, fue uno de los primeros algoritmos de detección de esquinas. Éste comprueba cada píxel en la imagen para ver si es una esquina, teniendo en cuenta cómo de parecida es una ventana centrada en el píxel con otras ventanas superpuestas centradas en píxeles cercanos. La similitud se mide tomando la suma de las diferencias al cuadrado (SSD) entre las dos ventanas. Un número menor indica más similitud. Si el píxel se encuentra en una región de intensidad uniforme entonces las ventanas cercanas serán similares. Si el píxel está en un borde entonces ventanas cercanas en una dirección perpendicular al borde serán muy diferentes. El detector de Harris es uno de los detectores de esquinas más populares debido a su invariancia a los cambios en rotación, escala, iluminación y ruido. El método de Harris se basa en el cálculo de la matriz de correlación estimada por las derivadas de primer orden para cada píxel, definida por la matriz C de la Ecuación 13: ∂I 2 ∂x C = ∂I ∂ I ∂x ∂ y ∂I ∂I ∂x ∂y ∂I 2 ∂y Ecuación 13. Matriz de Correlación € siendo I(x,y) la intensidad en nivel de grises . 28 Memoria. Detección de Características Para calcular los gradientes se utilizan máscaras de convolución 3x3, siendo estas máscaras las de la Figura 14. Figura 14.Máscaras de convolución 3x3 En este detector la matriz C por lo general es suavizada con un filtro gausiano wG (σ ) con desviación típica σ , ya fijado. Si se analizan los autovalores de la matriz, se puede determinar si el € punto es una esquina, un borde o ninguno de los dos. Al ser la matriz C € simétrica y semidefinida positiva, sus dos autovalores son positivos. Si en un determinado punto los dos autovalores de la matriz C son grandes, esto implica que cualquier cambio en cualquier dirección implica un importante cambio de intensidad, y por lo tanto el punto será una esquina. Si por el contrario, sólo uno de los autovalores es grande y el otro pequeño, el punto será un borde. Por último si ambos autovalores son pequeños, entonces el punto estará en una zona plana. Se define el parámetro de detección de Harris como: R = det C − k(trazaC) 2 Ecuación 14. Parámetro de Harris € donde k es un parámetro de sensibilidad ajustable que se establece a 0,04 (sugerido por Harris). El cálculo de este parámetro hace que no sea necesario calcular los autovalores explícitamente ya que es computacionalmente costoso. Para ello es necesario determinar un límite de R, de tal forma que el punto será 29 Memoria. Detección de Características una esquina si el parámetro de detección de Harris es mayor que el límite establecido. En este método, el único parámetro que hay que considerar es el límite de R. 2.2 Kanade-Lucas-Tomasi (KLT) El detector de esquinas Kanade-Lucas-Tomasi(KLT) expuesto en [12] y [13] fue propuesto varios años después que el detector de Harris. Este detector también se basa en cálculo de la matriz C, como el detector de Harris. Sin embargo en este caso sí se calculan explícitamente los autovalores. Existen dos parámetros, el límite del autovalor λ2 y el tamaño D de la ventana DxD. El algoritmo se puede describir de tal forma que para cada punto p de la imagen se calcula los autovalores de la matriz C, € considerando sólo el autovalor λ2 . A continuación se busca el menor autovalor λ2 en el vecindario D del punto p, en el caso que dicho autovalor λ2 sea mayor que el límite establecido, el punto p se pone en € una lista L de posibles esquinas. € Para evitar solapes, la lista L se pone en orden decreciente, de tal forma € que para cada punto p de la lista, los puntos que estén dentro del vecindario DxD y tengan menor autovalor son eliminados. El detector KLT detecta una lista de puntos que cumplen que λ2 es mayor al límite y además que el vecindario DxD de estos puntos no se solapan. El límite de λ2 se puede estimar con un histograma € de λ2 , mientras que el tamaño del vecindario D suele estar entre 2 y 10. Uno€de los problemas que pueden surgir es € que si se toman valores muy grandes de D, las esquinas detectadas pueden moverse de la posición real. 30 Memoria. Detección de Características 2.3 Smith (SUSAN) Smith desarrolló un detector de esquinas en [14] basado en una idea muy simple y completamente distinta al resto de los algoritmos ya existentes, sin usar ninguna derivada. SUSAN(Smallest Univalue Segment Assimilating Nucleus) detecta esquinas y bordes y además es más resistente al ruido a pesar de que no se requiere ningún filtrado. Cada píxel en la imagen es utilizado como el centro de una máscara circular (normalmente se utiliza una máscara de 37 pixeles utilizando una ventana cuadrada de 5x5 con 3 pixeles a cada lado). Los valores de la escala de grises de la máscara circular son comparados con el del píxel central, denominado núcleo. Todos los píxeles con intensidad similar al núcleo son considerados como parte de la misma estructura en la imagen como se puede ver en la Figura 15. Figura 15. Diferentes máscaras circulares en diferentes posiciones en la imagen Smith denomina a la parte oscura de la máscara the Univalue Segment Assimilating Nucleus(USAN) como se puede observar en la Figura 15. El USAN correspondiente a una esquina, es aquel cuya área USAN es menor que la mitad del área total de la máscara (caso (a) en la Figura 15). 31 Memoria. Detección de Características La intensidad del núcleo de la máscara es comparada con la intensidad del resto de los otros píxeles que forman la máscara mediante la siguiente función: c(r,r0 ) = 100e I ( r)−I (r0 ) 6 − t Ecuación 15. Comparación de las intensidades € donde r0 es la posición del núcleo, r la posición de cualquiera de los otros puntos de la máscara, I(r) es la intensidad de cualquier píxel y t es el € umbral de intensidad (brightness difference threshold). Esta comparación se realiza con todos los pixeles de la máscara circular, siendo el total la Ecuación 16. n = ∑ c(r,r0 ) r Ecuación 16. Un píxel se considera € esquina si su área USAN, n, es menor que la mitad del área USAN máxima posible (esta área es 3700). Finalmente, se crea una matriz/imagen intermedia, si n es mayor que el umbral geométrico g, entonces se pone un 0 en la imagen intermedia y sino el valor de n. Por último se busca el máximo local de la matriz intermedia en una ventana 5x5, siendo declaradas esquinas los pixeles que sean máximos locales. Para evitar esquinas falsas se calcula el centroide de los USAN, calculando la distancia del centro de gravedad al núcleo. Por lo general, una esquina verdadera tendrá un centro de gravedad lejano al núcleo. 2.4 Curvature Scale Space (CSS) Inicialmente el algoritmo CSS fue propuesto por Mokhtarian and Suomela en [15] y [16], donde propusieron que las esquinas fueran localizadas en multi-escala, mientras que su detección seguía siendo en una escala. 32 Memoria. Detección de Características Este algoritmo tenía dos problemas: el primero era que si el parámetro σ (desviación típica de la función gausiana, utilizada para calcular las derivadas) era muy grande no detectaba esquinas verdaderas y el € segundo era que si era muy pequeño detectaba esquinas falsas. También existía el problema del umbral t, ya que éste era muy sensible. El algoritmo utilizado fue un detector basado en el detector de esquinas CSS, que en vez de utilizar un umbral global emplea un umbral adaptativo local (adaptive local curvature threshold) desarrollado en [17]. El CSS original aplica un detector de bordes y extrae los contornos de los bordes, uniendo los huecos entre los contornos y buscando las uniones en T. Después de extraer los bordes, se calcula la curvatura a una escala alta, para cada contorno, siendo la definición de curvatura: κ (u,σ ) = X˙ (u,σ )Y˙˙(u,σ ) − X˙˙ (u,σ )Y˙ (u,σ ) 1,5 ( X˙ (u,σ )2 − Y˙ (u,σ )2 ) Ecuación 17.Cálculo de la curvatura €σ ) = x(u) ⊗ g˙ (u,σ ) , Y˙ (u,σ ) = y(u) ⊗ g˙ (u,σ ) , Donde X˙ (u, X˙˙ (u,σ ) = x(u) ⊗ g˙˙(u,σ ) , Y˙˙(u,σ ) = y(u) ⊗ g˙˙(u,σ ) , ⊗ es el operador € convolución, g(u,σ ) es € la función gaussiana con desviación típica σ y € g˙ (u,σ ) , g˙˙(u,σ ) sus derivadas de primer y segundo orden. € € € A continuación se localizan las esquinas utilizando escalas inferiores para € € € mejorar su localización y se comparan las esquinas marcadas como uniones en T. Por último se eliminan las esquinas cerradas. El procedimiento utilizado con un umbral adaptativo local es muy similar al original. En primer lugar se extraen los contornos o bordes de la imagen con el detector de bordes Canny, obteniendo una imagen binaria. A continuación se unen los huecos entre contornos y se extraen los contornos. Se calcula la curvatura de todos los contornos a baja escala, considerando los máximos locales de la curvatura como candidatos a 33 Memoria. Detección de Características esquinas. Entre estos candidatos, se compara la curvatura con un umbral local(adaptive threshold), en vez de global para eliminar las esquinas redondeadas. El umbral es calculado en función de la curvatura de la vecindad: T(u) = C × κ = 1.5 × u+L 2 1 ∑κ (i) L1+ L2 + 1 i= u−L 2 Ecuación 18. Cálculo del umbral local € la curvatura de la vecindad, u es la posición de la posible donde κ es esquina en la curva, L1 y L2 son el tamaño de ROS (región definida € desde la mínima curvatura local de la vecindad hasta la siguiente, donde la curvatura estrictamente decrece de la posible esquina a ambos lados) y C es un coeficiente(normalmente vale 1,5). Finalmente se comprueban los ángulos de los candidatos, para eliminar cualquier esquina debida a ruido. 2.5 Comparación detectores de esquinas En primer lugar aunque sea haya definido el concepto de esquina, no existe una definición matemática comúnmente aceptada. No existe ningún detector de esquinas preciso como se comenta en [18], es decir que detecte todas las esquinas correctamente y no detecte falsas esquinas. Cabe destacar que el propósito de un detector de esquinas es que muestre puntos que sean de interés. Los cuatro métodos descritos en las secciones previas son claras representaciones de distintos tipos de detectores, que se basan en distintas ideas. Harris y Stephens (Plessey) junto a Kanade-Lucas-Tomasi (KLT) utilizan el cálculo y las intensidades de la imagen para detectar cambios importantes en las derivadas de primer orden. 34 Memoria. Detección de Características Por el contrario, SUSAN se centra en el área local, comprobando la similitud de intensidad y el CSS utiliza un método que se basa en el cálculo de la curvatura. En primer lugar, Harris emplea una función para no tener que calcular los autovalores, ya que son computacionalmente costosos y utiliza un umbral explícito, mientras que KLT calcula los autovalores y emplea un umbral implícito. Comparado con los demás detectores, el detector de Harris es el más sencillo de implantar, pero sin embargo proporciona peores resultados. Esto se debe al hecho de que no utiliza información del resto de la imagen y opera solo en la vecindad del píxel a examinar. Además a pesar de usar un filtro gausiano, no es muy robusto al ruido. Algunas bibliografías como en [19] afirman que el detector de Harris proporciona buena repetibilidad en variaciones de rotación e iluminación, sin embargo al implantar el algoritmo los resultados obtenidos no han sido muy buenos. KLT tiene el mismo problema que el algoritmo de Harris ya que se centra en la vecindad del píxel a considerar, pero calcula explícitamente los autovalores de la matriz local, lo que resulta en un algoritmo bastante lento, ya que debe calcular dos autovalores para cada píxel de la imagen. Las imágenes muy grandes tardan mucho tiempo en ser procesadas, por el contrario, se puede decir que en general los resultados obtenidos son buenos, las esquinas de la imagen son detectadas, pero algunos puntos son detectados como falsas esquinas. El método SUSAN prometía ser un buen detector de esquinas, sin embargo al llevar a cabo su implementación los resultados no fueron los esperados. Se podría considerar este método como mejor detector de bordes que de esquinas. La ejecución del algoritmo es rápida, pero no detecta muchos puntos que realmente sean esquinas, es decir detecta muchas falsos positivos. 35 Memoria. Detección de Características CSS es el método más moderno de los analizados y las esquinas son definidas como el valor local máximo de la curvatura. Este algoritmo es el más complejo de implementar debido a sus cálculos matemáticos y que se parte de la detección de bordes. Para la detección de los contornos de los bordes de la imagen, su utiliza un detector de bordes (Canny) y por tanto los resultados obtenidos varían en parte función de la calidad de la detección de los bordes. El CSS es el detector que mejores resultados da de los probados, y el tiempo de su ejecución es bastante rápido comparado con los anteriores. En la Tabla 2, se resumen las principales características de los detectores de esquinas analizados. Para probar los diferentes detectores de esquinas se realizaron varias pruebas con distintas imágenes. Para comprobar la rapidez de los detectores, se empleó una imagen muy simple consistente en un cuadrado y todos los algoritmos detectaron las esquinas perfectamente. Para comprobar la detección de las esquinas se empleo una imagen tomada con la cámara estéreo de un cubo de Rubik (250x250) (ver Figura 7). Parámetros Cálculo de Similitud de Cálculo de Derivadas intensidades Curvatura Harris Rmin ✓ ✗ ✗ KLT λ2 ,D ✓ ✗ ✗ t ✗ ✓ ✗ ✗ ✗ ✓ SUSAN CSS € € Tabla 2. Comparación de los detectores de esquinas 36 Memoria. Detección de Características (a)Harris (c)CSS (b)KLT (d)SUSAN Figura 16. Detección de esquinas en un cubo de Rubik 37 Memoria. Detección de Características Tiempo de ejecución imagen simple Esquinas verdaderas cubo Rubik Esquinas Tiempo de falsas ejecución detectadas cubo de cubo Rubik Rubik Harris 0,0414s 22 0 0,0971s KLT 3,19s 38 0 5,1729s SUSAN 0,0043s 28 6 0,0087s CSS 0,26s 79 19 0,44s Tabla 3. Comparación detectores de esquinas del cubo de Rubik Entre los detectores que se han implantado, el que mejores resultados proporciona es el CSS. A pesar de que en la imagen probada, es el que más esquinas falsas detecta, es también el que más esquinas verdaderas detecta. El CSS y el KLT son los únicos que detectan las esquinas imprescindibles, es decir, las del contorno del cubo mientras que el detector de Harris, no detecta la mayoría de estas esquinas como se ve en la Figura 16. El KLT proporciona buenos resultados, sin embargo tarda mucho en ejecutarse, comparado con el CSS y esto puede dar problemas cuando se traten imágenes muy grandes. Otros ejemplos que se emplearon para probar los métodos fueron las imágenes de una grapadora como los de la Figura 17. 38 Memoria. Detección de Características (a)Harris (b)KLT (d)SUSAN (c)CSS (d) SUSAN Figura 17. Detección de esquinas de una grapadora Tiempo de Esquinas Esquinas falsas ejecución verdaderas detectadas grapadora grapadora grapadora Harris 0,164s 14 3 KLT 5,42s 22 7 SUSAN 0,0104s 7 4 CSS 0,5072s 16 12 Tabla 4.Comparación detectores de esquinas en la grapadora El método que más esquinas detecta es el CSS, sin embargo el que mejor detecta para esta imagen como se puede observar es el KLT, ya que detecta menos falsas esquinas. 39 Memoria. Detección de Características Con una imagen que contiene esquinas y zonas redondeadas, como es el caso de una taladradora, los resultados fueron los de la Figura 18. (a) Harris (c) CSS (b) KLT (d) SUSAN Harris Figura 18. Detección de esquinas en una taladradora 40 Memoria. Detección de Características Esquinas Tiempo de Esquinas ejecución verdaderas taladradora taladradora Harris 0,261s 10 22 KLT 9,8s 22 22 SUSAN 0,0181s 11 29 CSS 0,688s 10 21 falsas detectadas taladradora Tabla 5. Comparación de detectores de esquinas en una taladrador Los resultados obtenidos no son demasiado buenos, ya que los algoritmos detectan las sombras, y además es difícil saber que es una esquina y que no lo es, al ser la taladradora un objeto redondeado. Aunque se ve que algunos detectores, identificar alguna esquina del objeto. (a) Harris 41 Memoria. Detección de Características (b)KLT (c)CSS (d)SUSAN Figura 19. Detección de esquinas en un coche 42 Memoria. Detección de Características Es difícil comparar los distintos detectores con la imagen de un coche, ya que esta imagen apenas contiene esquinas. Sin embargo se probaron los distintos detectores para ver los resultados y el tiempo de ejecución. Tiempo de ejecución coche Harris 0,38s KLT 11,1s SUSAN 0,0205 CSS 1,10s Tabla 6. Tiempo de ejecución de los detectores de esquina en la imagen del coche 2.6 Conclusiones Como conclusión se puede apreciar en todas las imágenes que los detectores que proporcionan los resultados más fiables y exactos son los algoritmo de KLT y CSS. Pero como se ha comentado anteriormente el método empleado por KLT es muy lento. En el caso de que el único propósito fuera la detección de esquinas en una imagen este método sería el más apropiado, sin embargo la detección de esquinas suele ser uno de los pasos intermedios para cualquier tipo de reconstrucción y por lo tanto debe ser lo más rápido y eficiente posible. 3 Detección de bordes La detección de bordes es clave en la reconstrucción tridimensional porque se puede extraer información importante de la imagen, como pueden ser las formas de los objetos que la componen. Los bordes indican dónde están los objetos, su forma, su tamaño, y también ofrecen información sobre su textura. 43 Memoria. Detección de Características Los bordes son los puntos donde hay una frontera entre dos regiones de la imagen. En general, pueden ser de cualquier forma, y pueden incluir uniones, discontinuidades y extremos. En la práctica, los bordes suelen ser definidos como conjuntos de puntos en la imagen que tienen un alto gradiente (grandes variaciones de intensidad). Para la detección de bordes en imágenes existen muchos métodos de los cuales aquí se van a definir sólo algunos: Roberts Cross, Sobel, Prewitt, Canny y LoG. Existen muchas formas de realizar la detección de bordes. Sin embargo la mayoría de los métodos se pueden clasificar en dos categorías: • Gradiente: El método por gradiente detecta los bordes buscando el máximo y mínimo en la primera derivada de la imagen. • Laplaciano: Este método busca pasos por cero en la segunda derivada para encontrar los bordes. Los detectores de bordes Robert, Sobel y Prewitt funcionan de forma parecida como se detalla en [21]. En primer lugar calculan la primera derivada de imagen mediante máscaras de convolución. G = Gx + Gy Ecuación 19. Derivada ! La primera derivada permite saber la dirección en la que hay un cambio rápido de intensidad como se ve en la Figura 20. Figura 20. Cambios de dirección en la intensidad en función del gradiente 44 Memoria. Detección de Características La intensidad del borde se puede calcular como: 2 ∂ f 2 ∂f ∇f = + ∂ x ∂y Ecuación 20 Por tanto si se fija€un umbral máximo, se considerará borde si se supera dicho umbral. Además se puede calcular la dirección del borde o el ángulo de orientación del borde como: ∂f ∂ f θ = tan−1 / ∂x ∂ y Ecuación 21. Ángulo de orientación del borde La diferencia entre€ ambos métodos es la máscara de convolución utilizada. Por ello, a continuación se detallan las diferentes máscaras para los distintos métodos, sin embargo no se explicarán el procedimiento porque ya se ha comentado anteriormente y es común para todos ellos. 3.1 Operador Robert Cross El operador de Roberts realiza una simple y rápida medida del gradiente de la imagen. Este operador consiste en dos máscaras de convolución de 2x2. Una de las máscaras es la rotación de 90º de la otra. Figura 21. Máscaras de convolución 2x2 del operador Robert Cross En este caso el ángulo se calcula como: 45 Memoria. Detección de Características G θ = tan−1 x − 3π /4 Gy Ecuación 22. Ángulo de orientación € 3.2 Operador Sobel El operador Sobel utiliza dos máscaras de convolución de 3x3, siendo una de ellas la otra rotada 90º, como muestra la Figura 22. Figura 22. Máscaras de convolución 3x3 del operador Sobel 3.3 Operador Prewitt Las máscaras de convolución utilizados para la detección de bordes por Prewitt son las siguientes: Figura 23. Máscaras de convolución 3x3 del operador Prewitt 3.4 Canny El algoritmo de Canny también se conoce como el detector de bordes óptimo. 46 Memoria. Detección de Características En primer lugar Canny siguió una serie de criterios definidos en [20] tales como que ningún borde debe ser pasado por alto y que falsos bordes no deberían ser detectados. Además los puntos de borde deberían estar bien localizados, es decir, la distancia entre los píxeles detectados como bordes por el detector y el borde real debe ser mínima. Otro criterio fue que hubiera una sola respuesta a un mismo borde. Utilizando estos criterios el detector de Canny, primero suaviza la imagen para eliminar el ruido. Después calcula el gradiente de la imagen para determinar zonas donde existen cambios rápidos de intensidad. Si el píxel no es un máximo local lo elimina. Se utiliza un proceso de eliminación por histéresis para el resto de píxeles. Con dos umbrales, de tal forma que si es menor que el primer umbral el píxel no se considera borde y si es mayor que el segundo umbral se marca como borde. En el caso de que el píxel se encuentre entre ambos valores, no se marca como borde a menos que exista un camino entre este píxel y un píxel con gradiente mayor que el segundo umbral. Más detalladamente el detector de Canny se implementa de la siguiente manera: Paso 1: El primer paso es filtrar el ruido de la imagen original antes de localizar y detectar cualquier borde. Se suele emplear un filtro gausiano utilizando métodos de convolución. Hay que tener en cuenta que cuanto mayor es mayor es el tamaño de la máscara utilizada en el filtro y menor es la sensibilidad del detector al ruido. Paso 2: Después de suavizar la imagen, a continuación se busca la intensidad del borde calculando el gradiente de la imagen. Para calcular la derivada se emplean máscaras de convolución (en dirección horizontal y vertical). Se aproxima la intensidad del borde como: 47 Memoria. Detección de Características G = Gx + Gy Ecuación 23. Aproximación de la intensidad del borde Paso 3: La dirección €del borde se computa utilizando el gradiente en la dirección x e y. Gy θ = tan−1 Gx Ecuación 24. Dirección del borde € Paso 4: Después de calcular la dirección del borde, hay que relacionar la dirección del borde con la dirección en la imagen. Por tanto si en una imagen de 5x5 como en la Figura 24 x xxxx xxxxx xxaxx xxxxx xxxxx Figura 24. Ejemplo de imagen de 5x5 píxeles Mirando el píxel marcado como "a" solo puede haber 4 posibles direcciones, 0 grados (dirección horizontal), 45 grados (en la dirección de la diagonal positiva), 90 grados (en la dirección vertical), 135 grados(en la dirección de la diagonal negativa) Por tanto la orientación del borde dependerá de a cuál de estas cuatros direcciones se acerca más: 48 Memoria. Detección de Características Figura 25. Orientación del borde según la dirección del eje Si la dirección del eje está en la zona amarilla de la Figura 25 (entre 022.5 o entre 157.5 -180)entonces se pone a 0 grados. Cualquier borde en la zona verde(entre 22.5 - 67.5) a 45 grados . Cualquier borde en la zona azul(67.5- 112.5) se establece a 90 grados. Y si está en la zona roja (entre 112.5 -157.5) a 135 grados. Paso 5: En este paso se calcula el máximo local en la dirección del gradiente y se elimina el resto. El máximo local se calcula comparando el píxel con los píxeles vecinos en la dirección del gradiente.(Non maximal supresión). Paso 6: En el último paso en vez de utilizar un umbral único, Canny introduce un umbral con histéresis. Esto se debe a que si, el operador fluctúa por encima y por debajo del umbral provoca una discontinuidad en el borde. Existen dos niveles de umbral y , cualquier píxel que sea mayor que será un borde y si es menor que no será un borde. En el caso de que el píxel se encuentre entre t h y t l no será un borde a no ser que esté conectado a otro píxel marcado como borde. La calidad de la detección de bordes en una imagen depende del ajuste € € de como de t h y t l . € € 49 Memoria. Detección de Características 3.5 LoG El Laplaciano es una medida de la segunda derivada de la imagen y permite obtener zonas donde existen cambios de intensidad como se explica en [23]. Este método de detección de bordes se suele aplicar después de filtrar la imagen con un filtro gausiano para eliminar el ruido. El Laplaciano de una imagen se puede definir como: ∂ 2I ∂ 2I L(x, y) = 2 + 2 ∂x ∂y Ecuación 25. Laplaciano de una imagen € La ecuación se implementa en forma digital haciendo la convolución de una imagen con una región o máscara de 3x3 como la Figura 26. Figura 26. Máscaras de convolución de aproximación del Laplaciano El principio para la definición de este operador es que el coeficiente asociado al píxel central sea positivo y los coeficientes asociados a los píxeles exteriores sean negativos, tal que la suma de todos los coeficientes sea cero. Al hacer la convolución para cada punto de la imagen la respuesta es cero siempre que el punto central tenga el mismo valor que sus vecinos (ver [24]). 3.6 Comparación detectores de bordes A continuación se muestran en la Figura 27, Figura 28, Figura 29 y Figura 30 los resultados obtenidos al emplear los distintos detectores de bordes. 50 Memoria. Detección de Características (a) Roberts (b)Sobel .Bordes Cubo de Rubik por Roberts (c) Prewitt (d)Canny (d) LoG Figura 27. Detección de bordes en un cubo de Rubik con los distintos detectores de bordes 51 Memoria. Detección de Características (a)Roberts (b) Sobel (c)Prewitt (d) Canny (e) LoG Figura 28.Detección de bordes en una grapadora con los distintos detectores de bordes 52 Memoria. Detección de Características (a) Roberts (b) Sobel (c) Prewitt (d) Canny (e) LoG Figura 29.Detección de bordes en una taladradora con los distintos detectores de bordes 53 Memoria. Detección de Características (a) Roberts (b) Sobel (c) Prewitt (d) Canny (e) LoG Figura 30.Detección de bordes en un coche con los distintos detectores de bordes 54 Memoria. Detección de Características 3.7 Conclusiones Después de llevar a cabo varias pruebas con varias imágenes con los distintos detectores implantados en MATLAB como muestran Figura 27, Figura 28, Figura 29 y Figura 30 se puede comprobar que los detectores de Roberts, Sobel y Prewitt obtienen resultados muy parecidos. Esto se debe a que utilizar el mismo método, simplemente cambiando las máscaras de convolución que se utilizan para calcular las derivadas de primer orden. El método de LoG obtiene mejores resultados que éstos detectores, sin embargo el que más bordes verdaderos detecta es el detector de Canny. Por lo general se suele utilizar este detector, así lo confirman muchas referencias que tratan sobre detección de bordes como en [19] y [22] ya que es el que mejores resultados presenta, como se puede comprobar en todas las imágenes probadas. 4 Líneas rectas Para la detección de líneas rectas en imágenes no existen tanta variedad de algoritmos como para bordes y líneas (ver [25]). La transformada de Hough permite detectar líneas rectas de manera sencilla, de tal forma que se ha procedido a la implantación de este algoritmo únicamente. 4.1 Transformada de Hough La Transformada de Hough es un algoritmo empleado en reconocimiento de patrones en imágenes que permite encontrar ciertas formas dentro de una imagen, como líneas, círculos, etc. La versión más simple consiste en encontrar líneas rectas. La Transformada de Hough expuesta en [26] fue propuesta por Paul Hough en 1962 y patentada por IBM. El algoritmo emplea el conjunto total de la imagen, haciéndolo robusto ante la datos incompletos y contaminados. 55 Memoria. Detección de Características Para su ejecución se requiere de una imagen binaria en la que se han seleccionado previamente los bordes. Si se considera un píxel de coordenadas (xi,yi), siendo este píxel un borde de la imagen, sobre éste pasaran infinitas rectas de la forma de la Ecuación 26: y i = ax i + b Ecuación 26. € Todas estas rectas quedan definidas por los infinitos valores de a y b. Al variar el parámetro a desde -∞ a +∞ se obtendrá los infinitos valores de b. Por tanto, si dos píxeles pertenecen a una misma recta su representación será la intersección de dos rectas. La transformada de Hough aplica este concepto para la localización de líneas rectas en la imagen. Discretiza el espacio cartesiano en intervalos de [amin, amax] y [bmin, bmax], creando una rejilla de celdas de acumulación. Por cada píxel, considerado como borde, se hace recorrer el rango de a obteniendo los valores de b. Por cada valor de a y b se le pone un voto en la celda correspondiente. Esta operación se hace con todos los píxeles etiquetados como bordes. Al finalizar, aquellas celdas con más votos indicarán la presencia de rectas en la imagen, cuyos modelos corresponderán con las coordenadas de la celda. Sin embargo, el espacio cartesiano no es el más adecuado, ya que los rangos de a y b no están limitados. Por esta razón, se hace una representación en coordenadas polares: ρ = x cosθ + ysenθ Ecuación 27 € de una normal desde el origen hasta la línea y θ es Donde ρ es la longitud el ángulo de ρ con respecto al eje x, θ está limitado al rango de [0 π]. Cabe destacar que la representación de un punto en el espacio 56 Memoria. Detección de Características paramétrico no es una recta sino una sinusoidal como se ve en la Figura 31. Figura 31. Representación gráfica de la transformada de Hough (a) en el espacio cartesiano, (b) espacio paramétrico 4.2 Pruebas detector de líneas rectas A continuación se muestran las imágenes de prueba, al aplicar el detector de líneas rectas basado en la transformada de Hough, como se observa en la Figura 32. 4.3 Conclusiones Se ha procedido a probar el algoritmo en las imágenes obtenidas por la cámara estéreo. A pesar de que en el caso del coche y de la taladradora apenas existen líneas rectas y por lo tanto la salida no tiene mucho sentido, al ser objetos redondeados. Se puede observar en la Figura 32 que en el cubo de Rubik las rectas detectadas en la zona superior del cubo son correctas, sin embargo en las zonas verdes y rojas al ser partes oscuras las líneas rectas no se detectan. En cambio en la imagen de la grapadora el algoritmo si detecta las líneas rectas del contorno. 57 Memoria. Detección de Características Se puede ver a simple vista que el algoritmo detecta correctamente líneas rectas, a pesar de que las imágenes no contengan objetos con muchos tramos rectos. Figura 32. Detección de líneas rectas en los distintos objetos 58 Memoria. Segmentación Capítulo 4 SEGMENTACIÓN 1 Introducción La segmentación en imágenes es una de las técnicas más empleadas y útiles en el procesado y análisis de imágenes. Se utiliza para distinguir un objeto del fondo o para dividir una imagen en regiones con alguna relación entre sí. En general los sistemas de interpretación de imágenes operan sobre los datos procedentes de una etapa previa de segmentación por lo que la interpretación correcta de la información dependerá en gran medida de los resultados de dicha segmentación. Como se ha mencionado se trata de uno de los primeros pasos en el reconocimiento de objetos pero también es uno de los más problemáticos de la visión artificial. Dependiendo del tipo de imagen y el objetivo deseado existen muchas técnicas de segmentación. Una clasificación de estas técnicas podría ser la siguiente: técnicas basadas en umbrales, contornos, regiones y grupos (clustering) como se menciona en [27]. Aunque existen muchas técnicas y algoritmos para la detección de zonas de interés en imágenes en este caso se van a utilizar los siguientes: contornos activos y k-means. 2 Contornos Activos Este método fue propuesto inicialmente por Kass, Witkin y Terzopoulos (KWT) en [28] donde definían los contornos como las fronteras entre un objeto u objetos y el fondo de la imagen. Este tipo de técnica utiliza información a priori de la imagen para extraer los contornos de los objetos o zonas de interés. Por lo general, permiten segmentar imágenes más complicadas y suelen ser técnicas más robustas frente a la presencia de ruido. 59 Memoria. Segmentación La idea de los contornos activos consiste en ir modificando una curva inicial ajustándola a la frontera de la zona de interés. La curva se va modificando según se va minimizando la energía, siendo el mínimo de dicha energía la frontera o borde del objeto. Fueron Kass, Witkin y Terzopoulos quienes propusieron un modelo variacional que permite ir ajustando una curva deformable u(s) a los contornos de una imagen. La solución minimiza una energía, que consta de dos términos uno que controla la regularidad de la curva y otro que la atrae hacia las fronteras de los objetos de la imagen. A diferencia de otro tipo de técnicas, este modelo es activo, es decir siempre se está minimizando la energía y por lo tanto es dinámico. Por esta razón también se suele denominar snake. Los contornos activos o snakes van cambiando hasta conseguir un mínimo de energía definida como en [29]: ε(u) = E int (u) + E ext (u) Ecuación 28. Definición de energía siendo u(s) :[0,1] →€ℜ 2 una curva plana parametrizada u(s) = ((x(s), y(s)) y s la longitud del arco de la curva. del snake. € E int y E ext son, la energía interna y la energía externa € La energía interna mantiene la condición de suavidad en la forma de la € € curva mientras que la energía externa permite añadir información para que el snake vaya hacia el mínimo local deseado. La energía interna del snake tiene como expresión: 2 2 du(s) d 2 u(s) ds E int (u) = ∫ α (s) + β (s) ds ds 0 1 Ecuación 29. Energía interna € 60 Memoria. Segmentación Las funciones paramétricas α (s) y β (s) determinan la elasticidad y rigidez de la curva y se utilizan para modificar el comportamiento físico y la continuidad local del modelo. € € La energía externa viene definida por la siguiente expresión: 1 E ext (u) = ∫ [ ∇I(u(s)) ]ds 0 Ecuación 30. Energía externa Para minimizar € ε(u) se utiliza el método del descenso de la energía, donde se parte de una curva inicial u0 que se va modificando siguiendo la dirección de máximo decrecimiento de la energía. € El método de contornos € activos es capaz de localizar correctamente curvas que se encuentren cerca de la curva inicial, pero por otra parte no es posible detectar simultáneamente varios objetos, ya que la curva no puede dividirse. Esto limita su campo de aplicación a tareas donde el número de objetos y localización aproximada son conocidos a priori. Esta técnica de segmentación es muy robusta ante ruido sin embargo uno de los principales inconvenientes de los contornos deformables viene dado por su alto coste computacional lo que los hacen poco apropiados para aplicaciones necesitadas de una alta velocidad de respuesta. 3 Kmeans El algoritmo k-means es uno de los más simples y conocidos algoritmos de segmentación. Fue propuesto por Mac Queen en 1967 y desde entonces se han desarrollado distintas versiones y enfoques distintos. Este algoritmo es un tipo de algoritmo de agrupamiento (clustering) y consiste en la partición de datos en diferentes grupos o clusters de tal forma que los elementos de un grupo contenga características muy similares entre si y además que las características de cada grupo sean muy distintas de las del resto de grupos. 61 Memoria. Segmentación El k-means es una técnica de particionamiento iterativo donde el algoritmo divide la imagen en k grupos, siendo k un parámetro a elegir. Cada grupo se caracteriza por su centroide. Inicialmente se parte de k centroides elegidos arbitrariamente y se asigna cada píxel a su centroide más cercano, formando así k grupos. A continuación se calcula el centroide de cada grupo y los píxeles vuelven a asignarse al grupo con el centroide más cercano. Esto se repite hasta que los centroides no cambian de una iteración a otra. El objetivo del algoritmo es encontrar centroides para cada grupo y minimizar la distancia ver [30]. k V =∑ ∑ (x j − µi ) 2 i=1 x j ∈S i Ecuación 31 donde µi∀i = 1...k es€el centroide de cada grupo y x i cada píxel. En general, los centroides son computados como la media de los píxeles € de cada grupo. € Uno de los inconvenientes de este algoritmo comentado en [31] es que suele fallar cuando los píxeles de un grupo están muy cerca del centroide de otro grupo. Otro inconveniente del k-means es que no obtiene buenos resultados si el valor de k es muy grande. Por lo general es un algoritmo de rápida computación y resultados fiables, para la segmentación de imágenes. 4 Comparación de algoritmos de segmentación de imágenes Los algoritmos implantados para la segmentación de imágenes fueron probados en las imágenes de prueba. El algoritmo de contornos activos, como se ha mencionado es una técnica dinámica cuyo únicos parámetros son el número de iteraciones a realizar y la zona o máscara de inicio para calcular la energía de la curva. 62 Memoria. Segmentación Figura 33.Resultados de la segmentación de los objetos utilizando contornos activos Los resultados fueron los siguientes, siendo la salida una imagen binaria que separa el objeto del fondo como en la Figura 33. Este tipo de algoritmos como se comentó anteriormente no permite detectar varios objetos en una misma imagen debido a que no es posible la partición de la curva. Se debe tener en cuenta que dependiendo del número de iteraciones a realizar el resultado varía. Al aumentar las iteraciones el contorno es más preciso y exacto, sin embargo el algoritmo tarda más en ejecutarse. También cabe destacar que llegado un número de iteraciones determinado el contorno no varía, esto se debe a que la energía es mínima y por tanto no existe otro contorno en la imagen con una energía menor. Las imágenes mostradas se realizaron con un número de iteraciones de cómo máximo 1000. Los resultados obtenidos son coherentes, ya que el algoritmo delimita correctamente el objeto del fondo. 63 Memoria. Segmentación Cubo Rubik Grapadora Taladradora (500 (500 (1000 iteraciones) iteraciones) iteraciones) 11,78s 16,2s 45,25s Coche(1000 iteraciones) 50,09s Tabla 7.Tiempo de ejecución de la segmentación utilizando contornos activos Los tiempos de ejecución son bastante elevados como se observa en la Tabla 7 al ser un proceso iterativo, sobre todo en el caso de la taladradora y el coche. La razón de que el tiempo sea superior en estas dos imágenes es el número de iteraciones, ya que en ambos casos son necesarias al menos 1000 iteraciones para que el algoritmo detecte correctamente el contorno del objeto. Si se ejecuta con menos iteraciones el contorno se queda en el interior del objeto, al ser objetos de mayor tamaño que el cubo de Rubik y la grapadora. Otra cosa a tener en cuenta es que el algoritmo detecta la sombra de los objetos como parte del objeto, si está próxima. Esto se ve claramente en el cubo de Rubik. El algoritmo de contornos activos a pesar de su largo tiempo de ejecución en imágenes más complejas proporciona resultados lógicos y coherentes, detectando claramente los objetos del fondo de la imagen. El algoritmo k-means es uno de los principales algoritmos basados en agrupamiento. El único parámetro a determinar es sólo el valor de k, es decir el número de divisiones o grupos. Se probó el algoritmo para varias divisiones, aunque en nuestro caso sólo sería necesario dos grupos (uno el objeto y otro el fondo). El resultado es una imagen a color, con tantos colores como divisiones establecidas, siendo el color la media de los píxeles del grupo. Los resultados obtenidos en las imágenes de prueba fueron los siguientes: 64 Memoria. Segmentación Figura 34. Segmentación del cubo de rubik utilizando k-means con distinto número de clusters Cubo rubik Cubo rubik Cubo rubik Cubo rubik con k=2 con k=3 con k=4 con k=5 1,61s 1,64s 2,02s 2,17s Tabla 8. Tiempo de ejecución de la segmentación del cubo de rubik con k-means Se observa en la Tabla 8 que este algoritmo, al contrario que el basado en contornos activos es mucho más rápido, incluso aumentando el número de divisiones en la imagen. Las divisiones o grupos son correctas, sin embargo se puede ver en la Figura 34 que detecta la sombra del cubo como un grupo más. 65 Memoria. Segmentación Figura 35. Segmentación de una grapadora utilizando k-means con distinto número de clusters Grapadora Grapadora Grapadora Grapadora con k=2 con k=3 con k=4 con k=5 1,32s 2,15s 3,28s 4,41s Tabla 9. Tiempo de ejecución de la segmentación de una grapadora con k-means 66 Memoria. Segmentación Figura 36.Segmentación de una taladradora utilizando k-means con distinto número de clusters Taladradora Taladradora Taladradora Taladradora con k=2 con k=3 con k=4 con k=5 1,62s 2,55s 3,45s 8,71s Tabla 10. Tiempo de ejecución de la segmentación de una taladradora con k-means El tiempo de ejecución aumenta considerablemente según se aumenta el número de grupos y los colores de los grupos de ajustan más a la imagen original. 67 Memoria. Segmentación Figura 37.Segmentación de un coche utilizando k-means con distinto número de clusters 68 Memoria. Segmentación Coche con Coche con Coche con Coche con k=2 k=3 k=4 k=5 1,53s 6,91s 8,68s 10,19s Tabla 11.Tiempo de ejecución de la segmentación de un coche con k-means Ambos algoritmos proporcionan resultados adecuados, como se puede observar en todas las imágenes probadas. Cada uno de ellos corresponde a un tipo de segmentación de imagen. El algoritmo de contornos proporciona una imagen binaria, de tal forma que sabemos si un pixel forma parte la zona de interés, es decir, si forma parte del objeto a reconstruir. Por el contrario, su mayor desventaja es el largo tiempo de ejecución que no es comparable con el método k-means. Mientras el algoritmo basado en grupos o agrupaciones, proporciona resultados fiables a color y con un coste computacional menor. Además es posible dividir la imagen en varias zonas, lo cual puede ser de interés si se quiere detectar más de un objeto. 69 Memoria. Algoritmo Capítulo 5 ALGORITMO 1 Introducción En este capítulo se va explicar el algoritmo final, analizando los distintos pasos en los que se compone. Este algoritmo permite realizar una reconstrucción tridimensional de un objeto, a partir de un par de imágenes tomadas por una cámara estéreo. Como se ha mencionado anteriormente todo sistema de visión consta de varias etapas y para ello se han empleado algunos de los algoritmos explicados en los capítulos anteriores. (Si el lector desea más detalles consúltese el Manual de usuario o apartados anteriores para completar la información). segmentación, Las etapas en las que se compone el algoritmo son: detección de características y reconstrucción. A continuación se procede a explicar los distintos pasos. 2 Segmentación Cada imagen tomada por la cámara estéreo, se compone del objeto a reconstruir y el resto de la escena. Para separar el objeto del fondo, se debe aplicar una segmentación en la imagen tomada por la cámara izquierda. Entre los algoritmos analizados en el Capítulo 4 para la segmentación de imágenes se empleó el basado en contornos activos. A pesar que dicho método es más lento que el k-means, permite separar una imagen en objeto y fondo, creando una imagen binaria. Mientras que el k-menas realiza una división de la imagen en dos zonas, siendo una zona el objeto y parte del fondo, y la otra el resto del fondo. Con la imagen binaria obtenida con los contornos activos se reduce la zona de los puntos característicos a detectar. Esta etapa es clave en la reconstrucción, porque elimina zonas de la imagen que no serán utilizadas en los siguientes pasos. 70 Memoria. Algoritmo En primer lugar, en esta etapa la imagen a color es transformada a una imagen en escala de grises como se ve en la Figura 38 para a continuación realizar la segmentación por contornos activos. Figura 38. Imagen izquierda del cubo en escala de grises La imagen resultante después del proceso de segmentación es una imagen binaria, siendo la parte de color blanco el objeto, como muestra la Figura 39. Figura 39. Imagen izquierda del cubo segmentado por contornos activos. 3 Detección de características A continuación de la etapa de segmentación, se procede a detectar los puntos característicos del objeto. La segmentación permite reducir significativamente la zona a aplicar un algoritmo de características, disminuyendo el tiempo de ejecución. Entre los algoritmos implantados 71 Memoria. Algoritmo para la detección de esquinas, se empleó el CSS. Este algoritmo como se ve en el Capítulo 3 en el apartado 2.4, es un detector rápido además de proporcionar resultados bastante satisfactorios. Por tanto, a la imagen segmentada se le aplica el detector de esquinas CSS en la zona correspondiente al objeto. Como se muestra en la Figura 40 la imagen resultante es el cubo y sus esquinas. El fondo de la imagen ha sido eliminado y la detección de esquinas sólo se ha realizado en el cubo. A pesar de haber reducido la zona para la detección de características existen puntos que no corresponden al cubo físicamente. Muchos de estos puntos son los detectados en la sombra del objeto. Figura 40. Imagen segmentada del cubo y detección de esquinas. 4 Reconstrucción tridimensional 4.1 Correspondencia estéreo Por último la etapa final es la obtención de un modelo tridimensional del objeto. Para conseguir este objetivo, una vez detectadas las esquinas del objeto en la imagen izquierda, será necesario obtener los puntos correspondientes a dichas esquinas en la imagen derecha. Al conocer los puntos de la imagen izquierda, es posible hallar las rectas epipolares en la imagen derecha mediante la matriz fundamental. Los puntos correspondientes a la imagen derecha estarán en dichas rectas, 72 Memoria. Algoritmo por lo que se reduce la zona de búsqueda en la imagen. Para realizar la búsqueda en la recta epipolar, se lleva a cabo una correlación entre la intensidad del punto de la imagen izquierda y sus alrededores, con los puntos que forman la recta epipolar y sus vecinos. De tal forma, que se compara para cada esquina detectada, ventanas de tamaño NxN centradas en dicha esquina, con los puntos de la recta epipolar y sus alrededores. En este paso, los resultados obtenidos no fueron los apropiados. Esto se debe a que al realizar la búsqueda del punto de la imagen izquierda, en la imagen de la derecha, pueden existir varias zonas con intensidades similares a los de la imagen izquierda. Por tanto, el punto obtenido en la imagen derecha estará desplazado del punto que realmente se debería obtener. Esto se puede observar en la Figura 41, donde muchos puntos no corresponden a las esquinas del cubo. Figura 41. Puntos correspondientes en la imagen derecha. Para comprobar que efectivamente, los puntos detectados son las esquinas de la imagen izquierda, se dibujan las líneas epipolares en la imagen del cámara derecha. Como muestra la Figura 42, las rectas dibujadas, pasan por los puntos detectados. 73 Memoria. Algoritmo Figura 42. Líneas epipolares en la imagen derecha. Para evitar una mala correspondencia entre puntos se estableció un factor, denominado factor de confianza de tal forma que una vez determinado el punto en la recta epipolar se realiza una búsqueda local del máximo en una área cuadrada alrededor del punto obtenido. Si todos los puntos de la zona de búsqueda tienen un valor de correlación parecido, es que se trata de una zona sin texturas y por tanto dicho factor valdrá cero. Por tanto a mayor valor del factor de confianza, más probable que el punto sea la esquina buscada. Si se limita el factor de confianza a un valor alto, como 0.9 se consiguen eliminar puntos que no corresponden al mismo punto en ambas imágenes, y que posteriormente pueden resultar en puntos tridimensionales alejados del objeto. Figura 43. Correspondencia entre imágenes con factor de confianza. En la Figura 43 se puede apreciar que empleando el factor de confianza todos los puntos corresponden a esquinas del cubo en ambas imágenes y que los puntos son los mismo en ambas. Muchos puntos en la imagen derecha que antes no correspondían a ninguna esquina en la otra imagen 74 Memoria. Algoritmo han sido eliminados. Según se varíe el factor de confianza variará la calidad de la correspondencia, así como el número de puntos obtenidos 4.2 Triangulación Una vez obtenidos los puntos característicos en ambas imágenes, se lleva a cabo la triangulación, conocidos los parámetros de la cámara. Estos parámetros se calculan mediante la calibración de la cámara estéreo como se comentó en Capítulo 2 en la sección 7. El resultado será una serie de puntos tridimensionales correspondientes a las esquinas del objeto a reconstruir. Un ejemplo de la reconstrucción final es la Figura 44, donde los puntos detectados han sido representados en el espacio. Figura 44. Reconstrucción 3D de un cubo utilizando factor de confianza 75 Memoria. Matlab aplicado a visión artificial Capítulo 6 MATLAB APLICADO A VISIÓN ARTIFICIAL En este capítulo se explican algunas de las funciones que se han empleado para la implantación de los algoritmos en el programa MATLAB. Si se desea más información del programa que no se trata en este capítulo se puede consultar el manual de MATLAB. 1 Operaciones con matrices 1.1 Definición de una matriz Para definir una matriz no hace falta establecer de antemano su tamaño. MATLAB determina el número de filas y de columnas en función del número de elementos que se proporcionan. Las matrices se definen por filas, los elementos de una misma fila están separados por espacios o comas, mientras que las filas están separadas por punto y coma (;). Por ejemplo, el siguiente comando define una matriz A de dimensión (3x3): >> A=[1 2 3; 4 5 6; 7 8 9] La respuesta del programa es la siguiente: A = 1 2 3 4 5 6 7 8 9 A partir de este momento la matriz A está disponible para hacer cualquier tipo de operación. 76 Memoria. Matlab aplicado a visión artificial 1.2 Operadores MATLAB puede operar con matrices por medio de operadores y por medio de funciones. Los operadores matriciales de MATLAB son los siguientes: +suma – resta * multiplicación ' traspuesta ^ potenciación \ división-izquierda / división-derecha .* producto elemento a elemento ./ y .\ división elemento a elemento .^ elevar a una potencia elemento a elemento 1.3 Matrices particulares También existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices de tipos particulares. Algunas de estas funciones son las siguientes: zeros(n,m), forma una matriz de ceros de tamaño (nxm) . ones(n,m), forma una matriz de unos de tamaño (nxm). 1.4 Acceso a elementos de una matriz El operador : es muy importante en MATLAB y puede usarse de varias formas. Un ejemplo sería: >> x=1:10 77 Memoria. Matlab aplicado a visión artificial x = 1 2 3 4 5 6 7 8 910 El operador (:) representa un rango entre dos valores, en el caso del ejemplo sería entre 1 y 10. Por defecto el incremento es 1, pero este operador puede también utilizarse con otros valores enteros y reales, positivos o negativos. MATLAB accede a los elementos de una matriz por medio de los índices de fila y de columna encerrados entre paréntesis y separados por una coma. Así en el ejemplo de la matriz A: >> A(2,3) ans = 6 Para poder acceder a más de un elemento de una matriz se emplea el operador :. A(n,:) devuelve la fila n entera. A(:, m), devuelve la columna m entera. 2 Programación en MATLAB MATLAB es una aplicación en la que se puede programar muy fácilmente, sin embargo no proporciona tantas posibilidades como otros lenguajes de programación. A continuación se detallan algunos bucles, que han sido utilizados y que son de interés. 2.1 Sentencia if if condicion sentencias end Para varias condiciones sería de la siguiente forma: 78 Memoria. Matlab aplicado a visión artificial if condicion1 bloque1 elseif condicion2 bloque2 elseif condicion3 bloque3 else% opción por defecto para cuando no se cumplan las condiciones 1,2,3 bloque4 end 2.2 Sentencia for La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La siguiente construcción ejecuta sentencias con valores de i de 1 a n, variando de uno en uno. for i=1:n sentencias end 2.3 Sentencias while, break La sentencia while tiene la siguiente estructura: while condicion sentencias end Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condición, es decir, mientras haya algún elemento true. El bucle se termina cuando todos los elementos de condición son false (es decir, cero). La sentencia break hace que se termine la ejecución del bucle más interno de los que comprenden a dicha sentencia. 79 Memoria. Matlab aplicado a visión artificial 3 Gráficos Las funciones más útiles para la representación de gráficos son Plot y plot3. 3.1 Plot Crea un gráfico en dos dimensiones a partir de vectores y/o columnas de matrices. Existen además otras funciones orientadas a añadir títulos al gráfico, a los ejes, etc. title('título'), añade un título al dibujo. xlabel('axis x') , añade la etiqueta “axis x” al eje de abscisas. ylabel('axis y'), añade la etiqueta “axis y” al eje de ordenadas. text(x,y,'texto'), introduce “texto” en el lugar especificado por las coordenadas x e y. legend(), define rótulos para las distintas líneas o ejes utilizados en la figura. grid, activa la inclusión de una cuadrícula en el dibujo. Si a la función plot se le pasan dos vectores como argumentos, los elementos del segundo vector se representan en ordenadas frente a los valores del primero, que se representan en abscisas. Ambos vectores deben ser coherentes en tamaño. Si por el contrario se le pasa un único vector como argumento, dicha función dibuja en ordenadas el valor de los n elementos del vector frente a los índices 1, 2, ... n del mismo en abscisas. En la Tabla 12 se pueden observar las distintas posibilidades que ofrece la función plot, el color ,los marcadores y el estilo de línea que se pueden utilizar. 80 Memoria. Matlab aplicado a visión artificial Símbolo Color Símbolo Marcadores y amarillo . puntos m magenta o círculos c cyan x marcas en x r rojo + marcas en + g verde * marcas en * b azul s marcas cuadradas w blanco d marcas en diamante k negro ^ triángulo apuntando arriba Símbolo Estilo de línea v triángulo apuntando abajo - líneas continuas > triángulo apuntando a la dcha : líneas a puntos < triángulo apuntando a la izda -. líneas a barra-punto p estrella 5 puntas -- líneas a trazos h estrella de 6 puntas Tabla 12. Color, marcadores y estilos de línea para la función Plot 3.2 Plot3 La función plot3 el análogo tridimensional de la función plot. Esta función dibuja puntos cuyas coordenadas están contenidas en 3 vectores, uniéndolos mediante una línea continua. Las opciones son las mismas que las descritas anteriormente para la función Plot. 4 Funciones más importantes de la “Image Processing Toolbox” 4.1 Introducción En la librería Image Processing Toolbox se encuentran las funciones para el tratamiento de imágenes. En esta librería existen muchas funciones, por lo tanto aquí se procede a explicar sólo algunas, si se desea más información se puede consultar el manual del programa MATLAB. Esta librería de procesamiento de imágenes soporta 4 tipos imágenes: indexadas, intensidad, binarias y RGB. indexada: Imagen cuyos píxeles tienen valores que son índices directos a un mapa de color RGB. En MATLAB, una imagen indexada es 81 Memoria. Matlab aplicado a visión artificial representada por un array de clase uint8, uint16, o double. El mapa de color es siempre un array m*3 de clase double. intensidad: Es una imagen cuyos valores de píxeles corresponden a una escala de grises. En MATLAB, una imagen de intensidad es representada por un array de clase uint8, uint16, o double. binaria: Una imagen binaria puede ser considerada un tipo especial de imagen de intensidad, conteniendo solamente blanco y negro. Una imagen binaria puede ser guardada en un array de clase double o uint8. RGB: Una imagen cuyos píxeles son especificados por 3 valores, uno para cada componente de color (rojo, verde y azul) de cada píxel. En MATLAB, una imagen RGB es representada por un array m*n*3 de clase uint8, uint16, o double. 4.2 imread Esta función que carga una imagen dentro del workspace de MATLAB. La imagen devuelta será una matriz de [n m c] donde n es el alto de la imagen, m el ancho y c el número de canales (si es a color hay 3: RGB; si es en blanco y negro o grises, sólo 1). La función soporta la mayoría de tipos de imagen (bmp, jpeg, tiff, gif…). Un ejemplo: Imagen = imread(‘nombre_imagen.bmp’); 4.3 imwrite Función que guarda una imagen del workspace a un archivo del disco duro. Ejemplo: imwrite (Imagen, ‘nombre_archivo.bmp’); 4.4 imshow Función que muestra una imagen del workspace en la figura activa actual (si no hay figuras se crea una nueva). Ejemplo: imshow(Imagen); figure, imshow(Imagen);% crea una nueva figura 82 Memoria. Matlab aplicado a visión artificial 4.5 rgb2gray Función que transforma una imagen en color RGB en una imagen en blanco y negro. Ejemplo: ImagenBW = rgb2gray(ImagenColor); 4.6 edge Realiza una operación de detección de bordes sobre una imagen en blanco y negro. Acepta como argumento el tipo de algoritmo utilizado (sobel, canny…) y los parámetros específicos de cada uno de ellos. La imagen devuelta en una imagen en blanco y negro. Ejemplo: I_bordes= edge(Imagen,'canny', 0.07); 4.7 imresize Función que devuelve una imagen que es ‘b’ veces el tamaño de la imagen original. La imagen puede ser de cualquier tipo: escala de grises, RGB o binaria. Si ‘b’ está entre 0 y 1, la imagen resultante es más pequeña, mientras que si es mayor que 1, será mayor. Ejemplo: Imagen_tam = imresize(Imagen, b) 4.8 conv2 Función que devuelve la convolución entre dos matrices. Ejemplo: Imagen_conv=conv2(A,B) 4.9 imfilter Función que realiza la convolución o la correlación de una imagen dada una máscara. Se le pasa como argumento una matriz denominada máscara. El valor final de cada píxel será la suma de cada píxel de sus alrededores multiplicado por el valor de la máscara. Ejemplo: mascara = ones(3,3); Imagen_filtrada = imfilter(ImagenBW, mascara) 83 Memoria. Matlab aplicado a visión artificial 4.10 immultiply Función que multiplica dos imágenes dadas. Ejemplo: Imagen_multiplicada=immultiply(A,B) 84 Memoria. Resultados Capítulo 7 RESULTADOS En este proyecto se ha desarrollado un algoritmo que dado un objeto real capturado por una cámara estéreo se obtenga el modelo tridimensional del mismo. Para comprobar la robustez de dicho algoritmo se utilizaron varios pares de imágenes. A continuación se muestra la reconstrucción de un cubo. La imagen tomada por la cámara estéreo incluía el objeto así como el resto de la escena como se ve en la Figura 45. Figura 45. Imagen estereoscópica de un cubo . El resultado obtenido por el algoritmo, despúes de realizar las distintas etapas previas: segmentación, detección de caracterísitcas y reconstrucción, sin emplear el factor de confianza es el de la Figura 46. El resultado del algoritmo son los puntos de color verde, pero para poder concluir si dichos puntos son correctos, se han dibujado líneas orientativas, uniendo los puntos. Estas líneas son las de color rojo. Además para comprobar si corresponden con el objeto verdadero se trazaron las líneas azules correspondientes al contorno del cubo verdaderos y las amarillas a las distintas divisiones. 85 Memoria. Resultados Figura 46. Reconstrucción 3D del cubo Desde otro punto de vista como es el de la Figura 47, se observan puntos que están alejados del objeto. Figura 47. Reconstrucción 3D del cubo desde otra vista. 86 Memoria. Resultados Estos puntos en el espacio son debidos a malas correspondencias entre las esquinas de la imagen izquierda y las esquinas de la imagen derecha. Para evitar que existan estos puntos, se empleó el factor de confianza que permite eliminar puntos que no se corresponden, como se muestra en la Figura 48. Figura 48. Reconstrucción 3D de un cubo utilizando factor de confianza La calidad de la reconstrucción mejora, puesto que se eliminan casi todos los puntos que no correspondían al objeto. Los resultados obtenidos con el cubo son bastante satisfactorios, puesto que se consigue representar en 3D las esquinas más significativas del cubo. Sin embargo, se puede apreciar que la reconstrucción es mejor en la cara de color amarillo, ya que en las otras caras del cubo los colores son más oscuros y por ello se representan menos cantidad de puntos. Si se aplica el algoritmo a la imagen de una grapadora (ver Figura 49), los resultados de la reconstrucción son los de la Figura 50. 87 Memoria. Resultados Figura 49.Imagen estereoscópica de una grapadora . Figura 50. Reconstrucción 3D de la grapadora En este caso existen menos puntos alejados del objeto, además de haber menos puntos representados. Los resultados obtenidos con la grapadora no son tan satisfactorios como los obtenidos con el cubo. En este caso, algunas esquinas de la grapadora no han sido representados. Esto se debe a que la geometría del cubo es más simple y contiene esquinas más definidas. El resto de imágenes empleadas para probar los algoritmos de capítulos anteriores como el coche y la taladradora no se han incluido. Al ser objetos que no tienen esquinas, la reconstrucción basada en detección de esquinas no tiene sentido y los resultados que se obtienen carecen de relevancia. 88 Memoria. Conclusiones Capítulo 8 CONCLUSIONES En este proyecto, se ha realizado un amplio análisis de detectores de esquinas, analizando sus principales características. Además se han implantado y comprobado su eficacia. Entre los detectores implantados el CSS y el KLT son los que mejores resultados obtienen. Mientras que el CSS usa la información de la curvatura, el KLT calcula los autovalores de una matriz local lo que hace que su tiempo de ejecución sea muy alto. También se han estudiado los detectores de bordes existentes para a continuación implementarlos. Finalmente haciendo un estudio comparativo de los distintos métodos. El detector que mejores resultados obtiene es el detector Canny, ya que detecta todos los bordes de los objetos. El resto de los detectores, basados en el cálculo del gradiente no son tan eficaces como el detector de Canny. Se ha conseguido implementar un detector de líneas rectas que detecta correctamente líneas rectas en la imagen. Este detector es conocido como detector de Hough y obtiene unos resultados óptimos es objetos rectos. Para la segmentación de imágenes se han estudiado varios métodos y los algoritmos programados dividen la imagen en varias zonas de interés, separando el objeto del fondo. El algoritmo de k-means segmenta imágenes en color y permite segmentar una imagen en varias zonas en función del color. Sin embargo, el basado en contornos activos divide la imagen en dos zonas, devolviendo una imagen binaria. Éste último, es el que se ha empleado en el algoritmo final porque conseguía separar el objeto del fondo, mientras que el k-means sólo dividía la imagen en dos zonas, siendo una de las zonas el objeto y parte del fondo, lo cual impedía conocer exactamente qué parte de la imagen era el objeto. Además se han probado los distintos detectores en imágenes de prueba, para comprobar los resultados. 89 Memoria. Conclusiones Finalmente se ha llevado a cabo un algoritmo que realiza un reconstrucción en el espacio de un objeto. Sin embargo, este algoritmo funciona bien para objetos con geometrías rectas que contengan esquinas y no para objetos redondeados. Se probaron distintas imágenes, obteniendo muy buenos resultados para la reconstrucción de un cubo. También se empleó una imagen de una grapadora, con la que se obtuvieron unos resultados menos satisfactorios. Por último se utilizaron imágenes de objetos redondeados, como un coche y una taladradora, pero su reconstrucción no fue óptima puesto que dichos objetos apenas tenían esquinas. 90 Memoria. Futuros desarrollos Capítulo 9 FUTUROS DESARROLLOS En este proyecto se ha realizado una primera aproximación a la reconstrucción en tres dimensiones. En primer lugar se han estudiado las principales técnicas de detección de características como son los puntos, bordes y líneas rectas. También se ha investigado sobre diferentes técnicas de segmentación. Todo ello para obtener una visión global de los distintos algoritmos que existe para poder llevar a cabo una reconstrucción en tres dimensiones. Finalmente se realizó una primera reconstrucción en 3D de un objeto. Por tanto este proyecto sirve de base para futuras mejoras y ampliaciones. En un próximo proyecto las ampliaciones podrían ser las siguientes: • Optimizar los algoritmos de esquinas para obtener una detección más precisa, es decir, que eliminen los puntos que no aportan información dejando únicamente aquellos puntos significativos de la imagen. • Perfeccionar la segmentación en imágenes. Evitando que el algoritmo detecte las sombras y brillos de los objetos. Este paso es clave para una correcta obtención de un objeto en 3D. • En la reconstrucción tridimensional, eliminar puntos que no sean del objeto o que no aporten información sobre él. • Probar otras técnicas de reconstrucción para ver si se obtienen resultados mejores o más rápidos. • Reducir el tiempo de ejecución de las distintas funciones, para obtener un algoritmo final más rápido y que pueda trabajar en tiempo real. 91 Memoria. Bibliografía BIBLIOGRAFÍA [1] Seitz, S. M., Curless, B., Diebel, J., Scharstein, D., & Szeliski, R. (2006). A comparison and evaluation of multi-view stereo reconstruction algorithms. Conference on Computer Vision and Pattern Recognition, 2006 IEEE Computer Society, Vol. 1, 519-528. [2] Andrew I. Comport, Éric Marchand, François Chaumette .Robust model-based tracking for robot vision.. IEEE/RSJ Int. Conference on Inteligent Robots and Systems, IROS’04, Sendai, Japan, September 2004. [3] P. Fechteler, P.Eisert. “Adaptive Color Classificateion for Structured Light Systems”. Image Processing Department, Einsteinufer 37, D10587 Berlin, Germany. [4] A. Kirchner, Th. Heinrich. 1998. Model based detection of road boundaries with a laser scanner, Proc. IEEE Int. Conf. on Intelligent Vehicles, Vol. 1, Stuttgart, Germany,pags. 93–98. [5] Cornelis, N., Leibe, B., Cornelis, K., & Van Gool, L. (2008). ”3d urban scene modeling integrating recognition and reconstruction”. International Journal Of Computer Vision, 78(2-3), 121-141. [6] Krotkov, E.P., “Active Computer Vision by Cooperative Focus and Stereo”, Springer-Verlag, NY, 1989. [7] Ahuja, N. “Active Stereo: Integrating Disparity, Vergence, Focus, Aperture, and Calibration for Surface Estimation”, IEEE Trans. on Pattern Ana. & Mach. Intell. Vol. 15, No. 10, Octubre 1993. [8] “Multiple View Geometry”, de Richard Hartley y Andrew Zisserman [9] C. Rocchini, P. Cignoni, C. Montani, P. Pingi, R. Scopigno. 2001. “A low cost 3D scanner based on structured Light”. Istituto di Scienza e Tecnologie dell'Informazione (ISTI), Pisa, Italy. Corner and Edge EUROGRAPHICS 2001. [10] C.Harris, M.Stephens. “A Combined Detector”.Proceedings of The Fourth Alvey Vision Conference, pp 147-151, Manchester, UK. 1988 92 Memoria. Bibliografía [11] H. Moravec. “Obstacle avoidance and navigation in the real world by a seeing robot rover”. Technical Report CMU-RI- TR-3, Carnegie-Mellon University, Robotics Institute, Septiembre,1980. [12] J.Shi, C.Tomasi. “Detection and Tracking of Point Features”.Technical Report CMU-CS-91-132, Abril 2001. [13] J. Shi, C. Tomasi. “Good features to track”. In Proc. of IEEE Conference on Computer Vision and Pattern Recognition (CVPR’94), pp 593–600, Seattle, Washington, Junio 1994. [14] S. Smith, J.Brady.”SUSAN- A new approach to low-level image processing”. International Journal of Computer Vision, Technical Report TR95SMS1c, Abril 1995. [15] F. Mokhtarian, R. Suomela.“Curvature scale space based image corner detection”.European signal processing conference No.9, pp. 2549-2552 Rhodes , GRECE 1998. [16] F. Mokhtarian, R.Suomela, "Robust Image Corner Detection Through Curvature Scale Space," IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 20, no. 12, pp. 1376-1381, Dec. 1998, doi:10.1109/34.735812 [17] He, X.C , Yung, N.H.C.”Curvature scale space corner detector with adaptive threshold and dynamic region of support”.Pattern Recognition, 2004. ICPR 2004. Proceedings of the 17th International Conference on Volume 2, Issue , 23-26 Agosto 2004. [18] P. Tissainayagam, D. Suter. “Assessing the performance of corner detectors for point feature tracking applications”. Australia, 2004. [19] C.S. Kenney, M.Zuliani, B.S. Manjunath.”An Axiomatic Approach to Corner Detection”. University of California, Santa Barbara. Computer Vision and Pattern Recognition, 2005. [20] J.Canny, “A Computational Approach to EdgeDetection”, IEEE Trans. Pattern Analysis and Machine Intelligence, 8:679-714, November 1986 [21] Maar, D., Hildreth E., “Theory of edge detection”,Proceedings Royal Soc. London, vol. 207, 187-217,1980 [22] H.Shan Neoh, A. Hazanchuk .”Adaptive Edge Detection for RealTime Video Processing using Fugas”. 93 Memoria. Bibliografía [23] Michael D. Heath, “A robust Visual method for assessing the relative performance of Edge detection Algorithms”. University of South Florida, Diciembre 1996. [24] Kenneteh R. Castleman. Digital Image Processing. Prentice Hall, 1996 [25] S. El Mejdani, R. Egli, F. Dubeau.“Old and new straight-line detectors: Description and comparison “.Septiembre 2005. [26] D.H.Ballard.“Generalizing the Hough Transform to detect arbitrary shapes”. Septiembre 1980. [27] “State-of-the-Art Survey on Color Segmentation Methods”.2005 [28] M.Kass, A. Witkin, D. Terzopoulos.“Snakes: Active Contour Models. International Journal of Computer Vision, 1988. [29] Tony F. Chan.“Active Contours Without Edges”.IEEE Transactions on image processing, Vol.10, No.2. Febrero 2001. [30] A.B. Samma, R. A. Salam.“Adaptation of K-Means Algorithm for Image Segmentation”. Proceedings of World Academy of Science, Engineering [31] S.Tatiraju,A. Mehta. “Image Segmentation using k-means clustering,EM and Normalized Cuts”. Department of EECS, University Of California . 94 Parte II MANUAL DE USUARIO Manual de usuario. Detección de características Capítulo 1 DETECCIÓN DE CARACTERÍSTICAS 1 Detección de esquinas A continuación se detallan las diferentes funciones empleadas con el programa MATLAB, para la detección de esquinas. Se explican los parámetros necesarios para su ejecución así como el resultado que proporcionan. Todas las funciones están basadas en los algoritmos anteriormente descritos en el Capítulo 3 y se encuentran en la carpeta Detectores Esquinas. 1.1 Detector de Harris La función harrisCorner.m, es una implementación del detector de Harris del Capítulo 3 de la sección 2.1. A esta función se le pasan como argumentos una imagen en color ( de la forma nombre_imagen.jpg o nombre_imagen.bmp ) y el parámetro de detección de Harris (suele ser aconsejable un valor entre 500 y 4000). El resultado es una matriz con las coordenadas de la imagen de las esquinas detectadas. Para verificar las esquinas, la función proporción ala imagen introducida superpuesta con las esquinas, representadas en color verde. Esta función tiene la siguiente forma: esquinas = harrisCorner(im, valor) im = imagen a detectar esquinas en color. valor = parámetro de Harris (entre 500 y 400). esquinas = matriz N*2 con las coordenadas de las esquinas detectadas. 96 Manual de usuario. Detección de características 1.2 Detector de KLT La función kltCorner.m es una implementación del detector de KandadeLucas-Tomasi (KLT) del Capítulo 3 de la sección 2.2. Los argumentos a introducir en esta función una imagen en color ( de la forma nombre_imagen.jpg o nombre_imagen.bmp ),D que corresponde con el tamaño de la ventana DxD ( es recomendable un valor entre 5 y 10) y T, el límite del autovalor λ 2 ( en las imágenes probadas se usaron valores entre 30000 y 60000). Al ejecutar esta función € el resultado son las coordenadas de la imagen con las esquinas detectadas y una figura con la imagen y las esquinas en color rojo. La función para la detección de esquinas por KLT es: esquinas = kltCorner(im,D,T) im = imagen a detectar esquinas en color. D = tamaño de la ventana (entre 5 y 10). T = límite del autovalor (entre 30000 y 60000). esquinas = matriz N*2 con las coordenadas de las esquinas detectadas. 1.3 Detector SUSAN Para realizar una detección de esquinas utilizando el detector SUSAN se emplea la función SUSAN.m, siendo necesario ejecutar el archivo SUSAN.dll. La función es la siguiente: edges = susan(im,'[options]') im = imagen a detectar esquinas en escala de grises. [options] = ‘ci’ permite detectar esquinas y ‘ei’ bordes. 97 Manual de usuario. Detección de características 1.4 Detector CSS Para llevar a cabo una detección de esquinas por el método CSS, descrito en el Capítulo 3 de la sección 2.4 se emplea la función CSSCorner.m. En esta función sólo es necesario introducir la imagen en color que se desea analizar con a forma nombre_imagen.jpg o nombre_imagen.bmp y el resultado obtenido será las coordenadas de los píxeles considerados esquinas, y su representación en la imagen original. Siendo la función del detector CSS: esq = CSSCorner (im) im = imagen a detectar esquinas en color. esq = matriz N*2 con las coordenadas de las esquinas detectadas. 2 Detección de bordes Para la detección de bordes se emplearon las funciones ya implementadas en el programa MATLAB, ya que se obtienen buenos resultados. La funcióndetectorbordes.m permite obtener los bordes por los métodos explicados en el Capítulo 3 de la sección 3. Si se pasa a la función una imagen en color, se obtiene una imagen binaria (blanco y negro) , siendo los bordes los píxeles de color blanco. La función se puede llamar de la siguiente manera: detectorbordes(im) im = imagen a detectar bordes en color. 3 Detección de líneas rectas Para la detección de líneas rectas, se emplea la función Hough_Grd.m. 98 Manual de usuario. Detección de características Esta función detecta las líneas rectas en una imagen en escala de grises (será necesario convertir una imagen a color en escala de grises). Los parámetros son la imagen en escala de grises y otros parámetros que se ponen por defecto (mirar ejemplo en la carpeta Demo). [accum, axis_rho, axis_theta] = Hough_Grd(img) img = imagen en escala de grises en la que se quiere detectar líneas rectas. acumm = valores del acumulador de la transformada de Hough. axis_rho = vector que contiene los valores de rho del acumulador. axis_theta = vector que contiene los valores de theta del acumulador. 99 Manual de usuario. Segmentación Capítulo 2 SEGMENTACIÓN Las funciones necesarias para llevar a cabo la segmentación de una imagen se encuentran en la carpeta Segmentación. Todas las funciones en esta carpeta están basadas en los algoritmos del Capítulo 4. 1 Contornos Activos Para segmentar una imagen por el métodos de contornos activos se utiliza la función region_seg.m. Esta función necesita como parámetros la imagen a segmentar, una matriz que corresponde con la máscara inicial donde la función empieza a segmentar y por último el número de iteraciones. Los dos últimos parámetros son de especial importancia, ya que si no se introducen correctamente no se lleva a cabo ningún tipo de segmentación. El resultado obtenido es una imagen segmentada en dos partes, una el objeto y otra el fondo, siendo la salida una imagen binaria. seg = region_seg(I,init_mask,max_its) I = imagen en color a segmentar. ini_mask = máscara inicial donde, un ejemplo sería: m = zeros(size(I,1),size(I,2)); m(111:222,123:234) = 1; max_its = número de iteraciones (entre 1000 y 5000). seg = imagen binaria segmentada. 100 Manual de usuario. Segmentación 2 K-means La función imgkmeans.m permite segmentar una imagen en tantas partes como se le especifique. Para ello a la función se le debe introducir la imagen a segmentar y el número de clusters. Existen otros dos parámetros en la función, uno que permite reducir el tamaño de la imagen y el otro permite ver los pasos intermedios. Por lo general estos valores se suelen dejar a 1, de tal forma que la imagen mantenga el tamaño original y se vean los pasos intermedios. Dependiendo del número de clusters especificados en la función, la imagen se segmentará en varias partes. El resultado es una imagen en color con tantas zonas como clusters, siendo cada zona el color medio. J = imgkmeans(I,k,r,show) I = imagen en color a segmentar. k = número de clusters o divisiones (valor mínimo 2). r = escala de reducción de la imagen (para una mayor rapidez), para mantener el tamaño del imagen original poner a 1. show = si se desean ver los pasos intermedios poner a 1. J =imagen segmentada con k clusters o divisiones. 101 Manual de usuario. Reconstrucción en 3D Capítulo 3 RECONSTRUCCIÓN EN 3D Para llevar a cabo una reconstrucción de un objeto son necesarias varias funciones que se encuentran en la carpeta Reconstruccion. La función reconstruccion.m llama a todas las funciones necesarias, para realizar una reconstrucción. En primer lugar es necesario introducir dos imágenes en color, la imagen tomada por la cámara izquierda y la imagen tomada por la cámara derecha y a continuación se irán mostrando los distintos pasos: segmentación de la imagen, detección de características, correlación entre ambas imágenes y representación en 3D. Otras funciones incluidas en la carpeta Reconstrucción son las siguientes: La función MatchLineaCorrelacion.m, permite obtener los puntos de la imagen de la cámara izquierda en la imagen derecha. A esta función se le pasan como argumentos los puntos característicos (esquinas), las dos imágenes, el ancho de la celda para realizar la correlación y la matriz fundamental. Para realizar la correlación, llama a la función FindEpipolarLines.m para hallar las líneas epipolares en la imagen de la derecha. Esta función necestita como argumentos las coordenadas en x e y de las esquinas, ambas en forma de vector columna. Una vez obtenidas las líneas epipolares, se lleva a cabo la correlación de un punto sobre todos los puntos que forman la línea epipolar, mediante la función CorrelacionLinea.m. Esta función recibe los parámetros de la línea epipolar, las dos imágenes, la coordenada x desde donde va empezar la correlación y la coordenada x final. Para realizar la correlación entre puntos se emplea la función CorrelacionPunto.m. La función LinearTriangulation.m, obtiene los puntos en 3D (coordenadas), si se le pasan como argumentos las esquinas de la imagen izquierda y los puntos correspondientes de la imagen derecha. 102 Manual de usuario. Reconstrucción en 3D Todos los parámetros intrínsecos de la cámara estéreo se encuentran en ParámetroIntrínsecos.m. Otra función en la carpeta Reconstruccion es DibujaLineasenImagen.m, que permite dibujar líneas dados sus parámetros a,b y c. Esta función se empleó para dibujar las líneasepipolares en la imagen derecha y ver si efectivamente pasaban por los puntos detectados. A continuación se detallan más concretamente los parámetros de cada función: reconstruccion(imagen_izq, imagen_dcha) imagen_izq = imagen tomada por la cámara de la izquierda. imagen_dcha = imagen tomada por la cámara de la derecha. [puntos_d, f_confianzas] = MatchLineaCorrelacion(puntos_i, imagen_i, imagen_d, ancho_celda, F) puntos_i = matriz de N*2 con las esquinas detectadas en la imagen de la izquierda. imagen_i = imagen tomada por la cámara izquierda. imagen_d = imagen tomada por la cámara derecha. ancho_celda = ancho de celda para realizar la correlación (alrededor de 21). F = matriz fundamental entre las dos imágenes. puntos_d = puntos correspondientes en la imagen derecha. f_confianzas = vector con factor de confianza de cada punto. [a b c] = FindEpipolarLines(coordX, coordY, F) 103 Manual de usuario. Reconstrucción en 3D coordX = vector columna con las coordenadas X de las esquinas detectadas. coordY = vector columna con las coordenadas Y de las esquinas detectadas. F = matriz fundamental. [a b c] = matriz con los parámetros de la línea epipolar (siendo la línea de la forma a*x + b*y + c = 0). [punto_d value, f_confianza] = CorrelacionLinea(a,b,c, punto_i, I, D, x_ini, x_fin, ancho_celda) a = parámetro a de la línea epipolar. b= parámetro b de la línea epipolar. c = parámetro c de la línea epipolar. punto_i = punto en la imagen izquierda. I = imagen izquierda. D = imagen derecha. x_ini = x desde donde empieza la correlación. x_fin = x fin hasta donde se realiza la correlación. [valor_corr] = CorrelacionPunto(punto_i, punto_d, I, D, ancho_celda) punto_i = punto en la imagen izquierda. punto_d = punto en la imagen derecha. I = imagen izquierda. D = imagen derecha. ancho_celda = ancho de celda para realizar la correlación. 104 Manual de usuario. Reconstrucción en 3D valor_corr = valor de la correlación. [ puntos3D ] = LinearTriangulation(puntosI, puntosD, Pi, Pd) puntosI = matriz de N*2 con las esquinas detectadas en la imagen de la izquierda. puntosD = puntos correspondientes en la imagen derecha. Pi = parámetros intrísecos de la cámara de la izquierda. Pd = parámetros intrísecos de la cámara de la derecha. puntos3D = matriz N*4 con las coordenadas en tres dimensiones del punto. DibujaLineasEnImagen(a, b, c, imagen) a = vector columna con el parámetro a de la recta. b = vector columna con el parámetro b de la recta. c =vector columna con el parámetro c de la recta. imagen = imagen donde se quieren dibujar las líneas. 105 DOCUMENTO Nº 2: PLIEGO DE CONDICIONES Índice Parte ICapítulo 32.1 Capítulo 1 Pliego de condiciones generales y económicas..........................3 1 Condiciones generales............................................................................3 2 Condiciones económicas........................................................................4 Capítulo 2 Pliego de condiciones técnicas y particulares ............................6 1 Equipo informático. .................................................................................6 2 Normas de calidad. ..................................................................................6 3 Normas de Seguridad e Higiene.............................................................6 4 Vida útil del producto. .............................................................................6 Pliego de condiciones. Pliego de condiciones generales y económicas. Capítulo 1 PLIEGO DE CONDICIONES GENERALES Y ECONÓMICAS. 1 Condiciones generales. Las condiciones y cláusulas que se establecen en este documento son de obligado cumplimiento por las partes contratantes. I. Tanto el administrador como el cliente se comprometen desde la fecha de la firma del contrato a llevar a cabo lo que se estipule. II. Ante cualquier reclamación o discrepancia en lo concerniente al cumplimiento de lo pactado por cualquiera de las partes, una vez agotada toda vía de entendimiento, se tramitará el asunto por la vía de lo legal. El dictamen o sentencia que se dicte será de obligado cumplimiento para las dos partes. III. Al firmarse el contrato, el suministrador se compromete a facilitar toda la información necesaria para la instalación y buen funcionamiento del sistema, siempre que sea requerido para ello. IV. Asimismo, el cliente entregará al suministrador todas las características distintivas del equipo comprado y aquellas otras que considere oportunas para el necesario conocimiento de la misma a efectos del diseño del presente equipo. V. El plazo de entrega será de tres meses, a partir de la fecha de la firma del contrato, pudiendo ampliarse en un mes. Cualquier modificación de los plazos deberá contar con el acuerdo de las dos partes. 3 Pliego de condiciones. Pliego de condiciones generales y económicas. VI. En caso de retrasos imputables al suministrador, se considerará una indemnización del 1 % del valor estipulado por semana de retraso. VII. Existirá un plazo de garantía de un año a partir de la entrega del sistema. Dicha garantía quedará sin efecto si se demostrase que el sistema ha estado sometido a manipulación o uso indebido. VIII. Cumplido dicho plazo de garantía, el suministrador queda obligado a la reparación del sistema durante un plazo de cinco años, fuera del cual quedará a su propio criterio atender la petición del cliente. IX. En ningún momento tendrá el suministrador obligación alguna frente a desperfectos o averías por uso indebido por personas no autorizadas por el suministrador. 2 Condiciones económicas. I. Los precios indicados en este proyecto son firmes y sin revisión por ningún concepto, siempre y cuando se acepten dentro del periodo de validez del presupuesto que se fija hasta Diciembre de 2001. II. El pago se realizará como sigue: h 75% a la firma del contrato. h 25% en el momento de entrega. III. La forma de pago será al contado mediante cheque nominativo o mediante transferencia bancaria. En ningún caso se aceptarán letras de cambio. IV. El suministrador se hará cargo de los gastos de embalaje y del transporte, dentro de la ciudad donde se encuentre la instalación. En caso de ser necesario transporte interurbano, el gasto correrá por cuenta del cliente. En todo caso, el 4 Pliego de condiciones. Pliego de condiciones generales y económicas. responsable de los posibles desperfectos ocasionados por el transporte será el suministrador. V. Durante el plazo de garantía, la totalidad de los gastos originados por las reparaciones correrán por cuenta del suministrador. VI. Fuera de dicho plazo y durante los siguientes cinco años, los costes serán fijados mediante acuerdo por ambas partes. Pasados 5 años, éstos los fijará exclusivamente el suministrador. 5 Pliego de condiciones. Pliego de condiciones técnicas y particulares Capítulo 2 PLIEGO DE CONDICIONES TÉCNICAS Y PARTICULARES 1 Equipo informático. • El equipo informático debe estar homologado conforme a la normativa Europea y Española a fecha de Junio de 2001. • El equipo informático debe instalarse conforme a las indicaciones del fabricante, manteniendo las condiciones de humedad y temperatura entre los límites marcados. • Los programas informáticos empleados han de contar con la licencia preceptiva y cumplir con las condiciones de la misma. En caso de usar programas de licencia GNU, se deberán respetar las condiciones de la misma. 2 Normas de calidad. Los sistemas se diseñarán de forma que cumplan las normas UNE, CEI y EN aplicables a este tipo de productos, así como las normas ETSI (European Telecommunications Standards Institute) para sistemas de radiofrecuencia. 3 Normas de Seguridad e Higiene. El proyecto cumplirá con la Ley 31/95 de Prevención de Riesgos Laborales. 4 Vida útil del producto. Los sistemas se diseñarán para una vida útil no inferior a 10 años en funcionamiento continuo. 6 DOCUMENTO Nº 3: PRESUPUESTO Índice Capítulo 1 Coste del sistema................................................................... 2 1 Introducción......................................................................................... 2 2 Equipo necesario................................................................................. 2 3 Coste Mano de Obra............................................................................ 2 4 Presupuesto Total ............................................................................... 3 Presupuesto. Coste del sistema. Capítulo 1 1 COSTE DEL SISTEMA. Introducción En este capítulo se calculará el presupuesto que se necesitaría si alguna empresa encargara el desarrollo de un sistema para la reconstrucción en tres dimensiones de un objeto, como el que se ha expuesto en la memoria. El sistema estará compuesto por una cámara estéreo conectada a un ordenador y el algoritmo para el tratamiento de la imagen. Para obtener el presupuesto total, se ha dividido en dos partes: el equipo necesario y la mano de obra del ingeniero. 2 Equipo necesario El equipo necesario se divide de la siguiente manera: • Ordenador: 900 €. • Cámara estéreo Bumblebee2: 1.500 €. • Software utilizado (MATLAB 7.4 R2007a): 6.000 €. DESCRIPCIÓN Ordenador 900 € Cámara estéreo Bumblebee 2.476 € Software Utilizado (MATLAB 7.6 R2008a) 7.500 € TOTAL EQUIPO 3 PRECIO 10.876 € Coste Mano de Obra El coste de la mano de obra se ha obtenido teniendo en cuenta que el coste por hora de un ingeniero es de 60€/hora. 2 Presupuesto. Coste del sistema. Para el presente proyecto se han empleado aproximadamente un total de 700 horas divididas de la siguiente forma: • 300 horas invertidas en el estudio y lectura de documentación previa. • 300 horas invertidas en el desarrollo de los algoritmos. • 100 horas en la realización de pruebas con imágenes TOTAL MANO DE OBRA 4 42.000 € Presupuesto Total DESCRIPCIÓN PRECIO Coste Equipo 10.876 € Coste Mano de obra 42.000 € TOTAL EQUIPO 52.876 € 3