【SIFT介绍】Scale-Invariant Feature Transform——尺度不变特征变换(四)


【SIFT介绍】Scale-Invariant Feature Transform——尺度不变特征变换(四)


简介

许多实际应用需要在一张或多张图像中定位参考位置,例如图像对齐、去除畸变、物体跟踪、3D重建等。我们已经看到,角点可以相当可靠地定位,并且不依赖于方向。然而,典型的角点检测器仅提供每个候选点的位置和强度,它们不提供任何有关其特征或“身份”的信息,这些信息可以用于匹配。另一个限制是大多数角点检测器仅在特定尺度或分辨率下工作,因为它们基于一组固定的滤波器。

本章介绍了局部特征检测的尺度不变特征变换(SIFT)技术,该技术最初由D. Lowe [152]提出,并自此成为成像行业的“主力”方法。其目标是定位能够鲁棒识别的图像特征,以便在多幅图像和图像序列中进行匹配,以及在不同视角条件下进行物体识别。SIFT采用了“尺度空间”的概念[151],在多个尺度层次或图像分辨率下捕捉特征,这不仅增加了可用特征的数量,还使得该方法对尺度变化具有高度的容忍度。这使得在例如物体向相机移动并因此连续改变其尺度的情况下跟踪特征成为可能,或将使用不同变焦设置拍摄的图像拼接在一起。

通过简化尺度空间计算和特征检测或使用GPU硬件[20, 90, 218],已经实现了SIFT算法的加速变种。

原则上,SIFT的工作方式类似于多尺度角点检测器,具有亚像素定位精度,并为每个候选点附加了旋转不变的特征描述符。这个(通常是128维的)特征描述符总结了对应特征点周围空间邻域中的梯度方向分布,因此可以像“指纹”一样使用。SIFT特征计算涉及的主要步骤如下:

  1. 在拉普拉斯-高斯(LoG)尺度空间中检测极值点,以定位潜在的兴趣点。
  2. 通过拟合连续模型来精确确定位置和尺度,从而对关键点进行优化。
  3. 通过周围图像梯度方向的主导方向为特征点分配方向。
  4. 通过归一化局部梯度直方图来形成特征描述符。

这些步骤都将在本章的其余部分详细描述。

我们在这里如此详细地解释SIFT技术有几个原因。首先,这是迄今为止我们所讨论的最复杂的算法,其各个步骤精心设计并相互依赖,涉及众多需要考虑的参数。因此,深入理解其内部工作原理和局限性对于成功使用以及在结果不如预期时分析问题非常重要。


4. SIFT算法总结

本节包含一组算法,总结了本章前几节中描述的SIFT特征提取过程。

算法25.3展示了顶级过程GetSiftFeatures( I I I),该过程返回给定图像 I I I的一系列SIFT特征描述符。算法25.3的其余部分描述了DOG尺度空间中的极值关键点检测。关键点位置的精炼在算法25.4中涵盖。算法25.5包含用于邻域操作、检测局部极值以及计算3D中的梯度和Hessian矩阵的过程。算法25.6涵盖了基于在算法25.7中计算的方向直方图,在给定关键点位置找到主方向的相关操作。最终的SIFT描述符的形成在算法25.8中描述,该算法基于算法25.925.10中定义的过程。整个这些算法中使用的全局常量列在表25.5中,以及在相关源代码中的相应Java标识符(见第25.7节)。
在这里插入图片描述

尺度空间参数

符号Java标识符描述
QQ3每个倍频程的尺度步数(层数)
PP4尺度空间倍频程数
σ s \sigma_s σssigma_s0.5采样尺度(输入图像的名义平滑)
σ 0 \sigma_0 σ0sigma_01.60层的基尺度(基础平滑)

关键点检测

符号Java标识符描述
n orient n_{\text{orient}} norientn_Orient36用于计算主要关键点方向的方向箱数量(角度分辨率)
n refine n_{\text{refine}} nrefinen_Refine5重新定位关键点的最大迭代次数
n smooth n_{\text{smooth}} nsmoothn_Smooth2应用于方向直方图的平滑迭代次数
ρ max \rho_{\text{max}} ρmaxrho_Max10.0主曲率的最大比率(3,…, 10)
t domor t_{\text{domor}} tdomort_DomOr0.8选择主方向的方向直方图中的最小值(相对于最大值条目)
t extrm t_{\text{extrm}} textrmt_Extrm0.0用于极值检测的相对于任何邻居的最小差异
t mag t_{\text{mag}} tmagt_Mag0.01初始关键点候选的最小DoG幅度
t peak t_{\text{peak}} tpeakt_Peak0.01插值峰值的最小DoG幅度

特征描述符

