SIFT算法综述

来源:互联网 发布:json文件怎么打开 编辑:程序博客网 时间:2024/06/06 00:13

SIFT 算法:
此篇博客主要讲sift的原理及为什么要这样做,不具体介绍细节,所以需要对sift算法有个大致了解,可以参考:
http://blog.csdn.net/zddblog/article/details/7521424
http://blog.csdn.net/abcjennifer/article/details/7639681/

一个物体,人眼从远处或者近处看它都能识别出来,但是计算机如何识别呢
AB两张图像的分辨率相同,但是某个物体的大小不同,这个物体的特征必然是有变化的。但如果我求得A的多尺寸的特征点,B的多尺寸的特征点,用A中的一个尺寸特征点遍历的比较B中每个尺寸的特征点(这样就算由于尺寸变化了特征改变了我也会在B的图像金字塔中找到一个这个物体尺度相近的图像),判断特征点是否相似

物体的特征受到尺度的影响,sift的算法是一种在空间尺度上寻找特征点的方法,解决了目标物体的缩放、旋转、光照变化等问题。由于物体特征对尺度的变化敏感,我们又不知道原图和待检测的目标图像的尺度是否是相同的,所以我们用多尺度的方式去描述图像(原理)。
Sift算法主要由3个部分构成:
1、尺度空间的构造,并求关键点
2、主方向的求取和特征描述符
3、匹配

一.尺度空间的构造:
前面讲到sift的原理是多尺度,那如何获得这个多尺度集呢
物体越小(尺寸)越模糊,越大越清晰
采用高斯模糊和降采样可以实现这个特性

如何获得 多尺度

1.使用高斯模糊来获取多尺度,有人证明了告高斯卷积是实现尺度变换的唯一变换核。高斯模糊就是度图像进行一个卷积运算,某个像素点用它和它周围的点去描述,这个卷积模板是个高斯函数(正态分布),离像素点越近它的影响因子越大,这样就会使得图像变得平滑(模糊)。σ是正态分布的标准差,越大图像越模糊。

2.使用金字塔结构,获得高斯金字塔
对图像进行降采样,获得N组多分辨率的图像金字塔,对于每一个分辨率下的图像进行高斯模糊,low建议每组中有s+3(low建议s=3)幅图像,并将第一层的尺度σ定为1.6,分别对第一张图像进行kσ,k*kσ… σ。

3.获得差分高斯金字塔
将上一层图像减去下一层图像,得到差分高斯金字塔,每组s+2(5)层。

4.获得极值点
如果一个像素点它在本层和上下两层中的9*3个点中为最大值或最小值,即为这个尺度下的关键点(实验证明,差分高斯金字塔获得最大值或最小值产生了最稳点的图像特征)。(角点检测http://blog.csdn.net/abcjennifer/article/details/7639488)

5.去除不稳点的点
不稳点的点包括低对比度和边缘响应点

二.主方向的求取 和特征描述符(关键点方向和特征描述符都是在对应的高斯图像上进行的)
Sift算法的另一个特点就是旋转不变性,利用图像的局部特征为关键点分配一个基准方向。
求关键点某个邻域内,求得各像素点的梯度值与梯度方向,得到方向直方图,选取最大值为关键点的方向。如何描述这个关键点?Low用关键点和关键点周围点描述它。根据所在尺度选取一个邻域,将坐标轴旋转为关键点的方向,以确保旋转不变性,将坐标中的点分配到4*4的子区域内,计算每个子区域的点的梯度值和方向,这样就构成了4*4*8=128维的特征向量,为了去除光照变化的影响,需要对它们进行归一化处理,因为光线变化是对图像灰度值整体的漂移。
三.匹配
A,B两幅图,将A中的每个描述子与B中的所有的描述子进行匹配,计算欧式距离,找出B中的两个最近的特征点,以最近距离除以次近距离,如果小于某个阈值则匹配成功。

原创粉丝点击