三维重建:闭环检测-相机闭环
????????? 還是不要看了,高翔的科普讀物已經出版了,讀他的《slam十四講》就可以了。
????????? ORB_SLAM整個工程中冗長的數據關聯策略使分析起來非常困難,閉環檢測作為整個優化誤差策略的方法并未得到顯而易見的效果
????????? 三維重建過程中,濾波方法可以看做是一種追蹤方法。EM方法的長期使用造成在相對整個世界坐標系中累計誤差的指數級增長。若是檢測到可信的閉環,閉環之內的標記幀的位姿可以全部進行誤差矯正,重新調整在世界坐標系中的位置。
????????? BA方法對兩兩關鍵幀之間的位姿誤差和世界地圖誤差累計進行共同優化,而閉環檢測對檢測到閉環之后,對所有閉環關鍵幀以及世界地圖所有點進行位姿優化。
?
閉環檢測在整個重建過程中的地位...............閉環檢測是如何降低地圖總誤差的?
1.? 在濾波方法中添加的閉環檢測
??????? 類似于PTAM方法中,一般使用閉環檢測在另一個線程里面,BOW方法是使用恰當的。可以對所有得到的特征點即時構建詞包,在濾波優化的并行過程中,對每一幀進行閉環檢測。
??????? 在SLAM中,閉環檢測是一種強數據關聯,置信度應該比VO描述子匹配的置信度要高。
增量詞包方法:
?????? 根據閉環檢測的定義,與地圖構建類似,構建詞包理應是一個增量的過程。記錄VO過程中的特征點描述子,運行于平行于VO的另一個線程里。詞包的數量量級理論上等同于世界地圖標記點的量級。
?????? 對每一幀的描述子進行記錄,并在新的一幀描述子到來之后重構詞包,力圖覆蓋已觀測到的整個環境。
?????? 地圖是數據關聯完成的最終形式,詞包是完成閉環檢測數據關聯的一個工具。???
固定詞包方法:
???????? BOW的構建是一個非監督機器學習的過程,構建合適結構的詞包需要一定的訓練時間,詞包重構有可能重構整個詞匯樹,并不一定能實時完成。許多SLAM工程使用固定詞包方法,對一個特定的數據集(例如TMU室內場景數據集)構建一個碩大無比的詞包模型, 只進行場景的相似度計算,而不進行模型更新。
??????? 流傳已久的ORB_SLAM方法即使用了固定詞包的方法,在工程運行之前,會提前載入一個碩大無比的詞包模型到內存中。
?
2. SFM方法中的閉環檢測
????????? SFM方法為離線結構恢復的方法,丟失了幀間關系,因此不能預先完成VO過程,需要重建軌跡,即重新恢復離散數據為圖結構。步驟需要兩次優化:尋找最優序列結構;根據最優序列結構重建整個地圖。
????????? 從無序圖片提取圖像特征描述子,用樹模型去計算兩張圖片特征點之間的歐式距離進行特征點的匹配,從而找到特征點匹配個數達到要求的圖像對,此過程為關系重建。對于每一個圖像匹配對,計算對極幾何,估計F矩陣并通過ransac算法優化改善匹配對。這樣子如果有特征點可以在這樣的匹配對中鏈式地傳遞下去,一直被檢測到,那么就可以重新形成軌跡。
???????? 若已重建軌跡可以被假定是最優的,則SFM的后期處理與在線SLAM別無二致,使用BA算法和閉環檢測重建局部地圖和全局關聯。
??????
閉環檢測的CNN方法
???????? 閉環檢測是一種模式識別過程,可以使用CNN方法,并且當下有這樣的趨勢。CNN模型在普遍數據集如ImageNet上,特征點檢測和場景相似度計算已遠超過傳統的BOW算法,因此可以在使用固定BOW的場合,使用CNN模型取代BOW模型。
???????? 對SLAM的改造體現在對BOW模型的替換上,對已標記的關鍵幀,使用CNN模型取代BOW計算關鍵幀之間的相似度,使用ANN方法和NN方法,檢測是否產生閉環。完成閉環檢測,并應用于后續的BA過程。
????????? 名滿天下的殘差網絡和MaskRCNN網絡,對特征點和目標的分割檢測上已經遠超過傳統檢測方法和DPM方法,在新的閉環檢測過程中可以直接使用其網絡結構。
?
3.閉環檢測是如何降低總殘差的?
???????? 閉環有場景閉環和Agent/相機pose閉環兩種情況,但場景閉環和整體閉環不是充要條件,因此使用Pose閉環表示檢測閉環,表現為Agent/相機的位姿圖產生閉環。在機器人學中,釋義為機器人又走到了原來的位置,這比機器人又看到了相同的場景表示閉環可信,但此方法嚴重依賴于已構建世界地圖的可信度。
?????? 場景閉環優化殘差一般應用于對相機沒有太過關注點的純粹三維重建之中。在SLAM中,長時間后的大閉環檢測也是使用場景閉環檢測的方式(關鍵幀的相似度計算),同時需要更多的判定條件。
?????? 二維環,閉環檢測一般使用二維環,即假設Agent/機器人的六自由度運動限定在在同一個海拔或者一個水平或者傾斜的平面上。
先決條件:
?????? 1.已觀測的世界地圖的誤差已經降低到置信范圍;2.Agent又回到以往的pose附近,即將要形成閉環。
?????? 閉環的判斷條件:測地距離閾值(稀疏圖的大環和小環)、歐式多邊形的面積(大閉環和小閉環);
?????? 使用Agent位姿獲取閉環可信狀態,對場景匹配完成鏈接閉環,完成閉環檢測。
殘差優化:
?????? 檢測閉環之后,可清楚的得到一個拓撲閉環-稀疏拓撲圖,或者進而得到一個歐式多邊形閉環-歐式空間二維多邊形,可使用此環進行誤差優化。此閉環并非完全可信,優化的時候需要對地圖和位姿同時優化。
?????? ORB_SLAM中閉環檢測的優化方式:在場景閉環鏈接處,使用RANSAC和ICP等方法匹配鏈接閉環。矯正閉環上鏈接的所有關鍵幀。對每一個關鍵幀的點云都進行更新。若需要構建更準確的地圖,則再次更新整個Agent軌跡和每個pose處的觀測地圖。
?????? 借用一張圖:https://blog.csdn.net/u010128736/article/details/53409199
?
殘差優化方程:
????? 參考:SLAM中的位姿優化
2.4? 閉環處的Sim3位姿優化
?????? 當檢測到閉環時,閉環連接的兩個關鍵幀的位姿需要通過Sim3優化(以使得其尺度一致)。優化求解兩幀之間的相似變換矩陣,使得二維對應點(feature)的投影誤差最小。
?????? 如下圖所示,Pos6和Pos2為一個可能的閉環。通過和之間的投影誤差來優化。
???????
2.3 全局優化
在全局優化中,所有的關鍵幀(除了第一幀)和三維點都參與優化。
?更新整個位姿軌跡和全部關鍵幀以及所有的地圖位置之后,閉環檢測完成。
?
????????
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的三维重建:闭环检测-相机闭环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三维重建:SFM中BA的并行化
- 下一篇: SiftGPU:编译SiftGPU出现问