ORB_SLAM2系統初始化和跟蹤之Tracking.cc

算法原理解析

Tracking線程中首先加載圖片幀數據集,接着從圖片幀中提取ORB特徵點,後邊就是初始化部分,初始化完成後就是跟蹤部分。本篇筆記對初始化部分和初始化完成後的部分進行如下簡單梳理。

一、初始化部分:

1.首次進入初始化
對於當前幀中關鍵點數>100的幀,用該幀來構造初始化幀和上一個幀;
並記錄當前幀中關鍵點的座標值,用於下一幀進來的時候進行特徵點匹配;
使用當前幀構造初始化器;

2.第二次進入初始化
如果當前傳入的幀的關鍵點數<=100的幀,刪除初始化器,直接返回;
對當前傳入的幀和初始化幀之間進行特徵點匹配,調用matcher.SearchForInitialization函數;
這裏如果匹配的特徵點個數<100,則釋放初始化器並直接返回;
使用初始化器進行初始化(調用Tracking.cc:MonocularInitialization–>mpInitializer->Initialize函數):
1)這裏是2d-2d根據對極幾何求解基礎矩陣和單應矩陣;

     2)進而從基礎矩陣或者單應矩陣中分解出旋轉矩陣和平移變量,並進行三角化計算出了特徵點的3D世界座標;

對於Initialize函數初始化完成後不能三角化的匹配特徵點都進行刪除;
爲當前幀設置位姿(也就是上邊Initialize中求出的旋轉矩陣和平移變量組成的變換矩陣);

初始化Map相關操作
在CreateInitialMapMonocu

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