median_filter#
- scipy.ndimage.median_filter(input, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)[Quelle]#
Berechnet einen mehrdimensionalen Medianfilter.
- Parameter:
- inputarray_like
Das Eingabearray.
- sizeSkalar oder Tupel, optional
Siehe footprint unten. Ignoriert, wenn footprint angegeben ist.
- footprintArray, optional
Entweder size oder footprint muss definiert sein. size gibt die Form an, die vom Eingabearray an jeder Elementposition genommen wird, um die Eingabe für die Filterfunktion zu definieren. footprint ist ein boolesches Array, das (implizit) eine Form angibt, aber auch, welche der Elemente innerhalb dieser Form an die Filterfunktion übergeben werden. Somit ist
size=(n,m)äquivalent zufootprint=np.ones((n,m)). Wir passen size an die Anzahl der Dimensionen des Eingabearrays an, so dass, wenn das Eingabearray die Form (10,10,10) hat und size 2 ist, die tatsächliche verwendete Größe (2,2,2) ist. Wenn footprint angegeben ist, wird size ignoriert.- outputarray oder dtype, optional
Das Array, in das die Ausgabe platziert werden soll, oder der Datentyp des zurückgegebenen Arrays. Standardmäßig wird ein Array mit demselben Datentyp wie input erstellt.
- mode{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’}, optional
Der Parameter mode bestimmt, wie das Eingabearray über seine Grenzen hinaus erweitert wird. Standard ist ‘reflect’. Das Verhalten für jeden gültigen Wert ist wie folgt:
- ‘reflect’ (d c b a | a b c d | d c b a)
Die Eingabe wird erweitert, indem über den Rand des letzten Pixels gespiegelt wird. Dieser Modus wird auch manchmal als halb-Sample-symmetrisch bezeichnet.
- ‘constant’ (k k k k | a b c d | k k k k)
Die Eingabe wird erweitert, indem alle Werte außerhalb des Rands mit demselben konstanten Wert gefüllt werden, der durch den Parameter cval definiert ist.
- ‘nearest’ (a a a a | a b c d | d d d d)
Die Eingabe wird erweitert, indem das letzte Pixel wiederholt wird.
- ‘mirror’ (d c b | a b c d | c b a)
Die Eingabe wird erweitert, indem über die Mitte des letzten Pixels gespiegelt wird. Dieser Modus wird auch manchmal als ganz-Sample-symmetrisch bezeichnet.
- ‘wrap’ (a b c d | a b c d | a b c d)
Die Eingabe wird erweitert, indem zum gegenüberliegenden Rand umgebrochen wird.
Zur Konsistenz mit den Interpolationsfunktionen können auch die folgenden Modusnamen verwendet werden:
- ‘grid-mirror’
Dies ist ein Synonym für ‘reflect’.
- ‘grid-constant’
Dies ist ein Synonym für ‘constant’.
- ‘grid-wrap’
Dies ist ein Synonym für ‘wrap’.
- cvalskalar, optional
Wert, mit dem die Ränder der Eingabe gefüllt werden, wenn mode ‘constant’ ist. Standard ist 0.0.
- originint oder Sequenz, optional
Steuert die Platzierung des Filters auf den Pixeln des Eingangsarrays. Ein Wert von 0 (Standard) zentriert den Filter über dem Pixel, wobei positive Werte den Filter nach links und negative Werte nach rechts verschieben. Durch Übergabe einer Sequenz von Ursprüngen mit der Länge, die der Anzahl der Dimensionen des Eingangsarrays entspricht, können entlang jeder Achse unterschiedliche Verschiebungen angegeben werden.
- axesTupel von int oder None, optional
Wenn None, wird das input entlang aller Achsen gefiltert. Andernfalls wird das input entlang der angegebenen Achsen gefiltert. Wenn axes angegeben ist, müssen alle Tupel, die für size, origin und/oder mode verwendet werden, mit der Länge von axes übereinstimmen. Der i-te Eintrag in einem dieser Tupel entspricht dem i-ten Eintrag in axes.
- Rückgabe:
- median_filterndarray
Gefiltertes Array. Hat die gleiche Form wie input.
Siehe auch
Hinweise
Für 2-dimensionale Bilder mit
uint8,float32oderfloat64Dtypes kann die spezialisierte Funktionscipy.signal.medfilt2dschneller sein. Sie ist jedoch auf konstanten Modus mitcval=0beschränkt.Der Filter gibt immer das Argument zurück, das im sortierten Array an Index
n // 2stehen würde, wobeindie Anzahl der Elemente im Footprint des Filters ist. Beachten Sie, dass dies von der konventionellen Definition des Medians abweicht, wennngerade ist. Außerdem unterstützt diese Funktion nicht denfloat16-Datentyp, das Verhalten bei NaNs ist undefiniert und der Speicherverbrauch skaliert mitn**4. Fürfloat16-Unterstützung, größere Kontrolle über die Definition des Filters und zur Begrenzung des Speicherverbrauchs sollten Sievectorized_filtermit den NumPy-Funktionen np.median oder np.nanmedian in Betracht ziehen.Beispiele
>>> from scipy import ndimage, datasets >>> import matplotlib.pyplot as plt >>> fig = plt.figure() >>> plt.gray() # show the filtered result in grayscale >>> ax1 = fig.add_subplot(121) # left side >>> ax2 = fig.add_subplot(122) # right side >>> ascent = datasets.ascent() >>> result = ndimage.median_filter(ascent, size=20) >>> ax1.imshow(ascent) >>> ax2.imshow(result) >>> plt.show()