pcl 中的滤波与降采样

目录

  • pcl filter模块
  • RandomSample
  • UniformSampling
  • VoxelGrid
  • StatisticalOutlierRemoval filter
  • 应用
  • 参考

pcl filter模块

Module filters:https://pointclouds.org/documentation/group__filters.html
RandomSample、UniformSampling、VoxelGrid都包含在其中

RandomSample

RandomSample也就是随机降采样,随机选择n个点,每个点被选到的概率相同,可以得到固定的点数量;
缺点:如果原点云是不均匀的,比如有的地方密度大,有的地方密度小,那么RandomSample采样后的点云同样是不均匀的,分布同云点云。虽然每个点被选到的概率一样,但密度大的区域内点比较多,这个区域内被采样的机会就更多,因此原来密度大的地方,采样后,密度还是大。
pcl官方文档:https://pointclouds.org/documentation/classpcl_1_1_random_sample.html#details

UniformSampling

一般也叫做均匀采样,把点云划分至同等大小的空间网格,对某一个网格 G i G_i Gi,其中心为 p i p_i pi,网格里面包含k个点,最后是以k个点里面离网格中心中心 p i p_i pi最近的点来代表这k个点;采样得到的点是均匀的,并且仍是原点云中的点。
pcl官方文档:
https://pointclouds.org/documentation/classpcl_1_1_uniform_sampling.html#details

VoxelGrid

一般也叫做体素降采样,也是把点云划分至同等大小的空间网格,对某一个网格 G i G_i Gi,网格里面包含k个点,计算k个点的质心 p i p_i pi,最后是以质心 p i p_i pi来代表这k个点;采样得到的点是均匀的,但采样后的点不是原点云中的点,而是重新计算出来的。
pcl官方文档:
https://pointclouds.org/documentation/classpcl_1_1_voxel_grid.html#details

StatisticalOutlierRemoval filter

源码:
https://pointclouds.org/documentation/statistical__outlier__removal_8hpp_source.html
源码中用的方差公式
https://baike.baidu.com/item/%E6%96%B9%E5%B7%AE%E8%AE%A1%E7%AE%97%E5%85%AC%E5%BC%8F/5318566#1
pcl 中的滤波与降采样_第1张图片

应用

RandomSample一般比较快,可以快速得到想采样的固定点数,适用于点本身比较均匀,需要固定点数的情景
VoxelGrid与UniformSampling一般情况下差别不是很大,而且都能得到均匀分布的点,但是在大场景,比如点间距离以米为单位这种情况,如果用VoxelGrid就会导致精度损失比较大,因为质心是计算出来的点,本不属于原点云,这样的情况下,质心点可能就会与原来的点有着米级的误差。

参考

https://pointclouds.org/documentation/group__filters.html

--------------------------------------------------------------------------------------------诺有缸的高飞鸟202108

你可能感兴趣的:(3d视觉,点云算法,c++,pcl,点云降采样)