SIFT: Distinctive Image Features from Scale-Invariant Keypoints 笔记

文章:Distinctive Image Features from Scale-Invariant Keypoints (SIFT)

摘要:本文提出一种图像特征提取的方法SIFT,并且SIFT特征可以对不同视点获取的图像进行可靠的匹配。SIFT特征具有尺度和旋转不变性,并且对仿射变换、视点变换、噪声和光照变化具有一定的鲁棒性。SIFT特征具有独特性,也就是说,一个SIFT特征从很大的数据集中(从许多图像中提取出的大量SIFT特征)成功匹配到相关特征的概率是很大的。本文还提出一种使用SIFT进行物体识别的方法。通过从特征数据集(来自已知物体数据)中基于最近邻去匹配特征来实现物体识别,其中涉及到聚类。

整体介绍:图像匹配是计算机视觉的一个基本问题,包括物体或场景识别、多图像相关的三维结构、物体匹配和运动追踪。本文所提出的图像特征具有优良的特性,使其可以适用于同一物体或场景的不同(视点、角度,基线等)图像的匹配问题。上述优良特性包括图像尺度和旋转不变性,并且对光照变化和视点变换具有一定的鲁棒性。SIFT特征在空间域和频率域具有很好的局部性,在一定程度上降低了遮挡、噪声对其的影响。此外,图像中不相关区域的特征是尽可能独立的,这样就为高匹配率提供了可能性,也可以作为物体和场景识别的基础。以下是从图像中提取SIFT特征的主要步骤:

  1. 尺度空间极值检测:这一步是为了对图像的所有尺度和图像位置进行搜索。具体来说就是在图像的高斯差分(DoG)金字塔中寻找可能的的特征点(也称之为兴趣点、关键点)。由于是基于DoG找到的兴趣点,所以这些兴趣点具有尺度和方向不变性
  2. 关键点定位:特征点也称为关键点。对于找到的每一个兴趣点,基于一定的策略(后边会详述)检测其位置和尺度,将位置和尺度具有稳定性的兴趣点选定为关键点。
  3. 关键点方向:基于局部图像的梯度方向,可以确定关键点的方向。
  4. 关键点描述子:在每个选定的关键点周围区域,基于某一尺度计算局部图像的梯度。结合关键点的方向、尺度和位置,将关键点转换为一个描述子,也就是特征向量。

该方法的一个重要方面是其可以产生大量的特征,这些特征密集的覆盖于图像的每个尺度和区域。一般来说,可以从尺寸为500×500像素的图像中提取出大约2000个稳定的特征点(虽然依赖于图像内容和参数选择)。特征点的质量对物体识别特别重要,在复杂背景中检测小物体的能力需要至少3个正确匹配的特征点,以便进行可靠的识别。

对于图像匹配和识别,首先提取图像数据集的SIFT特征,并进行存储(或建索引)。当一副新的图像作为匹配图像时,首先提取匹配图像的特征,然后基于欧式距离从存储的特征(索引)中寻找候选特征。本文将讨论快速最近邻算法,以从大的数据库中进行快速匹配。

特征向量具有高度独立性,这样特征向量从特征数据集中实现正确匹配的概率就大大增加。

1、尺度空间极值检测:

整体介绍所述,首先确定候选区域。关键点检测首先需要确定同一场景或物体的不同视图可以重复分配的位置和尺度。为了检测当图像尺寸改变时而图像局部不变的位置,通过使用尺度空间的连续尺度函数在所有可能的尺度上搜素稳定的特征来实现(Witkin,1983)。

在各种合理的假设下,Koenderink(1984)和Lindeberg(1994)证明唯一可能的尺度空间核只有高斯函数。因此,图像I(x,y)的尺度空间L(x,y,σ)可以通过与高斯滤波器G(x,y,σ)进行卷积运算得到:

其中∗是在图像坐标(x,y)的卷积操作,高斯滤波器的形式为:

为了在尺度空间中有效地检测稳定的关键点所在区域,本文作者(Lowe,1999)提出使用DoG函数与图像进行卷积获取尺度空间极值,也就是计算相邻模糊图像之差:

