B样条曲线的控制点数

时间:2014-10-21 07:41:12

标签: curve-fitting spline

我正在尝试使用B样条曲线拟合。 B样条曲线的顺序为4.当我有许多控制点时,它运行良好。但是如果控制点的数量很小,比如两个,我的程序就会崩溃。我意识到控制点的数量与节数和顺序有关。任何人都可以帮我澄清关系或给出一些链接吗?

3 个答案:

答案 0 :(得分:4)

听起来你只是简单地读出界限,这不是计算样条曲线的具体问题。要计算度n的b样条,您至少需要n + 1个点。

简化并显示问题:

  • 最简单的插值方法是线性插值 - 只需在两点之间画一条线。

  • 如果您只有一个点,则无法插入任何内容,只是因为您不知道在哪里绘制。

  • 对于二次插值,您至少需要三个点等。

  • 以类似的方式,对于4度的b样条,你至少需要5个点。

非常好online demo can be found here

Example screenshot of NURBSdemo.swf

  • 选择左下方的任何 b-spline 演示,我只是选择线性
  • 在右侧,您现在可以设置控制点数以及曲线度
  • 随意尝试一下,也可以用鼠标移动点。

答案 1 :(得分:3)

两个控制点不足以定义阶数为4的B样条。对于B样条,结的数量需要等于控制点和阶数的总和。单个程度3 B样条将需要4个控制点和8个结值。因此,要计算N阶的B样条,至少需要N个点。这将为您提供单段的B样条。如果你有更多的点,那么得到的B样条将有更多的段。

答案 2 :(得分:2)

正如其他人所说,控制点的数量等于结的数量减去bspline基数的顺序。因此,一旦修复控制点,就不能对bspline函数/曲线进行任意组合,比如说k和knot向量。

关于b样条和nurbs曲线理论的一个非常有用的链接如下: http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/index.html

在那里你可以找到控制点数量与结矢量等维数的关系,以及详细的例子和一些算法。

根据您的需要,您可能还希望查看Piegl和Tiller的“The NURBS book” http://www.amazon.com/NURBS-Book-Monographs-Visual-Communication/dp/3540615458

他们做了一个了不起的工作,在他们的书中他们包括工作算法。

b样条曲线拟合数据的曲线拟合问题是一个相当大的主题,因为你必须注意避免过度/欠拟合。有几种方法,大多数涉及包括曲率惩罚项。文献很多,但你可以在Hastie等人的书中找到很多信息和一个很好的起点。人。 “统计学习的要素”,您可以从作者网站合法下载: http://statweb.stanford.edu/~tibs/ElemStatLearn/

在我给出的所有参考文献中都涵盖了曲线拟合问题。祝好运。