ORBSLAM2--TrackReferenceKeyFrame()

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16481211/article/details/83575371

在视觉SLMA中需要根据上一帧的位姿作为初始位姿进行位姿优化得到当前帧的位姿。

step1

首先需要计算当前帧的词包,将当前帧的特征点分到特定层的nodes上

step2

根据BoW进行将参考帧和当前帧进行特征匹配
int nmatches = matcher.SearchByBoW(mpReferenceKF,mCurrentFrame,vpMapPointMatches);

step3

匹配点数量小于15无法进行优化,证明不是一个有效的匹配
此时直接退出。

step4

设置初始位姿为上一帧的位姿,优化节点为vpMapPointMatches中的匹配点
将匹配点存储到vpMapPointMatches中,返回的是匹配点的数量
进行位姿优化,从而获得准确的相机位姿
mCurrentFrame.mvpMapPoints = vpMapPointMatches;
mCurrentFrame.SetPose(mLastFrame.mTcw);
//进行位姿优化,从而获得准确的相机位姿
Optimizer::PoseOptimization(&mCurrentFrame);

step5

根据位姿估计下的模型判断是否为内点来剔除误匹配,剔除优化后的局外匹配点.

step6

如果匹配点数量足够,则证明此次位姿估计是好的.(通常认为匹配点数大于10)

猜你喜欢

转载自blog.csdn.net/qq_16481211/article/details/83575371