Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
指南

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

了解 SIFT 算法如何检测并描述具有尺度和旋转不变性的关键点、它的四个步骤如何运作,以及它在计算机视觉中的应用场景。

Abirami VinaAbirami Vina11 分钟阅读
计算机视觉中的尺度不变特征变换(SIFT)算法

如需直观了解本文介绍的概念,请观看下方视频。

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

例如,无论从哪个角度或多远的距离拍摄埃菲尔铁塔,你的设备通常都能通过计算机视觉识别它,并将照片整理到相册中的正确文件夹里。这听起来很简单,但识别物体并非总是那么容易。图像会因大小、角度、尺度或光照不同而呈现出很大差异,因此机器很难始终如一地识别它们。

为了解决这个问题,研究人员开发了一种名为尺度不变特征变换(SIFT)的计算机视觉算法。这种算法能够在不同的成像条件下检测物体。SIFT 由 David Lowe 于 1999 年创建,旨在查找并描述图像中的独特关键点,例如角点、边缘或图案;即使图像经过缩放、旋转或光照发生变化,这些特征仍然可以被识别。

在 Ultralytics YOLO11 这类由深度学习驱动的计算机视觉模型普及之前,SIFT 是计算机视觉中广泛使用的一种技术。它曾是目标识别等任务的标准方法,目标识别旨在从照片中识别特定物体;SIFT 也用于图像匹配,通过寻找重叠的图像特征来对齐照片。

本文将简要介绍 SIFT,包括它是什么、其基本工作原理,以及它为何对计算机视觉的发展至关重要。

SIFT 算法为何对计算机视觉至关重要#

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

所有这些差异都让教会计算机识别物体变得很复杂。这项计算机视觉任务称为目标检测,要求视觉 AI 模型即使面对物体大小、角度或光照条件的变化,也能准确识别并定位物体。

为了实现这一点,计算机视觉会采用称为特征提取或特征检测的过程。模型不会试图一次性理解整幅图像,而是寻找鲜明的图像特征,例如清晰的角点、独特的图案或纹理;这些特征在不同角度、尺度和光照条件下仍然可以被识别。

尺度不变特征变换(SIFT)的设计目的正是如此。SIFT 是一种特征检测与描述算法,无论图像以何种方式拍摄,它都能可靠地识别其中的物体。

实现尺度不变性#

SIFT 算法有几个重要特性,使其适用于物体识别。其中一项关键特性称为尺度不变性。这意味着无论物体看起来很大、离相机很近,还是看起来很小、离相机很远,SIFT 都能识别物体的各个部分。即使物体没有完全出现在画面中,算法仍能找出相同的关键点。

SIFT 通过尺度空间理论实现这一点。简单来说,算法会在不同程度上模糊图像,从而生成多个版本。随后,SIFT 会逐一检查这些版本,寻找无论图像尺寸或清晰度如何变化都保持不变的图案和细节。

例如,从几米外拍摄的路牌看起来会比远距离拍摄的同一路牌大得多,但 SIFT 仍能检测到相同的独特特征。即使路牌呈现出的尺度差异很大,这也能让算法正确匹配两张图像。

确保旋转不变性#

图像中的物体也可能发生旋转,有时甚至会倒置。SIFT 通过称为旋转不变性的特性来应对这一情况。对于检测到的每个关键点,算法都会根据局部图像梯度分配一个一致的方向。这样,无论物体如何旋转,都能被识别出来。

你可以把它想象成在每个关键点上标一支小箭头,指明该点的朝向。通过将特征与这些方向对齐,SIFT 能确保即使物体发生旋转,关键点仍能正确匹配。例如,即使另一张地标照片是相机倾斜拍摄的,系统仍能正确识别出风景照中的同一地标。

应对其他图像变化#

除了尺寸和旋转,图像还会发生其他变化,例如光照变化。物体上的光线可能从明亮变得昏暗,相机角度可能略有偏移,图像也可能出现模糊或噪声。

SIFT 专为应对此类变化而设计。它会重点关注鲜明且对比度高的关键点,因为这些特征受光照变化或视角轻微偏移的影响较小。因此,与简单的边缘或角点检测方法相比,SIFT 往往更可靠;后者常常会在条件变化时失效。

从雨天图像及其无雨输入图像中提取的 SIFT 关键点

