SIFT算法,基于局部尺度不变特征的目标识别(Object Recognition from Local Scale-Invariant Features)

摘要
该文献介绍了一个目标识别系统,该系统基于一种新的局部图像特征进行工作。无论是对图像进行缩放、平移还是旋转,提取出的特征都能保持不变。此外,即使在光照变化或图像进行仿射变换时,这些特征仍然具有不变性。这些特征与灵长类动物视觉系统中用于目标识别的下颞皮层神经元具有相似的特点。通过滤波操作,我们可以检测出尺度空间中的关键点,并在多个图像上进行滤波以创建图像关键点。然后,通过最近邻索引方法,确定与之匹配的候选目标(图像)。使用低残差最小二乘解来搜索参数。实验结果表明,即使在图像的部分被遮挡的情况下,该目标识别系统仍能在不到2秒的计算时间内实现稳定的目标识别。。

1.介绍
在复杂的现实场景中进行目标识别需要使用局部图像特征,这些特征能够在目标物被部分遮挡的情况下保持稳定。这些特征必须在一定程度上对光照、3D投影变换等具有不变性。另一方面,这些特征也必须足够独特,以在众多可选项中准确识别特定的目标。目标识别的挑战主要在于如何找到这样的特征。
然而,最近有研究表明,在同一个位置多次采样出的局部图像描述符,可以出色地完成任务。

本文介绍了一种名为尺度不变特征变换(Scale Invariant Feature Transform,SIFT)的图像特征生成方法。该方法将图像转化为特征向量,每个向量对图像的平移、缩放和旋转具有不变性,并且对光照变化和仿射变换具有一定的不变性。相比传统的局部特征生成方法,SIFT特征拥有更强的鲁棒性。此外,对于索引和模型验证,本文还介绍了改进的方法。

通过分阶段的滤波,可以高效识别出尺度不变的特征。第一阶段,寻找高斯差分函数的极值确定尺度空间中的关键点。根据这些关键点生成特征向量,描述局部图像区域。对不同图像进行模糊处理。这种方法基于哺乳动物视觉皮质中细胞的行为。生成的特征向量被称为SIFT关键点。每个图像生成大约1000个SIFT关键点,计算时间少于1秒。

获得SIFT关键点后,使用最近邻搜索以识别目标。通过霍夫变换哈希表首先识别在潜在模型姿态上一致的关键点集合,然后通过最小二乘拟合来获得模型参数的最终估计。当至少有3个关键点在模型参数上具有低残差的一致时,就有强有力的证据表明物体存在。由于典型物体的图像中可能有数十个SIFT关键点,因此图像中可能存在大量遮挡,但仍然能保持高可靠性水平。

当前的对象模型以可以进行仿射投影的SIFT关键点的2D位置表示。允许特征位置的足够变化以识别距离相机最多60度旋转的平面形状的透视投影,或者允许3D对象最多20度的旋转。

2.相关研究
目标识别在机器视觉行业中被广泛应用于检测、注册和操作等领域。然而,目前商业化的目标识别系统几乎完全依赖基于相关性的模板匹配。尽管在某些工程环境中非常有效,其中目标姿态和光照得到严格控制,但当目标的旋转、尺度、光照和3D姿态允许变化,甚至在处理部分可见性和大型模型数据库时,模板匹配的计算复杂度变得不可行。一种替代的方法是从图像中提取特征,这些特征至少在图像形成过程中部分不变,并且仅与这些特征进行匹配。已经提出和探索了许多候选特征类型,包括线段[6]、边缘组合[11, 14]和区域[2]等。尽管这些特征对于某些目标类别效果良好,但它们经常不能被频繁检测到或具有足够的稳定性来形成可靠的识别基础。

最近的研究工作集中在开发更密集的图像特征集合。一种方法是使用角点检测器(更准确地说,是局部图像变化峰值检测器)来识别可重复的图像位置,围绕这些位置可以测量局部图像属性。张等人[23]使用Harris角点检测器来识别不同视点拍摄的图像的对极线对齐特征位置。与试图将一个图像的区域与第二个图像中的所有可能区域进行相关性匹配不同,只有匹配在每个图像中以角点为中心的区域,可以大大节省计算时间。

