【时间】2018.11.06
【题目】关于SIFT(Scale Independent Feature Transfor)的学习笔记
一、SIFT(Scale Independent Feature Transfor)
通过博文https://blog.csdn.net/weixin_38404120/article/details/73740612 了解了SIFT特征匹配算法,知道了图像尺度空间、尺度空间表达——高斯卷积、金字塔多分辨率表达——降采样、LOG(Laplassian of Gaussian)、DOG(Difference of Gaussian)等概念。
1.1图像尺度空间
平时生活中,用人眼去看一张照片时,随着观测距离的增加,图像会逐渐变得模糊。那么计算机在“看”一张照片时,会从不同的“尺度”去观测照片,尺度越大,图像越模糊。 所有不同尺度下的图像,构成单个原始图像的尺度空间。“图像尺度空间表达”就是图像在所有尺度下的描述。
1.2.“尺度空间表达”与“金字塔多分辨率表达”
1)尺度空间表达——高斯卷积
高斯核是唯一可以产生多尺度空间的核。 左图是二维高斯函数在数学坐标系下的图像。 右图是高斯函数对应的高斯核。
2)金字塔多分辨率表达——降采样
所谓图像金字塔化:就是先进行图像平滑,再进行降采样,根据降采样率不同,所得到一系列尺寸逐渐减小的图像。
两种表达的不同之处在于:
“尺度空间表达”在所有尺度上具有相同分辨率,而“图像金字塔化”在每层的表达上分辨率都会减少固定比率。
“图像金字塔化”处理速度快,占用存储空间小,而“尺度空间表达”刚好相反。
1.3.LOG(Laplassian of Gaussian)
将前面提到的“尺度空间表达”与“图像金字塔化”融合起来的话,就得到了LOG图像,高斯拉普拉斯变换图像。其步骤是:先将照片降采样,得到了不同分辨率下的图像金字塔。再对每层图像进行高斯卷积。这样一来,原本的图像金字塔每层只有一张图像,而卷积后,每层又增加了多张不同模糊程度下的照片。
4.DOG(Difference of Gaussian)
为了更好地获取特征点,所以还需要对LOG图像再进一步地优化,得到了DoG。DOG即高斯差分。
构造高斯差分图像的步骤是:在获得LOG图像后,用其相邻的图像进行相减,得到所有图像重新构造的金字塔就是DOG金字塔。下面左图是LOG图像,右图是DOG图像。
、
1.5.DOG局部极值点(定位关键点)
寻找极值点
当得到DOG金字塔后,我们接下来要做的是寻找DOG极值点。每个像素点与其周围的像素点比较,当其大于或者小于所有相邻点时,即为极值点。
比如说,如下图所示,以黄点为检测点,那么其周围的点,除了同层所包围的8个绿点外,还有上一层的9个点与下一层的9个点。
1.6 关键点方向赋值
1.7.关键点描述
在每子区域内计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,形成一个种子点。与求特征点主方向时有所不同,此时,每个子区域的梯度方向直方图将0°~360°划分为8个方向范围,每个范围为45°,这样,每个种子点共有8个方向的梯度强度信息。由于存在4X4(Bp X Bp)个子区域,所以,共有4X4X8=128个数据,最终形成128维的SIFT特征矢量.
1.8.代码实现--在opencv中使用特征点检测器
使用python以及opencv实现关键点检测器详见 https://blog.csdn.net/zhangziju/article/details/79754652