scipy.signal.

medfilt2d#

scipy.signal.medfilt2d(входные данные, размер ядра=3)[источник]#

Медианная фильтрация двумерного массива.

Применить медианный фильтр к входные данные массив с использованием локального размера окна заданного размер ядра (должно быть нечётным). Массив автоматически дополняется нулями.

Параметры:
входные данныеarray_like

Входной массив размерности 2.

размер ядраarray_like, необязательный

Скаляр или список длины 2, задающий размер окна медианного фильтра в каждом измерении. Элементы размер ядра должно быть нечётным. Если размер ядра является скаляром, тогда этот скаляр используется как размер в каждом измерении. По умолчанию ядро размера (3, 3).

Возвращает:
выходndarray

Массив того же размера, что и входные данные, содержащий результат медианной фильтрации.

Смотрите также

scipy.ndimage.median_filter

Примечания

Это быстрее, чем medfilt когда входной dtype равен uint8, float32, или float64; для других типов это переходит к medfilt. В некоторых ситуациях scipy.ndimage.median_filter может быть быстрее, чем эта функция.

Примеры

>>> 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]])

# Заменяет i,j медианой из окна 5*5

>>> 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]])

# Заменяет i,j медианой из окна по умолчанию 3*3

>>> 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]])

# Заменяет i,j медианой из окна 5*3 по умолчанию

>>> 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]])

# Заменяет i,j медианой из окна по умолчанию 3*5

>>> 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]])

# Как видно из примеров, # номера ядер должны быть нечетными и не превышать размер исходного массива