3D点云--聚类

系列文章目录

接着上一期的3D点云–最近邻搜索结束后怎么利用这些点进行分类分割呢?这就是这一讲的内容–聚类(Clustering)

相关系列文章不断更新:
3D点云–最近邻查找
3D点云–聚类

文章目录

  • 系列文章目录
  • 一、K-Means
    • 1. K-Means的核心思想
    • 2. K-Means算法
    • 3. K-Means算法步骤
    • 4.总结K-Means
    • 5.**应用**
  • 二、Gaussian Mixture Model高斯混合模型
    • 1.提出
    • 2.GMM
    • 3.总结
  • 三、Expectation-Maximization(EM)
    • 算法过程
  • 四、KMeans、GMM、EM
  • 五、Spectral Clustering
    • 1.矩阵
    • 2.未归一化的Spectral Clustering
    • 3.如何选K(由于无K,故聚类可假设为任何形状)
  • 六、Meanshift和DBSCAN
  • 聚类总结

本章内容介绍一下聚类,主要介绍K-Means、GMM、EM、Spectral Clustering这四种方法。

一、K-Means

1. K-Means的核心思想

在一群狗里有一只猫,所以猫是一类,狗是一类。即:某个点属于哪一类。该模型对于近似圆形的分类效果很好

2. K-Means算法

  • 已知N个点{x1,x2,…,xn},该点xi属于哪个类。K是类的个数,未知。将任务转化为最小化下式:
    J= ∑ n = 1 N r n . k ∣ ∣ x n − u k ∣ ∣ 2 \color{red}\displaystyle\sum_{n=1}^{N} r_n._k||x_n-u_k||^2 n=1Nrn.kxnuk2

3. K-Means算法步骤

算法步骤分为两部分:E-Step和M-Step

  • E-Step:求参数Rnk
    简单的设定n维数据点的聚类中心u,便可以最小化||xn-uj||²,将rnk的值分为哦、0,1两种情况,如果k是聚类中心点,则r=1,否则,r=0.
    3D点云--聚类_第1张图片

  • M-Step:求参数unk
    当r确定后,J成为了关于u的方程,当J’(一阶导数)=0时,此时可以求出J取得极值时的u(即聚类中心)

3D点云--聚类_第2张图片

4.总结K-Means

1.初始化
2.依据经验求期望-r
3.最大化J-求u
下图为k-means的聚类分割效果,可以看到红和蓝完全分离,没有概率问题。
3D点云--聚类_第3张图片

5.应用

可用于点云压缩。H×W×3的深度图对应于N×3的点,将其聚类为K类,N×3的点可被压缩为为N个标签。即:(XYZRGB)被压缩为(XYZL),这里的L是标签数,证明已经被聚类了。
注意:这里压缩的是rgb而不是pixel。也就是说把图片的点分为K类。
3D点云--聚类_第4张图片

二、Gaussian Mixture Model高斯混合模型

1.提出

在K-Means中只知道点属于哪个类,但是不知道属于哪个类的概率。GMM是软分配,即知道这个是猫的概率为80%,为狗的概率为20%。

  • GMM适用于近似椭圆形的物体的聚类分割。

2.GMM

先来高斯公式。一维和多维公式如下:
3D点云--聚类_第5张图片

GMM已知X,求π、u、∑。其实就是让点云数据最大化接近模型的过程。我们采用最大似然估计的方法计算GMM中的参数。有三个待求解参数,故可以定二求一。
在这里插入图片描述

  • 求u,令u’=0,可以解释为分配给聚类k的有效点数,是数据集中所有点的加权平均值权重,()是后验概率。
    3D点云--聚类_第6张图片
    3D点云--聚类_第7张图片
  • 求∑

在这里插入图片描述

  • 求π
    已知下式(一开始就定义了这个模型)
    在这里插入图片描述
    且由于π是概率,概率和为1是限制条件(条件是等式)
    在这里插入图片描述
    故使用拉格朗日乘子法进行优化参数λ求解:

