scipy.ndimage.

binary_hit_or_miss#

scipy.ndimage.binary_hit_or_miss(input, structure1=None, structure2=None, output=None, origin1=0, origin2=None, *, axes=None)[Quellcode]#

Mehrdimensionale binäre Hit-or-Miss-Transformation.

Die Hit-or-Miss-Transformation findet die Positionen eines gegebenen Musters innerhalb des Eingabebildes.

Parameter:
inputarray_like (wird zu booleans konvertiert)

Binäres Bild, in dem ein Muster erkannt werden soll.

structure1array_like (wird zu booleans konvertiert), optional

Teil des Strukturierungselements, das an den Vordergrund (nicht-null Elemente) von input angepasst werden soll. Wenn kein Wert angegeben ist, wird eine Struktur mit quadratischer Konnektivität 1 gewählt.

structure2array_like (wird zu booleans konvertiert), optional

Zweiter Teil des Strukturierungselements, der den Vordergrund vollständig verfehlen muss. Wenn kein Wert angegeben ist, wird die Komplementärdarstellung von structure1 genommen.

outputndarray, optional

Array mit derselben Form wie input, in das die Ausgabe geschrieben wird. Standardmäßig wird ein neues Array erstellt.

origin1int oder Tupel von ints, optional

Position des ersten Teils des Strukturierungselements structure1, standardmäßig 0 für eine zentrierte Struktur.

origin2int oder Tupel von ints, optional

Position des zweiten Teils des Strukturierungselements structure2, standardmäßig 0 für eine zentrierte Struktur. Wenn für origin1 ein Wert angegeben wird und nicht für origin2, dann wird origin2 auf origin1 gesetzt.

axestuple von int oder None

Die Achsen, über die der Filter angewendet wird. Wenn None, wird input über alle Achsen gefiltert. Wenn origin1 oder origin2 Tupel angegeben sind, muss ihre Länge der Anzahl der Achsen entsprechen.

Rückgabe:
binary_hit_or_missndarray

Hit-or-Miss-Transformation von input mit dem gegebenen Strukturierungselement (structure1, structure2).

Siehe auch

binary_erosion

Referenzen

Beispiele

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((7,7), dtype=int)
>>> a[1, 1] = 1; a[2:4, 2:4] = 1; a[4:6, 4:6] = 1
>>> a
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 1, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 0, 0, 0],
       [0, 0, 1, 1, 0, 0, 0],
       [0, 0, 0, 0, 1, 1, 0],
       [0, 0, 0, 0, 1, 1, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> structure1 = np.array([[1, 0, 0], [0, 1, 1], [0, 1, 1]])
>>> structure1
array([[1, 0, 0],
       [0, 1, 1],
       [0, 1, 1]])
>>> # Find the matches of structure1 in the array a
>>> ndimage.binary_hit_or_miss(a, structure1=structure1).astype(int)
array([[0, 0, 0, 0, 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, 0, 0, 0, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> # Change the origin of the filter
>>> # origin1=1 is equivalent to origin1=(1,1) here
>>> ndimage.binary_hit_or_miss(a, structure1=structure1,\
... origin1=1).astype(int)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 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, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 0, 0]])