scipy.ndimage.

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 shift für jede Achse gleich. Wenn es sich um eine Sequenz handelt, sollte shift einen 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_filter vorab gefiltert wird. Der Standardwert ist True, was ein temporäres Array vom Typ float64 mit gefilterten Werten erstellt, wenn order > 1. Wenn Sie dies auf False setzen, ist das Ergebnis leicht verschwommen, wenn order > 1, es sei denn, die Eingabe wurde vorab gefiltert, d.h. sie ist das Ergebnis des Aufrufs von spline_filter auf die ursprüngliche Eingabe.

Rückgabe:
shiftndarray

Die verschobene Eingabe.

Siehe auch

affine_transform

Affine 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()
../../_images/scipy-ndimage-shift-1.png