对于目标识别问题,Schmid和Mohr[19]也使用Harris角点检测器来识别兴趣点,然后从每个兴趣点创建一个局部图像描述符,该描述符是一个不受方向影响的高斯导数图像测量向量。通过寻找满足基于目标的方向和位置约束的多个匹配描述符,这些图像描述符用于鲁棒的目标识别。这项工作既在大型数据库中的识别速度上令人印象深刻,又能处理杂乱的图像。
在之前的方法中使用的角点检测器存在一个重大缺陷,即它们仅在单一尺度上检查图像。随着尺度变化变得显著,这些检测器会对不同的图像点作出不同的响应。此外,由于检测器不提供对象尺度的指示,因此需要在大量尺度上创建图像描述符并尝试匹配。本文描述了一种在尺度空间中识别稳定关键位置的高效方法。这意味着图像的不同尺度对选择的关键位置集合没有影响。此外,对每个点确定了一个明确的尺度,这使得该点的图像描述向量可以在每个图像中以等效尺度进行采样。在每个位置确定了一个规范化方向,以便可以相对于一致的局部2D坐标框架进行匹配。这允许使用比Schmid和Mohr使用的旋转不变性描述符更具特征性的图像描述符,并且进一步修改描述符以改善对仿射投影和光照变化的稳定性。

基于外观的其他识别方法包括特征空间匹配[13]、颜色直方图[20]和感受野直方图[18]。这些方法在孤立对象或预分割图像上都取得了成功的应用,但由于它们具有更全局的特征,将它们扩展到杂乱和部分遮挡的图像上变得困难。Ohba和Ikeuchi [15]成功地将特征空间方法应用到杂乱图像中,通过使用许多小的局部特征窗口,但这就需要在新图像中为每个窗口进行昂贵的搜索,就像模板匹配一样。

3.关键点定位
我们希望在图像尺度空间中识别出对图像平移、缩放和旋转不变的位置,并且对噪声和小扭曲的影响最小。Lindeberg[8]已经证明,在对尺度不变性做出一些相当普遍的假设下,高斯核及其导数是尺度空间分析的唯一可能的平滑核。

为了实现旋转不变性和高效性,我们选择在尺度空间中应用差分高斯函数的极大值和极小值处选择关键位置。这可以通过在每个级别之间进行重采样来非常高效地计算。此外,它定位在变化较大的区域和尺度上的关键点,使得这些位置在表征图像时特别稳定。Crowley和Parker[4]以及Lindeberg[9]以前已经在尺度空间中使用差分高斯函数进行其他用途。接下来,我们将描述一种特别高效和稳定的方法来检测和描述这个函数的极大值和极小值。

由于2D高斯函数是可分离的,它与输入图像的卷积可以通过在水平和垂直方向上应用两次1D高斯函数来高效计算。
g ( x ) = 1 2 π σ e − x 2 / ( 2 ∗ σ 2 ) g(x) = \frac{1}{\sqrt{2\pi\sigma} } e^{-x^2 / (2 * σ^2)} g(x)=2πσ 1ex2/(2σ2)

对于关键位置的定位,所有的平滑操作都使用σ = 2,可以使用具有7个采样点的1D核函数进行足够准确的近似。

首先,输入图像通过高斯函数进行卷积,使用σ = p/2,得到图像A。然后,再次使用增量平滑σ = p/2进行第二次卷积,得到新图像B,此时实现了σ = p的平滑效果。高斯差分函数通过将图像B减去图像A得到,产生了两个高斯函数之间的比率为2/√p = p/2。

为了生成下一级金字塔层,我们使用双线性插值对已经平滑的图像B进行重采样,每个方向上的像素间距为1.5。尽管使用p/2的相对尺度进行重采样可能更自然,但唯一的约束是采样频率足够高以检测到峰值。1.5的间距意味着每个新采样将是4个相邻像素的恒定线性组合。这样计算效率高,并且最小化了由于改变重采样系数而产生的混叠伪影。

通过比较金字塔中的每个像素与其邻居,可以确定该尺度空间函数的极大值和极小值。首先,将像素与金字塔中相同级别的8个邻居比较。如果该像素在该级别上是极大值或极小值,那么将计算在金字塔的下一级别上最接近的像素位置,考虑到1.5倍的重采样。如果该像素仍然高于(或低于)该最接近像素及其8个邻居,则会在上一级别上重复这个测试。由于大多数像素在几次比较中就会被排除,所以这种检测的成本很小,远远低于建立金字塔的成本。

如果金字塔的第一级采样率与输入图像相同,那么最高的空间频率将被忽略。这是由于初始平滑所需的,以提供稳健的峰值分离检测。因此,在构建金字塔之前,我们使用双线性插值将输入图像扩大2倍。这对于典型的512×512像素图像来说,可以获得约1000个关键点,而不进行初始扩大的情况下只有四分之一的关键点数量。

