SIFT的理解
我记录一下关键点:首先搞清楚目的,SIFT算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现,Lindeberg等人已证明高斯卷积核是实现尺度变换的唯一变换核,并且是唯一的线性核
1.高斯金字塔层数的计算
2.高斯金字塔的尺度,即纵坐标。此处的n指的是每一组的层数。拿第一组来说,每一层的高斯滤波标准差如图所示,结合博客来理解,我觉得相对于博客里的大串公式来说好理解一些。作者想让初始标准差1.6,由于镜头自带的高斯模糊标准差为0.5,所以图像的初始标准差为1.52,符合勾股定理。
3.高斯差分(DoG,Difference of Gaussion)
这个看一下博客吧,但是要记着目的是为了寻找尺度无关的特征点 。尺度的变化有两点:一个是在模糊与清晰之间的变化,一个是隔点采样。
4.极值点检测,做完高斯差分之后已经有纵轴方向上的极值点,还需要有X和Y方向上的极值点,就是上下两层的比较,检测好之后就要做关键点精确定位(子像素插值)。
5.去除边缘效应,边缘点也有突变但是不是特征点。
6.方向匹配
7.生成描述子
每个人理解该算法都会有不同的困难,我写一下我对该算法遇到的困迷惑点的理解:
1)首先是高斯金字塔,同一组图片是由上一层的图片做高斯滤波得到的,只不过是方差不一样,方差决定的是模糊程度,也就是所谓的模拟人眼对远近事物的观察。不同组(层)的基底图片是下采样(隔点采样)得到的,采的是上一层的倒数第三张,即上一层从上往下数的第三张,至于为什么取倒数第三张就不说了,可以自己去搜一下,主要是为了尺度的连续性,还要考虑高斯金字塔的构成。
附上博客链接:https://blog.****.net/u014485485/article/details/78681086
2)S+3问题,这个好好看博客内容可以解决,主要是由于高斯差分、图像域和尺度域极值点的比较产生的,尺度域的比较需要上下两层共26个点,所以最上层和最下层都去掉了,这两层一个没有上层,一个没有下层。
3)里面涉及到的高斯滤波可以看一下原理
https://www.cnblogs.com/wangguchangqing/p/6407717.html
4)看一下黑塞矩阵,看完会理解什么是黑塞矩阵,其实就是多元函数的二阶导数构成的矩阵,导数嘛描述的就是斜率,所以黑塞矩阵描述局部曲率(因为多元),取极值代表极亮或极暗点。
https://blog.****.net/u011501388/article/details/79489371
https://blog.****.net/u011600592/article/details/75122245
5)消除边缘响应这里和上面Harris算法中构造函数E有点相同,同样用到了特征值,用到了矩阵的迹和行列式的值,并使用其构造函数,为的是创造阈值。特征值代表的是X或Y方向上的导数,在Harris中需要两个特征值都大,是需要的角点;而在SIFT中消除边缘响应时,我们需要的是利用它判断边缘点。什么样的特征值反映了边缘点?同上,一个特征值大,一个特征值小的时候,此时小于某阈值的保留,大于某阈值的去除。
6)对于梯度和方向还有直方图迷惑了的同学可以看下下面这个博客内容
https://blog.****.net/passball/article/details/82254256
7)生成描述子这个地方,可以大概这么理解,生成主方向是关键点周围的邻域。而后面的16块8个方向的子区域组成的一整块区域是一块儿比原来更大的区域,用着更大的区域提取的尺度特征来描述这一个点。
8)最后再强调一下,这是在使用尺度特征来描述图像。