什么是尺度不变特征变换(SIFT)?
了解 SIFT 算法如何检测并描述具有尺度和旋转不变性的关键点、它的四个步骤如何运作,以及它在计算机视觉中的应用场景。
Abirami Vina11 分钟阅读
如需直观了解本文介绍的概念,请观看下方视频。
如今,我们使用的许多智能设备——从手机、相机到智能家居系统——都配备了 AI 解决方案,可以识别人脸、物体,甚至完整的视觉场景。这项能力源于计算机视觉,这是人工智能的一个领域,能让机器理解和解读图像与视频。
例如,无论从哪个角度或多远的距离拍摄埃菲尔铁塔,你的设备通常都能通过计算机视觉识别它,并将照片整理到相册中的正确文件夹里。这听起来很简单,但识别物体并非总是那么容易。图像会因大小、角度、尺度或光照不同而呈现出很大差异,因此机器很难始终如一地识别它们。
为了解决这个问题,研究人员开发了一种名为尺度不变特征变换(SIFT)的计算机视觉算法。这种算法能够在不同的成像条件下检测物体。SIFT 由 David Lowe 于 1999 年创建,旨在查找并描述图像中的独特关键点,例如角点、边缘或图案;即使图像经过缩放、旋转或光照发生变化,这些特征仍然可以被识别。
在 Ultralytics YOLO11 这类由深度学习驱动的计算机视觉模型普及之前,SIFT 是计算机视觉中广泛使用的一种技术。它曾是目标识别等任务的标准方法,目标识别旨在从照片中识别特定物体;SIFT 也用于图像匹配,通过寻找重叠的图像特征来对齐照片。
本文将简要介绍 SIFT,包括它是什么、其基本工作原理,以及它为何对计算机视觉的发展至关重要。
SIFT 算法为何对计算机视觉至关重要#
物体在图像中可能会以多种不同的方式呈现。例如,一个咖啡杯可能从上方或侧面拍摄,也可能处于明亮的阳光下或温暖的灯光下。同一个杯子靠近相机时看起来会更大,离相机较远时则会显得更小。
所有这些差异都让教会计算机识别物体变得很复杂。这项计算机视觉任务称为目标检测,要求视觉 AI 模型即使面对物体大小、角度或光照条件的变化,也能准确识别并定位物体。
为了实现这一点,计算机视觉会采用称为特征提取或特征检测的过程。模型不会试图一次性理解整幅图像,而是寻找鲜明的图像特征,例如清晰的角点、独特的图案或纹理;这些特征在不同角度、尺度和光照条件下仍然可以被识别。
尺度不变特征变换(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×16 像素的小方块区域来完成这项工作。首先将该区域按照关键点的方向对齐,以避免旋转对其造成影响。然后将区域划分为 4×4 的网格,每个网格都是一个更小的方块。
在每个小方块中,SIFT 会测量亮度在不同方向上的变化,并将这些变化存储在称为直方图的数据结构中;直方图就像一张图表,显示哪些方向最常见。每个小方块都有自己的直方图,16 个小方块合起来会生成 16 个直方图。
最后,这些直方图会合并为一个包含 128 个数字的列表。这个列表称为特征向量,相当于关键点的指纹。由于它捕捉了关键点周围独特的纹理和结构,因此即使图像经过缩放、旋转或光照发生变化,这个指纹也能用于匹配不同图像中的同一关键点。

图 4. SIFT 工作原理概览(来源)
SIFT 在计算机视觉中的主要应用#
现在我们已经更好地了解了 SIFT 是什么以及它的工作原理,接下来看看它在计算机视觉中的一些实际应用。
物体识别与检测#
SIFT 的主要用途之一是物体识别与检测。这需要教会计算机识别并定位图像中的物体,即使物体的外观并非始终相同。例如,无论一本书离相机很近、较远,还是以某个角度旋转,SIFT 都能检测到它。
这之所以可行,是因为 SIFT 会提取极具独特性且稳定的关键点。将这些关键点与 SIFT 描述符配对后,就会形成 SIFT 特征,为跨图像匹配同一物体提供可靠的方法。这些特征捕捉了物体独特且保持稳定的细节,因此即使物体的尺寸、位置或方向发生变化,也能可靠地进行跨图像特征匹配。

图 5. 使用 SIFT 在一张新图像中识别书籍封面,该图像的拍摄方向与原图不同。图片由作者提供。
在深度学习普及之前,SIFT 是构建物体识别系统最可靠的方法之一。它广泛用于研究和需要在大型图像数据集中匹配物体的应用场景,不过通常需要消耗大量计算资源。
图像拼接与全景图创建#
SIFT 还可用于创建全景图,即通过拼接多张图片制成的宽幅照片。利用 SIFT,可以在不同图像的重叠区域找到独特的关键点并进行匹配。这些匹配点相当于锚点,为拼接过程提供指引,帮助确定照片的对齐方式。
完成匹配后,可以使用拼接算法计算正确的对齐方式,通常会通过几何变换将一张图像映射到另一张图像上。随后对图像进行融合,让接缝消失。最终生成的全景图看起来就像一张无缝的宽幅照片,尽管它实际上由多张照片拼接而成。
3D 重建与机器人技术#
SIFT 的另一个有趣应用是 3D 重建,即将从不同角度拍摄的多张 2D 照片组合起来,构建三维模型。SIFT 会在这些图像中寻找并匹配相同的点。
完成匹配后,可以使用三角测量法估算这些点的 3D 位置。三角测量法通过不同视角计算深度,是运动恢复结构(SfM)的一部分。运动恢复结构是一种利用多张重叠图像估算场景 3D 形状以及拍摄照片的相机位置的技术。
最终结果通常是一个 3D 点云,即一组描绘物体或环境轮廓的空间点。SIFT 是最早让运动恢复结构变得实用的工具之一。尽管如今更新的技术速度更快、应用也更普遍,但在准确性比速度更重要时,仍会使用 SIFT。
SIFT 也曾用于机器人技术,特别是视觉 SLAM(同步定位与地图构建)。SLAM 可以让机器人在构建周围环境地图的同时确定自身位置。
SIFT 关键点可作为可靠的地标,即使光照或角度发生变化,机器人也能在不同帧中识别它们。通过跟踪这些地标,机器人可以估算自身位置并实时更新地图。如今,机器人领域更常使用速度更快的特征检测器,但 SIFT 在早期 SLAM 系统中发挥了重要作用;在鲁棒性比速度更重要的场景中,SIFT 仍然很关键。
SIFT 的优势与注意事项#
SIFT 算法广泛应用于计算机视觉,并以可靠著称,但它也有一些取舍。因此,在决定它是否适合项目之前,权衡其优缺点很重要。接下来,我们来看看它的主要优势和局限。
SIFT 的主要优势#
以下是使用 SIFT 算法的一些优点:
- 尺度与旋转不变性:SIFT 提供的关键点具有尺度不变性,当物体以不同尺寸或方向出现时,仍能保持相对稳定。与早期特征检测器相比,这是一个重大进步。
- 对光照和视角变化具有一定鲁棒性:SIFT 能够应对亮度、对比度或视角的小幅变化,但在条件变化极端时,可靠性会有所下降。
- 适用于杂乱或部分遮挡的场景:由于 SIFT 能检测到许多局部关键点,即使物体部分被遮挡或背景较复杂,它通常仍能识别出该物体。
性能方面的注意事项与替代方案#
以下是使用 SIFT 算法的一些缺点:
- 计算开销大:SIFT 的多步骤处理流程和细致的描述符,使其比现代特征检测器更慢、更耗费资源。为了改进这一点,研究人员开发了 SURF(加速稳健特征)算法,使用更快的计算来查找和描述特征。在某些情况下,SURF 的精度不如 SIFT,但运行速度快得多,因此更适合对时效性要求较高的任务。
- 不适合实时应用:由于计算开销较大,SIFT 难以胜任速度至关重要的应用,例如实时跟踪或移动机器人。
- 通用性有限:虽然 SIFT 在许多情况下都具有鲁棒性,但在光照剧烈变化、视角大幅偏移或动态性很强的场景中效果较差,而较新的算法或机器学习方法在这些场景中表现更好。
在了解 SIFT 的优缺点时,你可能会发现,它的许多局限推动了更先进技术的发展。具体来说,卷积神经网络(CNN)成为一种强大的替代方案。
CNN 是一种受人类视觉系统工作方式启发的深度学习模型。它会分层处理图像,从边缘和纹理等简单模式开始,逐步构建出更复杂的形状和物体。与 SIFT 手工设计的特征规则不同,CNN 直接从数据中学习特征表示。
这种数据驱动的学习方式意味着,CNN 在描述符匹配和分类任务中可以胜过 SIFT。CNN 的表达能力也更强、鲁棒性更高,能够更好地适应视觉数据的多变性和复杂性。
例如,基于 CNN 的模型在 ImageNet 上取得了突破性成果。ImageNet 是一个大型基准数据集,包含数百万张带标签图像,涵盖数千个类别。ImageNet 旨在测试算法识别和分类物体的能力,能够凸显早期基于特征的方法与深度学习之间的差距。
CNN 通过学习更丰富、更灵活的表示,很快就超越了 SIFT,使模型能够在光照变化、视角不同甚至物体部分被遮挡时识别物体,而这些场景往往令 SIFT 难以应对。
要点#
尺度不变特征变换(SIFT)算法在计算机视觉的发展史上占有重要地位。它提供了一种可靠的方法,能够在环境变化时检测特征,并影响了如今使用的许多方法。
虽然更新的技术速度更快、效率更高,但它们的基础是 SIFT 奠定的。SIFT 展示了当今计算机视觉的发展从何处起步,也凸显了现代 AI 系统取得的巨大进步。
加入我们的全球社区,并查看我们的 GitHub 仓库,进一步了解计算机视觉。浏览我们的解决方案页面,了解农业中的 AI和零售业中的计算机视觉等创新。查看我们的许可选项,开始构建你自己的计算机视觉模型。
作者
评论
提出问题、分享你的结果,或帮助其他人。










