什么是尺度不变特征变换 (SIFT)?
探索 SIFT 算法。了解 SIFT 是什么及其在尺度不变计算机视觉方面的强大功能。提升你的图像处理能力。

想要直观地了解本文涵盖的概念,请观看下方的视频。
如今,我们使用的许多智能设备,从手机、相机到智能家居系统,都配备了能够识别人脸、物体甚至整个视觉场景的 AI 解决方案。这种能力源于计算机视觉,这是人工智能的一个领域,使机器能够理解和解释图像及视频。
例如,如果你从任何角度或距离拍摄埃菲尔铁塔的照片,你的设备通常仍能通过计算机视觉识别出它,并将其整理到相册中对应的文件夹里。虽然这听起来很简单,但识别物体并不总是那么容易。图像会因尺寸、角度、比例或光照的不同而显得差异巨大,这使得机器难以稳定地进行识别。
为了帮助解决这个问题,研究人员开发了一种名为“尺度不变特征变换”(Scale Invariant Feature Transform),即 SIFT 的计算机视觉算法。该算法使得在不同观察条件下检测物体成为可能。SIFT 由 David Lowe 于 1999 年创建,旨在寻找和描述图像中的独特关键点,例如即使在图像被缩放、旋转或光照改变后依然可识别的角点、边缘或图案。
在像 Ultralytics YOLO11 这样由深度学习驱动的计算机视觉模型流行起来之前,SIFT 是计算机视觉中广泛使用的技术。它是目标识别(旨在识别照片中的特定项目)和图像匹配(通过寻找重叠的图像特征来对齐照片)等任务的标准方法。
在本文中,我们将简要概述 SIFT 是什么、其高层工作原理以及它在计算机视觉发展中的重要性。让我们开始吧!
Link to this section为什么 SIFT 算法对计算机视觉至关重要#
在图像中,同一个物体可能以多种不同方式呈现。例如,咖啡杯可能从上方拍摄、从侧面拍摄、在明亮的阳光下拍摄,或是在温暖的灯光下拍摄。同一个杯子在靠近相机时看起来会更大,而在较远时看起来更小。
所有这些差异使得教计算机识别物体成为一项复杂的任务。这项被称为目标检测的计算机视觉任务,要求视觉 AI 模型即使在尺寸、角度或光照条件发生变化时,也能准确地识别和定位物体。
为了实现这一点,计算机视觉依赖于一种称为特征提取或检测的过程。模型不会试图一次理解整个图像,而是寻找独特的图像特征,如尖锐的角点、独特的图案或在不同角度、比例和光照条件下仍能识别的纹理。
特别是,这正是尺度不变特征变换 (SIFT) 的设计目的。SIFT 是一种特征检测和描述算法,无论图像是如何拍摄的,它都能可靠地识别其中的物体。
Link to this section实现尺度不变性#
SIFT 算法具有几个使其在目标识别中非常实用的重要特性。其中一个关键特性称为“尺度不变性”。这意味着无论物体看起来很大且靠近相机,还是很小且距离较远,SIFT 都能识别出物体的各个部分。即使物体没有完全可见,该算法依然能够挑选出相同的关键点。
它利用一种称为“尺度空间理论”(scale-space theory) 的概念来实现这一点。简单来说,就是将图像在不同级别上进行模糊处理,以创建多个版本。随后,SIFT 会检查这些版本,寻找无论图像尺寸或清晰度如何变化都保持不变的图案和细节。
例如,在几米外拍摄的路牌看起来会比从远处拍摄的同一个路牌大得多,但 SIFT 仍能检测到相同的特征。这使得正确匹配这两张图像成为可能,即使路牌出现的尺度截然不同。
Link to this section确保旋转不变性#
图像中的物体也可能出现旋转,有时甚至是倒置的。SIFT 通过一种称为“旋转不变性”的特性来处理这个问题。对于检测到的每一个关键点,算法都会根据局部图像梯度分配一个一致的方向。这样,无论物体如何旋转,它都能被识别出来。
你可以把它想象成用一个小箭头标记每个关键点,显示它指向的方向。通过将特征与这些方向对齐,SIFT 确保了即使物体旋转,关键点也能正确匹配。例如,一张风景照中捕捉到的地标,即使另一张照片是在相机倾斜的角度下拍摄的,也能被准确地识别出来。
Link to this section对其他图像变化的适应能力#
除了尺寸和旋转外,图像还可能以其他方式发生变化,例如光照变化。物体上的光线可能从明亮变为暗淡,相机角度可能略有偏移,或者图像可能变得模糊或包含噪声。
SIFT 旨在处理这些类型的变化。它通过专注于那些具有独特性且对比度高的关键点来实现,因为这些特征受光照变化或视角微小偏移的影响较小。因此,SIFT 通常比简单的边缘或角点检测方法更可靠,而后者在条件变化时往往会失效。

