从3D坐标列表

时间:2015-10-13 11:50:01

标签: algorithm computer-vision computational-geometry

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

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

我完全理解解决方案,但在我的情况下,它变得不切实际。我需要阅读一个非常大的3d点列表,直接强制将导致不良问题。即使我用它们的平均值减去数据(参考这里的文件 - >第3部分:http://www.geometrictools.com/Documentation/LeastSquaresFitting.pdf),这个数字仍然非常大。那我该怎么办?

是否有迭代方式来实现它?

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

给出3D点列表
    {(X <子> 0 ,Y <子> 0 和z <子> 0 ),
    (X <子> 1 ,Y <子> 1 和z <子> 1 )...
    (X <子> N-1 ,Y <子> N-1 和z <子> N-1 )}

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

我尝试下面链接中提供的menthod
http://www.geometrictools.com/Documentation/LeastSquaresFitting.pdf

但有两个问题:
- 在计算过程中,上述算法需要对所有点值进行求和,如果我的点数增加,则会导致溢出问题

- 给新添加的点,它必须再次进行所有计算,是否有办法使用先前计算的平面参数和新给定的点以某种方式微调平面参数?

PS:我有点贪心,如果我们需要涉及所有要点,最终得到的飞机有可能不够好。我在考虑使用随机样本共识(RANSAC),是吗?正确的方向?

1 个答案:

答案 0 :(得分:1)

如果您期待一架飞机,那么大多数点都不是那么有用,因为即使是少数几个点也应该能给出最终解决方案的良好近似值(模块噪声更大)。

所以这是解决方案。将数据集采样到可以工作的东西,然后通过拟合算法运行较小的集合。

如果您不希望这些点在平面上,那么子采样仍然可以工作,但您必须考虑任何解决方案的误差范围(因为它们可能相当大)。