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


1. 多尺度的兴趣点

检测兴趣点的第一步是找到在各种视角条件和不同尺度下可以定位的稳定特征。在SIFT方法中,兴趣点检测基于拉普拉斯-高斯(LoG)滤波器,这些滤波器主要响应被较暗区域包围的明显亮斑,或相反。与流行的角点检测器使用的滤波器不同,LoG滤波器是各向同性的,即对方向不敏感。为了在多个尺度上定位兴趣点,通过递归地使用一系列小高斯滤波器平滑图像来构建输入图像的尺度空间表示。使用相邻尺度层图像之间的差异来近似每个尺度上的LoG滤波器。最后,通过在三维LoG尺度空间中找到局部极大值来选择兴趣点。

1.1 LoG滤波器

在本节中,我们首先概述LoG滤波器和高斯尺度空间的基本构造,然后详细描述SIFT方法中实际实现的参数。

LoG是一个所谓的中心-环绕算子,最强烈地响应孤立的局部强度峰值、边缘和角点样的图像结构。对应的滤波器核基于高斯函数的二阶导数,如图25.1所示的一维情况。宽度为 σ \sigma σ的一维高斯函数定义为:

G σ ( x ) = 1 2 π ⋅ σ ⋅ e − x 2 2 σ 2 (25.1) G_\sigma(x) = \frac{1}{\sqrt{2\pi} \cdot \sigma} \cdot e^{-\frac{x^2}{2\sigma^2}}\tag{25.1} Gσ(x)=2π σ1e2σ2x2(25.1)

它的一阶导数是:

G σ ′ ( x ) = d G σ d x ( x ) = − x 2 π ⋅ σ 3 ⋅ e − x 2 2 σ 2 (25.2) G'_\sigma(x) = \frac{dG_\sigma}{dx}(x) = -\frac{x}{\sqrt{2\pi} \cdot \sigma^3} \cdot e^{-\frac{x^2}{2\sigma^2}}\tag{25.2} Gσ(x)=dxdGσ(x)=2π σ3xe2σ2x2(25.2)

类似地,一维高斯函数的二阶导数为:

G σ ′ ′ ( x ) = d 2 G σ d x 2 ( x ) = x 2 − σ 2 2 π ⋅ σ 5 ⋅ e − x 2 2 σ 2 (25.3) G''_\sigma(x) = \frac{d^2G_\sigma}{dx^2}(x) = \frac{x^2 - \sigma^2}{\sqrt{2\pi} \cdot \sigma^5} \cdot e^{-\frac{x^2}{2\sigma^2}}\tag{25.3} Gσ′′(x)=dx2d2Gσ(x)=2π σ5x2σ2e2σ2x2(25.3)
在这里插入图片描述

图25.1
一维高斯函数 G σ ( x ) G_\sigma(x) Gσ(x) 以及 σ = 1 \sigma = 1 σ=1 时的情况(黑色),其一阶导数 G σ ′ ( x ) G'_\sigma(x) Gσ(x)(绿色)和二阶导数 G σ ′ ′ ( x ) G''_\sigma(x) Gσ′′(x)(蓝色)。

连续二维函数 f ( x , y ) f(x, y) f(x,y)的拉普拉斯算子(记作 ∇ 2 \nabla^2 2)定义为x和y方向的二阶偏导数之和,通常写作:

( ∇ 2 f ) ( x , y ) = ∂ 2 f ∂ x 2 ( x , y ) + ∂ 2 f ∂ y 2 ( x , y ) (25.4) (\nabla^2 f)(x, y) = \frac{\partial^2 f}{\partial x^2}(x, y) + \frac{\partial^2 f}{\partial y^2}(x, y)\tag{25.4} (2f)(x,y)=x22f(x,y)+y22f(x,y)(25.4)

注意,与二维函数的梯度不同,拉普拉斯的结果不是向量而是标量。它的值对坐标系的旋转是不变的,即拉普拉斯算子具有各向同性的重要性质。

通过将拉普拉斯算子应用于旋转对称的二维高斯函数:

G σ ( x , y ) = 1 2 π ⋅ σ 2 ⋅ e − x 2 + y 2 2 σ 2 (25.5) G_\sigma(x, y) = \frac{1}{2\pi \cdot \sigma^2} \cdot e^{-\frac{x^2 + y^2}{2\sigma^2}}\tag{25.5} Gσ(x,y)=2πσ21e2σ2x2+y2(25.5)

在x/y方向具有相同的宽度 σ = σ x = σ y \sigma = \sigma_x = \sigma_y σ=σx=σy(见图25.2(a)),我们得到LoG函数:

L σ ( x , y ) = ( ∇ 2 G σ ) ( x , y ) = ∂ 2 G σ ∂ x 2 ( x , y ) + ∂ 2 G σ ∂ y 2 ( x , y ) = ( x 2 − σ 2 ) 2 π ⋅ σ 6 ⋅ e − x 2 + y 2 2 σ 2 + ( y 2 − σ 2 ) 2 π ⋅ σ 6 ⋅ e − x 2 + y 2 2 σ 2 = 1 π ⋅ σ 4 ⋅ ( x 2 + y 2 − 2 σ 2 2 σ 2 ) ⋅ e − x 2 + y 2 2 σ 2 (25.6) L_\sigma(x, y) = (\nabla^2 G_\sigma)(x, y) = \frac{\partial^2 G_\sigma}{\partial x^2}(x, y) + \frac{\partial^2 G_\sigma}{\partial y^2}(x, y)\\ = \frac{(x^2 - \sigma^2)}{2\pi \cdot \sigma^6} \cdot e^{-\frac{x^2 + y^2}{2\sigma^2}} + \frac{(y^2 - \sigma^2)}{2\pi \cdot \sigma^6} \cdot e^{-\frac{x^2 + y^2}{2\sigma^2}} \\ = \frac{1}{\pi \cdot \sigma^4} \cdot \left( \frac{x^2 + y^2 - 2\sigma^2}{2\sigma^2} \right) \cdot e^{-\frac{x^2 + y^2}{2\sigma^2}}\tag{25.6} Lσ(x,y)=(2Gσ)(x,y)=x22Gσ(x,y)+y22Gσ(x,y)=2πσ6(x2σ2)e2σ2x2+y2+2πσ6(y2σ2)e2σ2x2+y2=πσ41(2σ2x2+y22σ2)e2σ2x2+y2(25.6)

如图25.2(b)所示。方程(25.6)中的连续LoG函数的绝对值积分为:

∫ − ∞ ∞ ∫ − ∞ ∞ ∣ L σ ( x , y ) ∣   d x   d y = 4 σ 2 e (25.7) \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} |L_\sigma(x, y)| \, dx \, dy = \frac{4}{\sigma^2 e}\tag{25.7} Lσ(x,y)dxdy=σ2e4(25.7)

其平均值为零,即:

∫ − ∞ ∞ ∫ − ∞ ∞ L σ ( x , y )   d x   d y = 0 (25.8) \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} L_\sigma(x, y) \, dx \, dy = 0\tag{25.8} Lσ(x,y)dxdy=0(25.8)
在这里插入图片描述

图25.2
二维高斯和LoG。高斯函数 G σ ( x , y ) G_\sigma(x, y) Gσ(x,y),其中 σ = 1 \sigma = 1 σ=1 ( a );对应的LoG函数 L σ ( x , y ) L_\sigma(x, y) Lσ(x,y) ( b ),和反转函数(“墨西哥帽”或“索姆布雷罗”核) − L σ ( x , y ) -L_\sigma(x, y) Lσ(x,y) ( c )。为了说明,所有三个函数在原点处的绝对值均归一化为1。

当用作线性滤波器的核时,LoG对比周围背景较暗且半径约为 σ \sigma σ的圆形斑点最大响应。对比周围背景较亮的斑点通过负的LoG核(即 − L σ -L_\sigma Lσ)过滤得到增强,这通常被称为“墨西哥帽”或“帽子”滤波器(见图25.2)。通过简单地取滤波响应的绝对值,可以同时检测到这两种类型的斑点(见图25.3)。
在这里插入图片描述

