如何用PCA算法进行散点云平面拟合?

摘要:​ 通过PCA(主成分分析)进行平面拟合是一种经典高效的方法,特别适用于三维点云数据。其核心思想是找到点云中方差最小的方向,该方向即为拟合平面的法线方向,该方向即为拟合平面的法线方向,而平面经过点云的质心。下面介绍原理、步骤,首先对其数学原
散点云处理笔记(一):基于主成份分析算法(PCA)的平面拟合 ​ 通过PCA(主成分分析)进行平面拟合是一种经典高效的方法,特别适用于三维点云数据。其核心思想是找到点云中方差最小的方向,该方向即为拟合平面的法线方向,该方向即为拟合平面的法线方向,而平面经过点云的质心。下面介绍原理、步骤,首先对其数学原理进行逐步推导。 1.数学原理推导 ​ 下面给出通过PCA进行平面拟合的详细数学推导。我们首先从问题描述开始,逐步推导最优平面由点云质心和协方差矩阵对应的特征向量确定。 1.1问题定义 ​ 给定一组由\(n\)个三维散点集合\(\{\mathbf{p}_i\in\mathcal{R}^3\}_{i=1}^n\) , 我们希望找到一个平面,使得所有点到该平面的垂直距离的平方和最小。该平面可用点法式表示为 \[\boldsymbol{\Pi}:\mathbf{n}^T(\mathbf{x}-\mathbf{c})=0,\tag{1} \] 其中\(\mathbf{n}\in\mathcal{R}^3\) 是拟合目标平面的单位法向量(\(\mathbf{n}=1\)),其中\(\mathbf{c}\in{\mathcal{R}^3}\) 是拟合目标平面任意一点。目标函数为: \[E(\mathbf{n},\mathbf{c})=\sum_{i=1}^{n}(\mathbf{n}^T(\mathbf{x}-\mathbf{c}))^2 \tag{2} \] 约束条件为\(||\mathbf{n}||=1\)。这里\(\mathbf{n}^T(\mathbf{p}_i-\mathbf{c})\) 是点\(\mathbf{p}_i\) 到平面的有符号距离(因为\(\mathbf{n}\) 是单位向量)。 1.2 确定最优\(\mathbf{c}\) ​ 首先证明最优的\(\mathbf{c}\) 是点云的质心\(\overline{\mathbf{c}}=\frac{1}{n}\sum_{i=1}^n\mathbf{p}_i\)。将目标函数对\(\mathbf{c}\) 求导(视为无约束优化,因为\(\mathbf{c}\) 可以任意取值)。先展开: \[E(\mathbf{n},\mathbf{c})=\sum_{i=1}^{n}(\mathbf{n}^T\mathbf{p}_i-\mathbf{n}^T\mathbf{c})^2 \tag{3} \] 令\(d_i=\mathbf{n}^T\mathbf{p}_i\) ,则上式成为关于标量\(\mathbf{n}^T\mathbf{c}\) 的二次函数。为了求导方便,记\(t=\mathbf{n}^T\mathbf{c}\),则 \[E=\sum_{i=1}^{n}(d_i-t)^2 \tag{4} \] 这是关于\(t\) 的凸二次函数,最小值点在导数为零处: \[\frac{dE}{dt}=-2\sum_{i=1}^{n}(d_i-t)=0 \] 由此可得 \[t=\frac{1}{n}\sum_{i=1}^nd_i \tag{5} \] 即 \[\mathbf{n}^T\mathbf{c}=\frac{1}{n}\sum_{i=1}^n\mathbf{n}^T\mathbf{p}_i=\mathbf{n}^T\left(\frac{1}{n}\sum_{i=1}^{n}\mathbf{p}_i\right)=\mathbf{n}^T\bar{\mathbf{p}} \tag{6} \] 上式对任意\(\mathbf{n}\) 成立,因此最优的\(\mathbf{c}\) 可取为\(\bar{\mathbf{p}}\) 。由于平面方程只要求\(\mathbf{c}\) 在平面上,我们可以直接令\(\mathbf{c}=\bar{\mathbf{p}}\) 。
阅读全文