當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy signal.medfilt2d用法及代碼示例


本文簡要介紹 python 語言中 scipy.signal.medfilt2d 的用法。

用法:

scipy.signal.medfilt2d(input, kernel_size=3)#

對二維數組進行中值過濾。

使用 kernel_size 給出的局部 window-size 對輸入數組應用中值濾波器(必須是奇數)。該數組自動用零填充。

參數

input array_like

二維輸入數組。

kernel_size 數組,可選

標量或長度為 2 的列表,給出每個維度中中值濾波器窗口的大小。 kernel_size 的元素應該是奇數。如果kernel_size是標量,則該標量用作每個維度的大小。默認大小為 (3, 3) 的內核。

返回

out ndarray

與包含中值過濾結果的輸入大小相同的數組。

注意

當輸入數據類型為 uint8float32float64 時,這比 medfilt 更快;對於其他類型,這會回退到 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]])

# 如示例所示, # 內核編號必須是奇數且不能超過原始數組 dim

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.medfilt2d。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。