我正在尝试使用B样条曲线拟合。 B样条曲线的顺序为4.当我有许多控制点时,它运行良好。但是如果控制点的数量很小,比如两个,我的程序就会崩溃。我意识到控制点的数量与节数和顺序有关。任何人都可以帮我澄清关系或给出一些链接吗?
答案 0 :(得分:4)
听起来你只是简单地读出界限,这不是计算样条曲线的具体问题。要计算度n
的b样条,您至少需要n + 1
个点。
简化并显示问题:
最简单的插值方法是线性插值 - 只需在两点之间画一条线。
如果您只有一个点,则无法插入任何内容,只是因为您不知道在哪里绘制。
对于二次插值,您至少需要三个点等。
以类似的方式,对于4度的b样条,你至少需要5个点。
非常好online demo can be found here:
答案 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/
在我给出的所有参考文献中都涵盖了曲线拟合问题。祝好运。