3.1 SIFT关键点稳定性
为了表征每个关键位置的图像特征,对金字塔的每个级别的平滑图像A进行处理,提取图像的梯度和方向。对于每个像素A_ij,计算图像梯度幅值M_ij和方向R_ij,使用像素差分的方式:
M_ij = sqrt((A_ij - A_i+1,j)^2 + (A_ij - A_i,j+1)^2)
R_ij = atan2(A_ij - A_i+1,j, A_ij - A_i,j+1 - A_ij)
像素差分的计算高效并且提供足够的准确性,这得益于之前的大量平滑。在确定关键位置时,对位置的半像素偏移进行了补偿。

通过将梯度幅值阈值设为最大可能梯度值的0.1倍,增强对光照变化的鲁棒性。这样做可以减少对具有3D凹凸的表面的光照方向变化的影响,因为光照变化可能导致梯度幅值的大幅变化,但对梯度方向的影响可能较小。

为了使每个关键位置的图像描述符对旋转具有不变性,将为其分配一个规范化的方向。为了尽可能稳定地处理光照或对比度变化,方向是通过局部图像梯度方向直方图中的峰值来确定的。方向直方图使用带有当前平滑尺度3倍的高斯加权窗口创建。这些权重与经过阈值处理的梯度值相乘,并在与方向R_ij相对应的位置累积到直方图中。直方图共有36个箱子,覆盖了360度的旋转范围,在选择峰值之前进行平滑处理。

通过对自然图像进行仿射投影、对比度和亮度变化以及添加噪声的测试,可以检验生成的关键点的稳定性。通过了解变换参数,可以在变换后的图像中预测出每个在第一幅图像中检测到的关键点的位置。上面给出的各种采样和平滑参数是根据这个框架选取的,以便在保持稳定性的同时获得最大的效率。

图1显示了在仅限于较大尺度的2个八度范围内检测到的相对较少的关键点(为了避免过多的杂乱)。每个关键点显示为一个正方形,从中心到正方形的一边有一条线表示方向。在图的后半部分,图像被旋转了15度,水平方向缩小了0.9倍,并在水平方向上拉伸了1.1倍。像素强度在0到1的范围内,亮度值减去了0.1,对比度通过乘以0.9进行了减小。然后添加了随机像素噪声,信号的每个像素少于5个比特。尽管进行了这些变换,第一幅图像中的78%的关键点在预测的位置、尺度和方向上在第二幅图像中有密切匹配的关键点。

从表2可以判断关键点对图像变换的整体稳定性。表中的每个条目都是通过合并20个不同的测试图像的结果生成的,并总结了大约15,000个关键点的匹配情况。表的每一行显示了特定的图像变换。第一列给出了在变换后的图像中与原始图像中的关键点在位置(相对于该关键点的尺度)上相差小于并且尺度相差不超过1.5倍的关键点的百分比。第二列给出了同时满足这些条件并且方向与预测方向相差不超过20度的关键点的百分比。

4.局部图像描述
给定每个关键点的稳定位置、尺度和方向后,现在可以以一种对这些变换不变的方式描述局部图像区域。此外,还希望使这种表示对局部几何的小偏移具有鲁棒性,例如仿射或3D投影引起的偏移。一种方法是借鉴视觉皮层中复杂神经元的响应特性,其中特征位置可以在一个小区域内变化,而方向和空间频率的特异性保持不变。Edelman、Intrator和Poggio[5]进行了实验,模拟了复杂神经元对计算机图形模型的不同3D视角的响应,发现复杂细胞的输出比简单的基于相关性的匹配提供了更好的区分能力。例如,如果仿射投影在一个方向上相对于另一个方向拉伸了图像,这会改变梯度特征的相对位置,但对它们的方向和空间频率的影响较小。

通过使用多个表示每个方向的图像(称为方向平面)来表示局部图像区域,可以实现对局部几何失真的鲁棒性。每个方向平面只包含与该方向相对应的梯度,中间方向使用线性插值。每个方向平面被模糊和重采样,以允许梯度位置的较大偏移。

这种方法可以通过使用在选择方向时用于每个金字塔级别的预计算梯度和方向来高效地实现。对于每个关键点,我们使用在检测到关键点的金字塔级别中的像素采样。落在关键点位置周围半径为8像素的圆内的像素被插入到方向平面中。方向是相对于关键点的方向进行测量的,通过减去关键点的方向。在我们的实验中,我们使用了8个方向平面,每个平面在一个4x4的位置网格上进行采样,采样间距为梯度检测所用像素间距的4倍。模糊是通过将每个像素的梯度分配给其在采样网格中的8个最近邻进行的,使用方向和两个空间维度的线性插值。这种实现比明确的模糊和重采样要高效得多,但结果几乎相同。

