基于PCA算法的点云平面拟合

平面拟合

1、平面拟合

PCA 是一种数学变换的方法,利用降维的思想在变换中保持变量的总方差不变,将给定的一组变量线性变换为另一组不相关的变量,并且使变换后的第一变量的方差最大,即第一主成分,其他分量的方差依次递减。在点云数据中的变量为三维点坐标的集合,其变量为X、Y、Z 三个坐标值,则经过变换后,应有三个主成分,对于一个空间平面,在平行于平面的方向上点集分布最为离散,方差最大,在垂直于平面的方向上,点集分布最为集中,方差最小,即空间平面的第三主成分为垂直于空间平面的向量。由于平面拟合最关键的为法向量的拟合,利用PCA 得到点集的第三主成分,即能进一步拟合出平面方程,如图1 所示。


图1 PCA变换原理

对于在坐标系XYZ 下的待拟合平面点云,利用主成分分析法对其进行分析,可得到三个按照从大到小排列的特征值 λ 1 、 λ 2 、 λ 3 λ_1、λ_2、λ_3 λ1、λ2、λ3,对应的主分量分别为 V 1 、 V 2 、 V 3 V_1、V_2、V_3 V1、V2、V3,其中 V 1 V_1 V1和 V 2 V_2 V2组成了待拟合平面的一组基, V 3 V_3 V3与 V 1 V_1 V1、 V 2 V_2 V2正交,为垂直于待拟合平面的法向量。如图1,在XYZ 坐标系下的点云,经过主成分分析后,三个主成分分量 V 1 、 V 2 、 V 3 V_1、V_2、V_3 V1、V2、V3组成了新坐标系 X ′ Y ′ Z ′ X'Y'Z' X′Y′Z′的三个基, V 1 V_1 V1和 V 2 V_2 V2为平面 X ′ O ′ Z ′ X'O'Z' X′O′Z′的一组基, V 3 V_3 V3为 O ′ Z ′ O'Z' O′Z′方向的基,即所拟合平面的法向量。

PCA 过程如下:

( 1) 特征中心化。即每一维的数据都减去该维的均值,变换之后每一维的均值都变成了零。特征中心化后的点集 P P P,如式( 1) ,其中, x i 、 y i 、 z i x_i、y_i、z_i xi、yi、zi为中心化后点坐标:

P = [ x 1 y 1 z 1 x 2 y 2 z 2 ⋮ ⋮ ⋮ x n y n z n ] (1) P=\left[ \begin{matrix} x_1 & y_1 & z_1\\ x_2 & y_2 & z_2 \\ \vdots & \vdots & \vdots\\ x_n & y_n & z_n \end{matrix} \right] \tag{1} P= x1x2⋮xny1y2⋮ynz1z2⋮zn (1)

(2) 计算三个坐标的协方差矩阵。协方差矩阵 C C C为:
C = [ c o v ( x , x ) c o v ( x , y ) c o v ( x , z ) c o v ( y , x ) c o v ( y , y ) c o v ( y , z ) c o v ( z , x ) c o v ( z , y ) c o v ( z , z ) ] (2) C=\left[ \begin{matrix} cov(x,x) & cov(x,y) & cov(x,z)\\ cov(y,x) & cov(y,y) & cov(y,z) \\ cov(z,x) & cov(z,y) & cov(z,z) \end{matrix} \right] \tag{2} C= cov(x,x)cov(y,x)cov(z,x)cov(x,y)cov(y,y)cov(z,y)cov(x,z)cov(y,z)cov(z,z) (2)

其中, c o v ( x , y ) cov( x,y) cov(x,y) 为 x x x 坐标和 y y y 坐标的协方差, c o v ( x , x ) cov( x,x ) cov(x,x) 为 x x x坐标的方差,协方差计算公式如式( 3) , x i 、 y i x_i、y_i xi、yi为中心化后点坐标:
c o v ( x , y ) = ∑ i = 1 n x i y i n − 1 (3) cov(x,y)=\frac{\sum_{i=1}^nx_iy_i}{n-1}\tag{3} cov(x,y)=n−1∑i=1nxiyi(3)

当协方差大于零时说明 x x x和 y y y是正相关关系,协方差小于零时 x x x和 y y y是负相关关系,协方差为零时 x x x和 y y y相互独立。

( 3) 计算协方差矩阵 C C C的特征值和特征向量。所计算出来的特征值按照从大到小排序,分别为 λ 1 、 λ 2 、 λ 3 λ_1、λ_2、λ_3 λ1、λ2、λ3,其所对应的特征向量分别为 ξ 1 、 ξ 2 、 ξ 3 ξ_1、ξ_2、ξ_3 ξ1、ξ2、ξ3。显然,两个较大 λ λ λ 所对应的特征向量 ξ 1 、 ξ 2 ξ_1、ξ_2 ξ1、ξ2为待拟合平面的一组基,而 ξ 3 ξ_3 ξ3为待拟合平面的法向量,其三个分量分别为 a 、 b 、 c a、b、c a、b、c。

若已知待拟合平面经过点 p ( x 0 , y 0 , z 0 ) p( x_0,y_0,z_0) p(x0,y0,z0) ,则拟合平面为式( 4) :
a ( x - x 0 ) + b ( y - y 0 ) + c ( z - z 0 ) = 0 (4) a( x-x_0) +b( y-y_0) +c( z-z_0) = 0\tag{4} a(x-x0)+b(y-y0)+c(z-z0)=0(4)

否则,取其均值作为平面上点 p ( x ˉ , y ˉ , z ˉ ) p(\bar{x},\bar{y},\bar{z}) p(xˉ,yˉ,zˉ) 进行拟合。

采用主成分分析法拟合平面的方法,对于存在噪声点的情况,也能很好的拟合出结果。因为在一个平面点云中,噪声点偏离平面的距离相对于平面的范围较小,对拟合结果的影响可以忽略。

2、参考文献

[1]叶玲洁;颜远青. 基于PCA算法的机载LiDAR点云平面分割算法研究 [J]. 城市勘测, 2018, (01): 41-44+51.

3、相关代码

相关推荐
BulingQAQ7 分钟前
论文阅读:PET/CT Cross-modal medical image fusion of lung tumors based on DCIF-GAN
论文阅读·深度学习·生成对抗网络·计算机视觉·gan
hsling松子10 分钟前
使用PaddleHub智能生成,献上浓情国庆福
人工智能·算法·机器学习·语言模型·paddlepaddle
正在走向自律14 分钟前
机器学习框架
人工智能·机器学习
dengqingrui12335 分钟前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
C++忠实粉丝37 分钟前
前缀和(8)_矩阵区域和
数据结构·c++·线性代数·算法·矩阵
好吃番茄1 小时前
U mamba配置问题;‘KeyError: ‘file_ending‘
人工智能·机器学习
ZZZ_O^O1 小时前
二分查找算法——寻找旋转排序数组中的最小值&点名
数据结构·c++·学习·算法·二叉树
CV-King2 小时前
opencv实战项目(三十):使用傅里叶变换进行图像边缘检测
人工智能·opencv·算法·计算机视觉
禁默2 小时前
2024年计算机视觉与艺术研讨会(CVA 2024)
人工智能·计算机视觉
代码雕刻家2 小时前
数据结构-3.9.栈在递归中的应用
c语言·数据结构·算法