You are on page 1of 5

ANEXO N 4

Algoritmo de Flujo ptico


Para la realizacin del proyecto era necesaria la implementacin de algoritmos de deteccin de
movimiento y seguimiento del mismo, por ejemplo al tener un fondo definido es necesario
detectar objetos que en subsecuentes cuadros de video sean el mismo objeto para despus poder
contarlos.
Uno de los algoritmos ms conocidos actualmente para seguimiento se conoce como Flujo
ptico, basado en el algoritmo diseado por Lucas y Kanade [19] y [20], este tiene como
objetivo encontrar los mejores puntos en los que para una matriz de auto correlacin de las
segundas derivadas tengan Eigen valores altos, como las Esquinas, estos tienen la caracterstica
de ser encontrados ms fcilmente en imgenes posteriores en video. Estos puntos en esencia
significan la presencia de una textura o un borde en dos direcciones centrado a ese punto. El
seguimiento de estos puntos hace que el algoritmo no dependa de la forma de los objetos a seguir
sino la presencia de estos puntos en la imagen, que intentan garantizar la presencia de objetos sin
la necesidad de detectarlos.
En procesamiento de imgenes se tiene la caracterstica que la imagen est cuantizada y las
coordenadas de los pixeles son valores enteros y se requiere una mayor resolucin para extraer
parmetros geomtricos de la imagen, una calibracin precisa de la imagen o la deteccin precisa
de puntos para hacer seguimiento. Para solucionar este inconveniente se trabaja con subpixelado,
para poder realizar mediciones entre pixeles.
Existe una implementacin en los ejemplos de OpenCV llamado lkdemo, que se basa en las
siguientes funciones: cvGoodFeaturesToTrack, que calcula los eigenvalores de cada pxel y tiene
como resultado un arreglo de puntos donde se encuentran los mayores eigenvalores, que son
puntos ptimos a ser seguidos; cvFindCornersSubPix, permite tener los valores entre pixeles de
las verdaderas Esquinas de la imagen; y cvCalcOpticalFlowPyrLK(), que implementa el
algoritmo de Lucas Kanade de manera piramidal, ya que busca ampliar la ventana local entre
imgenes para poder referenciar el punto a seguir.
En esta implementacin se realiza el clculo de los puntos a ser seguidos mostrando la manera
como se mueven estos puntos a medida que se mueven los objetos en la imagen, como se muestra
en la Figura 1 (A). Una particularidad de este es que no posee una actualizacin de estos puntos
de manera automtica, ya que los puntos se mueven acorde al movimiento del objeto, dejando
una zona sin puntos de inters, como se observa en la Figura 1 (B).

Figura 1 Ejemplo lkdemo de OpenCV
Esta implementacin no era aplicable para el proyecto, ya que se necesita la realizacin del
seguimiento del objeto pero de manera automtica, de tal manera que fue necesario modificar
esta implementacin para las necesidades del proyecto.
Las modificaciones que se realizaron fueron las siguientes:
Realizar la seleccin de puntos de manera automtica
Aumento de nmero de puntos de inters
Referenciar la trayectoria de los puntos de inters cuadro a cuadro.
Intentar unir los puntos pertenecientes a un solo vehculo
Para la seleccin de puntos de manera automtica se utilizaron las funciones:
cvGoodFeaturesToTrack, cvFindCornersSubPix y cvCalcOpticalFlowPyrLK() en cada uno de
los cuadros de video y se alternaban los puntos de inters de cuadro a cuadro.
Para el aumento de nmero de puntos de inters se modifica un parmetro de entrada de estas
funciones que permite tener un nmero mayor de puntos de inters, para poder abarcar ms
objetos mviles en el cuadro de video.
Para la referenciacin de la trayectoria de los puntos de inters, al tener los puntos de inters
cuadro a cuadro se realizaba la asignacin uno a uno de estos puntos.
Una imagen de muestra de los resultados de estas modificaciones se pueden observar en la
(Figura 2).


Figura 2 Ejemplo de compilacin de algoritmo de flujo ptico
Se puede observar que el algoritmo presenta la trayectoria de los puntos de inters en azul, pero
hay puntos que cumplen con las propiedades de puntos de inters pero no pertenecen a los
objetos mviles, como se muestra en la Figura 3.

Figura 3 Ejemplo de compilacin de algoritmo de flujo ptico con problemas de movimiento
Esto se debe a que este algoritmo funciona con caractersticas propias de la imagen cuadro a
cuadro, usando puntos ms no se preocupa por detectar al objeto, que es la finalidad de este
proyecto.
Una de las ventajas que posee este algoritmo es que se puede realizar un estimado de la velocidad
de modo directo ya que se puede interpolar la trayectoria de cada uno de esos puntos de inters lo
que podra facilitar la agrupacin de puntos a un vehculo determinado, pero dos o ms objetos
que posean velocidades similares sern tomados como uno solo como se ve en la (Figura 4).

Figura 4 ejemplo de un caso en el que los vehculos tienen velocidades similares
Al depender de informacin de movimiento, este algoritmo es susceptible a fallos en ambientes
de poca velocidad (Figura 5 Figura 7 ) o con objetos detenidos (Figura 6)

Figura 5 vehculos movindose a una velocidad similar y muy baja


Figura 6 Ejemplo de movimiento en un semforo, en donde los carros se encuentran detenidos, pero solo una moto se mueve

Figura 7 vehculos arrancando en un semforo
Las condiciones ideales que se b de la Figura 8, donde los puntos uscan en este algoritmo son las
de inters se encuentran condicionados a la forma de los objetos.

Figura 8 condiciones ptimas de funcionamiento
Este algoritmo se puede utilizar pueda utilizar una funcin de
La idea del proyecto es detectar vehculos y realizar el seguimiento, para el posterior conteo y no
mientras exista movimiento y se
agrupacin de parmetros como cvSeqPartition para la posterior deteccin de los objetos,
encontramos que este algoritmo fuera el mejor para este objetivo sin embargo. Si se utiliza una
combinacin entre los resultados de esta implementacin con la deteccin de objetos propuesta
por nosotros como una forma de asignar puntos a objetos, esta sera una buena opcin para
realizar mediciones como velocidad de manera mas precisa.

You might also like