我试图按照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个子矩阵的好方法是什么?