我有两个代表 x 和 y 值的图像。这些图像充满了“漏洞”(两个图像中的“漏洞”是相同的)。
我想沿其中一个轴进行插值(线性插值很好,但更高级别的插值更好)以“填充”孔。
假设选择的轴为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. ]])