在二维网格上使用 numpy/scipy 进行插值
Interpolation with numpy/scipy on 2-D grid
我在 2-D 图像网格上有两个数据点,这两个点的一些感兴趣量的值是已知的。
例如:
让我们考虑一下x=(2,2)
。然后考虑一个 4 网格邻域,我们有点 x_1=(1,2), x_2=(2,3), x_3=(3,2), x_4=(2,1)
作为 x
的邻居。假设在这些点上感兴趣的某个数量的值为 y=5, y_1=7, y_2=8, y_3= 10, y_4 = 3
。
通过插值,我想在子像素值处找到 y
,比如 (2.7, 2.3)
。
上面的问题可以用numpy数组表示如下。
x = [(2,2), (1,2), (2,3), (3,2), (2,1)]
y = [5,7,8,10,3]
如何使用numpy/scipy插值来做到这一点?我找不到处理它的具体示例。
这里的方法griddata
就足够了。默认情况下,它执行分段线性插值,这在您的示例中似乎是最合适的方法。
from scipy.interpolate import griddata
x = [(2,2), (1,2), (2,3), (3,2), (2,1)]
y = [5,7,8,10,3]
evaluate_at = [(2.7, 2.3)] # could be an array of points
result = griddata(x, y, evaluate_at)
Returns array([ 9.4])
.
我在 2-D 图像网格上有两个数据点,这两个点的一些感兴趣量的值是已知的。
例如:
让我们考虑一下x=(2,2)
。然后考虑一个 4 网格邻域,我们有点 x_1=(1,2), x_2=(2,3), x_3=(3,2), x_4=(2,1)
作为 x
的邻居。假设在这些点上感兴趣的某个数量的值为 y=5, y_1=7, y_2=8, y_3= 10, y_4 = 3
。
通过插值,我想在子像素值处找到 y
,比如 (2.7, 2.3)
。
上面的问题可以用numpy数组表示如下。
x = [(2,2), (1,2), (2,3), (3,2), (2,1)]
y = [5,7,8,10,3]
如何使用numpy/scipy插值来做到这一点?我找不到处理它的具体示例。
这里的方法griddata
就足够了。默认情况下,它执行分段线性插值,这在您的示例中似乎是最合适的方法。
from scipy.interpolate import griddata
x = [(2,2), (1,2), (2,3), (3,2), (2,1)]
y = [5,7,8,10,3]
evaluate_at = [(2.7, 2.3)] # could be an array of points
result = griddata(x, y, evaluate_at)
Returns array([ 9.4])
.