ORB是一種特征提取和描述的快速算法,論文原文《ORB: an efficient alternative to SIFT or SURF》。
ORB算法分為特征提取和特征描述兩個部分,其中特征提取是對FAST特征的改進,特征描述是對BRIEF算法的改進。
一、oFAST
1.1 FAST特征提取
FAST特征提取請參考連結:【目标檢測】FAST特征學習記錄。
針對特征點數量大且不确定,不具有方向資訊和尺度資訊等問題,ORB做了如下改進:
(1)對原始的FAST角點分别計算Harris響應值,然後選取前N個具有較大響應值的角點作為最終的角點集合。
(2)增加尺度和旋轉的描述。
其中,尺度不變性是通過建構圖像金字塔,并且在每一層生成FAST特征。
旋轉不變性在下節詳細說明。
1.2 通過灰階質心進行方向定位
定義一個圖像塊的矩定義為,
通過矩來計算特征點以r為半徑範圍内的質心,特征點坐标到質心形成一個向量作為該特征點的方向。
質心為,
那麼該特征的方向為,
二、rBRIEF
2.1 BRIEF
BRIEF是在特征點的一個鄰域内選擇n對像素點,比較它們的灰階值,
p(x) < p(y)則為1,反之為0。n對都比較完之後就生成了長度為n的二進制串。
作者說在進行計算之前先對圖像進行高斯平滑處理,視窗大小為5x5,n=256,圖像塊取31x31。
2.2 Steered BRIEF
定義一個2xn的矩陣,
經過旋轉角度θ旋轉,得到新的點對,
則steered BRIEF變為,
2.3 rBRIEF
使用steered BRIEF方法得到的特征描述子具有旋轉不變性,但是相關性卻不如BRIEF,這會影響特征的比對效果。
作者沒有使用BRIEF的取點對的方法,而是采用了學習的方法重新選取點對集合。
建立300k個特征點訓練集,是從PASCAL 2006資料集中選取的。對于訓練集的每個點,計算其31x31的鄰域,鄰域中的某個點的5x5鄰域灰階平均值來代替某個點對的值。在31x31的鄰域内共有(31-5+1)x(31-5+1)=729個子視窗,是以取點對的方法共有M=265356種。算法流程是
(1)300k個特征點選點對。
(2)對每個點對求平均值,按照平均值到0.5的距離大小重新點對進行排序,形成向量T。
(3)将T的第一列向量放到結果向量R中,并且将此列從T中移除。
(4)取T的下一列向量和R中的所有列向量計算相關性,如果相關系數小于設定的門檻值,則将該列向量添加至R中,否則丢棄它。
(5)重複上述步驟,直到R中向量列數為256。如果周遊完所有向量之後R中的向量列數少于256,則提高門檻值,重試。