1. 基本介绍
SIFT的全称是Scale Invariant Feature Transform,首次由D. G.
Lowe于2004年以《Distinctive Image Features from Scale-Invariant
Keypoints[J]》发表于IJCV中。SIFT算法的实质是在不同的尺度空间上查找关键点,计算关键点的大小、方向、尺度信息,利用这些信息组成关键点对特征点进行描述。
SIFT所查找的关键点都是一些十分突出,不会因光照,仿射便函和噪声等因素而变换的“稳定”特征点,如角点、边缘点、暗区的亮点以及亮区的暗点等。匹配的过程就是对比这些特征点的过程。
1.1 算法特点
-
SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;
-
独特性,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;
-
多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;
-
高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;
-
可扩展性,可以很方便的与其他形式的特征向量进行联合。
1.2 检测步骤
Lowe将SIFT算法分解为如下四步:
-
尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
-
关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
-
方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
-
关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
2. 基本原理
2.1 关键点
2.2 尺度空间
我们要精确表示的物体都是通过一定的尺度来反映的。
尺度空间的主要思想是通过对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测等。
尺度越大图像越模糊。
尺度函数表示如下:
(2-1)
尺度空间因子,值越小表示图像被平滑的越少,相应的尺度也就越小。大尺度对应于图像的概貌特征,小尺度对应于图像的细节特征。
2.3 高斯模糊
2.3.1 高斯函数
-
高斯函数表达式:
(2-2)
其中,是正态分布的标准差,值越大,图像越模糊(平滑)。r为模糊半径,模糊半径是指模板元素到模板中心的距离。如二维模板大小为m*n。 -
高斯函数具有五个重要性质:
(1)二维高斯具有旋转对称性;
(2)高斯函数是单值函数;
(3)高斯函数的傅立叶变换频谱是单瓣的;
(4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的;
(5)二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长。
2.3.2 高斯模糊
高斯模糊,也叫高斯平滑,是在Adobe Photoshop等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。SIFT算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现。
理论上来讲,图像中每点的分布都不为零,这也就是说每个像素的计算都需要包含整幅图像。在实际应用中,在计算高斯函数的离散近似时,在大概3σ距离之外的像素都可以看作不起作用,这些像素的计算也就可以忽略。通常,图像处理程序需要计算的矩阵大小只需如下 :就可以保证相关像素影响。
根据σ的值,计算出高斯模板矩阵的大小,使用公式(1-2)计算高斯模板矩阵的值,与原图像做卷积,即可获得原图像的平滑(高斯模糊)图像。为了确保模板矩阵中的元素在[0,1]之间,需将模板矩阵归一化。
下图是55以及15的高斯模板卷积计算示意图。
2.3.3 高斯金字塔
高斯金字塔的构建分为两部分:
- 对图像做不同尺度的高斯模糊;
- 对图像做降采样(隔点采样)。
图像的金字塔模型是指,将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层&#x