【点云处理技术之PCL】滤波器——直通滤波器(pcl::PassThrough)

2023-11-09

直通滤波器,是直接根据滤波器设定的条件,选择自己所需点云。可以选择保留设定范围内的点云,也可以选择滤除设定范围内的点云,保留或者滤出是由setFilterLimitsNegative进行模式开关的。

代码中,设定z轴的条件,保留z方向范围[0,1]内的点。

#include <iostream>
#include <pcl/point_types.h>
#include <pcl/filters/passthrough.h>

int main(int argc, char **argv)
{
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);

    // Fill in the cloud data
    cloud->width = 5;
    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);
    }
    cloud->points[0].z = 1;//为了测试边界条件
    cloud->points[1].z = 0;

    std::cerr << "Cloud before filtering: " << std::endl;
    for (const auto &point : *cloud)
        std::cerr << "    " << point.x << " "
                  << point.y << " "
                  << point.z << std::endl;

    // Create the filtering object
    //设置滤波器对象
    pcl::PassThrough<pcl::PointXYZ> pass;
    pass.setInputCloud(cloud);    //输入点云
    pass.setFilterFieldName("z"); //滤波字段
    //这里只保留 0.0 < z < 1.0的点云
    pass.setFilterLimits(0.0, 1.0); //设置过滤字段的范围
    //setFilterLimitsNegative默认设置为false。如果设置true,则表示setFilterLimits范围内的点滤掉
    //pass.setFilterLimitsNegative (true);
    pass.filter(*cloud_filtered); //执行过滤,并输出到cloud_filtered,但是输入的cloud不会变化

    std::cerr << "Cloud before filtering:cloud " << std::endl;
    for (const auto &point : *cloud)
        std::cerr << "    " << point.x << " "
                  << point.y << " "
                  << point.z << std::endl;

    std::cerr << "Cloud after filtering: cloud_filtered" << std::endl;
    for (const auto &point : *cloud_filtered)
        std::cerr << "    " << point.x << " "
                  << point.y << " "
                  << point.z << std::endl;

    return (0);
}

输出结果如下,可以看到只保留了z值在[0,1]的范围。

Cloud before filtering: 
    0.352222 -0.151883 1
    -0.397406 -0.473106 0
    -0.731898 0.667105 0.441304
    -0.734766 0.854581 -0.0361733
    -0.4607 -0.277468 -0.916762
Cloud before filtering:cloud 
    0.352222 -0.151883 1
    -0.397406 -0.473106 0
    -0.731898 0.667105 0.441304
    -0.734766 0.854581 -0.0361733
    -0.4607 -0.277468 -0.916762
Cloud after filtering: cloud_filtered
    0.352222 -0.151883 1
    -0.397406 -0.473106 0
    -0.731898 0.667105 0.441304

