binary_erosion#
- scipy.ndimage.binary_erosion(input, structure=None, iterations=1, mask=None, output=None, border_value=0, origin=0, brute_force=False, *, axes=None)[Quelle]#
Mehrdimensionale binäre Erosion mit einem gegebenen Strukturelement.
Die binäre Erosion ist eine mathematische Morphologieoperation, die zur Bildverarbeitung verwendet wird.
- Parameter:
- inputarray_like
Binäres Bild, das erodiert werden soll. Nicht-Null-Elemente (True) bilden die zu erodierende Teilmenge.
- structurearray_like, optional
Strukturelement, das für die Erosion verwendet wird. Nicht-Null-Elemente werden als True betrachtet. Wenn kein Strukturelement angegeben wird, wird ein Element mit einer quadratischen Konnektivität von eins generiert.
- iterationsint, optional
Die Erosion wird iterations mal wiederholt (standardmäßig einmal). Wenn die Anzahl der Iterationen kleiner als 1 ist, wird die Erosion wiederholt, bis sich das Ergebnis nicht mehr ändert.
- maskarray_like, optional
Wenn eine Maske angegeben wird, werden nur die Elemente mit einem True-Wert an der entsprechenden Maskenposition bei jeder Iteration modifiziert.
- outputndarray, optional
Array mit derselben Form wie input, in das die Ausgabe geschrieben wird. Standardmäßig wird ein neues Array erstellt.
- border_valueint (wird zu 0 oder 1 konvertiert), optional
Wert am Rand im Ausgabearray.
- originint oder Tupel von ints, optional
Platzierung des Filters, standardmäßig 0.
- brute_forceboolean, optional
Speicherbedingung: Wenn False, werden nur die Pixel, deren Wert in der letzten Iteration geändert wurde, als Kandidaten für die Aktualisierung (Erosion) in der aktuellen Iteration verfolgt; wenn True, werden alle Pixel unabhängig davon, was in der vorherigen Iteration passiert ist, als Kandidaten für die Erosion betrachtet. Standardmäßig False.
- axestuple von int oder None
Die Achsen, über die der Filter angewendet wird. Wenn None, wird input über alle Achsen gefiltert. Wenn ein origin-Tupel angegeben wird, muss seine Länge mit der Anzahl der Achsen übereinstimmen.
- Rückgabe:
- binary_erosionndarray von bools
Erosion des Inputs durch das Strukturelement.
Hinweise
Die Erosion [1] ist eine mathematische Morphologieoperation [2], die ein Strukturelement verwendet, um Formen in einem Bild zu verkleinern. Die binäre Erosion eines Bildes durch ein Strukturelement ist der Ort der Punkte, an denen eine Überlagerung des auf den Punkt zentrierten Strukturelements vollständig in der Menge der Nicht-Null-Elemente des Bildes enthalten ist.
Referenzen
Beispiele
>>> from scipy import ndimage >>> import numpy as np >>> a = np.zeros((7,7), dtype=int) >>> a[1:6, 2:5] = 1 >>> a array([[0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> ndimage.binary_erosion(a).astype(a.dtype) array([[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> #Erosion removes objects smaller than the structure >>> ndimage.binary_erosion(a, structure=np.ones((5,5))).astype(a.dtype) 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, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]])