公式(1)

相邻尺度空间用参数k决定。

使用DoG函数进行计算有以下几个原因:首先,卷积运算的高效性,可以很方便地计算图像的模糊图像L,简单的计算模糊图像之差就可得到D;此外,Lindeberg(1994)研究发现尺度归一化(也就是乘σ^2)的高斯拉普拉斯算子(LoG)

可以由DoG来近似。Lindeberg认为拉普拉斯基于参数σ^2进行normalization是尺度不变性所必需的。Mikolajczyk(2002)通过详细的实验比较发现,LoG相比于其他滤波器可以产生更加稳定的图像特征,例如梯度、Hessian或Harris角函数。

DoG和LoG(基于σ^2)的关系可以通过热扩散方程来理解(不太理解!): 

从上式可以看出, 等号右边的LoG可由等号左边∂G/∂σ得到,∂G/∂σ可以由相邻尺度对应的DoG函数差分求得:

 由上式可得

这表明DoG函数具有由常数因子(σ)确定的不同尺度时, 就相当于归一化的LoG。k-1在所有尺度上都是常数,因此不影响特征提取到的位置。当k趋近于1时,近似误差趋近于0,但在实践中我们发现近似误差对极值和区域的定位几乎没有影响,即使在尺度上的差异比较明显,如当k√2时。

一种构造D(x,y,σ)的有效方法如Figure 1.所示。初始图像通过与k相关的高斯滤波器得到图像序列,滤波器的kernel尺寸为6σ+1取整,如Figure 1.左列所示。

SIFT: Distinctive Image Features from Scale-Invariant Keypoints 笔记_第1张图片 Figure 1.

D(x,y,σ)由多个octave(组)组成,每个组有s+2层尺度空间(s是寻找极值点的DoG图像层数,也就是Figure 1.中右列每组中去掉最上和最下后的层数,图中s=2),将高斯滤波器中标准差的最大值设为,所以k的最大值为2^(1/s)。在每组要得到s+2层DoG图像(Figure 1.右列),则每组需要s+3层模糊图像(Figure 1.左列)。当得到first octave(第一组)模糊图像后,下一组由第一组中的每幅模糊图像间隔采样得到,更下一组的获取方式以此类推,最后一组的图像尺寸为(可自行推导得到):

 1.1、局部极值检测:

为了检测D(x,y,σ)的局部最大和最小值,DoG的每个点p都要与相邻的8个点进行比较,并且与点p所在层的上一层和下一层对应每层的9个点进行比较,也就是共8+2*9=26个点进行比较,如Figure 2.所示。正因为如此,每组DoG图像实际找极值的层是去掉最下最上层后的中间层。当26个点均大与p或26个点均小于p时,认为p为极值点。这一策略的成本非常低,因为大多数点在几次比较后就会被剔除。

SIFT: Distinctive Image Features from Scale-Invariant Keypoints 笔记_第2张图片 Figure 2.

一个重要的问题是在图像和尺度空间中确定采样尺度,这是可靠地检测极值所需的。不幸的是,并没有一个适用于检测所有极值的采样尺度。考虑在黑色背景中的白色圆圈,其具有单一尺度空间最大值,其中高斯差分函数的圆形中心区域与圆的大小和位置相匹配。然而对于一个非常扁平的椭圆,椭圆的两端附近将有两个最大值。最大值位置是图像的连续函数 。因此,我们必须权衡效率与完整性(也就是尽可能检测到多的极值点)。通过实验证明,相近的极值对图像小的扰动是十分敏感的。接下来,通过实验选取相对较好的采样尺度。

1.2、采样尺度: 

最大限度地提高极值稳定性的实验如Figure 3.Figure 4.所示。实验数据包含32幅真实场景图像,通过对32幅图像作变换(旋转、缩放、仿射变换、亮度、对比度、加噪声等)得到变换图像。

SIFT: Distinctive Image Features from Scale-Invariant Keypoints 笔记_第3张图片 Figure 3.

