VI Local Mapping 局部地圖建構
這部分,我們描述了使用每個新關鍵幀 K i K_i Ki 的局部地圖執行的步驟。
目的是确定更多的限制對關鍵幀的位姿和地圖點雲的位置進行優化。
A KeyFrame Insertion關鍵幀插入
首先我們更新共視圖,為關鍵幀集 K i K_i Ki 增加一個新的節點,并利用其他關鍵幀更新從共享地圖點雲産生的邊。我們更新生成樹,利用帶有最多公共點的關鍵幀連結關鍵幀集 K i K_i Ki 。然後計算關鍵幀的代表詞袋,這将有助于資料關聯,用于三角化新的點。
在共視圖和生成樹上添加節點和邊,計算關鍵幀的詞袋,用三角法生成新的地圖點雲;
B Recent Map Points Culling篩選三角化的地圖點雲
為了被保留在地圖中,地圖點雲在建立後前三個幀期間必須通過限制性測試,以確定它們是可跟蹤的,并且不會由于僞資料關聯而被錯誤地三角化。一個點必須滿足下面兩個條件:
1) 跟蹤必須在預測可見的25%以上的幀中找到特征點。
2) 如果從地圖點雲建立傳遞了多個關鍵幀,則必須至少從三個關鍵幀中觀察到該關鍵幀。
一旦地圖點雲通過限制性測試,如果其在任何時候從少于三個關鍵幀中被觀察到,其可能隻能被移除。當關鍵幀被剔除和局部束調整丢棄多餘觀察時,這種情況會發生。這個政策使得我們的地圖包含的異常值非常少。
C New Map Point Creation建立新的地圖點雲
新的地圖點雲是通過在共視圖中從相關關鍵幀 K c K_c Kc 中三角化ORB特征點來建立的。對于在 K i K_i Ki 中每個未比對的ORB,我們搜尋在其他幀中未比對的點的比對。這些比對在第 III-E 部分被解釋,并丢棄那些不滿足對極限制的比對項。ORB對被三角化,去接收新的點,審查在兩個相機之間的正深度、視差、重投影誤差和尺度一緻性。起初,一個地圖點雲從兩個關鍵幀中被觀察,但它可以在其他關鍵幀中比對,是以它被投影到其餘連接配接的關鍵幀中,并且搜尋比對點,如第 V-D 節中所較長的描述的。
ORB特征點對三角化後,對其在相機坐标系中的深度資訊、視差、重投影誤差和尺度一緻性進行審查,通過後則将其作為新點插入地圖。将不滿足對極限制的比對點删除;
D Local Bundle Adjustment局部束調整,局部BA優化
這個局部束調整優化目前被處理的關鍵幀 K i K_i Ki,在共視圖 K c K_c Kc 中與其相連的所有關鍵幀以及被這些關鍵幀觀察到的所有地圖點雲。觀察到這些點但是沒有連接配接到目前被處理的關鍵幀的其他關鍵幀也被包含在優化中,但是保持不變。被标記為異常值的觀察者在優化中間和末尾被丢棄。關于優化的細節見附錄。
對目前關鍵幀,以及在共視圖中與其相連的其他關鍵幀,以及這些關鍵幀觀測到的地圖點雲進行優化;
E Local Keyframe Culling局部的關鍵幀選擇
為了保持重構的緊湊性,局部地圖試圖檢測備援關鍵幀并删除它們。這是相當有用的,因為束調整的複雜度随着關鍵幀的數量增長而增加,而且由于關鍵幀數量不會無限增長在相同的環境中其可以一直存在,除非在場景中可視内容發生變化。我們丢棄了 K c K_c Kc中的所有關鍵幀,這些關鍵幀的90%的地圖點在至少其他三個相同或更精細尺度的關鍵幀中可見。尺度條件確定地圖點維護那些被用更精确方式測量的關鍵幀。這個政策受Tan的工作啟發,在改變檢測的處理方法後,關鍵幀被丢棄。
檢測備援關鍵幀并删除:如果關鍵幀中90%的點都可以被其他至少三個關鍵幀同時觀測到,則認為是備援的。