@stefan-van-der-walt所提到的方法是使用
scipy.ndimage.generic_filter
和
numpy.nanmean
结合起来(目前还未进行速度优化)。
import numpy as np
from scipy.ndimage import generic_filter
def nanmean_filter(input_array, *args, **kwargs):
"""
Arguments:
----------
input_array : ndarray
Input array to filter.
size : scalar or tuple, optional
See footprint, below
footprint : array, optional
Either `size` or `footprint` must be defined. `size` gives
the shape that is taken from the input array, at every element
position, to define the input to the filter function.
`footprint` is a boolean array that specifies (implicitly) a
shape, but also which of the elements within this shape will get
passed to the filter function. Thus ``size=(n,m)`` is equivalent
to ``footprint=np.ones((n,m))``. We adjust `size` to the number
of dimensions of the input array, so that, if the input array is
shape (10,10,10), and `size` is 2, then the actual size used is
(2,2,2).
output : array, optional
The `output` parameter passes an array in which to store the
filter output. Output array should have different name as compared
to input array to avoid aliasing errors.
mode : {'reflect', 'constant', 'nearest', 'mirror', 'wrap'}, optional
The `mode` parameter determines how the array borders are
handled, where `cval` is the value when mode is equal to
'constant'. Default is 'reflect'
cval : scalar, optional
Value to fill past edges of input if `mode` is 'constant'. Default
is 0.0
origin : scalar, optional
The `origin` parameter controls the placement of the filter.
Default 0.0.
See also:
---------
scipy.ndimage.generic_filter
"""
return generic_filter(input_array, function=np.nanmean, *args, **kwargs)
-1,1
的要求根本不是问题。只需将图像缩放到此格式即可。均值计算是浮点数学的概念,而且在某些时候你肯定需要转换(如果你担心信息丢失)。你特别要求这个简单操作,但是inpaint_biharmonic
有什么问题吗? - sascha