给定一个图像(数组),如何对特定的像素位置进行插值?下面的代码生成20x30网格,每个像素填充一个值(zg
)。然后代码用scipy的interp2d
方法构造一个插值器。我想要得到特定坐标处的插值。在给出的示例中,在x = [1.5, 2.4, 5.8], y = [0.5, 7.2, 2.2]
处,所以总共有3个位置。2然而,由于某种原因,函数返回了一个3x3数组。3为什么?4我该如何修改代码,以便只计算这三个坐标呢?
import numpy as np
from scipy.interpolate import interp2d
# Rectangular grid
x = np.arange(20)
y = np.arange(30)
xg, yg = np.meshgrid(x, y)
zg = np.exp(-(2*xg)**2 - (yg/2)**2)
# Define interpolator
interp = interp2d(yg, xg, zg)
# Interpolate pixel value
zi = interp([1.5, 2.4, 5.8], [0.5, 7.2, 2.2])
print(zi.shape) # = (3, 3)
1条答案
按热度按时间hwamh0ep1#
你的代码很好。
interp
插值函数计算所有可能的坐标组合,即3 × 3 = 9。例如:实际上,您可以在返回的矩阵中找到这些值:
文档说明返回值是
具有形状(透镜(y),透镜(x))二维阵列
如果只需要所需的坐标,可以执行以下操作: