2015-05-18 71 views
0

我的視差圖的結果是好的。據我所知,近距離的物品應該很輕,遠的物品很黑。相反的事情發生在我身上。視差圖的顏色是逆轉的

這是我的代碼:

CvStereoBMState *BMState = cvCreateStereoBMState(); 
     assert(BMState != 0); 
     BMState->preFilterSize=31/*41*/; 
     BMState->preFilterCap=41/*31*/; 
     BMState->SADWindowSize=31/*41*/; 
     BMState->minDisparity=-0/*-64*/; 
     BMState->numberOfDisparities=112/*128*/; 

     try 
     { 
     while(true) 
     { 
      if(true) 
      { 

      if(frameL && frameR) 
      { 
       CvMat part; 
       cvRemap(gFrameL, img1r, mx1, my1); 
       cvRemap(gFrameR, img2r, mx2, my2); 
       if(true/*!isVerticalStereo || useUncalibrated != 0 */) 
       { 

        cvFindStereoCorrespondenceBM(img1r, img2r, disp,BMState); 

        cvNormalize(disp, vdisp, 0, 256, CV_MINMAX); 
        cvNamedWindow("disparity"); 
        cvShowImage("disparity", vdisp); 
       } 
      } 
      } 
    frameL = cvQueryFrame(capLeft); 
    frameR= cvQueryFrame(capRight); 
    cvCvtColor(frameL,gFrameL,CV_BGR2GRAY); 
    cvCvtColor(frameR,gFrameR,CV_BGR2GRAY); 
     } 

我怎樣才能解決這個問題?

回答

1

視差是一個立體圖像中的一個點與另一個立體圖像之間的水平像素單位的偏移量,其中兩個點都是同一個3D世界點的圖像。如果你的圖像被切換,視差的方向也會翻轉。嘗試切換輸入圖像。

如果您的左右圖像被切換,那麼視差可能是負面的。
cvNormalize()之後,您將得到正確的正值,較小的值代表接近的對象。

+0

非常感謝。它的工作:) – Salma

+0

@薩爾瑪:好:-)。您可以將回答標記爲已回答。 –