scipy.ndimage.

generate_binary_structure#

scipy.ndimage.generate_binary_structure(rank, connectivity)[Quelle]#

Generiert eine binäre Struktur für binäre morphologische Operationen.

Parameter:
rankint

Anzahl der Dimensionen des Arrays, auf das das Strukturierungselement angewendet wird, wie zurückgegeben von np.ndim.

connectivityint

connectivity bestimmt, welche Elemente des Ausgabe-Arrays zur Struktur gehören, d. h. als Nachbarn des zentralen Elements betrachtet werden. Elemente bis zu einer quadrierten Entfernung von connectivity vom Zentrum werden als Nachbarn betrachtet. connectivity kann von 1 (keine diagonalen Elemente sind Nachbarn) bis rank (alle Elemente sind Nachbarn) reichen.

Rückgabe:
outputndarray von booleschen Werten

Strukturierungselement, das für binäre morphologische Operationen verwendet werden kann, mit rank Dimensionen und allen Dimensionen gleich 3.

Hinweise

generate_binary_structure kann nur Strukturierungselemente mit Dimensionen gleich 3 erstellen, d. h. minimale Dimensionen. Für größere Strukturierungselemente, die z. B. für die Erosion großer Objekte nützlich sind, kann entweder iterate_structure verwendet werden, oder es können direkt benutzerdefinierte Arrays mit numpy-Funktionen wie numpy.ones erstellt werden.

Beispiele

>>> from scipy import ndimage
>>> import numpy as np
>>> struct = ndimage.generate_binary_structure(2, 1)
>>> struct
array([[False,  True, False],
       [ True,  True,  True],
       [False,  True, False]], dtype=bool)
>>> a = np.zeros((5,5))
>>> a[2, 2] = 1
>>> a
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> b = ndimage.binary_dilation(a, structure=struct).astype(a.dtype)
>>> b
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> ndimage.binary_dilation(b, structure=struct).astype(a.dtype)
array([[ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  1.,  0.,  0.]])
>>> struct = ndimage.generate_binary_structure(2, 2)
>>> struct
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)
>>> struct = ndimage.generate_binary_structure(3, 1)
>>> struct # no diagonal elements
array([[[False, False, False],
        [False,  True, False],
        [False, False, False]],
       [[False,  True, False],
        [ True,  True,  True],
        [False,  True, False]],
       [[False, False, False],
        [False,  True, False],
        [False, False, False]]], dtype=bool)