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

想象一下画廊里的一幅画。无论是在柔和的日光下、明亮的人造聚光灯下拍摄,甚至是在手持相机轻微运动模糊的情况下拍摄,它仍然可以被识别。尽管存在这些差异,但关键点仍然足够稳定,可以进行精确匹配。
接下来,让我们了解一下 SIFT 算法的工作原理。这个过程可以分解为四个主要步骤:关键点检测、关键点定位、方向分配和关键点描述。
第一步是找到并检测关键点,这些关键点是图像中独特的点,例如角或纹理的急剧变化,有助于跟踪或识别对象。
为了确保这些潜在的关键点可以在任何尺寸下被识别,SIFT 构建了一个所谓的尺度空间。这是一个通过使用高斯滤波器(一种平滑技术)逐渐模糊原始图像并将结果分组到称为八度音阶的层中而创建的图像集合。每个八度音阶包含相同图像,但模糊程度不断增加,而下一个八度音阶是图像的较小版本。
通过从另一张模糊图像中减去一张模糊图像,SIFT 计算高斯差分 (DoG),从而突出显示亮度发生急剧变化的区域。这些区域被选为候选关键点,因为当图像放大或缩小时,它们保持一致。

并非所有候选关键点都有用,因为有些可能较弱或不稳定。为了改进它们,SIFT 使用一种称为泰勒级数展开的数学方法,该方法有助于以更高的精度估计关键点的确切位置。
在此步骤中,将删除不可靠的点。对比度低、融入周围环境的关键点以及直接位于边缘上的关键点(因为它们很容易移动)将被丢弃。此过滤步骤仅留下最稳定和最独特的关键点。
一旦识别出稳定的关键点,SIFT 会使其具有旋转不变性,这意味着即使图像侧向或倒置,它们仍然可以匹配。为此,SIFT 会分析每个关键点周围的亮度变化,这被称为梯度。梯度显示像素强度的方向和变化强度,它们共同捕捉该点周围的局部结构。
对于每个关键点,SIFT 考虑周围区域内的梯度,并将它们分组到方向直方图中。该直方图中最高的峰值表示强度变化的主要方向,然后将其分配为关键点的方向。梯度方向(显示强度在哪里变化)和梯度幅度(指示该变化的强度)都用于构建此直方图。
如果存在其他强度几乎相同的峰值,SIFT 会为同一关键点分配多个方向。这可以防止当物体以不寻常的角度出现时丢失重要的特征。通过将每个关键点与其方向对齐,SIFT 确保在下一步中生成的描述符保持一致。
换句话说,即使同一物体的两张图像以不同的方式旋转,方向对齐的关键点仍然可以正确匹配。这一步赋予了SIFT强大的处理旋转能力,使其比早期的特征检测方法更加稳健。

SIFT 中的最后一步是创建每个关键点的描述,以便可以在其他图像中识别它。
SIFT 的实现方式是观察每个关键点周围的一个小方块区域,大约 16x16 像素大小。这个方块首先会根据关键点的方向进行对齐,以避免旋转的影响。然后,该方块会被分成一个 4x4 的更小方块网格。
在每个小方块中,SIFT 测量不同方向上的亮度变化。这些变化存储在称为直方图的东西中,直方图就像一个图表,显示哪个方向最常见。每个方块都有自己的直方图,16 个方块总共产生 16 个直方图。
最后,这些直方图被组合成一个包含 128 个数字的列表。这个列表被称为特征向量,它就像关键点的指纹。因为它捕捉了该点周围独特的纹理和结构,所以即使图像经过调整大小、旋转或光照变化,也可以通过这个指纹来匹配不同图像中的相同关键点。

既然我们对SIFT是什么以及它如何工作有了更深入的了解,那么让我们来探索它在计算机视觉中的一些实际应用。
SIFT 的主要用途之一是目标识别和检测。这包括教计算机识别和定位图像中的目标,即使这些目标看起来并不总是相同。例如,无论一本书是靠近相机、离相机较远还是以一定角度旋转,SIFT 都可以检测到它。
之所以有效,是因为 SIFT 提取的关键点具有高度的区分性和稳定性。当这些关键点与 SIFT 描述符配对时,它们会形成 SIFT 特征,从而提供了一种可靠的方法来匹配不同图像中的同一对象。这些特征捕捉了对象的独特细节,这些细节保持一致,即使对象的大小、位置或方向发生变化,也能实现跨图像的可靠特征匹配。

