IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …
Transcript of IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …
IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA ENTRE PÍXELES
EMPLEANDO GEOMETRÍA EPIPOLAR, PARA APLICACIONES DE VISIÓN
ESTEREOSCÓPICA
STEVEN BARROS GALLEGO
LAURA MERCEDES AGUDELO GRANDA
UNIVERSIDAD DE SAN BUENAVENTURA SECCIONAL MEDELLÍN
FACULTAD DE INGENIERÍAS
PROGRAMA DE INGENIERÍA ELECTRÓNICA
MEDELLIN
2015
IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA ENTRE PÍXELES
EMPLEANDO GEOMETRÍA EPIPOLAR, PARA APLICACIONES DE VISIÓN
ESTEREOSCÓPICA
STEVEN BARROS GALLEGO
LAURA MERCEDES AGUDELO GRANDA
Proyecto de grado presentado para optar al título de Ingeniero Electrónico
Asesor
Camilo Andrés Flórez Velásquez, Ingeniero Electricista
UNIVERSIDAD DE SAN BUENAVENTURA SECCIONAL MEDELLÍN
FACULTAD DE INGENIERÍAS
PROGRAMA DE PREGRADO DE INGENIERÍA ELECTRÓNICA
MEDELLÍN
2015
CONTENIDO
1. RESUMEN Y PALABRAS CLAVES
2. INTRODUCCIÓN
3. FUNDAMENTOS DE GEOMETRÍA EPIPOLAR
4. MATRÍZ FUNDAMENTAL (F) Y TÉCNICAS DE ESTIMACIÓN DE LA MATRÍZ F
5. CORRESPONDENCIA ENTRE PÍXELES: ALGUNAS TÉCNICAS PARA DETERMINAR
PUNTOS CORRESPONDIENTES ENTRE IMÁGENES
6. RESULTADOS Y ANÁLISIS DE RESULTADOS
7. CONCLUSIONES
8. LISTA DE TABLAS
9. LISTA DE FIGURAS
10. BIBLIOGRAFÍA
11. ANEXOS
4
1. RESUMEN
Los sistemas de visión artificial son ampliamente empleados en aplicaciones de
navegación robótica donde se requiere extraer del ambiente, información sobre las
dimensiones de los objetos y obstáculos presentes con la finalidad de planificar la
estrategia de navegación más adecuada que optimice la energía consumida y el tiempo
necesario para navegar el espacio bajo condiciones controladas o no controladas.
En particular la visión artificial estereoscópica es ampliamente utilizada para la
reconstrucción de entornos de tres dimensiones, dada su buena precisión y simpleza
algorítmica. (Sáez Martínez, 2001).
La estimación de las coordenadas en tres dimensiones de un punto del espacio capturado
simultáneamente por dos o más cámaras, es una tarea simple que se reduce a la
resolución de un sistema de ecuaciones lineales o no lineales (Hartley, Zisserman, 2001).
Uno de los problemas clásicos es la detección del punto 3-D de interés en las imágenes
capturadas por el sistema de visión artificial, que recibe el nombre del “Problema de
correspondencia entre píxeles”, que a la fecha sigue siendo un problema abierto a
múltiples y novedosas soluciones (Mujika, 2010; Brendstrup, 2013). En particular se
propone en el presente proyecto de grado analizar algunas técnicas de correspondencia
entre píxeles fundamentadas en la aplicación de la geometría epipolar y del uso de
matrices fundamentales, con la finalidad de evaluar el éxito de las técnicas a la hora de
detectar píxeles correspondientes entre varias imágenes, para su posterior uso en la
reconstrucción 3D de objetos bajo condiciones de luz controlada.
La metodología propuesta para abordar la solución del problema parte del desarrollo de
los modelos matemáticos que rigen a las cámaras digitales y su interrelación con los
conceptos de la geometría epipolar. Se propone diseñar y ejecutar algunas simulaciones
del sistema de visión estereoscópica + correspondencia de píxeles propuesto empleando
Matlab, usando los parámetros de calibración de las cámaras provenientes del trabajo
elaborado por (Zapata Herrera; Silva Narvaez, 2015); con la finalidad de cuantificar la
precisión del algoritmo construido a la hora de predecir las coordenadas en tres
dimensiones de varios puntos representativos del objeto a reconstruir. Luego se
procederá a implementar un programa ejecutable en Matlab (GUI) que incorpore el
5
algoritmo de correspondencia diseñado, para su posterior aplicación en la reconstrucción
de coordenadas 3D. Finalmente se procederá a medir el error cometido por el sistema de
visión implementado respecto a las posiciones reales de los puntos en 3D medidos en
función de la distancia.
Los productos a generar son los siguientes: Interface gráfica en Matlab para la estimación
de coordenadas en tres dimensiones de puntos representativos de un objeto, empleando
las matrices de calibración, la matriz fundamental y el algoritmo de correspondencia entre
píxeles.
Palabras claves:
Visión Artificial, Visión Estereoscópica, Reconstrucción 3D, Geometría Epipolar, Matriz
Fundamental, Correspondencia entre Píxeles
6
2. INTRODUCCIÓN
La visión artificial es ampliamente utilizada en aplicaciones donde se es necesario obtener
información de entornos 3D para la toma de decisiones en sectores estratégicos tales
como la medicina (escáneres y procesamiento, cirugía robotizada, tomografías), el sector
militar en la búsqueda de objetivos, aplicaciones de rescate en desastres, y en particular a
la resolución de problemas asociados a la navegación robótica.
Este tipo de visión artificial se emplea en particular en problemáticas asociadas a la
reconstrucción de entornos 3D con la finalidad de planificar una navegación en entornos
controlados / no controlados de agentes robóticos, cuyas aplicaciones van desde la
planificación de tareas de enjambres de robots hasta el control automático de la dirección
de automóviles, área en la cual ya se han realizado avances tecnológicos importantes,
como por ejemplo, el desarrollo de un prototipo de laboratorio de un dispositivo universal,
que puede controlar la dirección de un automóvil en carretera sin intervención del
conductor (Naranjo y Jiménez, 2012).
El método para estimar las coordenadas en tres dimensiones de un punto P del espacio
cuyas imágenes han sido capturadas por un sistema de visión estereoscópico de dos o
más cámaras, requiere del uso de las matrices de la calibración de las mismas (Zapata
Herrera, Silva Narváez; 2015), y además de la aplicación de un algoritmo de
correspondencia de píxeles, que sirve para calcular las coordenadas en dos dimensiones
de un punto P’ capturado en la imagen 2 a partir de la coordenadas en píxeles del mismo
punto tomado en la imagen 1.
El algoritmo de correspondencia de píxeles requiere de información previa de las
relaciones geométricas existentes entre las escenas filmadas por el sistema de cámaras,
y esta información esta soportada por los principios y teoremas de la geometría epipolar
(Puente, 2005).
(Löbel, 2009) establece un método utilizado en la literatura para la determinación de las
propiedades epipolares presentes en el sistema de visión artificial, a partir del uso de las
matrices esencial y fundamental.
7
Existen varios métodos para estimar los parámetros de la matriz fundamental (Puente,
2005), entre los cueles se destacan el método lineal, el método de los 8 puntos, el método
de los 8 puntos normalizados entre otros.
De igual forma existen varias técnicas para establecer la correspondencia entre píxeles de
dos imágenes (Ramirez, 2000), entre las cuales se destacan el método de correlación
cruzada normalizada (Zero Normalized Cross Correlation) ZNCC.
El Gobierno de la República de Colombia no es ajeno a estos desarrollos tecnológicos, y
a través de su entidad reguladora de la Investigación Científica, Colciencias, propone en
su Plan Estratégico ETI 2013 (Electrónica – telecomunicaciones e informática), las líneas
de investigación más relevantes para el desarrollo de la industria nacional, entre las
cuales se encuentran la robótica aplicada y el desarrollo de sistemas de procesamiento
digital; en particular sus aplicaciones en el área de logística y control de transporte; donde
encaja perfectamente el desarrollo de sistemas de visión artificial para el control y
automatismo de la navegación planificada o reactiva de plataformas robóticas móviles.
En Colombia, existen muy pocos proyectos de grado orientados al desarrollo de
algoritmos para la estimación de parámetros de la matriz fundamental, y del estudio del
grado de precisión de las técnicas de correspondencias de píxeles entre dos o más
imágenes, en particular existen algunos trabajos entre los cuales se destaca: (Castro
Quintana, 2011), que implementó una solución de visión estereoscópica usando un
enfoque no calibrado, es decir sin la necesidad de emplear las matrices de calibración de
las cámaras, sólo empleando la teoría de geometría epipolar. Los resultados obtenidos
por el autor -muestran que las ecuaciones no lineales que resuelven el problema de la
estimación de las coordenadas en tres dimensiones de un punto usando geometría
epipolar, presentan serios problemas de condicionamiento numérico. (Robles, 2013)
propone una técnica para controlar el eyector de un brazo robótico, empleando los
softwares OPEN CV y Matlab que se encargaron de estimar las matrices de calibración de
las cámaras, como los parámetros de la matriz fundamental; para su posterior uso en el
control de posición del dispositivo. (Hoyos et al, 2010) presentan un estudio comparativo
entre algunas técnicas de correspondencia entre píxeles a partir de la estimación previa
de la matriz fundamental del sistema de visión, donde se ilustra la necesidad de seguir
explorando nuevas metodologías para resolver el problema del Matching entre puntos de
dos imágenes.
8
De la información presentada, se concluye, que no hay un gran número de
investigaciones a nivel local y nacional dedicadas al estudio de técnicas de estimación de
matrices fundamentales y de algoritmos de correspondencia entre píxeles, para su
aplicación en la determinación de las coordenadas 3D de puntos espaciales capturados
por un sistema de visión artificial estereoscópica; además la temática de estudio
mencionada es de vital interés para la nación a partir de la información presentada en el
informe ETI (Colciencias, 2013)
A partir de lo expuesto, se propone elaborar un análisis comparativo entre algunas
técnicas de estimación de matrices fundamentales, y entre algunas técnicas de
correspondencia entre píxeles en un sistema de visión estereoscópica, con la finalidad de
emplear a futuro estas técnicas en el control de navegación de vehículos a gasolina o
eléctricos bajo condiciones experimentales.
Se propone una investigación de corte cuantitativo por medio de un método “deductivo-
inductivo” e “inductivo-deductivo”.
Para la reconstrucción de un entorno 3D a partir de un sistema de visión artificial
estereoscópico, es necesario aplicar los conceptos acerca de la geometría epipolar;
geometría encargada de modelar los principios de relación entre puntos de dos imágenes.
Los parámetros y condiciones que rigen dicha geometría, se encuentran establecidos en
la matriz fundamental F.
En la literatura, se encuentran diferentes métodos para la obtención de los parámetros de
la matriz fundamental; teniendo en cuenta la bibliografía investigada, se realizarán dos
acercamientos hacia la obtención de la matriz: Enfoque Calibrado y Enfoque No
Calibrado. A partir de un enfoque calibrado es necesario obtener la matriz esencial, la cual
contiene los parámetros intrínsecos de las cámaras, y está directamente relacionada con
las matrices de rotación y traslación entre un par de cámaras.
Un problema fundamental de la visión estereoscópica, es la correspondencia entre puntos
de dos imágenes. Dicha problemática será abordada a partir de las restricciones
generadas por la geometría epipolar del sistema de visión artificial estereoscópica. Los
resultados obtenidos por dichas restricciones nos entregarán un conjunto de pares de
9
puntos con similitudes, a los cuales se les deberán implementar algunas de las técnicas
de correspondencia entre píxeles como los mapas de disparidad, la correlación cruzada,
entre otros; con la finalidad de obtener la mayor precisión posible a la hora de determinar
el par correspondiente de un punto en una imagen con respecto a un grupo de pares de
puntos similares en la otra imagen.
10
3. FUNDAMENTOS DE GEOMETRÍA EPIPOLAR
3.1. Geometría Epipolar
Se entiende por geometría epipolar a la geometría proyectiva intrínseca entre dos
perspectivas, que no depende de estructura de la escena y está ligada a los parámetros
de la cámara y las posiciones de estas respecto al objeto.
La geometría epipolar está fundamentada en los siguientes conceptos:
Epipolo: Se entiende como epipolo al punto de intersección de la línea que une los
centros de las cámaras con el plano de la imagen (Castro, 2011).
Plano Epipolar: Plano que contiene la línea base, la cual une los epipolos de las cámaras.
Línea Epipolar: Se define como línea epipolar a la intersección de un plano epipolar con el
plano de la imagen.
Esta geometría es fundamental en la aplicación de reconstrucción 3D, al encargarse de
encontrar la relación entre la imagen capturada por un sistema estereoscópico.
En la Figura 2, se observa un sistema de visión estereoscópica basada en dos (2)
cámaras. Ambas cámaras adquieren un punto P, que se dibujará en el plano de cada una
de ellas y . Entre cada uno de estos puntos y el epipolo correspondiente (e1 y e2),
se dibuja la línea epipolar.
11
Figura 1. Geometría epipolar.
3.2. Cálculo de la línea epipolar
Conociendo un punto de referencia en la imagen izquierda , podemos encontrar la
correspondiente recta epipolar en la imagen derecha. Para este proceso, nos debemos
basar en el hecho de que todos los puntos , , … situados sobre la línea de
perspectiva de Po, forman parte del plano epipolar, y por lo tanto, sus representaciones
u0, u1, u2,…. un, sobre la imagen derecha se encuentran sobre la recta epipolar
correspondiente, por lo que es necesario calcular dos puntos para obtener la recta
epipolar.
P
ZC1
YC1
XC1
YC2
ZC2
XC2
e2
e1
u0
p1
P1 P2
P3
12
Figura 2. Rectas Epipolares (Gómez Lahoz, 2010)
Según (Gómez Lahoz, 2010), teniendo en cuenta el punto u0 (x0,y0) de la imagen de
referencia, se procede a hacer lo siguiente:
Se calculan dos puntos ubicados en el rayo perspectivo, que estén separados entre sí.
Para dicho procedimiento utilizamos el factor de escala empleado en la expresión de
condición de colinealidad.
(1)
1. Teniendo u1 y u2, se calculan las imágenes de los dos puntos en la imagen de búsqueda
(2)
(3)
uo (xo, yo)
13
2. Debido a que las coordenadas están expresadas en forma de fotocoordenadas, es
necesario pasarlas a coordenadas píxel para que sea más fácil su búsqueda en la línea
epipolar.
3. Se determina la ecuación de la recta a partir de u1 y u2
(4)
(5)
(6)
(7)
14
4 .MATRIZ FUNDAMENTAL F Y TÉCNICAS DE ESTIMACIÓN DE LA MATRIZ F
Es la representación algebraica de la geometría epipolar. Dicha matriz puede obtenerse a
partir de la correspondencia entre puntos, sin conocer la geometría del sistema
estereoscópico (Löbe, 2009).
Esta matriz cumple que por cada par de puntos correspondientes en ambas
imágenes:
(8)
Dicha condición se cumple debido a que si y son correspondientes, entonces se
encuentra sobre la línea epipolar que se define como (Puente, 2005).
La matriz fundamental puede ser obtenida a partir de un conjunto de puntos de
correspondencia, de la cual se puede estimar las matrices de proyecciones de las
cámaras , , dicha aproximación recibe el nombre de Enfoque no calibrado, y da
como resultado una reconstrucción proyectiva.
Por otro lado, si las matrices de proyecciones de las cámaras son conocidas, la matriz
fundamental puede ser obtenida de éstas, a partir de una aproximación llamada Enfoque
Calibrado, que da como resultado una reconstrucción euclidiana.
4.1. Enfoque no Calibrado
Como ya se había mencionado, la matriz fundamental puede ser calculada si se tienen los
coeficientes de la matriz fundamental F (Puente, 2005).
(9)
Así, con n pares de puntos correspondientes, se obtiene un conjunto de ecuaciones
lineales:
15
(10)
El sistema de ecuaciones obtenido, es un sistema homogéneo, por lo que f solo podrá ser
calculado hasta un factor de escala, y cuenta con un rango máximo de 8. Si el rango es
igual a 8, solo existirá una solución única a un factor de escala. Por lo tanto es necesario
desarrollar la estimación de la matriz fundamental con mínimo 8 pares de puntos
correspondientes.
La matriz puede ser obtenida a partir de diferentes métodos, entre los que se destacan
los siguientes:
4.1.1. Algoritmo de los ocho puntos normalizado
Este algoritmo se basa en normalizar las coordenadas de pares de puntos
correspondientes. Posiblemente los puntos escogidos están muy alejados entre sí, por
esto se sugiere una traslación y un escalamiento de cada imagen, garantizando que el
centro de los puntos quede situado en el origen del marco de referencia de cada una de
las cámaras (Hartley; Zisserman, 2001).
A continuación se procede a describir la metodología para la estimación de los
parámetros de la matriz F, empleando la Técnica de los 8 puntos Normalizado:
Se calculan los centroides de las imágenes A y B capturadas por las cámaras, siguiendo
las siguientes ecuaciones:
(11)
16
Cada punto de la imagen 1 debe ser trasladado a las coordenadas del centroide
(12)
Cada punto de la imagen 2 debe ser trasladado a las coordenadas del centroide
(13)
Se define la constante así
(14)
Y se define así:
(15)
Los puntos normalizados se definen así:
17
(16)
Las operaciones encaminadas a normalizar los puntos correspondientes de las imágenes,
se pueden representar matricialmente de la siguiente manera:
(17)
Donde es la matriz de traslación y normalización
(18)
Donde
(19)
Igual para la imagen 2
(20)
Se define la matriz (F normalizada) así:
18
(21)
Ya sabemos que
(22)
De (21) tenemos que
(22)
(23)
(24)
(25)
(26)
Reemplazando (21) en (22), tenemos que
(27)
(28)
(29)
Entonces
(30)
(31)
Por último se emplea (26) para calcular :
19
(32)
4.1.2. Algoritmo de los ocho puntos
A continuación se procede a describir la metodología para la estimación de los
parámetros de la matriz F, empleando la Técnica de los 8 puntos
Sabemos que
(33)
Además
(34)
Se procede a realizar la siguiente operación:
(35)
Desarrollando matricialmente se obtiene:
(36)
20
5. CORRESPONDENCIA ENTRE PÍXELES: ALGUNAS TÉCNICAS PARA
DETERMINAR PUNTOS CORRESPONDIENTES ENTRE IMÁGENES
En el ámbito de los sistemas de visión artificial estereoscópica, la correspondencia entre
puntos de dos imágenes es un problema fundamental (Hartley; Zisserman, 2001). A partir
de esta problemática, diferentes algoritmos han sido desarrollados con el fin de lograr una
buena descripción de cada uno de los puntos analizados.
Las restricciones epipolares permiten reducir el espacio en el cual se buscará la
correspondencia entre píxeles. Estas restricciones establecen características similares
entre pares de píxeles de la imagen derecha con píxeles de la imagen izquierda y
viceversa. Así, para cada píxel de una de las imágenes hay un conjunto de píxeles en la
otra imagen con características similares. Para delimitar estos posibles candidatos es
necesario aplicar diferentes restricciones tales como, las restricciones de disparidad y
unicidad, y los índices de correlación (Ramírez, 2000).
Para realizar la correspondencia entre píxeles, es necesario realizar la medida del índice
de correlación, esto con la finalidad de medir el grado de semejanza de la vecindad del
píxel evaluado, con el píxel y la vecindad del píxel al que se le desea hallar su
correspondiente.
Teniendo en cuenta que gL y gR, son los píxeles de cada una de las imágenes, se procede
a determinar los cálculos necesarios para hallar el índice de correlación.
(37)
(38)
(39)
21
(40)
(41)
Donde Ui y Vj, son las posiciones en píxeles de los puntos a evaluar.
Y el índice de correlación cruzado es definido como:
(42)
El método de correlación cruzada será implementado en la correspondencia entre píxeles
basada en área y en características, donde estas técnicas están definidas a continuación.
5.1. Correspondencia basada en área
En las técnicas basadas en área, los algoritmos utilizan los patrones de intensidad o
niveles de grises en las vecindades del píxel al que se le desea hallar su correspondiente
(Montalvo; 2010). La implementación de estos algoritmos permite la integración de
restricciones tales como la restricción epipolar, a partir de la cual, los píxeles evaluados
para la correspondencia sólo se buscarán sobre la línea epipolar.
Para aumentar la precisión del método se propuso realizar las pruebas con vecindades de
3x3 y 5x5, comprobando, que una mayor vecindad aumenta la precisión del método al
reducir la cantidad de falsos positivos.
22
5.2. Correspondencia basada en características
Esta técnica se basa en la segmentación de la imagen a partir de características
determinantes de dicha imagen, por ejemplo, las esquinas o bordes de los objetos en la
escena capturada (Montalvo; 2010).
En particular, en el presente proyecto de grado se emplearon las características llamadas
esquinas en los objetos, obtenidas por medio del algoritmo de “Harris”. Dicho algoritmo se
basa en la detección de puntos de baja similitud en su vecindad (Harris, Stephen; 1988).
Si un píxel está en una región uniforme, sus vecindades se verán de manera similar. Al
contrario, si un píxel está en una esquina, sus vecindades en una dirección perpendicular
a la esquina se verán diferentes.
23
6. RESULTADOS Y ANÁLISIS DE LOS RESUSLTADOS
Cálculo de la Matriz Fundamental (F)
Aplicando la metodología en el capítulo 3 para hallar la Matriz Fundamental, se procedió a
diseñar un experimento con el fin de obtener los datos necesarios para el cálculo de dicha
matriz. De la Figura 3 y Figura 4, se obtuvieron los pares de puntos correspondientes,
documentados en la Tabla 1, para la realización de las pruebas para el cálculo de la
matriz fundamental.
Coordenadas en píxeles de los
puntos en la Figura 3.
Coordenadas en píxeles de los
puntos en la Figura 4.
Puntos Up1 Vp1 Up2 Vp2
1 712 396 536 430
2 1292 514 1116 551
3 517 347 338 380
4 1365 241 1187 280
5 654 656 476 693
6 665 957 467 1001
7 1581 953 1351 991
8 1499 609 1272 647
9 867 71 608 111
10 1020 459 846 494
Tabla 1. Pares de puntos correspondientes en el sistema estereoscópico.
24
Luego de obtenidos los pares de puntos correspondientes, se procedió a implementar las
técnicas mencionadas en el capítulo 3, la Técnica de 8 puntos sin normalizar y la Técnica
de 8 puntos normalizada.
Aplicando la Técnica de 8 puntos sin normalizar, la matriz fundamental (F) obtenida fue la
siguiente:
(43)
Con el fin de garantizar la eficacia de la técnica utilizada, se calculó su error cuadrático.
Así mismo, aplicando la Técnica de 8 puntos normalizada, se obtuvo la siguiente matriz
fundamental:
(44)
Y su respectivo error cuadrático para evaluar su eficacia:
Luego de realizados los cálculos para la obtención de las matrices fundamentales
aplicando ambas técnicas y evaluando sus errores, se optó por usar la matriz fundamental
obtenida al utilizar la Técnica de 8 puntos sin normalizar.
Para corroborar la eficacia de la matriz utilizada, en la Figura 4 se dibujaron las diez líneas
epipolares, correspondientes a los diez puntos tomados de la Figura 3 y se observó que
sobre estas líneas, efectivamente se encontraban los puntos correspondientes.
En los pares estereoscópicos de imágenes conformados por las Figuras 5 y 6, y Figuras 7
y 8; corresponden a pruebas realizadas a 3.4 [m] y 6 [m] respectivamente, para evaluar la
invarianza de la matriz fundamental a la distancia a la cual se encuentran los objetos
capturados.
25
Figura 3. Imagen capturada por la Cámara A ubicada a una distancia d=4.9 [m] respecto
al tablero, para la estimación de la matriz F. La imagen fue capturada por los autores.
Figura 4. Imagen capturada por la Cámara B ubicada a una distancia d=4.9 [m] respecto
al tablero para la estimación de la matriz F. La imagen fue capturada por los autores.
26
Figura 5. Imagen capturada por la Cámara A ubicada a una distancia d=3.4 [m] respecto
al tablero. La imagen fue capturada por los autores.
Figura 6. Imagen capturada por la Cámara B ubicada a una distancia d=3.4 [m] respecto
al tablero. La imagen fue capturada por los autores.
27
Figura 7. Imagen capturada por la Cámara A ubicada a una distancia d=6 [m] respecto al
tablero. La imagen fue capturada por los autores.
Figura 8. Imagen capturada por la Cámara B ubicada a una distancia d=6 [m] respecto al
tablero. La imagen fue capturada por los autores.
28
Pruebas de los algoritmos de Correspondencia entre Píxeles.
Calculada la matriz fundamental por la técnica más apropiada y corroborada su precisión,
se procedió a codificar un algoritmo de correspondencia entre píxeles por medio de la
técnica de correlación cruzada basada en área utilizando una vecindad de 5x5 píxeles,
con la finalidad de hallar pares correspondientes entre ambas imágenes.
La finalidad del algoritmo desarrollado es la de encontrar las coordenadas en pixeles de
un punto de la imagen derecha correspondiente a un punto seleccionado de la imagen
izquierda.
Las Figuras 9 y 10 ilustran la prueba realizada para evaluar la precisión del algoritmo
propuesto. La Tabla 2 contiene los datos necesarios para la realización de la prueba, los
píxeles de los puntos tomados de la Figura 9, los puntos esperados a ser los
correspondientes de la Figura 10 y los puntos calculados como correspondientes por el
algoritmo, de la Figura 10.
Figura 9. Imagen capturada por la Cámara A ubicada a una distancia d=4.9 [m], indicando
los píxeles (Cruces rojas) a los cuales se les desea encontrar su correspondiente en la
Cámara B. La imagen fue capturada por los autores.
29
Figura 10. Imagen capturada por la Cámara B ubicada a una distancia d=4.9 [m]. El
algoritmo traza las líneas epipolares y dibuja los píxeles correspondientes (Cruces rojas).
La imagen fue capturada por los autores.
Coordenadas en
píxeles de la Fig. 9.
Coordenadas
esperadas de la Fig. 10.
Coordenadas
calculadas de la Fig. 10.
Up1 Vp1 Up2 Vp2 Up2 Vp2
1 712 396 536 430 536 429.8
2 633 284 457 318 457 318.98
3 1499 609 1272 647 1272 648.93
4 1168 447 1004 483 1902 469
5 632 765 446 803 1669 820.39
Tabla 2. Pares de puntos correspondientes entre la Figuras 9 y 10, y los valores en
píxeles calculados por el algoritmo de correspondencia.
30
Luego de realizada la prueba de correspondencia entre píxeles aplicando la correlación
cruzada basada en área, se observó que ante patrones repetitivos, o escenas
monocromáticas, la precisión del algoritmo se veía seriamente afectada. En estos casos
el algoritmo hallaba un índice de correlación mayor en un punto diferente al esperado.
Luego de revisar el algoritmo de correspondencia entre píxeles aplicando la correlación
cruzada basada en área, se procede a continuación a enseñar los resultados obtenidos al
implementar la prueba del algoritmo de correspondencia entre píxeles aplicando la
correlación cruzada basada en características. Para el algoritmo desarrollado basado en
características, se decidió utilizar las esquinas de los objetos en la escena para delimitar
el área de búsqueda del píxel correspondiente. En la Figura 11, se observan cinco puntos
que tenían la característica de ser una esquina. La Figura 12 ilustra las líneas epipolares
calculadas a partir de los puntos tomados de la Figura 11, y se señalan los puntos que el
algoritmo estima son los correspondientes. La Tabla 3 contiene los datos tomados para la
realización de la prueba y los resultados obtenidos de esta.
Figura 11. Imagen capturada por la Cámara A ubicada a una distancia d=4.9 [m] respecto
al tablero, indicando los píxeles (Cruces rojas) a los cuales se les desea hallar su
correspondiente en la Cámara B. La imagen fue capturada por los autores.
31
Figura 12. Imagen capturada por la Cámara B ubicada a una distancia d=4.9 [m]. El
algoritmo traza las líneas epipolares y dibuja los píxeles correspondientes (Cruces rojas).
La imagen fue capturada por los autores.
Coordenadas en
píxeles de la Fig. 11.
Coordenadas
esperadas de la Fig. 12.
Coordenadas
calculadas de la Fig. 12.
Up1 Vp1 Up2 Vp2 Up2 Vp2
1 748 503 572 537 572 537
2 1382 622 1206 658 1206 658
3 1371 611 1194 647 1194 647
4 1581 953 1351 991 1351 991
5 867 71 608 111 608 111
Tabla 3. Pares de puntos correspondientes entre la Figuras 11 y 12, y los valores en
píxeles calculados por el algoritmo de correspondencia.
32
Al analizar los datos contenidos en la Tabla 3, se observa que el algoritmo presenta una
alta precisión en la prueba realizada. Debido a la restricción agregada a la correlación por
características, el algoritmo evalúa menor cantidad de puntos cercanos a la recta epipolar,
lo que reduce la probabilidad de hallar un índice de correlación mayor, al del punto
esperado, en un punto diferente.
Estimación de las coordenadas 3-D empleando el algoritmo de Correspondencia
entre Píxeles.
Utilizando la teoría desarrollada por (Zapata Herrera, Silva Narváez, 2015), se procedió a
desarrollar las matrices de calibración de las cámaras utilizadas, con la finalidad de
estimar las coordenadas 3-D de un punto empleando el algoritmo de correspondencia
entre píxeles.
La Figura 13 ilustra la disposición de las cámaras respecto a la plantilla, para la toma de
medidas necesarias para la calibración de ambas cámaras. El borde inferior de la plantilla
más cercano a la cámara se encontraba a una distancia de 110 [cm] del lente de la
cámara, y 13.5 [cm] por debajo del mismo.
33
Figura 13. Disposición de las cámaras ubicadas a una distancia d= 110 [cm] del borde
inferior de la plantilla para la realización de la prueba de calibración.
Al realizar los cálculos necesarios para hallar las matrices de calibración, se obtuvo como
resultados lo siguiente:
La matriz de calibración para la cámara A o cámara izquierda quedó de la forma:
(45)
Igualmente, la matriz de calibración para la cámara B o cámara derecha quedó de la
forma:
(46)
34
Luego de obtenidas ambas matrices de calibración, C1 y C2, se procedió a realizar el
experimento de reconstrucción: señalando en la Figura 15 un punto y, por medio del
algoritmo de correspondencia entre píxeles, hallando su correspondiente en la Figura 16,
se reconstruía de manera estimada las coordenadas 3-D del punto elegido.
En la Figura 14 se observa la disposición de las cámaras y la escena para la realización
de la prueba de reconstrucción 3-D.
Figura 14. Cámaras ubicadas a una distancia d= 120 [cm] respecto al tablero, para la
realización de la prueba de reconstrucción 3-D.
35
Figura 15. Imagen capturada por la Cámara A ubicada a una distancia d= 120 [cm]
respecto al tablero, indicando los píxeles (Puntos rojos) a los que se les encontrará su
correspondientes en la Cámara B. Imagen capturada por los autores
Figura 16. Imagen capturada por la Cámara B ubicada a una distancia d= 120 [cm]
respecto al tablero. El algoritmo traza las líneas epipolares y calcula los píxeles
correspondientes (Puntos rojos).
1
2
3
4
1
2
3
4
36
Coordenadas en
píxeles de la Fig. 13.
Coordenadas
calculadas de la
Fig. 14.
Coordenadas del mundo
estimadas.
XW [cm]
Up1 Vp1 Up2 Vp2 X Y Z
1 933 289 366 342 -10.85 120.4 23.22
2 940 392 374 444 -10.43 120.8 14.69
3 1035 281 467 335 -2.55 120.17 23.7
4 1042 385 477 436 -2.07 121.14 15.51
Tabla 4. Puntos elegidos en la Figura 13, par correspondiente de estos puntos calculados
por el algoritmo de correspondencia sobre la Figura 14 y coordenadas del mundo
estimadas.
Con el fin de corroborar la eficacia de la reconstrucción 3-D, los datos obtenidos por el
algoritmo deben de cumplir que:
(47)
(48)
(49)
(50)
Donde L, es la medida de longitud de un lado del cubo de rubik, 8.4 [cm], utilizado para la
realización de la prueba de reconstrucción 3-D. Así, reemplazando los datos obtenidos en
la prueba las anteriores expresiones quedaron:
37
38
7. CONCLUSIONES
Luego de evaluar las diferentes técnicas abordadas en el proyecto para hallar la matriz
fundamental, se determinó que la técnica más apropiada para la determinación de los
parámetros de la matriz es la Técnica de los 8 puntos sin normalizar. En la literatura
(Chojnacki, Brooks, van den Hengel, Gawley; 2003) y (Mujika; 2010) señalan la Técnica
de 8 puntos normalizada como la más apropiada para el cálculo de la matriz fundamental,
técnica que en nuestro proyecto no presentó el menor error cuadrático. La precisión,
eficacia e invarianza a la distancia de la escena capturada por el sistema estereoscópico,
de la matriz fundamental fue puesta a prueba con resultados exitosos.
A partir de los resultados obtenidos de las pruebas de los algoritmos de correspondencia
de píxeles fundamentados en áreas, se determinó que una vecindad de 5 x 5 píxeles es la
más apropiada, al reducir el error en la medida del índice de correlación cruzado en
comparación a vecindades de inferior tamaño.
Al comparar los resultados obtenidos de los algoritmos abordados de correspondencia
entre píxeles, se estableció que el algoritmo con mayor precisión era aquel basado en
características. En nuestro proyecto dichas características fueron las esquinas de los
objetos de la escena capturada. Este algoritmo al reducir los puntos evaluados y
segmentar la imagen, disminuía el error en la medida del índice de correlación cruzada,
como resultado los píxeles hallados como correspondientes presentaban un alto índice de
precisión respecto a los píxeles esperados.
39
8. LISTA DE TABLAS
Tabla 1. Pares de puntos correspondientes en el sistema estereoscópico.
Tabla 2. Pares de puntos correspondientes entre la Figuras 9 y 10, y los valores en
píxeles calculados por el algoritmo de correspondencia.
Tabla 3. Pares de puntos correspondientes entre la Figuras 11 y 12, y los valores en
píxeles calculados por el algoritmo de correspondencia.
Tabla 4. Puntos elegidos en la Figura 13, par correspondiente de estos puntos calculados
por el algoritmo de correspondencia sobre la Figura 14 y coordenadas del mundo
estimadas.
40
9. LISTA DE FIGURAS
Figura 1. Geometría epipolar.
Figura 2. Rectas Epipolares (Gómez Lahoz, 2010)
Figura 3. Imagen capturada por la Cámara A ubicada a una distancia d=4.9 [m] respecto
al tablero, para la estimación de la matriz F. La imagen fue capturada por los autores.
Figura 4. Imagen capturada por la Cámara B ubicada a una distancia d=4.9 [m] respecto
al tablero para la estimación de la matriz F. La imagen fue capturada por los autores.
Figura 5. Imagen capturada por la Cámara A ubicada a una distancia d=3.4 [m] respecto
al tablero. La imagen fue capturada por los autores.
Figura 6. Imagen capturada por la Cámara B ubicada a una distancia d=3.4 [m] respecto
al tablero. La imagen fue capturada por los autores.
Figura 7. Imagen capturada por la Cámara A ubicada a una distancia d=6 [m] respecto al
tablero. La imagen fue capturada por los autores.
Figura 8. Imagen capturada por la Cámara B ubicada a una distancia d=6 [m] respecto al
tablero. La imagen fue capturada por los autores.
Figura 9. Imagen capturada por la Cámara A ubicada a una distancia d=4.9 [m], indicando
los píxeles (Puntos rojos) a los cuales se les desea encontrar su correspondiente en la
Cámara B. La imagen fue capturada por los autores.
Figura 10. Imagen capturada por la Cámara B ubicada a una distancia d=4.9 [m]. El
algoritmo traza las líneas epipolares y dibuja los píxeles correspondientes (Puntos rojos).
La imagen fue capturada por los autores.
Figura 11. Imagen capturada por la Cámara A ubicada a una distancia d=4.9 [m] respecto
al tablero, indicando los píxeles (Puntos rojos) a los cuales se les desea hallar su
correspondiente en la Cámara B. La imagen fue capturada por los autores.
41
Figura 12. Imagen capturada por la Cámara B ubicada a una distancia d=4.9 [m]. El
algoritmo traza las líneas epipolares y dibuja los píxeles correspondientes (Puntos rojos).
La imagen fue capturada por los autores.
Figura 13. Disposición de las cámaras ubicadas a una distancia d= 110 [cm] del borde
inferior de la plantilla para la realización de la prueba de calibración.
Figura 14. Cámaras ubicadas a una distancia d= 120 [cm] respecto al tablero, para la
realización de la prueba de reconstrucción 3-D.
Figura 15. Imagen capturada por la Cámara A ubicada a una distancia d= 120 [cm]
respecto al tablero, indicando los píxeles (Puntos rojos) a los que se les encontrará su
correspondientes en la Cámara B. Imagen capturada por los autores.
Figura 16. Imagen capturada por la Cámara B ubicada a una distancia d= 120 [cm]
respecto al tablero. El algoritmo traza las líneas epipolares y calcula los píxeles
correspondientes (Puntos rojos).
42
10. BIBLIOGRAFÍA
Agudelo, D., Silva, J., & Gil, J. (2013). Estimación de la localización de un vehículo
usando un sistema de visión por computador. Risaralda.
Brendstrup, P. (2013). Reconstrucción 3D desde secuencias de video. Córdoba:
Universidad Nacional de Córdoba.
Castro, C. (2011). Determinación de distancias entre objetos de una imagen. Bogotá:
Universidad Nacional de Colombia.
Chojnacki, W., Brooks, M., van den Hengel, A., & Gawley, D. (2003). Revisiting Hartley's
Normalized Eight-Point Algorithm. IEEE.
Diaz, C., Toro, M., Forero, J., & Torres, A. (2009). Detección, rastreo y reconstrucción
tridimensional de marcadores pasivos para análisis de movimiento humano.
Cinemed III. Medellín: Escuela de Ingeniería de Antioquia.
Gómez Lahoz, J. (2010). Condición de Coplanaridad. En J. Gómez Lahoz, Reconstrucción
3D y Realidad Virtual en Criminología. Salamanca: Universidad de Salamanca.
Hartley, R., & Zisserman, A. (2001). Multiple View Geometry in Computer Vision. Londres:
Cambrigde University Press.
Hoyos, J., Cardona, J., Capacho, L., & Hernández, M. (2010). Aplicación de técnicas de
correspondencia para determinar la posición del efector final de un manipulador
robótico. Armenia: Universidad del Quindío.
Lastra, J. (1998). Matriz Fundamental de un Par Estereoscópico: Teoría y Algoritmos.
Madrid: Universidad Politécnica de Madrid.
Löbel, H.-A. (2009). Conteo de Personas en Tiempo Real Usando Visión Estéreo de línea
base amplia y GPGPU. Santiago de Chile: Pontificia Universidad Católica de Chile.
Mujika, U. (2010). Reconstrucción densa de modelos tridimensionales utilizando Visión
Artificial. Donostia: Universidad del País Vasco.
Puente, C. A. (2005). Reconstrucción de objetos presentes en una escena utilizando el
esquema de la siguiente mejor imagen. Ensenada Baja California: CICESE.
Ramirez, R. (2000). Síntesis de imágenes a partir de fotografías. Ensenada Baja
California: CICESE.
43
Revelo, D., Usama, F., & Flórez, J. (2012). Reconstrucción 3D de escenas mediante un
sistema de visión estéreo basada en extracción de características desarrollado en
OpenCV. Popayán: Universidad del Cauca.
Robles, J. (2013). Posicionamiento del Eyector Final del Brazo Robótico MELFA RV-2AJ.
Armenia: Universidad del Quindío.
Sáenz Martínez, J. (2001). Navegación 3D utilizando información estéreo. Alicante.
Zapata Herrera, A., & Silva Narvaez, J. (2015). Reconstrucción de Entornos 3D mediante
un sistema de visión artificial estereoscópico, para aplicaciones en navegación
robótica. Medellín: Universidad de San Buenaventura.
44
11. ANEXOS
CÁCULO MATRIZ F
clear all clc close all
Up11=712; Vp11=396;
Up12=1292; Vp12=514;
Up13=517; Vp13=347;
Up14=1365; Vp14=241;
Up15=654; Vp15=656;
Up16=665; Vp16=957;
Up17=1581; Vp17=953;
Up18=1499; Vp18=609;
Up19=867; Vp19=71;
Up110=1020; Vp110=459;
Up21=536; Vp21=430;
Up22=1116; Vp22=551;
Up23=338; Vp23=380;
45
Up24=1187; Vp24=280;
Up25=476; Vp25=693;
Up26=467; Vp26=1001;
Up27=1351; Vp27=991;
Up28=1272; Vp28=647;
Up29=608; Vp29=111;
Up210=846; Vp210=494;
A=[Up11*Up21, Up21*Vp11, Up21, Up11*Vp21, Vp11*Vp21, Vp21, Up11, Vp11, 1;
Up12*Up22, Up22*Vp12, Up22, Up12*Vp22, Vp12*Vp22, Vp22, Up12, Vp12, 1;
Up13*Up23, Up23*Vp13, Up23, Up13*Vp23, Vp13*Vp23, Vp23, Up13, Vp13, 1;
Up14*Up24, Up24*Vp14, Up24, Up14*Vp24, Vp14*Vp24, Vp24, Up14, Vp14, 1;
Up15*Up25, Up25*Vp15, Up25, Up15*Vp25, Vp15*Vp25, Vp25, Up15, Vp15, 1;
Up16*Up26, Up26*Vp16, Up26, Up16*Vp26, Vp16*Vp26, Vp26, Up16, Vp16, 1;
Up17*Up27, Up27*Vp17, Up27, Up17*Vp27, Vp17*Vp27, Vp27, Up17, Vp17, 1;
Up18*Up28, Up28*Vp18, Up28, Up18*Vp28, Vp18*Vp28, Vp28, Up18, Vp18, 1;
Up19*Up29, Up29*Vp19, Up29, Up19*Vp29, Vp19*Vp29, Vp29, Up19, Vp19, 1;
Up110*Up210, Up210*Vp110, Up210, Up110*Vp210, Vp110*Vp210, Vp210, Up110,
Vp110, 1]; C=A'*A; [V,D]=eig(C);
F=[V(1,1),V(2,1),V(3,1);V(4,1),V(5,1),V(6,1);V(7,1),V(8,1),V(9,1)]; E=A*V(:,1); ERROR=E'*E;
%NORMALIZACIÓN
U1NORM=(1/10)*([Up11;Vp11;1]+[Up12;Vp12;1]+[Up13;Vp13;1]+[Up14;Vp14;1]+[U
p15;Vp15;1]+[Up16;Vp16;1]+[Up17;Vp17;1]+[Up18;Vp18;1]+[Up19;Vp19;1]+[Up11
0;Vp110;1]); U2NORM=(1/10)*([Up21;Vp21;1]+[Up22;Vp22;1]+[Up23;Vp23;1]+[Up24;Vp24;1]+[U
p25;Vp25;1]+[Up26;Vp26;1]+[Up27;Vp27;1]+[Up28;Vp28;1]+[Up29;Vp29;1]+[Up21
0;Vp210;1]);
S=(1/sqrt(2))*sqrt(1/10*(norm([Up11; Vp11] - [U1NORM(1); U1NORM(2)]).^2 +
norm([Up12; Vp12] - [U1NORM(1); U1NORM(2)]).^2 + norm([Up13; Vp13] -
[U1NORM(1); U1NORM(2)]).^2 + norm([Up14; Vp14] - [U1NORM(1);
U1NORM(2)]).^2 + norm([Up15; Vp15] - [U1NORM(1); U1NORM(2)]).^2 +
46
norm([Up16; Vp16] - [U1NORM(1); U1NORM(2)]).^2 + norm([Up17; Vp17] -
[U1NORM(1); U1NORM(2)]).^2 + norm([Up18; Vp18] - [U1NORM(1);
U1NORM(2)]).^2 + norm([Up19; Vp19] - [U1NORM(1); U1NORM(2)]).^2 +
norm([Up110; Vp110] - [U1NORM(1); U1NORM(2)]).^2)); SP=(1/sqrt(2))*sqrt(1/10*(norm([Up21; Vp21] - [U2NORM(1); U2NORM(2)]).^2
+ norm([Up22; Vp22] - [U2NORM(1); U2NORM(2)]).^2 + norm([Up23; Vp23] -
[U2NORM(1); U2NORM(2)]).^2 + norm([Up24; Vp24] - [U2NORM(1);
U2NORM(2)]).^2 + norm([Up25; Vp25] - [U2NORM(1); U2NORM(2)]).^2 +
norm([Up26; Vp26] - [U2NORM(1); U2NORM(2)]).^2 + norm([Up27; Vp27] -
[U2NORM(1); U2NORM(2)]).^2 + norm([Up28; Vp28] - [U2NORM(1);
U2NORM(2)]).^2 + norm([Up29; Vp29] - [U2NORM(1); U2NORM(2)]).^2 +
norm([Up210; Vp210] - [U2NORM(1); U2NORM(2)]).^2));
U11NORM=[(Up11-U1NORM(1))/S;(Vp11-U1NORM(2))/S;1]; U12NORM=[(Up12-U1NORM(1))/S;(Vp12-U1NORM(2))/S;1]; U13NORM=[(Up13-U1NORM(1))/S;(Vp13-U1NORM(2))/S;1]; U14NORM=[(Up14-U1NORM(1))/S;(Vp14-U1NORM(2))/S;1]; U15NORM=[(Up15-U1NORM(1))/S;(Vp15-U1NORM(2))/S;1]; U16NORM=[(Up16-U1NORM(1))/S;(Vp16-U1NORM(2))/S;1]; U17NORM=[(Up17-U1NORM(1))/S;(Vp17-U1NORM(2))/S;1]; U18NORM=[(Up18-U1NORM(1))/S;(Vp18-U1NORM(2))/S;1]; U19NORM=[(Up19-U1NORM(1))/S;(Vp19-U1NORM(2))/S;1]; U110NORM=[(Up110-U1NORM(1))/S;(Vp110-U1NORM(2))/S;1];
U21NORM=[(Up21-U2NORM(1))/SP;(Vp21-U2NORM(2))/SP;1]; U22NORM=[(Up22-U2NORM(1))/SP;(Vp22-U2NORM(2))/SP;1]; U23NORM=[(Up23-U2NORM(1))/SP;(Vp23-U2NORM(2))/SP;1]; U24NORM=[(Up24-U2NORM(1))/SP;(Vp24-U2NORM(2))/SP;1]; U25NORM=[(Up25-U2NORM(1))/SP;(Vp25-U2NORM(2))/SP;1]; U26NORM=[(Up26-U2NORM(1))/SP;(Vp26-U2NORM(2))/SP;1]; U27NORM=[(Up27-U2NORM(1))/SP;(Vp27-U2NORM(2))/SP;1]; U28NORM=[(Up28-U2NORM(1))/SP;(Vp28-U2NORM(2))/SP;1]; U29NORM=[(Up29-U2NORM(1))/SP;(Vp29-U2NORM(2))/SP;1]; U210NORM=[(Up210-U2NORM(1))/SP;(Vp210-U2NORM(2))/SP;1];
Tr1=[S^-1,0,(S^-1)*U1NORM(1);0,S^-1,(S^-1)*U1NORM(2);0,0,1]; Tr2=[SP^-1,0,(SP^-1)*U2NORM(1);0,SP^-1,(SP^-1)*U2NORM(2);0,0,1];
Up11NORM=U11NORM(1); Up12NORM=U12NORM(1); Up13NORM=U13NORM(1); Up14NORM=U14NORM(1); Up15NORM=U15NORM(1); Up16NORM=U16NORM(1); Up17NORM=U17NORM(1); Up18NORM=U18NORM(1); Up19NORM=U19NORM(1); Up110NORM=U110NORM(1);
Vp11NORM=U11NORM(2); Vp12NORM=U12NORM(2); Vp13NORM=U13NORM(2); Vp14NORM=U14NORM(2);
47
Vp15NORM=U15NORM(2); Vp16NORM=U16NORM(2); Vp17NORM=U17NORM(2); Vp18NORM=U18NORM(2); Vp19NORM=U19NORM(2); Vp110NORM=U110NORM(2);
Up21NORM=U21NORM(1); Up22NORM=U22NORM(1); Up23NORM=U23NORM(1); Up24NORM=U24NORM(1); Up25NORM=U25NORM(1); Up26NORM=U26NORM(1); Up27NORM=U27NORM(1); Up28NORM=U28NORM(1); Up29NORM=U29NORM(1); Up210NORM=U210NORM(1);
Vp21NORM=U21NORM(2); Vp22NORM=U22NORM(2); Vp23NORM=U23NORM(2); Vp24NORM=U24NORM(2); Vp25NORM=U25NORM(2); Vp26NORM=U26NORM(2); Vp27NORM=U27NORM(2); Vp28NORM=U28NORM(2); Vp29NORM=U29NORM(2); Vp210NORM=U210NORM(2);
AP=[Up11NORM*Up21NORM, Up21NORM*Vp11NORM, Up21NORM, Up11NORM*Vp21NORM,
Vp11NORM*Vp21NORM, Vp21NORM, Up11NORM, Vp11NORM, 1; Up12NORM*Up22NORM,
Up22NORM*Vp12NORM, Up22NORM, Up12NORM*Vp22NORM, Vp12NORM*Vp22NORM,
Vp22NORM, Up12NORM, Vp12NORM, 1; Up13NORM*Up23NORM, Up23NORM*Vp13NORM,
Up23NORM, Up13NORM*Vp23NORM, Vp13NORM*Vp23NORM, Vp23NORM, Up13NORM,
Vp13NORM, 1; Up14NORM*Up24NORM, Up24NORM*Vp14NORM, Up24NORM,
Up14NORM*Vp24NORM, Vp14NORM*Vp24NORM, Vp24NORM, Up14NORM, Vp14NORM, 1;
Up15NORM*Up25NORM, Up25NORM*Vp15NORM, Up25NORM, Up15NORM*Vp25NORM,
Vp15NORM*Vp25NORM, Vp25NORM, Up15NORM, Vp15NORM, 1; Up16NORM*Up26NORM,
Up26NORM*Vp16NORM, Up26NORM, Up16NORM*Vp26NORM, Vp16NORM*Vp26NORM,
Vp26NORM, Up16NORM, Vp16NORM, 1; Up17NORM*Up27NORM, Up27NORM*Vp17NORM,
Up27NORM, Up17NORM*Vp27NORM, Vp17NORM*Vp27NORM, Vp27NORM, Up17NORM,
Vp17NORM, 1; Up18NORM*Up28NORM, Up28NORM*Vp18NORM, Up28NORM,
Up18NORM*Vp28NORM, Vp18NORM*Vp28NORM, Vp28NORM, Up18NORM, Vp18NORM, 1;
Up19NORM*Up29NORM, Up29NORM*Vp19NORM, Up29NORM, Up19NORM*Vp29NORM,
Vp19NORM*Vp29NORM, Vp29NORM, Up19NORM, Vp19NORM, 1; Up110NORM*Up210NORM,
Up210NORM*Vp110NORM, Up210NORM, Up110NORM*Vp210NORM, Vp110NORM*Vp210NORM,
Vp210NORM, Up110NORM, Vp110NORM, 1]; CP=AP'*AP; [VNORM,DNORM]=eig(CP);
FNORM=[VNORM(1,2),VNORM(2,2),VNORM(3,2);VNORM(4,2),VNORM(5,2),VNORM(6,2);
VNORM(7,2),VNORM(8,2),VNORM(9,2)]; F1=Tr2'*FNORM*Tr1;
48
VECTOR=[F1(1,1);F(1,2);F1(1,3);F(2,1);F1(2,2);F(2,3);F1(3,1);F(3,2);F(3,3
)]; EP=AP*VECTOR; ERRORP=EP'*EP;
ALGORITMO CORRESPONDENCIA ENTRE PÍXELES Y RECONSTRUCCIÓN 3D
clc clear all close all
AG=imread('CAMAPRUEBA8.j2c'); BG=imread('CAMBPRUEBA8.j2c'); %AG=rgb2gray(A); %BG=rgb2gray(B); AGR=im2double(AG); BGR=im2double(BG); [M,N]=size(AGR);
F=[3.928369030164852e-07 7.246196895628722e-06 -0.005000729642604;-
8.715144216855789e-06 1.414582268533305e-06 -
0.065145782531268;0.005582128612545 0.066789737208366 0.995609858546311];
imshow(AGR) CAGR=corner(AGR,'harris',100); hold on; plot(CAGR(:,1),CAGR(:,2),'bX'); zoom on; waitfor(gcf,'CurrentCharacter',13) zoom reset zoom off
[x,y]=ginput(1);
up=round(x); vp=round(y);
49
%Cálculo de línea epipolar
L2=F*[up;vp;1];
A1=L2(1); B1=L2(2); C1=L2(3);
U1=1; U1P=1920; V1=((-A1/B1)*U1)-(C1/B1); V1P=((-A1/B1)*U1P)-(C1/B1);
U=[1,1920]; V=[V1,V1P];
figure imshow(BGR) CBGR=corner(BGR,'harris',100); hold on; plot(CBGR(:,1),CBGR(:,2),'rX'); plot(U,V);
%Correspondencia de Píxeles
if up==1 && vp>1 && vp<1080 UL=(1/9)*(0+AGR(vp,up)+AGR(vp,up+1)+AGR(vp-
1,up)+AGR(vp+1,up)+0+AGR(vp-1,up+1)+0+AGR(vp+1,up+1)); end
if vp==1 && up>1 && up<1920 UL=(1/9)*(AGR(vp,up-
1)+AGR(vp,up)+AGR(vp,up+1)+0+AGR(vp+1,up)+0+0+AGR(vp+1,up-
1)+AGR(vp+1,up+1)); end
if up==1920 && vp>1 && vp<1080 UL=(1/9)*(AGR(vp,up-1)+AGR(vp,up)+0+AGR(vp-1,up)+AGR(vp+1,up)+AGR(vp-
1,up-1)+0+AGR(vp+1,up-1)+0); end
if vp==1080 && up>1 && up<1920 UL=(1/9)*(AGR(vp,up-1)+AGR(vp,up)+AGR(vp,up+1)+AGR(vp-1,up)+0+AGR(vp-
1,up-1)+AGR(vp-1,up+1)+0+0); end
if up>1 && up<1920 && vp>1 && vp<1080 UL=(1/9)*(AGR(vp,up-1)+AGR(vp,up)+AGR(vp,up+1)+AGR(vp-
1,up)+AGR(vp+1,up)+AGR(vp-1,up-1)+AGR(vp-1,up+1)+AGR(vp+1,up-
1)+AGR(vp+1,up+1)); end
50
VARL=(1/9)*((AGR(vp,up-1)-UL)^2+(AGR(vp,up)-UL)^2+(AGR(vp,up+1)-
UL)^2+(AGR(vp-1,up)-UL)^2+(AGR(vp+1,up)-UL)^2+(AGR(vp-1,up-1)-
UL)^2+(AGR(vp-1,up+1)-UL)^2+(AGR(vp+1,up-1)-UL)^2+(AGR(vp+1,up+1)-UL)^2);
i=1;
%CORRELACIÓN BASADA EN ÁREA
for up2=2:1919 vp2=round(-(L2(1)/L2(2))*up2-(L2(3)/L2(2)));
if vp2<=1 vp2=2; end if vp2>=1080 vp2=1079; end
UR(i)=(1/9)*(BGR(vp2,up2-1)+BGR(vp2,up2)+BGR(vp2,up2+1)+BGR(vp2-
1,up2)+BGR(vp2+1,up2)+BGR(vp2-1,up2-1)+BGR(vp2-1,up2+1)+BGR(vp2+1,up2-
1)+BGR(vp2+1,up2+1)); VARR(i)=(1/9)*((BGR(vp2,up2-1)-UR(i))^2+(BGR(vp2,up2)-
UR(i))^2+(BGR(vp2,up2+1)-UR(i))^2+(BGR(vp2-1,up2)-
UR(i))^2+(BGR(vp2+1,up2)-UR(i))^2+(BGR(vp2-1,up2-1)-UR(i))^2+(BGR(vp2-
1,up2+1)-UR(i))^2+(BGR(vp2+1,up2-1)-UR(i))^2+(BGR(vp2+1,up2+1)-UR(i))^2);
UNO=(AGR(vp-1,up-1)-UL)*(BGR(vp2-1,up2-1)-UR(i)); DOS=(AGR(vp,up-1)-UL)*(BGR(vp2,up2-1)-UR(i)); TRES=(AGR(vp+1,up-1)-UL)*(BGR(vp2+1,up2-1)-UR(i));
CUATRO=(AGR(vp-1,up)-UL)*(BGR(vp2-1,up2)-UR(i)); CINCO=(AGR(vp,up)-UL)*(BGR(vp2,up2)-UR(i)); SEIS=(AGR(vp+1,up)-UL)*(BGR(vp2+1,up2)-UR(i));
SIETE=(AGR(vp-1,up+1)-UL)*(BGR(vp2-1,up2+1)-UR(i)); OCHO=(AGR(vp,up+1)-UL)*(BGR(vp2,up2+1)-UR(i)); NUEVE=(AGR(vp+1,up+1)-UL)*(BGR(vp2+1,up2+1)-UR(i));
VARLR(i)=(1/9)*(UNO+DOS+TRES+CUATRO+CINCO+SEIS+SIETE+OCHO+NUEVE);
C(i)=VARLR(i)/((VARL*VARR(i))^(1/2));
i=i+1; end
[Y,I]=max(C);
51
%CORRELACIÓN BASADA EN CARACTERÍSTICAS
ii=1;
for k=1:100
upH=CBGR(k,1); vpH=CBGR(k,2);
vpLINEA=((-A1/B1)*upH)-(C1/B1);
if (vpLINEA-vpH) >= -5 && (vpLINEA-vpH) <= 5 URH(ii)=(1/9)*(BGR(vpH,upH-
1)+BGR(vpH,upH)+BGR(vpH,upH+1)+BGR(vpH-1,upH)+BGR(vpH+1,upH)+BGR(vpH-
1,upH-1)+BGR(vpH-1,upH+1)+BGR(vpH+1,upH-1)+BGR(vpH+1,upH+1)); VARRH(ii)=(1/9)*((BGR(vpH,upH-1)-URH(ii))^2+(BGR(vpH,upH)-
URH(ii))^2+(BGR(vpH,upH+1)-URH(ii))^2+(BGR(vpH-1,upH)-
URH(ii))^2+(BGR(vpH+1,upH)-URH(ii))^2+(BGR(vpH-1,upH-1)-
URH(ii))^2+(BGR(vpH-1,upH+1)-URH(ii))^2+(BGR(vpH+1,upH-1)-
URH(ii))^2+(BGR(vpH+1,upH+1)-URH(ii))^2);
UNO=(AGR(vp-1,up-1)-UL)*(BGR(vpH-1,upH-1)-URH(ii)); DOS=(AGR(vp,up-1)-UL)*(BGR(vpH,upH-1)-URH(ii)); TRES=(AGR(vp+1,up-1)-UL)*(BGR(vpH+1,upH-1)-URH(ii));
CUATRO=(AGR(vp-1,up)-UL)*(BGR(vpH-1,upH)-URH(ii)); CINCO=(AGR(vp,up)-UL)*(BGR(vpH,upH)-URH(ii)); SEIS=(AGR(vp+1,up)-UL)*(BGR(vpH+1,upH)-URH(ii));
SIETE=(AGR(vp-1,up+1)-UL)*(BGR(vpH-1,upH+1)-URH(ii)); OCHO=(AGR(vp,up+1)-UL)*(BGR(vpH,upH+1)-URH(ii)); NUEVE=(AGR(vp+1,up+1)-UL)*(BGR(vpH+1,upH+1)-URH(ii));
VARLRH(ii)=(1/9)*(UNO+DOS+TRES+CUATRO+CINCO+SEIS+SIETE+OCHO+NUEVE);
CH(ii)=VARLRH(ii)/((VARL*VARRH(ii))^(1/2));
INDEX(ii)=k;
ii=ii+1;
end
end
[Y2,I2]=max(CH);
MAXH=INDEX(I2);
52
U2=[CBGR(MAXH,1),CBGR(MAXH,2)];
up1=up; vp1=vp; up2=U2(1); vp2=U2(2);
C1=[-0.3919722979, -0.292209158, 0.0165488842, 0.4169159894;
0.007291371123, -0.1492967256, 0.4003755053, -0.635794856;
4.972126395*10^(-6), -0.0002747960785, 1.220731817*10^(-5),
0.0005668924884]; C2=[-0.02378368951, -0.01631283338, 0.0002736027796, 0.9992124399;
8.64849678*10^(-5), -0.01039731385, 0.02402023339, -0.007586883122; -
3.634731529*10^(-7), - 1.685796448*10^(-5), 6.029883728*10^(-7),
9.098044026*10^(-5)];
M=[(C1(3,1)*up1)-C1(1,1),(C1(3,2)*up1)-C1(1,2),(C1(3,3)*up1)-
C1(1,3);(C1(3,1)*vp1)-C1(2,1),(C1(3,2)*vp1)-C1(2,2),(C1(3,3)*vp1)-
C1(2,3);(C2(3,1)*up2)-C2(1,1),(C2(3,2)*up2)-C2(1,2),(C2(3,3)*up2)-
C2(1,3);(C2(3,1)*vp2)-C2(2,1),(C2(3,2)*vp2)-C2(2,2),(C2(3,3)*vp2)-
C2(2,3)]; b=[-(-C1(1,4)+(C1(3,4)*up1));-(-C1(2,4)+(C1(3,4)*vp1));-(-
C2(1,4)+(C2(3,4)*up2));-(-C2(2,4)+(C2(3,4)*vp2))];
XW=inv(M'*M)*M'*b;
53
54
12. BIBLIOGRAFÍA
1 2 3 4 1 2 3 4