Figure 3. 中,左图表示不同采样尺度(也就是s的取值)对应的关键点匹配率,实线表示转换图像相比于原始图像的关键点匹配率,虚线表示转换图像的关键点匹配数据库的匹配率,基于最近邻匹配。右图表示不同采样尺度对应的图像关键点数目,实线表示图像检测到的关键点数目,虚线表示从数据库中匹配到的关键点数目。根据实验结果,采样尺度s取3。

为什么匹配率没有随着采样尺度的增加而提升呢?这是因为当采样尺度增加时,在原始图像中确实会检测到更多的局部极值,但这些极值很多是不稳定的,所以在转换图像中是检测不到的。如Figure 3.右图所示,随着采样尺度的增加,检测到的关键点与匹配的关键点也在增加。由于物体识别的成功更多的是取决于匹配成功的关键点数目,而不是匹配率,所以很多应用可以选择增加采样尺度,但这样也增加了计算的代价。所以,通过实验等综合考虑,本文将s选取为3。

总的来说,通过实验可以说明,DoG尺度空间存在大量的极值点,要将几乎全部极值点检测出来的代价是很大的。所以我们通过设置采样尺度来检测一些稳定的且有用的极值点以适用于本文(或者大多数情况)。

1.3、空域采样频率: 

SIFT: Distinctive Image Features from Scale-Invariant Keypoints 笔记_第4张图片 Figure 4.

根据实验结果,σ取值1.6。

2、关键点定位:

当候基于26个邻近点确当选关键点的位置后,下一步是对候选关键点邻近的数据进行进一步拟合,以确定拟合曲线的主曲率的位置、尺度和比率。低对比度的点(对噪声敏感)或不稳定的边缘响应点将会被剔除。

这一方法的最初实现只是简单地将关键点定位在中心采样点的位置和尺度上(Lowe,1999)。随后,Brown(Brown and Lowe,2002)使用三维二次函数去拟合局部采样点,以确定最大的插值位置,实验表明这一方法在匹配和稳点性方面都有很大提高。Brown的方法使用尺度空间方程D(x,y,σ)的泰勒二阶展开式,将样本点作为原点:

公式(2)

其中D及其偏导数为样本点的估值,\mathrm{x}=(x,y,\sigma)^\mathrm{T}是该点的偏移量。将上式对\mathrm{x}微分后设为0,便可求得极值点\hat{\mathrm{x}}:

公式(3)

正如Brown所建议的,D的Hessian和导数可以用邻近采样点的差分来近似。如果\hat{\mathrm{x}}在任一维度大于0.5,这意味着极值更接近另一个采样点。在这种情况下,使用插值点代替样本点。

函数极值点D(\hat{\mathrm{x}})对于提出低对比度的不稳定候选关键点是很有用的。通过将公式(3)带入(2)便可求得D(\hat{\mathrm{x}})=D+\frac{1}{2}\frac{\partial D^\mathrm{T}}{\partial \mathrm{x}}\hat{\mathrm{x}}。本文中将\lvert D(\hat{\mathrm{x}})\rvert小于0.03的候选关键点剔除(将图像像素归一化到[0,1])。Figure 5.展示了这一策略剔除候选关键点的效果,其中Figure 5. (a)是原始图像;Figure 5. (b)使用DoG检测到的最大值和最小值点,共832个候选关键点;Figure 5. (c)使用0.03剔除后的关键点,共729个。

SIFT: Distinctive Image Features from Scale-Invariant Keypoints 笔记_第5张图片 Figure 5.

2.1、消除边缘响应:

为了关键点的稳定性,仅基于低对比度剔除还不够。DoG在边缘具有很强的响应(也就是对于检测边缘上的点很敏感),即使边缘定位不准确或受到存在少量噪声。因此需要剔除有高度边缘响应但位置不符合需求的关键点。

使用DoG检测到的一些候选关键点,在跨越边缘的方向具有较大的主曲率,而在垂直边缘的方向具有较小的主曲率,需要剔除两个方向上主曲率差别较大的点。主曲率可以通过一个2×2的Hessian矩阵\textbf{\mathrm{H}}求得:

                                                                         \textbf{\mathrm{H}}=\begin{bmatrix} D_{xx} & D_{xy} \\ D_{xy} & D_{yy} \end{bmatrix}