符号Java标识符描述
n spat n_{\text{spat}} nspatn_Spat4每个x/y轴上的空间描述符箱数
n angl n_{\text{angl}} nangln_Angl16角度描述符箱数
s d s_d sds_Desc10.0描述符的空间大小因子(相对于特征尺度)
s fscale s_{\text{fscale}} sfscales_Fscale512.0将归一化特征值转换为[0, 255]字节值的比例因子
t fclip t_{\text{fclip}} tfclipt_Fclip0.2截取归一化特征向量元素的最大值

特征匹配

符号Java标识符描述
ρ max \rho_{\text{max}} ρmaxrho_ax0.8最佳和次佳匹配特征距离的最大比率

表25.5
SIFT算法(算法25.3–25.11)中使用的预定义常量。

5. 匹配SIFT特征

大多数SIFT特征的应用旨在定位同一场景中两张或更多图像中的对应兴趣点,例如,用于匹配立体对、全景拼接或特征跟踪。其他应用如自定位或对象识别可能会使用大型模型描述符数据库,任务是将这些描述符与在新图像或视频序列中检测到的SIFT特征进行匹配。所有这些应用都需要可靠且高效地比较可能大量的SIFT特征对。

5.1 特征距离与匹配质量

在典型情况下,从一对输入图像 I a I_a Ia I b I_b Ib中独立提取两组SIFT特征 S ( a ) S^{(a)} S(a) S ( b ) S^{(b)} S(b),即

S ( a ) = ( s 1 ( a ) , s 2 ( a ) , … , s N a ( a ) ) 和 S ( b ) = ( s 1 ( b ) , s 2 ( b ) , … , s N b ( b ) ) S^{(a)} = (s^{(a)}_1, s^{(a)}_2, \ldots, s^{(a)}_{N_a}) \quad \text{和} \quad S^{(b)} = (s^{(b)}_1, s^{(b)}_2, \ldots, s^{(b)}_{N_b}) S(a)=(s1(a),s2(a),,sNa(a))S(b)=(s1(b),s2(b),,sNb(b))

目标是找到两组特征中的匹配描述符。给定描述符对 s i = ( x i , y i , σ i , θ i , f i ) s_i = (x_i, y_i, \sigma_i, \theta_i, f_i) si=(xi,yi,σi,θi,fi) s j = ( x j , y j , σ j , θ j , f j ) s_j = (x_j, y_j, \sigma_j, \theta_j, f_j) sj=(xj,yj,σj,θj,fj)之间的相似性由对应特征向量 f i f_i fi f j f_j fj之间的距离度量,即

dist ( s i , s j ) : = ∥ f i − f j ∥ , (25.101) \text{dist}(s_i, s_j) := \| f_i - f_j \|, \tag{25.101} dist(si,sj):=fifj,(25.101)

其中 ∥ ⋅ ∥ \| \cdot \| 表示适当的范数(通常是欧几里得范数,其他替代方法将在后文讨论)。

需要注意的是,这种距离是在一个高维(通常为128维)向量空间中测量的,该空间仅稀疏地分布。由于给定描述符总有一个最佳匹配对,即使目标集中不包含正确的特征,也可能在无关特征之间出现匹配。这在使用特征匹配来确定两幅图像是否显示任何对应关系时尤为关键。

显然,显著的匹配应表现出较小的特征距离,但在实践中,设定一个固定的可接受特征距离限制是不适当的,因为某些描述符比其他描述符更具辨别力。文献[153]中提出的解决方案是将最佳特征匹配的距离与次佳匹配的距离进行比较。对于给定参考描述符 s r ∈ S ( a ) s_r \in S^{(a)} srS(a),最佳匹配定义为在多维特征空间中与 s r s_r sr距离最小的描述符 s 1 ∈ S ( b ) s_1 \in S^{(b)} s1S(b),即

s 1 = arg ⁡ min ⁡ s j ∈ S ( b ) dist ( s r , s j ) , (25.102) s_1 = \arg \min_{s_j \in S^{(b)}} \text{dist}(s_r, s_j), \tag{25.102} s1=argsjS(b)mindist(sr,sj),(25.102)

主要距离为 d r , 1 = dist ( s r , s 1 ) d_{r,1} = \text{dist}(s_r, s_1) dr,1=dist(sr,s1)。类似地,次佳匹配描述符为

s 2 = arg ⁡ min ⁡ s j ∈ S ( b ) , s j ≠ s 1 dist ( s r , s j ) , (25.103) s_2 = \arg \min_{s_j \in S^{(b)}, s_j \neq s1} \text{dist}(s_r, s_j), \tag{25.103} s2=argsjS(b),sj=s1mindist(sr,sj),(25.103)

对应的距离为 d r , 2 = dist ( s r , s 2 ) d_{r,2} = \text{dist}(s_r, s_2) dr,2=dist(sr,s2),且 d r , 1 ≤ d r , 2 d_{r,1} \leq d_{r,2} dr,1dr,2

