在我开始之前,请接受我的道歉,我不是数学家,并且我不知道我正在尝试做什么的正确名称...;)指向可能有帮助的任何简单英语解释赞赏(因为我现在基于我认为的解决方案可能只是谷歌搜索).
如果有一个多维的源值数组,并希望将该数组放大n倍,我认为我需要使用的是双立方插值当然,该页面右上方的图像代表了我的意思旨在 - 根据周围邻居的价值在基础源数据点之间创建渐进的价值流.我完全接受通过不增加数据量而不是增加数据的分辨率; 只是模糊边缘.
类似于从这一点出发的东西;

对此(及以后);

跟随维基百科文章中的链接给了我一个(假设的)实现我正在努力的实例,但如果确实如此,我担心我现在错过了让自己在那里的逻辑飞跃.当我在BicubicInterpolator上调用getValue(source,0.5,0.5)时,我又回来了什么?我认为如果我给出(0.0,0.0)的x/y,我会回到网格的左下角值,如果我看(1,1),我会得到右上角,并且之间的任何值都会给我在插值网格中的指定位置.
double[][] source = new double[][] {{1, 1, 1, 2}, {1, 2, 2, 3}, {1, 2, 2, 3}, {1, 1, 3, 3}};
BicubicInterpolator bi = new BicubicInterpolator();
for (double idx = 0; idx <= 1; idx += 0.1) {
LOG.info("Result (" + String.format("%3.1f", idx) + ", " + String.format("%3.1f", idx) + ") : " + …Run Code Online (Sandbox Code Playgroud)