2011-03-13 4 views
0

Donc, je calcule la disparité entre 2 images stéréo (gauche et droite) .Il semble correct (parce qu'il est quelque peu similaire à l'image originale) .Après cela, j'utilise la ligne: -Erreur lors de l'obtention de points 3D de Disparity

cvReprojectImageTo3D(&disparity, threeDimage, &Q); 

et obtenir les réponses à threeDimage.It est une matrice et je y accéder comme: -

for(int ii=0;ii<threeDimage->rows;ii++) 
    {  
    float *data = (float *)(threeDimage->data.ptr + ii * threeDimage->step); 

    for(int jj=0;jj<threeDimage->cols*3;jj=jj+3) 
    { 


     float a=data[jj]; 
     float b=data[jj+1]; 
     float c=data[jj+2]; 
     fprintf(fpp,"%f %f %f \n", a,b,c); 

     } 

} 

Mais le problème est il ne semble pas me donner un answer.I correct obtenir beaucoup de valeurs répétées dans mon dossier. Tout indice sur ce qui pourrait mal se passer? l de la matrice correcte?

Répondre

0

Vous ne pouvez obtenir une distance 3D différente des points où il y a un bord dans la carte de disparité. Si vous avez de grandes zones de la même disparité (gris plat dans l'image d'entrée) alors ils auront le même Z.

+0

Eh bien, je suis en train de reconstruire un visage et oui la plupart de la partie centrale de l'image semble même gris niveau.Mais je suppose que la carte de disparité est bonne (je peux voir les grandes lignes du visage)? Comment puis-je l'améliorer pour obtenir un nuage 3D plus sensible. J'utilise certains des derniers algorithmes pour générer la carte de disparité. – Manish

+0

et plus donc il y a différents patchs colorés dans l'image mais c'est comme si tout se présentait dans une ligne! ce qui est complètement bizarre et me fait penser qu'il pourrait y avoir quelque chose qui ne va pas avec la partie reprojection. – Manish

Questions connexes