为了在更大的尺度上对图像进行采样,同样的过程在金字塔的第二个比原来高一个八度的级别上重复。然而,这次使用的是一个2x2而不是4x4的采样区域。这意味着大致相同的图像区域将在两个尺度上被检查,因此任何附近的遮挡不会对一个尺度产生比另一个尺度更大的影响。因此,SIFT关键点向量中的样本总数,来自两个尺度,是8x4x4+8x2x2或160个元素,提供了足够的测量用于高特异性。

5.索引和匹配

为了建立SIFT关键点的索引,我们需要存储样本图像的SIFT关键点,并从新图像中识别出匹配的关键点。然而,对于高维向量的最相似关键点的识别,如果需要精确解,其复杂度很高。然而,一种改进的k-d树算法,称为最佳箱优先搜索方法(Beis和Lowe[3]),可以使用有限的计算量高概率地找到最近的邻居。为了进一步提高最佳箱优先算法的效率,我们给予在较大尺度上生成的SIFT关键点样本的权重是在较小尺度上的两倍。这意味着较大尺度实际上能够过滤掉在较小尺度上检查的最有可能的邻居。这也通过给予最小噪声尺度更多的权重来改善识别性能。在我们的实验中,可以限制在30,000个关键点向量的概率最佳箱优先搜索中最多检查200个邻居,而几乎不会损失性能。

一种有效的聚类可靠模型假设的方法是使用Hough变换[1]来搜索在特定模型姿态上达成一致的关键点。数据库中的每个模型关键点都包含相对于模型坐标系的关键点参数记录。因此,我们可以在哈希表中创建一个条目,从匹配假设预测模型的位置、方向和尺度。我们在方向上使用30度的箱尺寸,在尺度上使用2的因子,在位置上使用0.25倍的最大模型尺寸。这些相当宽松的箱尺寸允许在存在大量几何失真的情况下进行聚类,例如由于3D视点的变化引起的失真。为了避免哈希中的边界效应问题,每个假设被哈希到每个维度中最接近的2个箱中,总共为每个假设提供16个哈希表条目。

6.仿射参数的解
哈希表被搜索以识别每个箱中至少有3个条目的所有聚类,然后按照大小递减的顺序对箱进行排序。然后,对每个聚类进行验证过程,其中执行最小二乘法解来计算将模型与图像相关联的仿射投影参数。

将模型点[x y]T仿射变换到图像点[u v]T可以写成以下形式
u = m 1 ∗ x + m 2 ∗ y + t x u = m1*x + m2*y + tx u=m1x+m2y+tx
v = m 3 ∗ x + m 4 ∗ y + t y v = m3*x + m4*y + ty v=m3x+m4y+ty
其中模型的平移为[tx ty]T,仿射旋转、缩放和拉伸由参数m1、m2、m3和m4表示。
公式
这个方程表示了一个单一的匹配,但是可以添加任意数量的进一步匹配,每个匹配都会为第一个和最后一个矩阵贡献两行。至少需要3个匹配来提供一个解决方案。我们可以将这个线性系统写成
Ax=b
通过解决对应的法方程,可以求解参数x的最小二乘解:

x = (ATA)⁻¹ATb

这个解最小化了从投影模型位置到对应图像位置的距离的平方和。这种最小二乘法的方法可以轻松地扩展到解决关节和柔性对象的三维姿态和内部参数[12]。

现在可以通过检查每个图像特征与模型之间的一致性来删除异常值,给定参数解。每个匹配必须在方向上相差不超过15度,尺度上变化不超过p2,位置上不超过最大模型尺寸的0.2倍。如果在剔除异常值后剩下不到3个点,则该匹配将被拒绝。如果有任何异常值被剔除,最小二乘解将重新使用剩余的点进行求解。

7.实验

仿射解法对于平面物体的透视投影提供了很好的近似,因此平面模型是这种方法的一个很好的初始测试。图3的顶部一行展示了三个物体的矩形平面面部的模型图像。该图还展示了一个包含平面物体的杂乱图像,并在识别后的图像上覆盖了相同的模型。显示的模型键是用于识别和最终最小二乘解的键。由于鲁棒识别只需要3个键,可以看出解是高度冗余的,并且可以在很大程度上保持不受遮挡的效果。还显示了使用最小二乘解的仿射变换投影的模型图像的矩形边界。除了由透视投影引入的小误差外,这些边界与图像中平面区域的真实边界非常接近。对平面物体的许多图像进行了类似的实验,并且识别已被证明对于物体在任何方向上相对于相机的60度旋转是稳健的。虽然模型图像和仿射参数不能解释三维物体的深度旋转,但它们仍足以在大约20度深度旋转范围内对3D物体进行稳健识别。图4的顶部一行显示了三个模型图像的示例。模型是在黑色背景上拍摄的,并通过分割背景区域提取出物体轮廓。同一图中显示了识别的示例,再次显示了用于识别的SIFT键。物体轮廓是使用仿射参数解投影的,但这次的一致性不如之前,因为解没有考虑深度旋转。图5显示了更多的示例,其中存在明显的部分遮挡。

