SIFT解析(三)生成特徵描述子

2022-09-05 00:12:40 字數 1197 閱讀 6725

以上兩篇

文章中檢測在dog空間中穩定的特徵點,lowe已經提到這些特徵點是比harris角點等特徵還要穩定的特徵。下一步驟我們要考慮的就是如何去很好地描述這些dog特徵點。

下面好好說說如何來描述這些特徵點。許多資料中都提到sift是一種區域性特徵,這是因為在sift描述子生成過程中,考慮的是該特徵點鄰域特徵點的分布情況(而沒有利用全域性資訊)。本步驟中主要計算過程包括:確定特徵點的方向生成特徵描述符

確定特徵點方向

在特徵點的確定過程中,特徵點的座標以及尺度被確定下來(座標很重要,尺度更重要,到後來,你會發現尺度這個參量在整個描述子生成過程中越來越重要,因為正是運用尺度參量實現的scale-invariant,尺度不變!),根據特徵點的尺度選擇高斯金字塔中的影象,然後在這幅影象上確定該特徵點的方向。這裡體現的正是尺度不變的思想。

構造該點鄰域梯度方向直方圖,將一圓周360°劃分成36個槽,從0°開始每槽遞增10°。根據鄰域點的方向、梯度的幅值以及距離特徵點的遠近構建上述梯度方向直方圖,如下圖所示:

根據梯度直方圖,直方圖峰值所對應的的角度就是當前特徵點a的方向,同時如果某角度的梯度幅值和》=峰值的80%,那麼就產生乙個新的特徵點b,這個點的座標、尺度等引數同a,但是角度不同。

至此,特徵點的方向確定完畢。

生成影象區域性描述符

到了本步驟,影象中每個特徵點的座標、尺度以及方向都確定了,下面開始根據這些資訊獲得描述子。

與上文中提到的確定特徵點方向類似,生成描述子也是根據以特徵點為中心的影象區域性資訊,首先根據特徵點的尺度選擇高斯金字塔中的影象,然後計算特徵點鄰域範圍內各點的梯度方向和梯度的幅值,並根據上文得到的特徵點梯度方向更新這些梯度的方向,以此達到描述子的方向不變性。

方向不變性完成後,開始計算特徵描述符了。描述符計算過程同樣基於梯度方向直方圖,只是這次直方圖的槽是以45°劃分的(因此每個直方圖只有8個槽),而不是10°。具體過程如下圖所示:

統計每個4×4塊的方向梯度直方圖,為了去除光照對描述子的影響,對梯度直方圖進行歸一化處理。然後將每個直方圖槽資料串聯即可得到sift描述子,lowe提出當梯度方向直方圖是4×4維的時候,sift描述子具有最好的區分度,因此這就誕生了老生長談的128維sift特徵向量,如下圖所示:

至此,sift特徵計算過程結束。

來自為知筆記(wiz)

《Python高階程式設計》(三)生成器

生成器是乙個函式,它並不執行並返回乙個單一值,而是按照順序返回乙個或多個值 生成器函式的特徵就是在函式內部有乙個或多個yield語句。python 2中,yield和return不能共存 python 3中可同時存在。yield語句 命令函式返回乙個值給呼叫者,但不會終止函式的執行。執行會暫時停頓直...

論」三生萬物「

2014年4月17日 2014年4月29日二稿 道德經有言 一 生二,二生三,三生萬物 反感於國人的過度解讀,我一直很認為這句話只不過是老子自己臆造的,沒什麼真理蘊含於其中。其實我也思考過這句話,你說吧,這個一生二我可以理解,就是萊布尼茲發明的二進位制嘛。一直嗤之以鼻,萊布尼茲發明二進位制和老子的陰...

22 生成括號

n n組括號,括號字串長度為2n2n 字串中的每個字元有兩種選擇可能,或 故有22n 2 22 n種可能。分析 1 我們定義兩個變數left和right分別表示剩餘左右括號的個數,如果在某次遞迴時,左括號的個數大於右括號的個數,說明此時生成的字串中右括號的個數大於左括號的個數,即會出現 或者 這樣的...