查找多个平面的平均交点线

Finding the average intersection line for multiple planes

提问人:HugoRune 提问时间:6/28/2016 更新时间:6/29/2016 访问量:460

问:

我在 3D 空间中有一些平面,理论上它们都应该在同一条线上相交。

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

因此,在实践中,平面并不都在同一条线上相交。

如何获得所有这些平面的“平均”交点线?

我可以将每个平面彼此相交,并平均线条。然而,当两个平面的方向几乎相同时,测量中的一个小误差将导致它们计算的交点出现巨大误差。因此,在以这种方式计算平均交叉点时,我会放大测量误差。

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

算法 3D 语言无关 几何 最佳拟合

评论

0赞 Jean-Baptiste Yunès 6/28/2016
对相交线进行加权,对于相同的方向平面,用较小的值加权,对正交平面加以较大的值加权......或者消除近平行平面的交点。
0赞 HugoRune 6/28/2016
是的,对每条线进行加权应该有效,谢谢!我很好奇确切的权重是否有一些数学上的合理性,即如果我按 [angle-between-the-planes-in-rad]² 对每条线进行加权,我会得到最佳拟合结果,或者权重是否有其他最佳值。
0赞 Jean-Baptiste Yunès 6/28/2016
我想了想..但对此没有很好的答案。您必须同时管理误差模型和平面之间的角度。我想你不能不用线性函数,用一些快速增长的函数,一个指数式的函数?真的很喜欢正交。所有这些都取决于飞机的数量等。
0赞 6/28/2016
取点积得到平面法线之间夹角的余弦,然后从 1 中减去 abs(this)。当平面几乎平行时,这应该给你 ~0,当垂直时给你 ~1。然后,为了调整高于零的合理值仍然提供足够的精度这一事实,请取该值的一些大根,例如第 10 根或其他东西。
0赞 Patrick87 6/29/2016
也许只考虑“最佳”样品线?也就是说,对于每个平面,找到与其最正交的另一平面,并仅考虑该线。如果你有飞机,你最终会得到线条,可能不是所有的线条都是独一无二的。平均那些。无论如何,我建议你提出各种有代表性的测试用例,并尝试几种方法,看看哪种方法能产生“最佳”的结果。nn

答:

0赞 ead 6/29/2016 #1

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

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

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