图 1. 从 (a) 雨天图像和 (b) 其对应的清晰原始图像中提取的 SIFT 关键点。(来源)
考虑画廊里的一幅画。无论是在柔和的日光下、明亮的人造聚光灯下,还是在手持相机产生的轻微运动模糊中拍摄,它都能被识别出来。尽管存在这些差异,关键点依然保持足够稳定以进行准确匹配。
Link to this section尺度不变特征变换 (SIFT) 算法的工作原理#
接下来,让我们看看 SIFT 算法是如何工作的。这个过程可以分为四个主要步骤:关键点检测、关键点定位、方向分配和关键点描述。
Link to this section第 1 步:尺度空间极值检测#
第一步是寻找并检测关键点。关键点是图像中独特的点,例如角点或纹理的剧烈变化,它们有助于追踪或识别物体。
为了确保这些潜在的关键点能够在任何尺寸下被识别,SIFT 构建了所谓的尺度空间。这是一系列图像集合,通过使用高斯滤波器(一种平滑技术)逐渐模糊原始图像,并将结果分组为称为“八度”(octaves) 的层来创建。每个八度包含以增加的模糊级别呈现的同一图像,而下一个八度则是图像的缩小版本。
通过将一张模糊图像从另一张中减去,SIFT 计算出高斯差分 (DoG),它突显了亮度发生剧烈变化的区域。这些区域被选为候选关键点,因为它们在图像放大或缩小时保持一致。

图 2. DoG 通过减去不同模糊级别的图像来突出关键结构。(来源)
Link to this section第 2 步:关键点定位#
并非所有候选关键点都有用,因为有些可能很弱或不稳定。为了对其进行精简,SIFT 使用了一种称为泰勒级数展开的数学方法,这有助于更准确地估计关键点的位置。
在此步骤中,不可靠的点会被移除。对比度低(与周围环境混在一起)的关键点会被丢弃,直接位于边缘上的点也会被丢弃,因为它们太容易发生位移。这一过滤步骤仅保留了最稳定和独特的关键点。
Link to this section第 3 步:方向分配#
一旦识别出稳定的关键点,SIFT 就会使其具备旋转不变性,这意味着即使图像被侧向旋转或倒置,它们依然可以匹配。为此,SIFT 会分析关键点周围的亮度变化,这被称为梯度。梯度显示了像素强度的变化方向和强度,它们共同捕捉到了该点周围的局部结构。
对于每个关键点,SIFT 会考虑周围区域内的梯度,并将其分组为方向直方图。此直方图中的最高峰表示强度变化的主方向,并被指定为关键点的方向。梯度方向(显示强度变化的方位)和梯度幅度(表示变化强度)都被用于构建此直方图。
如果有其他接近最高峰的峰值,SIFT 会为同一个关键点分配多个方向。这可以防止在物体以不寻常角度出现时丢失重要特征。通过将每个关键点与其方向对齐,SIFT 确保了在下一步中生成的描述符保持一致。
换句话说,即使同一物体的两张图像旋转方式不同,方向对齐后的关键点依然能正确匹配。这一步赋予了 SIFT 强大的旋转处理能力,使其比早期的特征检测方法稳健得多。

