PCL 欧式距离聚类分割 CPU GPU

本文介绍了在C++中利用PCL库进行点云数据处理,包括1CPU上的KdTree聚类和2GPU上的Octree加速的欧式距离聚类分割方法,以及相应的参数设置。
摘要由CSDN通过智能技术生成

1 cpu

 /***            1     CPU            ***/
		pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);

		pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
		tree->setInputCloud(cloud_filtered);

		std::vector<pcl::PointIndices> cluster_indices;
		pcl::EuclideanClusterExtraction<pcl::PointXYZ> ec;//创建欧式聚类分割对象
		ec.setClusterTolerance(0.3); //设置近邻搜索的搜索半径
		ec.setMinClusterSize(85); //设置最小聚类尺寸
		ec.setMaxClusterSize(10000);
		ec.setSearchMethod(tree);
		ec.setInputCloud(cloud_filtered);
		ec.extract(cluster_indices);

2 gpu


#include <pcl/gpu/octree/octree.hpp>
#include <pcl/gpu/containers/device_array.hpp>
#include <pcl/gpu/segmentation/gpu_extract_clusters.h>
#include <pcl/gpu/segmentation/impl/gpu_extract_clusters.hpp>


/***            2  GPU               ***/
		pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_xyz(new pcl::PointCloud<pcl::PointXYZ>);
	
		pcl::gpu::Octree::PointCloud cloud_device;
		cloud_device.upload(cloud_xyz->points);
		pcl::gpu::Octree::Ptr octree_device (new pcl::gpu::Octree);
		octree_device->setCloud(cloud_device);
		octree_device->build();

		std::vector<pcl::PointIndices> cluster_indices;
		pcl::gpu::EuclideanClusterExtraction gec;
		gec.setClusterTolerance (0.3); 
		gec.setMinClusterSize (85);
		gec.setMaxClusterSize (10000);
		gec.setSearchMethod (octree_device);
		gec.setHostCloud(cloud_xyz);
		gec.extract (cluster_indices);

3 快速欧式距离聚类分割

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值