【视觉惯性SLAM:七、ORB-SLAM2:ORB特征提取】
ORB-SLAM2中的ORB特征提取模块是整个系统的核心之一,它基于ORB(Oriented FAST and Rotated BRIEF)特征进行关键点的检测和描述符的计算。以下从 ORB特征点 和 ORB特征点均匀化策略 两方面详细介绍 ORB-SLAM2 的 ORB 特征提取。
ORB特征点
关键点:Oriented FAST
ORB的关键点检测采用 FAST(Features from Accelerated Segment Test) 算法,该算法是一种高效的角点检测方法。
FAST算法的基本原理
- 角点检测:
- 对于某个像素点,取一个以它为中心的圆(通常半径为3像素),圆上有16个像素。
- 如果圆上某一部分连续像素的亮度值都显著高于或低于中心点像素,则认为这个点是一个角点。
- 快速性:通过提前检测圆上对角的4个点(1, 9, 5, 13)来快速排除非角点。
ORB中的改进
- 原始的FAST算法不具备方向性,ORB通过计算关键点的主方向来赋予其方向信息,从而适应旋转变换。
- 方向计算方法
- 对于一个关键点,以其为中心,在一定邻域内计算灰度质心(通过图像的灰度分布加权求和得到)。
- 主方向 𝜃 通过灰度质心和关键点的连接线计算:
θ = a t a n 2 ( ∑ y I ( x , y ) ∑ I ( x , y ) , ∑ x I ( x , y ) ∑ I ( x , y ) ) \theta=\mathrm{atan}2\left(\frac{\sum yI(x,y)}{\sum I(x,y)},\frac{\sum xI(x,y)}{\sum I(x,y)}\right) θ=atan2(∑I(x,y)∑yI(x,y),∑I(x,y)∑xI(x,y))
其中, I ( x , y ) I(x,y) I(x,y) 为像素点的灰度值。
描述子:Steered BRIEF
ORB的描述子基于 BRIEF(Binary Robust Independent Elementary Features),这是一个高效的二值描述子。
BRIEF描述子的基本原理
- 描述子是通过在关键点邻域内随机选择像素对进行比较得到的二值串。
- 例如,比较像素点𝑝和𝑞的灰度值: D ( i ) = { 1 , i f I ( p ) < I ( q ) 0 , o t h e r w i s e D(i)=\begin{cases}1,&\mathrm{if}I(p)<I(q)\\0,&\mathrm{otherwise}&\end{cases} D(i)={1,0,ifI(p)<I(q)otherwise
- 多个二值串组合形成描述子。
ORB中的改进
- BRIEF描述子不具备旋转不变性,ORB通过旋转 BRIEF 模板使其与关键点方向一致:
- 根据关键点方向𝜃,旋转 BRIEF 的采样点集,使描述子对旋转变换具有鲁棒性。
- 最终生成的描述子是长度为256的二值串。
ORB特征的优点
- 高效性:FAST和BRIEF计算都非常快速,适合实时性要求高的系统。
- 旋转不变性:通过关键点方向和旋转描述子模板实现。
- 尺度不变性:结合图像金字塔,ORB特征点可以适应图像缩放。
ORB特征点均匀化策略
在SLAM系统中,特征点的分布均匀性直接影响系统的稳定性和精度。如果特征点集中在图像某些区域(例如高纹理区域),可能导致特征匹配不稳定。因此,ORB-SLAM2中采用特征点均匀化策略。
为什么需要特征点均匀化
- 避免区域特征点过多:图像中某些高纹理区域可能生成大量的特征点,而其他区域则较少。
- 提高匹配鲁棒性:均匀分布的特征点能提高特征点匹配的质量,减少跟踪丢失。
- 增强全局信息表达:均匀的特征点分布能更好地描述场景的整体信息,利于位姿估计和地图构建。
如何给图像金字塔分配特征点数量
ORB-SLAM2对图像构建多尺度金字塔,每层负责提取不同尺度的特征点。特征点的分配采用以下策略:
- 金字塔层数:设定总的金字塔层数(例如8层),从最底层到最顶层图像逐渐缩小。
- 特征点数量分配:将总的特征点数量按照每层图像面积的比例分配。例如,底层图像特征点多,顶层图像特征点少:
N l = N ⋅ 图像面积 l 图像总面积 N_l=N\cdot\frac{\text{图像面积}_l}{\text{图像总面积}} Nl=N⋅图像总面积图像面积l
其中, N l N_{l} Nl为第𝑙层的特征点数量,𝑁为总特征点数量。
使用四叉树实现特征点均匀化分布
ORB-SLAM2中采用四叉树方法对特征点进行均匀化分布。
- 四叉树基本原理
- 将图像区域递归划分成四个子区域(四叉树),直到每个区域内的特征点数目满足一定条件。
- 每次划分时,选择响应值较高的特征点保留,剔除其他点。
- 具体步骤
- 提取候选特征点:
- 在图像金字塔的每一层提取初始的 FAST 特征点。
- 特征点筛选:
- 根据 FAST 响应值筛选出具有更高响应值的特征点。
- 构建四叉树:
- 将图像递归划分为多个小网格,确保每个网格内特征点数量均衡。
- 均匀化分布:
- 每个网格内保留响应值最高的若干个特征点,剔除其余点。
- 最终输出:
- 将均匀化后的特征点组合起来,作为当前图像的特征点。
- 提取候选特征点:
总结
ORB特征提取在ORB-SLAM2中具有以下特点:
- 关键点提取:
- 基于 Oriented FAST 算法,高效、具备方向性。
- 关键点方向由灰度质心法计算。
- 描述子计算:
- 基于 Steered BRIEF 描述子,支持旋转不变性。
- 描述子是长度为256的二值特征,计算快速。
- 特征点均匀化:
- 在金字塔层中按面积比例分配特征点数量。
- 使用四叉树方法实现特征点均匀化分布,提升匹配鲁棒性和全局表达能力。
ORB-SLAM2通过高效的ORB特征提取与均匀化策略,能够在实时性和鲁棒性之间取得良好平衡,为后续的跟踪、建图和优化奠定了基础。