2011-03-13 158 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