1、欧氏聚类原理
三维空间欧氏距离聚类算法中,涉及到唯一距离参数d。当点之间距离小于距离d 时,表明两点局部相连,属于同一簇点集。其中点之间相连满足如下性质:若点A 与点B 相连,点B 与点C 相连,则点A 与点C 也相连。
需要注意的是,二维空间欧氏距离聚类算法是指将三维点云数据投影到二维平面(如xoy平面),再依据距离准则对点进行聚类。而三维空间欧氏距离聚类是指直接依据距离准则对点云数据进行聚类,无需对点进行投影。
下图展示了基于二维空间欧氏距离聚类的原理,当距离阈值设置合理时,使用二维空间欧氏距离聚类算法对点进行聚类,所有的点被划分成左右两簇点集,并且两簇点云中任意两点相连。即对于一簇点中任意点,总能从该簇点中找到离该点距离小于d的另外一点。对于左边点集中C点,右边点集中距离C点最近的D点,两点之间距离大于距离阈值,经过聚类后C点与D点归属于两簇不同的点集。
二维欧氏距离聚类示意图
2.编程思路
随意选择一个点作为初始种子点,以该点为中心,使用KDTree以d为半径搜索近邻点,统计近邻点中不属于任何一簇点,则将该点添加进来。再以添加进来的点为中心,搜索近邻点,重复上述直至不再有点添加进来,即得到一簇点。对于上下的点,重复上述步骤直至所有的点划入到不同的簇中,结束。
基于欧氏距离的区域增长代码(C++),下载链接:
基于欧氏距离的三维点云聚类-算法与数据结构文档类资源-CSDN下载
时间分析:在增长过程中反复使用kdtree搜索近邻点,其效率直接与kdtree效率挂钩。在实际中,以半径d=0.3m处理2100w个数据量时,耗时一个半小时。在处理几十万以内的点,基本可以5s内解决
3. 欧氏距离聚类可应用的场景
林业中树木单体化处理: