`
yiheng
  • 浏览: 156580 次
社区版块
存档分类

[Point Cloud Library] 使用直通滤波器过滤点云

 
阅读更多

这个教程学习如何使用简单的滤波器,沿着指定维,过滤掉指定范围内外的值。

#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 (size_t i = 0; i < cloud->points.size (); ++i)  {    cloud->points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);    cloud->points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);    cloud->points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);  }  std::cerr << "Cloud before filtering: " << std::endl;  for (size_t i = 0; i < cloud->points.size (); ++i)    std::cerr << "    " << cloud->points[i].x << " "                         << cloud->points[i].y << " "                         << cloud->points[i].z << std::endl;  // Create the filtering object  pcl::PassThrough<pcl::PointXYZ> pass;  pass.setInputCloud (cloud);  pass.setFilterFieldName ("z");  pass.setFilterLimits (0.0, 1.0);  //pass.setFilterLimitsNegative (true);  pass.filter (*cloud_filtered);  std::cerr << "Cloud after filtering: " << std::endl;  for (size_t i = 0; i < cloud_filtered->points.size (); ++i)    std::cerr << "    " << cloud_filtered->points[i].x << " "                         << cloud_filtered->points[i].y << " "                         << cloud_filtered->points[i].z << std::endl;  return (0);}

一步一步来分析这些代码。

首先,我们创建一个PointCloud,填充数据。

然后创建一个直通滤波器并且设置参数。过滤器字段的名字设置为“Z”,接受的区间值设置为(0.0, 1.0);

即:保留z轴上z值为0.0-1.0之间的值的点,其他点均过滤掉。

运行程序,你会看到类似如下的结果。

Cloud before filtering:    0.352222 -0.151883 -0.106395    -0.397406 -0.473106 0.292602    -0.731898 0.667105 0.441304    -0.734766 0.854581 -0.0361733    -0.4607 -0.277468 -0.916762Cloud after filtering:    -0.397406 -0.473106 0.292602    -0.731898 0.667105 0.441304


分享到:
评论

相关推荐

    PCL直通滤波器进行点云滤波

    在本话题中,我们将深入探讨如何利用PCL(Point Cloud Library)中的直通滤波器和统计滤波器对点云数据进行滤波。 首先,PCL是一个开源的C++库,专门设计用于处理3D点云数据,提供了一系列工具和算法,包括点云的...

    PointCloudLibrary安装包调试包

    PointCloudLibrary安装包调试包,版本PCL-1.11.1,包括安装包和调试包,包括(Boost,Eigen,FLANN,OpenNI2,Qhull,VTK)还包括调试PointCloudLibrary源码的调试包

    point cloud library 1.0.0 for window vs2010

    The Point Cloud Library (or PCL) is a large scale, open project for point cloud processing. The PCL framework contains numerous state-of-the art algorithms including filtering, feature estimation, ...

    livox-to-pointcloud2 包

    用途:livox的HAP雷达点云msg格式转pointcloud2格式,rviz查看点云需要pointcloud2格式。所以如果你想用rviz查看livox设备的点云,就需要这个包来将默认的msg格式点云,转换一下,变成pointcloud2格式,就可以在rviz...

    3d-pointcloud-view.zip_3d point cloud_matlab ply_matlab 点云_点云显示

    本教程将深入探讨如何在MATLAB中操作和可视化三维彩色点云,特别是使用PLY格式的数据。 首先,PLY(Polygon File Format)是一种用于存储3D几何模型的文件格式,包括点云和多边形网格。它支持多种数据类型,如...

    Point Cloud Library官方API

    点云处理库Point Cloud Library(PCL)的官方API问道,包含论文《3D is here: Point Cloud Library (PCL)》

    PointCloudLibrary点云库加载pcd文件

    点云库(PointCloudLibrary,简称PCL)是一个开源的C++点云处理框架,专注于三维点云数据的处理、分析和可视化。在本主题中,我们将深入探讨如何使用PCL来加载PCD(Point Cloud Data)文件,并自定义点云的颜色。PCD...

    matlab开发-PointcloudtoolsforMatlab点云工具

    在使用"pglira-Point_cloud_tools_for_Matlab-7a56212"这个工具包时,用户应首先了解其提供的函数和类,然后根据项目需求选择合适的方法。在处理大型点云时,优化和并行计算也是关键,以确保计算效率。同时,结合...

    PCL(Point Cloud Library)点云库 个人开发环境:Ubuntu18.04

    PCL(Point Cloud Library)点云库 个人开发环境:Ubuntu18.04

    Point-cloud-layer.zip_cloud_point cloud_对点云数据z轴_点云

    在C++中,处理点云数据可能需要用到如PCL(Point Cloud Library)这样的专业库,但根据文件名,这个实现可能没有依赖外部库,而是利用了C++的基础数据结构和算法。 在"judian.cpp"中,我们可能会看到读取"terrain2....

    Point Cloud Library:用于 3D 点云处理的独立、大规模、开放式项目。-开源

    点云库 (PCL) 是一个独立的、大规模的、开放的 2D/3D 图像和点云处理项目。 PCL 根据 BSD 许可条款发布,因此可免费用于商业和研究用途。 我们得到了 Open Perception、Willow Garage、NVIDIA、Google、Toyota、...

    osg_pointcloud.rar_osg_osg pointcloud_osg 点云_osgearth 点云_点云

    基于OSG的点云绘制程序,附上点云数据样式文件

    point_cloud_compression.tar.gz_ROS_Ros点云_cloud_point cloud_点云 传输

    - **点云数据结构**:`sensor_msgs/PointCloud2`消息格式包含点云数据的元信息(如坐标系、时间戳等)和实际的点云数据。每个点通常包含X、Y、Z坐标,以及可能的颜色、法线、强度等额外信息。 - **点云处理库**:...

    $P Point-Cloud Recognizer 点云手势识别 PPT介绍

    【$P Point-Cloud Recognizer】点云手势识别技术是一种创新的人机交互方式,尤其在游戏和虚拟现实领域中有着广泛的应用。该技术基于点云数据处理,通过识别用户手势来实现对系统的控制或交互。点云数据是通过深度...

    cloud-point.zip_PCL 点云_Points-cloud下载_opencv 三维_point cloud c++_

    在本资源"cloud-point.zip"中,包含了一个名为"未命名1.cpp"的C++源代码文件,该文件利用OpenCV和PCL(Point Cloud Library)库来处理点云数据。下面将详细介绍这些知识点。 1. **点云(Points Cloud)**:点云是由...

    AAU Sewer Defect Point Cloud Dataset AAU下水道缺陷点云数据集-数据集

    使用真实数据和合成数据对点云的下水道缺陷进行分类。这是下水道和缺陷的3D数据的第一个公开可用的数据集。数据集的大部分由合成数据组成,而真实管道的点云是在丹麦奥尔堡大学的实验室环境中记录的。 AAU Sewer ...

    dianyun.rar_DIANYUN_multi point cloud_三角网格_点云_点云matlab重建

    同时,MATLAB还可以与其他工具如PCL(Point Cloud Library)或OpenCV集成,进一步增强点云处理的功能。 压缩包中的"点云重建三角网格最新.doc"文档很可能是详细教程或研究论文,涵盖了点云处理的具体步骤、算法实现...

    PointCloudLibrary加载pcd文件

    点云库(PointCloudLibrary, 简称PCL)是一个开源的C++库,专门用于处理3D点云数据。在3D计算机视觉和机器人领域,PCL扮演着至关重要的角色,因为它提供了丰富的算法和工具,用于点云的获取、过滤、分割、特征提取、...

    PCL(Point Cloud Library)

    PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上 建立起来的大型跨平台开源C++编程库, 它实现了大量点云相关的通用算法和高效数据结构, 涉及到 点云获取、 滤波、 分割、 配准、 检索、 ...

Global site tag (gtag.js) - Google Analytics