在得到合适的特征点位置后,为每个特征点分配方向,从而使描述子能实现图像旋转不变性,这也是我们SIFT第三步方向分配的主要目的。
SIFT中方向分配主要从以下几个步骤进行。
1、计算梯度幅值和幅角
需要根据检测到的特征点的局部图像结构求得一个方向基准。我们使用图像梯度方向求取该局部结构的稳定方向。对于已经检测到的特征点,我们知道该特征点的尺度值
该特征点的梯度:
使用有限差分,计算以特征点为中心,以
2、加权处理
每个加入梯度直方图的采样点梯度幅值都要进行权重处理,加权采用圆形高斯加权函数,其
由于SIFT只考虑了尺度和旋转不变性,并没有考虑仿射不变性。通过高斯加权,使特征点附近的梯度幅值有较大的权重,这样可以弥补因没有仿射不变性而产生的特征点不稳定的问题。
3、生成方向梯度直方图
在完成特征点邻域的高斯图像的梯度计算后,使用直方图统计邻域内像素的梯度方向和幅值。梯度方向直方图的横轴是梯度方向角,纵轴是梯度方向角对应的梯度幅度累加值。
梯度方向直方图将
4、辅方向
当梯度方向直方图中,当存在另一个相当于主峰值80%能量的峰值时,则将这个方向认为是该特征点的辅方向。一个特征点可能会被指定具有多个方向(一个主方向,一个以上辅方向),这可以增强匹配的鲁棒性,具体就是把该特征点复制成多份特征点,并将方向值分别赋给这些复制后的特征点,通常离散的梯度方向直方图进行插值拟合处理,这样可以求得更精确的方向角度值。
以上,在获得了图像的特征点主方向后,每个特征点有三个信息