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 gradientavec W(x,p)
2-ensuite calculer le jacobiendans (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
ensuite la 1 ére étape est calculé comme ç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
enfin j'ai calculé le steepest decent comme cela
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);
je voudraos maintenant faire le même travail mais avec cette matrice
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;
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![]()
Partager