嗨,我有一堆 XYZ 数据点。我想估计一个最适合这些点的表面,以便稍后我可以输入一个 XY 对并取回该 XY 对位于表面上的 Z 值。

是否有一个现有的 Java 库可以为我估计一个表面?

如果没有,有人可以推荐我阅读的内容,这些内容将描述计算方法吗?

如果可能,我希望能够对点进行加权(有些点不太可靠,因此对成品表面的影响较小)。

最佳答案

这种问题最好用 linear least squares 解决。但是我不会尝试阅读维基百科文章,它似乎是为数学家写的。

这个想法是将问题变成线性优化问题。在您的情况下,我会尝试拟合二维多项式。这是一个形式为:

z(x, y) = A + Bx + Cy + Dx^2 + Exy + Ey^2 + Fx^3 + Gx^2y + Hxy^2 + Iy^3 + ...

你明白了。对于给定的数据集,任务简化为找到最适合数据点的参数 A 到 I。这类问题很容易用线性最小二乘法解决。

Have a look at this code for fitting ellipses to 3D data points. 通过一些努力,您可以调整它以适应我上面描述的形式的多项式。

祝你好运!

关于java - 将表面拟合到 Java 中的 3D 数据点集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15190657/

10-12 17:23