pcl::EuclideanClusterExtraction 对比 pcl::Kmeans
pcl::EuclideanClusterExtraction vs pcl::Kmeans
在PCL教程中,我们可以学习如何分割平面和提取欧氏簇点云。所以现在,在我使用 pcl::EuclideanClusterExtraction
算法之后。我需要每个簇的质心或平均位置。
使用 pcl::EuclideanClusterExtraction
我需要用 for 循环计算质心。经过我的搜索,我发现 pcl::Kmeans
直接提供了一个函数 get_centroids()
来获取簇的质心:https://pointclouds.org/documentation/classpcl_1_1_kmeans.html#a8788bd4098ea370e018119fc516a5eb4
现在,我有点困惑。 pcl::EuclideanClusterExtraction
和 pcl::Kmeans
之间的实际应用有什么不同?分析源码后,pcl::EuclideanClusterExtraction
为我们提供了基于三个参数的聚类。 pcl::Kmeans
如果我们确定要生成多少个集群,则使用 pcl::Kmeans
,因为构造函数中的参数 Kmeans (unsigned int num_points, unsigned int num_dimensions)
.
这是真的吗?还有其他情况吗?
这是两种截然不同的算法:
- k-means clustering 迭代查找球形点簇(通常为 high-dimensional),其中簇亲和力基于到簇中心的距离。从数学的角度来看:它选择的质心将最小化聚类点到质心的平方距离 - 如前所述,每个点都属于具有最近质心的聚类。
- cluster_extraction是一种基于最近邻的贪心区域增长算法。集群亲和力基于到集群任意点的距离(集群容差参数)。
聚类提取,公差大于blue/black点之间的距离,但小于黑点和蓝点之间的距离:
k-means 且 k=2
在PCL教程中,我们可以学习如何分割平面和提取欧氏簇点云。所以现在,在我使用 pcl::EuclideanClusterExtraction
算法之后。我需要每个簇的质心或平均位置。
使用 pcl::EuclideanClusterExtraction
我需要用 for 循环计算质心。经过我的搜索,我发现 pcl::Kmeans
直接提供了一个函数 get_centroids()
来获取簇的质心:https://pointclouds.org/documentation/classpcl_1_1_kmeans.html#a8788bd4098ea370e018119fc516a5eb4
现在,我有点困惑。 pcl::EuclideanClusterExtraction
和 pcl::Kmeans
之间的实际应用有什么不同?分析源码后,pcl::EuclideanClusterExtraction
为我们提供了基于三个参数的聚类。 pcl::Kmeans
如果我们确定要生成多少个集群,则使用 pcl::Kmeans
,因为构造函数中的参数 Kmeans (unsigned int num_points, unsigned int num_dimensions)
.
这是真的吗?还有其他情况吗?
这是两种截然不同的算法:
- k-means clustering 迭代查找球形点簇(通常为 high-dimensional),其中簇亲和力基于到簇中心的距离。从数学的角度来看:它选择的质心将最小化聚类点到质心的平方距离 - 如前所述,每个点都属于具有最近质心的聚类。
- cluster_extraction是一种基于最近邻的贪心区域增长算法。集群亲和力基于到集群任意点的距离(集群容差参数)。
聚类提取,公差大于blue/black点之间的距离,但小于黑点和蓝点之间的距离:
k-means 且 k=2