在这里插入图片描述
对上式的π求导可得如下:
3D点云--聚类_第8张图片
将上式结论带入可得π:
3D点云--聚类_第9张图片

3.总结

  • 公式总结

GMM也有E-stpe和M-step步骤,与K-Means类似。K-Means是特殊的GMM,
3D点云--聚类_第10张图片

  • 图形总结

大家可以看到有红色和蓝色融合的部分,是因为概率分布问题。且分类类似于椭圆形。
3D点云--聚类_第11张图片

三、Expectation-Maximization(EM)

 **EM:期望最大化方法**

算法过程

  1. 初始化参数在这里插入图片描述

  2. E-Step:计算p(Z|X, \theta old)

  3. M-Step:更新theta(最优化问题)。Q可优化\theta
    3D点云--聚类_第12张图片

  4. 查看\theta是否收敛,未收敛则返回step-2

summary:其实就是求解优化下式的过程,其中theta是参数,Z在积分时可被去掉(表示某个点属于某个类这件事)
3D点云--聚类_第13张图片

四、KMeans、GMM、EM

1、GMM是一种特殊的EM应用

  • 参数{z_nk}和模型参数{u,∑,π}都用E-Step和M-Step估计
  • 聚类概率通过r(z_nk)=p(z_nk=1 |x,u,∑,π)得到

2、K-Means是GMM的一种特殊情况

  • 软分配(K-Means)变为了硬分配(GMM):γ–>r
  • ∑–>0

五、Spectral Clustering

关注点与点的连接性(基于图论),其核心思想为:如何衡量一个size

1.矩阵

  • 矩阵W是权重w_i的集合,

  • D是对角矩阵,对角线上是第i行权重值和,如:d1=w11+w12+…+w1n,

  • L为拉普拉斯矩阵,可分为归一化的L和未归一化的L。

归一化:
在这里插入图片描述

未归一化: L=D-W

  • L矩阵的特征值有几个,则有多少类;特征向量可以知道如何切割节点构成的无向图、
  • 谱分解过程可转化为min cut的求解,min cut求解转化为瑞丽熵的求解。

2.未归一化的Spectral Clustering

  • 建立图,寻找W矩阵。:w_ij≥0,w_ii=0,未相连的两点w=0.
  • 求解相似矩阵L
  • 做特征分解,找出min的k个特征值,每行作为该类特征点。
  • 在yi上做K-Means

3.如何选K(由于无K,故聚类可假设为任何形状)

  • 通过eigenvalue analysis的方式
  • 最稳定的聚类由最大化特征间隔的值(下图中4和5的差称为eigen-gap)

3D点云--聚类_第14张图片

  • Eigengapis连续特征值之间的差•Δ= | −−1 |光谱聚类

六、Meanshift和DBSCAN

MeansShift:(参数r)

  1. 以r为半径随机画圆
  2. 把圆移到inside的中心处
  3. 重复步骤2直到其不移动
  4. 重复1,2,3,移动overlapping的圆,如果圆overlap,则选择包含点数最多的圆
  5. 通过找到最近的圆的中心来确定聚类(类似于KMeans)
    3D点云--聚类_第15张图片

DBSCAN:(参数r,min_samples)
(高密度的点容易被低密度的噪声影响分类结果)

  1. 随机选择未访问过的点p,以r为半径画圆
  2. 在圆内的点数≥min_samples
    Yes:p是核心点,创建一个聚类C
    No:将p标记为噪声点并记录访问过
  3. 在半径为r的圆内,标记其为C类
    如果是核心点,将其设置为新的p,重复步骤3
  4. 将C类移出数据集,返回步骤1
  5. 终止条件是遍历所有的点之后
    3D点云--聚类_第16张图片

聚类总结

不会真的有人觉得我会写总结吧,哈哈哈哈。不想写了,看图吧,英文看不懂在线翻译吧,实在不行私信我,呜呼,偷懒成功。
3D点云--聚类_第17张图片
3D点云--聚类_第18张图片

下一节一起来看ModelFitting 模型拟合,see U

你可能感兴趣的:(三维点云理论基础,聚类,c++,python)