可靠的匹配预计与主要特征 s 1 s_1 s1的距离明显小于与目标集中任何其他特征的距离。另一方面,在弱或模糊匹配的情况下,其他匹配可能存在于与 d r , 1 d_{r,1} dr,1相似的距离,包括次佳匹配 s 2 s_2 s2。因此,通过比较最佳和次佳距离,可以获得关于错误匹配可能性的信息。为此,我们定义特征距离比率

ρ match ( s r , s 1 , s 2 ) : = d r , 1 d r , 2 = dist ( s r , s 1 ) dist ( s r , s 2 ) , (25.104) \rho_{\text{match}}(s_r, s_1, s_2) := \frac{d_{r,1}}{d_{r,2}} = \frac{\text{dist}(s_r, s_1)}{\text{dist}(s_r, s_2)}, \tag{25.104} ρmatch(sr,s1,s2):=dr,2dr,1=dist(sr,s2)dist(sr,s1),(25.104)

其中 ρ match ∈ [ 0 , 1 ] \rho_{\text{match}} \in [0, 1] ρmatch[0,1]。如果 s r s_r sr与主要特征 s 1 s_1 s1之间的距离相对于次要距离 d r , 2 d_{r,2} dr,2较小,则 ρ match \rho_{\text{match}} ρmatch的值也较小。因此, ρ match \rho_{\text{match}} ρmatch的较大值表明对应的匹配(在 s r s_r sr s 1 s_1 s1之间)可能较弱或模糊。只有在匹配足够显著的情况下,才接受匹配,例如,通过执行条件

ρ match ( s r , s 1 , s 2 ) ≤ ρ max , (25.105) \rho_{\text{match}}(s_r, s_1, s_2) \leq \rho_{\text{max}}, \tag{25.105} ρmatch(sr,s1,s2)ρmax,(25.105)

其中 ρ max ∈ [ 0 , 1 ] \rho_{\text{max}} \in [0, 1] ρmax[0,1]是预定义的常量(见表25.5)。使用欧几里得距离范数和顺序搜索的完整匹配过程总结在算法25.11中。其他常见的距离测量选项包括 L 1 L_1 L1 L ∞ L_\infty L范数。

5.2 示例

以下示例是使用20世纪初拍摄的立体图像对计算的。从立体图像的每个框架中提取一系列(约1000个)SIFT描述符(用蓝色矩形标记),参数设置相同。通过枚举左右图像中的所有可能的描述符对,计算它们的(欧几里得)距离,并展示从每个框架中检测到的约1000个关键点中获得的前25个最接近的匹配。示例中仅显示最佳的25个匹配。特征匹配按其优良程度编号,即标签“1”表示最佳匹配描述符对(具有最小特征距离)。这些结果的选定细节显示在图25.29中。除非另有说明,所有SIFT参数均设置为默认值(见表25.5)。

虽然文献[153]中建议使用欧几里得( L 2 L_2 L2)范数来测量公式(25.101)中特征向量之间的距离,但文献[130, 181, 227]中还考虑了其他范数,以提高统计稳健性和抗噪性。图25.30分别显示了使用 L 1 L_1 L1 L 2 L_2 L2 L ∞ L_\infty L范数的匹配结果。注意,使用不同距离范数得到的顶级匹配集几乎相同,但最强匹配的排序确实会发生变化。

图25.31展示了基于最佳和次佳匹配距离比率选择特征匹配的有效性(见公式25.102–25.103)。同样,图中显示的是基于最小( L 2 L_2 L2)特征距离的前25个匹配。当最大距离比率 ρ max \rho_{\text{max}} ρmax设置为1.0时,实际上拒绝功能关闭,结果是一些错误或模糊的匹配出现在顶级特征匹配中(图25.31(a))。当 ρ max \rho_{\text{max}} ρmax分别设置为0.8和最终设置为0.5时,错误匹配的数量有效减少(图25.31(b, c))。

6. 高效特征匹配

在特征空间中基于最小距离找到最佳匹配的任务称为“最近邻”搜索。如果进行穷尽搜索,分别计算和比较两个描述符集合 S ( a ) S^{(a)} S(a) S ( b ) S^{(b)} S(b)中所有可能的匹配,需要进行 N a ⋅ N b N_a \cdot N_b NaNb次特征距离计算和比较。对于小型特征集(每个可能最多包含1000个描述符),这种线性(暴力)方法是可接受的,但对于包含可能数百万候选项的大型特征集,如图像数据库索引或机器人自定位的上下文中,这种方法变得极其昂贵。

尽管基于树结构的精确最近邻搜索方法(如k-d树方法)存在,但已证明这些方法在搜索空间维数增加时效果会降低。实际上,在超过大约10维的特征空间中,没有任何算法能够显著优于穷尽(线性)最近邻搜索。SIFT特征向量是128维的,因此在大型描述符集之间进行高效匹配时,精确的最近邻搜索不是一个可行的选择。

