我有一组从表面网格获得的点(形式为x1,y1,z1 ... xn,yn,zn )。我想通过最小化正交距离来找到最适合这些点的 3D 平面。x,y,z坐标是独立的,即我想得到平面方程Ax + By + Cz + D = 0的系数A, B, C, D。
获得 A、B、C、D 的算法是什么?
注意:在上一篇文章中,通过将z坐标视为x,y的线性函数,讨论了最小二乘意义上的最佳拟合平面。然而,这不是我的情况。
我有一组从表面网格获得的点(形式为x1,y1,z1 ... xn,yn,zn )。我想通过最小化正交距离来找到最适合这些点的 3D 平面。x,y,z坐标是独立的,即我想得到平面方程Ax + By + Cz + D = 0的系数A, B, C, D。
获得 A、B、C、D 的算法是什么?
注意:在上一篇文章中,通过将z坐标视为x,y的线性函数,讨论了最小二乘意义上的最佳拟合平面。然而,这不是我的情况。
从记忆中,这变成了一个特征向量问题。从一个点到您的平面的距离与 Ax + By + Cz + D 成正比 - 看到这一点的一种方法是注意平面的法线是 (A, B, C)。常数 D 令人头疼,但我认为您可以通过重新定义变量将其转换为常数来摆脱它,这样一切都意味着 0。在这种情况下,我认为最合适的平面将通过原点.
然后你会发现你想要最小化 SUM_i (X_i . A)^2 其中 A 是一个 3 向量。当然,您可以通过将 A 的所有分量乘以某个小标量来使其任意小,因此您希望将此主题最小化到例如 ||A||^2 = 1 的约束,这通过使 A 来理解比例一个单位向量。(X_i . A)^2 = A' (X_i' X) A,所以你想最小化 A' (SUM_i (X_i'X_i)) A 所以我想你想要 SUM_i X_i'X_i 的最小特征向量
这在统计中没有更频繁地使用的一个原因是,如果您缩放任何坐标向量的单位而不以相同的量在其他方向上类似地缩放单位,您得到的答案将会改变。
想一想,你可以在http://en.wikipedia.org/wiki/Total_least_squares看到这一切都得到了妥善解决
数据的最小二乘拟合,第 2 节:“使用正交回归的 nD 点的线性拟合”。
正如 mcdowella 所提到的,您需要求解一个 3x3 特征系统。