0

そこで、2つのステレオ画像(左と右)の視差を計算します。これは正しいように見えます(元の画像と形状が多少似ているため)。その後、次の線を使用します:-

cvReprojectImageTo3D(&disparity, threeDimage, &Q);

そして、threeDimageで答えを取得します。これはマトリックスであり、次のようにアクセスします:-

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

       }

}

しかし、問題は、正しい答えが得られないように見えることです。ファイルに繰り返し値がたくさん表示されます。何が問題になっている可能性があるかについてのヒントはありますか?マトリックスの走査は正しいですか?

4

1 に答える 1

0

視差マップにエッジがあるポイントからのみ、異なる3D距離を取得できます。同じ視差の大きな領域(入力画像のフラットグレー)がある場合、それらは同じZになります。

于 2011-03-13T18:46:56.443 に答える