【PCL】教程don_segmentation.cpp 使用差异法线(DoN)技术来分割和分析点云

本文介绍了一个C++程序,使用PCL库中的DifferenceOfNormalsEstimation类对无组织点云进行基于尺度的分割,通过计算法线差(DoN)特征,过滤和聚类来增强和分析点云结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

42b2a7bb6e8abdefd18a91ba1bc18e7b.png

测试程序

e4cd2fab69cb42277ab3e6625519e957.png

table_scene_mug_stereo_textured.pcd

2cc42ab52d892db0e16eb9845f55e7b2.png

差异法线特征文件don.pcd

4180a4f013791536a0b23bef7fcde167.png

过滤掉差异法线强度小于threshold的点 don_filtered.pcd

49feda5311b281cca3625465298d13b0.png

don_cluster_0.pcd

5830d37454884ad4db65074444d95cde.png

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 类中,对无组织点云的基于尺度的分割。

该算法对给定的输入点云执行基于尺度的分割,找到属于给定尺度参数的点。

 理论入门 

945aa3cdfae902fe8620cfbe7d1e8176.png

e6d795320d2bb72bc7779686489b96f6.png

使用法线差进行分割 

65411d6d304e26e235c58520731f832d.png

源码解析

这段代码是一个利用PCL(Point Cloud Library,点云库)进行点云数据处理的C++程序。程序功能是读取一个点云数据文件,并使用差异法线(Difference of Normals, DoN)技术来分割和分析点云。具体来说:

  1. 接收命令行参数,参数包括输入文件名、两个用于计算DoN的不同尺度(小尺度scale1和大尺度scale2)、阈值threshold和聚类半径segradius。

  2. 加载点云数据文件(PCD格式),并创建用于存储计算结果的点云结构。

  3. 根据点云是不是有序的,创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值