2012-12-14 5 views
2

Je suis en quelque sorte nouveau pour le concept de flux optique dans les séquences vidéo et j'ai lu les bases sur le flux optique et je connais Horn & méthode de Shunck ou méthode de Lucas & Kanade.correspondance de pixels dans le flux optique

Je réalise que ces méthodes nous calculons des vecteurs qui représentent les mouvements de pixels dans une image, bien sûr, il y a des contraintes sur ces pixels (constance de la luminosité, la douceur et ....)

Mon question:

Selon la formule fx*u + fy *v = -ft comment pouvons-nous établir exactement une correspondance entre un pixel dans le cadre t, à un autre pixel dans le cadre t + 1? Je veux dire comment pouvons-nous être sûrs que c'est le même pixel dans la trame t que nous avons trouvé dans la trame t + 1, je ne sais pas dans quelle partie de leur algorithme nous trouvons ces pixels et établissons une correspondance entre les pixels dans la trame t et la trame t + 1! Je sais que nous pouvons trouver les pixels qui ont bougé, mais je ne sais pas comment nous avons trouvé les relations entre les pixels dans la trame t et la trame t + 1.

J'espère que vous comprenez ma question: o) (o.

S'il est réponse possible formulée que vous pouvez

Merci beaucoup

Répondre

6

En fait les méthodes de Horn, Schunk et Lucas, Kanade traitent de différentes façons avec l'équation:

Fx*U + Fy*V = -Ft 

Comme vous voyez cette équation est un système d'équations sous-déterminé. Donc, Horn et Schunk ont ​​proposé d'intégrer une hypothèse secondaire. La régularité contraint que l'écart de U et V devrait être petit. Ceci est intégré dans un cadre moins carré où vous avez:

(Fx*U + Fy*V + Ft)² + lambda * (gradient(U)² + gradient(V)² = E 
E -> min 

avec cette équation, il est possible de résoudre U et V en réglant l'écart de E-0. Par conséquent, les solutions des vecteurs de mouvement sont connectées via l'opérateur gradient de U et V.

Lucas et Kanade proposé à ce que dans une région définie de la fenêtre Lucas Kanade un seul vecteur de mouvement est calculé (ou une région a le seul mouvement/contrainte de constance de mouvement) et le mettre dans un moins cadre carré:

sum(Fx*U + Fy*V + Ft)² = E 
E->min 

La sommation est effectuée pour chaque pixel de la région définie. Et U et V pourrait également être facilement calculé soit l'écart de E mis à 0. Avec ces deux équations, vous voyez que les correspondances de pixels sont trouvées en utilisant les gradients d'image temporelle (Ft) et spatiale (Fx, Fy). Il y a une belle image dans le papier d'origine Lucas et Kanade, qui montre graphiquement cette corrélation. Cependant, il y a quelques points à considérer:

  • ce genre de méthodes ne sont en mesure de calculer les vecteurs de mouvement, si l'image contient la texture (problème d'ouverture)
  • Fx*U + Fy*V + Ft est une approximation de premier ordre Taylor de F(x, y, t) = F(x + U, y + V, t + 1). Cela signifie que votre signal d'image doit être linéaire. En conséquence, vous êtes capable de calculer des mouvements jusqu'à quelques pixels. C'est pourquoi les pyramides d'images sont utilisées pour fournir la linéarité.
  • Les contraintes de constance ou de douceur du mouvement empêchent les limites de mouvement. Cela pourrait être important dans certaines applications.
  • Le cadre ne vous empêche pas de problème de correspondance classique.
1

avec Fx * U + Fy * V = -Pour nous ne pouvons pas résoudre cette équation pour un pixel ... donc après cvGoodFeaturesToTrack vous donne un ensemble de pixels ... une fenêtre est choisie autour de chaque pixel dans cet ensemble ... selon l'hypothèse d'intensité constante que patch/fenêtre (centrer ce pixel choisi) est censé avoir la même intensité dans la trame suivante, donc supposons dans le cadre A que nous trouvions U et V pour un point par consideri U et V donnent le déplacement en pixels que le point particulier est censé traverser dans la direction horizontale et verticale ... en utilisant U et V, nous trouvons la position du point dans la trame suivante, c'est-à-dire le cadre B. Selon l'hypothèse d'intensité constante, le patch autour du point prédit dans le frameB devrait avoir la même intensité que le patch autour du point dans le frameA ... après avoir vérifié l'intensité entre deux patchs dans le frameA et le frameB une bonne piste ou pas .. J'ai essayé d'expliquer autant que je pouvais ... me corriger si je me trompe à un certain point ..

0

Dans la méthode de Horn et Schunk, il n'est pas nécessaire de calculer la correspondance des pixels sur deux trames par des méthodes externes. H & S est un algorithme itératif. Pour deux trames consécutives, vous commencez avec des valeurs initiales pour u-s et v-s et vous parcourez jusqu'à ce qu'elles convergent.

détail:

Pour deux trames consécutives, vous faire plusieurs itérations de ce qui suit, (ce qui est calculé pour chaque pixel, Imaginez avoir un tampon-u-image et une v-image-tampon)

u = u_av - Fx *(P/D) 
v = v_av - Fy *(P/D) 

*, stands for multiplication 
P = Fx * u_av + Fy * v_av + Ft 
D = lambda + Fx**2 + Fy**2 
Fx = gradient of image along x (can be averaged across the two frames) 
Fy = gradient of image along y (can be averaged across the two frames) 
Ft = temporal gradient across two frames 
u_av = (sum of u-s of 4 diagonal neighbors)/4 
v_av = (sum of u-s of 4 diagonal neighbors)/4 
lambda=smoothness constraint coefficient 

Les valeurs initiales u et v peuvent être des zéros.

Questions connexes