Verschmelzen von Labels basierend auf Zentroid-Abständen
In diesem Notebook werden wir Labels in einem Label-Bild basierend auf ihren Zentroid-Abständen zueinander verschmelzen. Nahe beieinander liegende Labels werden zusammengeführt.
Siehe auch
Zu Demonstrationszwecken verwenden wir eine modifizierte Version der Labels, die aus dem Blobs-Beispielbild abgeleitet wurden. Wir führen künstlich Lücken zwischen ihnen ein.
|
cle._ image
shape | (254, 256) |
dtype | uint32 |
size | 254.0 kB |
min | 0.0 | max | 47.0 |
|
Aus diesem Bild extrahieren wir die Koordinaten der Zentroide. Aus diesen Zentroiden können wir eine Abstandsmatrix erstellen. In dieser Matrix wird der Abstand aller Zentroide zu allen anderen Zentroiden berechnet. Die Diagonale ist null, da sie dem Abstand eines Zentroids zu sich selbst entspricht. Außerdem ist der Abstand zum Hintergrund (erste Zeile und erste Spalte) ebenfalls null, da der Hintergrund bei der Abstandsberechnung nicht berücksichtigt wird.
|
cle._ image
shape | (48, 48) |
dtype | float32 |
size | 9.0 kB |
min | 0.0 | max | 324.1848 |
|
Wir können diese Abstandsmatrix mit einem gegebenen maximalen Abstand schwellenwertbasiert verarbeiten. Das Ergebnis ist eine binäre Matrix.
|
cle._ image
shape | (48, 48) |
dtype | uint8 |
size | 2.2 kB |
min | 0.0 | max | 1.0 |
|
Wenn wir Labels mit dem Hintergrund verschmelzen würden, würden alle Labels verschmolzen werden, da alle den Hintergrund berühren. Um dies zu verhindern, setzen wir die erste Zeile und Spalte auf null.
|
cle._ image
shape | (48, 48) |
dtype | uint8 |
size | 2.2 kB |
min | 0.0 | max | 1.0 |
|
Mit der obigen binären Matrix können wir nun die Labels entsprechend verschmelzen.
|
cle._ image
shape | (254, 256) |
dtype | uint32 |
size | 254.0 kB |
min | 0.0 | max | 4.0 |
|