54
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 …

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 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

Page 2: 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

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

Page 3: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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

Page 4: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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

Page 5: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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

Page 6: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 7: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 8: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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

Page 9: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 10: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 11: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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

Page 12: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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)

Page 13: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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)

Page 14: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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:

Page 15: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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)

Page 16: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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í:

Page 17: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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í:

Page 18: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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 :

Page 19: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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)

Page 20: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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)

Page 21: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 22: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 23: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 24: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 25: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 26: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 27: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 28: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 29: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 30: IMPLEMENTACIÓN DE UN 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.

Page 31: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 32: IMPLEMENTACIÓN DE UN 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.

Page 33: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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)

Page 34: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 35: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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

Page 36: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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:

Page 37: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

37

Page 38: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 39: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 40: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 41: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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).

Page 42: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 43: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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.

Page 44: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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;

Page 45: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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 +

Page 46: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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);

Page 47: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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;

Page 48: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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);

Page 49: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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

Page 50: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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);

Page 51: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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);

Page 52: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

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;

Page 53: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

53

Page 54: IMPLEMENTACIÓN DE UN ALGORITMO DE CORRESPONDENCIA …

54

12. BIBLIOGRAFÍA

1 2 3 4 1 2 3 4