什么是尺度不变特征变换(SIFT)?

阿比拉米-维纳

6 分钟阅读

2025 年 9 月 9 日

探索 SIFT 算法。了解什么是 SIFT 及其在尺度不变计算机视觉方面的强大功能。增强图像处理能力。

如今,我们使用的许多智能设备,从手机、相机到智能家居系统,都配备了人工智能解决方案,可以识别人脸、物体甚至整个视觉场景。这种能力来自计算机视觉,它是人工智能的一个领域,能让机器理解和解释图像和视频。

例如,如果你从任何角度或距离拍摄了一张埃菲尔铁塔的照片,你的设备通常仍能通过计算机视觉识别它,并将其整理到相册中正确的文件夹中。虽然这听起来简单明了,但识别物体并不总是那么容易。图像会因大小、角度、比例或光线的不同而看起来大相径庭,这使得机器很难始终如一地识别它们。 

为了帮助解决这个问题,研究人员开发了一种名为 "尺度不变特征变换"(SIFT)的计算机视觉算法。这种算法可以在不同的观察条件下检测物体。SIFT 由 David Lowe 于 1999 年创建,旨在查找和描述图像中的独特关键点,如边角、边缘或图案,这些关键点即使在调整图像大小、旋转或不同光线下仍可识别。

Ultralytics YOLO11等深度学习驱动的计算机视觉模型流行起来之前,SIFT 是计算机视觉领域广泛使用的一种技术。它是物体识别和图像匹配等任务的标准方法,物体识别的目标是识别照片中的特定物品,而图像匹配则是通过寻找重叠的图像特征来对齐照片。

在本文中,我们将通过快速概述 SIFT 是什么、它在高层次上是如何工作的,以及它在计算机视觉发展过程中的重要性,来探索 SIFT。让我们开始吧!

为什么 SIFT 算法对计算机视觉至关重要?

在图像中,物体可以以多种不同的方式出现。例如,可以从上方、侧面、明亮的阳光下或温暖的灯光下拍摄一个咖啡杯。同一个杯子离相机近的时候也可能看起来较大,离相机较远的时候则可能较小。

所有这些差异使得教授计算机识别物体成为一项复杂的任务。这项计算机视觉任务被称为 "物体检测",要求视觉人工智能模型能够准确识别和定位物体,即使物体的大小、角度或光照条件发生变化也不例外。

为了实现这一点,计算机视觉依赖于一种称为特征提取或检测的过程。模型不是试图一次性理解整个图像,而是寻找独特的图像特征,如尖角、独特的图案或纹理,这些特征在不同角度、尺度和照明条件下都能保持可识别性。

这正是尺度不变特征变换(SIFT)的设计初衷。SIFT 是一种特征检测和描述算法,可以可靠地识别图像中的物体,无论这些物体是如何捕获的。

实现比额表不变性

SIFT 算法有几个重要特性,使其在物体识别中非常有用。其中一个重要特性叫做尺度不变性。这意味着 SIFT 可以识别物体的各个部分,无论它看起来很大,离摄像机很近,还是很小,离摄像机很远。即使物体不完全可见,该算法仍能识别出相同的关键点。

它采用了一种名为 "尺度空间理论 "的概念。简单地说,就是在不同层次上对图像进行模糊处理,以创建多个版本。然后,无论图像的大小或清晰度如何变化,SIFT 都能通过这些版本找到保持不变的模式和细节。 

例如,从几米远的地方拍摄的路标看起来要比在远处拍摄的路标大得多,但 SIFT 仍能检测到相同的明显特征。这样,即使路标的比例非常不同,也能正确匹配两幅图像。

确保旋转不变性

图像中的物体也可能出现旋转,有时甚至是颠倒的。SIFT 通过一种名为旋转不变性的特性来处理这种情况。对于检测到的每个关键点,算法都会根据本地图像梯度指定一个一致的方向。这样,无论物体如何旋转,都能识别出同一个物体。

