ORB特征点检测算法

news2025/7/13 5:46:46

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

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(近似最近邻搜索):加速匹配,适合大规模匹配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2376875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速通关单链表秘籍

1.单链表概念与结构 1.1 概念 链表是一种逻辑结构连续,物理结构不连续的存储结构,数据结构的逻辑顺序是通过链表中的指针链接次序实现。 光看定义有点不好理解,我们举个简单例子! 我们都看过火车吧,我们看到的火车…

springboot+vue实现在线书店(图书商城)系统

今天教大家如何设计一个图书商城 , 基于目前主流的技术:前端vue,后端springboot。 同时还带来的项目的部署教程。 视频演示 在线书城 图片演示 一. 系统概述 商城是一款比较庞大的系统,需要有商品中心,库存中心,订单…

Spring AI(6)——向量存储

向量数据库是一种特殊类型的数据库,在 AI 应用中发挥着至关重要的作用。 在向量数据库中,查询与传统关系型数据库不同。它们执行的是相似性搜索,而非精确匹配。当给定一个向量作为查询时,向量数据库会返回与该查询向量“相似”的…

【Matlab】最新版2025a发布,深色模式、Copilot编程助手上线!

文章目录 一、软件安装1.1 系统配置要求1.2 安装 二、新版功能探索2.1 界面图标和深色主题2.2 MATLAB Copilot AI助手2.3 绘图区升级2.4 simulink2.5 更多 延迟一个月,终于发布了🤭。 一、软件安装 1.1 系统配置要求 现在的电脑都没问题,老…

uniapp,小程序中实现文本“展开/收起“功能的最佳实践

文章目录 示例需求分析实现思路代码实现1. HTML结构2. 数据管理3. 展开/收起逻辑4. CSS样式 优化技巧1. 性能优化2. 防止事件冒泡3. 列表更新处理 实际效果总结 在移动端应用开发中,文本内容的"展开/收起"功能是提升用户体验的常见设计。当列表项中包含大…

思维链框架:LLMChain,OpenAI,PromptTemplate

什么是思维链,怎么实现 目录 什么是思维链,怎么实现思维链(Chain of Thought)在代码中的实现方式1. 手动构建思维链提示2. 少样本思维链提示3. 自动思维链生成4. 思维链与工具使用结合5. 使用现有思维链框架:LLMChain,OpenAI,PromptTemplate思维链实现的关键要点思维链(C…

使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据(申请key教程)

使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据 目录 使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据📌 简介🛠 插件安装方法🌍 下载 DEM 数据步骤🔑 注册 OpenTopography 账号(如使用 Cope…

计算机组成与体系结构:替换策略(MRU LRU PLRU LFU)

目录 🎲 MRU(最近最常使用) 🪜 操作流程: 🎲 LRU(最近最少使用) 🪜 操作流程: 示例 🔍 Age Bits(年龄位) 核心思想…

websocket入门详解

入门websocket的基础应该掌握一下问题: 1、什么是握手? 2、什么是websocket? 3、websocket和http的区别,应用场景 4、html前端简单代码演示 5、springboot整合websocket使用 6、使用vueelementui打造简单聊天室 7、使用web…

(6)python开发经验

文章目录 1 QListWidget样式显示异常2 模块编码错误3 qtcreator开发pyqt编码错误 更多精彩内容👉内容导航 👈👉Qt开发 👈👉python开发 👈 1 QListWidget样式显示异常 main.py import sys from PySide6.QtWi…

HPC软件使用之ANSYS Fluent

目录 一、软件介绍 二、脚本编写 2.1 jou文件 2.2 slurm脚本文件 三、作业提交及查看 四、案例演示 4.1 网格模型 4.2 jou脚本 4.3 slurm脚本 4.4 计算 4.5 结果查看 从本文开始,我们将介绍如何在超级计算机上使用科学计算、工程仿真计算软件开展计算&am…

YOLO11解决方案之距离计算探索

概述 Ultralytics提供了一系列的解决方案,利用YOLO11解决现实世界的问题,包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 测量两个物体之间的间距被称为特定空间内的距离计算,YOLO11使用两个边界框的中心…

论文学习_Precise and Accurate Patch Presence Test for Binaries

摘要:打补丁是应对软件漏洞的主要手段,及时将补丁应用到所有受影响的软件上至关重要,然而这一点在实际中常常难以做到,研究背景。因此,准确检测安全补丁是否已被集成进软件发行版本的能力,对于防御者和攻击…

Ascend的aclgraph(九)AclConcreteGraph:e2e执行aclgraph

1回顾 前面的几章内容探讨了aclgraph运行过程中的涉及到的关键模块和技术。本章节将前面涉及到的模块串联起来,对aclgraph形成一个端到端的了解。 先给出端到端运行的代码,如下: import torch import torch_npu import torchair import log…

c++从入门到精通(四)--动态内存,模板与泛型编程

文章目录 动态内存直接管理内存Shared_ptr类Unique_ptrWeak_ptr动态数组allocator类文本查询程序 模板与泛型编程定义模板函数模板类模板模板参数成员模板控制实例化 模板实参推断重载与模板可变参数模板模板特例化 动态内存 c中动态内存的管理是通过new和delete运算符来实现的…

寻找两个正序数组的中位数 - 困难

************* Python topic: 4. 寻找两个正序数组的中位数 - 力扣(LeetCode) ************* Give the topic an inspection. Do the old topic will give you some new sparks. Before that, I do some really good craetive things about my logo. …

国产密码新时代!华测国密 SSL 证书解锁安全新高度

在数字安全被提升到国家战略高度的今天,国产密码算法成为筑牢网络安全防线的关键力量。华测国密SSL证书凭借其强大性能与贴心服务,为企业网络安全保驾护航,成为符合国家安全要求的不二之选!​ 智能兼容,告别浏览器适配…

【金仓数据库征文】从云计算到区块链:金仓数据库的颠覆性创新之路

目录 一、引言 二、金仓数据库概述 2.1 金仓数据库的背景 2.2 核心技术特点 2.3 行业应用案例 三、金仓数据库的产品优化提案 3.1 性能优化 3.1.1 查询优化 3.1.2 索引优化 3.1.3 缓存优化 3.2 可扩展性优化 3.2.1 水平扩展与分区设计 3.2.2 负载均衡与读写分离 …

股指期货套期保值怎么操作?

股指期货套期保值就是企业或投资者通过持有与其现货市场头寸相反的期货合约,来对冲价格风险的一种方式。换句话说,就是你在股票市场上买了股票(现货),担心股价下跌会亏钱,于是就在期货市场上卖出相应的股指…

基于IBM BAW的Case Management进行项目管理示例

说明:使用IBM BAW的难点是如何充分利用其现有功能根据实际业务需要进行设计,本文是示例教程,因CASE Manager使用非常简单,这里重点是说明如何基于CASE Manager进行项目管理,重点在方案设计思路上,其中涉及的…