天天看點

ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子

  • 介紹
  • FAST關鍵點
  • rBRIEF描述子

轉載請注明出處:http://blog.csdn.net/c602273091/article/details/56008370

介紹

目前SIFT特征準确度高,但是計算複雜度也高。很多時候需要用到比對、追蹤什麼的,使用SIFT就比較慢。本文作者提出了ORB(Oriented FAST and Rotation BRIEF)特征。ORB有個特點是這個特征沒有申請專利,另外這種特征的好處是:

  1. 給FAST檢測子方向和快速計算;
  2. 高效計算帶有方向的BRIEF特征

關鍵點(keypoint 就是圖檔中比較重要的位置,比如角點)使用FAST檢測子尋找。

描述子(descriptor 就是對關鍵點進行描述)這裡使用的是BRIEF描述子。但是BRIEF沒有方向,是以這裡就給BRIEF一個方向。

FAST關鍵點

FAST的基本方法可以寫成:

ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子

圖中是計算半徑為3的FAST關鍵點。

1、計算1和9是否會大于門檻值,如果大于門檻值則可以進入下一個,否則就不是關鍵點。

2、計算1,9,5,13是不是大于門檻值的個數超過3個,不是的話,就不是關鍵點。是的話進入下一步。

3、計算一個像素點,取周圍距離為3的一個圓,然後這個像素點與周圍的【1-16】的內插補點大于門檻值的個數count,如果會大于門檻值,則計算的count+1。如果count大于等于9,那麼就作為候選項。

4、使用NMS,如果在3x3或5x5的鄰域内,如果沒有有比目前像素更大的score的點,那麼就抑制這個點。

ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子

在ORB特征裡,使用的是FAST-9,圓的半徑是9(在這裡也有人說FAST-9是半徑為3,這個具體看了代碼再說)

計算完這些以後,FAST特征沒有對特征的正确度進行排序,是以這裡使用了Harris角點進行計算排序。首先去較低的門檻值擷取超過N個關鍵點,然後再根據Harris角點的計算進行排序。與此同時,FAST沒有産生多尺度的特征,是以使用在計算圖檔的尺度金字塔,在不同尺度計算FAST關鍵點。

之後需要計算FAST的方向了,在計算方向的時候,這裡提出了一個叫做intensity centroid的東西。

具體計算方法就是:

  • 首先是計算moment,就是在某個領域内計算m,計算公式如下圖:
ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子
  • 這裡計算的就是強度中心。
ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子
  • 然後我們從中點O(也就是FAST的關鍵點)到C點就有了一個向量: OC→ 計算FAST的方向就可以使用下面的公式計算咯。在ORB特征裡面,它使用的領域就是一個圓。
ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子

作者在這裡提到為了找到方向,他特地使用MAX和BIN的方法計算方向,但是他發現還是center centroid的方法最好。

rBRIEF描述子

rBRIEF(rotation-aware BRIEF)描述子。

首先先來了解一下什麼是BRIEF【6】、【7】、【8】、【9】、【10】、【11】。

描述子是對關鍵點進行一個描述,剛才我們已經通過了FAST特征找到了關鍵點的位置和方向。

下面是詳細的步驟:

  1. 為減少噪聲幹擾,先對圖像進行高斯濾波(方差為2,高斯視窗為9x9)。
  2. 以特征點為中心,取SxS的鄰域大視窗。在大視窗中随機選取一對(兩個)5x5的子視窗,比較子視窗内的像素和(可用積分圖像完成),進行二進制指派。(一般S=31)
    ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子
  3. 在大視窗中随機選取N對子視窗,重複步驟2的二進制指派,形成一個二進制編碼,這個編碼就是對特征點的描述,即特征描述子。(一般N=256)
    ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子

在随機選取特征點的時候,有幾種随機選取的方法【6】。

在ORB特征中,選取的随機點是高斯分布的。長度n=256。在進行計算描述子的時候,采用的高斯核是5x5的31x31的區域内進行。

為了讓BRIEF具有旋轉不變性,這裡使用了得當初尋找FAST的關鍵點的方向的作為BRIEF的方向,這樣就可以得到:

  • 把關鍵點周圍的要用來計算的坐标列成2xn的矩陣。
ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子
  • 計算通過旋轉矩陣之後這些點的坐标。旋轉矩陣就是[cos a sin a; sin a -cos a]這個矩陣。
ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子
  • 這裡就是計算旋轉之後的坐标中取出點來計算BRIEF描述子。
ORB: an efficient alternative to SIFT or SURF介紹FAST關鍵點rBRIEF描述子

是以從整個步驟中我們可以看到ORB特征還是比較簡單的,複雜度也比較低,速度很快。有方向和尺度的資訊,這是之前BRIEF沒有的。

具體的這個特征的分析,比如後面PCA說為什麼ORB更好呀,就得自己看論文咯,已經寫得很清楚了。當然特征還有SIFT、SURF、AKAZE、HIST等等。之前CV課上都有做過東西,沒有來得及總結,以後有空再把追蹤、場景識别、圖像拼接等等這些東西從原理到代碼介紹一遍。

看完這些,再回到ORB-SLAM的計算特征的部分,再梳理一遍。

參考連結:

FAST Corner:

【1】 http://blog.csdn.net/hujingshuang/article/details/46898007#reply

【2】 http://blog.csdn.net/went2011/article/details/8020943

【3】 http://blog.csdn.net/candycat1992/article/details/22285979

【4】 http://blog.csdn.net/yang_xian521/article/details/7411438

【5】 http://www.tuicool.com/articles/e6Bv2q

Brief:

【6】 http://www.mamicode.com/info-detail-922469.html

【7】 http://blog.csdn.net/lhanchao/article/details/52612954

【8】 http://blog.csdn.net/eternity1118_/article/details/51182354

【9】 http://blog.csdn.net/eternity1118_/article/details/51351514

【10】 http://blog.csdn.net/lhanchao/article/details/52612954

【11】 http://wenku.baidu.com/link?url=vq8-lKMiQa90mlz4dk6CvN0IegknJmlvJfHeFYpSbjqGs06e-WopvHgq9pgreJkIfon7N4KfIIH16NQt0cuzdpwAkxLwjKxs9YVEwxnVmqC

繼續閱讀