2015-10-13 83 views
0

我想从3D点列表中找到最合适的平面。这意味着飞机与所有点的距离最小。读了这篇文章从3D坐标列表中找到最合适的平面

Best fit plane by minimizing orthogonal distances
3D Least Squares Plane

我完全理解搜索解决方案,但它原来对方是我的情况是不切实际的。我需要阅读一个非常大的3d点列表,直接阻碍会导致病态问题。即使我用它们的平均值来减去数据,(参考文献 - > part3:http://www.geometrictools.com/Documentation/LeastSquaresFitting.pdf)这个数字还是非常大的。那么我能做什么?

有没有一种迭代的方式来实现它?


我改变了提问的方式,希望可能有人能给我更多的建议吗?

鉴于3D的列表点
{(X 0 ,Y ,Z ),
(X ,Y ,Z ).. 。
(X n-1个,Y n-1个,Z n-1个)}

我想通过拟合所有的3D点来构建一个平面。在这个意义上,我的意思是找到具有格式(Ax + By + Cy + D = 0)的平面,因此它使用四个参数(A,B,C,D)来表征一个平面。每个点与飞机之间的距离总和应该是最小的。

我尝试在以下链接
http://www.geometrictools.com/Documentation/LeastSquaresFitting.pdf

提供的menthod但有两个问题:
-During计算,上述算法需要做的所有的点值,从而导致溢出问题的总和如果我的点数增加

-given新添加的点,它必须重新做所有的计算,有没有办法使用之前计算的平面参数和新给定的点以某种方式微调平面参数? PS:我有点贪婪,如果我们需要涉及所有的点,最终获得的飞机可能是不够好的。我想使用随机样本一致性(RANSAC),是不是正确的方向?

+2

请更具体地说明为什么您提供的链接上的解决方案不起作用。第二个链接明确提供了一个非常好的方法。 – Petr

+0

我读的大多数算法都需要计算所有x坐标或y坐标的总和,但是因为我的点数很多。结果值总是会导致溢出。这就是问题所在。 – Carl

+0

为什么你不使用浮点类型?无论如何,你的答案将是浮点... – Petr

回答

1

如果你正在等飞机,那么大多数点并不是那么有用,因为即使少数人也应该给你最终解决方案的一个很好的近似(模块多一点噪音)。

所以这里的解决方案。通过拟合算法对数据集进行采样,使其运行并运行较小的集合。

如果您不希望点在飞机上,那么子采样应该仍然有效,但您必须考虑任何解决方案的误差范围(因为它们可能相当大)。