BRISK特征提取算法(翻译)

原文链接:BRISK: Binary Robust Invariant Scalable Keypoints

1.不同尺度的关键点检测

为了获得在不同尺度的稳定关键点,brisk算法采用FAST算法在不同尺度空间中求解关键点。在brisk算法中,不同尺度的金字塔层由 n个 octaves层 ci 和 n个 intra-octaves 层 di组成,i = {0, 1, ... , n-1}。本文中n = 4.每个 octaves 层由连续地对原图二倍下采样获得。每个 intra-octaves 层 di 处在 ci 层和 ci+1层之间。第一个 intra-octaves层 d0 是通过对原图c0 1.5倍下采样获得,其他 intra-octaves 层由连续地对d0二倍下采样获得。因此,用t表示尺度,则t(ci) = 2 ** i, t(di) = 1.5 * 2 ** 1.5。

首先,使用9-16FAST算法分别检测每个 octave 层和 intra-octave 层,使用相同的阈值T获得候选关键点区域。然后,对这些候选区域进行非极大值抑制。非极大值抑制是通过比较8个邻域内关键点与其环绕点的强度差值和,差值和最大的为角点。

fast score在计算是会在不同层间二次差值得到

2.采样模式

确定特征点后会在特征点周围S×S区域内进行采样,虑 N*N(N-1)/2对采样点。在这些位置,平滑后的强度值为,红色半径的大小对应高斯平滑核的方差σ大小。

 考虑所有的采样点对:

 定义短距离点对的子集,以及L个长距离点对的子集:

距离的阈值设置为,t是特征点所在尺度。

3.确定主方向

通过采样获得的长距离点对集合,带入下式获得主方向

4.获得描述子(特征)

计算描述子时,采样区域需要先根据特征点的主方向做个旋转,旋转角度为

 BRISK描述子是二值特征,描述子的每一bit的值等于短距离点对的比值,即

在计算描述子的时候只考虑短距离的点对,原文中选取512个短距离点对,因此描述子bit-string的位数为512。

5.匹配原则

对描述子匹配时,采用汉明距离,进行二值匹配。

6.汉明距离

它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。

1011101 与 1001001 之间的汉明距离是 2。

2143896 与 2233796 之间的汉明距离是 3。

"toned" 与 "roses" 之间的汉明距离是 3。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章