所以我有一些不规则间隔的数据,我想将它们插值到规则网格上。 (我想做的正是this https://stackoverflow.com/questions/3864899/resampling-irregularly-spaced-data-to-a-regular-grid-in-python/3867302#3867302但在 Java 中)这是一张图片:
基本上我有每个点的 x 和 y 坐标以及与每个点关联的 z 值,我想在它们之间进行插值并填充图像的中心。
使用 Java 执行此操作的最佳方法是什么?是否有我可以使用的内置 2D 插值库,或者我应该尝试“自己动手”的方法?
这个帖子 https://stackoverflow.com/questions/14341369/java-2d-weighted-data-interpolation and this one https://stackoverflow.com/questions/23671015/bilinear-interpolation-of-an-array-c-sharp?rq=1似乎也正在尝试做关于我的事情,但他们的答案不太适用。
其他人 https://stackoverflow.com/questions/10883357/interpolating-irregularly-located-data-to?rq=1有同样的问题但没有解决方案。
注意:我正在使用 JavaFX-2,所以如果我能以某种方式使用他们的Interpolator
类那就太好了。
.
.
EDIT:如果有人偶然发现了这个并想知道我最终使用了什么,那就是 BGU 的 Delaunay Triangulation 实现:
主站 http://www.cs.bgu.ac.il/%7Ebenmoshe/DT/Delaunay%20Triangulation%20in%20Java.htm
Code API http://www.cs.bgu.ac.il/%7Ebenmoshe/DT/doc/index.html
如果线性插值就足够了,我建议您使用带有 Gouraud Shading 的 3d 网格进行绘制:
- 将二维点云转换为网格(您可以谷歌搜索现有算法)
- 将每个点的 z 值映射到顶点的颜色
- 使用 Gouraud Shading 启用顶点颜色之间的线性插值
- 在网格顶部创建相机并使用正交投影(以避免透视)
你说你可以使用JavaFX。 JavaFX 支持 3d 场景,您可以构建自己的网格。但是查看TriangleMesh的JavaDoc,我找不到任何设置顶点颜色的方法,我只找到了设置(x,y,z)和(u,v)(纹理坐标)坐标的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)