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 :

Stéréovision et ses soucis


Sujet :

OpenCV

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Par défaut Stéréovision et ses soucis
    Bonjour a tous,

    Ca fait un moment que je connais le site developpez.net mais la premiere fois que j'ose faire une demande ... il faut dire que je suis stuck !

    Je suis donc en train de faire du calcul de disparite avec deux web cams ( ce sont des ps3 eyes ) et en utilisant les fonctions d'opencv

    Pour ce faire je commence donc par ma calibration en prenant des series de 20 photos de "chessboard". On appel les fonctions qui vont bien. (FindChessBoard, SubPix,calibrateCamera)

    Ensuite on fait la calibration stereo avec pareil les fonctions StereoCalibrate et StereoRectify toujours avec les photos prises auparavant.

    Finalement calcul des matrices pour remapper les images en entree et les passer a l'algo de stereoMatching.

    Bon tout ca j'ai fait, le hic maintenant c'est que mes resultats sont de mauvais a tres mauvais.
    La calibration me semble correcte au niveau des valeurs de matrices de camera, de coefficient intrinseques et celles de translation et rotation entre les 2 cameras.
    J'utilise le nouvel algo disponible dans openCV 2.1 StereoSGBM (semi global block matching).

    Les problemes rencontres :
    Enormement de bruit
    Aucune information probante sur la profondeur.

    Exemple : les deux images superieurs sont celles remapees


    Hier j'ai reussi a avoir un resultat presque correcte, mais j'ai perdu le setting.

    Questions du coup :
    Quel est le meilleur positionnement pour les cameras
    Est ce que les parametres pour le stereoMatching vous sembles bon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //stereo calculation class
    	StereoSGBM stereoMatcher;
     
    	//Stereo reconstruction settings
    	stereoMatcher.P1 = 8*stereoMatcher.SADWindowSize*stereoMatcher.SADWindowSize; // 3 = nb channels
    	stereoMatcher.P2 = 32*stereoMatcher.SADWindowSize*stereoMatcher.SADWindowSize;
    	stereoMatcher.minDisparity = 0;
    	stereoMatcher.numberOfDisparities = (w/8)-(w/8)%16; //img.width/8
    	stereoMatcher.uniquenessRatio = 10;
    	stereoMatcher.speckleWindowSize = 150;
    	stereoMatcher.speckleRange = 32;
    	stereoMatcher.disp12MaxDiff = 1;
    	stereoMatcher.fullDP = true;
    Quels parametres utilisez vous sur l'autre algo (BM) ?

    Merci beaucoup de vos reponses

    Sil.

  2. #2
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    vue la méthode utilisé par openCV je dirais une vue de gauche et une vue de droite avec un angle d'inclinaison assez important quand même. Mais tes deux images me paraissent vraiment très sombre tu devrais les retravailler avant tout non ?

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Par défaut
    Avant tout merci de ta reponse !

    J'ai tire le store pour que ca soit moins lumineux justement ... Je vais le remonter alors.

    Je n'ai pas saisi ton histoire d'inclinaison. Tu veux dire que la vue de chaque camera doit se croiser comme si on louchait ? Et la distance entre les deux camera doit aussi avoir son importance non ?

  4. #4
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    OpenCV Book

    page 415 =)

    Pour la luminosité soit tu ouvre tes stores soit tu utilise un filtre

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Par défaut
    Salut,

    Merci pour le lien du livre O'Reilly, j'avais deja lu le passage concerne et installe mes cameras comme ils l'avaient preconise (axes frontaux paralleles)

    Je pense que le probleme vient au moment de la calibration stereo. Sensément a la fin de cette calibration les lignes epipollaire doivent etre paralleles, ceci afin de simplifier grandement l'algorithme en faisant une recherche sur une ligne de pixels ce qui coute bcp moins cher.

    Mais voila ce que j'obtient apres calibration, les lignes ne sont pas du tout continues, une ligne sur une image ne correspond pas a une ligne sur l'autre image (mais elles sembles paralleles)



    Est ce que vous avez une idee de pourquoi la calibration ne serait pas bonne a ce niveau la ?

    Voila la serie d'instruction executees
    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
    printf("Processing the samples\n");
    	Size2i imsize(w,h);
     
    	printf("Calibration of each camera");
    	//calibrate each camera, calculate intrisinc ans extrinsinc params
    	calibrateCamera(objPoints, imgPoints, imsize, camMat, distCoeff, rvecs, tvecs);
    	calibrateCamera(objPoints, imgPoints2, imsize, camMat2, distCoeff2, rvecs2, tvecs2);
    	printf(" : done\n");
     
    	printf("Calibration of each camera according to the other");
    	//find transformation from 2 cameras
    	stereoCalibrate(objPoints, imgPoints, imgPoints2, camMat, distCoeff, camMat2, distCoeff2, imsize, R, T, E, F, TermCriteria(TermCriteria::COUNT+TermCriteria::EPS,30,0.000001),CALIB_FIX_INTRINSIC);
    	printf(" : done\n");
     
     
    	printf("Calculation of the rectification maps");
    	//Find rectification matrices from calibration
    	stereoRectify(camMat,distCoeff,camMat2,distCoeff2,imsize,R,T,R1,R2,P1,P2,Q,0);
     
    	//maps for rectification
    	initUndistortRectifyMap(camMat,distCoeff,R1,P1,imsize,CV_32FC1,map11,map12);
    	initUndistortRectifyMap(camMat2,distCoeff2,R2,P2,imsize,CV_32FC1,map21,map22);
    	printf(" : done\n");
     
    	//approximation for speed calculation
    	convertMaps(map11,map12,smap11,smap12,CV_16SC2);
    	convertMaps(map21,map22,smap21,smap22,CV_16SC2);	
    	printf("Calibration over\n");

  6. #6
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439

Discussions similaires

  1. Soucis avec panel, ses controls et les événements
    Par Arno_94 dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 06/08/2008, 12h25
  2. [FLASH 8] La méthode onLoad() et ses soucis
    Par luta dans le forum Flash
    Réponses: 3
    Dernier message: 08/11/2006, 10h11
  3. Editer ses sources
    Par taupin dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 24/12/2002, 19h17
  4. Réponses: 2
    Dernier message: 03/10/2002, 17h24
  5. Installer ses composants
    Par Geronimo dans le forum C++Builder
    Réponses: 14
    Dernier message: 18/06/2002, 14h51

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