scipy.ndimage.

spline_filter1d#

scipy.ndimage.spline_filter1d(input, order=3, axis=-1, output=<class 'numpy.float64'>, mode='mirror')[Quelle]#

Berechnet einen 1-D-Spline-Filter entlang der gegebenen Achse.

Die Zeilen des Arrays entlang der angegebenen Achse werden mit einem Spline-Filter gefiltert. Die Ordnung des Splines muss >= 2 und <= 5 sein.

Parameter:
inputarray_like

Das Eingabearray.

orderint, optional

Die Ordnung des Splines, Standard ist 3.

axisint, optional

Die Achse, entlang derer der Spline-Filter angewendet wird. Standard ist die letzte Achse.

outputndarray oder dtype, optional

Das Array, in das die Ausgabe platziert werden soll, oder der dtype des zurückgegebenen Arrays. Standard ist numpy.float64.

mode{‘reflect’, ‘grid-mirror’, ‘constant’, ‘grid-constant’, ‘nearest’, ‘mirror’, ‘grid-wrap’, ‘wrap’}, optional

Der mode Parameter bestimmt, wie das Eingabearray über seine Grenzen hinaus erweitert wird. Standard ist 'mirror'. Das Verhalten für jeden gültigen Wert ist wie folgt (siehe zusätzliche Diagramme und Details unter Randmodi)

‘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.

‘grid-mirror’

Dies ist ein Synonym für ‘reflect’.

‘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. Außerhalb der Grenzen der Eingabe wird keine Interpolation durchgeführt.

‘grid-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. Die Interpolation erfolgt auch für Abtastpunkte außerhalb des Umfangs der Eingabe.

‘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.

‘grid-wrap’ (a b c d | a b c d | a b c d)

Die Eingabe wird erweitert, indem zum gegenüberliegenden Rand umgebrochen wird.

‘wrap’ (d b c d | a b c d | b c a b)

Die Eingabe wird durch Umwickeln zum gegenüberliegenden Rand erweitert, jedoch so, dass der letzte und der erste Punkt genau übereinanderliegen. In diesem Fall ist nicht eindeutig definiert, welcher Abtastpunkt am Überlappungspunkt gewählt wird.

Rückgabe:
spline_filter1dndarray

Die gefilterte Eingabe.

Siehe auch

spline_filter

Mehrdimensionaler Spline-Filter.

Hinweise

Alle Interpolationsfunktionen in ndimage führen Spline-Interpolation des Eingabebildes durch. Wenn B-Splines der Ordnung > 1 verwendet werden, müssen die Eingabebildwerte zuerst in B-Spline-Koeffizienten umgewandelt werden, was durch sequentielles Anwenden dieses 1-D-Filters entlang aller Achsen der Eingabe geschieht. Alle Funktionen, die B-Spline-Koeffizienten benötigen, filtern ihre Eingaben automatisch, ein Verhalten, das mit dem Schlüsselwortargument prefilter steuerbar ist. Für Funktionen, die einen mode Parameter akzeptieren, ist das Ergebnis nur dann korrekt, wenn es mit dem mode übereinstimmt, der beim Filtern verwendet wurde.

Für komplexwertige input verarbeitet diese Funktion die reellen und imaginären Komponenten unabhängig voneinander.

Hinzugefügt in Version 1.6.0: Unterstützung für komplexe Werte hinzugefügt.

Beispiele

Wir können ein Bild mit einem 1-D-Spline entlang der angegebenen Achse filtern

>>> from scipy.ndimage import spline_filter1d
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> orig_img = np.eye(20)  # create an image
>>> orig_img[10, :] = 1.0
>>> sp_filter_axis_0 = spline_filter1d(orig_img, axis=0)
>>> sp_filter_axis_1 = spline_filter1d(orig_img, axis=1)
>>> f, ax = plt.subplots(1, 3, sharex=True)
>>> for ind, data in enumerate([[orig_img, "original image"],
...             [sp_filter_axis_0, "spline filter (axis=0)"],
...             [sp_filter_axis_1, "spline filter (axis=1)"]]):
...     ax[ind].imshow(data[0], cmap='gray_r')
...     ax[ind].set_title(data[1])
>>> plt.tight_layout()
>>> plt.show()
../../_images/scipy-ndimage-spline_filter1d-1.png