求导通过邻近点的差分来近似。\textbf{\mathrm{H}}的特征值与D主曲率的比例相同,令\alpha\beta分别为\textbf{\mathrm{H}}的最大和最小的特征值,使用\textbf{\mathrm{H}}的迹获取两个特征值之和:\mathrm{Tr}(\textbf{\mathrm{H}})=D_{xx}+D_{yy}=\alpha+\beta,使用\textbf{\mathrm{H}}的行列式获取两个特征值之积:\mathrm{Det}(\textbf{\mathrm{H}})=D_{xx}D_{yy}-(D_{xy})^2=\alpha\beta,如果行列式为负,主曲率的符号不同,采样点不是极值,所以行列式均为正。令r为最大特征值与最小特征值的比率,\alpha=r\beta,则:

                                                               \frac{\mathrm{Tr}(\textbf{H})^2}{\mathrm{Det}(\textbf{H})}=\frac{(\alpha+\beta)^2}{\alpha\beta}=\frac{(r\beta+\beta)^2}{r\beta^2}=\frac{(r+1)^2}{r}

上式的值只取决于 \alpha\beta的比率,而非其实际的值。当两特征值取值相同时,(1+r)^2/r值最小,并随着r的增大而增大。因为\textbf{\mathrm{H}}的特征值与D主曲率的比例相同,所以(r+1)^2/r的变化也代表主曲率的变化,当r越大,也就是(1+r)^2/r越大,主曲率的比值就越大,边缘响应越强,这就需要设置r的阈值(本文设为10),剔除相应的候选关键点,也就是当(r+1)^2/r<(10+1)^2/10时。Figure 5. (d)表示在Figure 5. (c)的基础上使用这一策略进一步提出候选关键点的结果,最终剩余536个关键点。

3、关键点方向:

通过为图像中每个关键点分配一个一致的方向,关键点描述子(特征向量)可依据此向量,这样就实现了图像的旋转不变性。梯度值m(x,y)和方向\theta(x,y)基于高斯模糊图像L的差分获取:m(x,y)=\sqrt{(L(x+1,y)-L(x-1,y))^2+(L(x,y+1)-L(x,y-1))^2}\theta(x,y)=tan^{-1}((L(x,y+1)-L(x,y-1))/(L(x+1,y)-L(x-1,y)))。计算出关键点与邻近点的m(x,y)\theta(x,y)后,就可以计算相应的方向直方图,方向直方图包含36个bin,每个bin包含10度,以m(x,y)和高斯滤波器圆形窗口作为权重。

方向直方图的最大值的方向作为此关键点的方向,如果方向直方图中存在不小于最大值80%的值,则在该值的位置创建一个新的关键点。只有15%的关键点会出现这种情况,但对匹配的稳定性至关重要。

4、关键点描述子:

以上步骤为每个关键点分配了位置,尺度和方向。接下来就是为关键点建立一个描述子,该描述子具有高度独立性以适应图像的变化,如改变光照或三维视点。Edelman、Intrator 和 Poggio (1997)基于生物视觉特点提出一种表示方法,本文基于此提出一种更加鲁棒的表示方法。

Figure 6展示了关键点描述子的计算过程。首先,在关键点区域计算梯度值和方向,基于关键点的尺度取选择高斯模糊的级别。为了获取方向的不变性,描述子的坐标和梯度方向旋转到与关键点相关的方向。 

SIFT: Distinctive Image Features from Scale-Invariant Keypoints 笔记_第6张图片 Figure 6.

图中左图展示的是8×8像素区域,每个子区域为4×4像素,每个子区域分配8个方向,也就是图中右图2×2子区域。而本文的实际设定是采用以关键点为中心的16×16像素区域,也就是4×4子区域。所以最终得到4×4×8=128维的关键点描述子。

参考:

1、SIFT讲解:https://blog.csdn.net/zddblog/article/details/7521424

2、LoG:https://www.pianshen.com/article/6839339883/

 

 

 

 

 

 

你可能感兴趣的:(计算机视觉,-----计算机视觉)