平面拟合
- 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拟合平面