计算机视觉之图像处理-----SIFT、SURF、FAST、ORB 特征提取算法深度解析

发布于:2025-02-21 ⋅ 阅读:(16) ⋅ 点赞:(0)

SIFT、SURF、FAST、ORB 特征提取算法深度解析

前言

在图像处理领域亦或是计算机视觉中,首先我们需要先理解几个名词:

什么是尺度不变?

在实际场景中,同一物体可能出现在不同距离(如远处的山和近处的树),导致其在图像中的尺度不同,也引出了多尺度的概念。算法检测到的特征在图像缩放(放大或缩小)后仍能被正确识别和匹配,即尺度不变性。

什么是旋转不变?

物体在现实中的朝向可能任意(如手机横屏/竖屏拍摄同一物体)。算法检测到的特征在图像旋转后仍能被正确识别和匹配,即旋转不变性。

什么是角点:

角点是图像中具有显著变化的点,通常位于边缘的交汇处。它们在计算机视觉中扮演着重要角色,是许多任务的基础特征。通过角点检测算法(如Harris、FAST等),可以有效地提取和利用这些特征。在数学上通过梯度变化和自相关矩阵进行判断。

什么是斑点:

在图像处理和计算机视觉中,斑点(Blob)是指图像中与周围区域在亮度、颜色或纹理上存在显著差异的连通区域。斑点的检测通常基于二阶导数或高斯滤波响应,核心思想是寻找局部极值区域。

斑点 vs. 角点 vs. 边缘

特征类型 定义 数学表征 示例场景
斑点 闭合的均匀区域,周围强度突变 二阶导数极值(LoG/DoG) 医学图像中的肿瘤
角点 多方向强度变化的交点 一阶导数的双方向极值 棋盘格的交叉点
边缘 单方向强度突变的线状结构 一阶导数的极值 物体的轮廓线

什么是图像金字塔?

是一种多尺度表示方法,通过对图像进行多次下采样(缩小)或上采样(放大),生成一系列分辨率逐渐降低或升高的图像集合。


SIFT(尺度不变特征变换)

SIFT(尺度不变特征变换)是一种用于图像处理的特征检测与描述算法,具有尺度、旋转、光照不变性,广泛应用于图像匹配、物体识别等领域。其核心步骤分为四个阶段:

1. 尺度空间的极值检测:

算法通过构建高斯金字塔并计算高斯差分(DoG)来模拟不同尺度下的图像模糊效果,在DoG空间中检测局部极值点作为候选关键点。

2. 关键点定位:

在不同尺寸空间下可能找出过多的关键点,有些关键点可能相对不易辨识或易受噪声干扰。通过泰勒展开插值修正位置和尺度,并剔除低对比度点与边缘响应点以保留稳定的关键点,借此消除位于边上或是易受噪声干扰的关键点。

3. 方向分配:

为每个关键点分配主方向:在其邻域内计算像素梯度幅值和方向,生成方向直方图,取峰值作为主方向以实现旋转不变性,若存在次峰则分配多个方向以增强鲁棒性。

4. 生成关键点描述子:

围绕关键点生成描述子:将邻域旋转至主方向后划分为4×4子区域,每个子区域统计8个方向的梯度直方图,形成128维向量,并通过归一化和截断抑制光照变化的影响。

具体可以参考这篇博客:https://www.cnblogs.com/liuchaogege/p/5155739.html

SURF**(加速稳健特征)**

SURF(Speeded-Up Robust Features)是一种高效且鲁棒的特征检测与描述算法,旨在解决SIFT算法计算复杂度高的问题,同时保持对尺度、旋转和光照变化的鲁棒性。以下是SURF的核心思想与流程:

1. 特征点检测: SURF利用积分图像加速计算,通过近似Hessian矩阵检测关键点:在图像的多尺度空间中,采用不同尺寸的盒式滤波器替代传统高斯卷积,直接调整滤波器大小而非降采样图像来构建尺度空间,显著减少计算量。 对于每个像素点,计算其Hessian矩阵的行列式值(近似为det(H)=LxxLyy−(0.9Lxy)2),若该值在三维邻域(空间与尺度)内为极值,则标记为候选关键点。

**2.关键点方向分配:**使用Haar小波响应来确定关键点的主方向:在关键点周围半径为6σ的圆形区域内,计算水平和垂直方向的Haar小波响应,用高斯加权函数对这些响应值进行加权。将360°划分为多个扇形区域,计算各扇区内响应向量的总和,最后选择最长向量的方向作为主方向,从而实现旋转不变性。

3. 特征描述子生成: 算法首先将关键点邻域旋转至主方向对齐,确保坐标系与主方向一致;接着将邻域划分为4×4的子区域,每个子区域内统计水平与垂直Haar小波响应的值及其绝对值之和,形成4维局部特征向量,最终将所有子区域的特征串联为64维或128维描述子(SURF-64或SURF-128)。

**4. 描述子归一化:**对描述子进行归一化处理以消除光照变化影响,并通过阈值截断(如限制最大分量值为0.2)进一步提升鲁棒性。

具体可以参考这篇博客:https://www.cnblogs.com/zyly/p/9531907.html

SURF vs. SIFT 核心差异

  1. 效率提升:SURF利用积分图像和盒式滤波器,计算速度比SIFT快数倍,适用于实时应用。
  2. 尺度空间构建:SIFT通过图像降采样生成多Octave,而SURF直接调整滤波器尺寸,减少图像重建开销。
  3. 方向分配:SURF使用Haar小波响应统计方向,SIFT基于梯度直方图。
  4. 描述子维度:SURF默认64维(可扩展至128维),低于SIFT的128维,但通过优化统计方式保持区分性。

应用与局限性

  • 优势:实时性高,对模糊、旋转和光照变化鲁棒,适用于移动端或实时匹配场景(如SLAM、目标跟踪)。
  • 局限性:对视角变换和非刚性形变的适应性弱于SIFT,高纹理重复场景易误匹配。

SURF通过算法优化在速度与性能间取得平衡,成为传统特征提取方法中的经典选择,后续算法(如ORB)进一步结合二进制描述子,推动实时性提升。


FAST(Features from Accelerated Segment Test)

FAST 是一种高效的关键点检测算法,专注于在实时系统中快速识别图像中的角点(Corner)。其核心思想是通过局部像素强度的快速比对筛选候选点,牺牲部分鲁棒性以换取极高的计算速度。具体流程如下:

首先,以候选像素 p 为中心,在其周围半径为3像素的圆形邻域(共16个像素)中选择一组固定点(通常取12或9个点),通过阈值 T 判断这些点与中心点的强度差异。若邻域中存在连续 N 个点(通常 N=9)的强度均显著高于或低于中心点(即 I邻域点>Ip+T 或 I邻域点<Ip-T),则判定 p 为候选角点。为进一步优化结果,FAST 采用非极大值抑制(Non-Maximum Suppression)去除响应较弱的重复点,保留最具显著性的角点。

特点与局限性

  • 优势:计算复杂度极低,适合实时应用(如视频跟踪、移动端SLAM)。
  • 缺点:仅检测角点位置,不提供尺度与方向信息,且对噪声敏感,需依赖后续算法(如ORB)补全描述子。

ORB(Oriented FAST and Rotated BRIEF)

