(一)图像特征匹配--SIFT
1.1 SIFT背景简介
SIFT算法是David Lowe在1999年提出的局部特征描述子,并在2004年深入发展和完善。
SIFT算法是在尺度空间进行特征检测并确定关键点的位置和关键点所在的尺度。
该关键点方向特征选取该点邻域梯度的主方向,以便实现算子对尺度和方向的无关性。
1.2 SIFT特征向量生成步骤
一幅图像SIFT特征向量的生成步骤主要有如下四步:
(1)检测尺度空间极值点,初步确定关键点的位置和所在尺度; [初步找出关键点群]
(2)精确确定关键点位置和尺度,同时去除低对比度的关键点和不确定的边缘响应点,以便增强匹配稳定性、提高抗噪声能力;[精确确定关键点群并择优筛选]
(3)指定每个关键点的方向参数,以便算子具有旋转不变性;
(4)生成关键点描述子,即生成SIFT特征向量;
1.2.1尺度空间
概念解释:尺度空间:尺度空间是利用高斯核对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列,对这些序列进行尺度空间特征提取
其中,二维高斯核定义为:
其中σ被称为尺度坐标, 是高斯正态分布的方差。
注:除高斯核外,尺度函数有很多,但并不是所有的尺度函数都可以构建尺度空间。Koenderink和Lindeberg已经证明,在一些合理的约束下,高斯核是唯一可以产生尺度空间的核,而且是唯一的线性核。
二维图像 在不同的尺度空间可以通过图像与卷积核做卷积求得
这里尺度坐标σ越小表示图像被平滑的越少,σ越大表示图像被平滑的越多。大尺度反映图像概貌特征,小尺度反映图像细节特征。
选择合适的尺度因子是构建尺度空间的关键。
1.2.2 高斯金字塔构建
1)高斯差分尺度空间(DOG scale-space);
为了在尺度空间有效检测到稳定的关键点,提出了高斯差分尺度空间,它是由不同尺度的高斯差分核与图像卷积而生成的。
图像高斯金字塔有O组,每一组有S层,在实际计算时,使用高斯金字塔每组中相邻上下两层图像相减,下一层的图像由上一层图像降采样得到,得到高斯差分图像。
(a)高斯金字塔 (b)高斯差分金字塔生成图示
图 高斯金字塔图示
(1)空间极值点检测 [关键点初步筛选]
为了寻找尺度空间极值点,需要每个采样点与它所有的相邻点比较,看其是否比它图像域和尺度域的相邻点大或小。
图 DOG尺度空间局部极值监测
图中中间的检测点与它相同尺度的8个相邻点以及上、下相邻尺度的9*2个点比较,以确保在尺度空间和二维图像空间都监测到极值点。
(2)确定极值点位置 [确定关键点]
通过你和三维二次函数来精确确定关键点位置和尺度。
由于DOG算子会产生较强的边缘效应,,所以需要去除低对比度的关键点和不问稳定的边缘响应点以增强匹配稳定性和提高抗噪声能力。
去除边缘响应点原理: 定义一个不好的高斯差分算子的极值在横跨边缘的地方主曲率大,而垂直边缘的方向主曲率小。主曲率通过一个2*2的Hessian矩阵
求出,令为最大特征值, 为最小特征值,
则
导数由采样点相邻差估计得到。
D的主曲率和H的特征值成正比,令α = γβ,则
此函数单调递增,可以限制比值γ达到过滤边缘响应点的目的。
(3)求关键点方向
利用关键点邻域像素的梯度方向分布特性为每个关键点制定方向参数,使算子具备旋转不变性。
由此可以求出(x,y)处的方向和梯度。 L所用的尺度是每个关键点所在的尺度。
注:一个特征点有三个属性:位置、尺度和方向
(4)生成SIFT特征向量