参考:https://pcl.readthedocs.io/projects/tutorials/en/latest/passthrough.html#passthrough

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【点云处理技术之PCL】滤波器——直通滤波器(pcl::PassThrough) 的相关文章

  • 第七周PCL学习--点云配准(七)

    目录 引言 一 点云配准 1 1 定义 1 2 含义 1 3 配准过程 1 4 算法原理 1 5 实验 二 总结 三 参考 引言 随着计算机辅助设计技术的发展 通过实物模型产生数字模型的逆向工程技术 由于它的独特魅力获得了越来越广泛的应用
  • 点云梯度下采样

    点云下采样又称点云精简 均匀网格下采样 均匀网格下采样法是建立在空间包围盒精简算法之上对散乱点云快速简化的一种算法 其基本思想为 根据点云数据的密度确定最小三维网格 体素 的边长为 a b c a b c a b c 计
  • 【滤波器】7. 带通滤波器

    将低通滤波器和高通滤波器串联 如下图所示 就可得到带通滤波器 设低通滤波器的截止频率为 f p 1 f p1 fp1 高通滤波器的截止频率为
  • 将PCD文件转化为PLY格式输出(QT+PCL)

    环境 ubuntu 14 04 Qt 5 2 1 PCL 1 7 剩下的话不多说 直接放代码 pcd2ply pro QT core QT gui TARGET pcd2ply CONFIG console CONFIG app bundl
  • C++使用PCL注册内存以及释放

    最近测试中发现 电脑运行一定时间就会重启 检查后发现其实是内存被占满了 然后电脑就卡住 这时会有两种情况 重启 把某些程序kill掉释放内存 这个时候不一定会kill那些占很多内存的程序 然后接着查 发现其实就是处理点云的一个程序 注册了内
  • PCL分割方法:区域生长分割算法(RegionGrowing)

    转载 有梦想的田园犬 https blog csdn net AmbitiousRuralDog article details 80267519
  • 射频滤波器分析报告(声表面波滤波器/BAW/超声)

    目录 一 射频芯片技术与产品概述 二 5G时代滤波器需求潜力巨大 三 全球滤波器市场现状 3 1 基站 3 2 手机端 四 射频芯片国内发展情况 4 1 国内射频芯片概况 4 2 国内射频滤波器发展情况 4 3 BAW的重重困难 4 4 终
  • 点云边界提取及可视化

    include
  • PCL:从法线计算到曲率计算并可视化

    法线求解原理 表面法线是几何体表面的重要属性 在很多领域都有大量应用 例如 在进行光照渲染时产生符合可视习惯的效果时需要表面法线信息才能正常进行 对于一个已知的几何体表面 根据垂直于点表面的矢量 因此推断表面某一点的法线方向通常比较简单 然
  • 【点云处理技术之PCL】滤波器——直通滤波器(pcl::PassThrough)

    直通滤波器 是直接根据滤波器设定的条件 选择自己所需点云 可以选择保留设定范围内的点云 也可以选择滤除设定范围内的点云 保留或者滤出是由setFilterLimitsNegative进行模式开关的 代码中 设定z轴的条件 保留z方向范围 0
  • Ubuntu14/16 PCL1.7/1.8 opencv2/3/4 编译安装共存

    为了使用cuda和pcl共同编程 而系统带的pcl1 7不带gpu模块 故编译安装pcl完全版 与系统pcl1 7共存 不同分发版本Ubuntu应该没有什么区别 不同版本pcl编译和使用道理也都基本相同 opencv也是一样的道理 PCL
  • PCL-获取点云体素中的所有点的索引的方法

    使用 octree 将点云体素化之后 获取体素中所有点的方法 即OctreeContainerBase中的三个方法的介绍 getPointIndex getPointIndicesVector getPointIndices 这三个方法都是
  • PCL之区域生长分割

    算法思想 首先依据点的曲率值对点进行排序 之所以排序 是因为区域生长算法是从曲率最小的点开始生长的 这个点就是初始种子点 初始种子点所在的区域即为最平滑的区域 从最平滑的区域开始生长可减少分割片段的总数 提高效率 算法流程 设置一空的种子点
  • PCL调错:合集

    1 error C4996 pcl visualization PointCloudColorHandler
  • ubuntu中使用QT同时编译pcl和opencv出现error: field ‘pa ram_k_’ has incomplete type ‘flann::SearchParams’

    问题描述 ubuntu中使用QT同时编译opencv和pcl时出现如下错误 错误原因 pcl和opencv中均包含flann库产生冲突 解决办法 将flann目前更换为flann2或者其它名字 在更改目录后 其它关联引用文件也需要更改 涉及
  • PCL常用小知识

    转自 SimpleTriangle 时间计算 pcl中计算程序运行时间有很多函数 其中利用控制台的时间计算是 首先必须包含头文件 include
  • UBUNTU16.04命令行安装PCL1.7(亲测有效)

    安装PCL点云库 最开始是按照先安装相关依赖 然后github上clone PCL相关版本包的形式安装的 编译遇到了很多问题 结果最后安装完成 但却无法运行例程 难过 又尝试了命令行的形式 命令行的形式直观简单 可安装编译好的点云库 PCL
  • PCL调错:(3)error C2589“(“:“::“右边的非法标记

    错误提示 造成该错误的原因是 pcl库中的函数模板max与Visual C 中的全局的宏max冲突 百度了以下看了一共有两种解决方案 第一种不用修改库里边的源代码 设置项目属性 在预定义处理器中添加定义NOMINMAX来禁止使用Visual
  • Visual Studio 2022配置PCL1.12.1版本点云库

    说明 这个配置步骤是当时自己参考2019配置的 当时网上还没有VS2022的配置步骤 我在自己电脑上是配置成功了 所以我将配置过程记录了下来 仅供参考 1 软件下载 Microsoft Visual Studio 2022 Pro http
  • 如何使用PCL将XYZRGB点云转换为彩色mesh模型

    如何使用PCL将XYZRGB点云转换为彩色mesh模型 最近完成了一个使用RGBD传感器 构建物体模型的小demo 其中有点难的最后一步是如何将获得的物体点云变成彩色mesh模型 效果图如下 从点云变成彩色mesh 其实整体的步骤可以总结如

随机推荐

  • C++和QML之间传输JSON字符串并解析(适用于传数组或其他复杂参数)

    QJsonObject转为QString 发送带此QString的信号 QML中接收到信号后直接用JSON进行解析 QML支持Javascript 自然也支持相应的json解析 同理 可以在QML中将javascript对象先转换成json
  • 这几款好用的数据分析软件推荐给你

    随着互联网和大数据时代的到来 数据分析已成为越来越多公司和个人必备的技能之一 而在进行数据分析时 一个好用 功能齐全的数据分析软件是至关重要的工具 在市场上 有很多不同的数据分析软件可供选择 但其中哪些才是最好的呢 今天我将向大家介绍几款我
  • 手撸代码-链表中的节点每k个一组翻转-牛客

    描述 将给出的链表中的节点每 k k 个一组翻转 返回翻转后的链表 如果链表中的节点数不是 k k 的倍数 将最后剩下的节点保持原样 你不能更改节点中的值 只能更改节点本身 要求空间复杂度 O 1 O 1 例如 给定的链表是1 2 3 4
  • JQuery的链式编程与隐式迭代

  • 华为OD机试真题-投篮大赛【2023.Q1】

    题目内容 你现在是一场采用特殊赛制投篮大赛的记录员 这场比赛由若干回合组成 过去几回合的得分可能会影响以后几回合的得分 比赛开始时 记录是空白的 你会得到一个记录操作的字符串列表 ops 其中ops i 是你需要记录的第i项操作 ops遵循
  • pytorch中一维卷积Conv1d简介

    最近在使用pytorch中的一维卷积来对文本进行处理 进行文本分类任务 查阅了网上相关的博客还有api这里做一个总结 一维卷积 顾名思义就是在一维空间上进行卷积 通常用来处理时序的数据 卷积的过程如下图 进行卷积的数据形状为 batch s
  • IntelliJ IDEA 使用教程

    一 设置入口 1 快捷键 Ctrl Alt S 2 File gt Settings 3 View gt appearance gt Toolbar 单击选中 出现工具栏图标 以后可直接点击它进入设置界面 之后的相关设置后 请点击Apply
  • 列车调度问题PTA

    7 20 列车调度 25 分 火车站的列车调度铁轨的结构如下图所示 两端分别是一条入口 Entrance 轨道和一条出口 Exit 轨道 它们之间有N条平行的轨道 每趟列车从入口可以选择任意一条轨道进入 最后从出口离开 在图中有9趟列车 在
  • Python 正则表达式(完整)-------附LeetCode真题详细解析

    正则表达式 又称规则表达式 Regular Expression 在代码中常简写为regex regexp或RE 是一种文本模式 包括普通字符 例如 a 到 z 之间的字母 和特殊字符 称为 元字符 是计算机科学的一个概念 正则表达式使用单
  • pread

    pread is a system call in Linux that allows reading data from a file descriptor at a specified offset without changing t
  • 面试经典(24)--二叉搜索树和双向链表

    题目描述 输入一棵二叉搜索树 将该二叉搜索树转换成一个排序的双向链表 算法分析 使用后续遍历方法 从10节点开始分析 只要左子树返回最大节点 右子树返回最小节点即可 正常递归无法判定当前是左子树还是右子树 所以参数要假如bool值判定左右子
  • Jmeter教程(二) - 自定义变量模拟多用户

    Jmeter教程 一 入门 Jmeter教程 二 自定义变量模拟多用户 Jmeter教程 三 Linux中使用命令行进行压测 在上一篇文章 Jmeter教程 一 入门 中介绍了Jmeter的基本用法 本文会继续介绍如何使用Jmeter对一个
  • 使用SpringSecurity,Jwt与Redis实现用户认证与授权

    spring security是spring官方比较推荐的用于认证和权限的解决方案 本次将围绕spring security的认证授权 jwt进行学习分享 1 依赖的引入
  • OpenMMLab AI实战营笔记-1

    OpenMMLab AI实战营笔记 1 第一课目录 OpenMMLab AI实战营笔记 1 OpenMMLab简介 安装教程 先安装Pytorch 安装mmcv 安装mmcv lite 安装完成 OpenMMLab简介 OpenMMLab是
  • Linux多线程编程三(互斥锁)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在线程实际运行过程中 我们经常需要多个线程保持同步 这时可以用互斥锁来完成任务 互斥锁的使用过程中 主要有pthread mutex init pthread mutex
  • mui.ajax php,求助!!!关于mui ajax获取不到后台数据

    js代码如下 mui ajax ajax php dataType json 服务器返回json格式数据 type post HTTP请求类型 headers Content Type application json success fu
  • 几种炫酷的加载动画

    动画一 An highlighted block
  • Typora常用快捷键

    Typora常用快捷键 Ctrl 1 一级标题 Ctrl 2 二级标题 Ctrl 3 三级标题 Ctrl 4 四级标题 Ctrl 5 五级标题 Ctrl 6 六级标题 Ctrl 0 段落 Ctrl 提升标题等级 Ctrl 降低标题等级 Ct
  • 什么是微服务?

    什么是微服务 微服务架构风格这种开发方法 是以开发一组小型服务的方式来开发一个独立的应用系统的 其中每个小型服务都运行在自己的进程中 并经常采用HTTP资源API这样轻量的机制来相互通信 这些服务围绕业务功能进行构建 并能通过全自动的部署机
  • 【点云处理技术之PCL】滤波器——直通滤波器(pcl::PassThrough)

    直通滤波器 是直接根据滤波器设定的条件 选择自己所需点云 可以选择保留设定范围内的点云 也可以选择滤除设定范围内的点云 保留或者滤出是由setFilterLimitsNegative进行模式开关的 代码中 设定z轴的条件 保留z方向范围 0