2016-06-28 64 views
4

我在3D空间中有一些平面,理论上这些平面应该全部相交在同一条线上。查找多个平面的平均相交线

每个平面通过取3个测量点来计算。但是,这些点的测量存在一些误差。

所以在实践中,飞机并不是全部相交在同一条直线上。

如何获得所有这些飞机的“平均”相交线?

我可以将每个平面与每个其他平面相交,并对平均线进行平均。但是,当两个飞机的方向几乎相同时,其测量中的一个小错误将导致其计算出的交叉点出现巨大误差。所以我会用这种方法计算平均交点时放大测量误差。

有没有更公平的方法来计算公共交叉线?

+0

为*相同的定向平面*加上一个较小的交线,并为*正交平面*加一个较大的交线*或者消除*在平行平面*附近的交点。 –

+0

是的,加权每个单独的行应该工作,谢谢!我很好奇,是否有一些数学上的确切重量,也就是说,如果我用[angle-between-the-plane-in-rad]²来衡量每条线,我会得到最合适的结果还是有其他一些最佳值为重量。 – HugoRune

+0

我想过了,但对此没有很好的答案。您必须同时管理误差模型和平面之间的角度。我认为你不能不使用线性函数,使用一些快速增长的函数,一种指数式?真的很喜欢正交。所有这些都取决于飞机的数量等。 –

回答

0

我认为你所需要的不是平均值,而是一种检测异常值(即不良交点线)并丢弃它们的算法。

这样做的一个标准算法是随机样本共识RANSAC)。但为了能够使用它,你必须定义线之间的某种距离,这应该有可能以一种有意义的方式进行。

找到内点(即好的相交线)的另一种可能性是Hough transform。在这个算法中,线的整个参数空间被细分为单元。计算出的相交线为包含该相交线参数的单元格“投票”。票数最多的参数单元胜出。可以通过计算投票给获胜单元的所有线的平均线来改进结果。