图25.3
使用LoG核进行滤波( σ = 3 \sigma = 3 σ=3)。原始图像 (a )。使用LoG核 L σ ( x , y ) L_\sigma(x, y) Lσ(x,y)的线性滤波器对明亮背景中的暗点响应最强( b ),而反转核 − L σ ( x , y ) -L_\sigma(x, y) Lσ(x,y)对黑暗背景中的亮点响应最强( c )。在( b )和( c )中,零值显示为中灰色,负值为黑色,正值为亮色。( d )中( b )或( c )的绝对值结合了来自暗点和亮点的响应。

由于LoG函数基于导数,其幅度强烈依赖于高斯斜率的陡度,这由 σ \sigma σ控制。为了在多个尺度上获得可比幅度的响应,可以定义尺度归一化的LoG核,形式为[151]:

L ^ σ ( x , y ) = σ 2 ⋅ ( ∇ 2 G σ ) ( x , y ) = σ 2 ⋅ L σ ( x , y ) (25.9) \hat{L}_\sigma(x, y) = \sigma^2 \cdot (\nabla^2 G_\sigma)(x, y) = \sigma^2 \cdot L_\sigma(x, y)\tag{25.9} L^σ(x,y)=σ2(2Gσ)(x,y)=σ2Lσ(x,y)(25.9)
= 1 π σ 2 ⋅ ( x 2 + y 2 − 2 σ 2 2 σ 2 ) ⋅ e − x 2 + y 2 2 σ 2 (25.10) = \frac{1}{\pi \sigma^2} \cdot \left( \frac{x^2 + y^2 - 2\sigma^2}{2\sigma^2} \right) \cdot e^{-\frac{x^2 + y^2}{2\sigma^2}}\tag{25.10} =πσ21(2σ2x2+y22σ2)e2σ2x2+y2(25.10)

注意,该函数的积分,

∫ − ∞ ∞ ∫ − ∞ ∞ ∣ L ^ σ ( x , y ) ∣   d x   d y = 4 e (25.11) \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} |\hat{L}_\sigma(x, y)| \, dx \, dy = \frac{4}{e}\tag{25.11} L^σ(x,y)dxdy=e4(25.11)

是常数,因此(与方程(25.7)不同)独立于尺度参数 σ \sigma σ(见图25.4)。
在这里插入图片描述

图25.4
LoG函数的归一化。方程(25.6)中定义的LoG函数 L σ ( x , y ) L_\sigma(x, y) Lσ(x,y)的截面(a);方程(25.10)中定义的尺度归一化的LoG函数(b)。 σ = 1.0 \sigma = 1.0 σ=1.0(黑色), σ = 2 \sigma = \sqrt{2} σ=2 (绿色), σ = 2.0 \sigma = 2.0 σ=2.0(蓝色)。(b)中所有三个函数的绝对值积分均相同,并且不依赖于 σ \sigma σ(见方程(25.11))。

通过两个高斯函数之差(DoG)近似LoG

