4 个版本
0.1.3 | 2019年9月7日 |
---|---|
0.1.2 | 2019年9月4日 |
0.1.1 | 2019年6月6日 |
0.1.0 | 2019年6月6日 |
在 科学 中排名 411
160KB
105 代码行
rbf-interp
此包包含径向基函数多维插值的实现。有关该主题的优秀介绍,请参阅SIGGRAPH 2014 课程笔记。
输入是一组数据点,每个数据点在某个多维空间中有坐标和一个值,这些值也作为向量提供。例如,对于下面的彩色场图像,坐标是二维的,值是一个3向量,分别代表红色、绿色和蓝色。结果是可以在任何坐标处评估的 Scatter
结构。其思想是值随坐标平滑变化,但在每个提供的数据点上都与输入值相同。
多维插值有多种方法,但本包的重点是径向基函数家族。这些包括多项式样条(薄板样条是其中之一)、高斯径向基函数以及其他(多二次型和逆多二次型)。高斯和多二次型变体还具有可调整的大小参数。
此外,还有一个“阶数”参数,用于控制低阶多项式项。阶数为0表示没有额外项,只有基函数。阶数为1表示常数项,阶数为2表示线性项。使用这些额外项,可以得到输入的“最佳拟合”常数或线性近似,并且基函数是分层的。(对于更精确的描述,请参阅 SIGGRAPH 笔记的3.1节)。请注意,二次和更高阶的多项式也是有意义的,但目前尚未实现。
以下图形使用高斯基函数制作,故意使用过小的大小参数(0.05),以更清楚地显示多项式项的影响
使用合理的值(1.0),结果非常准确
以下是与其他两种基函数(薄板和三谐波)的比较
请注意,插值效果很好,但外推(这些图中的1.8到2.0区域)较弱。
彩色场结果
本库的主要动机是为可变字体计算更平滑的插值。这个领域的早期工作是MutatorMath,它使用双线性插值来完成这项任务。项目页面有一个“色彩场”来展示他们的插值技术,该技术在二维坐标系中的每个点放置一个(r, g, b)颜色。请注意,对于字体通常输出是一个二维坐标,输入是任意数量的变化轴(可能是重量和宽度最为常见),但色彩场是可视化插值方案行为的一个好方法。
以下是从MutatorMath(缩小后)的图片和半径为4.5的Gaussian bump和薄板样条的结果。
半径调整参数对结果有相当大的影响。这在多维插值的多项应用领域是一个缺点,但也许对于可变字体来说是一个好事,因为它可以在平滑度(可能伴有超调)和局部控制之间提供选择。鼓励好奇的人尝试在examples目录中的mutator
示例。
要从Unix shell运行示例
cargo run --example mutator > image.ppm
其他资源
以下文章很有趣
-
径向基函数插值(Wilma du Toit 硕士论文)
感谢Jacob Rus的讨论和资源,以及LGM 2019提供了激发这些想法的环境。
依赖关系
~4MB
~73K SLoC