你可以把它想象成在每个关键点上标注一个小箭头,显示它朝向的方向。通过将特征与这些方向对齐,SIFT 可以确保关键点即使在物体旋转时也能正确匹配。例如,在风景照片中拍摄的地标,即使在相机倾斜的情况下拍摄另一张照片,也能正确识别。

对其他图像变化的适应能力

除了大小和旋转,图像还可能在其他方面发生变化,比如光照变化。物体上的光线可能会从明亮变为暗淡,摄像机的角度可能会稍有偏移,或者图像可能会变得模糊或有噪点。

SIFT 就是为处理这类变化而设计的。为此,它将重点放在独特且对比度高的关键点上,因为这些特征受光照变化或视角微小偏移的影响较小。因此,SIFT 往往比简单的边缘或角落检测方法更可靠,后者在条件发生变化时往往会失效。

图 1.从 (a) 雨天图像和 (b) 相应的干净输入图像中提取的 SIFT 关键点。(资料来源)

想想画廊里的一幅画。无论是在柔和的日光下,还是在明亮的人工聚光灯下,甚至是在手持摄像机拍摄的轻微运动模糊的情况下,都能识别出这幅画。尽管存在这些差异,关键点仍然足够稳定,可以进行精确匹配。

规模不变特征变换 (SIFT) 算法的工作原理

接下来,让我们看看 SIFT 算法是如何工作的。这一过程可分为四个主要步骤:关键点检测、关键点定位、方向分配和关键点描述。

步骤 1:规模空间极值检测

第一步是找到并检测关键点,关键点是图像中的独特点,如角落或纹理的急剧变化,有助于跟踪或识别物体。

为了确保在任何尺寸下都能识别这些潜在的关键点,SIFT 建立了所谓的比例空间。这是用高斯滤波器(一种平滑技术)逐渐模糊原始图像,并将结果分组到称为倍频程的层中而形成的图像集合。每个八度空间包含模糊程度不断增加的相同图像,而下一个八度空间则是图像的缩小版本。

通过从一张模糊图像中减去另一张,SIFT 计算出高斯差(DoG),从而突出亮度变化剧烈的区域。之所以选择这些区域作为候选关键点,是因为它们在放大或缩小图像时保持一致。

图 2.DoG 通过减去不同层次的模糊图像来突出关键结构。(资料来源)

步骤 2:关键点定位

并非所有候选关键点都有用,因为有些关键点可能很弱或不稳定。为了完善这些关键点,SIFT 使用了一种名为泰勒级数展开的数学方法,有助于更准确地估计关键点的确切位置。

在这一步中,不可靠的点会被去除。对比度低、与周围环境融为一体的关键点以及直接位于边缘的关键点都会被剔除,因为它们太容易移动。这一过滤步骤只留下最稳定、最独特的关键点。

步骤 3:定向任务

一旦确定了稳定的关键点,SIFT 就会使它们具有旋转不变性,这意味着即使图像侧翻或倒置,它们仍然可以匹配。为此,SIFT 会分析每个关键点周围的亮度变化,这就是所谓的梯度。梯度显示像素强度变化的方向和强度,共同捕捉点周围的局部结构。

对于每个关键点,SIFT 都会考虑周围区域内的梯度,并将它们组合成一个方向直方图。直方图中最高的峰值表示强度变化的主要方向,然后将其指定为关键点的方向。梯度方向(显示强度变化的位置)和梯度大小(显示强度变化的程度)都被用来构建这个直方图

如果有其他峰值的强度差不多,SIFT 就会为同一个关键点分配多个方向。这样,当物体以不寻常的角度出现时,就不会丢失重要特征。通过将每个关键点与其方向对齐,SIFT 可以确保下一步生成的描述符保持一致。 

换句话说,即使同一物体的两张图像旋转角度不同,方向对齐的关键点仍能正确匹配。正是这一步赋予了 SIFT 处理旋转的强大能力,使其比早期的特征检测方法更加稳健。

图 3.仔细观察 SIFT 算法的第 3 步(资料来源)

步骤 4:关键点描述符

