曲线拟合3D数据集

时间:2009-02-25 23:42:07

标签: 3d geometry regression curve-fitting

2D数据的曲线拟合问题是众所周知的(LOWESS等),但是给定一组3D数据点,如何将3D曲线(例如平滑/回归样条)拟合到此数据?

更多:我正在尝试找到一条曲线,拟合由矢量X,Y,Z提供的数据,这些数据没有已知关系。基本上,我有一个3D点云,需要找到一个3D趋势线。

更多:我为这种含糊不清道歉。我尝试了几种方法(我还没有尝试修改线性拟合),随机NN似乎效果最好。即,我从点云中随机选取一个点,找到它的邻居的质心(在任意球体内),迭代。连接质心形成一个平滑的样条很难,但所获得的质心是可以通过的。

为了澄清问题,数据不是时间序列,我正在寻找一个最好描述点云的平滑样条,即如果我将这个3D样条投影到由任意2个变量形成的平面上,投影样条曲线(在2D上)将是投影点云的平滑拟合(在2D上)。

IMG:我收录了一张图片。红点表示从上述方法获得的质心。

3D Point Cloud and Local Centroids http://img510.imageshack.us/img510/2495/40670529.jpg

5 个答案:

答案 0 :(得分:2)

相关问题在这里:

Simple multidimensional curve fitting

通常,您可以从统计学习的角度来看待这样的问题。换句话说,您有一组以某种方式参数化的基函数(例如,样条函数),然后使用最小二乘法或其他一些回归技术来查找最佳系数。我碰巧喜欢Elements of Statistical Learning

答案 1 :(得分:1)

这取决于你的意思。如果你有一组点f(x,y) - > z你想要找到一个能够完成所有你可以做样条函数的函数。

如果你有一个已知的函数,并且你想调整参数以最小化RMS误差,只需考虑x,ya复合对象p(例如,好像它是复数或2向量)并使用模拟f(p)上的2d情况 - > ž。

如果你可以更具体地了解你想要完成什么,我可以更具体地提出建议。

- MarkusQ

因此,根据编辑的问题陈述,我建议如下:

  • 如果是时间序列(使用术语“趋势线”暗示),我会将其视为三个参数函数(x(t),y(t),z(t))并做2d适合他们每个人。
  • 或者(但仍然假设一个有序系列),您可能想要找到一个线性拟合(穿过云的心脏的一条线)然后根据来自的垂直投影添加某种(可能是极性)函数这一点。
  • 如果它不是一个时间序列(由“没有已知的关系”和“点云”这两个短语暗示),你必须定义你想要适合它们的“曲线”。你想要一条线吗?表面/歧管?您是希望它是一个或两个变量的函数,还是独立于它们(例如,凸包)。是否必须平滑,程度有限,或......?

真的,问题仍然过于开放。

答案 2 :(得分:1)

您可以尝试添加(即单索引模型),作为GAM http://www-stat.stanford.edu/software/gam/index.html

这是一种贪婪的方法,非常可扩展,在几个R包中实现良好

答案 3 :(得分:0)

Charles Fefferman(是 - 菲尔兹奖得主)和Boaz Klartag有一个新的非常漂亮的作品:

您可以在Klartag publications page

上找到这两个文件作为pdf文件

答案 4 :(得分:0)

我会尝试使用Spacefilling Curve Heuristic。例如,按空间填充曲线访问它们的顺序对点进行排序。您的问题的一个解决方案是通过按此顺序采取的点的样条曲线。为了获得更短更平滑的曲线(但是从点到曲线的RMS距离更大),您可以强制样条曲线仅通过每个第k个点。如果在选择每个第k个点之后,您可以通过它们寻找更短的哈密尔顿路径(如旅行推销员问题,但是对于开放路径),则可以改善曲线。您还可以调整样条曲线节点以减小RMS距离。在计算RMS距离时,我会使用空间填充曲线顺序来指示样条曲线的哪个部分可能最接近给定点。