当前位置: 首页 > news >正文

ORB特征点检测算法

角点是图像中灰度变化在两个方向上都比较剧烈的点。与边缘(只有一个方向变化剧烈)或平坦区域(灰度变化很小)不同,角点具有方向性和稳定性。

tips:像素梯度计算
在这里插入图片描述
在这里插入图片描述

ORB算法流程简述

1.关键点检测(使用FAST)
使用 FAST(Features from Accelerated Segment Test)算法快速检测图像中的角点作为关键点。

2.关键点筛选(Harris评分)
FAST检测的角点很多,ORB使用 Harris 角点响应函数来评分,然后选出前 N 个响应值最大的点作为最终的关键点。

3.方向赋值(构造旋转不变性)
对每个关键点周围的像素区域计算灰度质心方向,并将该方向赋予关键点,用于后续描述符的旋转补偿。

4.特征描述子(使用BRIEF)
使用 BRIEF(Binary Robust Independent Elementary Features)描述子对关键点进行描述。ORB对BRIEF进行改进,使其具有方向不变性,即对BRIEF描述子的采样点进行旋转处理。

5.特征匹配
使用 Hamming 距离进行二进制描述子之间的匹配。通常配合暴力匹配(Brute-Force)或 FLANN 进行快速匹配。

Fast角点检测算法

1.循环遍历图像中的每个像素点
将图像中的每个像素点作为潜在的角点候选点 p,对其周围像素进行检测。

2.初步筛选
取像素点 p 周围的第 1、5、9、13 个点(这四个点在像素环上形成一个正方形的四个顶点)与像素点 p 比较:
如果其中至少有三个点都比 p 的强度大一定阈值 t,或者都比 p 的强度小一定阈值 t,则进入下一步。
否则,该像素点 p 不是角点候选点。

3.后续验证
对初步筛选出的角点候选点 p 进行更严格的验证,检查像素环(半径为3的圆环上取16个像素)上连续有 n 个像素点的强度是否都比 p 的强度大 t 或者都比 p 的强度小 t:
如果满足条件,则 p 是一个角点候选点。
否则,p 不是角点候选点。

为了进一步提高关键点的质量和稳定性,使检测出的关键点更具有代表性和鲁棒性,从而提升后续特征匹配和图像处理的效果,会在使用 FAST 算法检测出角点候选点后,结合 Harris 算子的思路来进一步优化和筛选关键点

Haris角点检测算法

在这里插入图片描述
在这里插入图片描述
矩阵M就是图像的结构张量,描述了图像局部的梯度信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特征点方向确定

为了实现旋转不变性,ORB为每个关键点计算一个主方向,使得特征描述子可以随着图像的旋转同步旋转。
ORB使用**灰度质心法(Intensity Centroid)**来估计关键点的方向。

具体步骤:
取关键点周围一个固定大小的图像块(例如31×31);
计算图像块的质心位置(C_X,C_Y)
在这里插入图片描述
将关键点位置作为原点,计算质心相对该点的方向向量;

最终方向角:
θ = a r c t a n 2 ( C y − y 0 , C x − x 0 ) θ=arctan2(C_y-y_0, C_x-x_0) θ=arctan2(Cyy0,Cxx0)
其中(x_0,y_0)是关键点坐标。
这样,ORB就为每个关键点赋予了一个方向角 θ,以用于旋转 BRIEF 描述子的采样模式。

特征点描述

特征描述子(BRIEF with rotation)
原始BRIEF描述子:
随机从关键点周围采样像素点对,比较它们的灰度大小。

若 (I(P_1)-I(P_2) ),则记为1;反之为0。

每对像素比较结果构成一个比特位,最终形成长度为128或256位的二进制向量。

ORB的改进:
旋转补偿:将原始BRIEF的采样模板旋转 θ 角度,使得描述子具有旋转不变性;

学习优选的点对组合:ORB用学习方式选出最能区分特征的点对组合,以提升识别能力和抗噪性。

特征点匹配

使用**汉明距离(Hamming Distance)**衡量两个二进制描述子之间的相似度。

汉明距离 = 两个描述子中不相同的比特数。

匹配方法常见的有:

Brute-Force Matcher:暴力搜索所有描述子对,找出最小距离;

KNN匹配 + 比率测试(Lowe’s ratio test):找两个最邻近匹配,如果最近的距离远小于次近的距离,说明匹配可信;

FLANN(近似最近邻搜索):加速匹配,适合大规模匹配。

相关文章:

  • Java SpringMVC 异常处理:保障应用健壮性的关键策略
  • uni-app微信小程序登录流程详解
  • 【SSM-SpringMVC(三)】Spring接入Web环境!介绍SpringMVC的拦截器和异常处理机制
  • 《Asp.net Mvc 网站开发》复习试题
  • 典籍知识问答重新生成和消息修改Bug修改
  • Linux `man` 指令终极指南
  • 【Python】UV:单脚本依赖管理
  • GitDiagram - GitHub 仓库可视化工具
  • WordPress 网站上的 jpg、png 和 WebP 图片插件
  • C++23 中的 views::stride:让范围操作更灵活
  • 5.5.1 WPF中的动画2-基于路径的动画
  • 用python清除PDF文件中的水印(Adobe Acrobat 无法删除)
  • python可视化:2025Q1北方游客量与客运流动分析3
  • 设计模式之中介者模式
  • 基于STM32、HAL库的CH342F USB转UART收发器 驱动程序设计
  • 人工智能时代:解锁职业新身份,从“认证师”到“工程师”的进阶之路
  • 电商物流管理优化:从网络重构到成本管控的全链路解析
  • 【Linux笔记】——进程信号的保存
  • JVM对象头中的锁信息机制详解
  • Linux 软件包|服务管理
  • 福建宁德市长张永宁拟任设区市党委正职,曾获评全国优秀县委书记
  • 水豚“豆包”出逃已40天,扬州茱萸湾景区追加悬赏
  • 人民时评:莫让“假俗乱”讲解侵蚀“文博热”
  • 人民空军:网上出现的“运-20向外方运送物资”为不实消息
  • 经济日报金观平:充分发挥超大规模市场优势
  • 印巴战火LIVE丨“快速接近战争状态”:印度袭击巴军事基地,巴启动反制军事行动