文章

orb特征点

本文介绍orb_slam 特征提取和特征匹配的基本算法。包含:fast角点的提取,BRIEF描述子,灰度质心定义,汉明距离距离匹配和角度选择

fast 角点

fast 角点提取

  • 对于像素p,假设灰度为$I_p$
  • 设置一个阈值T
  • 设置p为中心,选取周围的$N_1$个像素点
  • 假如选取的圆上有连续N$_2$个点的亮度同时大于$I_p+T$或同时小于$I_p-T$,那么像素就认为是关键点 (如果$N_1=16$,$N_2=12$,即FAST-12,$N_1=16$,$N_2=9$,即FAST-9)

fast

去除小范围内重复提取的点

非最大值抑制(opencv)

  • 计算fast特征点与周围$N_1$各像素点的得分
\[s=\max_{i=1\dots N_2}(I(i)-I_p)\]
  • 对比$3\times 3$像素方格
  • 保留$s$最高的点。

最小值抑制(svo::fase)

  • 计算fast特征点与周围满足阈值的连续的$N_3$各像素点的得分

    \[s=\min_{i=1\dots N_2}(I(i)-I_p)\]
  • 对比$3\times 3$像素方格。
  • 保留得分最高的点

BRIEF描述子

  • 对于像素$P_0$取附件128组随机的像素点对${(p_i,q_i)}$
  • 两个随机的像素点$p_i$和$q_i$,
\[B(q_i,p_i)=\begin{cases} 1 \,\,\,\, if q_i>p_i \\ 0 \,\,\,\, if q_i\leq p_i \end{cases}\]

灰度质心

在一个小的图像块$B$中,定义图像的矩

\[m_{ij}=\sum_{x_i,y_i\in B(x,y)}x^iy^jI(x_i,y_i)\]

通过矩可以找到图像块的质心

\[C=\left(\ \begin{matrix} \frac{m_{10}}{m_{00}} , \frac{m_{01}}{m_{00}} \end{matrix} \right)\]

连接图像块的几何中心$O$(假设为坐标原点),与质心$C$,得到一个方向向量$\vec{OC}$,于是特征点的方向可以定义为:

\[\theta=\arctan(m_{01}/m_{10})\]

特征匹配

汉明距离

在信息论中,两个等长字符串之间的汉明距离(英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。下面用$H(x,y)$表示汉明距离

最近邻匹配

考虑两个时刻的图像$I_0$和$I_1$,假设在图像中提取的特征点为 $x_1^m , m=1,2,\dots, M$,在图像$I_1$提取到的特征点为 $x_2^n , n=1,2,\dots, N$,对于每一点$x_1^m$,在$I_1$上的匹配点$\hat{x}_1^m$定义为

\[\hat{x}_1^m=\arg\min_{x_2^n}H(x_1^m,x_2^n)\]

角度验证

使用直方图统计所有匹配点之间的角度差,去除那些角度差不在前三高频区间的匹配点。

本文由作者按照 CC BY 4.0 进行授权