首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定体素的点索引

给定体素的点索引
EN

Stack Overflow用户
提问于 2017-03-30 20:49:32
回答 1查看 1.7K关注 0票数 0

我需要使用PCL的八叉树数据结构将数据分割成体素。我想我成功地创造了八叉树和体素。然而,对于PCL的八叉树结构,我有两个问题。

  1. 我的第一个问题是关于八叉树的分辨率。我定义了如下所示的决议:float resolution = 0.009f; pcl::octree::OctreePointCloudSearch<pcl::PointXYZ> octree(resolution);

据我所知,这个分辨率参数在八叉树的最底层定义了体素边长的维数。在这种情况下,最低水平的体素的边长等于0.009m,对吗?

  1. 如何才能得到每个体素的点指数?假设在第一个体素中有5个点,我需要这些点的指数。我期待着收到你的问候
EN

回答 1

Stack Overflow用户

发布于 2017-04-04 12:14:00

  1. 分辨率真的取决于你的数据,如果你的点云是米,那么它将是正确的。假设有一个坐标为A=(1,0,0)的x,y,z点,以及B=(0,0,0)中的另一个点。如果A点与沿x轴的点B相距1m,那么你是正确的。PCL的惯例是点云应该以米为单位。

但只是为了说明:

代码语言:javascript
复制
pcl::PointCloud<pcl::PointXYZ> cloud_in_meters;
resolution = 1.0f; 
pcl::octree::OctreePointCloudSearch<pcl::PointXYZ> octree(resolution);

代码语言:javascript
复制
pcl::PointCloud<pcl::PointXYZ> cloud_in_meters;
cloud_in_millimeters = cloud_in_meters*1000;
resolution = 1.0f/1000.f; 
pcl::octree::OctreePointCloudSearch<pcl::PointXYZ> octree(resolution);

基本上都是一样的。

  1. 您可以通过getIntersectedVoxelIndices获取相交体素中各点的索引。我知道这些文档是误导的,但实际上这正是你所需要的。

例如:

代码语言:javascript
复制
std::vector< int > k_indices;
octree.getIntersectedVoxelIndices(origin, direction, k_indices, 1);

k_indices是由射线相交的体积中具有点索引的向量。

您可以检查这个函数正在做什么:search.hpp#L613

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43128043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档