ORB-SLAM中并没有使用OpenCV的实现,因为OpenCV的版本提取的ORB特征过于集中,会出现扎堆的现象。这会降低SLAM的精度,对于闭环来说,也会降低一幅图像上的信息量。具体的对ORB-SLAM的影响可以参考我的另一篇文章 杨小东:[ORB-SLAM2] ORB特征提取策略对ORB-SLAM2性能的影响 ORB-SLAM中的实现提高了特征分布的均匀性。
4)src/Frame.cc帧文件Frame::Frame(constcv::Mat&imLeft...){// 提取ORB特征点ExtractORB(0,imGray);}voidFrame::ExtractORB(intflag,constcv::Mat&im){// 用仿函数,重载了ORBextractor::operator() 进入特征点提取(*mpORBextractorLeft)(im,cv::Mat(),mvKeysLeft,mDescriptorsLeft);}( 5)src/ORBextr...
ORB特征提取 ORB-SLAM2是一个基于特征的方法,它对输入的图像提取出角点的特征,如下图所示: 在提取出特征后,所有输入的图片都会删除,系统剩下的处理流程都是基于这些特征进行的,和相机类型无关。 单目的预处理流程实现过程在cv::Mat GrabImageMonocular(const cv::Mat &im, const double ×tamp)函数中体现为...
在ORBSLAM2中是通过ORBextractor这个类来实现每张图片ORB特征的提取的,具体的代码在ORBextractor.cc和ORBextractor.h中进行实现的。下边一步步看一下他的头文件和源文件的内容。 classORBextractor{public:enum{HARRIS_SCORE=0, FAST_SCORE=1};//nfeatures ORB特征点数量 scaleFactor相邻层的放大倍数 nlevels层数 iniT...
FAST特征点和ORB描述子本身不具有尺度信息,ORBextractor通过构建图像金字塔来得到特征点尺度信息.将输入图片逐级缩放得到图像金字塔,金字塔层级越高,图片分辨率越低,ORB特征点越大. 构造函数ORBextractor(int nfeatures, float scaleFactor, int nlevels, int iniThFAST, int minThFAST)的流程: ...
ORB-SLAM2的特征提取时间为10.24±2.64 ms,OpenCV的特征提取时间为9.11±2.82 ms。两者差别不大。 总结 ORB-SLAM2中的ORB特征提取方法相对于OpenCV中的方法,提高了ORB-SLAM2的轨迹精度和鲁棒性。增加特征提取的均匀性可以提高系统精度,但是似乎会降低特征提取的重复性。
ORB-SLAM2的特征提取时间为10.24±2.64 ms,OpenCV的特征提取时间为9.11±2.82 ms。两者差别不大。 总结 ORB-SLAM2中的ORB特征提取方法相对于OpenCV中的方法,提高了ORB-SLAM2的轨迹精度和鲁棒性。增加特征提取的均匀性可以提高系统精度,但是似乎会降低特征提取的重复性。
ORB-SLAM中的特征构建以其使用统一的ORB(Oriented FAST and Rotated BRIEF)为核心创新点,使得系统构建更为简洁稳定。本文旨在深入探讨ORB特征的提取流程及对ORB特征的优化改良,以提供直观解答。提取流程概览如下:第一步:构造金字塔。金字塔的构建是理解关键点分布的基础,它通过不同尺度的图像层次化表示...
一、通俗易懂理解图像金字塔特征点数目、灰度质心圆索引 1.参考资料: [1] ORBSLAM2 source code 2.主要函数: //特征点提取器的构造函数ORBextractor::ORBextractor(int_nfeatures,//指定要提取的特征点数目float_scaleFactor,//指定图像金字塔的缩放系数int_nlevels,//指定图像金字塔的层数int_iniThFAST,//指定初...
ORB-SLAM2的特征提取时间为10.24±2.64 ms,OpenCV的特征提取时间为9.11±2.82 ms。两者差别不大。 总结 ORB-SLAM2中的ORB特征提取方法相对于OpenCV中的方法,提高了ORB-SLAM2的轨迹精度和鲁棒性。增加特征提取的均匀性可以提高系统精度,但是似乎会降低特征提取的重复性。