SVD平面拟合原理

已知三维空间中的一堆点,拟合平面平面的方程为 a x + b y + c z = d ax + by + cz = d ,为了容易得到平面到原点距离,需要使 a 2 + b 2 + c 2 = 1 a^{2}+b^{2}+c^{2}=1
首先计算这些点 ( x i , y i , z i ) (x_{i},y_{i},z_{i}) 的平均坐标 ( x ˉ , y ˉ , z ˉ ) (\bar x,\bar y,\bar z) ,显然,有 a x ˉ + b y ˉ + c z ˉ = d a\bar x + b\bar y + c\bar z = d
与平面方程相减,并写为矩阵形式,得到
[ x 1 x ˉ y 1 y ˉ z 1 z ˉ x 2 x ˉ y 2 y ˉ z 2 z ˉ x 3 x ˉ y 3 y ˉ z 3 z ˉ . . . x n x ˉ y n y ˉ z n z ˉ ] [ a b c ] = 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
另左边矩阵为 A A ,右边矩阵为 X X ,则拟合的目标函数为 min A X \min ||AX|| ,并具有约束 X = 1 |X|| = 1
A A 做奇异值分解
A = U D V T A = UD{V^T}
其中, D D 是对角矩阵, U U V V 均为酉矩阵。
所以 A X = U D V T X = D V T X ||AX|| = ||UD{V^T}X|| = ||D{V^T}X|| (酉矩阵性质),其中 V T X V^TX 为列矩阵,并且 V T X = X = 1 |{V^T}X|| = ||X|| = 1
因为 D D 的对角元素为奇异值,最后一个对角元素为最小奇异值,当且仅当
V T X = [ 0 0 1 ] {V^T}X = \begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix}
时, A X ||AX|| 取到最小值,此时
X = [ a b c ] = V [ 0 0 1 ] X =\begin{bmatrix} a\\b\\c \end{bmatrix}= {V}\begin{bmatrix} 0 \\ 0 \\ 1 \\ \end{bmatrix}
( a , b , c ) (a,b,c) 即为平面 a x + b y + c z = d ax + by + cz = d 的法向量。
该方法的代码实现可以参考笔者以前的博客
https://blog.csdn.net/iamqianrenzhan/article/details/103463932

发布了113 篇原创文章 · 获赞 132 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/iamqianrenzhan/article/details/103463130