点云 DBSCAN 聚类算法(附 C++ 代码)

一、DBSCAN算法

DBSCAN算法,全称为“Density-Based Spatial Clustering of Applications with Node”,也就是“基于密度的聚类”。此类算法是假设聚类结构能通过样本分布的紧密程度确定,从样本密度的角度来考察样本之间的可连续性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。

DBSCAN算法做为一种有名的密度聚类算法,它是通过邻域参数(Distance,MinPts)来刻画样本分布的紧密程度。而在真正开始之前,首先要理解下面这几个概念:

核心对象:x1、x2,也就是满足邻域参数(Distance,MinPts)条件的点。 密度直达:x2由x1密度直达。 密度可达:x3由x1密度可达。 密度相连:x3与x4密度相连。 具体的定义可以参看:《机器学习》这本书,我这里只是简单的说明一下这几个概念。

二、算法步骤

1、初始化核心对象并记录其邻接点。循环遍历每一个数据点,记录每一个数据点邻域内<=Distance参数(距离参数)的其他数据点,并判断符合距离参数的邻接点个数是否>=MinPts参数(点数量参数),如果符合添加则将该数据点添加到核心对象的集合之中。 2、聚类。先任选数据集中的一个核心对象为“种子”,再由此出发找出其所有的密度可达的样本集合从而生成相应的聚类簇,直到所有的核心对象均被访问过为止。

三、代码实现效果

原始数据图:

main.cpp:

猜你喜欢

转载自blog.csdn.net/a394467238/article/details/132585243
今日推荐