Das Label-Bild
Jeder Durchlauf veröffentlicht output/blob-labels, und sonst nichts. Es ist ein gewöhnlicher
Bildknoten - data, width, height, pixel-type - mit einer Zahl pro Pixel: die Region, zu der
das Pixel gehört, oder 0 für Hintergrund.
Warum eine Ausgabe und keine Wahl
Der Detektor findet Regionen über Zusammenhangskomponenten, ein Label-Bild ist also das Ergebnis.
Konturen, Polygone und Masken pro Region waren alles Arten, dieselbe Sache weniger direkt zu
beschreiben, und input/publish war ein Menü, um zwischen diesen Beschreibungen zu wählen. Eine
einzige Ausgabe kann sich nicht selbst widersprechen.
Lesen
pixel-type ist Mono16, nicht Mono8 - ein Bild kann mehr als 255 Regionen enthalten, und ein Label
ist eine Nummer, keine Helligkeit; ein Überlauf bei 255 würde also stillschweigend zwei Regionen zu
einer verschmelzen.
Die Zahlen sind die blobs[].label-Werte in output/result. Das macht das Bild nützlich statt bloß
dekorativ: Von einer gemeldeten Fläche kommen Sie zu genau den Pixeln, aus denen sie gemessen wurde.
blobs[2].label == 7 -> every pixel of blob-labels holding 7 is that region
Eine Binärmaske, falls Sie nur die brauchen, ist labels > 0.
Was enthalten ist und was nicht
Das Bild umfasst den ganzen Frame, in der Größe des Eingabebildes - nicht des Crops. Schneiden Sie
es mit crop_x/crop_y/crop_width/crop_height aus output/result zu, wenn Sie nur die durchsuchte
Region wollen.
Jede Region, die output/result meldet, ist hier markiert, und keine andere. Bild und Zahlen
beschreiben immer dieselben Regionen; eine Region, die Sie sehen können, ist also eine, die Sie
nachschlagen können.
Labels werden nicht neu nummeriert. blobs[].label muss weiterhin dieselben Pixel adressieren; die
Nummern sind daher die des Detektors und keine Position in der gemeldeten Liste - die nach Fläche
sortiert ist und deshalb nicht in Label-Reihenfolge läuft.
Im Cockpit
Das Cockpit färbt jede Region in einer anderen Farbe über dem Kamerabild ein. Deshalb gibt es das Label-Bild und keine einfache Maske: Benachbarte Regionen erscheinen in verschiedenen Farben, sodass sich eine gemeldete Fläche bis zu genau den Pixeln zurückverfolgen lässt, aus denen sie gemessen wurde. Ein umschließendes Rechteck könnte das nie zeigen - zwei überlappende Rechtecke sagen nichts darüber, welche Pixel zu welcher Region gehören.