雙目立體視覺測距的原理
雙目立體視覺是基於視差原理,從雙目相機中獲取的多幅圖像中恢復被測物體三維幾何信息的方法。如圖,對於空間物體表面任意一點,如果從左右2個攝像機同時觀察P,並能確定在左攝像機圖像上的點Pl與右攝像機圖像上的點Pr是空間同一點P的圖像點(稱Pl與Pr,為共軛對應點),則可計算出空間點P的三維坐標(包含距離信息)。基於雙目立體視覺的測距系統包含攝像機標定、立體校正、立體匹配和三維重建等步驟。
相機標定
OpenCV使用平面黑白棋盤來標定攝像機,調用findChessboardCorners()獲得棋盤格角點的像素坐標,再調用cornerSubpix獲得棋盤格角點的亞像素坐標。調用drawChessboardCorners()函數繪製出檢測到的棋盤角點,然後使用stereoCalibrate()函數完成雙目標定。
立體校正
在OpenCV中可通過stereoRectify()函數完成校正功能,攝像機矩陣,畸變向量,左右旋轉矩陣R和平移向量T。輸出參數為左右投影矩陣P,以及重投影矩陣Q。可調用函數InitUndistortRectifyMap()生成圖像校正所需的映射矩陣。
立體匹配與測距
立體匹配完成匹配左右攝像機視圖的相同特徵,並得到視差圖,視差值是匹配時相同特徵點在x坐標軸上的差值,獲得視差圖後,通過三角相似原理即可計算出目標物體的距離信息。OpenCV中提供了兩種立體匹配算法SGBM算法和BM快匹配算法,其中SGBM算法準確性較高,但是運算速度慢。BM算法準確性稍差但運算速度快,可滿足實時應用需求。BM算法在OpenCV中通過函數StereoBM()實現。