简介
主要是介绍一下ORBextractor类的函数简要流程以及调用关系。
构造函数
ORBextractor::ORBextractor
主要作用是初始化一下ORBextractor类的成员函数
列表初始化部分:
nfeatures(_nfeatures), scaleFactor(_scaleFactor), nlevels(_nlevels),
iniThFAST(_iniThFAST), minThFAST(_minThFAST)
函数体内部初始化:
mvScaleFactor
mvLevelSigma2
mvInvScaleFactor
mvInvLevelSigma2
mvImagePyramid 仅调节了层数
mnFeaturesPerLevel 分配了各层金字塔的特征点数
pattern BRIEF描述子的随机采样点点集头指针
umax 用于特征点的旋转计算
仿函数(重载括号运算符)ORBextractor::operator()
ORBextractor类的核心函数,在该函数中:
调用ComputePyramid(image)构建了图像金字塔
调用ComputeKeyPointsOctTree(allKeypoints) 使用四叉树的方式计算每层图像的特征点并进行分配
对每层金字塔图像进行高斯模糊后提取调用computeDescriptors特征点描述子,并将非第0层图像中的特征点的坐标恢复到第0层图像(原图像)的坐标系下。
ORBextractor::ComputeKeyPointsOctTree
ORBextractor类中特征点实际计算函数,该函数被ORBextractor::operator()调用,在该函数中:
对金字塔各层图像划分网格,通过调用FAST函数提取网格中fast特征点。
调用DistributeOctTree对金字塔各层图像特征点进行四叉树划分
调用computeOrientation计算金字塔各层图像特征点的方向。
主要函数调用图
ORBextractor类中主要函数调用图: