Flujo optico
Alejandro F. Castellanos Jankiewicz
Universidad Anáhuac Mayab
0. Introducción
La determinación del flujo óptico de una imagen ha probado ser un componente de vital importancia en la visión por computadora. Sus aplicaciones pueden ir desde la detección de movimiento, el cálculo de tiempo de colisión o el sistema de navegación de un robot,solo por mencionar algunas. El objetivo de este trabajo es explicar de manera eficaz el concepto de Flujo Óptico, al igual que ejemplificar su uso dentro de un algoritmo, pues es un concepto de gran importancia y crecimiento dentro del mundo de la visión computacional. Algunos ejemplos de aplicaciones de la librería de OpenCV son: Interacción Computadora-Humano Identificación de objetos Reconocimiento de rostros y de gestos Rastreo de movimientos Al ser solamente una librería, OpenCV necesita un compilador. El mejor de ellos, pues es el que tiene mayor compatibilidad con las librerías, es el compilador de C++.
2.2 El dominio del problema restringido
Antes de empezar a calcular el flujo óptico de dos o más imágenes, es necesario tomar ciertas consideraciones que se describirán acontinuación. Para evitar variaciones en el brillo debido a los efectos de las sombras, asumimos que la superficie la cual se está viendo es plana. Además asumimos que la iluminación incidente es uniforme por toda la superficie. Por lo tanto, el brillo en un punto de la imagen es proporcional a la capacidad de reflexión de la superficie en el punto correspondiente del objeto. Igualmente, asumimosque la capacidad de reflejar varía suavemente y no tiene discontinuidades espaciales. Esto nos garantiza que el brillo de la imagen es diferenciable. Se excluyen las situaciones donde los objetos ocluyen a otros porque existen discontinuidades en el reflejo en las fronteras de los objetos [2]. Con la situación ya descrita, el movimiento de los patrones de brillo en la imagen es determinadodirectamente por el movimiento de puntos correspondientes de la superficie del objeto.
3.2 Implementación en Visual Basic 2006
Se programó un algoritmo que calcula el flujo óptico para cada cuadro de imagen en un video. Se utilizó la librería OpenCV, pues como visto con anterioridad, contiene valiosas funciones de visión por computadora. Como resultado, este algoritmo dibuja los vectores querepresentan la velocidad y dirección del movimiento dentro de la imagen. Mediante el cálculo del flujo óptico se pueden calcular, de igual manera las relaciones 3D entre objetos en una imagen, sin embargo ese no es el objetivo de este algoritmo. Lo que hace el algoritmo en primer lugar es conseguir todos los cuadros del video por separado. Esto es equivalente a tener varias "fotografías" del video.Posteriormente convierte los cuadros a imágenes de un canal de 8 bits de profundidad. Seguidamente detecta y almacena como máximo 400 puntos importantes de la imagen. Los puntos importantes son los que contienen la mayor información, que generalmente son puntos esquina o los que tienen buena textura. Ahora usando los puntos encontrados, llamamos a la función cvCalcOpticalFlowPyrLK( ) para encontrar elflujo óptico. Esta función se encuentra en la librería de OpenCV. Una vez encontrado el flujo óptico, se dibuja para poder tener una representación gráfica. Se plasman vectores sobre la imagen imitando un campo de movimiento, para poder así representar el flujo óptico [3]. El algoritmo se aplicó a un video en donde se grabó una camioneta moviéndose a través de terracería. Se introdujo el video alalgoritmo, y se obtuvo como resultado un nuevo video con la adición de los vectores que simbolizan el flujo óptico. Se extrajo una imagen del video resultante, la cual se muestra a continuación.
1. El campo de movimiento
Cuando un objeto se mueve frente a una cámara, existe un cambio en la imagen. Por lo tanto, si un punto p0 en un objeto se mueve con una velocidad v0, entonces el punto imagen...
Regístrate para leer el documento completo.