ORB-SLAM2之ORB特征提取
特征点
ORB 特征提取
1.1 ORB中的关键点与描述子
ORB 特征亦由关键点和描述子两部分组成。它的关键点称为“Oriented FAST”,是一种改进的 FAST 角点,什么是 FAST 角点我们将在下文介绍。它的描述子称为 BRIEF (Binary Robust Independent Elementary Features)。因此,提取 ORB 特征分为两个步骤:
- FAST 角点提取:找出图像中的” 角点”。相较于原版的 FAST, ORB 中计算了特征
点的主方向,为后续的 BRIEF 描述子增加了旋转不变特性。 - BRIEF 描述子:对前一步提取出特征点的周围图像区域进行描述。
下面我们分别介绍 FAST 和 BRIEF。
FAST关键点
FAST的思想是,如果一个像素与它邻域的像素差别较大(过亮或过暗), 那它更可能是角点。
检测流程如下:
- 在图像中选取像素ppp,假设它的亮度为 IpI_pIp。
- 设置一个阈值TTT, 比如IpI_pIp的20%。
- 以像素ppp为中心, 选取半径为3的圆上的16个像素点。
- 假如选取的圆上,有连续的 N 个点的亮度大于 Ip+TI_p + TIp+T 或小于 Ip−TI_p − TIp−T,那么像素 ppp
可以被认为是特征点. - 循环以上四步,对每一个像素执行相同的操作。
FAST角点只考虑像素点周围的灰度信息, 存在以下缺点。
- 提取到的角点数量过多。
- FAST不具备方向信息, 且存在尺度问题。(即远处可能是角点,在近处可能就不是角点)
为了解决以上两个问题,进行以下改进
- 指定最终要提取的角点数量N,对原始 FAST 角点分别计算 Harris 响应值,然后选取前 N 个具有最大响应值的角点,作为最终的角点集合。
- 针对 FAST 角点不具有方向性和尺度的弱点,ORB 添加了尺度和旋转的描述。尺度不变性由构建图像金字塔,并在金字塔的每一层上检测角点来实现。而特征的旋转是由灰度质心法(Intensity Centroid)实现的。
Harris响应
Harris是一种根据像素点的一阶导数构建结构矩阵判断该点性质的方法。
首先, 构建结构张量
M(x,y)=[Ix2IxIyIxIyIy2]
M(x,y) =
\begin{bmatrix}
I_x^2 & I_x I_y \\
I_x I_y & I_y^2
\end{bmatrix}
M(x,y)=[Ix2IxIyIxIyIy2]
其中,Ix,IyI_x,I_yIx,Iy分别是图像在x,yx,yx,y方向的一阶导数。Harris响应函数为(K为经验常数,一般取0.04~0.06)
R=det(M)−k⋅(trace(M))2
R = \det(M) - k \cdot (\text{trace}(M))^2
R=det(M)−k⋅(trace(M))2
展开形式为, 其中R为响应值。
R=(Ix2Iy2−(IxIy)2)−k(Ix2+Iy2)2
R = (I_x^2 I_y^2 - (I_x I_y)^2) - k (I_x^2 + I_y^2)^2
R=(Ix2Iy2−(IxIy)2)−k(Ix2+Iy2)2
响应值R的含义。(可以结合矩阵的特征值来理解)
R 很大且为正->角点
R为负->边缘
R近似为0->平坦区域
灰度质心法
质心是指以图像块灰度值作为权重的中心(即 质心偏向灰度变化大的方向)。其具体操作步骤如下 :
- 在一个小的图像块B 中(例如,x y点半径为R的区域),定义图像块的矩为:
mpq=∑x,yxpyq I(x,y) m_{pq} = \sum_{x,y} x^p y^q \, I(x,y) mpq=x,y∑xpyqI(x,y)
其中I(x,y)I(x,y)I(x,y)为x,yx,yx,y 处的像素灰度值。p,q=0,1p,q = {0,1}p,q=0,1. - 通过矩可以找到图像块的质心:
C=(m10m00, m01m00) C = \left( \frac{m_{10}}{m_{00}}, \; \frac{m_{01}}{m_{00}} \right) C=(m00m10,m00m01) - 连接图像块的几何中心 O 与质心 C,得到一个方向向量。于是特征点的方向可以定义为:
θ=arctan(m01m10) \theta = \arctan \left( \frac{m_{01}}{m_{10}} \right) θ=arctan(m10m01)
下图P为几何中心,Q为灰度质心
在ORB-SLAM中是先进行旋转,再计算描述子。 即根据每个角点的主方向,对描述子模板进行旋转, 使用旋转后的描述子模板进行描述子计算。 (可理解为 描述子都是在主方向坐标系下计算的 方便后续计算)
图像金子塔
参考如下文章:
https://www.cnblogs.com/wj-1314/p/11981974.html
BRIEF 描述子
.BRIEF算法的核心思想是在关键点P的周围以一定模式选取N个点对,把这N个点对的比较结果组合起来作为描述子。为了保持踩点固定,工程上采用特殊设计的固定的pattern来做。通过计算两个描述子的余弦来计算两者的相似性。