尽管LoG是“准可分的” [113, 243],因此可以高效地计算,但实现LoG滤波器的最常用方法是通过两个宽度分别为 σ \sigma σ κ σ \kappa\sigma κσ的高斯函数之差(DoG)来近似它,即
L σ ( x , y ) ≈ λ ⋅ [ ( G κ σ ( x , y ) − G σ ( x , y ) ] = λ D σ , κ ( x , y ) (25.12) L_\sigma(x, y) \approx \lambda \cdot[ (G_{\kappa\sigma}(x, y) - G_\sigma(x, y)] = \lambda D_{\sigma, \kappa}(x, y)\tag{25.12} Lσ(x,y)λ[(Gκσ(x,y)Gσ(x,y)]=λDσ,κ(x,y)(25.12)
其中参数 κ > 1 \kappa > 1 κ>1指定了两个高斯函数的相对宽度(定义在方程(25.5)中)。适当地缩放(通过某个因子 λ \lambda λ,见方程(25.13)),DoG函数 D σ , κ ( x , y ) D_{\sigma, \kappa}(x, y) Dσ,κ(x,y)可以任意精度地近似方程(25.6)中的LoG函数 L σ ( x , y ) L_\sigma(x, y) Lσ(x,y),当 κ \kappa κ接近1时(当然, κ = 1 \kappa = 1 κ=1被排除)。实际上, κ \kappa κ的值在1.1到1.3范围内即可得到足够精确的结果。作为示例,图25.5显示了 κ = 2 1 / 3 ≈ 1.25992 \kappa = 2^{1/3} \approx 1.25992 κ=21/31.25992的二维DoG函数的截面。
在这里插入图片描述

图25.5
通过DoG近似LoG。两个原始的高斯函数, G a ( x ) G_a(x) Ga(x),其标准差 σ a = 1.0 \sigma_a = 1.0 σa=1.0,和 G b ( x ) G_b(x) Gb(x),其标准差 σ b = σ a ⋅ κ = κ = 2 1 / 3 \sigma_b = \sigma_a \cdot \kappa = \kappa = 2^{1/3} σb=σaκ=κ=21/3,分别由绿色和蓝色曲线表示(a)。红色曲线在(a)中表示当 y = 0 y = 0 y=0时的DoG函数 D σ , κ ( x , y ) = G b ( x , y ) − G a ( x , y ) D_{\sigma, \kappa}(x, y) = G_b(x, y) - G_a(x, y) Dσ,κ(x,y)=Gb(x,y)Ga(x,y)。在(b)中,虚线表示参考的LoG函数,与DoG(红色)进行比较。DoG经过缩放以匹配LoG函数的幅度。

方程(25.12)中的因子 λ ∈ R \lambda \in \mathbb{R} λR控制DoG函数的幅度;它取决于比率 κ \kappa κ和尺度参数 σ \sigma σ。为了在原点匹配原始LoG(方程(25.6))的幅度,必须将其设置为
λ = 2 κ 2 σ 2 ⋅ ( κ 2 − 1 ) . (25.13) \lambda = \frac{2\kappa^2}{\sigma^2 \cdot (\kappa^2 - 1)}. \tag{25.13} λ=σ2(κ21)2κ2.(25.13)
同样,尺度归一化的LoG L ^ σ \hat{L}_\sigma L^σ(方程(25.10))可以通过DoG函数 D σ , κ D_{\sigma, \kappa} Dσ,κ(方程(25.12))近似为
L ^ σ ( x , y ) = σ 2 L σ ( x , y ) ≈ σ 2 ⋅ λ ⏟ λ ^ ⋅ D σ , κ ( x , y ) = 2 κ 2 κ 2 − 1 ⋅ D σ , κ ( x , y ) , (25.14) \hat{L}_\sigma(x, y) = \sigma^2 L_\sigma(x, y)\\ \approx \underbrace{\sigma^2 \cdot \lambda}_{\hat{\lambda}} \cdot D_{\sigma, \kappa}(x, y) = \frac{2\kappa^2}{\kappa^2 - 1} \cdot D_{\sigma, \kappa}(x, y), \tag{25.14} L^σ(x,y)=σ2Lσ(x,y)λ^ σ2λDσ,κ(x,y)=κ212κ2Dσ,κ(x,y),(25.14)
其中因子 λ ^ = σ 2 ⋅ λ = 2 κ 2 κ 2 − 1 \hat{\lambda} = \sigma^2 \cdot \lambda = \frac{2\kappa^2}{\kappa^2 - 1} λ^=σ2λ=κ212κ2是常数,因此与尺度 σ \sigma σ无关。因此,如[153]中指出的那样,具有固定尺度增量 κ \kappa κ的DoG已经近似了尺度归一化的LoG至一个常数因子,因此无需额外的缩放即可比较在不同尺度上获得的DoG响应的幅度。

在SIFT方法中,DoG被用作多尺度下(尺度归一化的)LoG滤波器的近似,这是基于输入图像的高斯尺度空间表示,接下来将进行描述。

1.2 高斯尺度空间

尺度空间的概念[150]源于观察到现实世界的场景在大量不同大小的范围内表现出相关的图像特征,并且根据特定的观察情况,在不同的尺度上会有不同的表现。为了关联不同且未知大小的图像结构,同时在不同的尺度水平上表示图像是有用的。图像的尺度空间表示将尺度添加为第三个坐标(除了两个图像坐标之外)。因此,尺度空间是一个三维结构,不仅可以在x/y位置上导航,还可以在不同的尺度水平上导航。

在这里插入图片描述

表25.1
本章使用的尺度空间相关符号。

连续高斯尺度空间

在特定尺度水平下图像的尺度空间表示是通过一个参数化到所需尺度的核对图像进行滤波得到的。由于其独特的性质[11, 71],最常见的尺度空间类型是基于高斯核的连续滤波。从概念上讲,给定一个连续的二维函数 F ( x , y ) F(x, y) F(x,y),其高斯尺度空间表示是一个三维函数
G ( x , y , σ ) = ( F ∗ H G , σ ) ( x , y ) , (25.15) \mathcal G(x, y, \sigma) = (F \ast H^{G,\sigma})(x, y), \tag{25.15} G(x,y,σ)=(FHG,σ)(x,y),(25.15)
其中 H G , σ ≡ G σ ( x , y ) H^{G,\sigma} \equiv G_\sigma(x, y) HG,σGσ(x,y)是一个二维高斯核(见方程(25.5)),单位积分, ∗ \ast 表示在 x , y x, y x,y上的线性卷积。注意, σ ≥ 0 \sigma \geq 0 σ0既作为连续的尺度参数,也作为对应的高斯滤波核的宽度。

一个完全连续的高斯尺度空间 G ( x , y , σ ) \mathcal G(x, y, \sigma) G(x,y,σ)覆盖了一个三维体积,并在不同的尺度 σ \sigma σ下表示原始函数 F ( x , y ) F(x, y) F(x,y)。当 σ = 0 \sigma = 0 σ=0时,高斯核 H G , 0 H^{G,0} HG,0宽度为零,使其等同于冲激或狄拉克函数 δ ( x , y ) \delta(x, y) δ(x,y)。这就是线性卷积的中性元素,即
G ( x , y , 0 ) = ( F ∗ H G , 0 ) ( x , y ) = ( F ∗ δ ) ( x , y ) = F ( x , y ) . (25.16) \mathcal G(x, y, 0) = (F \ast H^{G,0})(x, y) = (F \ast \delta)(x, y) = F(x, y). \tag{25.16} G(x,y,0)=(FHG,0)(x,y)=(Fδ)(x,y)=F(x,y).(25.16)
因此,高斯尺度空间的基准层 G ( x , y , 0 ) G(x, y, 0) G(x,y,0)与输入函数 F ( x , y ) F(x, y) F(x,y)相同。通常(当 σ > 0 \sigma > 0 σ>0时),高斯核 H G , σ H_{G,\sigma} HG,σ作为一个低通滤波器,其截止频率与 1 / σ 1/\sigma 1/σ成正比(见附录E.3节),原始“信号” F ( x , y ) F(x, y) F(x,y)的最大频率(或带宽)可能是无限的。

离散高斯尺度空间

对于离散输入函数 I ( u , v ) I(u, v) I(u,v),情况有所不同,其带宽被隐式限制为采样频率的一半,这是采样定理所要求的,以避免混叠。因此,在离散情况下,高斯尺度空间的最低层 G ( x , y , 0 ) \mathcal G(x, y, 0) G(x,y,0)是不可访问的!为了模拟采样过程的隐式带宽限制,假定离散输入图像 I ( u , v ) I(u, v) I(u,v)已经用宽度 σ s ≥ 0.5 \sigma_s \geq 0.5 σs0.5的高斯核(相对于基础的连续信号)进行预滤波,即
G ( u , v , σ s ) ≡ I ( u , v ) . (25.17) \mathcal G(u, v, \sigma_s) \equiv I(u, v). \tag{25.17} G(u,v,σs)I(u,v).(25.17)
因此,离散输入图像 I ( u , v ) I(u, v) I(u,v)隐式地位于高斯尺度空间的某个初始层 σ s \sigma_s σs,并且 σ < σ s \sigma<\sigma_s σ<σs的较低层次是不可用的。

高斯尺度空间的任何较高层 σ h > σ s \sigma_h > \sigma_s σh>σs可以通过用高斯核 H G , σ ˉ H_{G,\bar{\sigma}} HG,σˉ对原始图像 I ( u , v ) I(u, v) I(u,v)进行滤波得到,即
G ( u , v , σ h ) = ( I ∗ H G , σ ˉ ) ( u , v ) , with σ ˉ = σ h 2 − σ s 2 . (25.18) \mathcal G(u, v, \sigma_h) = (I \ast H^{G,\bar{\sigma}})(u, v), \quad \text{with} \quad \bar{\sigma} = \sqrt{\sigma_h^2 - \sigma_s^2}. \tag{25.18} G(u,v,σh)=(IHG,σˉ)(u,v),withσˉ=σh2σs2 .(25.18)
这是因为依次应用两个宽度为 σ 1 \sigma_1 σ1 σ 2 \sigma_2 σ2的高斯滤波器等效于用宽度为 σ 1 , 2 \sigma_{1,2} σ1,2的单个高斯核进行卷积,即
( I ∗ H G , σ 1 ) ∗ H G , σ 2 ≡ I ∗ H G , σ 1 , 2 , (25.19) (I \ast H^{G,\sigma_1}) \ast H^{G,\sigma_2} \equiv I \ast H^{G,\sigma_{1,2}}, \tag{25.19} (IHG,σ1)HG,σ2IHG,σ1,2,(25.19)
其中 σ 1 , 2 = σ 1 2 + σ 2 2 \sigma_{1,2} = \sqrt{\sigma_1^2 + \sigma_2^2} σ1,2=σ12+σ22 。我们定义图像 I I I的离散高斯尺度空间表示为一个包含M张图像的向量,每个尺度水平对应一张图像:
G = ( G 0 , G 1 , . . . , G M − 1 ) . (25.20) \mathsf G = (\mathsf G_0,\mathsf G_1,..., \mathsf G_{M-1}). \tag{25.20} G=(G0,G1,...,GM1).(25.20)
每个层次 G m \mathsf G_m Gm都有其绝对尺度 σ m > 0 \sigma_m > 0 σm>0,每个层次 G m G_m Gm表示原始图像的模糊版本,即在方程(25.15)中引入的符号中
G m ( u , v ) ≡ G ( u , v , σ m ) 。 \mathsf G_m(u, v) \equiv \mathcal G(u, v, \sigma_m)。 Gm(u,v)G(u,v,σm)
相邻尺度水平之间的尺度比率
Δ σ = σ m + 1 σ m , (25.21) \Delta _\sigma = \frac{\sigma_{m+1}}{\sigma_m}, \tag{25.21} Δσ=σmσm+1,(25.21)
是预定义且恒定的。通常, Δ σ \Delta _\sigma Δσ的规定是使得绝对尺度 σ m \sigma_m σm在给定的层数Q(称为一个八度)中加倍。在这种情况下,结果的尺度增量为 Δ σ = 2 1 / Q \Delta _\sigma = 2^{1/Q} Δσ=21/Q,通常Q的取值为3到6。

此外,初始层 G 0 \mathsf G_0 G0的基础尺度 σ 0 > σ s \sigma_0 > \sigma_s σ0>σs被指定,其中 σ s \sigma_s σs表示采样过程隐含的离散图像的平滑度,如前所述。基于实证结果,[153]建议使用基础尺度 σ 0 = 1.6 \sigma_0 = 1.6 σ0=1.6以实现可靠的兴趣点检测。给定Q和基础尺度 σ 0 \sigma_0 σ0,任意尺度空间层 G m \mathsf G_m Gm的绝对尺度为
σ m = σ 0 ⋅ Δ σ m = σ 0 ⋅ 2 m / Q , for m = 0 , . . . , M − 1. (25.22) \sigma_m = \sigma_0 \cdot \Delta _\sigma^m = \sigma_0 \cdot 2^{m/Q}, \quad \text{for} \quad m = 0, ..., M - 1. \tag{25.22} σm=σ0Δσm=σ02m/Q,form=0,...,M1.(25.22)
如方程(25.18)所示,每个尺度层 G m G_m Gm可以通过滤波操作直接从离散输入图像I得到:
G m = I ∗ H G , σ ˉ m , (25.23) \mathsf G_m = I \ast H^{G,\bar{\sigma}_m}, \tag{25.23} Gm=IHG,σˉm,(25.23)
其中,高斯核 H G , σ ˉ m H^{G,\bar{\sigma}_m} HG,σˉm的宽度为
σ ˉ m = σ m 2 − σ s 2 = σ 0 2 ⋅ 2 2 m / Q − σ s 2 。 (25.24) \bar{\sigma}_m = \sqrt{\sigma_m^2 - \sigma_s^2} = \sqrt{\sigma_0^2 \cdot 2^{2m/Q} - \sigma_s^2}。 \tag{25.24} σˉm=σm2σs2 =σ0222m/Qσs2 (25.24)
特别地,初始尺度空间层 G 0 \mathsf G_0 G0(具有指定的基础尺度 σ 0 \sigma_0 σ0)通过使用宽度为
σ ˉ 0 = σ 0 2 − σ s 2 。 (25.25) \bar{\sigma}_0 = \sqrt{\sigma_0^2 - \sigma_s^2}。 \tag{25.25} σˉ0=σ02σs2 (25.25)
的高斯核对离散输入图像 I I I进行线性滤波得到。

或者,使用关系 σ m = σ m − 1 ⋅ Δ σ \sigma_m = \sigma_{m-1} \cdot \Delta _\sigma σm=σm1Δσ(来自方程(25.21)),尺度层次 G 1 , . . . , G M − 1 \mathsf G_1, ..., \mathsf G_{M-1} G1,...,GM1可以递归地从基准层 G 0 \mathsf G_0 G0计算得到,其形式为
G m = G m − 1 ∗ H G , σ m ′ , for m > 0 , \mathsf G_m =\mathsf G_{m-1} \ast H^{G,\sigma_m'}, \quad \text{for} \quad m > 0, Gm=Gm1HG,σm,form>0,
其中,一系列高斯核 H G , σ m ′ H^{G,\sigma_m'} HG,σm的宽度为
σ m ′ = σ m 2 − σ m − 1 2 = σ 0 ⋅ 2 m / Q ⋅ 1 − 1 / Δ σ 2 。 (25.27) \sigma_m' = \sqrt{\sigma_m^2 - \sigma_{m-1}^2} = \sigma_0 \cdot 2^{m/Q} \cdot \sqrt{1 - 1/\Delta _\sigma^2}。 \tag{25.27} σm=σm2σm12 =σ02m/Q11/Δσ2 (25.27)

表25.2列出了在每个八度 Q = 3 Q=3 Q=3层和基础尺度 σ 0 = 1.6 \sigma_0=1.6 σ0=1.6的条件下,跨越6个八度的尺度范围内得到的核宽度。值 σ ˉ m \bar{\sigma}_m σˉm表示从离散输入图像 I I I(假设采样时 σ s = 0.5 \sigma_s=0.5 σs=0.5)计算尺度为 m m m的图像所需的高斯核大小。 σ m ′ \sigma_m' σm是从前一级 m − 1 m-1 m1递归计算第 m m m级所需的高斯核宽度。显然(尽管可能出乎意料),递归滤波所需的核大小( σ m ′ \sigma_m' σm)与绝对核大小 σ ˉ m \bar{\sigma}_m σˉm的增长速率相同(指数增长)。

在这里插入图片描述

表25.2
计算前6个八度的高斯尺度级别 G m \mathsf G_m Gm所需的滤波器大小。每个八度由 Q = 3 Q=3 Q=3个级别组成,沿尺度坐标以 Δ σ \Delta _\sigma Δσ为增量。假设离散输入图像 I I I已预滤波至 σ s \sigma_s σs。列 σ m \sigma_m σm表示第 m m m级的绝对尺度,从指定的基础偏移尺度 σ 0 \sigma_0 σ0开始。 σ ˉ m \bar{\sigma}_m σˉm是从输入图像 I I I直接计算第 G m G_m Gm级所需的高斯滤波器宽度。值 σ m ′ \sigma_m' σm是从前一级 G m − 1 \mathsf G_{m-1} Gm1计算第 G m \mathsf G_m Gm级所需的高斯核宽度。请注意,递归滤波所需的高斯核宽度( σ m ′ \sigma_m' σm)以与直接滤波器大小( σ ˉ m \bar{\sigma}_m σˉm)相同的指数速率增长。

例如,在尺度级别 m = 16 m=16 m=16和绝对尺度 σ 16 = 1.6 ⋅ 2 16 / 3 ≈ 64.5 \sigma_{16} = 1.6 \cdot 2^{16/3} \approx 64.5 σ16=1.6216/364.5时,从输入图像 I I I直接计算 G 16 G_{16} G16所需的高斯滤波器的宽度为 σ ˉ 16 = σ 16 2 − σ s 2 = 64.508 0 2 − 0. 5 2 ≈ 64.5 \bar{\sigma}_{16} = \sqrt{\sigma_{16}^2 - \sigma_s^2} = \sqrt{64.5080^2 - 0.5^2} \approx 64.5 σˉ16=σ162σs2 =64.508020.52 64.5,而从前一个尺度级别递增模糊所需的滤波器的宽度为 σ 16 ′ = σ 16 2 − σ 15 2 = 64.508 0 2 − 51.197 6 2 ≈ 39.2 \sigma_{16}' = \sqrt{\sigma_{16}^2 - \sigma_{15}^2} = \sqrt{64.5080^2 - 51.1976^2} \approx 39.2 σ16=σ162σ152 =64.5080251.19762 39.2。由于递归滤波也往往会积累数值误差,这种方法通常并不提供显著优势。幸运的是,如第1.4节所述,通过在每个八度之后进行空间子采样,可以保持高斯核的增长较小。

使用表25.2中的相同参数构建离散高斯尺度空间的过程在图25.6中进行了说明。同样,输入图像 I I I假定在采样时预滤波至 σ s = 0.5 \sigma_s = 0.5 σs=0.5,且第一层 G 0 \mathsf G_0 G0的绝对尺度设置为 σ 0 = 1.6 \sigma_0 = 1.6 σ0=1.6。连续层之间的尺度比固定为 Δ σ = 2 1 / 3 ≈ 1.25992 \Delta _\sigma = 2^{1/3} \approx 1.25992 Δσ=21/31.25992,即每个八度跨越三个离散尺度层。如图所示,每个尺度层 G m \mathsf G_m Gm可以通过用宽度为 σ ˉ m \bar{\sigma}_m σˉm的高斯滤波器从输入图像 I I I直接计算,或通过用宽度为 σ m ′ \sigma_m' σm的滤波器从前一层递归计算。

在这里插入图片描述

图25.6
高斯尺度空间构建(前四级)。参数与表25.2相同。假设离散输入图像 I I I已预滤波至宽度为 σ s = 0.5 \sigma_s = 0.5 σs=0.5的高斯;初始级别(基础偏移尺度)的尺度设置为 σ 0 = 1.6 \sigma_0 = 1.6 σ0=1.6。离散尺度空间级别 G 0 , G 1 , … \mathsf G_0, \mathsf G_1, \ldots G0,G1,(在绝对尺度 σ 0 , σ 1 , … \sigma_0, \sigma_1, \ldots σ0,σ1,)是通过连续尺度空间的切片。尺度级别可以通过用宽度为 σ ˉ 0 , σ ˉ 1 , … \bar{\sigma}_0, \bar{\sigma}_1, \ldots σˉ0,σˉ1,的高斯核从离散图像 I I I直接滤波计算(蓝色箭头),或者通过递归滤波用 σ 1 ′ , σ 2 ′ , … \sigma_1', \sigma_2', \ldots σ1,σ2,(绿色箭头)计算。

1.3 LoG/DoG 尺度空间

在SIFT方法中,兴趣点检测基于在多个尺度上找到LoG滤波器输出的局部最大值。类似于第1.2节描述的离散高斯尺度空间,可以定义图像 I I I的LoG尺度空间表示为:

L = ( L 0 , L 1 , … , L M − 1 ) , (25.28) \mathsf L = (\mathsf L_0, \mathsf L_1, \ldots, \mathsf L_{M-1}),\tag{25.28} L=(L0,L1,,LM1),(25.28)

其中各级 L m = I ∗ H L , σ m \mathsf L_m = I \ast H^{L, \sigma_m} Lm=IHL,σm H L , σ m ( x , y ) ≡ L ^ σ m ( x , y ) H^{L, \sigma_m}(x, y) \equiv \hat{L}_{\sigma_m}(x, y) HL,σm(x,y)L^σm(x,y)是宽度为 σ m \sigma_m σm的尺度归一化LoG核(见方程(25.10))。

如方程(25.12)所示,LoG核可以通过宽度相差一定比例 κ \kappa κ的两个高斯差值来近似。由于高斯尺度空间中相邻的尺度层也由固定的尺度比隔开,因此构建多尺度DoG表示是直接的:

D = ( D 0 , D 1 , … , D M − 2 ) , (25.29) \mathsf D = (\mathsf D_0, \mathsf D_1, \ldots,\mathsf D_{M-2}),\tag{25.29} D=(D0,D1,,DM2),(25.29)

从现有的高斯尺度空间 G = ( G 0 , G 1 , … , G M − 1 ) \mathsf G = (\mathsf G_0, \mathsf G_1, \ldots, \mathsf G_{M-1}) G=(G0,G1,,GM1)构建。DoG尺度空间中的各级别定义为:

D m = λ ^ ⋅ ( G m + 1 − G m ) ≈ L m , (25.30) \mathsf D_m = \hat{\lambda} \cdot (\mathsf G_{m+1} - \mathsf G_m) \approx\mathsf L_m,\tag{25.30} Dm=λ^(Gm+1Gm)Lm,(25.30)

其中 m = 0 , … , M − 2 m = 0, \ldots, M-2 m=0,,M2。常数因子 λ ^ \hat{\lambda} λ^(定义见方程(25.14))在上述表达式中可以省略,因为相关高斯的相对宽度
κ = Δ σ = σ m + 1 σ m = 2 1 / Q , (25.31) \kappa = \Delta _\sigma = \frac{\sigma_{m+1}}{\sigma_m} = 2^{1/Q},\tag{25.31} κ=Δσ=σmσm+1=21/Q(25.31)
只是连续尺度空间级别之间的固定尺度比 Δ σ \Delta _\sigma Δσ

注意,DoG近似不需要任何附加的归一化来近似尺度归一化的LoG表示(见方程25.10和25.14)。从离散高斯尺度空间计算DoG尺度空间的过程在图25.7中说明,使用的参数与表25.2和图25.6中的相同。

在这里插入图片描述

图25.7
DoG尺度空间构建。高斯尺度空间(见图25.6)的连续级别 G 0 , G 1 , … \mathsf G_0, \mathsf G_1, \ldots G0,G1,的差值用于近似LoG尺度空间。每个DoG级别 D m \mathsf D_m Dm通过高斯级别 G m + 1 \mathsf G_{m+1} Gm+1 G m \mathsf G_m Gm之间的逐点差值 G m + 1 − G m \mathsf G_{m+1} - \mathsf G_m Gm+1Gm计算。 D 0 , … , D 3 \mathsf D_0, \ldots, \mathsf D_3 D0,,D3中的值进行尺度归一化(见方程(25.14))并映射到统一的强度范围以便查看。

1.4 层次尺度空间

尽管2D高斯滤波核可以分解为1D核,所需滤波器的大小随着尺度的增加迅速增长,无论是使用直接方法还是递归方法(如表25.2所示)。然而,每次高斯滤波操作都会使信号的带宽与核的宽度成反比减少(见附录E.3)。如果图像尺寸在所有尺度上保持不变,图像在更高的尺度级别上会变得越来越过采样。换句话说,在高斯尺度空间中,可以随着尺度的增加减少采样率而不会丢失相关的信号信息。

八度和子采样(抽取)

特别地,尺度加倍会使带宽减半,即,尺度级别 2 σ 2\sigma 2σ的信号只有尺度级别 σ \sigma σ信号的一半带宽。因此,在高斯尺度空间表示中,可以在每个八度后将图像下采样到一半的采样率而不会丢失信息。这表明了一种非常有效的、类似金字塔的方法来构建DoG尺度空间,如图25.8所示。

在这里插入图片描述

图25.8
层次高斯尺度空间。每个八度覆盖 Q = 3 Q = 3 Q=3个尺度步长。每个八度 p > 0 p > 0 p>0的基本级别 G p , 0 G_{p,0} Gp,0通过对下一个较低八度的顶级 G p − 1 , 3 G_{p-1,3} Gp1,3进行2:1子采样获得。在八度之间的过渡中,分辨率(图像大小)在x和y方向上减半。八度级别 G p , q G_{p,q} Gp,q的绝对尺度是 σ m \sigma_m σm,其中 m = Q p + q m = Qp + q m=Qp+q。在每个八度内,使用相同的一组高斯核( σ ~ 1 , σ ~ 2 , σ ~ 3 \tilde{\sigma}_1, \tilde{\sigma}_2, \tilde{\sigma}_3 σ~1,σ~2,σ~3)从八度的基本级别 G p , 0 G_{p,0} Gp,0计算后续级别。

在每个八度的开始(底部),图像下采样到一半分辨率,即,新八度中的每个像素在每个空间方向上覆盖前一个八度中的像素的两倍距离。在每个八度内,可以使用相同的小高斯核进行连续滤波,因为它们的相对宽度(相对于原始采样网格)在每个八度也隐含地加倍。为了形式化地描述这些关系,我们使用:

G = ( G 0 , G 1 , … , G P − 1 ) (25.32) \mathbf G = (\mathbf G_0, \mathbf G_1, \ldots, \mathbf G_{P-1}) \tag{25.32} G=(G0,G1,,GP1)(25.32)

来表示一个由 P P P个八度组成的层次高斯尺度空间。每个八度:

G p = ( G p , 0 , G p , 1 , … , G p , Q ) (25.33) \mathbf G_p = (\mathbf G_{p,0}, \mathbf G_{p,1}, \ldots, \mathbf G_{p,Q}) \tag{25.33} Gp=(Gp,0,Gp,1,,Gp,Q)(25.33)

Q + 1 Q+1 Q+1个尺度级别 G p , q \mathbf G_{p,q} Gp,q组成,其中 p ∈ [ 0 , P − 1 ] p \in [0, P-1] p[0,P1]是八度索引, q ∈ [ 0 , Q ] q \in [0, Q] q[0,Q]是包含八度 G p \mathbf G_p Gp内的级别索引。对于绝对尺度,层次高斯尺度空间中的级别 G p , q = G p ( q ) \mathbf G_{p,q} = \mathbf G_p(q) Gp,q=Gp(q)对应于非层次高斯尺度空间中的级别 G m \mathbf G_m Gm(见方程(25.20)),索引为:

m = Q ⋅ p + q . (25.34) m = Q \cdot p + q. \tag{25.34} m=Qp+q.(25.34)

根据方程(25.22),级别 G p , q \mathbf G_{p,q} Gp,q的绝对尺度是:

σ p , q = σ m = σ 0 ⋅ Δ σ m = σ 0 ⋅ 2 m / Q = σ 0 ⋅ 2 ( Q p + q ) / Q = σ 0 ⋅ 2 p + q / Q , (25.35) \sigma_{p,q} = \sigma_m = \sigma_0 \cdot \Delta \sigma^m = \sigma_0 \cdot 2^{m/Q} = \sigma_0 \cdot 2^{(Qp+q)/Q} = \sigma_0 \cdot 2^{p+q/Q}, \tag{25.35} σp,q=σm=σ0Δσm=σ02m/Q=σ02(Qp+q)/Q=σ02p+q/Q,(25.35)

其中 σ 0 = σ 0 , 0 \sigma_0 = \sigma_{0,0} σ0=σ0,0表示预定义的基本尺度偏移量(例如,表25.2中的 σ 0 = 1.6 \sigma_0 = 1.6 σ0=1.6)。特别地,任何八度 G p \mathbf G_p Gp的基本级别 G p , 0 \mathbf G_{p,0} Gp,0的绝对尺度是:

σ p , 0 = σ 0 ⋅ 2 p . (25.36) \sigma_{p,0} = \sigma_0 \cdot 2^p. \tag{25.36} σp,0=σ02p.(25.36)

缩减尺度 σ ˙ p , q \dot{\sigma}_{p,q} σ˙p,q是以八度 G p \mathbf G_p Gp的坐标单位表示的绝对尺度 σ p , q \sigma_{p,q} σp,q(方程(25.35)),即:

σ ˙ p , q = σ ˙ q = σ p , q ⋅ 2 − p = σ 0 ⋅ 2 p + q / Q ⋅ 2 − p = σ 0 ⋅ 2 q / Q . (25.37) \dot{\sigma}_{p,q} = \dot{\sigma}_q = \sigma_{p,q} \cdot 2^{-p} = \sigma_0 \cdot 2^{p+q/Q} \cdot 2^{-p} = \sigma_0 \cdot 2^{q/Q}. \tag{25.37} σ˙p,q=σ˙q=σp,q2p=σ02p+q/Q2p=σ02q/Q.(25.37)

注意,缩减尺度 σ ˙ p , q \dot{\sigma}_{p,q} σ˙p,q与八度索引 p p p无关,因此对于任何级别索引 q q q σ ˙ p , q ≡ σ ˙ q \dot{\sigma}_{p,q} \equiv \dot{\sigma}_q σ˙p,qσ˙q

从八度的基本级别 G p , 0 \mathbf G_{p,0} Gp,0开始,可以通过使用相对较小的高斯核进行滤波计算同一八度中的后续级别。所需核的大小由相应的缩减尺度(方程(25.37))确定,以从八度的基本级别 G p , 0 \mathbf G_{p,0} Gp,0计算尺度级别 G p , q \mathbf G_{p,q} Gp,q,如下所示:

σ ~ p , q = σ ˙ p , q 2 − σ ˙ p , 0 2 = ( σ 0 ⋅ 2 q / Q ) 2 − σ 0 2 = σ 0 ⋅ 2 2 q / Q − 1 (25.38) \tilde{\sigma}_{p,q} = \sqrt{\dot{\sigma}_{p,q}^2 - \dot{\sigma}_{p,0}^2} = \sqrt{(\sigma_0 \cdot 2^{q/Q})^2 - \sigma_0^2} = \sigma_0 \cdot \sqrt{2^{2q/Q} - 1} \tag{25.38} σ~p,q=σ˙p,q2σ˙p,02 =(σ02q/Q)2σ02 =σ022q/Q1 (25.38)

对于 q ≥ 0 q \geq 0 q0,注意 σ ~ q \tilde{\sigma}_q σ~q与八度索引 p p p无关,因此可以在每个八度中使用相同的滤波核。例如,使用 Q = 3 Q = 3 Q=3 σ 0 = 1.6 \sigma_0 = 1.6 σ0=1.6(如表25.2所示),得到的核宽度为:

σ ~ 1 = 1.2263 , σ ~ 2 = 1.9725 , σ ~ 3 = 2.7713. (25.39) \tilde{\sigma}_1 = 1.2263, \quad \tilde{\sigma}_2 = 1.9725, \quad \tilde{\sigma}_3 = 2.7713. \tag{25.39} σ~1=1.2263,σ~2=1.9725,σ~3=2.7713.(25.39)

此外,注意到,不是从相应的基本级别 G p , 0 \mathbf G_{p,0} Gp,0对八度中的所有尺度级别 G p , q \mathbf G_{p,q} Gp,q进行滤波,而是可以从下一级别 G p , q − 1 \mathbf G_{p,q-1} Gp,q1递归计算它们。尽管这种方法需要更小的高斯核(因此更高效),但递归滤波往往会累积数值误差。然而,该方法在尺度空间实现中经常被使用。

八度之间的抽取

对于尺寸为 M × N M \times N M×N的原始图像 I I I,八度之间的每次子采样步骤将图像大小减半,即,对于索引 p ≥ 0 p \geq 0 p0的八度:

M p + 1 × N p + 1 = M p 2 × N p 2 , (25.40) M_{p+1} \times N_{p+1} = \frac{M_p}{2} \times \frac{N_p}{2}, \tag{25.40} Mp+1×Np+1=2Mp×2Np,(25.40)

因此,在八度 G p \mathbf G_p Gp处得到的图像大小为:

M p × N p = M 0 2 p × N 0 2 p . (25.41) M_p \times N_p = \frac{M_0}{2^p} \times \frac{N_0}{2^p}. \tag{25.41} Mp×Np=2pM0×2pN0.(25.41)

每个八度 G p \mathbf G_p Gp(对于 p > 0 p > 0 p>0)的基本级别 G p , 0 \mathbf G_{p,0} Gp,0通过对下一个较低八度 G p − 1 \mathbf G_{p-1} Gp1的顶级 G p − 1 , Q \mathbf G_{p-1,Q} Gp1,Q进行子采样获得:

G p , 0 = Decimate ( G p − 1 , Q ) , (25.42) \mathbf G_{p,0} = \text{Decimate}(\mathbf G_{p-1,Q}), \tag{25.42} Gp,0=Decimate(Gp1,Q),(25.42)

其中 Decimate ( G ) \text{Decimate}(G) Decimate(G)表示2:1子采样操作,即:

G p , 0 ( u , v ) ← G p − 1 , Q ( 2 u , 2 v ) , (25.43) \mathbf G_{p,0}(u, v) \leftarrow \mathbf G_{p-1,Q}(2u, 2v), \tag{25.43} Gp,0(u,v)Gp1,Q(2u,2v),(25.43)

对于每个采样位置 ( u , v ) ∈ [ 0 , M p − 1 ] × [ 0 , N p − 1 ] (u, v) \in [0, M_p - 1] \times [0, N_p - 1] (u,v)[0,Mp1]×[0,Np1]。由于在每个八度中进行的高斯平滑也将带宽减半,因此在子采样之前不需要额外的低通滤波。

构建层次高斯尺度空间的主要步骤总结在算法25.1中。总结来说,输入图像 I I I首先通过使用宽度为 σ ˉ 0 \bar{\sigma}_0 σˉ0的高斯核进行滤波模糊到尺度 σ 0 \sigma_0 σ0。在每个八度 G p \mathbf G_p Gp内,尺度级别 G p , q \mathbf G_{p,q} Gp,q通过使用宽度为 σ ~ q \tilde{\sigma}_q σ~q q = 1 , … , Q q = 1, \ldots, Q q=1,,Q)的一组高斯滤波器从基本级别 G p , 0 \mathbf G_{p,0} Gp,0计算得到。注意, σ ~ q \tilde{\sigma}_q σ~q的值和相应的高斯核 H G , σ ~ q H^{G,\tilde{\sigma}_q} HG,σ~q可以事先计算一次,因为它们与八度索引 p p p无关(算法25.1,第13-14行)。每个更高八度 G p \mathbf G_p Gp的基本级别 G p , 0 \mathbf G_{p,0} Gp,0通过对前一个八度 G p − 1 \mathbf G_{p-1} Gp1的顶级 G p − 1 , Q \mathbf G_{p-1,Q} Gp1,Q进行抽取获得。典型参数值为 σ s = 0.5 \sigma_s = 0.5 σs=0.5 σ 0 = 1.6 \sigma_0 = 1.6 σ0=1.6 Q = 3 Q = 3 Q=3 P = 4 P = 4 P=4

在这里插入图片描述

算法 25.1
构建分层高斯尺度空间。输入图像 I I I 首先通过宽度为 σ ˉ 0 \bar{\sigma}_0 σˉ0 的高斯核滤波器模糊到尺度 σ 0 \sigma_0 σ0 (第3行)。在每个八度 G p G_p Gp 中,尺度级别 G p , q G_{p,q} Gp,q 从基准级别 G p , 0 G_{p,0} Gp,0 通过一组宽度为 σ ~ 1 , … , σ ~ Q \tilde{\sigma}_1, \ldots, \tilde{\sigma}_Q σ~1,,σ~Q 的高斯滤波器进行滤波计算(第13-14行)。每个高八度的基准级别 G p , 0 G_{p,0} Gp,0 通过对前一个八度的顶级 G p − 1 , Q G_{p-1,Q} Gp1,Q 进行子采样获得(第6行)。

分层尺度空间中的空间位置

为了正确关联在层次尺度空间的不同八度中检测到的特征的空间位置,我们定义函数:

x 0 ← AbsPos ( x p , p ) , x_0 \leftarrow \text{AbsPos}(x_p, p), x0AbsPos(xp,p),

该函数将八度 p p p的局部坐标系统中的连续位置 x p = ( x p , y p ) x_p = (x_p, y_p) xp=(xp,yp)映射到原始全分辨率图像 I I I(八度 p = 0 p = 0 p=0)的坐标系统中的相应位置 x = ( x , y ) x = (x, y) x=(x,y)。函数 AbsPos \text{AbsPos} AbsPos可以通过将连续八度中的位置关系递归定义为:

AbsPos ( x p , p ) = { x p if  p = 0 , AbsPos ( 2 ⋅ x p , p − 1 ) if  p > 0 , (25.44) \text{AbsPos}(x_p, p) = \begin{cases} x_p & \text{if } p = 0, \\ \text{AbsPos}(2 \cdot x_p, p-1) & \text{if } p > 0, \end{cases} \tag{25.44} AbsPos(xp,p)={xpAbsPos(2xp,p1)if p=0,if p>0,(25.44)

这给出了: x 0 = AbsPos ( 2 p ⋅ x p , 0 ) , x_0 = \text{AbsPos}(2^p \cdot x_p, 0), x0=AbsPos(2pxp,0),因此,

AbsPos ( x p , p ) = 2 p ⋅ x p . (25.45) \text{AbsPos}(x_p, p) = 2^p \cdot x_p. \tag{25.45} AbsPos(xp,p)=2pxp.(25.45)

分层LoG/DoG尺度空间

类似于图25.7所示的方案,通过计算分层高斯尺度空间中每个八度内相邻尺度级别之间的差异,可以得到分层DoG(差分高斯)尺度空间表示,即:

D p , q = G p , q + 1 − G p , q (25.46) \mathbf D_{p,q} =\mathbf G_{p,q+1} - \mathbf G_{p,q} \tag{25.46} Dp,q=Gp,q+1Gp,q(25.46)

对于级别 q ∈ [ 0 , Q − 1 ] q \in [0, Q-1] q[0,Q1]。图25.9展示了前一个例子中在三个八度范围内相应的高斯和DoG尺度级别。为了演示子采样的效果,图25.10和25.11显示了所有级别的图像按相同大小缩放后的信息。图25.11还显示了DoG响应的绝对值,这些值有效地用于在不同尺度级别检测兴趣点。注意,当尺度从细到粗变化时,类斑点特征如何突出并再次消失。图25.12和25.13展示了从不同图像获得的类似结果。

在这里插入图片描述

图 25.9
分层高斯和DoG尺度空间示例,其中 P = Q = 3 P = Q = 3 P=Q=3。左列显示高斯尺度空间级别 G p , q \mathbf G_{p,q} Gp,q,右列显示DoG级别 D p , q \mathbf D_{p,q} Dp,q。所有图像均按其真实尺度显示。

在这里插入图片描述

图 25.10
分层高斯尺度空间示例(城堡图像)。所有图像都缩放到相同大小。注意 G 1 , 0 \mathbf G_{1,0} G1,0 只是 G 0 , 3 \mathbf G_{0,3} G0,3 的子采样副本;同样地, G 2 , 0 \mathbf G_{2,0} G2,0 是从 G 1 , 3 \mathbf G_{1,3} G1,3 子采样得到的。

在这里插入图片描述

图 25.11
分层DoG尺度空间示例(城堡图像)。前三行显示正负DoG值(零值映射为中间灰色)。后三行显示DoG结果的绝对值(零值映射为黑色,最大值映射为白色)。所有图像都按原图大小缩放。

在这里插入图片描述

图 25.12
分层高斯尺度空间示例(星星图像)。

在这里插入图片描述

图 25.13
分层DoG尺度空间示例(星星图像)。前三行显示正负DoG值(零值映射为中间灰色)。后三行显示DoG结果的绝对值(零值映射为黑色,最大值映射为白色)。所有图像都按原图大小缩放。

1.5 尺度空间结构在SIFT中的应用

在SIFT方法中,DoG响应的绝对值用于在不同尺度上定位兴趣点。为此,在空间x/y位置和尺度坐标组成的3D空间中检测局部极大值。为了在一个完整的八度层次中沿尺度维度确定局部极大值,每个八度层次中需要两个附加的DoG层次, D p , − 1 \mathbf D_{p,-1} Dp,1 D p , Q \mathbf D_{p,Q} Dp,Q,以及两个附加的高斯尺度层次, G p , − 1 \mathbf G_{p,-1} Gp,1 G p , Q + 1 \mathbf G_{p,Q+1} Gp,Q+1

总体而言,每个八度层次 G p \mathbf G_p Gp 包含 Q + 3 Q+3 Q+3 个高斯尺度层次 G p , q \mathbf G_{p,q} Gp,q q = − 1 , … , Q + 1 q = -1, \ldots, Q + 1 q=1,,Q+1)和 Q + 2 Q + 2 Q+2 个DoG层次 D p , q \mathbf D_{p,q} Dp,q q = − 1 , … , Q q = -1, \ldots, Q q=1,,Q),如图25.14所示。对于基础层次 G 0 , − 1 \mathbf G_{0,-1} G0,1,尺度索引为 m = − 1 m = -1 m=1,其绝对尺度(见公式(25.22)和(25.35))为
σ 0 , − 1 = σ 0 ⋅ 2 − 1 / Q = σ 0 ⋅ 1 Δ σ . (25.47) \sigma_{0,-1} = \sigma_0 \cdot 2^{-1/Q} = \sigma_0 \cdot \frac{1}{\Delta \sigma}. \tag{25.47} σ0,1=σ021/Q=σ0Δσ1.(25.47)
因此,按照通常设置( σ 0 = 1.6 \sigma_0 = 1.6 σ0=1.6 Q = 3 Q = 3 Q=3),第一个八度音阶的六个层次的绝对尺度值为
σ 0 , − 1 = 1.2699 , σ 0 , 0 = 1.6000 , σ 0 , 1 = 2.0159 , σ 0 , 2 = 2.5398 , σ 0 , 3 = 3.2000 , σ 0 , 4 = 4.0317. (25.48) \sigma_{0,-1} = 1.2699, \quad \sigma_{0,0} = 1.6000, \quad \sigma_{0,1} = 2.0159, \\ \sigma_{0,2} = 2.5398, \quad \sigma_{0,3} = 3.2000, \quad \sigma_{0,4} = 4.0317. \tag{25.48} σ0,1=1.2699,σ0,0=1.6000,σ0,1=2.0159,σ0,2=2.5398,σ0,3=3.2000,σ0,4=4.0317.(25.48)
四个八度音阶( p = 0 , … , 3 p = 0, \ldots, 3 p=0,,3)的SIFT尺度空间的完整尺度值集列在表25.3中。

为了构建第一个尺度空间八度音阶 G 0 \mathbf G_0 G0 的高斯部分,通过用宽度为
σ 0 , − 1 = σ 0 , − 1 2 − σ s 2 ≈ 1.269 9 2 − 0. 5 2 ≈ 1.1673 (25.49) \sigma_{0,-1} = \sqrt{\sigma_{0,-1}^2 - \sigma_s^2} \approx \sqrt{1.2699^2 - 0.5^2} \approx 1.1673 \tag{25.49} σ0,1=σ0,12σs2 1.269920.52 1.1673(25.49)
的高斯核对输入图像 I I I 进行滤波获得初始层次 G 0 , − 1 \mathbf G_{0,-1} G0,1

对于更高的八度音阶( p > 0 p > 0 p>0),初始层次( q = − 1 q = -1 q=1)通过对下一低八度音阶 G p − 1 \mathbf G_{p-1} Gp1 的第 Q − 1 Q-1 Q1 层次进行下采样(抽取)获得,即
G p , − 1 ← Decimate ( G p − 1 , Q − 1 ) , (25.50) \mathbf G_{p,-1} \leftarrow \text{Decimate}(\mathbf G_{p-1,Q-1}), \tag{25.50} Gp,1Decimate(Gp1,Q1),(25.50)
类似于公式(25.42)。八度音阶的其余层次 G p , 0 , … , G p , Q + 1 \mathbf G_{p,0}, \ldots, \mathbf G_{p,Q+1} Gp,0,,Gp,Q+1 要么通过增量滤波计算(如图25.6所述),要么通过用宽度 σ ~ p , q \tilde{\sigma}_{p,q} σ~p,q(见公式(25.38))的高斯对八度音阶的初始层次 G p , − 1 \mathbf G_{p,-1} Gp,1 进行滤波计算。直接方法的优点是数值误差不会在尺度空间中累积;缺点是所需的内核比增量方法所需的内核大多达50%( σ ~ 0 , 4 = 3.8265 \tilde{\sigma}_{0,4} = 3.8265 σ~0,4=3.8265 对比 σ 0 , 4 = 2.4525 \sigma_{0,4} = 2.4525 σ0,4=2.4525)。注意,所有更高八度音阶的内层次 G p , q \mathbf G_{p,q} Gp,q(即 p > 0 , q ≥ 0 p > 0, q \ge 0 p>0,q0)均由基础层次 G p , − 1 \mathbf G_{p,-1} Gp,1 计算,使用与第一个八度音阶相同的内核集,如表25.3所列。

构建SIFT尺度空间的完整过程在算法25.2中总结。

在这里插入图片描述

表 25.3
四个八度音阶的SIFT尺度空间的绝对和相对尺度值。每个八度音阶索引 p = 0 , … , 3 p = 0, \ldots, 3 p=0,,3 包含6个高斯尺度层次 G p , q \mathbf G_{p,q} Gp,q,其中 q = − 1 , … , 4 q = -1, \ldots, 4 q=1,,4。对于每个尺度层次, m m m 是尺度索引, σ p , q \sigma_{p,q} σp,q 是相应的绝对尺度。在每个八度音阶 p p p 内, σ ~ p , q \tilde{\sigma}_{p,q} σ~p,q 表示相对于八度音阶基础层次 G p , − 1 \mathbf G_{p,-1} Gp,1 的相对尺度。每个基础层次 G p , − 1 \mathbf G_{p,-1} Gp,1 是通过对前一个八度音阶中的 q = Q − 1 = 2 q = Q - 1 = 2 q=Q1=2 层次进行下采样(抽取)获得的,即对于 p > 0 p > 0 p>0 G p , − 1 = Decimate ( G p − 1 , Q − 1 ) . \mathbf G_{p,-1} = \text{Decimate}(\mathbf G_{p-1,Q-1}). Gp,1=Decimate(Gp1,Q1).底层八度音阶中的基础层次 G 0 , − 1 \mathbf G_{0,-1} G0,1 通过对原始图像进行高斯平滑获得。注意,相对尺度值 σ ~ p , q = σ ~ q \tilde{\sigma}_{p,q} = \tilde{\sigma}_q σ~p,q=σ~q 在每个八度音阶内是相同的(与 p p p 无关),因此可以使用相同的高斯滤波核来计算所有八度音阶。

在这里插入图片描述

图 25.14
具有 P = 3 P = 3 P=3 个八度音阶和每个八度音阶 Q = 3 Q = 3 Q=3 个层次的 SIFT 尺度空间结构。为了在完整的八度音阶中执行局部极大值检测(“max”),需要 Q + 2 Q+2 Q+2 个 DoG 尺度空间层次( D p , − 1 , … , D p , Q \mathbf D_{p,-1}, \ldots, \mathbf D_{p,Q} Dp,1,,Dp,Q)。蓝色箭头表示连续高斯八度音阶之间的抽取步骤。由于 DoG 层次是通过减去成对的高斯尺度空间层次得到的,因此在每个八度音阶 G p \mathbf G_p Gp 中需要 Q + 3 Q+3 Q+3 个这样的层次( G p , − 1 , … , G p , Q + 1 \mathbf G_{p,-1}, \ldots, \mathbf G_{p,Q+1} Gp,1,,Gp,Q+1)。左侧的两个垂直轴分别显示绝对尺度( σ \sigma σ)和离散尺度索引( m m m)。请注意,尺度轴上的值是以对数表示的,具有恒定的乘法尺度增量 Δ σ = 2 1 / Q \Delta \sigma = 2^{1/Q} Δσ=21/Q。输入图像( I I I)的绝对尺度假定为 σ s = 0.5 \sigma_s = 0.5 σs=0.5

在这里插入图片描述

算法 25.2
构建 SIFT 尺度空间。此过程是算法 25.1 的扩展,并采用相同的参数。SIFT 尺度空间(参见图 25.14)由两个部分组成:一个分层高斯尺度空间 G = ( G 0 , … , G P − 1 ) \mathbf G = (\mathbf G_0, \ldots, \mathbf G_{P-1}) G=(G0,,GP1),其中包含 P P P 个八度音阶;以及一个(派生的)分层 DoG 尺度空间 D = ( D 0 , … , D P − 1 ) \mathbf D = (\mathbf D_0, \ldots, \mathbf D_{P-1}) D=(D0,,DP1)。每个高斯八度音阶 G p \mathbf G_p Gp 包含 Q + 3 Q+3 Q+3 个层次( G p , − 1 , … , G p , Q + 1 \mathbf G_{p,-1}, \ldots, \mathbf G_{p,Q+1} Gp,1,,Gp,Q+1)。在每个高斯八度音阶中,最低层次 G p , − 1 \mathbf G_{p,-1} Gp,1 通过对前一个八度音阶 G p − 1 \mathbf G_{p-1} Gp1 Q − 1 Q-1 Q1 层进行抽取得到(第7行)。每个 DoG 八度音阶 D p \mathbf D_p Dp 包含 Q + 2 Q+2 Q+2 个层次( D p , − 1 , … , D p , Q \mathbf D_{p,-1}, \ldots,\mathbf D_{p,Q} Dp,1,,Dp,Q)。DoG 层次 D p , q \mathbf D_{p,q} Dp,q 计算为两个相邻高斯层次 G p , q + 1 \mathbf G_{p,q+1} Gp,q+1 G p , q \mathbf G_{p,q} Gp,q 的逐点差异(第23行)。典型的参数设置为 σ s = 0.5 \sigma_s = 0.5 σs=0.5 σ 0 = 1.6 \sigma_0 = 1.6 σ0=1.6 Q = 3 Q = 3 Q=3 P = 4 P = 4 P=4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值