张芷铭的个人博客

SIFT(Scale-Invariant Feature Transform)是图像特征检测算法,在尺度、旋转、光照变化下保持稳定,适用于目标检测、图像拼接、物体识别。

算法步骤

SIFT 包含关键点检测、定位、方向分配、描述符生成四个步骤。

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

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

  • 使用高斯金字塔构造尺度空间
  • 计算差分高斯(DoG)找到不同尺度上的关键点
  • 在空间(x, y)和尺度(σ)方向寻找局部极值点(26邻域)

步骤

  1. 构造高斯金字塔:不同 σ 高斯模糊 + 下采样
  2. 计算 DoG:相邻尺度之差,突出边缘和特征点
  3. 寻找极值点:在 26 邻域中找出局部最大/最小值

关键点精确定位

目标:消除不稳定特征点(边缘点、噪声点)。

  1. 去除低对比度点:泰勒展开近似求解精确位置,剔除 |DoG| 低于阈值的点
  2. 去除边缘响应:Hessian 矩阵特征值分析,剔除边缘响应点

方向分配

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

  • 计算关键点邻域的梯度方向和幅值
  • 计算梯度方向直方图(36 个方向)
  • 峰值方向赋予该关键点,实现旋转不变性

生成特征描述符

目标:构造 128 维特征向量,对光照、尺度、旋转具有鲁棒性。

  1. 取 16×16 邻域窗口,分成 4×4=16 个子区域
  2. 计算每个子区域的 8 方向梯度直方图(8×16=128 维)
  3. 归一化,确保对光照变化不敏感

特征匹配

方法说明
BFMatcher计算欧式距离,找最近邻匹配
FLANN快速近似最近邻搜索,适合大规模匹配
KNN + Lowe’s 比值测试最佳匹配距离 < 0.75 × 次佳匹配距离则接受

特点

优点缺点
尺度不变性计算量大,不适用实时处理
旋转不变性仿射变换鲁棒性一般
光照鲁棒性曾受专利保护(2020 年解禁)
特征稳定

适用场景

  • 图像拼接(全景图)
  • 目标检测
  • 机器人导航
  • 医学影像配准

实时性要求高时可用 ORB 代替,计算更快但精度略低。

总结

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

Comments