ORB-SLAM-Mono論文要點總結(二)——地圖初始化

四、地圖自動初始化

地圖初始化的目的是計算兩幀間的相對位姿,從而三角化一組初始地圖點。此方法應該和場景無關(無論平坦或者普通場景),而且不應該要求人爲干預選擇一個比較好的雙視角(比如某個視差較大的場景)。作者並行的計算兩種幾何模型:1. 場景是平面的單應矩陣;2. 場景是非平面的基礎矩陣。作者使用一個主動策略去選擇使用哪個模型,而且對於所選的模型採用具體的方法儘量恢復位姿。該方法只有確定雙視角場景是可靠的纔會進行初始話,對低視差情況和衆知的二維平面模糊都能實施檢測,從而避免初始化一個不好的地圖。地圖初始化的具體算法如下:

  1. 找出初始匹配:提取當前圖像幀FCF_C的ORB特徵(只在最優尺度下),而且在參考幀FrF_r查找xcxrx_c\leftrightarrow x_r匹配。若找到的匹配對不夠,則重置參考幀。

  2. 兩種模型的並行計算

  3. 模型選擇:如果場景是平坦的,接近平坦或者存在很低的視差,其可以通過單應矩陣構建。此時可以建立基礎矩陣,但是這樣的話問題不能得到很好的約束,而且去嘗試從基礎矩陣恢復相機運動信息可能會產生錯誤的結果。我們應該選擇單應矩陣,因爲從一個平坦的場景可以正確地完成初始化場景重建,否則(基於基礎矩陣方法?)在檢測到低視差場景時會拒絕初始化。另一方面,一個有足夠視差的非平坦場景能通過基礎矩陣計算,但是如果其中的部分特徵點位於一個平面或者有低視差(距離遠)時可以通過單應矩陣構建一些子匹配對。在這種情況下,應該選擇基礎矩陣。

    基於以下較爲魯棒的公式可進行計算並選擇是否採用單應矩陣:
    RH=SH/(SH+SF) R_H = S_H/(S_H + S_F)
    RHR_H>0.45時,說明當前場景較爲平坦而且視差較低,選擇單應矩陣。否則,其他情況選擇基礎矩陣。

  4. 基於運動信息的運動和結果恢復:一旦模型被選定,便恢復與之相關的運動假設。在單應矩陣解法的情況下,使用Faugeraqs and Lustman的8點運動假設法[23]。該方法使用==Cheriality tests?==進行有效點篩選。但是,當存在低視差時此測試可能失效,因爲這些點很容易處於相機的前面和後面,這會導致選到錯誤的點。作者直接三角化這8對點,並檢測是否大多數點都可以在視差、所有相機前方被看到且重投影誤差比較低。若沒有一個明確較優的結果,則不進行初始化並返回第1步。該方法會剔除一些測量結果,這可以使得初始化方法在低視差和模棱兩可的配置下更加魯棒,而且可以被認爲是系統魯棒性的關鍵所在。

    當使用基礎矩陣進行計算時,使用標定矩陣KK將基礎矩陣轉換爲重要矩陣(Essential Matrix):
    Erc=KTFrcK E_{rc} = K^TF_{rc}K
    然後使用奇異值分解恢復四點運動假設[2]。正如單應矩陣法時,三角化四個點對並選擇對應的場景構建方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章