首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在转换PCL点云时丢失的精度

在转换PCL点云时丢失的精度
EN

Stack Overflow用户
提问于 2019-08-12 17:49:10
回答 2查看 884关注 0票数 1

我正在使用来自PCL的来转换我所拥有的点云。基本上,我只是通过一些偏移来翻译云。

问题是,在应用这个转换之后,我就失去了精度。在下图中更清楚。

我看到,只有当我的偏移量有较大的值(>6位)时,才会发生这种情况,而云正是通过这个值进行转换的。

下面是使用pcl库的代码

代码语言:javascript
复制
 Eigen::Matrix4d translationMatrix = Eigen::Matrix4d::Identity();

 //translation
 translationMatrix(0,3) = 1000000;
 translationMatrix(1,3) = 1000000;

 pcl::PointCloud<pcl::PointXYZ>::Ptr translatedCloud;
 translatedCloud.reset(new pcl::PointCloud<pcl::PointXYZ>());

 pcl::transformPointCloud(*cloud,*translatedCloud,translationMatrix);

 pcl::io::savePCDFileASCII ("translatedCloud.pcd",*translatedCloud);

原始云

变换云

我怀疑问题可能是所使用的数据类型的范围。

任何有关这方面的资料都是有帮助的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-08 17:22:59

问题在于所使用的抵消范围。pcl::PointXYZ有点作为浮点数,所以当提供超出范围的这种偏移时,它会舍弃结果,从而导致精度的损失。解决这一问题的一个明显办法是,如果可能的话,将范围正常化。另一种解决方案是在PCL中添加自定义点类型。PCL提供了一个不错的文档

票数 1
EN

Stack Overflow用户

发布于 2020-04-16 06:26:25

您可以通过精确的输入直接使用PCDWriter类。

按照建议,在PCL中创建自定义点类型,并将其保存在ASCII中。只有ASCII格式具有此精确输入。不知道其他格式。

注意:对于这种新的双类型自定义点云,可用的工具不能工作,因为PCL使用浮点。欲了解更多信息:链接

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

https://stackoverflow.com/questions/57465898

复制
相关文章

相似问题

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