scipy.ndimage.

sobel#

scipy.ndimage.sobel(input, axis=-1, output=None, mode='reflect', cval=0.0)[Quelle]#

Berechnet einen Sobel-Filter.

Parameter:
inputarray_like

Das Eingabearray.

axisint, optional

Die Achse von input, entlang der berechnet werden soll. Standard ist -1.

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.

modestr oder Sequenz, optional

Der Parameter mode bestimmt, wie das Eingangsarray erweitert wird, wenn der Filter einen Rand überlappt. Durch Übergabe einer Sequenz von Modi mit der Länge, die der Anzahl der Dimensionen des Eingangsarrays entspricht, können entlang jeder Achse unterschiedliche Modi angegeben werden. Standardwert ist „reflect“. Die gültigen Werte und ihr Verhalten sind wie folgt:

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

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

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

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

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

Zur Konsistenz mit den Interpolationsfunktionen können auch die folgenden Modusnamen verwendet werden:

‘grid-constant’

Dies ist ein Synonym für ‘constant’.

‘grid-mirror’

Dies ist ein Synonym für ‘reflect’.

‘grid-wrap’

Dies ist ein Synonym für ‘wrap’.

cvalskalar, optional

Wert, mit dem die Ränder der Eingabe gefüllt werden, wenn mode ‘constant’ ist. Standard ist 0.0.

Rückgabe:
sobelndarray

Gefiltertes Array. Hat die gleiche Form wie input.

Hinweise

Diese Funktion berechnet den achsenspezifischen Sobel-Gradienten. Horizontale Kanten können mit der horizontalen Transformation (axis=0) hervorgehoben werden, vertikale Kanten mit der vertikalen Transformation (axis=1) und so weiter für höhere Dimensionen. Diese können kombiniert werden, um die Magnitude zu erhalten.

Beispiele

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> ascent = datasets.ascent().astype('int32')
>>> sobel_h = ndimage.sobel(ascent, 0)  # horizontal gradient
>>> sobel_v = ndimage.sobel(ascent, 1)  # vertical gradient
>>> magnitude = np.sqrt(sobel_h**2 + sobel_v**2)
>>> magnitude *= 255.0 / np.max(magnitude)  # normalization
>>> fig, axs = plt.subplots(2, 2, figsize=(8, 8))
>>> plt.gray()  # show the filtered result in grayscale
>>> axs[0, 0].imshow(ascent)
>>> axs[0, 1].imshow(sobel_h)
>>> axs[1, 0].imshow(sobel_v)
>>> axs[1, 1].imshow(magnitude)
>>> titles = ["original", "horizontal", "vertical", "magnitude"]
>>> for i, ax in enumerate(axs.ravel()):
...     ax.set_title(titles[i])
...     ax.axis("off")
>>> plt.show()
../../_images/scipy-ndimage-sobel-1.png