在深度学习普及之前,SIFT是构建物体识别系统最可靠的方法之一。它广泛应用于需要在大型图像数据集中匹配对象的研究和应用中,尽管它通常需要大量的计算资源。
SIFT 还可以用于创建全景图像,这是一种通过拼接多张照片而成的宽幅照片。使用 SIFT,可以在不同图像的重叠部分找到独特的关键点,并将它们相互匹配。这些匹配就像锚点一样,指导拼接过程如何对齐照片。
匹配完成后,可以使用拼接算法来计算正确的对齐方式,通常使用将一个图像映射到另一个图像的几何变换。然后将图像混合,使接缝消失。最终结果是无缝全景图,看起来像一张宽照片,即使它是由多张照片创建的。
SIFT 另一个有趣的应用是在 3D 重建中,从不同角度拍摄的多个 2D 照片组合在一起以构建三维模型。SIFT 的工作原理是查找和匹配这些图像中的相同点。
一旦完成匹配,就可以使用三角测量法估算这些点的 3D 位置,这是一种从不同视点计算深度的方法。此过程是运动结构 (SfM) 的一部分,该技术使用多个重叠图像来估算场景的 3D 形状以及拍摄照片的相机位置。
结果通常是 3D 点云,即空间中勾勒出对象或环境的点集合。SIFT 是使运动结构重建 (structure-from-motion) 成为现实的首批工具之一。虽然现在更新的技术更快、更常见,但当精度比速度更重要时,SIFT 仍在应用。
SIFT 也被应用于 机器人技术 领域,尤其是在视觉 SLAM(即时定位与地图构建)中。SLAM 允许机器人在构建周围环境地图的同时确定自身位置。
SIFT 关键点充当可靠的地标,机器人可以在不同帧中识别这些地标,即使光照或角度发生变化。通过跟踪这些地标,机器人可以估计其位置并动态更新其地图。尽管现在机器人技术中更常使用更快速的特征检测器,但 SIFT 在早期的 SLAM 系统中发挥了重要作用,并且在鲁棒性比速度更关键的情况下仍然至关重要。
虽然 SIFT 算法已广泛应用于计算机视觉,并且以其可靠性而闻名,但它也存在一些缺点。因此,在决定它是否适合某个项目之前,权衡其优缺点非常重要。接下来,让我们了解它的主要优势和局限性。
以下是使用 SIFT 算法的一些优点:
以下是使用SIFT算法的一些缺点:
在探索 SIFT 的优缺点时,您可能会注意到它的许多局限性为更先进的技术铺平了道路。特别是,卷积神经网络 (CNN) 成为一种强大的替代方案。
CNN 是一种深度学习模型,其灵感来自人类视觉系统的工作方式。它按层处理图像,从边缘和纹理等简单模式开始,逐渐构建成更复杂的形状和对象。与 SIFT 手工制作的特征规则不同,CNN 直接从数据中学习特征表示。
这种数据驱动的学习意味着 CNN 在描述符匹配和分类任务中可以胜过 SIFT。CNN 也更具表现力和鲁棒性,能够更好地适应视觉数据的可变性和复杂性。
例如,基于 CNN 的模型在 ImageNet 上取得了突破性成果,这是一个包含数百万张标记图像和数千个类别的巨大基准数据集。ImageNet 旨在测试算法识别和分类对象的能力,能够突出显示旧的基于特征的方法与深度学习之间的差距。
CNN 通过学习更丰富、更灵活的表示,迅速超越了 SIFT,使其能够在不断变化的光照、不同视角下,甚至在部分隐藏的情况下识别物体,而 SIFT 在这些情况下通常会遇到困难。
尺度不变特征变换(Scale Invariant Feature Transform,SIFT)算法在计算机视觉发展史上占有重要地位。它提供了一种可靠的方法来检测变化环境中的特征,并影响了当今使用的许多方法。
虽然较新的技术更快更高效,但 SIFT 为它们奠定了基础。SIFT 展示了当今计算机视觉的进步从何处开始,并突出了尖端 AI 系统已经走了多远。
加入我们的全球社区,并查看我们的GitHub代码仓库,以了解更多关于计算机视觉的信息。探索我们的解决方案页面,以发现诸如农业领域的AI和零售领域的计算机视觉等创新。查看我们的许可选项,并开始构建您自己的计算机视觉模型。