變數含義:
mcurrentframe.
computebow()
;
detectrelocalizationcandidates
(&mcurrentframe)
;
step3.1對每乙個候選幀進行詞袋匹配
int nmatches = matcher.
searchbybow
);
pnpsolver* psolver =
newpnpsolver);
psolver-
>
setransacparameters
(0.99,10
,300,4
,0.5
,5.991
);
step4.1通過5次epnp+ransac迭代計算當前幀位姿
cv::mat tcw = psolver-
>
iterate(5
,bnomore,vbinliers,ninliers)
;
step4.3ba優化,僅優化相機位姿,返回認為正確匹配點的數量,如果正確匹配數量小於10,則放棄此候選幀。
int ngood = optimizer::
poseoptimization
(&mcurrentframe)
;
step4.4如果上一步得到的內點數量在10到50之間,則通過投影的方式對之前未進行匹配的點再次進行匹配。如果最後得到的內點大於50,則認為與當前候選關鍵幀計算得到的pose為正確的pose,重定位成功,結束迴圈。
step4.4.1 對之前沒有進行匹配上的點在一定的閾值之內投影匹配
ORB SLAM2 定位模式
void load const string filename,systemsetting mysystemsetting,keyframedatabase mpkeyframedatabase 別忘了新增標頭檔案和命名空間中的類宣告。同樣,需要在map.cc檔案中修改load 函式。laod 函式...
重定位 介紹 一
重定位 為什麼需要重定位?重定位是什麼?怎麼實現重定位?環境 1 s3c2440裸板 2 linux version 4.15.0 首先1 為什麼需要重定位?s3c2440啟動有兩種方式 a nand 啟動 b nor啟動 nornand 可以像記憶體一樣讀,不能像記憶體一樣寫,因此當 存在全域性變...
共享可寫節包含重定位 理解重定位
一 段的概念 段是程式的組成元素。將整個程式分成乙個乙個段,並且給每個段起乙個名字,然後在鏈結時就可以用這個名字來指示這些段,使得這些段排布在合適的位置。乙個程式通常包含以下五個段 段 text 存放 指令 唯讀資料段 rodata 存放有初始值並且const修飾的全域性類變數 全域性變數或stat...