orb的特征点检测和描述子的形成过程
orb有ofast角点和rbiref描述子
- ofast角点
ofast角点是在fast角点的基础上加入了其方向的特征,通过灰度质心法确定特征点的方向性,实现特征点的旋转不变性。fast角点的识别是基于像素的半径为3的圆周围的16个像素点进行中间像素点,阈值和其他像素点的对比,进行判别和识别,并将图像加以不同尺度形成金字塔进行不同尺度的特征点的提取,实现了尺度不变性。 - rbrief
brief描述子是在特征点领域内按照一定的限制进行随机点对的提取,一般是提取256对点对进行灰度值对比,然后形成最后的描述子。
但是为了使描述子也具有旋转不变性,改良成steeredbrief,即点对提取后在进行特征点方向的旋转后 进行灰度值的对比。
为了提高多维之间的不相关性,设计贪心算法的rbrief描述子的形成,可以更好的区分描述子。
orb特征提取和描述子形成的代码逻辑过程
- 开始创建金字塔以及其相关的属性,进而在每层金字塔内进行角点的提取,将特征点分配给每层,保存点的领域的圆的位置信息。
- 基于fast先提取2倍的特征点。fast角点提取的算法,FAST-N,后面的N值是根据若中间的像素点p是候选点,则计算圆周围16个像素点p1到p16这16个点与中心p的像素差,若它们有至少连续N个超过阈值,则是角点;否则,不可能是角点。一般情况下使用的都是FAST-9即连续9个超过阈值。同时进行图像的非极大值的抑制,计算fast的得分值,以一个特征点领域范围内一个窗口,如果窗口内有多个特征点,那么计算范围内每个特征点的16个点和中心的的差值的绝对值总和,如果p是邻域值最大的保留,如果不是则抑制。
- fast提取角点后,再进行Harris角点的响应值的排序,一般fast角点多提取一倍的角点,通过Harris响应值排序筛选出前一半的作为最后的特征点。Harris角点算法是根据图像在各个方向上有灰度变化这个原理进行角点的检测,通过计算一个小的移动窗口的灰度值差值。定义了角点响应函数,得到响应值后,对fast检测的角度进行响应值的排序。再通过Harris响应排序筛选掉一半的特征点,保存信息
- 然后计算角点的方向,基于灰度质心法和之前保存的相对位置信息进行对称计算,最后得到角度方向。
- 然后计算描述子。