IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Utilisation de StereoRectifyUncalibrated (avec WiiMotes)... et ensuite ?


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 9
    Par défaut Utilisation de StereoRectifyUncalibrated (avec WiiMotes)... et ensuite ?
    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!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 9
    Par défaut Problème résolu
    Salut,
    Problème résolu.
    En fait, H fait directement le lien entre Pdst et Psce. (image caméra et point réel). Seul souci lié à l'algo utilisé, on a aucune idée de la distance à laquelle se trouve l'objet (il peut petre petit et proche ou loin et énorme, le résultat sera le même). Du coup, ce n'est pas ce que je cherche.
    Je dois nécessairement passer par la calibration des caméras.

    Bon courage à ceux qui bossent sur le même sujet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser DirectX 9 avec C++Builder
    Par Olivier Constans dans le forum DirectX
    Réponses: 2
    Dernier message: 27/06/2005, 11h30
  2. utilisation de dll avec diverses compilateurs
    Par Thylia dans le forum C++
    Réponses: 30
    Dernier message: 21/10/2004, 16h30
  3. Problème d'utilisation de Mysql avec dev-c++
    Par Watchi dans le forum Dev-C++
    Réponses: 10
    Dernier message: 06/08/2004, 14h35
  4. utilisation de fetch avec select
    Par arwen dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/06/2003, 10h03
  5. Utiliser Borland C++ avec Emacs sous Windows
    Par Eikichi dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/03/2003, 08h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo