scipy.ndimage.

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]])