Lucas-Kanade

Il metodo di stima del flusso ottico di Lucas-Kanade (LK81) è un metodo per stimare il movimento di caratteristiche interessanti in scene successive di un video. L'obiettivo è quello di associare un vettore movimento $(u,v)$ ad ogni pixel “interessante” della scena confrontando due immagini consecutive.

L'algoritmo fa le seguenti assunzioni:

Partendo dell'equazione del flusso ottico per ogni punto $(x,y)$:

\begin{displaymath}
I (x + u\delta t, y + v\delta t, t + \delta t) = I(x,y,t)
\end{displaymath} (7.2)

dove $I(t)$ è un immagine e $I(t + \delta t)$ la consecutiva. Con l'espansione in serie di taylor al primo ordine:
\begin{displaymath}
\begin{array}{l}
I (x + u\delta t, y + v\delta t, t + \de...
...t) v + \frac{\partial I}{\partial t} (x,y,t) = 0
\end{array}
\end{displaymath} (7.3)

L'algoritmo di Lucas-Kanade assume che il cambiamento di luminosità di un pixel della scena venga totalmente compensato dal gradiente della scena stessa ovvero
\begin{displaymath}
I_x u + I_y v + I_t = 0
\end{displaymath} (7.4)

dato il gradiente temporale $I_t$ e il gradiente spaziale $(I_x,I_y)$.

Ovviamente il singolo pixel non contiene abbastanza informazione per risolvere questo problema. Per raccogliere più osservazioni viene assunto che un intorno del pixel abbbia lo stesso moto, ovvero

\begin{displaymath}
\begin{bmatrix}
I_x(\mathbf{p}_1) & I_y(\mathbf{p}_1) \\...
...thbf{p}_2) \\
\vdots \\
I_t (\mathbf{p}_n)
\end{bmatrix}
\end{displaymath} (7.5)

dove $\mathbf{p}_1 \ldots \mathbf{p}_n$ sono i punti nell'intorno del punto da stimare. La soluzione può essere ottenuta attraverso il metodo delle normal equations
\begin{displaymath}
\begin{bmatrix}
\sum I_x I_y & \sum I_x I_y \\
\sum I...
...bmatrix}
\sum I_x I_t \\
\sum I_y I_t \\
\end{bmatrix}
\end{displaymath} (7.6)

Se si nota questa è anche la matrice dei punti caratteristici sfruttata poi da Shi-Tomasi o da Harris (vedi 5.2): i punti caratteristici di questa matrice sono punti che vengono facilmente tracciati con l'algoritmo di Lucas-Kanade.

Quando il moto è più grande di un pixel è necessario un algoritmo iterativo per risolvere il problema e un approccio coarse-to-fine per evitare i minimi locali: esisterà una scala per la quale il moto del pixel sarà inferiore ad un pixel.

Paolo medici
2025-03-12