【译】PCL官网教程翻译(22):全局对齐空间分布(GASD)描述符 - Globally Aligned Spatial Distribution (GASD) descriptors

本文主要是介绍【译】PCL官网教程翻译(22):全局对齐空间分布(GASD)描述符 - Globally Aligned Spatial Distribution (GASD) descriptors,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

英文原文查看

全局对齐空间分布(GASD)描述符

本文描述了全局对齐的空间分布(GASD)全局描述符,用于有效的目标识别和姿态估计。
GASD基于表示对象实例的整个点云的参考系的估计,该实例用于将其与正则坐标系对齐。然后,根据对齐后的点云的三维点在空间上的分布情况计算其描述符。这种描述符还可以扩展到整个对齐点云的颜色分布。将匹配点云的全局对齐变换用于目标姿态的计算。更多信息请参见GASD。

理论基础

全局对齐空间分布(或GASD)全局描述方法将表示给定对象局部视图的三维点云作为输入。第一步是估计点云的参考帧,这允许计算将其对齐到正则坐标系的转换,从而使描述符保持不变。对齐后,根据三维点的空间分布计算出点云的形状描述符。为了获得具有较高分辨能力的形状和颜色描述符,还可以考虑沿点云的颜色分布。然后通过匹配部分视图的查询和火车描述符来执行对象识别。通过匹配查询和训练局部视图的对齐变换,计算出每个被识别对象的姿态。
采用主成分分析法(PCA)对参考框架进行估计。给定一组表示对象局部视图的3D点 P i P_i Pi,其中 i ∈ { 1 , … n } i\in\{1,…n\} i{1n},第一步是计算它们的质心 p ‾ \overline p p,这是参考系的原点。然后由 p i p_i pi p ‾ \overline p p计算协方差矩阵 C C C,如下:
C = 1 n ⋅ ∑ i = 0 k ( p i − p ˉ ) ⋅ ( p i − p ˉ ) T C = \frac{1}{n}\cdot\sum_{i=0}^k(p_i-\bar p)\cdot(p_i-\bar p)^T C=n1i=0k(pipˉ)(pipˉ)T
然后,得到 C C C的特征值 λ j \lambda_j λj和对应的特征向量 v j v_j vj j ∈ { 1 , 2 , 3 } j\in \{1,2,3 \} j{1,2,3},使得 C v j = λ j v j C\boldsymbol{v_j}=\lambda_j\boldsymbol{v_j} Cvj=λjvj。考虑到特征值按升序排列,采用与最小特征值相关的特征向量 v 1 v_1 v1作为参照系的z轴。若 v 1 v_1 v1与查看方向之间的角度在 [ − 9 0 ∘ 、 9 0 ∘ ] [-90^{\circ}、90^{\circ}] [9090]范围内,则舍弃 v 1 v_1 v1。这确保 z z z轴始终指向视点方向。参考坐标系的 x x x轴是与最大特征值相关的特征向量 v 3 v_3 v3 y y y轴由 v 2 = v 1 × v 3 \boldsymbol{v_2}=\boldsymbol{v_1}\times\boldsymbol{v_3} v2=v1×v3给出。
从参照系中,可以计算一个转换 [ R ∣ t ] [\boldsymbol{R} | \boldsymbol{t}] [Rt],使它与正则坐标系对齐。然后用 [ R ∣ t ] [\boldsymbol{R} | \boldsymbol{t}] [Rt]转换局部视图中的所有点,定义如下:
[ R t 0 1 ] = [ v 3 T − v 3 T P ‾ v 2 T − v 2 T P ‾ v 1 T − v 1 T P ‾ 0 1 ] . \begin{bmatrix} \boldsymbol{R} & \boldsymbol{t} \\ \boldsymbol{0} & 1 \end{bmatrix}= \begin{bmatrix} \boldsymbol{v_3}^T & -\boldsymbol{v_3}^T\boldsymbol{\overline{P}} \\ \boldsymbol{v_2}^T & -\boldsymbol{v_2}^T\boldsymbol{\overline{P}} \\ \boldsymbol{v_1}^T & -\boldsymbol{v_1}^T\boldsymbol{\overline{P}} \\ \boldsymbol{0} & 1 \end{bmatrix}. [R0t1]=v3Tv2Tv1T0v3TPv2TPv1TP1.
一旦使用参考帧对点云进行对齐,就可以从中计算出一个位姿不变的全局形状描述符。以原点为中心的点云轴向对齐的边界立方体被划分为 m s × m s × m s m_s \times m_s \times m_s ms×ms×ms规则网格。对于每个网格单元,计算带有 l s l_s ls bin的直方图。如果 l s l_s ls=1,则每个直方图bin将在3D规则网格中存储属于对应单元格的点数。如果 l s l_s ls>1,则计算每个单元格与云质心之间归一化距离的直方图。
每个样本对直方图的贡献根据云中的总点数进行标准化。可选地,插值可用于将每个样本的值分布到相邻的单元格中,以避免当样本从一个单元格内移动到另一个单元格时,可能导致直方图突变的边界效应。然后通过连接计算得到的直方图获得描述符。
在这里插入图片描述在这里插入图片描述颜色信息也可以合并到描述符中,以提高其识别能力。描述符的颜色组件是用 m c × m c × m c m_c \times m_c \times m_c mc×mc×mc网格计算的,与用于形状组件的网格类似,但是根据属于它的点的颜色为每个单元生成颜色直方图。点云颜色用HSV空间表示,色调值用 l c l_c lc bin直方图累加。与形状分量计算类似,对点的个数进行归一化。此外,还可以对直方图样本进行插值。将形状和颜色组件连接起来,得到最终的描述符。
查询和火车描述符使用最近邻搜索方法进行匹配。然后,对于每个匹配的对象实例,使用从各自查询和训练部分视图的参考帧获得的对齐转换计算粗姿态。给定分别对齐查询和训练部分视图的转换 [ R q ∣ t q ] [\mathbf{R_{q}} | \mathbf{t_{q}}] [Rqtq] [ R t ∣ t t ] [\mathbf{R_{t}} | \mathbf{t_{t}}] [Rttt],则通过以下方法获得对象的粗姿态 [ R c ∣ t c ] [\mathbf{R_{c}} | \mathbf{t_{c}}] [Rctc]
[ R c t c 0 1 ] = [ R q t q 0 1 ] − 1 [ R t t t 0 1 ] . \begin{bmatrix} \mathbf{R_{c}} & \mathbf{t_{c}} \\ \mathbf{0} & 1 \end{bmatrix}= {\begin{bmatrix} \mathbf{R_{q}} & \mathbf{t_{q}} \\ \mathbf{0} & 1 \end{bmatrix}}^{-1} \begin{bmatrix} \mathbf{R_{t}} & \mathbf{t_{t}} \\ \mathbf{0} & 1 \end{bmatrix}. [Rc0tc1]=[Rq0tq1]1[Rt0tt1].
粗姿态 [ R c ∣ t c ] [\mathbf{R_{c}} | \mathbf{t_{c}}] [Rctc]可以使用迭代最近点(ICP)算法进行细化。

