张芷铭的个人博客

SIFT

SIFT(Scale-Invariant Feature Transform)是一种用于图像特征检测和匹配的算法,由 David Lowe 在 1999 年提出,并在 2004 年发表完整论文。它可以在 不同尺度、旋转、光照变化的情况下保持稳定,常用于目标检测、图像拼接、物体识别等任务。

SIFT 算法的 4 个主要步骤

SIFT 主要包括 关键点检测关键点定位方向分配特征描述符生成 四个步骤。

1. 关键点检测(尺度空间极值检测)

目标:在不同尺度下寻找稳定的关键点。

• 由于图像中的目标可能具有不同的尺寸,为了检测所有尺度的关键点,SIFT 使用 高斯金字塔 来构造 尺度空间

• 通过对图像进行 不同尺度的模糊处理(高斯模糊),然后计算 差分高斯(DoG, Difference of Gaussian),找到图像在不同尺度上的关键点。

步骤:

  1. 构造高斯金字塔

• 先对图像进行不同 σ(标准差)的高斯模糊。

• 下采样(每次降采样 2 倍)形成不同的尺度空间。

  1. 计算 DoG(差分高斯)

• DoG = 高斯模糊后图像的相邻尺度之差

• DoG 可以突出关键的边缘和特征点。

  1. 寻找极值点

• 在 空间(x, y)和尺度(σ) 方向上寻找局部极值点(最大值或最小值)。

• 这意味着在 当前点的 26 个邻域点(前后 3 个尺度 × 3×3 邻域)中,该点是最突出的。

🔍 关键点:DoG 在局部极值处的点,即可能的特征点。

2. 关键点精确定位

目标:消除不稳定的特征点(如边缘点、噪声点),提高关键点的鲁棒性。

  1. 去除低对比度点

• 低对比度点容易受噪声干扰,因此使用 泰勒展开近似 来求解关键点的精确位置,并去掉低对比度点(|DoG 值| 低于设定阈值)。

  1. 去除边缘响应

• 关键点可能出现在边缘,但边缘特征容易变化且不稳定。

• 通过 Hessian 矩阵的特征值分析 计算主曲率,并剔除边缘响应点。

🔍 最终留下的是在不同尺度上稳定的关键点。

3. 方向分配

目标:确保特征点在旋转变化下仍能正确匹配。

• 在关键点附近计算 梯度直方图,确定主要方向,以实现旋转不变性。

  1. 计算关键点邻域的 梯度方向和幅值

其中 是高斯模糊后的图像。

  1. 计算 梯度方向直方图(分成 36 个方向)。

• 直方图峰值对应的方向被赋予该关键点。

🔍 关键点的方向分配后,使其具有旋转不变性。

4. 生成 SIFT 特征描述符

目标:构造一个 128 维的特征向量,使其对光照、尺度、旋转变化具有鲁棒性。

  1. 以关键点为中心,取 16×16 的邻域窗口,分成 4×4=16 个子区域

  2. 计算每个子区域内的 8 个方向梯度直方图(8 个方向 × 16 个区域 = 128 维)。

  3. 归一化,确保特征向量对光照变化不敏感。

🔍 最终每个关键点都有一个 128 维的特征向量,便于后续匹配。

SIFT 特征匹配

有了 SIFT 关键点和 128 维描述符后,可以进行 特征匹配,常见的方法有:

  1. 暴力匹配(BFMatcher)

• 直接计算 欧式距离(L2 范数),找到最近邻匹配。

  1. FLANN(快速近似最近邻搜索)

• 适用于大规模匹配,搜索速度更快。

  1. KNN 近邻匹配 + Lowe’s 比值测试

• 取两个最近的匹配点,若 最佳匹配的距离 < 0.75 × 次佳匹配的距离,则认为是正确匹配点。

SIFT 的特点

优点

尺度不变性:可以检测不同大小的目标。

旋转不变性:关键点有方向分配,不受旋转影响。

光照鲁棒性:特征基于梯度,不受亮度影响。

特征稳定:在噪声和遮挡情况下仍能匹配目标。

缺点

计算量大:SIFT 计算较慢,不适用于实时处理。

对仿射变换的鲁棒性一般:在剧烈的透视变换下匹配效果下降。

专利问题(2004 年至 2020 年):SIFT 曾受专利保护,直到 2020 年才进入公有领域。

SIFT 适用场景

图像拼接:计算两张图像之间的重叠区域(如全景图拼接)。

目标检测:在大图中找到模板匹配的目标物体。

机器人导航:检测环境中的关键特征进行定位。

医学影像分析:如 CT、MRI 图像配准。

如果实时性要求高,可以用 ORB(Oriented FAST and Rotated BRIEF) 代替 SIFT,计算更快,但精度略低。

总结

步骤关键操作作用
1. 关键点检测DoG + 高斯金字塔选择尺度空间中的显著点
2. 关键点精确定位去除低对比度点和边缘点只保留稳定的关键点
3. 方向分配计算梯度直方图让特征点具有旋转不变性
4. 特征描述符128 维梯度直方图用于特征匹配

🔹 SIFT 能在不同尺度、旋转、光照变化下稳定匹配特征点,但计算量较大,不适用于实时应用。

💬 评论