是否存在使用两个图像(二维数组)作为输入的图像的一维插值(沿一个轴)?

Is there A 1D interpolation (along one axis) of an image using two images (2D arrays) as inputs?

我有两张代表 x 和 y 值的图像。图像中充满了 'holes'(两个图像中的 'holes' 相同)。

我想沿其中一个轴进行插值(线性插值很好,但更高级别的插值更好)以便 'fill' 孔。

假设选择的轴为0,即我要对每一列进行插值。我在 numpy 中发现的只是 x 相同时的插值(例如 numpy.interpolate.interp1d)。然而,在这种情况下,每个 x 都是不同的(即每行中的孔或空单元格不同)。

有什么numpy/scipy技巧可以使用吗?一维卷积可以工作吗?(尽管内核是固定的)

您仍然可以使用 interp1d:

import numpy as np
from scipy import interpolate
A = np.array([[1,np.NaN,np.NaN,2],[0,np.NaN,1,2]])
#array([[  1.,  nan,  nan,   2.],
#       [  0.,  nan,   1.,   2.]])

for row in A:
    mask = np.isnan(row)
    x, y = np.where(~mask)[0], row[~mask]
    f = interpolate.interp1d(x, y, kind='linear',)
    row[mask] = f(np.where(mask)[0])
#array([[ 1.        ,  1.33333333,  1.66666667,  2.        ],
#       [ 0.        ,  0.5       ,  1.        ,  2.        ]])