Publicado el 6 de Julio del 2018
939 visualizaciones desde el 6 de Julio del 2018
11,9 MB
132 paginas
Creado hace 14a (29/06/2010)
Universidad Complutense de Madrid
Facultad de Informática
Proyecto de Sistemas Informáticos 2009/2010
Sistema de Visión Estereoscópica
para Navegación Autónoma de
vehículos no tripulados
por
Daniel Martín Carabias
Raúl Requero García
José Andrés Rodríguez Salor
Profesor director: Gonzalo Pajares Martinsanz
Madrid, 2010
Se autoriza a la Universidad Complutense a difundir y utilizar con fines académicos, no comerciales
y mencionando expresamente a sus autores, tanto la propia memoria, como el código, la
documentación y/o el prototipo desarrollado.
Firmado:
Resumen
La visión estereoscópica artificial es un campo muy amplio que forma parte de lo que se conoce
como visión por computador. Técnicamente consiste en el procesamiento de dos imágenes obtenidas
mediante sendas cámaras, a partir de una escena tridimensional 3D. Este procesamiento está orientado
a reconstruir la escena en 3D a partir de las dos imágenes, izquierda y derecha. Un aspecto que cabe
destacar es que las cámaras están desplazadas una cierta distancia, tal y como ocurre con nuestros
ojos. El trabajo del computador consiste en identificar en ambas imágenes aquellos píxeles en las
dos imágenes que se corresponden con la misma entidad física en la escena 3D, usando para ello
algoritmos especializados. La distancia que separa estos píxeles se conoce como disparidad. La medida
de la disparidad sirve para obtener la distancia a la que se sitúa físicamente ese objeto en la escena
con respecto a las dos cámaras.
La visión estereoscópica es un campo que tiene numerosas aplicaciones y en el que a día de hoy
se están invirtiendo numerosos recursos en investigación. Concretamente, una de esas aplicaciones es
la detección de obstáculos por parte de robots. Nuestro proyecto está orientado hacia esa aplicación
práctica, si bien se centra exclusivamente en los aspectos relacionados con la correspondencia de los
elementos homólogos en las imágenes. Para ello hemos implementado diversas técnicas y algoritmos
de visión estereoscópica usando el lenguaje de programación C#.
Palabras clave: visión estéreo, estereopsis, visión por computador, cámaras, escena 3D, dispa-
ridad, C#, tratamiento de imágenes, anaglifo, robótica
Abstract
Stereo vision is a broad field that is part of computer vision. Technically, it consists of the
processing of two images adquired by two cameras, from a given scenario. This processing is aimed
to reconstruct the 3D scene from both images, namely left and right images. One thing that is worth
mentioning is that the two cameras are shifted a certain distance, as it happens with our eyes. The
computer basically identifies in both images those pixels that match, using specialized algorithms.
The distance that separates those pixels is known as disparity. Disparity is next used in the calculation
of the distance between the object in the scene and the cameras.
Stereo vision (also known as stereopsis) is a field with multiple applications and in which it is
invested many resources in research. One of those applications is the detection of obstacles by
robots. Our project is oriented towards this practical application; although this work is focused only
on the computation of the disparities, i.e. the correspondence between pixels in the images. We have
implemented several stereo vision techniques and algorithms using the C# programming language.
Keywords: stereo vision, stereopsis, computer vision, cameras, 3D image, robotics, disparity,
C#, image processing, anaglyph
Índice general
1 Introducción
1.1 Motivación del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Objetivo del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Organización de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Conceptos teóricos
2.1
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Geometría del sistema estereoscópico . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Algoritmo estándar de correlación . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Algoritmo estéreo de Lankton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Diseño técnico del proyecto
3.1
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Organización del diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Diagramas de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2 Principales diagramas de secuencia del algoritmo de correlación . . . . . . .
3.2.3 Principales diagramas de secuencia del algoritmo de Lankton . . . . . . . . .
4 Servicios y tecnologías utilizados
.NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1
4.2 AForge.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Windows Presentation Foundation (WPF) . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Windows Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2
¿Por qué Windows Presentation Foundation? . . . . . . . . . . . . . . . . .
4.3.3 Construir interfaces gráficas en WPF mediante Expression Blend . . . . . . .
5 Manual de usuario
6 Proceso de desarrollo
6.1 Análisis previo en MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Desarrollo en C# del algoritmo estándar . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Desarrollo de un nuevo algoritmo: Lankton . . . . . . . . . . . . . . . . . . . . . . .
6.4 Búsqueda y desarrollo de una nueva versión del algoritmo de Lankton . . . . . . . .
6.5 Problemas de rendimiento en la implementación en C# . . . . . . . . . . . . . . . .
6.6 Pruebas con imágenes reales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.7 Detección de objetos en la imagen . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integración con el simulador de robot . . . . . . . . . . . . . . . . . . . . . . . . . .
6.8
1
3
3
3
3
5
5
5
6
7
9
9
10
10
12
14
19
19
20
20
20
20
21
23
31
31
31
32
32
32
34
34
35
2
ÍNDICE GENERAL
7 Resultados y conclusiones
7.1
Imágenes utilizadas
7.1.1
7.1.2
7.1.3
7.1.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Imágenes de Middlebury
Imágenes de simulador
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Imágenes reales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Imágenes reales, para detección de objetos . . . . . . . . . . . . . . . . . . .
7.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Resultados con las imágenes de Middlebury . . . . . . . . . . . . . . . . . .
7.2.2 Resultados con las imágenes de simulador
. . . . . . . . . . . . . . . . . . .
7.2.3 Resultados con las imágenes reales . . . . . . . . . . . . . . . . . . . . . . .
7.2.4 Resultados obtenidos para la detección de objetos . . . . . . . . . . . . . . .
37
37
37
38
38
39
40
40
41
45
47
A Diseño técnico completo. Diagramas de secuencia
A.1 Diagramas del algoritmo de correlación . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Diagramas del algoritmo de Lankton y de su versión mejorada . . . . . . . . . . . .
A.3 Diagramas de la clase BitMapFast
. . . . . . . . . . . . . . . . . . . . . . . . . . .
A.4 Diagramas de la clase Filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.5 Diagramas de la clase Gradiente
49
49
60
92
96
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
B Interfaz de programación de la aplicación
123
B.1 Espacio de nombres ProyectoSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
B.1.1 Clase ProyectoSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Capítulo 1
Introducción
1.1 Motivación del proyecto
La visión estereoscópica artificial es un campo que tiene especial importancia en la robótica. Los robots
que son enviados a otros planetas por las agencias espaciales tienen que dirigirse por un terreno que
no está libre de obstáculos. Por lo tanto, estos robots, además de estar equipados por dos cámaras,
deben incorporar un determinado software que permita reconstruir la escena en 3D a partir de cada
par de imágenes que capturen.
Ese software no solamente debe reconstruir la escena 3D con la mayor precisión posible, es im-
portante también que lo haga en el menor tiempo posible, con el fin de que las decisiones se tomen
de manera precisa y ajustada en el tiempo.
Esta aplicación se plantea también con el objetivo de integrarla en otro proyecto dentro de la asig-
natura Sistemas Informáticos enfocado a la navegación de un robot. Nuestro proyecto proporcionaría
la información suficiente para que el robot determine la presencia de obstáculos en una determinada
posición y a una determinada distancia, y por tanto pueda modificar su trayectoria para eludirlo.
1.2 Objetivo del proyecto
En visión estereoscópica artificial existe una gran cantidad de algoritmos, siendo algunos más eficien-
tes que otros en términos de precisión y tiempo de respuesta. El objetivo principal de este proyecto es
desarrollar una aplicación que obtenga la representación 3D de una escena a partir de dos imágenes
tomadas mediante cámaras. Para ello hemos analizado los algoritmos de visión en estéreo más pro-
metedores y hemos elegido e implementado aquellos que nos han parecido más apropiados. A partir
de la información que proporcionen estos algoritmos se podría ayudar a planificar la ruta de un robot
autónomo.
1.3 Organización de la memoria
Esta memoria está organizada en los siguientes capítulos. En el capítulo segundo se analizan los
conceptos teóricos en los que está basado el prototipo que hemos construido. En el capítulo ter
Comentarios de: Sistema de Visión Estereoscópica para Navegación Autónoma de vehículos no tripulados (0)
No hay comentarios