B样条曲线的控制点数量

3

我正在尝试使用B样条曲线拟合。B样条曲线的阶数为4。当我有很多控制点时,它表现良好。然而,如果控制点数量较少,例如只有两个,我的程序会崩溃。我意识到控制点的数量与节点数和阶数有关。是否有人能帮我澄清这种关系或者提供一些相关链接呢?

3个回答

4
听起来你只是超出了范围,这并不是计算样条的特定问题。要计算一个度数为n的b样条,你至少需要n + 1个点。
为了简化和展示问题:
- 最简单的插值方法是线性插值——只需在两个点之间画一条直线。 - 如果你只有一个点,你什么也无法插值,因为你不知道在哪里画。 - 对于二次插值,你至少需要三个点等等。 - 类似地,对于4阶b样条,你至少需要5个点。
这里可以找到一个非常好的在线演示

Example screenshot of NURBSdemo.swf

  • 在左下角选择任何一个b样条演示,我会选择线性的。
  • 现在,在右侧,您可以设置控制点数目以及曲线的度数
  • 随意尝试操作,也可以通过鼠标移动点来进行尝试。

如果控制点、节点向量和B样条的次数已经给定并且符合要求,那么B样条就被定义了。如果我希望进行B样条曲线拟合,我应该怎么做?谢谢。 - Jogging Song
@JoggingSong,我不太确定你在问什么。 - Mario
我不知道如何使用B样条进行最小二乘曲线拟合。有人给了我这个链接:http://www.geometrictools.com/Documentation/BSplineCurveLeastSquaresFit.pdf。我正在阅读这份文档。曲线拟合是否尝试优化控制点? - Jogging Song
1
在LS拟合中,通常B样条的次数和段数是预先定义好的。从次数和段数以及数据点的参数中得出适当的节点向量,然后找到控制点以最小化最小二乘误差。 - fang
@Ponkadoodle 完成 - Mario
显示剩余4条评论

3

两个控制点不能定义四阶B样条。对于B样条,结点的数量需要等于控制点数和次数之和。一个三次B样条单段将需要4个控制点和8个节点值。因此,要计算阶为N的B样条,你至少需要N个点。这将给你一个单段的B样条。如果你有更多的点,那么结果的B样条将有更多的段。


目前我正在尝试进行B样条曲线拟合。 我将根据输入点的数量确定段数,公式为段数等于(输入点数)/ 10 +1)。我始终使用4阶B样条。如果输入点的数量很少,会导致问题。如何使用B样条进行曲线拟合? - Jogging Song
看起来你想用B样条进行最小二乘拟合。如果是这种情况,你可以参考这篇文章(http://www.geometrictools.com/Documentation/BSplineCurveLeastSquaresFit.pdf)。 - fang
我正在阅读这份文档。在文档中,输入数据被称为样本数据,优化是为了找到控制数据以最小化误差。我有一个问题。也许B样条曲线的基函数是由结点向量确定的。然后结点向量是均匀的。 - Jogging Song
你有什么问题? - fang
我的问题是哪个参数被优化用于最小二乘B样条拟合。从几何工具的文档中可以看出,需要确定控制点Qi。如果是这样,基函数就已知,并且基函数是从结点向量计算出来的,那么我可以说结点向量与控制点无关且是均匀的吗? - Jogging Song
是的,控制点需要通过LS拟合来确定。如果您有足够数量的数据点,可以使用均匀结节向量。但是,使用适应数据点分布的结节向量通常会得到更好的结果。 - fang

2
如其他人所述,控制点的数量等于节点数减去bspline基础的阶数。因此,一旦您固定了控制点,您就不能拥有任意组合的阶数(比如k)和节点向量来创建您的bspline函数/曲线。
关于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/ 所有我提供的参考资料都在一定程度上涵盖了曲线拟合问题。祝你好运。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接