ORBSLAM2源码结构解析

ORBSLAM源码结构解析

1.initilizer类

VO初始化目的是为了获得准确的帧间相对位姿,并通过三角化恢复出初始地图点。初始化方法要求适用于不同的场景(特别是平面场景),并且不要进行人为的干涉,例如选取视差大(large parallax)的场景(视差大代表相机移动会带来明显的图像变化,通常距离相机距离越远,距离相机光轴越近,视差越小)。ORB-SLAM中并行计算了适用于平面场景的单应性矩阵H和一般场景下的基础矩阵F,然后通过打分选取合适的。ORB-SLAM的初始化要求是比较高的,只有在确定初始化安全的情况下,才会去初始化。

2.构造函数ORBextractor()

该类中主要调用OpenCV中的函数,提取图像中特征点(关键点及其描述,描述子,以及图像金字塔)。

FAST特征点和ORB描述子本身不具有尺度信息,ORBextractor通过构建金字塔来得到特征点尺度信息,将输入图片逐级缩放得到图像金子塔,金字塔层级越高,图像分辨率越低,ORB特征点越大。

特征点响应值/描述子的区别:

响应值描述该特征点的区分度大小,响应值越大越应该被留用做特征点。

描述子是特征点的一个哈希运算,其大小无意义,仅用来在数据库中快速找回某特征点。

2.LocalMapping类

LocalMapping作用是将Tracking中送来的关键帧放在mlNewKeyFrame列表中;处理新关键帧,地图点检查剔除,生成新地图点,Local BA,关键帧剔除。主要工作在于维护局部地图,也就是SLAM中的Mapping。

或理解为LocalMapping的工作是通过不断的加入新KeyFrame和新地图点,剔除冗余KeyFrame和冗余地图点,来维护一个稳定的KeyFrame集合,从而可以进行后面的LoopClosing操作。所以这个线程只是维护地图,没有进行全局优化。

3.Map类

Map类管理整个地图,因此其具有的属性是所有的地图点和关建帧,即普通的帧是不管的,另外还有一些帧编号之类的东西,该类具有添加、删除关键帧的方法和添加、删除地图点的方法,另外就是一个返回属性的函数。

5.ORBmatcher类

该类负责特征点与特征点之间,地图点与特征点之间通过投影关系、词袋模型或者Sim3位姿匹配。用来辅助完成单目初始化,三角化恢复新的地图点,tracking,relocalization以及loop closing,因此比较重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值