我有两个代表x和y值的图像。图像中充满了“洞”(两个图像中的“洞”相同)。
我希望沿轴的一个进行插值(线性插值很好,尽管更高级插值是可取的),以便“填充”这些孔。
假设选择的轴是0,也就是说,我想在每列上插值。我所发现的numpy是x是相同的插值(例如numpy.interpolate.interp1d)。然而,在这种情况下,每个x是不同的(即,每行中的孔或空单元是不同的)。
我可以使用任何numpy / scipy技术吗?一维卷积可以工作吗?(虽然内核是固定的)
答案 0 :(得分:1)
您仍然可以使用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. ]])