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 :

Extraction de la profondeur à partir de la carte de disparités


Sujet :

OpenCV

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut Extraction de la profondeur à partir de la carte de disparités
    Bonjour,

    Je travaille avec deux caméras parallèles entre elles et horizontales. J'ai effectué la calibration de celles-ci à l'aide d'une mire plane prise en photo sous différents angles. La calibration est globalement correcte.

    De même, j'ai vérifié la triangulation à l'aide des coins de la mire détectés par la fonction cvFindChessboardCorners sur les images rectifiées. Les distances obtenues sont proches de celles que je mesure (max. 1 cm. d'erreur).

    Mon problème est de donner sens aux valeurs de disparité que j'obtiens avec la fonction cvFindStereoCorrespondenceBM. Je ne comprends pas pourquoi quand je change certains paramètres de BMState comme minDisparity ou numberOfDisparities les valeurs de disparité changent totalement. De plus, celles-ci ne sont pas égales à celles qui m'ont permis de calculer la profondeur.

    Une idée ? Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut Shift
    J'ai trouvé un site qui pourrait correspondre à ce que je cherche :
    http://liu-cv.blogspot.com/2009/06/g...om-opencv.html
    Seulement l'opération indiquée ne prend pas en compte mindisp...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut Précisions
    Afin de mieux fixer les choses, je vous fais part de ma paire d'images rectifiées :

    Nom : Cam-mire3D-Rect1.jpg
Affichages : 563
Taille : 57,7 KoNom : Cam-mire3D-Rect2.jpg
Affichages : 539
Taille : 55,2 Ko

    ainsi que la carte de disparité normalisée (de 0 à 255) associée :

    Nom : vdisp2.jpg
Affichages : 544
Taille : 58,4 Ko

    A l'aide des images rectifiées, je détermine la disparité à l'aide de la fonction cvFindChessboardCorners :

    67,5 69 71 73,5 76 78,5 81,5 84,5 88
    67 69,5 71 74,5 76 79 81 84 86,5
    67 69 71 73,5 76 78,5 81 84 87
    67,5 70 71,5 74 75,5 78 81 84 86,5
    67,5 69,5 71,5 73 76 78 80,5 84 86,5
    68 69 71 73 75,5 78,5 81 83,5 86,5

    En me servant de la carte de disparité, je trouve les valeurs suivantes aux mêmes points :

    107 117 128 140 154 166 183 196 215
    107 119 128 140 154 166 181 197 213
    107 118 128 142 154 169 182 197 213
    108 121 129 142 155 167 181 197 214
    108 119 129 143 154 167 182 197 213
    107 118 129 141 154 166 181 197 213

    Est-ce que quelqu'un comprends cette différence ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut Elements de réponse
    Bon, je pense avoir trouvé quelque chose hier.

    En cherchant du côté de cvNormalize, j'ai été voir les résultats que me donnait la fonction cvMinMaxLoc et j'obtenais : min=752 et max=1520. Cela m'a surpris car le minimum sur ma carte de disparité non normalisée valait 131.
    Cette différence était due au fait que je prenais mes valeurs à partir de l'image et non de la matrice "disp" !

    Ensuite, j'ai recherché les valeurs de disparité à partir de cette matrice et j'ai obtenu :

    1074 1104 1135 1172 1214 1250 1301 1341 1396
    1072 1109 1137 1172 1214 1250 1295 1342 1392
    1073 1107 1136 1178 1214 1260 1297 1344 1392
    1075 1114 1138 1177 1216 1254 1295 1344 1393
    1076 1108 1138 1181 1214 1254 1297 1342 1390
    1074 1107 1138 1175 1215 1250 1294 1343 1390

    En voulant comparer ces valeurs avec celles obtenues à partir des images rectifiées, j'ai remarqué que pour chaque point on avait un facteur 16 ! Ce qui nous donne significativement les mêmes valeurs :

    67,13 69,00 70,94 73,25 75,88 78,13 81,31 83,81 87,25
    67,00 69,31 71,06 73,25 75,88 78,13 80,94 83,88 87,00
    67,06 69,19 71,00 73,63 75,88 78,75 81,06 84,00 87,00
    67,19 69,63 71,13 73,56 76,00 78,38 80,94 84,00 87,06
    67,25 69,25 71,13 73,81 75,88 78,38 81,06 83,88 86,88
    67,13 69,19 71,13 73,44 75,94 78,13 80,88 83,94 86,88

    Je cherche maintenant à savoir d'où vient ce facteur 16. Je me demande si cela est lié au fait que numberOfDisparities doit être un multiple de 16.
    Pouvez-vous me donner un coup de main ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut Résolution
    Bon, la dernière question avait déjà été abordée dans un précédent post sur ce site.
    La fonction cvFindStereoCorrespondenceBM effectue son calcul de disparité en multipliant par 16 et en arrondissant à l'entier le plus proche :
    http://opencv.willowgarage.com/docum...rrespondencebm

    Merci d'avoir participé...

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

Discussions similaires

  1. reconstruction 3D à partir d'une carte du disparite
    Par 3abirb dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 08/11/2012, 09h27
  2. Réponses: 1
    Dernier message: 27/10/2012, 11h59
  3. Extraction de donnees a partir d'un fichier excel
    Par atv_picco dans le forum Modules
    Réponses: 6
    Dernier message: 31/08/2006, 18h34
  4. Extraction d'une chaine à partir d'une photo
    Par Julaie95 dans le forum Traitement d'images
    Réponses: 31
    Dernier message: 23/05/2006, 15h44
  5. Capture video à partir de la carte graphique
    Par romain3395 dans le forum Vidéo
    Réponses: 2
    Dernier message: 21/03/2005, 23h07

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