PCL_点云分割_基于颜色的区域生长分割

该算法与区域生长算法有两点不同
第一:用颜色测试代替了法线测试,若两个相邻聚类的平均颜色相差较小,则将两个聚类合并;
第二:利用合并算法来控制过分割或欠分割,检查当前聚类的点数量,若小于设定阈值,则将该聚类通邻近聚类合并。
部分代码:
(1)直通滤波;

	pcl::PassThrough<pcl::PointXYZRGB> pass;
	pass.setInputCloud(cloud);
	pass.setFilterFieldName("z");
	pass.setFilterLimits(near_cuting, far_cuting);
	pass.filter(*indices);

(2)实例化pcl::RegionGrowingRGB类,并设置分割参数;

	pcl::RegionGrowingRGB<pcl::PointXYZRGB> reg;
	reg.setInputCloud(cloud);
	if (Bool_Cuting)reg.setIndices(indices);
	reg.setSearchMethod(tree);
	reg.setDistanceThreshold(DistanceThreshold);//点距离阈值,用于搜索聚类
	reg.setPointColorThreshold(ColorThreshold);//点颜色阈值
	reg.setRegionColorThreshold(RegionColorThreshold);//两类区域颜色阈值
	reg.setMinClusterSize(MinClusterSize);//聚类最少点数阈值

(3)获取聚类结果,保存在点云索引向量中。

	std::vector <pcl::PointIndices> clusters;
	reg.extract(clusters);

运行结果:
在这里插入图片描述

参数化的连通区域生长PCL)是一种常用的点云分割方法,通过从种子点开始连续生长来识别和分割点云中的区域PCL首先选择一个种子点作为起始点,并将其标记为当前生长区域的一部分。然后,它会检查该种子点的邻域内的相邻点,并根据一些预定义的规则来判断它们是否属于同一个区域。这些规则可能包括点之间的距离、法向量的相似性以及表面法线之间的差异等。 如果一个相邻点被判定为属于当前生长区域,那么它将被添加到该区域中,并被标记为已被访问。然后,PCL会继续检查这个新加入区域的所有点的邻域,通过遍历这个过程,不断扩展区域的范围。 当没有更多的相邻点可以被添加到区域中时,生长过程停止。该区域中的点将被认为是一个单独的分割,并且可以用不同的颜色或标签进行标记。 PCL的基于区域生长点云分割方法的优点是可以有效地处理不规则形状和复杂的点云。通过设置适当的生长参数,可以实现对所需分割的精确控制。 然而,PCL的基于区域生长点云分割方法也存在一些限制。在处理非常密集的点云时,生长过程可能会变得非常耗时。此外,当存在重叠的物体或存在不规则形状的区域时,该方法可能无法正确地分割点云。 总而言之,PCL的基于区域生长点云分割方法是一种流行且有效的分割技术,可以用于处理各种点云数据,并为进一步的分析和处理提供有价值的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值