一、区域增长算法(Region growing segmentation)
在本教程中,我们将学习如何使用在 pcl::RegionGrowing 类中实现的区域增长算法。所述算法的目的是合并在平滑度约束方面足够接近的点。因此,此算法的输出是一组聚类,其中每个聚类是一组被视为同一光滑表面一部分的点。该算法的工作基于点法线之间角度的比较。
二、理论入门
让我们来看看算法是如何工作的。
首先,它根据曲率值对点进行排序。它需要完成,因为该区域从具有最小曲率值的点开始增长。这样做的原因是曲率最小的点位于平坦区域(从最平坦区域增长可以减少分段总数)。所以我们有分类的云。直到云中没有未标记的点,算法选择具有最曲率值小的点并开始区域的增长。这个过程发生如下:拾取的点被添加到称为种子的集合中。对于每个种子点,该算法都会找到它的相邻点。测试每个邻居的法线与当前种子点法线之间的角度。如果角度小于阈值,则将当前点添加到当前区域。之后,测试每个邻居的曲率值。如果曲率小于阈值,则将此点添加到种子中。从种子中删除当前种子。如果种子集变为空,则意味着算法已增大该区域,并且从头开始重复该过程。您可以在下面找到所述算法的伪代码。
Inputs
Initialize: