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

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)。

可视化效果

yaml 复制代码
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(暴力法)的原始含义。)

yaml 复制代码
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 角点(带方向) 局部强度突变 + 强度分布统计 嵌入式设备、移动端应用
相关推荐
启观川4 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦4 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python
对空六课4 小时前
指标口径生效时间的版本查询实现
大数据·服务器·前端·算法·数据分析
对空六课4 小时前
RFM分层边界变化的回溯计算
大数据·服务器·前端·数据库·人工智能·算法·数据分析
小羊没烦恼!4 小时前
如何在IIS6,7中部署ASP.NET网站?
数据库·后端·python·web安全·asp.net
一勺思维4 小时前
我为什么把 Agent 的核心逻辑从 LangChain 里搬出来手写
算法
碧海银沙音频科技研究院5 小时前
基于炬芯ATS308X的LE aduio LC3编解码算法功能实现
算法
小蒋观天下5 小时前
厂区人员徘徊游荡判别——基于时序轨迹速度的逗留行为分级算法落地
大数据·人工智能·深度学习·算法·机器学习·ai大模型
ITOM运维行者5 小时前
WAN监控怎么做?从链路质量指标到路径级定位的完整方法
数据库·人工智能·机器学习
程序员清风5 小时前
堆与优先队列:从 Top K 到任务调度
java·数据结构·算法