解释代码void generateSkeletonpclPointCloudpclPointXYZPtr cloud pclPointCloudpclPointXYZPtr skeleton 创建一个图 int n = cloud-size; stdvectorEdge edges; 创建边容器 for int i = 0; i n; i++ for int j = i + 1
该函数用于生成点云的骨架。输入为一个点云cloud,输出为一个骨架skeleton。其实现步骤如下:
1.创建一个图,点为点云中的每个点,边为两点之间的距离。将所有边存储在一个边容器edges中。
2.对边按照权重(即距离)进行排序,使得权重小的边排在前面。
3.创建一个并查集,每个点都是一个集合,初始时每个点的父节点都是自己。
4.依次加入边,并判断边的两个端点是否在同一个集合中(即判断它们的父节点是否相同)。如果不在同一个集合中,则将它们的父节点合并,并将这条边的两个端点加入到骨架点云中。
5.重复步骤4直到所有边都被考虑过。
最后得到的skeleton即为输入点云的骨架。
原文地址: https://www.cveoy.top/t/topic/eoVF 著作权归作者所有。请勿转载和采集!