【发布时间】:2014-12-16 08:40:11
【问题描述】:
我正在尝试使用 B 样条曲线拟合。 B样条曲线的阶数为4。当我有很多控制点时,它工作得很好。但是,如果控制点的数量很少,比如两个,我的程序就会崩溃。我意识到控制点的数量与结的数量和顺序有关。谁能帮我澄清一下关系或提供一些链接?
【问题讨论】:
标签: curve-fitting spline
我正在尝试使用 B 样条曲线拟合。 B样条曲线的阶数为4。当我有很多控制点时,它工作得很好。但是,如果控制点的数量很少,比如两个,我的程序就会崩溃。我意识到控制点的数量与结的数量和顺序有关。谁能帮我澄清一下关系或提供一些链接?
【问题讨论】:
标签: curve-fitting spline
听起来您只是在阅读越界,这不是计算样条曲线的具体问题。要计算度数为 n 的 b 样条曲线,您至少需要 n + 1 点。
为了简化和显示问题:
最简单的插值方法是线性插值 - 只需在两点之间画一条线。
如果你只有一个点,你就不能插入任何东西,只是因为你不知道在哪里画。
对于二次插值,您至少需要三个点,等等。
以类似的方式,对于 4 次 b 样条曲线,您至少需要 5 个点。
一个非常好的online demo can be found here:
【讨论】:
两个控制点不足以定义 4 阶 B 样条。对于 B 样条,节点数需要等于控制点数和阶数之和。单段度 3 B 样条将需要 4 个控制点和 8 个节点值。因此,要计算阶数为 N 的 B 样条,您至少需要 N 个点。这将为您提供具有单段的 B 样条。如果您有更多点,则生成的 B 样条将有更多段。
【讨论】:
正如其他人所说,控制点的数量等于节点数减去 bspline 基的阶数。因此,一旦您修复了控制点,您的 bspline 函数/曲线就不能有任意的顺序组合,比如 k 和节点向量。
关于 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/
我给出的所有参考文献都在一定程度上涵盖了曲线拟合问题。祝你好运。
【讨论】: