【问题标题】:number of control points for B spline curveB样条曲线的控制点数
【发布时间】:2014-12-16 08:40:11
【问题描述】:

我正在尝试使用 B 样条曲线拟合。 B样条曲线的阶数为4。当我有很多控制点时,它工作得很好。但是,如果控制点的数量很少,比如两个,我的程序就会崩溃。我意识到控制点的数量与结的数量和顺序有关。谁能帮我澄清一下关系或提供一些链接?

【问题讨论】:

    标签: curve-fitting spline


    【解决方案1】:

    听起来您只是在阅读越界,这不是计算样条曲线的具体问题。要计算度数为 n 的 b 样条曲线,您至少需要 n + 1 点。

    为了简化和显示问题:

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

    • 如果你只有一个点,你就不能插入任何东西,只是因为你不知道在哪里画。

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

    • 以类似的方式,对于 4 次 b 样条曲线,您至少需要 5 个点。

    一个非常好的online demo can be found here

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

    【讨论】:

    • 谢谢。如果给定b样条的控制点、节点向量和度数且满足要求,则定义b样条。如果希望进行b样条曲线拟合,应该怎么做?
    • @JoggingSong 我不太确定你在问什么。
    • 我不知道如何用 B 样条进行最小二乘曲线拟合。有人给我链接:geometrictools.com/Documentation/…。我正在阅读文件。曲线拟合是否尝试优化控制点?
    • 不,“最小二乘”是指尽可能减少错误数量的尝试。您不会修改控制点,但会尝试使计算出的曲线尽可能靠近控制点(即永远不要“过度转向”一个点)。查看this question and it's accepted answer 了解更多相关信息并查看一些示例图片。
    • 在 LS 拟合中,通常 B 样条的度数和段数是预先定义的。从段的度数和数量以及数据点的参数中导出一个合适的节点向量,然后找到控制点以最小二乘的方式最小化误差。
    【解决方案2】:

    两个控制点不足以定义 4 阶 B 样条。对于 B 样条,节点数需要等于控制点数和阶数之和。单段度 3 B 样条将需要 4 个控制点和 8 个节点值。因此,要计算阶数为 N 的 B 样条,您至少需要 N 个点。这将为您提供具有单段的 B 样条。如果您有更多点,则生成的 B 样条将有更多段。

    【讨论】:

    • 目前我正在尝试执行 b 样条曲线拟合。我将根据输入点数确定段数,公式是段数等于(输入点数)/10 + 1)。我总是使用 4 阶的 B 样条。如果输入点的数量很少,就会出现问题。 B样条如何用于曲线拟合?
    • 看起来您想要使用 B 样条进行最小二乘拟合。如果是这种情况,可以参考这篇文章(geometrictools.com/Documentation/…
    • 我正在阅读文档。在文档中,输入数据称为样本数据,并进行优化以找到控制数据以最小化误差。我有一个问题。 B样条曲线的基函数可能由节点向量确定。那么节点向量是均匀的。
    • 你有什么问题?
    • 我的问题是哪个参数针对最小二乘 B 样条拟合进行了优化。从几何工具的文档中,它说需要确定控制点Qi。如果是这样,基函数是已知的,并且基函数是从节点向量计算的,我可以说节点向量与控制点无关并且是均匀的。
    【解决方案3】:

    正如其他人所说,控制点的数量等于节点数减去 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/

    我给出的所有参考文献都在一定程度上涵盖了曲线拟合问题。祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      相关资源
      最近更新 更多