ORB-SLAM2 ---- Frame内容梳理(Frame.cc)


建议学习顺序与本文行文顺序一致,从下图中可以看到,帧和关键帧会在多个线程调用,所也其重要性不言而喻

一、有关联的函数

下面提到的所有函数,都会在后续博客中详细讲到

1.拷贝构造函数

Frame(const Frame &frame);

2. 双目构造函数

Frame(const cv::Mat &imLeft, const cv::Mat &imRight, const double &timeStamp, ORBextractor* extractorLeft, ORBextractor* extractorRight, ORBVocabulary* voc, cv::Mat &K, cv::Mat &distCoef, const float &bf, const float &thDepth);

除去默认无参构造函数和拷贝构造函数,本文件中还重载了3个构造函数,分别用于双目、RGBD、单目,其中双目最复杂,学会双目其他两个基本上也就都学会了,所以这里建议直接从双目着手。下列中3、4、5、6、7都在此函数中调用到。

3. 特征提取函数Frame::ExtractORB

4. 调用去畸变函数UndistortKeyPoints();

这个函数调用了undistortPoints();函数,此函数是OpenCV的内置函数

5. 双目匹配计算深度的函数ComputeStereoMatches();

这个函数非常重要,代码量也很大,需要耐心的学习

6. 计算图像边界的函数ComputeImageBounds();

这个函数中也会引用undistortPoints();函数

7. 将特征点分配到网格中的函数AssignFeaturesToGrid();

这个函数中会用到PosInGrid();函数

二、其他函数

1. Frame::isInFrustum();

作用:判断地图点是否在视野中
调用位置:Tracking.cc中

2. Frame::GetFeaturesInArea();

作用:找到符合条件的特征点
调用位置:ORBmatchr.cc中

3. Frame::ComputeBoW();

作用:计算当前帧特征点对应的词代
调用位置:Tracking.cc中

4. Frame::UnprojectStereo();

作用:将符合条件的特征点反投影到三位世界坐标中
调用位置:Tracking.cc中

三、总结

本文中涵盖了Frame.cc中所有的函数, 这篇文章的目的是梳理此文件,让读者知道此文件的逻辑,并推荐一个合理的学习顺序,如有不合理或错误的地方欢迎指正交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值