对传统的 DBSCAN 算法进行了改进,
聚类半径随扫描距离的变化自适应地改变,
远距离障碍物 点云聚类效果得到提高。
实验结果表明,所提方法对不同距离的障碍物都
能实现良好的聚类。
对比效果图:
激光点云数据密度与扫描距离呈负相关,扫描距离越近,点云数据越稠密,
扫描距离越远,点云数据越稀疏,DBSCAN 算法对数据密度和聚类间距差较敏感,
主要依赖对 eps 距离参数的调试,在数据分布均匀时聚类效果良好,
但在数据分布不均匀时聚 类效果较差,不同的参数对最后的聚类效果有很大影响。
针对激光点云数据量大和分布不均的问题,对传统 DBSCAN 算法
改进参数输入方式。DBSCAN 算法对参数 eps 和 MinPts 非常敏感,
当点云数据分布不均匀且聚 类间距相差较大时,很难选取一个恰当的参数值
使 得在不同距离上都能实现良好聚类。
def vector_distance_v2(v):
把单个向量内部的每个元素两两相减,得到一个差值矩阵,矩阵是上三角和下三角刚好相反的结果
:param v: 可以是一个一维数组,或者一个一维的列表
result = [v[i] - v for i in range(len(v))]
def point_distance(points):
""" 是否可以只计算上三角或者下三角矩阵,这样计算量减少了一半