散点2D数据的线性插值

4

我有一些不规则间隔的数据,我想将其插值到一个规则网格上。(我想做的事情与this相同,但是用Java实现) 这是一张图片:

Scattered Data for Interpolation

基本上,我有每个点的x和y坐标以及与每个点关联的z值,我想在它们之间进行插值并填充我的图像中心。
使用Java应该如何最好地实现?有没有内置的2D插值库可用,或者我应该尝试使用“自己编写”的方法? 这篇帖子这篇似乎也在尝试做我要做的事情,但他们的答案并不完全适用。 其他人也有同样的问题,但没有解决方案。
注意:我正在使用JavaFX-2,因此如果我能以某种方式使用它们的 Interpolator 类,那就太好了。

.
.
编辑: 如果有人偶然发现这篇文章并想知道我最终使用的是什么,那就是BGU的Delaunay Triangulation实现:
主站点
代码API


我理解你的问题是:你有一组点(x,y,z),想要创建一个区域,该区域的填充颜色取决于z值,并且应在这些点之间进行插值? - Vertex
@Vertex 嗯,听起来没错。 - River
1个回答

2
如果线性插值足够,我建议您使用Gouraud Shading的3D网格进行绘制:
  1. 将2D点云转换为网格(您可以搜索现有算法)
  2. 将每个点的z值映射到顶点颜色
  3. 使用Gouraud Shading启用顶点颜色之间的线性插值
  4. 在网格上方创建一个摄像机并使用othonormal投影(以避免透视)
您说可以使用JavaFX。JavaFX支持3D场景,您可以构建自己的网格。但是查看TriangleMesh的JavaDoc时,我找不到任何设置顶点颜色的方法,我只发现了设置(x,y,z)和(u,v)(纹理坐标)坐标的方法。

看起来这只有在JavaFX 8中才可用。我只有JavaFX 2 =/ - River
1
还有其他的Java 3D框架,比如jMonkeyEngine。请参考自定义网格形状来设置顶点颜色。 - Vertex
我真的希望能够找到一种使用标准Java库来轻松完成这个任务的方法。 - River

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