我們知道,雙目立體測距的基礎是利用視差求距離,而視差就是計算左右圖像中對應點的像素座標之差,這個左右圖中的對應點是由通過立體匹配得來。
立體匹配從大的方面說分爲兩種,全局匹配和局部匹配,全局匹配精度高,但是計算速度慢,不能滿足實時的要求,局部匹配速度快,可以滿足實時的要求,但是精度不如前者,考慮到項目實際,需要實時的判斷機器人與環境的關係,就重點研究局部匹配。局部匹配又分爲基於區域的匹配,基於特徵的匹配以及基於梯度的優化方法。綜合比較,選擇基於特徵的匹配。
基於特徵的匹配分爲特徵點提取和匹配兩個步驟,本篇主要針對特徵點提取三種方法進行比較,分別是SIFT,SURF以及ORB三種方法,這三種方法在OpenCV裏面都已實現。SURF基本就是SIFT的全面升級版,有 SURF基本就不用考慮SIFT,而ORB的強點在於計算時間,以下具體比較:
計算速度: ORB>>SURF>>SIFT(各差一個量級)
旋轉魯棒性: SURF>ORB~SIFT(表示差不多)
模糊魯棒性: SURF>ORB~SIFT
尺度變換魯棒性: SURF>SIFT>ORB(ORB並不具備尺度變換性)
所以結論就是,如果對計算實時性要求非常高,可選用ORB算法,但基本要保證正對拍攝;如果對實行性要求稍高,可以選擇SURF;基本不用SIFT。