ORB-SLAM2重要函数总结(1)
ORBFeature
IC_Angle
通过遍历特征点周围的像素,利用灰度质心法来计算特征点的角度朝向。具体地,它根据像素值和像素坐标的加权和来计算方向角度,使特征点具有旋转不变性。computeOrientation
函数通过遍历一组特征点的方向角度,并为每个特征点调用IC_Angle
函数来计算其方向角度,以实现特征点的旋转不变性,从而提高特征匹配的鲁棒性和性能。keypoints
中的每个特征点的angle
属性被更新。computeOrbDescriptor
用于计算ORB特征点的描述子。它采用了Steer BRIEF算法,遍历描述子的32个字节,每个字节根据预定义的采样模板进行大小比较,将0或1的结果保存到描述子中。最终得到一个256位的ORB描述子。ORBextractor::DistributeOctTree
函数使用四叉树法对图像金字塔图层中的特征点进行平均分配,将输入的特征点均匀分布到图像的不同区域,并保留每个区域中响应值最大的一个特征点,以实现特征点的均匀分布和响应值最大化,适用于特征点提取的优化和均匀分布需求。ExtractorNode::DivideNode
函数用于将ORB 特征提取器节点分成四个子节点,将当前节点分成四个子节点,并将图像上的特征点分配给这些子节点。函数完成图像区域的划分、特征点归属的划分,从而实现更好的特征点分布和性能。ORBextractor::ORBextractor
ORB特征点提取器的构造函数,初始化ORB特征点提取器,设置各种参数和数据结构包括参数、金字塔构建、特征点数量分配、随机采样点的准备等,为后续在图像上执行ORB特征点提取做好了准备工作。ORBextractor::ComputeKeyPointsOctTree
用于在图像金字塔的不同层级上提取特征点,并确保这些特征点在图像中均匀分布。此外,它还计算了每个特征点的方向信息,以便在后续的特征匹配中使用。函数的核心思想是使用图像金字塔和四叉树结构来有效地提取和管理特征点。调用OpenCV在图像块中检测FAST角点,DistributeOctTree
函数和computeOrientation
函数。
ORBmatcher
- ``ORBmatcher::DescriptorDistance`函数用于计算两个ORB特征描述子之间的汉明距离,数值越小表示两个描述子越相似,用于度量两个特征点相似度。通过在两个特征点的ORB描述子之间计算异或然后统计不同位而实现,用来确定最佳匹配。
ORBmatcher::ComputeThreeMaxima
从一组直方图中识别出最大的三个峰值,这用于在分析和筛选匹配特征点时保证旋转一致性。ORBmatcher::SearchForInitialization
单目初始化,用于在两个初始帧之间找到特征点匹配,主要是参考帧和当前帧的特征点匹配,包括特征点逐一匹配、正反一致性检查、旋转一致性检查、剔除误匹配等步骤。初始化以便估计初始相机位姿和构建初始地图。ORBmatcher::SearchByProjecti