Unsigned-Long / iKalibr

iKalibr: Unified Targetless Spatiotemporal Calibration for Resilient Integrated Inertial Systems
https://github.com/Unsigned-Long/iKalibr.git
Other
164 stars 24 forks source link

Question about b-splines in the paper #13

Closed QiuYue-bit closed 5 days ago

QiuYue-bit commented 5 days ago

您好,我最近刚开始接触B样条,在阅读您的论文的时候,有提到: "Specifically, given a series of linear scale control points(also known as knots)" 随后,在Basalt-Calib相关的论文《Efficient Derivative Computation for Cumulative B-Splines on Lie Groups》中也有提到这件事情 ”control points(also known as knots)“,然而在我查阅B样条相关的书籍时,发现knots和controls point好像是两个不同的概念? knots的数量可以由controls point的数量和B样条的阶数决定,knots决定了 每个子基函数的有效区域,而control points是对应的系数。

这让我觉得有一些迷惑,为什么knots这个可以被当做control points来使用,因此想请教一下您,谢谢!

Unsigned-Long commented 5 days ago

我的理解是有点类似于函数里面的自变量和因变量。比如给定一条以时间为自变量的位置B样条,控制点(control points)就是决定曲线走向的那些点(决定曲线函数值的点)。而节点(knot)就是和你所说的那样,是决定子基函数的有效区域的“标记”,是关于时间这个自变量的量。结点值可以简单理解为控制曲线各段的参数化范围。在参数空间内,当时间t从一个结点值变到下一个时,控制点影响的组合方式会发生变化,定义曲线的局部形状。比如下面这个例子,是一条4阶的均匀B样条,每一个时间点的函数值受四个控制点的控制影响,当时间t在t=1这个节点之前时,函数值由最开始的4个控制点决定,当时间t在t=1这个节点之后时,函数值由最后的4个控制点决定(控制点索引往后移一位)。 image 在图中:

QiuYue-bit commented 5 days ago

我的理解和您的相似,控制点类似于基函数的一个权重,B样条根据输入的参数位于哪个节点区间内,计算出这个区间内的基函数,并根据该段的控制点对基函数进行加权,得到样条的值。 可是如果按这样的理解来说,control points才是我们需要估计的量,而knots应该是可以预先设定好的? 这个和论文中提到的control points(also known as knots)就区别很大了,这点我不太理解

Unsigned-Long commented 5 days ago

是的,control points是我们需要估计的量,对于均匀B样条而言,knots是可以被计算出来的,根据输入的时间戳和均匀B样条的时间间隔可以确定计算函数值时相关联的几个控制点。论文里可能写得不太准确,到时候有时间可以改改。

QiuYue-bit commented 5 days ago

理解您的意思了,感谢您的耐心解答🙏 :)