2011-09-30 11 views
6

Estoy trabajando en flujo óptico, y en base a the lecture notes here y algunas muestras en Internet, I wrote this Python code.Lucas Kanade Flujo óptico, Vector de dirección

Todos los códigos y las imágenes de muestra también están allí. Para pequeños desplazamientos de alrededor de 4-5 píxeles, la dirección del vector calculado parece estar bien, pero la magnitud del vector es demasiado pequeña (es por eso que tuve que multiplicar u, v por 3 antes de trazarlos).

¿Esto se debe a la limitación del algoritmo o error en el código? La nota de la conferencia compartida anteriormente también dice que el movimiento debe ser pequeño "u, v son menos de 1 píxel", tal vez por eso. ¿Cuál es el motivo de esta limitación?

+6

LK usa una aproximación de primer orden, por lo que (u, v) debería ser idealmente << 1, si no, los términos de orden superior dominan el comportamiento y usted es tostado. Para superar este problema, en las diapositivas 20 y 21, el autor sugiere utilizar una secuencia de pasos descendentes, comenzando por una resolución muy baja y luego incrementándola. Sin embargo, el algoritmo no está completamente explicado en su fuente. –

Respuesta

3

@belisarius dice "LK usa una aproximación de primer orden, por lo que (u, v) debería ser idealmente < < 1, si no, los términos de orden superior dominan el comportamiento y usted es tostado".

0

Una conclusión estándar de la ecuación de restricción de flujo óptico (OFCE, diapositiva 5 de su referencia) es que "su movimiento debe ser menor que un píxel, menos términos de orden superior lo matan". Si bien es técnicamente cierto, puede superar esto en la práctica utilizando ventanas de promedio más grandes. Esto requiere que realice estadísticas sanas, es decir, no medios mínimos puros, como se sugiere en las diapositivas. Cálculos igualmente rápidos y resultados muy superiores se pueden lograr mediante la regularización Tikhonov. Esto requiere establecer un valor de ajuste (la constante Tikhonov). Esto se puede hacer como una constante global, o dejar que se ajuste a la información local en la imagen (como la confianza Shi-Tomasi, también conocido como determinante del tensor de estructura).

Tenga en cuenta que esto no reemplaza la necesidad de enfoques a varias escalas para poder hacer frente a movimientos más grandes. Puede extender el rango un poco para lo que cualquier escala individual puede manejar.

Implementaciones, visualizaciones y el código está disponible en el formato de tutorial here, albeit in Matlab no Python.

Cuestiones relacionadas