参考:http://blog.csdn.net/u010128736 边看边整理,加深印象。
一、代码结构
http://blog.csdn.net/u010128736/article/details/53157605
http://blog.csdn.net/u010128736/article/details/53169832
四个线程:
3个在ORB_SLAM2::System SLAM(argv[1],argv[2],ORB_SLAM2::System::MONOCULAR,true);
中,创建SLAM项目中,
(1)初始化Local Mapping对象,并开启线程运行
(2)初始化Loop Closing对象,并开启线程运行
(3)初始化窗口,开启线程显示图像和地图点
Tracking线程在主程序中;SLAM.TrackMonocular(im,tframe); 每读取一张图片执行一次。
二、特征点提取
ORB特征点检测:
cv::Mat System::TrackMonocular(const cv::Mat &im, const double ×tamp)
--Check mode change:mbActivateLocalizationMode/mbDeactivateLocalizationMode在线或离线定位模式
--Check reset
--cv::Mat Tcw = mpTracker->GrabImageMonocular(im,timestamp);
--检测特征点(判断没有初始化或没有关键帧,提取ORB特征点),里面有一个网格化
--Track();
--void Tracking::MonocularInitialization() //如果没有初始化
--大于100个特征点,设为参考帧;下一帧,小于100,重置参考帧,大于100个特征点,开始初始化
参考:http://blog.csdn.net/u010128736/article/details/53218140
sfm运动恢复,代码如下:
![](https://img-blog.csdn.net/20180108202350427?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYm9va19vZl9KaWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)