Bonjour,
Je suis sur un tp ou je dois déterminer la pose entre deux prises de vue c1 et c2. Je connais la position 3D des points dans le référentiel 1 et la position en pixel dans l'image 1 et 2.
J'ai essayé de trouvé une méthode pour déterminer donc le mouvement qu'il y a eu entre les deux images:
On a donc la position des points Pn(X,Y,Z) dans le référentiel de C1.
P12 = f[R T]* P11 ou P11 est la position du point p1 dans le référenciel c1 et p12 dans celui de C2.
R est une matrice 3x3 et T 3x1: R = [r1;r2;r3]
On connait également les paramètres intrinseques de la caméra qui à pris les deux images.
(u2,v2)' = K * (X2,Y2,Z2) ou u2,v2 les coordonnées pixelliques dans l'image 2.
u2 = au*X2/Z2+u0 et v2 = av*Y2/Z2 +v0
or X2 = r1*[X1 Y1 Z1]' + tx; Y2 = r2*[X1 Y1 Z1]' + ty et Z2 = r3*[X1 Y1 Z1]' + tz
donc le but maintenant c'est de trouver R et T à partir de tous ca.
u2 = au*X2/Z2+u0 et v2 = av*Y2/Z2 +v0 , je remplace X2 Y2 et Z2 ca donne en multipliant par Z2 de chaque coté:
u2(r3*[X1 Y1 Z1]' + tz) = au*( r1*[X1 Y1 Z1]' + tx)+u0(r3*[X1 Y1 Z1]' + tz)
et v2(r3*[X1 Y1 Z1]' + tz) = av*( r2*[X1 Y1 Z1]' + ty) +v0(r3*[X1 Y1 Z1]' tz)
La prochaine étape est de créé la matrice A à partir des deux équations ci-dessus et du vecteur d'inconnu X = [r11 r12 ....ty ty tz]
r1 = [r11 r12 r13] r2 = [r21 r22 r23] r3 = [r31 r32 r"3]
Ma matrice A a cette tête :
A(i,= [au*X au*Y au*Z 0 0 0 u0*X-u2*X u0*Y-u2*Y u0*Z-u2*Z au 0 u0-u2];
A(i+1,= [0 0 0 av*X av*Y av*Z v0*X-v2*X v0*Y-v2*Y v0*Z-v2*Z 0 av v0-v2];
DOnc je calcule la svd et j'obtiens une estimation du vecteur d'inconnu. Le problème c'est que j'ai fais ces calculs sur une base de données de teste mais ca n'a pas l'air de bien fonctionner.
J'ai du me tromper quelques part mais je ne trouve pas ou.
Quelqu'un pourrait m'éclairer.
D'avance merci
Partager