文献[21, 153]中的方法放弃了精确的最近邻搜索,转而采用基于[9]中描述的思想的近似解决方案,显著减少了计算量。这种所谓的“最佳箱优先”(best-bin-first)方法使用修改的k-d算法,按与给定特征向量距离最近的顺序搜索相邻的特征空间分区。为了将搜索限制在特征空间的一小部分内,在检查前200个候选项后停止搜索,这大大加快了速度,同时不影响搜索结果,特别是当结合基于主要和次要距离比率的特征选择时(见公式25.104–25.105)。更多细节可见文献[21]。

在高维空间中进行近似最近邻搜索不仅对于实时实际SIFT匹配至关重要,还在许多其他应用中发挥关键作用,并且是各个学科中普遍存在的问题,持续引起研究。多种不同方法的开源实现作为软件库提供。

在这里插入图片描述

算法25.3
SIFT特征提取 (第1部分)。顶层SIFT过程。全局参数: σ s , σ 0 , t m a g , Q , P \sigma_s, \sigma_0, t_{mag}, Q, P σs,σ0,tmag,Q,P(参见表25.5)。

在这里插入图片描述

算法25.4
SIFT特征提取 (第2部分)。位置精细化。全局参数: n r e f i n e , t p e a k , ρ m a x n_{refine}, t_{peak}, \rho_{max} nrefine,tpeak,ρmax(参见表25.5)。

在这里插入图片描述

算法25.5
SIFT特征提取 (第3部分):邻域操作。全局参数: Q , t e x t r m Q, t_{extrm} Q,textrm(参见表25.5)。

在这里插入图片描述

算法25.6
SIFT特征提取 (第4部分):关键点方向分配。全局参数: n s m o o t h , t d o m o r n_{smooth}, t_{domor} nsmooth,tdomor(参见表25.5)。

在这里插入图片描述

算法25.7
SIFT特征提取 (第5部分):从高斯尺度层级计算方向直方图和梯度。全局参数: n o r i e n t n_{orient} norient(参见表25.5)。

在这里插入图片描述

算法25.8
SIFT特征提取 (第6部分):SIFT描述子的计算。全局参数: Q , σ 0 , s d , n s p a t , n a n g l Q, \sigma_0, s_d, n_{spat}, n_{angl} Q,σ0,sd,nspat,nangl(参见表25.5)。

在这里插入图片描述

算法25.9
SIFT特征提取 (第7部分):更新梯度描述子直方图。与连续位置 ( u ~ , v ~ , ϕ ~ ) (\tilde{u}, \tilde{v}, \tilde{\phi}) (u~,v~,ϕ~)相关的量 z z z被累积到3D直方图 h ∇ h_{\nabla} h中( u ~ , v ~ \tilde{u}, \tilde{v} u~,v~是归一化空间坐标, ϕ ~ \tilde{\phi} ϕ~是方向)。通过三线性插值,量 z z z被分布到最多八个相邻的直方图箱中(见图25.26)。注意,方向坐标 ϕ ~ \tilde{\phi} ϕ~因为是圆形的,所以需要特殊处理。全局参数: n s p a t , n a n g l n_{spat}, n_{angl} nspat,nangl(参见表25.5)。

在这里插入图片描述

算法25.10
SIFT特征提取 (第8部分):将方向直方图转换为SIFT特征向量。全局参数: n s p a t , n a n g l , t f c l i p , s f s c a l e n_{spat}, n_{angl}, tf_{clip}, sf_{scale} nspat,nangl,tfclip,sfscale(参见表25.5)。

在这里插入图片描述

算法25.11
SIFT特征匹配,使用欧几里得特征距离和线性搜索。返回的SIFT匹配序列按照对应特征对之间的距离递增排序。函数 D i s t ( s a , s b ) Dist(s_a, s_b) Dist(sa,sb)演示了欧几里得(L2)特征距离的计算,其他选项包括L1和L∞范数。

在这里插入图片描述

图25.28
SIFT特征匹配示例在成对的立体图像上。显示的是使用L2特征距离和 ρ m a x = 0.8 \rho_{max} = 0.8 ρmax=0.8得到的25个最佳匹配。

在这里插入图片描述

图25.29
立体匹配示例(图25.28的放大细节)。

在这里插入图片描述

图25.30
使用不同的距离范数进行特征匹配。L1范数 (a),L2范数 (b),和L∞范数 ©。所有其他参数都设置为默认值(参见表25.5)。

在这里插入图片描述

图25.31
通过限制主要匹配距离和次要匹配距离的比率 ρ m a x \rho_{max} ρmax来拒绝弱或模糊的匹配(参见方程(25.104)–(25.105))。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值