平面拟合
- 1、平面拟合
- 2、参考文献
- 3、相关代码
1、平面拟合
PCA 是一种数学变换的方法,利用降维的思想在变换中保持变量的总方差不变,将给定的一组变量线性变换为另一组不相关的变量,并且使变换后的第一变量的方差最大,即第一主成分,其他分量的方差依次递减。在点云数据中的变量为三维点坐标的集合,其变量为X、Y、Z 三个坐标值,则经过变换后,应有三个主成分,对于一个空间平面,在平行于平面的方向上点集分布最为离散,方差最大,在垂直于平面的方向上,点集分布最为集中,方差最小,即空间平面的第三主成分为垂直于空间平面的向量。由于平面拟合最关键的为法向量的拟合,利用PCA 得到点集的第三主成分,即能进一步拟合出平面方程,如图1 所示。
对于在坐标系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、相关代码
- matlab 点云最小二乘拟合平面(PCA法)
- matlab 点云最小二乘拟合平面(PCA法详细过程版)
- matlab 最小二乘拟合平面并与XOY平面对齐
- Open3D 最小二乘拟合平面(PCA法 python详细过程版)
- Open3D 进阶(12)PCA拟合平面