J'ai trouvé une implémentation Matlab de l'algorithme LKT here et elle est basée sur l'équation de constance de luminosité.Flux optique Lukas Kanade: Comprendre les maths
L'algorithme calcule les dégradés d'image dans les directions x et y en convolvant l'image avec des opérateurs de gradient de bord horizontaux et verticaux 2x2 appropriés. L'équation de la constance de luminosité dans la littérature classique a de son côté droit la différence entre deux trames successives. Cependant, dans la mise en œuvre référencée par le lien précité, le côté droit est la différence de convolution.
It_m = conv2(im1,[1,1;1,1]) + conv2(im2,[-1,-1;-1,-1]);
Pourquoi ne pouvait It_m être simplement calculée comme suit:
it_m = im1 - im2;
Cela vous prendra une minute pour vérifier que 'conv2 (x, [1,1; 1,1])' est différent de 'x'. – MBaz
Faites-vous référence à cette ligne? It_m = conv2 (im1, uns (2), 'valide') + conv2 (im2, -ones (2), 'valide'); Notez qu'il s'agit simplement d'un lissage spatial 2D et que la taille de It_m résultante est identique à celle des matrices Ix_m et Iy_m (car elles sont traitées avec conv2 avec un noyau 2x2 et une option "valide"). –
@MBaz Je ne pense pas que sa confusion soit à propos de conv2 (x, [1,1; 1,1]) étant différent de x. Je soupçonne que la question est pourquoi utiliser cette convolution du tout et pas seulement calculer le temps dérivé par pixel sur les deux images. –