【PCL】VoxelGrid与ApproximateVoxelGrid的区别

PCL库提供了VoxelGrid和ApproximateVoxelGrid两种体素下采样方式。VoxelGrid通过求立方体内点云重心点来下采样,更精确但耗时;ApproximateVoxelGrid用体素栅格中心点近似,速度快但损失局部形态精细度。实验显示,二者下采样后点云个数有偏差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于体素下采样接口功能函数pcl提供了两种方式: pcl::VoxelGridpcl::ApproximateVoxelGrid

1. VoxelGrid体素采样

pcl库中的VoxelGrid对点云进行体素化,主要就是创建一个三维体素栅格(就是每个比较小的立方体组成的体素栅格)。在每个体素(三维立方体)里面,求取该立方体内的所有点云重心点来代表这个立方体的表示,以此达到下采样的目的。

class pcl::VoxelGrid<PointT>

2. ApproximateVoxelGrid体素采样

ApproximateVoxelGrid体素采样是用每个体素栅格的中心点来近似该体素内的点提升了速度,但是也损失了原始点云的局部形态精细度

class pcl::ApproximateVoxelGrid<PointT>

3. 实验结果对比

下面看一看对比一下VoxelGrid与ApproximateVoxelGrid的实验结果:
在这里插入图片描述

原始点云

在这里插入图片描述

VoxelGrid滤波点云

在这里插入图片描述

ApproximateVoxelGrid滤波点云
FilterVoxelGridApproximateVoxelGrid
点云滤波前/滤波后460400/11598460400/29186
时间/milliseconds10793
  • 不知你是否注意到这两种方法下采样后的点云个数不一致,主要原因在于ApproximateVoxelGrid是依据每一个体素的中心点来获取点云的,并不是依赖每个体素里面是否存在点云。所以会导致两种方式的处理结果又偏差,VoxelGrid的方式更加精确但是耗时相对于ApproximateVoxelGrid更高

转自:https://blog.csdn.net/qq_45467083/article/details/109259206

### ApproximateVoxelGrid近似体素实现原理 ApproximateVoxelGrid是一种用于点云数据降采样的技术,在PCL中实现了快速的体素化操作。这种方法的核心在于利用体素栅格中心点来代替该体素内部所有的实际点,从而简化了计算过程并提高了效率。 具体来说,当对一个给定空间范围内的点集执行ApproximateVoxelGrid过滤器时,会先定义好体素大小(即分辨率),接着将整个工作区域划分为多个固定尺寸的小立方体单元—体素。对于每个体素而言: - 如果其中含有至少一个原始点,则选取最接近此个体素几何中心的那个点作为代表; - 若某一体素为空,则人为构造一个新的虚拟点位于该体素正中央位置充当代理[^1]。 这种策略虽然牺牲了一部分精度,因为并非总是能精确捕捉到原有点的位置分布特性,但它极大地加快了处理速度,并且能够保持较为均匀的数据密度分布模式[^2]。 ```cpp // C++代码示例展示如何设置和应用ApproximateVoxelGrid滤波器 #include <pcl/filters/voxel_grid.h> pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr filtered_cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::ApproximateVoxelGrid<pcl::PointXYZ> approx_vox; approx_vox.setLeafSize(0.05f, 0.05f, 0.05f); // 设置体素边长为0.05米 approx_vox.setInputCloud(cloud); approx_vox.filter(*filtered_cloud); ``` 上述C++程序片段展示了怎样配置以及调用`ApproximateVoxelGrid`来进行点云压缩。这里设置了每个体素的宽度、高度及深度均为0.05米,之后指定了待处理的目标点集合,并最终得到了经过滤后的结果对象。 ### 应用场景分析 在实际的应用当中,ApproximateVoxelGrid特别适合那些需要高效预览大规模三维扫描成果或是初步清理噪声干扰的情形。由于其运算速度快的特点,非常适合在线实时更新的地图构建任务或者是机器人导航领域中的环境感知环节。此外,在某些情况下即使丢失了一些细节信息也不会影响整体效果的时候,比如粗略估计物体轮廓形状或者进行大尺度地理信息系统(GIS)建模等方面也有着广泛用途[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值