图 1. 从 (a) 雨天图像和 (b) 对应的无雨输入图像中提取的 SIFT 关键点。(来源)

想象一幅画廊中的画作。无论是在柔和的日光下、明亮的人造聚光灯下拍摄,还是因手持相机轻微抖动而产生模糊,它仍然可以被识别。尽管拍摄条件各不相同,关键点仍足够稳定,可以准确匹配。

尺度不变特征变换(SIFT)算法的工作原理#

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

步骤 1:尺度空间极值检测#

第一步是查找并检测关键点,也就是图像中具有显著特征的位置,例如角点或纹理急剧变化的区域,它们有助于追踪或识别对象。

为确保这些候选关键点在任何尺度下都能被识别,SIFT 会构建所谓的尺度空间。它由一组图像构成:先使用高斯滤波器(一种平滑技术)逐渐模糊原始图像,再将结果分组成称为八度组的层。每个八度组都包含模糊程度逐渐增加的同一图像,而下一个八度组则是尺寸更小的图像版本。

通过用一张模糊图像减去另一张,SIFT 会计算高斯差分(DoG),突出显示亮度急剧变化的区域。这些区域会被选为候选关键点,因为图像放大或缩小时,它们仍能保持稳定。

通过相减不同模糊程度的图像,DoG 突出显示关键结构

图 2. 通过相减不同模糊程度的图像,DoG 突出显示关键结构。(来源)

步骤 2:关键点定位#

并非所有候选关键点都有用,因为有些可能较弱或不稳定。为了筛选优化这些关键点,SIFT 使用一种称为泰勒级数展开的数学方法,帮助更准确地估算关键点的确切位置。

在这一步中,算法会移除不可靠的点。对比度低、与周围区域融为一体的关键点会被舍弃,直接位于边缘上的关键点也会被舍弃,因为它们很容易发生偏移。经过这一步筛选后,只保留最稳定、最具独特性的关键点。

步骤 3:方向分配#

识别出稳定的关键点后,SIFT 会使这些关键点具备旋转不变性,也就是说,即使图像横向或倒置,也仍然能够匹配。为此,SIFT 会分析每个关键点周围的亮度变化,这称为梯度。梯度同时体现像素强度变化的方向和幅度,两者结合起来能描述该点周围的局部结构。

对于每个关键点,SIFT 会考察其周围区域内的梯度,并将它们汇总到方向直方图中。直方图中的最高峰表示强度变化的主导方向,该方向随后会被指定为关键点的方向。构建此直方图时,会同时使用梯度方向(显示强度变化的位置)和梯度幅值(表示变化强度)。

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

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

深入了解 SIFT 算法的步骤 3

图 3. 深入了解 SIFT 算法的步骤 3(来源)

步骤 4:关键点描述符#

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

SIFT 会查看每个关键点周围一个约为 16×16 像素的小方块区域来完成这项工作。首先将该区域按照关键点的方向对齐,以避免旋转对其造成影响。然后将区域划分为 4×4 的网格,每个网格都是一个更小的方块。

在每个小方块中,SIFT 会测量亮度在不同方向上的变化,并将这些变化存储在称为直方图的数据结构中;直方图就像一张图表,显示哪些方向最常见。每个小方块都有自己的直方图,16 个小方块合起来会生成 16 个直方图。

最后,这些直方图会合并为一个包含 128 个数字的列表。这个列表称为特征向量,相当于关键点的指纹。由于它捕捉了关键点周围独特的纹理和结构,因此即使图像经过缩放、旋转或光照发生变化,这个指纹也能用于匹配不同图像中的同一关键点。

SIFT 工作原理概览

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

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和零售业中的计算机视觉等创新。查看我们的许可选项,开始构建你自己的计算机视觉模型。

作者

Abirami Vina
Abirami Vina

内容创作者 · Ultralytics

Abirami Vina 职业生涯始于计算机视觉工程师,由此在视觉 AI 和机器学习领域打下了坚实基础。她是 Ultralytics 的内容创作者,也是 Scribe of AI 的创始人兼首席撰稿人,为专注 AI 的公司撰写高质量技术内容。她热衷于让 AI 更易理解、更具吸引力,通过自己的作品连接前沿技术与现实影响。

评论

提出问题、分享你的结果,或帮助其他人。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来