2014-06-13 43 views
0

我已經完成了立體聲校準,並且獲得了validPixROI1和2(綠色邊框)。現在我想使用StereoSGBM,但校準(來自stereoRectify)的rois尺寸不一樣。任何人都知道如何解決此問題?立體聲校正 - ROI有不同的尺寸

其實我做somethine臨客是:

Rect roiLeft(...); 
Rect roiRight(...); 

Mat cLeft(rLeft, roiLeft); 
//Mat cRight(rRight, roiRight); // not same size... 
Mat cRight(cRight, roiLeft); 

stereoBM(cLeft,cRight, dst); 

如果我裁剪與投資回報率我的圖片,將圖片中間點是一樣的嗎?

Here它的工作原理。

enter image description here

回答

1

根據wiki

在光軸的交點和圖像平面A點R.這一點被稱爲主點或圖像中心。

所以我不認爲中心會是一樣的。 請參閱this site。在這裏的一個例子中,640x480像素相機的主點是302.71656,242.33386,這表明主點和圖像中心不相同。

2

爲什麼不上(未裁剪)圖像校準運行stereoBM,那麼你可以使用那些投資回報後掩蓋了結果的無效位...

stereoBM(rLeft,rRight, disp); 
    //get intersection of both rois or use target image roi, if you know the target image 
    cv::Rect visibleRoi = roiLeft & roiRight; 
    cv::Mat cDisp(disp,visibleRoi); 

現在你有沒有不同規模的投入,或不同的中心等問題。

乾杯

1

在未裁剪的矯正圖像上運行塊匹配器,然後使用。

cv::getValidDisparityROI(roi1, roi2, minDisparity, numberOfDisparities, SADWindowSize); 

該調用返回一個cv :: Rect,它將成爲左圖像和視差圖中所有有效像素的邊界框。有效像素只是兩個攝像機可以「看到」的像素(注意遮擋邊緣)。

一旦你有了視差圖,正確的圖像就變得毫無用處。

請注意,從stereoRectify返回的roi從攝像機內部函數重映射後只是有效像素。