电子罗盘的椭球拟合与椭球变换

电子罗盘的椭球拟合与椭球变换

椭球拟合——最小二乘法

由电子罗盘采集数据如何得到椭球方程?
电子罗盘的椭球拟合与椭球变换_第1张图片

  • 设椭球方程的一般形式为:
    A x 2 + B y 2 + C z 2 + 2 D x y + 2 E x z + 2 F y z + 2 G x + 2 H y + 2 I z = 1 Ax^2 + By^2+Cz^2 + 2Dxy + 2Exz + 2Fyz + 2Gx + 2Hy + 2Iz = 1 Ax2+By2+Cz2+2Dxy+2Exz+2Fyz+2Gx+2Hy+2Iz=1
  • 令函数 f = A x 2 + B y 2 + C z 2 + 2 D x y + 2 E x z + 2 F y z + 2 G x + 2 H y + 2 I z − 1 f=Ax^2 + By^2+Cz^2 + 2Dxy + 2Exz + 2Fyz + 2Gx + 2Hy + 2Iz -1 f=Ax2+By2+Cz2+2Dxy+2Exz+2Fyz+2Gx+2Hy+2Iz1, 其中,A、B、C、D、E、F、G、H、I为最小二乘法所需估计变量
  • 第k个样本点在函数 f f f真值
    f k = A x k 2 + B y k 2 + C z k 2 + 2 D x k y k + 2 E x k z k + 2 F y k z k + 2 G x k + 2 H y k + 2 I z k − 1 + e k = 0 f_k = Ax_k^2+By_k^2+Cz_k^2+2Dx_ky_k+2Ex_kz_k+2Fy_kz_k+2Gx_k+2Hy_k+2Iz_k -1+e_k=0 fk=Axk2+Byk2+Czk2+2Dxkyk+2Exkzk+2Fykzk+2Gxk+2Hyk+2Izk1+ek=0
    e k e_k ek为残差
  • 第k个样本点在函数 f f f观测值
    f k ^ = A x k 2 + B y k 2 + C z k 2 + 2 D x k y k + 2 E x k z k + 2 F y k z k + 2 G x k + 2 H y k + 2 I z k − 1 \hat{f_k} = Ax_k^2+By_k^2+Cz_k^2+2Dx_ky_k+2Ex_kz_k+2Fy_kz_k+2Gx_k+2Hy_k+2Iz_k -1 fk^=Axk2+Byk2+Czk2+2Dxkyk+2Exkzk+2Fykzk+2Gxk+2Hyk+2Izk1
    e k = f k − f k ^ e_k = f_k - \hat{f_k} ek=fkfk^
  • 目标函数
    m i n   Q ( A , B , C , D , E , F , G , H , I ) = m i n ( ∑ k = 1 n e k 2 ) = m i n ( ∑ k = 1 n ( f k − f k 2 ^ ) ) min \ Q(A,B,C,D,E,F,G,H,I)=min(\sum_{k=1}^n e_k^2)=min(\sum_{k=1}^n(f_k - \hat{f_k^2})) min Q(A,B,C,D,E,F,G,H,I)=min(k=1nek2)=min(k=1n(fkfk2^))
  • 应用微分求极值原理确定待估计参数A、B、…、I:
    { ∂ Q ∂ A = ∂ Q ∂ f k ^ ∂ f k ^ ∂ A = − 2 ∑ k = 1 n ( f k − f k ^ ) x k 2 = 0 ∂ Q ∂ B = ∂ Q ∂ f k ^ ∂ f k ^ ∂ B = − 2 ∑ k = 1 n ( f k − f k ^ ) y k 2 = 0 ⋮ ∂ Q ∂ I = ∂ Q ∂ f k ^ ∂ f k ^ ∂ I = − 2 ∑ k = 1 n ( f k − f k ^ ) 2 z k = 0 \left\{ \begin{aligned} \frac{\partial Q}{\partial A}=\frac{\partial Q}{\partial \hat{f_k}} \frac{\partial \hat{f_k}}{\partial A} = -2 \sum_{k=1}^n(f_k - \hat{f_k})x_k^2=0 \\ \frac{\partial Q}{\partial B}=\frac{\partial Q}{\partial \hat{f_k}} \frac{\partial \hat{f_k}}{\partial B} = -2 \sum_{k=1}^n(f_k - \hat{f_k})y_k^2=0 \\ \vdots \\ \frac{\partial Q}{\partial I}=\frac{\partial Q}{\partial \hat{f_k}} \frac{\partial \hat{f_k}}{\partial I} = -2 \sum_{k=1}^n(f_k - \hat{f_k})2z_k=0 \end{aligned} \right . AQ=fk^QAfk^=2k=1n(fkfk^)xk2=0BQ=fk^QBfk^=2k=1n(fkfk^)yk2=0IQ=fk^QIfk^=2k=1n(fkfk^)2zk=0
    整理得到
    令 M T M = [ ∑ k = 1 n x k 2 ⋅ x k 2 ∑ k = 1 n y k 2 ⋅ x k 2 ⋯ ∑ k = 1 n 2 z k ⋅ x k 2 ∑ k = 1 n x k 2 ⋅ y k 2 ∑ k = 1 n y k 2 ⋅ y k 2 ⋯ ∑ k = 1 n 2 z k ⋅ y k 2 ⋮ ∑ k = 1 n x k 2 ⋅ 2 z k ∑ k = 1 n y k 2 ⋅ 2 z k ⋯ ∑ k = 1 n 2 z k ⋅ 2 z k ] 令 M^TM= \left[ \begin{matrix} \sum_{k=1}^n x_k^2\cdot x_k^2 & \sum_{k=1}^n y_k^2\cdot x_k^2 & \cdots & \sum_{k=1}^n 2z_k\cdot x_k^2 \\ \sum_{k=1}^n x_k^2\cdot y_k^2 & \sum_{k=1}^n y_k^2\cdot y_k^2 & \cdots & \sum_{k=1}^n 2z_k\cdot y_k^2 \\ \vdots \\ \sum_{k=1}^n x_k^2\cdot 2z_k & \sum_{k=1}^n y_k^2\cdot 2z_k & \cdots & \sum_{k=1}^n 2z_k\cdot 2z_k \end{matrix} \right] MTM=k=1nxk2xk2k=1nxk2yk2k=1nxk22zkk=1nyk2xk2k=1nyk2yk2k=1nyk22zkk=1n2zkxk2k=1n2zkyk2k=1n2zk2zk
    则有
    M T M [ A B ⋯ I ] T = M T [ 1 1 ⋯ 1 ] T M^TM \left[ \begin{matrix} A & B & \cdots I \end{matrix} \right]^T = M^T \left[ \begin{matrix} 1 & 1 & \cdots 1 \end{matrix} \right]^T MTM[ABI]T=MT[111]T
    求解出参数A、B、…、I,也就得到唯一确定的椭球方程。

总结

对于形如 D w = C Dw=C Dw=C的矩阵方程(D为样本构成的矩阵,w为待求参数,C为样本值组成向量),有最小二乘解
w = ( D T D ) − 1 D T C w=(D^TD)^{-1}D^TC w=(DTD)1DTC
待求参数 w w w为椭球方程系数 w = [ A   B   C   D   E   F   G   H   I ] w=[A \ B \ C \ D \ E \ F \ G \ H \ I] w=[A B C D E F G H I] D = [ X 1   X 2   ⋯ X n ] T D=[X_1 \ X_2 \ \cdots X_n]^T D=[X1 X2 Xn]T,
其中 X i = [ x i 2   y i 2   z i 2   2 x i y i    2 x i z i   2 y i z i   2 x i   2 y i   2 z i ] X_i=[x_i^2 \ y_i^2 \ z_i^2 \ 2x_iy_i \ \ 2x_iz_i \ 2y_iz_i \ 2x_i \ 2y_i \ 2z_i] Xi=[xi2 yi2 zi2 2xiyi  2xizi 2yizi 2xi 2yi 2zi], C = [ 1   1   ⋯ 1 ] T C=[1 \ 1 \ \cdots 1]^T C=[1 1 1]T

但是前述最小二乘法得到的结果并不能保证一定是椭球,也可能是其他二次曲面(如抛物面、双曲面、柱面等)。因此,需要增加约束条件以保证拟合结果是椭球。
文献[1]给出一类准则判断二次曲面是椭球。给最小二乘增加约束条件,则椭球拟合问题更新为:
w = ( D T D ) − 1 D T C   ⇒ { D T D w = λ C 1 w w T C 1 W = 1 w=(D^TD)^{-1}D^TC \ \Rightarrow \left\{ \begin{aligned} D^TDw=\lambda C_1w \\ w^TC_1W=1 \end{aligned} \right. w=(DTD)1DTC {DTDw=λC1wwTC1W=1

椭球变换——任意椭球如何变换为标准椭球

标准椭球指中心在坐标原点,椭球半轴在坐标轴上的椭球。
已知任意的椭球方程,如何将其旋转以及平移到坐标轴上,得到标准椭球呢?

思路是我们先从标准椭球出发,看经过变换如何能表示任意椭球方程?
电子罗盘的椭球拟合与椭球变换_第2张图片

步骤一:对标准椭球进行旋转变换

设标准椭球方程为 x 1 2 A 1 2 + y 1 2 B 1 2 + z 1 2 C 1 2 = 1   ( A 1 > B 1 , C 1 > 0 ) \frac{x_1^2}{A_1^2}+\frac{y_1^2}{B_1^2}+\frac{z_1^2}{C_1^2}=1 \ (A_1 \gt B_1,C_1 \gt 0) A12x12+B12y12+C12z12=1 (A1>B1,C1>0),A1,B1,C1是半轴长。标准椭球方程矩阵形式:
[ x 1 y 1 z 1 ] [ 1 A 1 2 0 0 0 1 B 1 2 0 0 0 1 C 1 2 ] [ x 1 y 1 z 1 ] T = 1 \left[ \begin{matrix} x_1 & y_1 & z_1 \end{matrix}\right] \left[ \begin{matrix} \frac{1}{A_1^2} & 0 & 0 \\ 0 & \frac{1}{B_1^2} & 0 \\ 0 & 0 & \frac{1}{C_1^2} \end{matrix}\right] \left[ \begin{matrix} x_1 & y_1 & z_1 \end{matrix}\right]^T = 1 [x1y1z1]A121000B121000C121[x1y1z1]T=1
电子罗盘的椭球拟合与椭球变换_第3张图片
对上式进行整理,得到如下结果:
[ x 1 y 1 z 1 ] = [ T x ( α ) ⋅ T y ( β ) ⋅ T z ( γ ) ] − 1 [ x 2 y 2 z 2 ] = [ T z ( − γ ) ⋅ T y ( − β ) ⋅ T x ( − α ) ] [ x 2 y 2 z 2 ] \left[ \begin{matrix} x_1 \\ y_1 \\ z_1 \end{matrix} \right] = [T_x(\alpha)\cdot T_y(\beta) \cdot T_z(\gamma)]^{-1} \left[ \begin{matrix} x_2 \\ y_2 \\ z_2 \end{matrix} \right] = [T_z(-\gamma)\cdot T_y(-\beta) \cdot T_x(-\alpha)] \left[ \begin{matrix} x_2 \\ y_2 \\ z_2 \end{matrix} \right] x1y1z1=[Tx(α)Ty(β)Tz(γ)]1x2y2z2=[Tz(γ)Ty(β)Tx(α)]x2y2z2
[ T z ( − γ ) ⋅ T y ( − β ) ⋅ T x ( − α ) ] [T_z(-\gamma)\cdot T_y(-\beta) \cdot T_x(-\alpha)] [Tz(γ)Ty(β)Tx(α)] T z y x T_{zyx} Tzyx, T z y x T_{zyx} Tzyx的谱范数(2范数)为1
电子罗盘的椭球拟合与椭球变换_第4张图片

步骤二:对旋转后的椭球进行平移变换

电子罗盘的椭球拟合与椭球变换_第5张图片

步骤三:分析方程形式

电子罗盘的椭球拟合与椭球变换_第6张图片
平移矩阵 Δ \Delta Δ对应的是椭球球心到原点的距离,也就是椭球球心的坐标,下面讲解椭球球心如何计算
电子罗盘的椭球拟合与椭球变换_第7张图片
电子罗盘的椭球拟合与椭球变换_第8张图片
所以,椭球球心坐标 [ x 0   y 0   z 0 ] [x_0 \ y_0 \ z_0] [x0 y0 z0]
[ x 0 y 0 z 0 ] = − [ A D E D B F E F C ] − 1 [ G H I ] \left[ \begin{matrix} x_0 \\ y_0 \\ z_0 \\ \end{matrix} \right] = - \left[ \begin{matrix} A & D & E \\ D & B & F \\ E & F & C \\ \end{matrix} \right]^{-1} \left[ \begin{matrix} G \\ H \\ I \\ \end{matrix} \right] x0y0z0=ADEDBFEFC1GHI
电子罗盘的椭球拟合与椭球变换_第9张图片
电子罗盘的椭球拟合与椭球变换_第10张图片
电子罗盘的椭球拟合与椭球变换_第11张图片

总结:通过特征值分解,就可以求出旋转矩阵 T z y x T_{zyx} Tzyx并且还能得到椭球的半轴长,再加上椭球球心坐标,我们就得到了任意椭球到标准椭球的变换。


参考

[1] Qingde Li and John G.Griffiths, Least Squares Ellipsoid Specific Fitting.Proceedings of the Geometric Modeling and Processing 2004.

你可能感兴趣的:(数学与算法,几何学,虚拟现实)