SIFT
SIFT的步骤
- DOG层构造。
- 局部极值点检测(包括各种删除)。
- 特征点的梯度方向以及幅度的分配。
- 描述子(点特征)的提取。
2.尺度空间的极值检测和关键点位置确定:对DoG金字塔中的每一层,进行尺度空间的极值检测(极大值和极小值),把每一个极值点作为候选点,在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
3.关键点方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
4.构建关键点特征描述符:在每个关键点周围的内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
DOG层构造
高斯差分(DoG)滤波:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
(1)分层(Octaves)利用高斯滤波器进行图像分尺度(different sigma in Gaussian Kernel)特征提取。(在Koenderink以及Lindeberg的文献中对多尺度有一个简单的说明,只有高斯核才能构建多尺度)
极值点检测
关键点是由DOG空间的局部极值点组成的,关键点的初步探查是通过同一组内各DoG相邻两层图像之间比较完成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9YcetiK-1616765206348)(/assets/DOG-极值点检测_lv96qmyhg.jpg)]
如图3.4所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-utAglRjf-1616765206351)(/assets/高斯差分金字塔_pt285c4b9.jpg)]
如图3.3右侧每组含4层的高斯差分金子塔,只能在中间两层中进行两个尺度的极值点检测,其它尺度则只能在不同组中进行。为了在每组中检测S个尺度的极值点,则DOG金字塔每组需S+2层图像,而DOG金字塔由高斯金字塔相邻两层相减得到,则高斯金字塔每组需S+3层图像,实际计算时S在3到5之间。
当然这样产生的极值点并不全都是稳定的特征点(关键点),因为某些极值点响应较弱,而且DOG算子会产生较强的边缘响应。
关键点定位
在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
通过曲线拟合的方法找出关键点,并用二阶海森矩阵去除响应点。
二阶海森矩阵去除响应点
确定梯度主方向
基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
1.计算每个关键点周边(8x8)的梯度、幅值
在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wz012n1t-1616765206352)(/assets/SIFT-计算梯度幅值_tste6g9lt.png)]
2.用直方图图统计主方向
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y66vYvZj-1616765206355)(/assets/SIFT-直方图统计主方向_th73fq98n.png)]
方向10°一组,总共36柱
确定关键点的方向采用梯度直方图统计法
本算法采用梯度直方图统计法,统计以关键点为原点,一定区域内的图像像素点确定关键点方向。在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为36个柱,其中每柱10度。 如上图所示,直方图的峰值方向代表了关键点的主方向,方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。
关键点描述
在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
生成4x4x8=128个描述子(这里与南信大的那篇尺寸不一样,参数多了)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PEYgAgxG-1616765206356)(/assets/SIFT-特征矩阵_86px1qkr8.png)]
Lowe实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。
参考文章:
[1] SIFT特征匹配算法及代码(python)
[2] 不能错过!超强大的SIFT图像匹配技术详细指南(附Python代码)