47.Isaac教程--ORB

news/2024/11/15 6:17:18/

ORB

在这里插入图片描述
ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html

文章目录

  • ORB
    • Gem 提供的类型
      • 关键点
      • 描述符
    • 如何使用 Gem(界面)
    • 构建包
    • Isaac Codelets
      • 示例应用程序
      • 主机设备
      • 嵌入式 Jetson 设备

这个 gem 提供了一个特征检测器和描述符提取器。

功能用于以下应用程序:

  • 使用运动结构的 3D 重建

  • 视觉里程计(运动跟踪)和 SLAM

  • 基于内容的图像检索

  • 图像对齐和全景拼接

“ORB”代表“Oriented FAST and rotated BRIEF”。 这表明 ORB 基于特征检测器 FAST 和二进制描述符 BRIEF。

Rublee 等人的原始出版物,标题为“ORB:SIFT 或 SURF 的有效替代品”,可在此处找到:http://www.willowgarage.com/sites/default/files/orb_final.pdf

与其他特征类型相比,ORB 具有以下关键特性:

  • 高效的; 出色的性能质量权衡

  • 抗图像噪声

  • 旋转不变性

  • 多尺度

Isaac SDK ORB gem 紧跟原始出版物。 除此之外,它还:

  • 通过在 GPU 上运行来实现 CUDA 中的大部分流水线以获得更高的性能

  • 添加空间正则化(“网格过滤”)步骤,通过在图像上更均匀地分布关键点来修复其他实现(例如 OpenCV 的)的基本缺陷。 这对于运动跟踪等应用具有显着优势。

算法步骤如下:

  1. 将输入图像下采样到不同的比例级别

  2. 在所有级别上提取 FAST 特征

  3. 应用网格过滤

  4. 提取特征方向

  5. 提取描述符

Gem 提供的类型

关键点

关键点具有以下属性:

  • x, y:从中提取的图像中的关键点坐标。 注意:由于有多个比例级别,请使用实用函数 GetCoordsAtTopLevel 获取最顶层(初始)图像级别的坐标。

  • response:特征的“强度”。 较高的分数意味着较高的局部对比度。

  • angle:方向角(以弧度为单位)

  • scale:支撑区域的半径(以像素为单位)

  • level:从中提取特征的比例级别。 从零开始。

关键点类型是关键点的向量。

描述符

描述符具有以下属性:

  • id:允许将描述符连接回其起源的关键点的 ID

  • elements:二进制描述符数据,打包到一个小的元素缓冲区中。

Descriptors 类型是描述符的向量。

如何使用 Gem(界面)

gem 提供了一个函数 ExtractOrbFeatures,用于从图像中提取 ORB 特征和描述符。

作为输入参数,必须传递图像。

作为输出参数,必须传递关键点和描述符对象。

这些是可以设置的附加参数:

  • 最大限 features (default 1500): 需要保留的最佳特征数量。

  • FAST 阈值(默认值 30):像素必须展示的最小局部对比度阈值才能被视为特征

  • 网格单元格数线性(默认 8):水平/垂直方向上用于空间正则化的箱数。 箱子的总数是参数的平方。 更高的数字意味着更均匀地分布特征。 设置为 1 将禁用正则化。

  • 下采样因子(默认 0.7):后续比例级别的大小,作为当前级别的比率。 允许介于 0.5(含)和 1.0(不含)之间的值。

  • 最大限levels (default 4): 使用多少比例级别。

构建包

运行以下命令来构建 gem、codelet 和示例应用程序:

$ bazel build //packages/orb/...

Isaac Codelets

ORB 包提供了一个单独的小代码,ExtractAndVisualizeOrb,其唯一目的是展示如何将 gem 与 ZED 相机一起使用的示例。

gem 当然可以直接在应用程序中使用,而无需通过 codelet。

示例应用程序

该示例应用程序从 ZED 相机接收到的图像中提取 ORB 特征,并使用 Websight 将它们可视化。

