2011-03-13 159 views
0

获得3D点所以我计算2个立体图像之间的差异(左,右)。它看起来是正确的 (因为它的形状与原始图像有点类似)。经过这一点,我使用的线路: -错误的差距

cvReprojectImageTo3D(&disparity, threeDimage, &Q); 

并获得threeDimage.It的答案是一个矩阵,我访问它: -

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); 

     } 

} 

但问题是,它似乎没有给我一个正确的answer.I得到很多在我的文件中重复的值。关于可能出错的任何提示?是否是遍历?矩阵的正确性?

回答

0

您只能从视差图中存在边缘的点获得不同的3D距离。如果你有同样的差距(灰色平输入图像中)的大面积那么他们就会有相同的Z.

+0

那么我想重建一个脸,是最形象的中央部分的似乎相同的灰色但我认为差距图是正确的(我可以看到脸的轮廓)?我怎样才能改进它以获得更明智的三维云。我使用一些最新的算法来生成视差图。 – Manish 2011-03-13 19:08:18

+0

等等,所以图像中有不同颜色的补丁,但它像一切都显示在一行!这是完全奇怪的,并使我认为重投影部分可能有问题。 – Manish 2011-03-13 19:28:57