问题标签 [bspline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
217 浏览

python - 平滑插值样条具有奇怪的末端

我正在构建一个软性来拒绝一些转得太快的轨迹。

我设法用 scipy splrep 和 splev 使它们平滑,但我在开始和结束时有些奇怪,有些点根本不遵循原始轨迹。

知道它来自哪里或如何纠正它吗?我可以用 splrep 的“权重”参数更正它吗?我通过分析没有原始10个第一个和最后一个点的轨迹来避免这个问题,但这有点烦人......

这是我的代码:

结果:弹道

其他一些结果具有更相关的平滑轨迹,但在结束和开始时仍然有相同的差距:Trajectory2

0 投票
1 回答
517 浏览

r - 在 R 中积分二次 b 样条

我正在使用一个函数,该函数依赖于由cobs同一R包中的函数预先估计的二次 B 样条插值。估计的结和相应的系数在代码中给出。更进一步,我需要这个函数从 0 到某个值的积分,例如 0.6 或 0.7。由于我的函数是严格正数,如果积分上限增加,积分值应该增加。但是,对于某些值,情况并非如此,如使用 0.6 和 0.7 时所示

我知道我可以直接在cobs:::.splValue函数上集成,并相应地转换结果。但是,我很想知道为什么会发生这种奇怪的行为。

0 投票
2 回答
996 浏览

delphi - B 样条曲线系数 - 除以零(DELPHI 中的代码)

我试图在我的代码中实现以下递归公式 在此处输入图像描述

但令我惊讶的是,在对 DELPHI 实施此操作后,由于除以零而出现错误。我 98% 确信我的节点向量计算正确,这在某种程度上意味着不应该有任何除以零。我有 70% 的把握正确实现了递归公式,因此我在这里发布我的代码:

基本上我不知道如何继续。我需要基系数矩阵 N 的值(请参阅此链接),但不知何故使用此链接中的公式导致我除以零。

那么......是否有一种完全不同的方法来计算这些系数或者这里有什么问题?

更新

我没有使用我自己的想法,而是尝试按照Dsm在评论中的建议从这里实现算法。结果,不再被零除,但无论如何结果是完全出乎意料的。

对于 n + 1 = 10 个样条度数为 3 的随机拟合点,基矩阵 N(请参见链接)是奇异的 - 如所附图像所示。

在此处输入图像描述

相反,我希望矩阵是带矩阵。无论如何,这是我更新的代码:

0 投票
1 回答
555 浏览

python - 为什么我不能在 python 中通过 B 样条平滑这条曲线?

我检查了几种不同的方法,但为什么我的曲线不能像其他人那样平滑?这是我的代码和图像。

0 投票
1 回答
544 浏览

python - Generating Spline Curves with Wand and Python

I'm attempting to draw the raster representation of spline curves extracted from DXF files. I've extracted the data from the DXF files using the ezdxf library and I'm using the Python Wand library (ImageMagick) to draw the images. Wand has a spline function but what it draws doesn't always match the curves from the DXF files. This is no surprise since the Wand spline function doesn't have inputs for the knots or the degree of the DXF spline curve. The following images show what the DXF shapes look like. The Wand spline function works well with one example but not another.

The first is a spline oval Oval Example.

Oval Example

The second is a spine rectangle Rectangle Example.

Rectangle Example

The data points and knots from the DXF files for these shapes have been extracted and used in the following sample code which creates sample bitmaps. Even though the knots and degree aren't taken into account the oval renders well test_image_oval.bmp.

test_image_oval.bmp

The rectangle is misshaped at all sides and corners test_image_rect.bmp.

test_image_rect.bmp

The control points are plotted in red The knots are included but not used.

Does anyone have insight on how to use the Wand library to generate a spline curve and take into account the knots and degree along with the data points?

I've also tried using the SciPy library spline function (interpolate.splprep) with limited success. That's an alternative possibility for a solution. Following that path would mean using the SciPy library to interpolate a large set of points and the use the polyline function in Wand to approximate the curve. If anyone is interested I could include that sample code as well but I don't want to muddle the thread too much.

Any insights on Spline and Wand would be greatly appreciated.

Thanks .

0 投票
1 回答
1342 浏览

python - 在周期性边界条件的情况下,如何在 scipy.interpolate.splprep 中设置手动结?

或者

为什么splprep不使用自己的结?

我想弄清楚如何在scipy.interpolate.splprep. 在非周期性情况下,我成功了,即我可以重现这个 SE 示例

但是,在周期性边界条件(PBC)的情况下,我遇到了问题。如本例所示,这 scipy.interpolate.splprep甚至不适用于自己的结:

给出:

此外,如果您绘制第一个和最后一个结,例如:

你得到

这意味着实际数据范围之外有六个点,三个之前和三个之后。这可能没问题,因为我们有 PBC,并且结与周期模数数据范围内的结相同,但无论如何都很奇怪。(顺便说一句,设置时该示例甚至不起作用per=0。)此外,如果我手动设置点,则设置数据范围之外的点会失败。per=1如果点在数据范围内,即使使用 ,它也可以工作。比如:

提供:

结测试

我们还可以看到最后一点在 PBC 中被忽略了。

那么scipy.interpolate.splprep这里实际上在做什么,为什么它不接受手动设置结的类似结结构 if per=1。它是一个错误吗?

我希望最后一个问题的答案是“不”,否则我在这里问这个问题是错误的。

0 投票
1 回答
763 浏览

python - 如果 NURBS 曲线的控制点已知,如何找到节点向量?

我有一组控制点

我有生成开放结向量的逻辑:

另一个用于生成周期性节点向量:

然而,我需要在 [0,1] 范围内生成一个非均匀的节点向量

上述算法产生统一的节点向量。

请建议是否有任何方法可以做到这一点。如果代码在python中会更好

0 投票
2 回答
3164 浏览

python - Python 中的交互式 BSpline 拟合

使用以下函数,可以在输入点 P 上拟合三次样条:

输入点 P 可以是以下形式:

现在,我希望使 P 的这些点可拖动,这样当我们改变任何点的位置时,样条线就会重新安装在新点上。

以此作为参考:https : //matplotlib.org/1.4.3/examples/event_handling/poly_editor.html(matplotlib 中的事件处理),我有以下代码:

现在,我想做的是用我的样条拟合函数替换多边形拟合。因为我是新手,所以我不知道该怎么做。有没有办法保持所有相同的功能,但只能通过给定点拟合样条而不是多边形,使其交互并根据点移动重新拟合样条?

我的样条曲线看起来有点像这样:

在此处输入图像描述

我该怎么做呢?

或者,如果有任何其他合适的方法可以达到同样的效果,请推荐。

也欢迎使用 MATLAB 提出建议。

0 投票
1 回答
675 浏览

python - 如何在 matplotlib 中控制鼠标可拖动点的点移动方向

使用以下作为参考:交互式 BSpline Fitting我有以下工具可以使用鼠标在任何方向拖动样条线的点:

如果样条曲线如下: 在此处输入图像描述

我想添加额外的约束:

1) 点 C 和 G 的移动应仅限于 Y 轴或垂直方向,即用户只能向上或向下拖动点,不能向左或向右拖动

2) A 点和 E 点的移动应仅限于 X 轴或水平方向,即用户只能左右拖动点,不能上下拖动

有人可以建议如何将这些约束添加到给定点吗?

编辑 -

当我将点 A 向左/向右拖动一定量“d0”时,点 E 需要分别向右/向左拖动“d0”。我试图通过在拖动点时重复将更改后的 y 坐标设置回其原始值来限制这两个点沿水平方向的移动。但是它没有反映在代码中。

相对于具有坐标 (993,1181) 的参考中心点计算移动量“d0”

我尝试通过编辑 motion_notify_callback() 函数来执行以下操作:

0 投票
1 回答
97 浏览

polynomials - 图像配准中的 B 样条变换与多项式变换

基于 BSpline 变换的图像配准和基于多项式变换的图像配准有什么区别?