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
fullDie Ausgabe ist die vollständige diskrete lineare Faltung der Eingaben. (Standard)
validDie 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.
sameDie 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.
fillFüllt die Eingabearrays mit fillvalue auf. (Standard)
wrapZirkuläre Randbedingungen.
symmSymmetrische 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()