图 3. 详细了解 SIFT 算法的第 3 步 (来源)
Link to this section第 4 步:关键点描述符#
SIFT 的最后一步是为每个关键点创建描述,以便它能在其他图像中被识别出来。
SIFT 通过观察关键点周围一个约 16x16 像素大小的小方形区域来实现这一点。此区域首先根据关键点的方向进行对齐,因此旋转不会影响它。随后,该区域被划分为 4x4 个小方格的网格。
在每个小方格中,SIFT 测量亮度在不同方向上的变化。这些变化被存储在直方图中,这就像是一张显示哪些方向最常见的图表。每个方格都有自己的直方图,总共 16 个方格产生了 16 个直方图。
最后,这些直方图被合并成一个单一的数字列表,总共 128 个数字。这个列表被称为“特征向量”,它就像关键点的指纹。因为它捕捉了点周围独特的纹理和结构,这个“指纹”使得在不同图像间匹配同一关键点成为可能,即使它们经过缩放、旋转或光照不同。

图 4. SIFT 工作原理概览 (来源)
Link to this sectionSIFT 在计算机视觉中的主要应用#
既然我们已经更好地理解了 SIFT 是什么以及它如何工作,让我们探索一下它在计算机视觉中的一些实际应用。
Link to this section目标识别与检测#
SIFT 的主要用途之一是目标识别与检测。这涉及教计算机在图像中识别和定位物体,即使这些物体看起来并不总是一样。例如,无论书本是靠近相机、远离相机,还是以某个角度旋转,SIFT 都能将其检测出来。
之所以有效,是因为 SIFT 提取的是高度独特且稳定的关键点。当这些关键点与 SIFT 描述符结合时,它们构成了 SIFT 特征,为在不同图像间匹配同一物体提供了一种可靠的方法。这些特征捕捉了物体保持一致的独特细节,从而即使在物体的尺寸、位置或方向发生变化时,也能实现可靠的图像特征匹配。

