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)
去除小范围内重复提取的点
非最大值抑制(opencv)
- 计算fast特征点与周围$N_1$各像素点的得分
- 对比$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$中,定义图像的矩
\[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 进行授权