原文鏈接: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。