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.