图 5. 使用 SIFT 在与原始图像方向不同的新图像中识别书封。图片由作者提供。
在深度学习流行起来之前,SIFT 是构建目标识别系统最可靠的方法之一。它广泛应用于需要跨大型图像数据集匹配对象的研究和应用中,尽管它通常需要消耗大量的计算资源。
Link to this section图像拼接与全景图创建#
SIFT 也可用于创建全景图,这是通过将多张照片拼接在一起制作而成的宽幅照片。使用 SIFT,可以在不同图像的重叠部分找到独特的关键点,然后将它们相互匹配。这些匹配点就像锚点,引导拼接过程了解照片应如何对齐。
匹配完成后,可以使用拼接算法来计算正确的对齐方式,通常使用将一张图像映射到另一张图像的几何变换。然后将图像混合,使接缝消失。最终结果是一个看起来像单一宽幅照片的无缝全景图,尽管它是由多张照片合成的。
Link to this section3D 重建与机器人技术#
SIFT 的另一个有趣应用是在 3D 重建中,将从不同角度拍摄的多张 2D 照片结合起来,构建三维模型。SIFT 的工作方式是跨这些图像寻找并匹配相同的点。
匹配完成后,可以使用三角测量法(一种根据不同视角计算深度的方法)来估计这些点的 3D 位置。这个过程是运动恢复结构 (SfM) 的一部分,这是一种利用多张重叠图像来估计场景 3D 形状以及拍摄照片的相机位置的技术。
结果通常是一个 3D 点云,即空间中勾勒出物体或环境的点集。SIFT 是使运动恢复结构变得实用的首批工具之一。虽然如今有更快、更常见的技术,但当准确度比速度更重要时,SIFT 依然被广泛使用。
SIFT 也被用于机器人技术,特别是在视觉 SLAM(即时定位与地图构建)中。SLAM 允许机器人在构建周围环境地图的同时确定自己的位置。
SIFT 关键点充当了可靠的地标,机器人可以在帧与帧之间识别这些地标,即使光照或角度发生变化。通过跟踪这些地标,机器人可以实时估计其位置并更新地图。虽然如今机器人领域更多地使用更快的特征检测器,但 SIFT 在早期的 SLAM 系统中发挥了重要作用,并且在鲁棒性比速度更关键的情况下依然至关重要。
Link to this sectionSIFT 的优势与注意事项#
尽管 SIFT 算法在计算机视觉中得到广泛应用并以可靠性著称,但它也存在一些权衡。因此,在决定它是否适合你的项目之前,权衡其优缺点非常重要。接下来,让我们梳理一下它的关键优势和局限性。
Link to this sectionSIFT 的核心优势#
以下是使用 SIFT 算法的一些优点:
- 尺度和旋转不变性: SIFT 提供尺度不变的关键点,当物体以不同尺寸或方向出现时,这些关键点保持相对稳定,与早期的特征检测器相比,这代表了显著的进步。
- 对光照和视角变化的适度鲁棒性: SIFT 可以处理亮度、对比度的变化或视角的微小偏移,尽管在更极端的情况下它的可靠性会降低。
- 能够在杂乱或部分遮挡的场景中工作: 由于 SIFT 检测出许多局部关键点,即使物体的一部分被覆盖或背景很复杂,它通常仍能识别出物体。
Link to this section性能考量与替代方案#
以下是使用 SIFT 算法的一些缺点:
- 计算开销大: SIFT 的多步过程和详细描述符使其比现代特征检测器更慢、资源消耗更大。为了改进这一点,研究人员开发了 SURF(加速稳健特征)算法,该算法使用更快的计算来寻找和描述特征。SURF 在某些情况下不如 SIFT 精确,但运行速度快得多,使其对时间敏感的任务更加实用。
- 不适合实时使用: 由于计算成本高,SIFT 在需要极高速度的应用场景中表现不佳,例如实时追踪或移动机器人。
- 多功能性有限: 虽然在许多情况下表现稳健,但在极端光照变化、大范围视角偏移或高度动态的场景中,SIFT 的效果不如更新的算法或机器学习方法。
在探索 SIFT 的优缺点时,你可能会注意到它的许多局限性为更先进的技术铺平了道路。具体来说,卷积神经网络 (CNN) 成为了强有力的替代方案。
CNN 是一种受到人类视觉系统工作方式启发的深度学习模型。它通过层级处理图像,从边缘和纹理等简单图案开始,逐步构建出更复杂的形状和物体。与 SIFT 的手工特征规则不同,CNN 直接从数据中学习特征表示。
这种数据驱动的学习意味着 CNN 在描述符匹配和分类任务上可以超越 SIFT。CNN 也更具表现力和鲁棒性,能更好地适应视觉数据的多样性和复杂性。
例如,基于 CNN 的模型在 ImageNet 上取得了突破性成果,这是一个包含数千万张跨数千个类别的标注图像的庞大基准数据集。ImageNet 旨在测试算法识别和分类物体的能力,它凸显了旧式基于特征的方法与深度学习之间的差距。
CNN 通过学习远比 SIFT 更丰富、更灵活的表示,迅速超越了 SIFT,使它们能够识别光照变化下、不同视角下,甚至是被部分遮挡的物体,而这些场景往往是 SIFT 的弱项。
Link to this section关键要点#
尺度不变特征变换算法在计算机视觉史上占有重要地位。它提供了一种即使在不断变化的环境中也能检测特征的可靠方法,并影响了今天使用的许多方法。
虽然更新的技术更快、更高效,但 SIFT 为它们奠定了基础。SIFT 展示了当今计算机视觉进步的起点,并突显了尖端 AI 系统已经取得了多大的跨越。
加入我们的全球社区,并查看我们的 GitHub 存储库以了解更多关于计算机视觉的内容。探索我们的解决方案页面,发现智慧农业中的 AI 和零售业中的计算机视觉等创新。查看我们的许可选项并开始构建你自己的计算机视觉模型。







