SVD平面拟合原理

纵饮孤独 提交于 2019-12-13 07:53:13

已知三维空间中的一堆点,拟合平面平面的方程为 ax+by+cz=dax + by + cz = d,为了容易得到平面到原点距离,需要使a2+b2+c2=1a^{2}+b^{2}+c^{2}=1
首先计算这些点(xi,yi,zi)(x_{i},y_{i},z_{i})的平均坐标(xˉ,yˉ,zˉ)(\bar x,\bar y,\bar z),显然,有axˉ+byˉ+czˉ=da\bar x + b\bar y + c\bar z = d
与平面方程相减,并写为矩阵形式,得到
[x1xˉy1yˉz1zˉx2xˉy2yˉz2zˉx3xˉy3yˉz3zˉ...xnxˉynyˉznzˉ][abc]=0 \begin{bmatrix} {{x_1} - \bar x} & {{y_1} - \bar y} & {{z_1} - \bar z} \\ {{x_2} - \bar x} & {{y_2} - \bar y} & {{z_2} - \bar z} \\ {{x_3} - \bar x} & {{y_3} - \bar y} & {{z_3} - \bar z} \\ {} & {...} & {} \\ {{x_n} - \bar x} & {{y_n} - \bar y} & {{z_n} - \bar z} \\ \end{bmatrix} \begin{bmatrix} a \\ b \\ c \\ \end{bmatrix} =0
另左边矩阵为AA,右边矩阵为XX,则拟合的目标函数为 minAX\min ||AX||,并具有约束X=1|X|| = 1
AA做奇异值分解
A=UDVTA = UD{V^T}
其中,DD是对角矩阵,UUVV均为酉矩阵。
所以AX=UDVTX=DVTX||AX|| = ||UD{V^T}X|| = ||D{V^T}X||(酉矩阵性质),其中VTXV^TX为列矩阵,并且VTX=X=1|{V^T}X|| = ||X|| = 1
因为DD的对角元素为奇异值,最后一个对角元素为最小奇异值,当且仅当
VTX=[001]{V^T}X = \begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix}
时,AX||AX|| 取到最小值,此时
X=[abc]=V[001]X =\begin{bmatrix} a\\b\\c \end{bmatrix}= {V}\begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix}
(a,b,c)(a,b,c)即为平面ax+by+cz=dax + by + cz = d的法向量。
该方法的代码实现可以参考笔者以前的博客
https://blog.csdn.net/iamqianrenzhan/article/details/103463932

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!