Bonjour,
J'utilise deux caméras IR (wiimotes) car je veux faire de la stéréovision. L'idée, c'est d'utiliser les images des deux caméras pour obtenir l'image 3D d'une source IR située devant.
Pour ça, je veux éviter d'utiliser les méthodes de calibration (calibrateCmera2, findChessboardCorner,...) mais directement stereoRectifyUncalibrated.
J'ai déjà récupéré les coordonnées des points IR vus par les wiimotes dans un tableau points[i][j] (i dans [0,1] car deux caméras, j dans [0,7] car 8 diodes IR en face).
Je crée ensuite deux matrices:
CvMat _imagePoints1 = cvMat(1, N, CV_32FC2, &points[0][0] );
CvMat _imagePoints2 = cvMat(1, N, CV_32FC2, &points[1][0] );
qui contiennent chacune les coordonnées de tous les points IR, respectivement pour l'image prise par la wiimote 1 puis 2.
Je calcule ensuite la matrice fondamentale F:
cvFindFundamentalMat( &_imagePoints1, &_imagePoints2, &_F);
puis H1 et H2:
cvStereoRectifyUncalibrated( &_imagePoints1,&_imagePoints2, &_F, imageSize, &_H1, &_H2, 3);
Afin d'utiliser la méthode cvInitUndistortRectifyMap, puis cvRemap
j'initialise les matrices M1 et M2 à l'identité et D1 et D2 à zéro.
cvSetIdentity(&_M1);
cvSetIdentity(&_M2);
cvZero(&_D1);
cvZero(&_D2);
Puis je fais ce que j'ai trouvé dans l'exemple OpenCv stereoCalibration:
cvMatMul(&_H1, &_M1, &_R1);
cvMatMul(&_iM, &_R1, &_R1);
cvInvert(&_M2, &_iM);
cvMatMul(&_H2, &_M2, &_R2);
cvMatMul(&_iM, &_R2, &_R2);
Mais il me manque les paramètres img1 et img2 pour pouvoir continuer.
cvInitUndistortRectifyMap(&_M1,&_D1,&_R1,&_M1,mx1,my1);
cvInitUndistortRectifyMap(&_M2,&_D1,&_R2,&_M2,mx2,my2);
cvRemap( img1, img1r, mx1, my1 );
cvRemap( img2, img2r, mx2, my2 );
A partir de là, je ne vois plus quoi faire.
Le but, c'est qu'ensuite, si les caméras enregistrent un point IR, je puisse avoir directement sa position en 3D.
Là, la méthode me demande une image que je n'ai pas (je n'ai que les points IR avec wiimote[i]->dot(j) de wiiuse)
Quelqu'un aurait une idée?
La méthode undistortPoints(const Mat& src, Mat& dst, const Mat& cameraMatrix, const Mat& distCoeffs, const Mat& R=Mat(), const Mat& P=Mat()) semble prometteuse mais je n'ai ni cameraMatrix ni distCoeff, ni P...
Merci d'avance!![]()
Partager