這幾天研究內容涉及雙目視覺的內容,需要獲取雙目視差圖 (Binocular Disparity map)。
直接從網上下載的雙目視覺數據庫,並已經給出單攝像機標定參數和雙目標定參數。http://www.vision.ee.ethz.ch/~aess/dataset/
這樣就不需要攝像機標定和采集環節。直接進行圖像矯正和雙目匹配。
相關內容可以參考 opencv 雙目測距與三維重建的OpenCV實現問題集錦 http://www.opencv.org.cn/forum/viewtopic.php?f=10&t=11802
或者csdn chenyusiyuan的博文http://blog.csdn.net/chenyusiyuan/article/category/610983
在opencv中是通過cvInitUndistortMap計算出mapx和mapy,然后在利用cvRemap最后完成幾何變換。
在程序編寫中要尤其注意cvremap函數
void cvRemap( const CvArr* src, CvArr* dst,
const CvArr* mapx, const CvArr* mapy,
int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
CvScalar fillval=cvScalarAll(0) );
const CvArr* mapx, const CvArr* mapy,
int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
CvScalar fillval=cvScalarAll(0) );
要注意:(1)使用時必須保證src和dst都已經分配了內存
(2)cvRemap的前兩個參數是源圖像和目標圖像,大小和通道數必須相同,但是可以是任意數據類型,且不一定是同一副圖像
(3)mapx和mapy應該與源圖像和目標圖像大小相同,單通道,浮點類型(IPL_DEPTH_32F)
完成了雙目矯正,就可以進行雙目匹配和視差計算了。這是最后獲得的結果。
其中,雙目匹配和視差計算參照了網上朋友的代碼。