这些示例中的图像大小为384x512像素。在Sun Sparc 10处理器上,识别每个图像中的所有物体的计算时间约为1.5秒,其中约需要0.9秒来构建尺度空间金字塔和识别SIFT键,约需要0.6秒来执行索引和最小二乘验证。这不包括预处理每个模型图像的时间,每个图像大约需要1秒,但只需在初始输入模型数据库时进行一次即可。

SIFT键的光照不变性在图6中得到了证明。这两个图像是从相同视点拍摄的相同场景,只是第一个图像从左上方照亮,第二个图像从中心右方照亮。完整的识别系统用第一个图像作为模型来识别第二个图像,第二个图像被正确识别为与第一个图像匹配。只显示了作为识别一部分的SIFT键。有273个键经过验证作为最终匹配的一部分,这意味着在每种情况下,不仅在相同位置检测到相同的键,而且它还是第二个图像中正确对应键的最接近的匹配。其中任何3个键都足以进行识别。虽然在一些光照变化的区域(例如相机亮闪上方)中无法找到匹配的键,但总体上,键对光照变化具有很好的不变性。

8.与生物视觉的联系

人类视觉的性能显然远远优于当前的计算机视觉系统,因此通过模拟生物过程可能会有很大的收益。幸运的是,在过去几年中,对动物和人类中的物体识别是如何实现的有了令人瞩目的进展。

神经科学的最新研究表明,灵长类动物的物体识别利用了中等复杂性的特征,这些特征在尺度、位置和光照变化方面基本上是不变的(Tanaka [21],Perrett&Oram [16])。在颞叶皮层(IT)中发现的此类中等特征的一些例子包括对五边形的暗形状、带有细长突出元素的圆形,或者三角形边界内的水平纹理区域的神经元。这些神经元对于出现在视野大部分区域内以及几个八度范围内的形状特征具有高度特异性的反应(Ito et al. [7])。许多这些特征的复杂性与当前的SIFT特征大致相同,尽管也有一些神经元对于更复杂的形状(如面部)有反应。许多神经元除了形状外,还对颜色和纹理属性有反应。已经证明这些特征的反应依赖于先前对包含这些特征的特定对象的视觉学习(Logothetis,Pauls&Poggio [10])。这些特征似乎是在大脑中通过高度计算密集型的并行过程推导出来的,这与本文中给出的分阶段过滤方法非常不同。然而,结果是大致相同的:图像被转换为一组大量的局部特征,每个特征与一小部分潜在对象匹配,但对于常见的观察变换基本上是不变的。

还已知道,大脑中的物体识别依赖于对特征进行绑定、确定姿势并从杂乱的背景中分割出对象的注意力串行过程[22]。这个过程在验证中扮演着与本文中使用的参数求解和异常值检测相同的角色,因为解释的准确性往往取决于强制执行单一视点约束[11]。

9.结论以及讨论

SIFT特征通过在尺度、光照和局部仿射变形方面基本上是不变的,改进了先前的方法。典型图像中大量的特征可以在杂乱图像中部分遮挡下实现稳健的识别。解决仿射模型参数的最后阶段比仅依赖索引的方法更能实现更准确的验证和姿态确定。

进一步研究的一个重要领域是从多个视角构建表示对象的三维结构的模型。这将有进一步的优势,即可以将多个视角的键合并为单个模型,从而增加在新视角中找到匹配的概率。模型可以是基于运动结构的真实三维表示,也可以根据自动聚类和插值来表示外观空间。后一种方法的一个优势是它还可以对非刚性变形进行建模。

通过添加新的SIFT特征类型来改进识别性能,包括颜色、纹理和边缘分组,以及不同的特征大小和偏移量。在对象边界处,背景杂乱可能会干扰其他特征,因此尺度不变的边缘分组对于进行局部前景背景区分是特别有用的。索引和验证框架允许将所有类型的尺度和旋转不变特征合并到单个模型表示中。

通过检测许多不同类型的特征,并依靠索引和聚类来选择在特定图像中最有用的特征,可以实现最大的稳健性。

猜你喜欢

转载自blog.csdn.net/qq_40773984/article/details/132164999