测试程序
table_scene_mug_stereo_textured.pcd
差异法线特征文件don.pcd
过滤掉差异法线强度小于threshold的点 don_filtered.pcd
don_cluster_0.pcd
don_cluster_1.pcd
[pcl::NormalEstimationOMP::setNumberOfThreads] Parallelization is requested, but OpenMP is not available! Continuing without parallelization.
Calculating normals for scale...0.05
Calculating normals for scale...0.3
Calculating DoN...
Filtering out DoN mag <= 0.2...
Filtered Pointcloud: 34135 data points.
Clustering using EuclideanClusterExtraction with tolerance <= 0.5...
PointCloud representing the Cluster: 18278 data points.
PointCloud representing the Cluster: 15857 data points.
测试程序:参数---table_scene_mug_stereo_textured.pcd 0.05 0.3 0.2 0.5
基于法线差分割
在本教程中,我们将学习如何使用差异法特征,实现在 pcl::DifferenceOfNormalsEstimation
类中,对无组织点云的基于尺度的分割。
该算法对给定的输入点云执行基于尺度的分割,找到属于给定尺度参数的点。
理论入门
使用法线差进行分割
源码解析
这段代码是一个利用PCL(Point Cloud Library,点云库)进行点云数据处理的C++程序。程序功能是读取一个点云数据文件,并使用差异法线(Difference of Normals, DoN)技术来分割和分析点云。具体来说:
接收命令行参数,参数包括输入文件名、两个用于计算DoN的不同尺度(小尺度scale1和大尺度scale2)、阈值threshold和聚类半径segradius。
加载点云数据文件(PCD格式),并创建用于存储计算结果的点云结构。
根据点云是不是有序的,创建