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

如需直观了解本文涵盖的概念,请观看下方视频。
如今,我们使用的许多智能设备,从手机、相机到智能家居系统,都配备了能够识别人脸、物体,甚至完整视觉场景的 AI 解决方案。这种能力来自计算机视觉,这是人工智能的一个领域,能够让机器理解和解释图像与视频。
例如,无论你从哪个角度或距离拍摄埃菲尔铁塔,设备通常都能利用计算机视觉识别出它,并将照片整理到图库中的正确文件夹。虽然这听起来很简单,但识别物体并不总是容易。图像可能会因尺寸、角度、尺度或光照不同而呈现出很大差异,这使机器难以始终如一地识别它们。
为了解决这一问题,研究人员开发了一种名为尺度不变特征变换(SIFT)的计算机视觉算法。该算法能够在不同的观察条件下检测物体。SIFT 由 David Lowe 于 1999 年创建,旨在查找并描述图像中的独特关键点,例如即使图像经过缩放、旋转或光照发生变化,仍然能够被识别的角点、边缘或图案。
在由深度学习驱动的计算机视觉模型(如 Ultralytics YOLO11)流行之前,SIFT 是计算机视觉中广泛使用的技术。它曾是物体识别等任务的标准方法:物体识别的目标是找出照片中的特定物体;图像匹配则是通过查找重叠的图像特征来对齐照片。
在本文中,我们将快速了解 SIFT 的定义、它的基本工作原理,以及它为何在计算机视觉的发展历程中具有重要意义。让我们开始吧!
SIFT 算法为何对计算机视觉至关重要#
在图像中,同一个物体可能以许多不同的方式出现。例如,一个咖啡杯可能从上方、侧面、明亮的阳光下或暖色灯光下拍摄。同一个杯子离相机较近时看起来更大,距离较远时则会显得更小。
所有这些差异都使教会计算机识别物体变得复杂。这项被称为物体检测的计算机视觉任务要求 Vision AI 模型准确识别和定位物体,即使物体的尺寸、角度或光照条件发生变化。
为了实现这一点,计算机视觉依赖一种称为特征提取或特征检测的过程。模型不会试图一次性理解整幅图像,而是寻找鲜明的图像特征,例如在不同角度、尺度和光照条件下仍可识别的锐利角点、独特图案或纹理。
具体来说,这正是尺度不变特征变换(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,可以在不同图像的重叠部分找到独特的关键点,然后将它们相互匹配。这些匹配点就像锚点,为拼接过程提供指导,确定照片应如何对齐。
匹配完成后,可以使用拼接算法计算正确的对齐方式,通常会采用将一幅图像映射到另一幅图像上的几何变换。随后对图像进行融合,使接缝消失。最终得到的全景图浑然一体,看起来像一张宽幅照片,尽管它实际上由多次拍摄的照片构成。
三维重建与机器人技术#
SIFT 的另一个有趣应用是三维重建,即将从不同角度拍摄的多张二维照片组合起来,构建三维模型。SIFT 通过在这些图像中查找并匹配相同的点来实现这一过程。
完成匹配后,可以使用三角测量估计这些点的三维位置。三角测量是一种根据不同视点计算深度的方法。这个过程属于运动恢复结构(SfM),这是一种利用多张相互重叠的图像来估计场景三维形状以及拍摄这些照片的相机位置的技术。
最终通常会得到一个三维点云,即由空间中的一组点构成的集合,用于勾勒物体或环境的轮廓。SIFT 是最早让运动恢复结构变得实用的工具之一。虽然如今更新的技术速度更快、应用也更广泛,但在准确性比速度更重要的情况下,SIFT 仍然持续得到应用。
SIFT 也被用于机器人技术,尤其是视觉 SLAM(同时定位与建图)。SLAM 能让机器人在构建周围环境地图的同时确定自身所在位置。
SIFT 关键点可以作为可靠的地标,让机器人即使在光照或角度发生变化时,也能在不同帧之间识别它们。通过跟踪这些地标,机器人可以估计自身位置,并动态更新地图。尽管如今机器人技术更常使用速度更快的特征检测器,但 SIFT 在早期 SLAM 系统中发挥了重要作用;在稳健性比速度更重要的场景中,它仍然十分关键。
SIFT 的优势与注意事项#
SIFT 算法已广泛用于计算机视觉,并以可靠著称,但它也存在一些权衡。因此,在决定它是否适合某个项目之前,仔细评估其优缺点非常重要。接下来,让我们了解它的主要优势和局限性。
SIFT 的核心优势#
以下是使用 SIFT 算法的一些优点:
- 尺度和旋转不变性: SIFT 提供的尺度不变关键点在物体以不同尺寸或方向出现时仍能保持相对稳定,与早期特征检测器相比,这是一个重要进步。
- 对光照和视角变化具有中等程度的稳健性: SIFT 可以处理亮度、对比度变化或视角的小幅偏移,但在更极端的条件下可靠性会降低。
- 能够处理杂乱或部分遮挡的场景: 由于 SIFT 会检测许多局部关键点,即使物体的一部分被遮挡或背景较为复杂,它通常仍能识别出该物体。
性能注意事项与替代方案#
以下是使用 SIFT 算法的一些缺点:
- 计算成本高: SIFT 的多步骤流程和详细描述子使其比现代特征检测器更慢、也更消耗资源。为改进这一点,研究人员开发了 SURF(加速稳健特征)算法,使用更快的计算来查找和描述特征。在某些情况下,SURF 的精度不如 SIFT,但运行速度快得多,因此更适合对时间敏感的任务。
- 不适合实时使用: 由于计算成本较高,SIFT 在速度至关重要的应用中表现不佳,例如实时跟踪或移动机器人。
- 通用性有限:虽然 SIFT 在许多情况下都很稳健,但在极端光照变化、大幅视角变化或高度动态的场景中效果较差,而较新的算法或机器学习方法在这些情况下表现更好。
在探索 SIFT 的优缺点时,你可能会注意到,它的许多局限性为更先进技术的发展铺平了道路。具体来说,卷积神经网络(CNNs)逐渐成为一种强大的替代方案。
CNN 是一种受人类视觉系统工作方式启发的深度学习模型。它分层处理图像,从边缘和纹理等简单图案开始,逐步构建出更复杂的形状和物体。与 SIFT 手工设计的特征规则不同,CNN 会直接从数据中学习特征表示。
这种数据驱动的学习方式意味着,CNN 在描述子匹配和分类任务中可以超越 SIFT。CNN 还具有更强的表达能力和稳健性,能够更好地适应视觉数据的变化性与复杂性。
例如,基于 CNN 的模型在 ImageNet 上取得了突破性成果。ImageNet 是一个大型基准数据集,包含数百万张横跨数千个类别的标注图像。它旨在测试算法识别和分类物体的能力,也能够突出较早的基于特征的方法与深度学习之间的差距。
CNN 通过学习更加丰富、灵活的表示,很快超越了 SIFT,使其能够在光照变化、不同视角,甚至物体部分被遮挡的情况下识别物体,而这些场景往往是 SIFT 难以应对的。
要点总结#
尺度不变特征变换算法在计算机视觉发展史上占据重要地位。它提供了一种即使在环境不断变化时也能检测特征的可靠方法,并影响了如今使用的许多技术。
虽然更新的技术速度更快、效率更高,但 SIFT 为它们奠定了基础。SIFT 展示了当今计算机视觉进步的起点,也凸显了尖端 AI 系统已经取得的巨大进展。
加入我们的全球社区,并查看我们的 GitHub 代码仓库,进一步了解计算机视觉。探索我们的解决方案页面,了解农业 AI和零售业计算机视觉等创新应用。查看我们的许可选项,开始构建你自己的计算机视觉模型。









