两个类ExtractorNode和ORBextractor
私有变量
std::vector<cv::Point> pattern; ///<用于计算描述子的随机采样点集合
int nfeatures; ///<整个图像金字塔中,要提取的特征点数目
double scaleFactor; ///<图像金字塔层与层之间的缩放因子
int nlevels; ///<图像金字塔的层数
int iniThFAST; ///<初始的FAST响应值阈值
int minThFAST; ///<最小的FAST响应值阈值
std::vector<int> mnFeaturesPerLevel; ///<分配到每层图像中,要提取的特征点数目
std::vector<int> umax; ///<计算特征点方向的时候,有个圆形的图像区域,这个vector中存储了每行u轴的边界(四分之一,其他部分通过对称获得)
std::vector<float> mvScaleFactor; ///<每层图像的缩放因子
std::vector<float> mvInvScaleFactor; ///<以及每层缩放因子的倒数
std::vector<float> mvLevelSigma2; ///<存储每层的sigma^2,即上面每层图像相对于底层图像缩放倍数的平方
std::vector<float> mvInvLevelSigma2; ///<sigma平方的倒数
公共变量
///这个是用来存储图像金字塔的变量,一个元素存储一层图像
std::vector<cv::Mat> mvImagePyramid;
这个类的公有函数有:
- 构造函数 ORBextractor:根据输入的参数进行初始化
- 析构函数 ~ORBextractor:进行清理工作,如释放内存等
- operator():使用八叉树的方法提取ORB特征点,并计算特征描述子
这个类的私有函数有:
- ComputePyramid:针对给出的一张图像,计算其图像金字塔
- ComputeKeyPointsOctTree:以八叉树分配特征点的方式,计算图像金字塔中的特征点
- DistributeOctTree:对于某一图层,分配其特征点,通过八叉树的方式
- ComputeKeyPointsOld:使用另外一种老办法提取并平均特征点的方法(在实际程序中未使用)