algorithm - 寻找多个平面的平均相交线

标签 algorithm 3d language-agnostic geometry best-fit

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

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

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

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

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

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

最佳答案

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

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

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

关于algorithm - 寻找多个平面的平均相交线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38072755/

相关文章:

java - 在java JMonkeyEngine中,公共(public)GameSettings getNewSettings()?我该如何填写?

3d - 使用 gnuplot 绘制三角形网格

language-agnostic - 有什么好的代码优化方法?

language-agnostic - 是否可以在软件中控制 LCD 组件?

language-agnostic - 在模拟的低内存,慢速CPU环境中运行我的应用程序

c程序字符和整数分离

c - 这个 Splay Tree range sum 有没有更快的实现?

模拟现场投票的算法

java - Java 中间隔重复算法的开源实现

3d - 你如何告诉 OpenGL ES 2.0 使用纹理作为深度缓冲区?