SIFT 的最后一步是创建每个关键点的描述,以便在其他图像中识别。 

SIFT 通过查看每个关键点周围的一个小方块(大小约为 16 x 16 像素)来实现这一目标。首先将该补丁与关键点的方向对齐,这样旋转就不会对其产生影响。然后,将该补丁划分为一个由 4×4 个小方格组成的网格。

在每个小方格中,SIFT 会测量不同方向的亮度变化。这些变化被存储在一个叫做直方图的东西中,直方图就像一个图表,显示哪些方向是最常见的。每个小方格都有自己的直方图,16 个小方格共产生 16 个直方图。

最后,这些直方图会合并成一个数字列表,总共 128 个数字。这个列表被称为特征向量,它就像是关键点的指纹。由于它能捕捉到关键点周围独特的纹理和结构,因此即使不同的图像被调整大小、旋转或光照不同,这个指纹也能在不同的图像中匹配出相同的关键点。

图 4.SIFT 工作原理概览(资料来源)

SIFT 在计算机视觉中的主要应用

既然我们已经对 SIFT 及其工作原理有了更深入的了解,下面就让我们来探讨一下它在计算机视觉领域的一些实际应用。

物体识别和检测

SIFT 的主要用途之一是物体识别和检测。这包括教会计算机识别和定位图像中的物体,即使这些物体看起来并不总是一样的。例如,SIFT 可以检测到一本书,无论它是靠近摄像头、远离摄像头还是旋转了一个角度。

之所以能做到这一点,是因为 SIFT 提取的关键点具有高度的独特性和稳定性。当这些关键点与 SIFT 描述符配对时,就形成了 SIFT 特征,为在不同图像中匹配同一物体提供了可靠的方法。这些特征能捕捉到物体的独特细节,并保持一致,即使物体的大小、位置或方向发生变化,也能在不同图像中进行可靠的特征匹配。

图 5.使用 SIFT 在与原始图像方向不同的新图像中识别图书封面。图片由作者提供。

深度学习流行之前,SIFT 是构建物体识别系统最可靠的方法之一。它被广泛应用于需要在大型图像数据集中匹配对象的研究和应用中,尽管它往往需要大量的计算资源。

图像拼接和全景创建

SIFT 还可用于创建全景图像,全景图像是将多张图片拼接在一起的宽幅照片。利用 SIFT,可以在不同图像的重叠部分找到独特的关键点,然后将其相互匹配。这些匹配点就像锚点一样,指导拼接过程如何对齐照片。

匹配完成后,拼接算法可用于计算正确的对齐方式,通常使用几何变换将一幅图像映射到另一幅图像上。然后混合图像,使接缝消失。最终形成的无缝全景图看起来就像一张宽幅照片,尽管它是由多张照片拼接而成的。

三维重建和机器人技术

SIFT 的另一个有趣应用是三维重建,即把从不同角度拍摄的多张二维照片组合起来,建立一个三维模型。SIFT 的工作原理是在这些图像中找到相同的点并进行匹配。 

一旦匹配成功,就可以使用三角测量法(一种从不同视角计算深度的方法)估算出这些点的三维位置。这一过程是运动结构(SfM)技术的一部分,该技术使用多张重叠图像来估算场景的三维形状以及拍摄照片的相机的位置。

其结果通常是三维点云,即勾勒出物体或环境轮廓的空间点集合。SIFT 是第一批使运动结构实用化的工具之一。虽然如今更新的技术更快、更常见,但当精度比速度更重要时,SIFT 仍会继续应用。

SIFT 还被用于机器人技术,尤其是视觉 SLAM(同步定位与绘图)。SLAM 可让机器人在确定自己所在位置的同时,绘制出周围环境的地图。 

SIFT 关键点可作为可靠的地标,即使光线或角度发生变化,机器人也能跨帧识别。通过跟踪这些地标,机器人可以估算自己的位置并即时更新地图。虽然如今在机器人技术中更多地使用速度更快的特征检测器,但 SIFT 在早期的 SLAM 系统中发挥了重要作用,在稳健性比速度更重要的情况下,SIFT 仍然是关键。

