首页 > 其他分享 >二. 点云主成分分析之奇异值分解与特征值分解

二. 点云主成分分析之奇异值分解与特征值分解

时间:2023-11-03 17:33:29浏览次数:25  
标签:特征值 特征向量 矩阵 分解 奇异 点云主 PCA

1. 前言

我上篇文章的最后提到了通过SVD求解ICP得到的奇异值左正交矩阵的的坐标系和PCA非常相似,这篇文章我们来看一下两者的相似处,并从数学上给出解释。

读者可以看下上篇文章的结尾的图,图1展示了两组存在一一对应关系的点,点集B是点集A经某个欧式变换得到的。

[奇异值分解在3D视觉中的应用 - 知乎](https://zhuanlan.zhihu.com/p/664771416)

​![image](https://assets.b3logfile.com/siyuan/1649125390244/assets/image-20231103115406-2shi3en.png "图 1. 点集A和点集B及各自正交基")​

# 2. 主成分分析

主成分分析(Principal Component Analysis, PCA),是一种使用很广泛的数据降维算法。PCA的主要思想是从N维的数据中找出最具有代表性的 K (K < N)个维度,用这K个维度代表数据整体。

PCA的目的是找到一组新的正交基,使得原始数据在这组基上的投影能够尽可能地保留数据的变化信息。 特征值和特征向量是PCA的核心概念,它们有以下作用:

* **特征值**表示原始数据在对应特征向量方向上的方差,也就是数据在该方向上的变化程度。 特征值越大,说明数据在该方向上的变化越大,也就越能反映数据的特征。 因此,PCA通常选择最大的几个特征值对应的特征向量作为新的正交基。
* **特征向量**表示原始数据在新的正交基上的投影方向,也就是数据降维后的坐标轴。 特征向量之间互相正交,说明新的正交基能够消除数据之间的相关性,简化数据的结构。 因此,PCA可以用特征向量将高维数据转换为低维数据,同时保留尽可能多的信息。

本文就不对主成分分析进行详细介绍了,读者可以看下面这篇文章,讲解得比较细致 [主成分分析(PCA)原理详解 - 知乎](https://zhuanlan.zhihu.com/p/37777074)

## 2.1 特征值分解 OR 奇异值分解?

PCA的几个主成分的分解可以使用特征值分解,也可以使用奇异值分解得到。点云处理常用的PCL中使用的是特征值分解,特征值分解比较常见,下面我们对比一下两者的效果。

我们将特征向量组成的正交系和奇异值分解求解ICP得到的坐标系画在一起,如下图所示。可以发现左奇异值矩阵构成的正交系和特征向量组成的正交系是对齐的(方向可能不一样,和轴的选择有关)。

注意特征向量组成的坐标系可能不是右手系,可以令Z轴=X轴和Y轴的叉积 改成右手系。

​![image](https://assets.b3logfile.com/siyuan/1649125390244/assets/image-20231103111505-n0j6ohu.png "图 2. 图中粗的轴是特征值分解得到的特征向量组成的正交系,细的轴是奇异值分解得到的正交系")​

我们下面从数学上来推导一下为什么两者给出了几乎一致的坐标系。

令数据矩阵$Q_A = [q_1, \dots, q_n],Q_B=[q_1', \dots, q_n']$分别表示点集A和点集B中的点去质心后的坐标。

## 2.2 特征值分解

我们对点集A进行主成分分析,对散度矩阵进行特征值分解

$$
Q_AQ_A^T=\sum_{i=1}^n q_i q_i^T = U\Lambda U^{-1}
$$

式中,U是$Q_A$的特征向量组成的矩阵。

$Q_A$是个对称矩阵,对于对称矩阵的特征值分解,得到的特征值向量组成的矩阵是正交矩阵,满足$UU^T=I$​

$$
Q_AQ_A^T=U \Lambda U^{-1} = U \Lambda U^T
$$

## 2.3 SVD求解ICP

我们回顾一下奇异值分解求解ICP的式子

$$
H=\sum q_i' q_i^T = U \Sigma V^T
$$

这里矩阵H可以用$Q_A$和$Q_B$表示, $H =\sum q_i' q_i^T = Q_AQ_B^T$,而去质心后的B点集的点$Q_B$其实是由去质心后的A点集的点$Q_A$旋转而来,即$Q_B=RQ_A=VU^T Q_A$,H可以写为

$$
H = Q_AQ_B^T=Q_A(VU^TQ_A)=Q_A Q_A^T U V^T = U \Sigma V^T
$$

上式两边同时乘以 $VU^T$得到 $Q_AQ_A^T = U \Sigma U^T$,得到了与奇异值分相同的结果(我这里故意用了相同的符号U就是表示这俩矩阵相同)。

对于一个对称方阵(比如本文用到的散度矩阵)进行特征值分解和奇异值分解结果是一样的,而且PCA 就是通过一个矩阵乘以自身转置构建一个对称方阵,所以对于PCA来说特征值分解和奇异值分解没什么区别。

不过奇异值分解相比特征值分解有一些更好用的性质,比如对于非方阵也可以进行奇异值分解,而只有方阵才能进行特征值分解;再者,奇异值分解后的奇异值是按照降序排列的正值,可以很方便的找到最大奇异值对应的向量。

# 3. PCA在点云中的应用

下面说说PCA在点云处理中的几个应用

## 3.1 反投影

对点云乘以*U*的逆矩阵,$Q_A^{deproject}=Q_A U^T$,就实现了将PCA的三个轴和笛卡尔空间的XYZ轴对齐。下图中蓝色点云就是红色点云反投影后将质心移动到原点的点云。

​![image](https://assets.b3logfile.com/siyuan/1649125390244/assets/image-20231103114005-an27s3w.png "图 3. 点集A和反投影后的点集A_deproject")

分布寻找反投影的点云在XYZ三个方向的最大值,就可以画出点云的Bounding box,再将bounding box投影回原来的点云就得到了点云的 Axis aligned bounding box (AABB),可以实现下面图([图片来源](https://www.researchgate.net/figure/a-A-complete-point-cloud-of-a-dog-model-b-bounding-box-c-two-child-boxes-resulted-from_fig3_356401567))中这样的包围盒。

​![image](https://assets.b3logfile.com/siyuan/1649125390244/assets/image-20231103114801-2k313kq.png)

## 3.2 降维与法向量

PCA还可以用来计算点云的法向量

对于一个点周围很小邻域内的点云进行主成分分析,以最大的两个特征值(或奇异值)对应的特征向量构成的平面为该邻域内的点拟合的平面,第三正交轴则为该点的法向。因为特征值越大则该方向越离散,特征值越小该方向越集中,所以我们认为特征值最小的维度为平面的法向。

​![image](https://assets.b3logfile.com/siyuan/1649125390244/assets/image-20231103170744-0o610se.png)​

标签:特征值,特征向量,矩阵,分解,奇异,点云主,PCA
From: https://www.cnblogs.com/yinghaoGogogo/p/17808067.html

相关文章

  • CEEMDAN+PE自适应噪声完备集合经验模态分解+排列熵重构分量 程序语言为matlab
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 线性代数 · 矩阵 · Matlab | Cholesky 分解代码实现
    (搬运外网的代码,非原创;原网址)(其实是专业课作业,但感觉国内博客没有合适的代码实现,所以就搬运到自己博客了)背景-Cholesky分解:若A为n阶实对称正定矩阵,则存在非奇异下三角矩阵L,使得A=LL^T。是特殊的LU分解(下三角上三角分解)。若限定L的对角元素为正,则这种分解......
  • 【Python】基于非侵入式负荷检测与分解的电力数据挖掘
    前言本案例将根据已收集到的电力数据,深度挖掘各电力设备的电流、电压和功率等情况,分析各电力设备的实际用电量,进而为电力公司制定电能能源策略提供一定的参考依据。更多详细内容请参考《Python数据挖掘:入门进阶与实用案例分析》一书。一、案例背景为了更好地监测用电设备的能耗......
  • 数学基础:特征值、特征向量
    目录方阵的特征值与特征向量特征方程特征子空间小结参考方阵的特征值与特征向量特征方程定义:设\(A=\begin{bmatrix}a_{ij}\end{bmatrix}\)是n阶方阵,若有λ和非零向量x,使得\[\tag{1}Ax=λx\]成立,则称λ为方阵A的特征值,非零向量x为A的属于(或对应于)特征值λ的特征向量。式(1)......
  • 质因数分解
    acwing的最基础模板https://www.acwing.com/blog/content/406/知乎大佬给的各种数据范围模板大全:https://zhuanlan.zhihu.com/p/591377294对于其中的一部分进行提炼形成自己的模板1.使用场景:假设有n个数需要分解,每个数最大可能是N,下面给出的这种代码的时间复杂度是\(O(nlogN)......
  • 第 367 场周赛(双指针,集合(upper_bound&lower_bound),前后缀分解)
    2903.找出满足差值条件的下标I2905.找出满足差值条件的下标II这两个题只有数据范围上面的差距 这个题我们大体思路是维护双指针,枚举数字,维护集合。这是灵神视频的代码classSolution:deffindIndices(self,nums:List[int],indexDifference:int,valueDiffere......
  • 基于模态分解联合小波阈值去噪(汇总)
    ​ 1.MATLAB:基于EMD联合小波阈值去噪算法代码见:基于EMD分解联合小波去噪(mbd.pub)基于EMD(经验模态分解)联合小波阈值去噪算法是一种常用于信号处理和图像处理领域的算法。它主要依赖于经验模态分解和小波阈值去噪两个步骤。经验模态分解(EMD)是一种将信号分解成多个固有模态函......
  • 信号的模态分解(汇总篇)
    ​ 1.MATLAB:EMD(经验模态分解)代码地址:EMD(经验模态分解)(mbd.pub)在机器学习和信号处理中,“EMD”可指代经验模态分解(EmpiricalModeDecomposition),它是一种非线性时频分析方法。经验模态分解是一种将信号分解为一系列固有模态函数(IntrinsicModeFunctions,简称IMF)的方法。IMF......
  • 什么是PMP里的组织分解结构(OBS)?
    在PMP和PMI的PMBOK(项目管理知识体系指南)中,OBS代表“组织分解结构”(OrganizationalBreakdownStructure)。OBS是一种项目管理工具,用于表示组织的层次结构,特别是与特定项目相关的部分。它为项目中的工作分配到不同的组织单位或团队提供了一个清晰的框架。以下......
  • 特征值问题——polynomial filtering 技术
    介绍为什么会有polynomial呢?因为特征值求解的常用技术比如幂迭代等,会用到polynomial,这些多项式迭代可以写成这种形式,,q代表polynomial的度数。我们因此需要一些近似(approximation)技巧构造一个好的多项式$p_q$。Filtering方法的用处:增加收敛性,从而达到加速的效果。Filtering方法......