无论您在什么平台上运行示例应用程序,请务必先连接 ZED 相机。 在应用程序运行时,通过导航到 http://localhost:3000 在浏览器中打开 Isaac Sight。 如果您在 Jetson 平台上运行应用程序,请确保使用 Jetson 系统的 IP 地址而不是 localhost。

主机设备

运行以下命令启动演示:

$ bazel run //packages/orb/apps/orb_demo

嵌入式 Jetson 设备

按照应用程序控制台选项中的说明将 //packages/orb/apps/orb_demo:orb_demo-pkg 部署到机器人。

使用以下命令通过 SSH 连接到设备:

$ ssh nvidia@ROBOTIP

切换到部署目录后,使用以下命令在设备上运行演示应用程序:

$ cd orb_demo-pkg/
$ ./packages/orb/apps/orb_demo/orb_demo

更多精彩内容:
https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561


http://www.ppmy.cn/news/20740.html

相关文章

cesium +vue3 +vite 实现点线面功能

第一步:搭建vue3项目 1、npm在相应文件夹下创建 npm create vitelatest2、选择项目名称 3、选择vue 4、选择是否使用typescript 或者JavaScript 5、记得在终端npm install一下就可以启动项目了 第二步:引入cesiumJS 1、npm引入 npm i cesium vite…

正点原子STM32(基于HAL库)4

目录ADC 实验ADC 简介单通道ADC 采集实验ADC 寄存器硬件设计程序设计(还没拷贝完)单通道ADC 采集(DMA 读取)实验ADC & DMA 寄存器硬件设计多通道ADC 采集(DMA 读取)实验ADC 寄存器硬件设计单通道ADC 过采样(16 位分…

CMMI3和CMMI5的区别

​在办理资质初期,一般企业最先办理的就是CMMI3级,有不少企业表示想办理CMMI5级,想知道两者之间的差别是什么? 一、级别不同 CMMI3属于已定义级,CMMI5属于优化管理级;CMMI认证中一级最低,五级最…

[HFCTF2020]EasyLogin

目录 信息收集 伪造jwt 思路 poc koa-static介绍 信息收集 注册admin失败 随便注册账户登录 获取flag失败,应该需要垂直越权到admin 将用户名改为admin,保存新的cookie eyJ1c2VybmFtZSI6ImFkbWluIiwiX2V4cGlyZSI6MTY3NTEyNzExNDMzNywiX21heEFnZS…

redis面试题及答案(上)【四】

31.可重入加锁机制那如果客户端 1 都已经持有了这把锁了,结果可重入的加锁会怎么样呢?比如下面这种代码:这时我们来分析一下上面那段 lua 脚本。第一个 if 判断肯定不成立,“exists myLock”会显示锁key 已经存在了。第二个 if 判…

Redis原理篇(二)网络模型

一、用户空间和内核空间 应用需要通过Linux内核与硬件交互。 内核本质也是应用,运行的时候也需要CPU资源、内存资源。用户应用也在消耗这些资源。 为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的: 进程的寻址空间会划分为两…

Xilinx MicroBlaze系列教程(适用于ISE和Vivado开发环境)

本文是Xilinx MicroBlaze系列教程的第0篇文章。这个系列文章是我个人最近两年使用Xilinx MicroBlaze软核的经验和笔记,以Xilinx ISE 14.7和Spartan-6,以及Vivado 2018.3和Artix-7为例,介绍MicroBlaze软核、AXI系列IP核的软硬件使用,希望能帮助到更多的人。 MicroBlaze是Xil…

【Linux】---进程程序替换

进程替换出现的背景我们可以用fork函数来创建子进程,使父子进程同时出现。正所谓子承父业,子进程在刚被创建时和父进程共享数据和代码,但是操作者想让子进程执行一个全新的程序,这个使子进程执行全新程序的操作叫做进程程序替换。…