我試圖按照Lowe的paper中所述的方式,優雅地構造SIFT特徵描述符。我見過的大多數方法都相當混亂,我想找到一個這樣做的優雅方法。我有我的關鍵點作爲插值(X,Y)座標,並且我一直在使用決定在我的圖像的所有像素的梯度大小和方向:使用指數矩陣在MATLAB中構建SIFT特徵矢量
[Gmag,Gdir]=imgradient(image)
我可以很容易地找到每一個關鍵點梯度的16×16窗口通過切片Gdir
。我現在需要構建每個單元格的直方圖。我用下面的代碼來獲得一個段數爲每個方位/大小:
binned=discretize(local_Gdir,[-180:45:180])
binned
現在是對應於針對每個小區(它充滿了數字1-8的特徵向量索引的矩陣;所述索引的binned
對應於局部梯度指數)。
爲了構建128個元素特徵描述符,我需要確定16個單元的特徵向量(直方圖)。我一直試圖將binned
矩陣拆分爲16個單元格,同時保留索引,以便我可以快速引用局部梯度幅度矩陣,將每個單元格的每個單元格中的梯度求和,然後將它們附加到最終描述符中,但我可以找不到乾淨的方式來做到這一點。
如何使用索引矩陣來構建16個單元格的16個特徵向量?也許更一般地說,在不丟失原始行/列索引的情況下,將索引矩陣分成16個子矩陣的好方法是什麼?