估计GASD特性

全局对齐的空间分布在PCL中作为pcl_features库的一部分实现。
color GASD参数的默认值是: m s m_s ms=6(一半尺寸3), l s l_s ls=1, m c m_c mc=4(一半尺寸2)和 l c l_c lc=12,没有直方图插值(INTERP_NONE)。这将产生一个包含984个浮点值的数组。它们存储在pcl::GASDSignature984点类型中。只有形状GASD参数的默认值是: m s m_s ms=8(一半大小4), l s l_s ls=1和三线性直方图插值(INTERP_TRILINEAR)。这将导致512个浮点值的数组,这些浮点值可以存储在pcl::GASDSignature512 点类型中。也可以使用四线性直方图插值(INTERP_QUADRILINEAR)。
下面的代码片段将估计输入彩色点云的GASD形状+颜色描述符。

#include <pcl/point_types.h>
#include <pcl/features/gasd.h>{pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);... read, pass in or create a point cloud ...// 创建GASD估计类,并将输入数据集传递给它pcl::GASDColorEstimation<pcl::PointXYZRGBA, pcl::GASDSignature984> gasd;gasd.setInputCloud (cloud);// 输出数据集pcl::PointCloud<pcl::GASDSignature984> descriptor;// 计算描述符gasd.compute (descriptor);// 得到对齐变换Eigen::Matrix4f trans = gasd.getTransform (trans);// 解压缩直方图箱for (size_t i = 0; i < size_t( descriptor[0].descriptorSize ()); ++i){descriptor[0].histogram[i];}
}

下面的代码片段将只估计输入点云的GASD形状描述符。

#include <pcl/point_types.h>
#include <pcl/features/gasd.h>{pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);... read, pass in or create a point cloud ...//  创建GASD估计类,并将输入数据集传递给它pcl::GASDEstimation<pcl::PointXYZ, pcl::GASDSignature512> gasd;gasd.setInputCloud (cloud);// 输出数据集pcl::PointCloud<pcl::GASDSignature512> descriptor;// 计算描述符gasd.compute (descriptor);// 得到对齐变换Eigen::Matrix4f trans = gasd.getTransform (trans);// 解压缩直方图箱for (size_t i = 0; i < size_t( descriptor[0].descriptorSize ()); ++i){descriptor[0].histogram[i];}
}

注意
@InProceedings{Lima16SIBGRAPI, author = {Joao Paulo Lima and Veronica Teichrieb}, title = {An Efficient Global Point Cloud Descriptor for Object Recognition and Pose Estimation}, booktitle = {Proceedings of the 29th SIBGRAPI - Conference on Graphics, Patterns and Images}, year = {2016}, address = {Sao Jose dos Campos, Brazil}, month = {October} }

这篇关于【译】PCL官网教程翻译(22):全局对齐空间分布(GASD)描述符 - Globally Aligned Spatial Distribution (GASD) descriptors的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码