scipy.ndimage.

binary_fill_holes#

scipy.ndimage.binary_fill_holes(input, structure=None, output=None, origin=0, *, axes=None)[Quellcode]#

Füllt Löcher in binären Objekten.

Parameter:
inputarray_like

N-dimensionale binäre Matrix mit zu füllenden Löchern

structurearray_like, optional

Strukturelement, das in der Berechnung verwendet wird; Elemente großer Größe beschleunigen die Berechnungen, können aber Löcher verfehlen, die durch dünne Regionen vom Hintergrund getrennt sind. Das Standardelement (mit einer quadratischen Konnektivität gleich eins) liefert das intuitive Ergebnis, bei dem alle Löcher in der Eingabe gefüllt wurden.

outputndarray, optional

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

originint, Tupel von ints, optional

Position des Strukturelements.

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:
outndarray

Transformation des ursprünglichen Bildes input, bei der Löcher gefüllt wurden.

Hinweise

Der in dieser Funktion verwendete Algorithmus besteht darin, das Komplement der Formen in input vom äußeren Rand des Bildes aus mit binären Dilatationen zu durchdringen. Löcher sind nicht mit dem Rand verbunden und werden daher nicht durchdrungen. Das Ergebnis ist die komplementäre Teilmenge der durchdrungenen Region.

Referenzen

Beispiele

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((5, 5), dtype=int)
>>> a[1:4, 1:4] = 1
>>> a[2,2] = 0
>>> a
array([[0, 0, 0, 0, 0],
       [0, 1, 1, 1, 0],
       [0, 1, 0, 1, 0],
       [0, 1, 1, 1, 0],
       [0, 0, 0, 0, 0]])
>>> ndimage.binary_fill_holes(a).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]])
>>> # Too big structuring element
>>> ndimage.binary_fill_holes(a, structure=np.ones((5,5))).astype(int)
array([[0, 0, 0, 0, 0],
       [0, 1, 1, 1, 0],
       [0, 1, 0, 1, 0],
       [0, 1, 1, 1, 0],
       [0, 0, 0, 0, 0]])