【PCL】教程 stick_segmentation点云的滤波、降采样、颜色阈值过滤、欧式聚类提取以及线段分割等过程...

6e57a5b9bd641bf8259638ddca3c55d1.png

[done, 653.59 ms : 2073600 points]
Available dimensions: x y z rgb

源点云1189_kinect_v2_scene_1.pcd

1cef583b207fc2bfc05d9bd1606ebf15.png

79.2252 ms
Found 911 inliers.

结果

代码包含了许多 PCL (Point Cloud Library) 相关的文件和类的使用,涉及到点云的读取、处理和可视化。代码的核心部分定义了如何过滤特殊颜色的点云数据,以及如何提取最大的欧几里得距离聚类。

下面是代码的主要组件和流程:

  1. 定义了 ConditionThresholdHSV 类,用于颜色阈值处理。它基于HSV色彩空间定义了一个条件,用于确定一个点是否符合用户定义的颜色阈值。该类内有一个函数 evaluate,用于评估输入点的颜色是否位于定义的HSV值范围内

  2. filterRed 和 filterGreen 函数使用 pcl::ConditionalRemoval 类和 ConditionThresholdHSV 类来过滤出红色和绿色成分的点云。它们读取输入的点云,应用条件删除滤波器,并输出符合条件的点云。

  3. downsample 函数通过 pcl::VoxelGrid 类对输入点云进行体素化下采样,从而减少数据点的数量。

  4. extractLargestCluster 函数利用 pcl::EuclideanClusterExtraction 类从点云中提取最大的欧几里得距离聚类。

  5. compute 函数结合上述几个函数,先对输入点云进行下采样和颜色过滤,然后通过 pcl::SACSegmentation 类的随机抽样一致性 (RANSAC) 算法提取直线模型,找到支持直线模型的点集(内点)。

  6. main 函数则设置了程序的主要逻辑流程。首先,它创建了可视化对象 pcl::visualization::PCLVisualizer 并进行初始化,然后它加载点云文件,对读入的点云应用 compute 函数进行处理,并通过可视化工具显示结果。根据内点和模型系数绘制直线,并使用不同的参数展示不同的点云部分。

总的来说,该代码的主要目的是:

  • 通过HSV色彩空间过滤点云中的特定颜色(例如红色和绿色)。

  • 降采样处理点云数据。

  • 提取颜色过滤后点云的最大距离聚类。

  • 使用RANSAC算法提取直线并可视化结果。

方法上,该代码结合了多种PCL库提供的工具,如条件删除、聚类提取、模型分割和可视化,并通过封装成函数,实现了点云数据处理和特征提取的自动化。

#include <pcl/common/distances.h> // 导入PCL库中处理点云距离计算的头文件
#include <pcl/console/parse.h> // 导入PCL库中解析控制台参数的头文件
#include <pcl/console/time.h> // 导入PCL库中处理时间的头文件
#include <pcl/point_types.h> // 导入PCL库中定义点云类型的头文件
#include <pcl/memory.h> // 导入PCL库中处理内存分配的头文件
#include <pcl/point_cloud.h> // 导入PointCloud类的头文件,用于处理点云数据
#include <pcl/io/pcd_io.h> // 导入PCL库中读写PCD文件的头文件
#include <pcl/filters/voxel_grid.h> // 导入PCL库中体素滤波器的头文件,用于降采样点云
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值