scipy.signal.

convolve2d#

scipy.signal.convolve2d(in1, in2, mode='full', boundary='fill', fillvalue=0)[Quelle]#

Faltet zwei zweidimensionale Arrays.

Faltet in1 und in2 mit einer Ausgabegröße, die durch mode bestimmt wird, und Randbedingungen, die durch boundary und fillvalue bestimmt werden.

Parameter:
in1array_like

Erster Input.

in2array_like

Zweiter Input. Sollte dieselbe Anzahl von Dimensionen wie in1 haben.

modestr {‘full’, ‘valid’, ‘same’}, optional

Ein String, der die Größe der Ausgabe angibt

full

Die Ausgabe ist die vollständige diskrete lineare Faltung der Eingaben. (Standard)

valid

Die Ausgabe besteht nur aus den Elementen, die nicht von der Null-Pufferung abhängen. Im Modus 'valid' muss entweder in1 oder in2 in jeder Dimension mindestens so groß sein wie der andere.

same

Die Ausgabe hat die gleiche Größe wie in1 und ist zentriert bezüglich der 'full'-Ausgabe.

boundarystr {‘fill’, ‘wrap’, ‘symm’}, optional

Ein Flag, das angibt, wie mit Rändern umzugehen ist.

fill

Füllt die Eingabearrays mit fillvalue auf. (Standard)

wrap

Zirkuläre Randbedingungen.

symm

Symmetrische Randbedingungen.

fillvalueSkalar, optional

Wert, mit dem die Eingabearrays aufgefüllt werden. Standard ist 0.

Rückgabe:
outndarray

Ein zweidimensionales Array, das einen Teil der diskreten linearen Faltung von in1 mit in2 enthält.

Beispiele

Berechnet den Gradienten eines Bildes durch 2D-Faltung mit einem komplexen Scharr-Operator. (Der horizontale Operator ist reell, der vertikale ist imaginär.) Verwenden Sie symmetrische Randbedingungen, um Kanten an den Bildrändern zu vermeiden.

>>> import numpy as np
>>> from scipy import signal
>>> from scipy import datasets
>>> ascent = datasets.ascent()
>>> scharr = np.array([[ -3-3j, 0-10j,  +3 -3j],
...                    [-10+0j, 0+ 0j, +10 +0j],
...                    [ -3+3j, 0+10j,  +3 +3j]]) # Gx + j*Gy
>>> grad = signal.convolve2d(ascent, scharr, boundary='symm', mode='same')
>>> import matplotlib.pyplot as plt
>>> fig, (ax_orig, ax_mag, ax_ang) = plt.subplots(3, 1, figsize=(6, 15))
>>> ax_orig.imshow(ascent, cmap='gray')
>>> ax_orig.set_title('Original')
>>> ax_orig.set_axis_off()
>>> ax_mag.imshow(np.absolute(grad), cmap='gray')
>>> ax_mag.set_title('Gradient magnitude')
>>> ax_mag.set_axis_off()
>>> ax_ang.imshow(np.angle(grad), cmap='hsv') # hsv is cyclic, like angles
>>> ax_ang.set_title('Gradient orientation')
>>> ax_ang.set_axis_off()
>>> fig.show()
../../_images/scipy-signal-convolve2d-1.png