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

标签 python arrays numpy interpolation convolution

<分区>

我有两个代表 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.        ]])

关于python - 是否存在使用两个图像(二维数组)作为输入的图像的一维插值(沿一个轴)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30827735/

相关文章:

python - discord.py 命令组中的子命令是否继承了父命令的装饰器?

python - 使用 SQLAlchemy/Alembic 时如何检查是否有挂起的迁移?

arrays - golang 中是否有任何函数可以发现值是否在数组中?

python - 寻找方程的自洽解

python - numpy时间序列合并并用较早的值填充缺失值

python - 比较数组补丁的最快方法是什么?

python - 由就地操作修改的变量之一

python - 带 matplotlib 的双图 : Attribute error

java - 多项式加 : Unable to run code

javascript - 根据键和值对对象数组进行排序