gaussian_filter#
- scipy.ndimage.gaussian_filter(input, sigma, order=0, output=None, mode='reflect', cval=0.0, truncate=4.0, *, radius=None, axes=None)[Quelle]#
Mehrdimensionaler Gauß-Filter.
- Parameter:
- inputarray_like
Das Eingabearray.
- sigmaSkalar oder Sequenz von Skalaren
Standardabweichung für den Gauß-Kern. Die Standardabweichungen des Gauß-Filters werden für jede Achse als Sequenz oder als einzelne Zahl angegeben, in welchem Fall sie für alle Achsen gleich ist.
- orderint oder Sequenz von ints, optional
Die Ordnung des Filters entlang jeder Achse wird als Sequenz von ganzen Zahlen oder als einzelne Zahl angegeben. Eine Ordnung von 0 entspricht der Faltung mit einem Gauß-Kern. Eine positive Ordnung entspricht der Faltung mit der entsprechenden Ableitung eines Gauß-Filters.
- 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.
- modestr oder Sequenz, optional
Der Parameter mode bestimmt, wie das Eingangsarray erweitert wird, wenn der Filter einen Rand überlappt. Durch Übergabe einer Sequenz von Modi mit der Länge, die der Anzahl der Dimensionen des Eingangsarrays entspricht, können entlang jeder Achse unterschiedliche Modi angegeben werden. Standardwert ist „reflect“. Die gültigen Werte und ihr Verhalten sind 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-constant’
Dies ist ein Synonym für ‘constant’.
- ‘grid-mirror’
Dies ist ein Synonym für ‘reflect’.
- ‘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.
- truncatefloat, optional
Schneidet den Filter bei dieser Anzahl von Standardabweichungen ab. Standard ist 4.0.
- radiusNone oder int oder Sequenz von ints, optional
Radius des Gauß-Kerns. Die Radien werden für jede Achse als Sequenz oder als einzelne Zahl angegeben, in welchem Fall sie für alle Achsen gleich ist. Wenn angegeben, ist die Größe des Kerns entlang jeder Achse
2*radius + 1, und truncate wird ignoriert. Standard ist None.- axesTupel von int oder None, optional
Wenn None, wird input entlang aller Achsen gefiltert. Andernfalls wird input entlang der angegebenen Achsen gefiltert. Wenn axes angegeben ist, müssen alle für sigma, order, mode und/oder radius verwendeten Tupel mit der Länge von axes übereinstimmen. Der i-te Eintrag in einem dieser Tupel entspricht dem i-ten Eintrag in axes.
- Rückgabe:
- gaussian_filterndarray
Zurückgegebene Array mit derselben Form wie input.
Hinweise
Der mehrdimensionale Filter wird als Folge von 1-D-Faltungsfiltern implementiert. Die Zwischenarrays werden im gleichen Datentyp wie die Ausgabe gespeichert. Daher können bei Ausgabetypen mit begrenzter Genauigkeit die Ergebnisse ungenau sein, da Zwischenergebnisse möglicherweise mit unzureichender Genauigkeit gespeichert werden.
Der Gauß-Kern hat entlang jeder Achse die Größe
2*radius + 1. Wenn radius None ist, wird der Standardwertradius = round(truncate * sigma)verwendet.Beispiele
>>> from scipy.ndimage import gaussian_filter >>> import numpy as np >>> a = np.arange(50, step=2).reshape((5,5)) >>> a array([[ 0, 2, 4, 6, 8], [10, 12, 14, 16, 18], [20, 22, 24, 26, 28], [30, 32, 34, 36, 38], [40, 42, 44, 46, 48]]) >>> gaussian_filter(a, sigma=1) array([[ 4, 6, 8, 9, 11], [10, 12, 14, 15, 17], [20, 22, 24, 25, 27], [29, 31, 33, 34, 36], [35, 37, 39, 40, 42]])
>>> from scipy import 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 = gaussian_filter(ascent, sigma=5) >>> ax1.imshow(ascent) >>> ax2.imshow(result) >>> plt.show()