tag img images for image-processing computer-vision opticalflow

image-processing - images - img title



¿Diferencia entre flujo óptico escaso y denso? (6)

Muchos recursos dicen que hay dos tipos de algoritmos de flujo óptico. ¿Y Lucas-Kanade es una técnica escasa, pero no puedo encontrar el significado de escaso y denso? ¿Puede alguien decirme cuál es la diferencia entre flujo óptico denso y escaso?


El flujo óptico disperso funciona en las características (bordes, esquinas, etc.). El flujo óptico denso está diseñado para funcionar en todos los píxeles. La ventaja de la primera es que generalmente es más rápido, mientras que la segunda puede dar estimaciones de más píxeles que la primera.


El flujo óptico disperso le da los vectores de velocidad para algunos puntos interesantes (esquina), estos puntos se extraen de antemano utilizando algoritmos como Shi-Tomashi, Harris, etc. Los puntos extraídos se pasan a su [función de flujo óptico] junto con la imagen actual y la siguiente imagen. Cualquier buena función de flujo óptico debe verificar el flujo óptico en la dirección de avance utilizando los puntos de las esquinas anteriores y también la pista posterior para verificar si está siguiendo los mismos puntos.

Por otro lado, el flujo óptico denso se puede consultar aquí: http://www.cs.toronto.edu/~fleet/courses/cifarSchool09/flowChapter05.pdf


El flujo óptico disperso le proporciona los vectores de flujo de algunas "características interesantes" dentro de la imagen.

El flujo óptico denso intenta proporcionarle el flujo en toda la imagen, hasta un vector de flujo por píxel.


En primer lugar, Lucas-Kanade NO es una técnica de flujo óptico disperso. La razón por la que muchos creen que es, se debe a un gran malentendido. La idea errónea se convirtió en una verdad aceptada desde que la primera implementación de Lucas-Kanade en OpenCV se etiquetó como SPARSE, y aún lo es hasta el día de hoy. Los argumentos de por qué Lucas-Kanade debería llamarse dispersos, se aplican a cualquier algoritmo de flujo denso. Si insiste en que Lucas-Kanade es escaso, entonces todos los algoritmos de flujo son escasos y no tiene sentido distinguirlos.

El flujo disperso es lo mismo que el seguimiento de puntos, el flujo denso consiste en vectores sobre el video, que indican estimaciones de movimiento de posiciones fijas.

Puedes leer más sobre todo esto en este tutorial que escribí , donde también muestro cómo Lucas-Kanade es tan denso como cualquier otro algoritmo (aunque no tan preciso).


Flujo óptico disperso: el método Lucas-Kanade calcula el flujo óptico para un conjunto de características dispersas (p. Ej., Esquinas detectadas utilizando el algoritmo de Shi-Tomasi). Flujo óptico denso: el algoritmo de Gunner Farneback calcula el flujo óptico para todos los puntos en el marco. Esto se explica en "Estimación de movimiento de dos fotogramas basada en la expansión polinomial" por Gunner Farneback en 2003.

Ejemplo de implementación de se puede encontrar en la documentación de opencv aquí


La explicación breve es que las técnicas dispersas solo necesitan procesar algunos píxeles de la imagen completa, las técnicas densas procesan todos los píxeles. Las técnicas densas son más lentas pero pueden ser más precisas, pero según mi experiencia, la precisión de Lucas-Kanade podría ser suficiente para las aplicaciones en tiempo real. Un ejemplo de un algoritmo de flujo óptico denso (el más popular) es el flujo óptico de Gunner Farneback.

Para obtener una visión general de la calidad del flujo, consulte la página de referencia, por ejemplo, el KITTI o el conjunto de datos Middleburry