至此,前面的所有工作都是为了现在这一步。。终于要写完了。。伤不起啊。。
下面是一个SIFT描述子的示例,其中描述子由2*2*8维向量表征,也即是2*2个8方向直方图组成。左图的特征点由8*8个单元组成,每一个小格代表了特征点邻域所在的尺度空间的一个像素,箭头方向代表像素梯度和方向,箭头长度代表该像素的幅值。然后再4*4的窗口中计算8个方向的梯度直方图,绘制每个梯度方向的累积可形成一个种子点,如右图所示:一个特征点由4个种子点的信息组成。
经Lowe实验结果表明:描述子采用4*4*8=128维向量表征,综合效果最优。
首先,我们需要将坐标轴旋转到特征点的主方向,只有以特征点的主方向为零点方向来描述才能确保特征点描述具有旋转不变性。
如图所示:
旋转角度后的新坐标为:
然后在图像半径区域内对每个像素点求其梯度幅值和方向,然后对每个梯度幅值乘以高斯权重参数,生成方向直方图
在窗口大小为2*2的区域内计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点,然后在下一个2*2区域内进行直方图统计,形成下一个种子点,以此类推,最终生成16个种子点。
最后对子向量元素进行门限化和规范化。