news 2026/7/28 16:52:11

Leaf size is too small for the input dataset 解决办法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Leaf size is too small for the input dataset 解决办法

问题描述

在使用PCL的voxelgrid filter时,若点云过大,而设置的voxel比较小,可能会导致voxel的数量超过int32的上限,从而会出现警告:“Leaf size is too small for the input dataset”。

通用解决办法

  • 此文提出了几个解决办法:
  1. 对精度要求没那么高的话,可以将leaf size大小设置大一些。
  2. 将要降采样的点云先分割成几块、在做降采样。
  3. 使用 OctreeVoxelGridFilter,参考PCL论坛。

My solution

但上述解决办法我觉得并不好用,因此,我通过更改VoxelGrid的代码,实现了对比较大点云的降采样支持。
具体思路为若voxel数目溢出,则使用二分法将点云分成两块,然后递归调用voxelgrid即可。

  • 方案一
    更改PCL原始代码,找到“Leaf size is too small for the input dataset. Integer indices would overflow”所在位置,并将if中余下部分更改为以下代码:
pcl::PointCloud<PointT>cloud1,cloud2,cloud1f,cloud2f;pcl::PassThrough<PointT>pass;if(dx>dy&&dx>dz){pass.setInputCloud(input_);pass.setFilterFieldName("x");pass.setFilterLimits(min_p[0],min_p[0]+(max_p[0]-min_p[0])/2);pass.filter(cloud1);pass.setFilterLimitsNegative(true);pass.filter(cloud2);}elseif(dy>dx&&dy>dz){pass.setInputCloud(input_);pass.setFilterFieldName("y");pass.setFilterLimits(min_p[1],min_p[1]+(max_p[1]-min_p[1])/2);pass.filter(cloud1);pass.setFilterLimitsNegative(true);pass.filter(cloud2);}else{pass.setInputCloud(input_);pass.setFilterFieldName("z");pass.setFilterLimits(min_p[2],min_p[2]+(max_p[2]-min_p[2])/2);pass.filter(cloud1);pass.setFilterLimitsNegative(true);pass.filter(cloud2);}VoxelGrid voxelGrid=*this;voxelGrid.setInputCloud(cloud1.makeShared());voxelGrid.filter(cloud1f);voxelGrid.setInputCloud(cloud2.makeShared());voxelGrid.filter(cloud2f);output=cloud1f+cloud2f;return;
  • 方案二
    使用我写好的VoxelGridLarge代码。

由于不同的人的遇到的问题往往不一样,如何往工程中应用建议参考我之前的代码(虽然不是解决leafsize的代码,但往工程中应用的思路和写法是一样的):github仓库 或者 gitee仓库

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 16:48:36

信息发布平台app软件开发

信息发布平台App开发流程编辑&#xff1a;araolin&#xff08;私域邦网络土土哥&#xff09;需求分析与规划 明确平台的核心功能&#xff08;如用户注册、信息发布、分类浏览、搜索、评论等&#xff09;&#xff0c;目标用户群体&#xff08;企业、个人、特定行业&#xff09;&…

作者头像 李华
网站建设 2026/7/28 16:46:19

数据分析入门实战:Excel、SQL、Tableau、Python四件套学习路径与求职指南

1. 这门课到底值不值得花时间?先看它能解决什么问题 如果你正在考虑转行数据分析,或者想在工作中提升用数据说话的能力,面对网上动辄几千上万的付费课程,心里肯定在打鼓:有没有靠谱的免费资源?学哪些工具才不白费功夫?这门号称“最良心”的免费数据分析课,核心价值就在…

作者头像 李华
网站建设 2026/7/28 16:45:40

SpringBoot拦截器读取流后不能再读取(详解)

在SpringBoot的拦截器中通过流 ( request.getInputStream() ) 的方式读取body中传来的数据会导致controller接收不到值。 这个问题其实就是一个流读取的问题&#xff0c;众所周知在Java中input流只能读取一次&#xff0c;主要原因是通标记的方法来判断流是否读取完毕&#xff…

作者头像 李华
网站建设 2026/7/28 16:42:47

AngularJS通过$sce输出html的方法

【问题描述】 AngularJS的强大之处之一就是他的数据双向绑定功能----->ng-bind和针对form的ng-model 但在我们的项目当中会遇到这样的情况&#xff0c;后台返回的数据中带有各种各样的html标签 AngularJS输出html的时候&#xff0c;浏览器并不解析这些html标签 通过api&…

作者头像 李华
网站建设 2026/7/28 16:40:53

Serverless安全实战:从TAR依赖漏洞到10步纵深防御体系构建

1. 项目概述&#xff1a;一次真实的Serverless安全危机复盘 上周三凌晨&#xff0c;我被一阵急促的告警电话惊醒。监控显示&#xff0c;我们一个核心的Serverless函数突然出现大量异常调用&#xff0c;CPU使用率飙升至100%&#xff0c;日志里充斥着奇怪的路径遍历错误。经过紧急…

作者头像 李华