scipy.ndimage.

label#

scipy.ndimage.label(input, structure=None, output=None)[Quelle]#

Beschriftet Merkmale in einem Array.

Parameter:
inputarray_like

Ein array-ähnliches Objekt, das beschriftet werden soll. Alle von Null verschiedenen Werte in input werden als Merkmale gezählt und Nullwerte werden als Hintergrund betrachtet.

structurearray_like, optional

Ein Strukturierungselement, das Merkmalsverbindungen definiert. structure muss zentrosymmetrisch sein (siehe Hinweise). Wenn kein Strukturierungselement bereitgestellt wird, wird automatisch eines mit einer quadratischen Konnektivität von eins generiert. Das heißt, für ein 2-D input-Array ist das Standard-Strukturierungselement

[[0,1,0],
 [1,1,1],
 [0,1,0]]
output(None, Datentyp, array_like), optional

Wenn output ein Datentyp ist, gibt es den Typ des resultierenden beschrifteten Merkmalsarrays an. Wenn output ein array-ähnliches Objekt ist, wird output mit den beschrifteten Merkmalen aus dieser Funktion aktualisiert. Diese Funktion kann „in-place“ arbeiten, indem output=input übergeben wird. Beachten Sie, dass der Ausgabewert die größte Beschriftung speichern können muss, andernfalls wird diese Funktion eine Ausnahme auslösen.

Rückgabe:
labelndarray oder int

Ein Integer-ndarray, bei dem jedes eindeutige Merkmal in input eine eindeutige Beschriftung im zurückgegebenen Array hat.

num_featuresint

Wie viele Objekte gefunden wurden.

Wenn output None ist, gibt diese Funktion ein Tupel aus (labeled_array, num_features) zurück.

Wenn output ein ndarray ist, wird es mit Werten in labeled_array aktualisiert und nur num_features wird von dieser Funktion zurückgegeben.

Siehe auch

find_objects

Generieren Sie eine Liste von Slices für die beschrifteten Merkmale (oder Objekte); nützlich zum Finden der Position oder Dimensionen von Merkmalen

Hinweise

Eine zentrosymmetrische Matrix ist eine Matrix, die symmetrisch zum Zentrum ist. Weitere Informationen finden Sie unter [1].

Die structure-Matrix muss zentrosymmetrisch sein, um bidirektionale Verbindungen zu gewährleisten. Wenn die structure-Matrix beispielsweise nicht zentrosymmetrisch ist und wie folgt definiert ist:

[[0,1,0],
 [1,1,0],
 [0,0,0]]

und das input ist

[[1,2],
 [0,3]]

dann würde die Strukturmatrix angeben, dass der Eintrag 2 in der Eingabe mit 1 verbunden ist, aber 1 nicht mit 2 verbunden ist.

Referenzen

[1]

James R. Weaver, „Centrosymmetric (cross-symmetric) matrices, their basic properties, eigenvalues, and eigenvectors.“ The American Mathematical Monthly 92.10 (1985): 711-717.

Beispiele

Erstellen Sie ein Bild mit einigen Merkmalen und beschriften Sie es dann mit dem Standard- (kreuzförmigen) Strukturierungselement

>>> from scipy.ndimage import label, generate_binary_structure
>>> import numpy as np
>>> a = np.array([[0,0,1,1,0,0],
...               [0,0,0,1,0,0],
...               [1,1,0,0,1,0],
...               [0,0,0,1,0,0]])
>>> labeled_array, num_features = label(a)

Jedes der 4 Merkmale wird mit einer anderen Ganzzahl beschriftet

>>> num_features
4
>>> labeled_array
array([[0, 0, 1, 1, 0, 0],
       [0, 0, 0, 1, 0, 0],
       [2, 2, 0, 0, 3, 0],
       [0, 0, 0, 4, 0, 0]], dtype=int32)

Generieren Sie ein Strukturierungselement, das Merkmale als verbunden betrachtet, auch wenn sie sich diagonal berühren

>>> s = generate_binary_structure(2,2)

oder,

>>> s = [[1,1,1],
...      [1,1,1],
...      [1,1,1]]

Beschriften Sie das Bild mit dem neuen Strukturierungselement

>>> labeled_array, num_features = label(a, structure=s)

Zeigen Sie die 2 beschrifteten Merkmale an (beachten Sie, dass die Merkmale 1, 3 und 4 von oben nun als ein einziges Merkmal betrachtet werden)

>>> num_features
2
>>> labeled_array
array([[0, 0, 1, 1, 0, 0],
       [0, 0, 0, 1, 0, 0],
       [2, 2, 0, 0, 1, 0],
       [0, 0, 0, 1, 0, 0]], dtype=int32)