medfilt2d#
- scipy.signal.medfilt2d(input, kernel_size=3)[source]#
Median filter a 2-dimensional array.
Apply a median filter to the input array using a local window-size given by kernel_size (must be odd). The array is zero-padded automatically.
- Parameters:
- inputarray_like
A 2-dimensional input array.
- kernel_sizearray_like, optional
A scalar or a list of length 2, giving the size of the median filter window in each dimension. Elements of kernel_size should be odd. If kernel_size is a scalar, then this scalar is used as the size in each dimension. Default is a kernel of size (3, 3).
- Returns:
- outndarray
An array the same size as input containing the median filtered result.
See also
Notes
This is faster than
medfilt
when the input dtype isuint8
,float32
, orfloat64
; for other types, this falls back tomedfilt
. In some situations,scipy.ndimage.median_filter
may be faster than this function.Examples
>>> import numpy as np >>> from scipy import signal >>> x = np.arange(25).reshape(5, 5) >>> x array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24]])
# Replaces i,j with the median out of 5*5 window
>>> signal.medfilt2d(x, kernel_size=5) array([[ 0, 0, 2, 0, 0], [ 0, 3, 7, 4, 0], [ 2, 8, 12, 9, 4], [ 0, 8, 12, 9, 0], [ 0, 0, 12, 0, 0]])
# Replaces i,j with the median out of default 3*3 window
>>> signal.medfilt2d(x) array([[ 0, 1, 2, 3, 0], [ 1, 6, 7, 8, 4], [ 6, 11, 12, 13, 9], [11, 16, 17, 18, 14], [ 0, 16, 17, 18, 0]])
# Replaces i,j with the median out of default 5*3 window
>>> signal.medfilt2d(x, kernel_size=[5,3]) array([[ 0, 1, 2, 3, 0], [ 0, 6, 7, 8, 3], [ 5, 11, 12, 13, 8], [ 5, 11, 12, 13, 8], [ 0, 11, 12, 13, 0]])
# Replaces i,j with the median out of default 3*5 window
>>> signal.medfilt2d(x, kernel_size=[3,5]) array([[ 0, 0, 2, 1, 0], [ 1, 5, 7, 6, 3], [ 6, 10, 12, 11, 8], [11, 15, 17, 16, 13], [ 0, 15, 17, 16, 0]])
# As seen in the examples, # kernel numbers must be odd and not exceed original array dim