Visión por Computador Jorge Artieda Trigueros

Índice



Índice de contenido

Visión por Computador 1

Índice 2

1Descripción del Problema 3

2Estado del Arte 3

3Toma de puntos significativos 3

4Modelo de la cámara 4

5Filtro de Kalman 4

6Actualización de los puntos 5

7Implementación 5

8Resultados 7

9Referencias 10





1Descripción del Problema

El problema abordado consiste en la localización y mapeado simultaneo tridimensional. El enfoque que se ha dado a este problema consiste en usar una sola cámara para realizar esta tarea. En este trabajo se han establecido la siguientes limitaciones:

La solución se ha planteado en varias capas. la salida de cada capa se utiliza en la siguiente

2Toma de puntos significativos

Esta etapa del proceso consiste en tomar puntos comunes en dos imágenes. El método para buscar puntos comunes es la correlación de un patrón al rededor de un punto significativo sobre una imagen.

El algoritmo arranca cogiendo diez puntos significativo en una imagen. Esto puntos se eligen teniendo en cuenta el contenido frecuencial de una zona determinada. Se eligen puntos en esquinas y bordes que tiene contenidos frecuenciales altos en distintas frecuencias.

Estos puntos se correlan con una segunda imagen. Se recorta un patrón alrededor del punto significativo, esquina. Realizamos la convolución de este patrón con una zona más grande de la otra imagen. El punto mas parecido de la segunda imagen es el punto de mayor valor de correlación.



Una vez arrancado el algoritmo continúa con los mismos puntos escogidos en la imagen anterior y una tercera imagen.

3Modelo de la cámara

El modelo de la cámara usado sera el modelo pin-hole. Este modelo viene determinado por los siguientes parámetros:

En esta aplicación se considerará que los parámetros internos no cambian.

El modelo pin-hole viene descrito matemáticamente por

donde x' , y' son las coordenadas en el espacio de la imagen, (x,y,z) son las coordenadas en el espacio tridimensional.

El objetivo de esta etapa es obtener la rotación y translación de la cámara y las coordenadas tridimensionales de los puntos a partir de un número suficiente de puntos. Para ello es necesario utilizar un algoritmo iterativo que resuelva esta ecuación.

El algoritmo Levenberg-Marquardt es un algoritmo de optimización para mínimos cuadrados no lineales. Este algoritmo es un método híbrido entre el método del máximo descenso( que es globalmente convergente y muy robusto lejos del óptimo) y el método de Newton (Que es mucho mas eficiente en las proximidades del mínimo).

Este proceso es muy sensible a los valores iniciales con los que arranque y en ocasiones no llega a converger.

4Filtro de Kalman

Los puntos obtenido por modelo de la cámara se usan como entrada al filtro de Kalman. El objetivo de este filtro es reducir la varianza de la medida. En este algoritmo hemos usado el siguiente modelo para la cámara.

donde x es la orientación o posición de la cámara y W un proceso estocástico de distribución normal.

la matriz completa del proceso será:

El algoritmo se compone de dos fase la predicción y el filtrado. En nuestro caso estas dos fases se calculan de manera consecutiva. Pero se podría realizar la fase de predicción para estimar el punto donde podremos encontrar la mejor correlación en el espacio de la imagen.

Para la elección de la matriz de covarianzas del proceso podemos decir que al considerar que los puntos son estáticos si estamos en un entorno donde realmente son estáticos esta proceso estará muy bien definido. Las variables que modelan el movimiento de la cámara sin embargo tendrán una covarianza mucho más elevada.

La matriz de covarianza de la medida es mas complejo. En este caso las medidas referentes a la posición y orientación de la cámara tendrán una matriz de covarianza diagonal. En cambio las variables que se refieren a la posición de los puntos en el espacio tendrán una varianza mayor en la dirección del rayo visual.

5Actualización de los puntos

La actualización de los puntos comprende dos tareas:

La segunda parte del algoritmo calcula los pixels con máximos valores propios. Estos puntos se añaden a la lista hasta completar el número de puntos necesarios para continuar con el algoritmo.

La actualización de los puntos conlleva a la actualización de las matrices del filtro de Kalman así como de su inicialización. También es necesario inicializar el algoritmo de optimización del modelo de la cámara en esas variables.

6Implementación

El programa se ha implementado en C++ usando las librerías OpenCV[3] y GSL[2]. La primera se ha usado para los algoritmos de procesamiento de imágenes y la segunda para los cálculos matemáticos y el algoritmo de optimización de mínimos cuadrados no lineales.

La arquitectura software a seguido las capas descritas en lo apartados anteriores. El intercambio de datos entre las diferentes capas se ha realizado usando una lista enlazada que contiene los datos asociados a cada punto, sus coordenadas bidimensionales y tridimensionales, identificador y los valores de este punto en el instante anterior.

El diagrama de clases de la implementación realizada se muestra a continuación:








7Resultados

El programa es una demostración de la factibilidad del enfoque aquí expuesto. El algoritmo es capaz de ejecutarse en tiempo real con los siguientes tiempos.

Etapa

tiempo (seg.)

Captura y match_template

0.131

Mínimos cuadrados

0.132

Kalman

0.002



El algoritmos de búsqueda de puntos comunes basado en la correlación de puntos con altas frecuencias(esquinas) ha demostrado ser bastante robusto incluso definiendo zonas de búsqueda amplias. La velocidad del algoritmo También a resultado ser adecuada.





En la siguiente figura podemos ver la convergencia del algoritmo de optimización de mínimos cuadrados no lineales. En el podemos apreciar la rápida convergencia incluso partiendo con valores iniciales muy lejanos al óptimo.




En las siguientes figuras se puede apreciar el resultado de seguir un conjunto de 10 puntos preparados. Estos puntos no se obtenían por el algoritmo de extracción de características significativas sino que estaban fijados de antemano. La segunda gráfica muestra el resultado estimado por el filtro de Kalman de la posición de estos puntos.







El filtro de Kalman converge con rapidez a los valores del sistema como se puede ver en la siguiente serie de figuras. En ellas vemos como la nueve de puntos se desplaza en las primeras iteraciones para quedar fijas en cuatro o cinco iteraciones.













8Referencias

[1] Andrew Davison: Publications

http://www.doc.ic.ac.uk/~ajd/publications.html

[2] GNU Scientific Library. Reference Manual.

http://www.gnu.org/software/gsl/

[3] Open Computer Vision Library. OpenCV

http://www.sourceforge.net/projects/opencvlibrary

[4] Métodos de optimización sin restricciones

Javier García de Jalón. ETSII – Departamento de Matemática Aplicada a la Ingeniería Industrial.

[5] Modelo de Captación de Imágenes.

UPM-DISAM. Grupo de visión.



8