SIFT 的优势和考虑因素

虽然 SIFT 算法已被广泛应用于计算机视觉领域,并以其可靠的方法而著称,但它也有一些需要权衡的地方。因此,在决定它是否适合某个项目之前,权衡其利弊非常重要。接下来,让我们来了解一下它的主要优势和局限性。

SIFT 的核心优势

以下是使用 SIFT 算法的一些优点:

  • 尺度和旋转不变性: SIFT 可提供与尺度无关的关键点,当物体出现在不同尺寸或方向时,关键点仍能保持相对稳定,这与早期的特征检测器相比是一大进步
  • 对光照和视点变化具有适度的鲁棒性: SIFT 可应对亮度、对比度的变化或视点的微小移动,但在更极端的条件下可靠性较差
  • 能够在杂乱或部分隐藏的场景中工作: 由于 SIFT 能检测到许多局部关键点,因此即使部分物体被遮挡或背景复杂,它仍能识别出物体。

性能考虑因素和替代方案

以下是使用 SIFT 算法的一些弊端:

  • 计算成本高: SIFT 的多步骤过程和详细描述使其比现代特征检测器更慢、更耗费资源。为了改善这一问题,研究人员开发了 SURF(加速鲁棒特征)算法,该算法使用更快的计算速度来查找和描述特征。SURF 算法在某些情况下不如 SIFT 算法精确,但运行速度更快,因此更适用于时间敏感型任务
  • 不适合实时应用: 由于 SIFT 的计算成本较高,因此在实时跟踪或移动机器人等对速度要求较高的应用中SIFT 难以胜任。
  • 通用性有限:虽然 SIFT 在很多情况下都很强大,但在极端光照变化、视角大幅偏移或高度动态场景中,SIFT 就显得不那么有效了,而在这些场景中,更新的算法或机器学习方法会有更好的表现。

在探讨 SIFT 的优缺点时,您可能会注意到它的许多局限性为更先进的技术铺平了道路。具体来说,卷积神经网络(CNN)作为一种强大的替代技术应运而生。 

CNN 是一种深度学习模型,其灵感来源于人类视觉系统的工作原理。它对图像进行分层处理,从边缘和纹理等简单模式开始,逐渐处理更复杂的形状和物体。与 SIFT 的手工特征规则不同,CNN 直接从数据中学习特征表征。 

这种以数据为驱动的学习方式意味着,在描述符匹配和分类任务中,CNN 的表现要优于 SIFT。CNN 还更具表现力和鲁棒性,能更好地适应视觉数据的多变性和复杂性。 

例如,基于 CNN 的模型在ImageNet 上取得了突破性成果,ImageNet 是一个海量基准数据集,包含数千类数百万张标注图像。ImageNet旨在测试算法识别和分类对象的能力,能够突出旧的基于特征的方法与深度学习之间的差距。 

CNN 通过学习更丰富、更灵活的表征,很快就超越了 SIFT,使其能够在不断变化的光线下、从不同的视角识别物体,甚至在部分隐藏的情况下也能识别物体,而 SIFT 通常在这些情况下很难识别物体。

主要收获

尺度不变特征变换算法在计算机视觉史上占有重要地位。它提供了一种即使在不断变化的环境中也能检测特征的可靠方法,并影响了当今使用的许多方法。 

虽然更新的技术速度更快、效率更高,但 SIFT 却为它们奠定了基础。SIFT 展示了当今计算机视觉技术进步的起点,并突出说明了最先进的人工智能系统已经取得了多大的进步。

加入我们的全球社区,查看我们的GitHub 存储库,了解有关计算机视觉的更多信息。浏览我们的解决方案页面,了解农业人工智能零售业计算机视觉等创新技术。查看我们的许可选项,开始构建您自己的计算机视觉模型。

让我们共同打造人工智能的未来

开始您的未来机器学习之旅

免费开始
链接复制到剪贴板