PCL之直通滤波--PassThrough
作用: 过滤掉指定字段上用户定义范围空间内的点集。
原理:首先,指定字段及该字段下的取值范围;其次,遍历点云中的每个点,删除取值不在值域内的点;最后,遍历结束,留下的点即构成滤波后的点云
效果: 简单高效,适用于消除背景等操作。
关键成员函数:
void setFilterFieldName (const std : :string &field_name)
设置限定字段的名称字符串 field_name ,若输入点云类型为PointXZY, 则field_name 可以为x 或 y 或z 但务必小写。
void setFilterLimits (const double &limit_min, const double & limit_max)
设置滤波限制条件,包括最小值 limit_min 和最大值 limit_max。 该函数与 setFilterFieldName( )一起使用,点云中所有点的setFilterFieldName( )设置的字段的值未在用户所设定区间范围外的点将被删除。参数 limit_min 为允许的区间范围的最小值,默认为 DBL_ MIN , limit_ max 为允许的区间范围的最大值,默认为DB L_MAX.
void setFilterLimitsNegative (bool &!imit_negative):
设置返回滤波限制条件外的点还是内部点, limit_negative 默认值为 false,输出点云为在设定字段的设定范围内的点集,如果设置为 true 则刚好相反 。
代码展示:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/filters/passthrough.h>
#include <pcl/visualization/pcl_visualizer.h>using namespace std;int main() {pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);// 随机生成点云cloud->width = 20;cloud->height = 1;cloud->points.resize (cloud->width * cloud->height);for (auto& point: *cloud){point.x = 1024 * rand () / (RAND_MAX + 1.0f);point.y = 1024 * rand () / (RAND_MAX + 1.0f);point.z = 1024 * rand () / (RAND_MAX + 1.0f);}cout << " Cloud before filtering: " << cloud->points.size() << endl;// 创建滤波器对象pcl::PassThrough<pcl::PointXYZ> pass;pass.setInputCloud(cloud);pass.setFilterFieldName("z");//设置过滤时所需要的点云Z字段pass.setFilterLimits(0.0, 1.0);//设置在过滤字段上的范围pass.setNegative(true);//设置保留范围内的还是过滤掉范围内的pass.filter(*cloud_filtered);cout << "Cloud after filtering: " << cloud_filtered->points.size() << endl;pcl::visualization::PCLVisualizer::Ptr view(new pcl::visualization::PCLVisualizer("ShowCloud"));// 创建两个视口: 第一个用于显示原始点云, 第二个用于显示滤波后的点云int v1(0);view->createViewPort(0.0, 0.0, 0.5, 1.0, v1);view->setBackgroundColor(0, 0, 0, v1);view->addText("Raw point clouds", 10, 10, "v1_text", v1);int v2(0);view->createViewPort(0.5, 0.0, 1, 1.0, v2);view->setBackgroundColor(0.1, 0.1, 0.1, v2);view->addText("filtered point clouds", 10, 10, "v2_text", v2);view->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud", v1);view->addPointCloud<pcl::PointXYZ>(cloud_filtered, "cloud_filtered", v2);// 设置点云的渲染颜色view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1, 0, 0, "sample cloud", v1);view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 0, 1, 0, "cloud_filtered", v2);view->addCoordinateSystem(1.0);view->initCameraParameters();while (!view->wasStopped()) {view->spinOnce(100);}return 0;
}
结果展示
PCL之直通滤波--PassThrough相关推荐
- PCL Lesson5: 直通滤波+空间平面拟合+提供原始点云数据集PCD文件
书接上文.本节做下面一个工作:通过直通滤波过滤一小片平面区域的点云(标定版),通过最小二乘法拟合,并把参数化的平面绘制在原图中. 待修正:拟合平面时离散点的处理.和拟合效果的判别 效果: 原始点云的文 ...
- PCL:直通滤波(单一字段 | 多字段)
文章目录 1 原理 2 代码实现 3 结果展示 4 对多个字段进行直通滤波 4.1 错误示范 4.2 正确做法 1 原理 针对点云某一维度,去掉指定范围内(或外)的点. 2 代码实现 #include ...
- PCL入门系列 —— PassThrough 直通滤波、点云裁剪
PCL入门系列 -- PassThrough 直通滤波.点云裁剪 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同 ...
- PCL从0到1|点云滤波之直通滤波与体素法滤波
3D视觉工坊的第51篇文章 今天呢,想和大家聊一聊点云滤波处理的相关模块. 我对点云模块了解得也不算深入,此处单纯地想和大家分享一下这几天我所学习到的点云滤波知识,如有不到之处,还请后台留言多多指正. ...
- PCL Lesson 4:直通滤波+多视图可视化
输入原始激光点云,经过直通滤波, 在一个窗口中同时显示两个点云 输入:pcdData//lader3.PCD 文件 输出:可视化 #include <stdio.h>#include< ...
- 直通滤波(PassThrough 过滤器)
直通滤波(PassThrough 过滤器)|CSDN创作打卡 学习如何沿指定维度删除值落在用户给定间隔内/外的点,删除指定一个方向上的小于min.大于max的值. setFilterLimits(mi ...
- 算法加速篇(一)------OPENMP并行加速及PCL直通滤波和求法向量加速
系列文章目录 巧了,第一篇,目前什么都没有 文章目录 系列文章目录 前言 一.OPENMP并行加速 1.开启openMP 2.指令及注意事项 二.PCL直通滤波与法向量加速 1.直通滤波 2.法向量计 ...
- 点云的直通滤波(附实现代码)
原文首发于公众号「3D视觉工坊」:PCL从0到1|点云滤波之直通滤波与体素法滤波 欢迎关注公众号「3D视觉工坊」:
- PCL直通滤波器PassThrough点云滤波
PassThrough PassThrough是直通滤波器,意思是可以设定一个频带,可以选择保留频带内的或者舍弃频带内的 代码 #include <iostream> #include & ...
最新文章
- 关于一个CCIE考试题目的研究(重分发)
- 问题记录之用poi生成图片并插入到word时,图片中的中文显示不出来
- Hibernate---进度1
- 2020 年 4 月编程语言排行榜:C 语言重回王者?
- 小白如何学3D建模?从零开始变大神,学习记录手册(必备)
- 2018蓝桥杯A组:星期一(年份判断)
- scala case语句_Scala模式与case语句匹配
- 七月算法--12月机器学习在线班-第九次课笔记—推荐系统
- c语言程序设计输出函数,输出函数C语言程序设计.pdf
- 《软件工程》 课后思考题
- Paper-----文献引用格式
- 远控王 v387 免费
- Web前端 03 Html5(收官)
- 【Linux问题】Linux修改文件出现错误E45:“readonly” option is set(add ! to override)退出不了vim
- SpringSecurity自定义多Provider时提示No AuthenticationProvider found for问题的解决方案与原理(二)
- 服务器固态硬盘接口区别,s s d固态硬盘和服务器配件硬盘的区别
- 亲爱的我把孩子放大了文案解说
- html中写模态框,Html 模态框操作
- ebay获取商品详情 API接口
- 微信小程序春天来了 安卓程序员进入冬眠?