6D位姿估计的理解及BOP数据集参数说明

2024-02-06 12:59

本文主要是介绍6D位姿估计的理解及BOP数据集参数说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

6D位姿估计的理解及BOP数据集参数说明

一、6D位姿估计
姿态估计在百度上搜会出现“姿态估计问题就是确定某一三维目标物体的方位指向问题”的解释,但是具体来讲确定某一三维目标物体的方位指向问题到底是什么意思呢?

首先,6D表示6个自由度,3个自由度的位移(Translation)和3个自由度的空间旋转(Rotation)。位移即方位,旋转即指向。将它们组合起来便构成了“位姿”。位姿并不是绝对的,它指的是两个坐标系之间的变换(Translation and Rotation),而坐标系有世界坐标系、相机坐标系和物体坐标系三种,所以也就有了物体6d位姿估计和相机6d位姿估计两种位姿估计。

这两种位姿估计本质上讲是差不多的,区别就是从哪一个坐标系变换到相机坐标系。
一、6d物体位姿估计
6d物体位姿估计的任务就是估计从物体坐标系到相机坐标系的刚性变换,即在拍摄照片时,相机坐标系相对于物体坐标系发生的平移和旋转变换。通常用物体坐标系到相机系的RT变换来表示:
在这里插入图片描述

  • Tc:物体在相机坐标系下的3D点
  • Tm:物体在物体坐标系下的3D点
  • Rcm:物体从物体坐标系到相机坐标系的旋转
  • tcm:物体从物体坐标系到相机坐标系的位移

二、6d相机位姿估计
6d物体位姿估计的任务就是估计从世界坐标系到相机坐标系的刚性变换,即在拍摄照片时,相机坐标系相对于世界坐标系发生的平移和旋转变换。通常用世界坐标系到相机系的RT变换来表示:
在这里插入图片描述

  • Tc:物体在相机坐标系下的3D点
  • Tm:物体在世界坐标系下的3D点
  • Rcm:物体从世界坐标系到相机坐标系的旋转
  • tcm:物体从世界坐标系到相机坐标系的位移

三、BOP数据集参数
BOP数据集,这里可以学习数据集的相关内容和下载数据集。
在跑ssd-6d时用到了BOP数据集里的部分数据集,有一些参数我不太明白,后来通过查找资料,终于知道了每个文件里的参数是什么意思。
1.相机参数
Teijani数据集

对应于如图所示的文件“scene_camera.json”,打开后包括以下参数:

  • cam_K:表示相机的内参,是一个三行三列的矩阵K按行来保存得到的向量
  • cam_R_w2c:表示世界坐标系到相机坐标系的旋转矩阵R_w2c(3×3)按行来保存得到的向量
  • cam_t_w2c:表示世界坐标系到相机坐标系的三行一列的位移向量t_w2c(3×1)
  • depth_scale:一个因子,用来与depth图乘积得到深度值(单位:mm)
  • view_level:试点细分级别

相机矩阵:P_w2i = K * [R_w2c, t_w2c]

世界坐标系下的3D点与图片上的2D点的转换:sp_i=P_w2ip_w

  • p_w = [x, y, z, 1]’ 世界坐标系下点的3D坐标
  • p_i =[u, v, 1] 相机坐标系2D坐标
    2.真值标记
    在这里插入图片描述

对应如图所示的文件“scene_gt.json”,打开后包括以下参数:

  • obj_id:物体的id
  • cam_R_m2c:物体坐标系到相机坐标系的三行三列的旋转矩阵R_m2c按行保存的结果
  • cam_t_m2c:物体坐标系到相机坐标系的三行一列的位移向量t_m2c

相机矩阵:P_w2i = K * [R_w2c, t_w2c]

物体坐标系(Model)下的3D点与相机坐标系下2D点的转换:sp_i=P_w2ip_w

  • p_w = [x, y, z, 1]’ 物体坐标系下点的3D坐标
  • p_i =[u, v, 1] 相机坐标系下的2D坐标

3.位姿真值的Meta信息
在这里插入图片描述
对应如图所示的文件“scene_gt_info.json”,打开后包括以下参数:

  • bbox_obj:物体的二维bbox,四个值分别表示(左上角坐标,框宽,框高)=(x,y,width,height)
  • bbox_visib:物体轮廓的可见部分的二维bbox
  • px_count_all : 物体二维bbox中的像素总数
  • px_count_visib:物体轮廓的可见部分的二维bbox中的像素数
  • px_count_valid:depth图像中的非零值点在二维bbox中的像素数
  • visib_fract := px_count_visib/px_count_all可见部分的占比

参考:
https://blog.csdn.net/u014712806/article/details/112339410
https://blog.csdn.net/dsoftware/article/details/106101681

这篇关于6D位姿估计的理解及BOP数据集参数说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684396

相关文章

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl