ORB (Oriented FAST and Rotated BRIEF)
ORB 算法的关键步骤
1) FAST 角点检测
ORB 算法首先使用 FAST 角点检测算法来检测图像中的角点。FAST 是一种基于圆形像素邻域的角点检测算法,通过比较邻域像素值与中心像素的差异来判断角点。 FAST 算法快速且简单,适合用于实时应用中。

2) 主方向计算
灰度质心法假设角点的灰度与质心之间存在一个偏移,这个向量可以用于表示一个方向。 为了实现旋转不变性,ORB 为每个检测到的角点计算主方向。计算方法是通过在关键点周围的邻域区域内计算梯度方向的统计信息。 具体而言,ORB 使用该区域内像素的灰度梯度来计算该点的主方向。
\[ \theta = \tan^{-1} \left( \frac{\sum I_x}{\sum I_y} \right) \]
其中,\(I_x\) 和 \(I_y\) 是图像梯度的水平和垂直分量,\(\theta\) 为计算得到的主方向角度。 通过对每个关键点计算主方向,ORB 保证了在旋转变换下的旋转不变性。
3) BRIEF 描述符
对于每个角点,ORB 使用 BRIEF 描述符来提取局部特征。BRIEF 描述符是一种基于二进制字符串的特征描述子,通过在邻域内选择若干对像素并计算其亮度差异来生成。 ORB 对 BRIEF 描述符进行了旋转不变性的优化,使得它能在旋转变换后保持一致。
BRIEF 描述符的构建通过随机选择一组像素对进行比较,并生成一个二进制字符串表示。
4) 旋转不变性和匹配
在 ORB 中,为了确保 BRIEF 描述符具有旋转不变性,ORB 会根据计算得到的主方向对图像进行旋转对齐。 这样,生成的 BRIEF 描述符能够在不同旋转角度下保持一致,从而实现了旋转不变性。
一旦生成了描述符,ORB 使用 Hamming 距离进行描述符匹配。由于描述符是二进制的,可以通过计算两者之间的 Hamming 距离来判断它们的相似性,快速高效。
