三维点云学习(4)2-mean shift & dbscan

三维点云学习(4)2-mean shift & dbscan

mean shift

hill climbing爬山算法

1个圆包含的点尽可能最多点:

step1:随机选取一个点作为radius的圆的中心

step2:把圆中的所有点加起来算means

step3:把新的means作为新的圆的圆心

step4:不断重复step2 to step3,直到圆的圆心不再变化

优劣:
如果点的分布是高斯分布,效果较好,如果分布较散取决于初始化的点

三维点云学习(4)2-mean shift & dbscan_第1张图片

mean shift步骤

step1.先选一个圆

step2-step3.把圆挪到不再动的地方

step4.重复 1,2,3步N次,不断爬山,把重叠的圆去掉(MMS),剩下多少个圆就有多少个类

step5.nearest-neighbor search对于每个点寻找每个点离 在上步分出的K个圆哪个距离最近,最近则属于那个圆(类)

三维点云学习(4)2-mean shift & dbscan_第2张图片

mean shift复杂度

三维点云学习(4)2-mean shift & dbscan_第3张图片

DBSCAN

DBSCAN步骤

Parameters: distance r :半径;min_sample:最小样本;core point:核心点

step1

随机选一个unvisited 的点p,构建以p为圆心,半径为r的圆。
  • 1

step2

    if  圆里的点 > min_sample:
        yes:认为p是一个核心点,创建新的类 cluster C,goto step3,标记 p 为visited
        no:标记p为一个噪点 and visited
  • 1
  • 2
  • 3

step3

a.以p为圆心,r为半的点,里的所有点,归属于cluster C;
b.并且遍历每个点,去寻找new core point。

eg.new core point的寻找:遍历每个点的过程中国,对点进行Radius NN,
倘若圆中的点>min_sample,可标记为new point point,继续遍历,重复step3,知道出现边界点退出。
  • 1
  • 2
  • 3
  • 4
  • 5

step4.

把属于cluster C的点从数据库中剔除,goto step1继续寻找其他类 
  • 1

三维点云学习(4)2-mean shift & dbscan_第4张图片
Noise:噪点
Core:核心点
Border:边界点 ,在step3.b遍历点寻找new point core中,出现 圆中的点< min_sample ,可认为该点就是cluster C的边界点
三维点云学习(4)2-mean shift & dbscan_第5张图片

DBSCAN复杂度,优劣

DBSCAN高密度的点会被低密度的点分离
三维点云学习(4)2-mean shift & dbscan_第6张图片

compare with five clustering method

三维点云学习(4)2-mean shift & dbscan_第7张图片
Spectral clustering效果最好,耗时长,其次DBSCAN,耗时短

你可能感兴趣的:(深蓝点云处理课程笔记,点云处理,算法)