scipy.signal.

medfilt2d#

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

Medianfilter für ein 2-dimensionales Array.

Wendet einen Medianfilter auf das input-Array an, wobei eine lokale Fenstergröße verwendet wird, die durch kernel_size (muss ungerade sein) gegeben ist. Das Array wird automatisch mit Nullen aufgefüllt.

Parameter:
inputarray_like

Ein 2-dimensionales Eingabearray.

kernel_sizearray_like, optional

Ein Skalar oder eine Liste mit 2 Elementen, die die Größe des Medianfilterfensters in jeder Dimension angibt. Elemente von kernel_size sollten ungerade sein. Wenn kernel_size ein Skalar ist, wird dieser Skalar als Größe in jeder Dimension verwendet. Standardmäßig ist der Kernel der Größe (3, 3).

Rückgabe:
outndarray

Ein Array gleicher Größe wie das Eingabearray, das das mediangefilterte Ergebnis enthält.

Hinweise

Dies ist schneller als medfilt, wenn der Eingabedatentyp uint8, float32 oder float64 ist; für andere Typen greift dies auf medfilt zurück. In einigen Situationen kann scipy.ndimage.median_filter schneller sein als diese Funktion.

Beispiele

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

# Ersetzt i,j durch den Median aus einem 5*5 Fenster

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

# Ersetzt i,j durch den Median aus dem standardmäßigen 3*3 Fenster

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

# Ersetzt i,j durch den Median aus dem standardmäßigen 5*3 Fenster

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

# Ersetzt i,j durch den Median aus dem standardmäßigen 3*5 Fenster

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

# Wie in den Beispielen zu sehen ist, müssen die Kernel-Zahlen ungerade sein und dürfen die ursprüngliche Array-Dimension nicht überschreiten