Python 仅对图像中的某些值应用窗口函数

Python 仅对图像中的某些值应用窗口函数,python,numpy,scipy,Python,Numpy,Scipy,我有一个灰度图像(二维numpy数组),缺少一些像素,我想填充它们。缺少的像素表示为0。 我想填充它们的值只是非零邻域(或包括第二步邻域…)的平均值 让我们假设,我的图像是: [[120 120 0 0 140] [ 0 0 160 160 0 ] [ 0 140 160 140 0 ]] 我希望得到以下结果: [[120 120 147 153 140] [127 140 160 160 147] [140 140 160 140 150]] 我已经找到了在数组

我有一个灰度图像(二维numpy数组),缺少一些像素,我想填充它们。缺少的像素表示为0。 我想填充它们的值只是非零邻域(或包括第二步邻域…)的平均值

让我们假设,我的图像是:

[[120 120  0   0  140]
 [ 0   0  160 160  0 ]
 [ 0  140 160 140  0 ]]
我希望得到以下结果:

[[120 120 147 153 140]
 [127 140 160 160 147]
 [140 140 160 140 150]]
我已经找到了在数组中为windows应用函数的方法(如scipy.ndimage.generic_filter),但我不认为它只适用于某些值(在我的例子中是0),而是始终将函数应用于矩阵/图像的所有值。由于图像可能会达到8k x 8k像素,因此应该考虑性能(否则我可能只使用for循环…)