Bonjour à tous.

J'ai un petit problème avec la fonction qui calcul les paramètres extrinsèques de la caméra. En effet, le vecteur de translation ainsi que le vecteur de rotation semblent faux.

Voici le code en question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
 
//Coordonnées 3D du plan
double data_object_points[] = 
{ 1,-1,0,
1,1,0,
-1,1,0,
-1,-1,0};
 
 
//Coordonnées 2D du plan
double data_image_points[] = 
{ A.x,A.y,
 B.x,B.y,
C.x,C.y,
D.x,D.y};
 
//Params intrinsic
double data_intrinsic_matrix[] = { 821.51,-4.00136 ,344.993,
					0, 820.367 , 238.763,
					0,0,1 };
 
double data_distortion_vector[]={ -0.00611905, 1.11889, 0,0 };
 
//Init Mat
CvMat object_points=cvMat(4,3,CV_32FC1,data_object_points);
CvMat image_points=cvMat(4,2,CV_32FC1,data_image_points);
intrinsic_matrix=cvMat(3,3,CV_32FC1,data_intrinsic_matrix);
distortion_coeffs=cvMat(4,1,CV_32FC1,data_distortion_vector);
 
double data_rotation[] = { 0,0,0 };
double data_translation[] = { 0,0,0 };
rotation_vector=cvMat(3,1,CV_32FC1,data_rotation);
translation_vector=cvMat(3,1,CV_32FC1,data_translation);
 
cvFindExtrinsicCameraParams2(&object_points,&image_points,&intrinsic_matrix,&distortion_coeffs,&rotation_vector,&translation_vector );
Pour tester si ces paramètres sont bons, j'utilise opengl et la fonction glutLookAt(data_translation[0],data_translation[1],data_translation[2],0,0,0,
data_rotation[0],data_rotation[1],data_rotation[2])
qui permet d'orienter et placer la caméra. Les résultats obtenus sont faux.

Quelqu'un voit-il l' (les) erreur(s) ?
Serait-il possible d'obtenir un exemple de code ou un lien expliquant le calcul de pose de la camera ?

Merci et bonne journée.