ORB-SLAM3 Initializer完全解讀
來源:公眾號3D視覺工坊|系投稿
作者:Liam
「3D視覺工坊」技術交流群已經成立,目前大約有12000人,方向主要涉及3D視覺、CV&深度學習、SLAM、三維重建、點云后處理、自動駕駛、CV入門、三維測量、VR/AR、3D人臉識別、醫(yī)療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產品落地、視覺競賽、車牌識別、硬件選型、學術交流、求職交流、ORB-SLAM系列源碼交流、深度估計等。工坊致力于干貨輸出,不做搬運工,為計算機視覺領域貢獻自己的力量!歡迎大家一起交流成長~
添加小助手微信:CV_LAB,備注學校/公司+姓名+研究方向即可加入工坊一起學習進步。

構造函數
Initializer::Initializer(const Frame &ReferenceFrame, float sigma, int iterations)
參數:?參考幀(第一幀), 誤差, 迭代次數
操作:讀取參考幀的相機模型, 內參, 去畸變的特征點等傳入參數
初始化:并行的計算前后兩幀的本質矩陣和基礎矩陣,選出來評分高的恢復旋轉和平移

(==當前幀指向參考幀==), 三角化后的點, 特征是否被三角化過
返回值:bool->初始化是否成功的標志
操作:
vMatches12中的匹配關系以<==第一幀特征索引,第二幀特征索引==>存儲在mvMatches12中, 同時mvbMatched1[i]設置為true表示第一幀中該索引的特征點匹配成功
從匹配中不重復的隨機選擇mMaxIterations組點,每組8個
開兩個線程同時計算單應和基本矩陣
計算得分
選擇得分高的矩陣來恢復兩幀位姿
尋找最優(yōu)單應矩陣
void Initializer::FindHomography(vector&vbMatchesInliers, float &score, cv::Mat &H21)
參數: 匹配的Inliers, 最后的得分, 單應矩陣
操作:
歸一化
利用選擇的mMaxIterations組匹配點用八點法計算單應矩陣(ComputeH21(vPn1i,vPn2i))
恢復初始尺度(歸一化前的)
保留最高得分的單應矩陣及對應的匹配內點
需要最優(yōu)基礎矩陣
void Initializer::FindFundamental(vector&vbMatchesInliers, float &score, cv::Mat &F21)
參數: 匹配的Inliers, 最后的得分, 基礎矩陣
操作:
歸一化
利用選擇的mMaxIterations組匹配點用八點法計算基礎矩陣(ComputeF21(vPn1i,vPn2i))
恢復初始尺度(歸一化前的)
保留最高得分的基礎矩陣及對應的匹配內點


















本文僅做學術分享,如有侵權,請聯系刪文。