reconstrucción 3d de modelos utilizando técnicas de visión

Anuncio
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
Descargar