bonjour ;
je voudrais calculé le steepest descent d'une image en utilisant l'opencv
leur formule est

pour faire ça je dois
1-calculé le gradient avec W(x,p)
2-ensuite calculer le jacobien dans (x,p)
Note: il faut noté que je fais ces calculé pour résoudre un problème d'alignement où l'image dans le premier frame est "T" et dans le deuxiéme est 'I') le pixel (u,v) et de premier image quands je multiplié ce pixel avec la matrice W j'obtiens (u2,v2) dans le deuxième frame
je vous présenté maintenant comment j'ai le calculé pour une matrice w

dans cette matrice il y a un vecteur p =(wz, tx, ty);
pour calculé le gradient j'ai fait ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 cvSobel(pImgI, pGradIx, 1, 0); // Gradient in X direction
 cvConvertScale(pGradIx, pGradIx, 0.125); // Normalize
 cvSobel(pImgI, pGradIy, 0, 1); // Gradient in Y direction
 cvConvertScale(pGradIy, pGradIy, 0.125); // Normalize
ensuite la 1 ére étape est calculé comme ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
float Ix = interpolate<short>(pGradIx, u2, v2);
         float Iy = interpolate<short>(pGradIy, u2, v2);
enfin j'ai calculé le steepest decent comme cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 // Calculate steepest descent image's element.
         float stdesc[3]; // an element of steepest descent image
         stdesc[0] = (float)(-v*Ix+u*Iy);
         stdesc[1] = (float)Ix;
         stdesc[2] = (float)Iy;
je voudraos maintenant faire le même travail mais avec cette matrice

où comme on vu le vecteur p ne dépend pas seulement su (u,v) (l'emplacement du pixel) mais il dépend de 6 paramètre qui sont (x,y,z,wx,wy,wz)
j'ai pas pu le calculé dans cette cas la seul chose qui je connus que la matrice de stdesc doit être contenir 6 élément float stdesc[6];
pourriez vous m'aider pour le calculé SVP ma tête sera cassé et j'ai pas trouvé la solution