SIFT(尺度不变特征变换)和 SURF(加速稳健特征)是旨在识别和描述图像中独特特征的算法,用于图像匹配或对象识别等任务。两者都通过检测关键点(独特的兴趣点)和生成描述符(这些点周围区域的数学表示)来工作,即使在尺度、旋转或光照发生变化的情况下,也能实现跨图像的比较。
SIFT 分四个主要步骤进行。首先,它使用“高斯差分”(DoG)方法识别跨不同尺度的稳定特征的关键点,该方法突出显示从周围环境突出的区域。接下来,它丢弃低对比度或类似边缘的关键点,以专注于独特的定位。然后,它基于局部梯度方向为每个关键点分配一个方向,使特征具有旋转不变性。最后,它通过将关键点周围的区域划分为子区域并计算梯度直方图来创建 128 维描述符。例如,在全景拼接中,SIFT 可以匹配重叠图像之间的关键点以准确对齐它们,即使一个图像旋转或缩放不同。
SURF 简化并加速了 SIFT 的方法。SURF 没有使用 DoG,而是使用基于 Hessian 矩阵的检测器和近似值(如盒式滤波器)来快速识别类似斑点的结构。积分图像(预先计算的表格,可加速面积计算)用于使此步骤高效。对于方向分配,SURF 计算关键点周围圆形区域内的水平和垂直方向上的 Haar 小波响应。描述符本身使用子区域上求和的小波响应,从而产生 64 维或 128 维向量。SURF 通过牺牲一些精度来换取速度,使其适用于实时应用。例如,在实时视频中检测对象的移动应用程序可能会使用 SURF 逐帧跟踪特征而不会出现滞后。
比较和用例:SIFT 由于其详细的基于梯度的描述符,对尺度变化更准确、更鲁棒,使其非常适合 3D 重建或详细图像检索等应用。SURF 更快,更适合增强现实或机器人导航等延迟很重要的实时任务。但是,与 SIFT 相比,SURF 在极端缩放方面可能会遇到困难。开发人员根据权衡在两者之间进行选择:SIFT 用于受控环境中的精度,SURF 用于动态场景中的速度。尽管有更新的深度学习方法,但两者仍然是基于特征的图像搜索的基础。