binary_opening#
- scipy.ndimage.binary_opening(input, structure=None, iterations=1, output=None, origin=0, mask=None, border_value=0, brute_force=False, *, axes=None)[Quelle]#
Mehrdimensionale binäre Öffnung mit dem gegebenen Strukturelement.
Die *Öffnung* eines Eingabebildes mit einem Strukturelement ist die *Dilatation* der *Erosion* des Bildes mit dem Strukturelement.
- Parameter:
- inputarray_like
Binäre array_like, die geöffnet werden soll. Nicht-Null (True) Elemente bilden die zu öffnende Teilmenge.
- structurearray_like, optional
Strukturelement, das für die Öffnung 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 (d.h. nur benachbarte Pixel sind mit dem Zentrum verbunden, diagonal verbundene Elemente sind keine Nachbarn).
- iterationsint, optional
Der Erosionsschritt der Öffnung, gefolgt vom Dilatationsschritt, wird jeweils iterations mal wiederholt (standardmäßig eins). Wenn iterations kleiner als 1 ist, wird jede Operation wiederholt, bis sich das Ergebnis nicht mehr ändert. Es werden nur ganzzahlige Iterationszahlen akzeptiert.
- outputndarray, optional
Array mit derselben Form wie input, in das die Ausgabe geschrieben wird. Standardmäßig wird ein neues Array erstellt.
- originint oder Tupel von ints, optional
Platzierung des Filters, standardmäßig 0.
- maskarray_like, optional
Wenn eine Maske angegeben wird, werden nur die Elemente mit einem True-Wert an der entsprechenden Maskenposition bei jeder Iteration modifiziert.
Hinzugefügt in Version 1.1.0.
- border_valueint (wird zu 0 oder 1 konvertiert), optional
Wert am Rand im Ausgabearray.
Hinzugefügt in Version 1.1.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 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 Aktualisierung betrachtet. Standardmäßig False.
Hinzugefügt in Version 1.1.0.
- 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_openingndarray vom Typ bool
Öffnung des Inputs durch das Strukturelement.
Hinweise
Die *Öffnung* [1] ist eine mathematische morphologische Operation [2], die aus der Abfolge einer Erosion und einer Dilatation des Inputs mit demselben Strukturelement besteht. Die Öffnung entfernt daher Objekte, die kleiner als das Strukturelement sind.
Zusammen mit der *Schließung* (
binary_closing) kann die Öffnung zur Rauschunterdrückung verwendet werden.Referenzen
Beispiele
>>> from scipy import ndimage >>> import numpy as np >>> a = np.zeros((5,5), dtype=int) >>> a[1:4, 1:4] = 1; a[4, 4] = 1 >>> a array([[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 1, 1, 1, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 1]]) >>> # Opening removes small objects >>> ndimage.binary_opening(a, structure=np.ones((3,3))).astype(int) array([[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 1, 1, 1, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]]) >>> # Opening can also smooth corners >>> ndimage.binary_opening(a).astype(int) 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]]) >>> # Opening is the dilation of the erosion of the input >>> ndimage.binary_erosion(a).astype(int) 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]]) >>> ndimage.binary_dilation(ndimage.binary_erosion(a)).astype(int) 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]])