shift#
- scipy.ndimage.shift(input, shift, output=None, order=3, mode='constant', cval=0.0, prefilter=True)[Quelle]#
Verschieben Sie ein Array.
Das Array wird mithilfe der Spline-Interpolation der angeforderten Ordnung verschoben. Außerhalb der Grenzen des Eingangs liegende Punkte werden entsprechend dem angegebenen Modus gefüllt.
- Parameter:
- inputarray_like
Das Eingabearray.
- shiftGleitkommazahl oder Sequenz
Die Verschiebung entlang der Achsen. Wenn es sich um eine Gleitkommazahl handelt, ist
shiftfür jede Achse gleich. Wenn es sich um eine Sequenz handelt, sollteshifteinen Wert für jede Achse enthalten.- 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.
- orderint, optional
Die Ordnung der Spline-Interpolation, Standard ist 3. Die Ordnung muss im Bereich 0-5 liegen.
- mode{‘reflect’, ‘grid-mirror’, ‘constant’, ‘grid-constant’, ‘nearest’, ‘mirror’, ‘grid-wrap’, ‘wrap’}, optional
Der Parameter mode bestimmt, wie das Eingabearray über seine Grenzen hinaus erweitert wird. Standard ist ‘constant’. Das Verhalten für jeden gültigen Wert ist wie folgt (weitere Plots und Details zu 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.
- cvalskalar, optional
Wert, mit dem die Ränder der Eingabe gefüllt werden, wenn mode ‘constant’ ist. Standard ist 0.0.
- prefilterbool, optional
Bestimmt, ob das Eingabearray vor der Interpolation mit
spline_filtervorab gefiltert wird. Der Standardwert ist True, was ein temporäres Array vom Typ float64 mit gefilterten Werten erstellt, wennorder > 1. Wenn Sie dies auf False setzen, ist das Ergebnis leicht verschwommen, wennorder > 1, es sei denn, die Eingabe wurde vorab gefiltert, d.h. sie ist das Ergebnis des Aufrufs vonspline_filterauf die ursprüngliche Eingabe.
- Rückgabe:
- shiftndarray
Die verschobene Eingabe.
Siehe auch
affine_transformAffine Transformationen
Hinweise
Bei komplexwertigen Eingaben verschiebt diese Funktion die Real- und Imaginärteile unabhängig voneinander.
Hinzugefügt in Version 1.6.0: Unterstützung für komplexe Werte hinzugefügt.
Beispiele
Importieren Sie die notwendigen Module und ein beispielhaftes Bild.
>>> from scipy.ndimage import shift >>> import matplotlib.pyplot as plt >>> from scipy import datasets >>> image = datasets.ascent()
Verschieben Sie das Bild vertikal um 20 Pixel.
>>> image_shifted_vertically = shift(image, (20, 0))
Verschieben Sie das Bild vertikal um -200 Pixel und horizontal um 100 Pixel.
>>> image_shifted_both_directions = shift(image, (-200, 100))
Plotten Sie das Originalbild und die verschobenen Bilder.
>>> fig, axes = plt.subplots(3, 1, figsize=(4, 12)) >>> plt.gray() # show the filtered result in grayscale >>> top, middle, bottom = axes >>> for ax in axes: ... ax.set_axis_off() # remove coordinate system >>> top.imshow(image) >>> top.set_title("Original image") >>> middle.imshow(image_shifted_vertically) >>> middle.set_title("Vertically shifted image") >>> bottom.imshow(image_shifted_both_directions) >>> bottom.set_title("Image shifted in both directions") >>> fig.tight_layout()