1. SIFT算法
1.1 概述
SIFT(Scale-Invariant Feature Transform,尺度不变特征变换),由David G.Lowe提出,是一种计算机视觉的算法。它用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。SIFT算法可解决的问题有目标的旋转、缩放、平移(RST)、图像仿射/投影变换(视点viewpoint)、弱光照影响(illumination)、部分目标遮挡(occlusion)、杂物场景(clutter)、噪声等。
1.2 SIFT特征检测的步骤
(1)尺度空间的极值检测:搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度和选择不变的兴趣点。
(2)特征点定位 在每个候选的位置上,通过一个拟合精细模型来确定位置尺度,关键点的选取依据他们的稳定程度。
(3)特征方向赋值 基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。
(4)特征点描述 在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变换。
1.3 SIFT算法原理
sift算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。这些是一些十分突出的点,不会因光照、尺度、旋转等因素的改变而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。
1.高斯模糊
SIFT算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现。高斯核是唯一可以产生多尺度空间的核,一个图像的尺度空间,L(x, y, σ) ,定义为原始图像 I(x, y)与一个可变尺度的二维高斯函数G(x, y, σ) 卷积运算。
在二维空间中,这个公式生成的曲面的等高线是从中心开始呈正态分布的同心圆,如下图所示。分布不为零的像素组成的卷积矩阵与原始图像做变换。每个像素的值都是周围相邻像素值的加权平均。原始像素的值有最大的高斯分布值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权重也越来越小。这样进行模糊处理比其它的均衡模糊滤波器更高地保留了边缘效果。
2.尺度空间
尺度空间主要思想是通过对原始图像进行尺度变换,获得图像多尺度下的空间表示。从而实现边缘、角点检测和不同分辨率上的特征提取,以满足特征点的尺度不变性。
2.构建高斯金字塔
图像的金字塔模型是指,将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔共n层。金字塔的层数根据图像的原始大小和塔顶图像的大小共同决定。
(1)构建过程:
a.对图像做高斯平滑(即不同尺度的高斯模糊);
b.对图像做降采样(增加高斯滤波,让尺度具有连续性,一幅图产生几组图像,一组图像包括几层图像)
若金字塔共o组,s层,则有:
最后可得组内与组间尺度:
i——金字塔组数
n——每一组的层数
3.高斯差分金字塔
对应DOG算子,需构建DOG金字塔,可以通过高斯差分图像看出图像上的像素值变化情况。