ORB 是对 FAST 和 BRIEF 算法的融合与改进,通过引入方向性与旋转不变性,解决了 FAST 缺乏描述能力及 BRIEF 对旋转敏感的问题,成为轻量级特征提取的经典方法。其流程分为以下阶段:

  1. 关键点检测(oFAST):在 FAST 检测的基础上,通过灰度质心法(Intensity Centroid)为每个关键点分配主方向。具体而言,计算关键点邻域内像素的灰度质心(即加权平均坐标),将质心到关键点的向量方向作为主方向,实现旋转不变性。此外,ORB 通过构建图像金字塔检测多尺度关键点,支持尺度不变性。
  2. 特征描述(rBRIEF):传统的 BRIEF 描述子通过随机选取关键点邻域内的像素对进行强度比较,生成二进制字符串(如256位),但直接应用会因旋转导致匹配失效。ORB 改进为 旋转鲁棒的BRIEF(rBRIEF):根据关键点的主方向旋转像素对的采样位置,确保描述子与方向对齐。同时,ORB 通过统计学习优化像素对的选择,使得生成的二进制描述子具有高区分度和低相关性。
  3. 匹配优化:ORB 描述子通过汉明距离(Hamming Distance)进行快速匹配,利用二进制异或操作加速计算,显著提升匹配效率。

特点与应用

  • 效率:全程基于二进制操作,计算速度远超 SIFT/SURF,适用于嵌入式设备或实时场景(如无人机导航、AR)。
  • 鲁棒性:通过方向补偿和尺度金字塔,支持旋转与尺度不变性,但对透视形变和光照剧烈变化的适应性较弱。
  • 典型应用:ORB-SLAM、移动端图像匹配、低功耗场景下的物体识别。

具体可以参考以下博客:

  1. FAST特征点检测:https://www.cnblogs.com/ronny/p/4078710.html
  2. BRIEF特征描述子:https://www.cnblogs.com/ronny/p/4081362.html

FAST 与 ORB 的关系

  • FAST 是纯粹的关键点检测器,仅定位角点位置。
  • ORB 是完整的特征提取框架,包含检测(oFAST)与描述(rBRIEF)两部分,本质是 FAST + 方向/尺度扩展 + 旋转鲁棒的二进制描述子。

总结

  • FAST 以"快"为核心,牺牲描述能力换取毫秒级检测速度,适用于对实时性要求极高的场景。
  • ORB 在 FAST 基础上融合方向、尺度与二进制描述,平衡速度与鲁棒性,成为轻量级特征提取的标杆算法,尤其适合资源受限的实时系统。
  • 局限性:二者均依赖局部强度分布,对模糊、大视角变化或非刚性形变的处理能力有限,在此类场景中仍需依赖深度学习特征(如SuperPoint、D2-Net)。

可视化效果

请添加图片描述

sift len of des: 458, size of des: 128
surf len of des: 1785, size of des: 64
orb len of des: 500, size of des: 32

可以看出:

  • sift虽然提取的特征点最少,但是效果最好。
  • sift提取的特征点维度是128维,surf是64维,orb是32维。

BruteForce Matcher特征匹配(BFMatcher总是尝试所有可能的匹配,从而使得它总能够找到最佳匹配,这也是Brute Force(暴力法)的原始含义。)

请添加图片描述

sift size of kp: 59, after filtering: 20
surf size of kp: 197, after filtering: 35
orb size of kp: 390, after filtering: 47

从输出的结果来看,orb的效果最好。感兴趣的话还可以用其他图片看看效果,pic文件夹还提供其他两组比较的图片。

总结:

计算速度: ORB>>SURF>>SIFT(各差一个量级)

旋转鲁棒性:SURF>ORB~SIFT(表示差不多)

模糊鲁棒性:SURF>ORB~SIFT

尺度变换鲁棒性: SURF>SIFT>ORB(ORB并不具备尺度变换性)

算法 关键点类型 强度变化形式 典型应用场景
SIFT 边缘/斑点 一阶或二阶导数极值 高精度匹配、三维重建
SURF 斑点 二阶导数极值(Hessian) 实时性要求较高的匹配
FAST 角点 局部强度突变 实时跟踪、SLAM
ORB 角点(带方向) 局部强度突变 + 强度分布统计 嵌入式设备、移动端应用