ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

激光点云的物体聚类

2022-06-21 11:32:48  阅读:177  来源: 互联网

标签:阈值 激光 距离 算法 密度 聚类 点云


1.什么是聚类算法

聚类就是按照某种特定的标准把一个数据集分割成不同的簇,使得同一个簇内的数据尽可能的相似,不在同一个簇内的数据差异尽可能大。

常用聚类算法包括以下几种:

 

k-means是典型的基于划分的聚类算法,针对散落的点集,选定聚类个数然后随机初始化中心点,通过迭代计算拉近类内点的距离,增大类间点的距离。

基于网格的聚类是将数据空间划分成栅格形式,将数据映射到网络中,然后计算每个栅格中点集密度,根据预设的阈值对网络单元的类别做出分类,并与邻近的栅格组形成类。

GMM是一种基于模型的聚类方法,为每簇假定了一个模型,依概率的方式寻找数据对给定模型的最佳拟合。

2.聚类的评判标准

聚类是一种无监督算法,一个好的聚类算法具有高的类内距离,同时具有低的类间距离。

通常可以通过内在方法和外在方法进行评估。

内部评价:是一种无监督的方式,采用类内聚集程度和类间离散程度衡量,比如轮廓系数,DB指数等。

外部评价:是一种有监督的方式,用一定的度量评价结果与基准数据的相似程度。比如归一化信息,兰德指数等。

3.三维点云的聚类

三维点云通常利用其特征属性进行聚类,对每个点空间或者局部空间进行特征的提取或者转换,得到多种属性,如:法向量,密度,距离,高程,强度等,将不同属性的点云分割出来。

在点云处理中常见的有欧式聚类,密度聚类,超体聚类,针对不同的场景各有优缺点,从算法的耗时角度出发超体聚类最慢,欧式聚类最快;从算法的效果角度出发欧氏距离最暴力直接,超体聚类对特殊形态的物体表征最好。下图是一张经过点云预处理后的障碍物聚类图:

 

4.点云的欧式聚类

欧式聚类依据欧氏距离作为判定准则,对于空间内的一点P,通过KD-Tree在领域搜索k个距离P点最近的点,其中距离小于设定阈值的便放入集合Q中,如果Q中元素不在增加,则聚类过程结束;否则在集合Q中选取P以外的点重复以上步骤。

欧式聚类算法在调参过程中有一个比较关键,就是点与点之间的距离阈值的设定。激光雷达在采样过程中具有近密远疏的特点,所以近处的点集之间距离较小,远处的点集之间距离较大。

经常遇到的一个问题就是,设定了距离阈值后,近处的目标聚类效果较好,但远处的目标出现欠分割或者截断的问题。如下图所示,顶部车辆中间区域距离较远导致被聚类成两个目标。

为了解决欧氏距离在不同距离段,点的间距不同的问题。工程上有人采用分段聚类,在不同距离段设置不同的阈值,多线程并行运算每一段的聚类算法,最后在分段间隔处对聚类目标进行融合。

欧式聚类算法实现相对简单,采用kd-tree搜索空间点,运算效率相对较高。但是对离群点和噪声点敏感,在道路场景对障碍物聚类时,会对灌木,树枝等点云分布不规则静态障碍物,在连续帧中聚类出不同的效果,导致外接框拟合抖动。并且欧式聚类的距离阈值对近处和远处的目标点集难以有通用性。

5.点云的密度聚类

密度聚类是将簇定义为密度相连的点的最大集合,能够把具有足够高的密度的区域划分为簇,并可以在噪声的空间数据库中发现任意形状的聚类。

DBSCAN是一种典型的密度聚类算法,它使用两个参数来描述样本的紧密程度,其一是邻域半径,用来描述当前的邻域距离阈值;其二是点的个数,用来描述在邻域范围内数据点的最小个数。

从原理出发还需要了解相关的基本概念:

1)核心对象:对于空间任一点P如果其邻域至少包含k个样本点,则p是核心对象;

2)密度直达:如果点Q位于点P的邻域内,且P是核心对象,则Q由P密度直达;

3)密度可达:如果在样本序列P1,P2,P3,P2是由P1密度直达,P3是由P2密度直达,则P3由P1密度可达;

4)密度直连:对于空间点P和Q,如果存在核心对象T使得P和Q均由T密度可达,则称P和Q密度直连;

算法流程如下:

1.设置参数Distance作为距离阈值;

2.选取空间一点P,搜索最近的k个点;

3.将k个点中小于阈值Distance的点归入集合Q;

4.在集合Q中选取P以外的点重复2操作;

5.Q中的点不在增加则完成聚类

密度聚类对噪声点不敏感,选择合适的阈值可以将目标点和离群点分离。但是在大规模的点云数据中,每个三维点都必须与其他对象点进行比较,算法耗时严重。而且对于线束较少的激光雷达点云,由于线束之间采样点间隔较大,邻域内的点云稀疏,采用密度聚类很容易造成目标点被当成噪声丢失掉,如下图所示:

 

左图是聚类前的点云,右图是密度聚类后的点云,红色圆圈处的点集由于核心对象邻域内点数稀疏,聚类后被当做噪声点丢失。

点云采用聚类算法进行障碍物分割经常出现欠分割和过分割的问题。一般聚类算法需要设置一个搜索半径,如果搜索半径过小,会将一个对象分割成多个聚类目标;如果搜索半径太大,会将多个对象分割为一个聚类目标。如下图所示:

左边的卡车被聚类成两块,右边的卡车被聚类成三块。

6.点云中的超体聚类

超体聚类类似于基于网格的聚类方式,欧式聚类和密度聚类均采用kdtree的方式进行点的搜索,而超体聚类采用八叉树进行点云的编码。对三维空间进行3D栅格化,在栅格之间做区域生长的操作。

实际应用中会对根据使用的激光雷达数据对典型算法进行改进,比如为了降低密度聚类逐点比较的时间成本,可以将三维点云数据按照维度划分为体素栅格为单元进行聚类,减少在空间中以点为单位的邻域搜索时间。

 

标签:阈值,激光,距离,算法,密度,聚类,点云
来源: https://www.cnblogs.com/fulumimusta/p/16396228.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有