点云处理:PCL库中直通滤波器的使用详解

   日期:2024-12-24    作者:xianshi321 移动:http://g8akg8.riyuangf.com/mobile/quote/8571.html

各种滤波方法类对点云滤波的整体流程

        使用对应滤波器方法类设置滤波器对象------将待滤波的点云添加到滤波器对象------根据相应滤波的的特性设置滤波器的各个参数------设置滤波条件------采用滤波方法滤波,将滤波后的点云输出

点云处理:PCL库中直通滤波器的使用详解

例子:直通滤波器对点云滤波 

1,创建pass滤波器对象pcl::PassThrough<pcl::PointXYZ> pass(true/false);

                首先创建passthrough滤波器对象,如果后续过程依然要使用被滤除点,我们必须保存被滤除点的索引以供后续使用,那么创建滤波器对象时,必须设置为true,默认构造函数创建滤波器对象时默认参数是false,不保存被滤除点的索引。

2,添加滤波对象两种方式

一是添加指向点云的指针

pcl::PointCloud<pcl::PointXYZ>::Ptr cloudnew(pcl::PointCloud<pcl::PointXYZ>)

pass.setInputCloud(cloud);

二是添加指向点云索引的指针;

pcl::IndicesConstPtr my_indicies;

pass.setIndicies(my_indicies);

三是设置滤波器的各种参数

pass.setFilterFieldName(const std::string):设置在那个属性字段上做滤波处理

pass.setFilterLimits(double a,double b):设置滤波的区间限制

pass.setFilterLimitsNegative(bool):设置滤除区间内的点还是区间外的点

pass.filter(*pointcloud_ptr):滤波后的点云的输出

程序如下

 

结果如下图所示:可知

1,pcl库中可视窗口的坐标原点在左下角

2,v2视口为v1视口原始点云沿着x字段滤波得到的[0,1]区间内的点云

3,v3视口为v1原始点云经过第一次滤波被滤除点云沿着z方向滤波,得到区间[-1,0]的点云

4v4视口为第二次滤波被滤除的点云在y方向的滤波,可知,对于一个滤波器对象pass连续使用发法getRemoveIndices()返回的仅仅是上一次滤波被滤除点云的索引值,上上一次滤波被滤除的点云的索引就被覆盖点不存在了。

来自源码: 


 

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号