Entfernungen effektiv erkennen

Disparitäts-Bildsegmentierung für Fahrerassistenzsysteme

20. März 2019, 11:00 Uhr | Von Viktor Mukha und Inon Sharony
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Implementierung

Der Algorithmus ist als einzelner Durchlauf über die Schwellenwerte implementiert, gefolgt von einem Durchlauf über etwaige neue Objekte – wobei jeweils alle gespeicherten Objekte durchlaufen werden, um die Kriterien zu überprüfen. Bei der Überprüfung auf Verschmelzung ergibt sich eine zusätzliche Komplexität, da berücksichtigt werden muss, ob sich der Mittelpunkt eines anderen gespeicherten Objekts innerhalb des neuen Objekts befindet. Hierdurch ist ein weiterer Durchlauf über die gespeicherten Objekte erforderlich. Die wichtigsten Komplexitätsfaktoren sind damit die Anzahl der zu detektierenden Objekte und die Stoppkriterien.

Die ausgegebenen Blobs werden an »std::vector<DetectedObjects<int>>« übertragen. Grundsätzlich enthält ein »DetectedObject« die 2D-Koordinaten des Mittelpunkts, den Disparitätswert und einen Begrenzungsrahmen (»cv::Rect«). Zu beachten ist, dass »cv::Rect_<unsigned short>« für Bilder mit einer Größe von mehr als »ushort« [Pixel] unzureichend definiert ist, da der Intersection-Operator zu einem Pufferüberlauf führen kann – daher wird der Datentyp »int« gewählt. Der implementierte Algorithmus ist iterativ, da er Objekte aus jedem der vorangegangenen Schritte verwendet. Unter bestimmten Umständen (Nullwert des Parameters »numSameIterationsToStop«) besteht die Möglichkeit zur Parallelisierung der CCL-Berechnung beispielsweise mit »cv::parallel_for()«.

Für die übrige Algorithmenlogik müssten nach wie vor alle per CCL detektierten Objekte sequenziell verarbeitet werden. Vor einer Parallelisierung ist es daher wichtig, die CCL-Laufzeit und den Zeitbedarf der Logik zu profilieren. Benötigen beide zu viel Zeit, ist es möglicherweise besser, den Ansatz von Yapa & Harada [4] zu wählen.

Parameter

Tabelle 1 und Tabelle 2 zeigen die entsprechenden Parameter.

Tabelle 1. Parameter 1 bis 6.
Tabelle 1. Parameter 1 bis 6.
© L4B

Die übrigen Parameter sind Argumente für die CCL-Methode »cv::connected ComponentsWithStats()«.







 

Tabelle 2. Parameter 7 bis 9.
Tabelle 2. Parameter 7 bis 9.
© L4B

Definitionen

  • »thresholdStepSize«: Der Algorithmus geht in absteigender Reihenfolge der Disparitätswerte vor und verändert den Schwellenwert um die Schrittweite. Vorgegeben sind 5 Prozent des Disparitätsbereichs (maximale Disparität abzüglich der minimalen Disparität). Kleinere Schrittweiten begünstigen die Separierung von Objekten, die tiefenmäßig näher beieinanderliegen. Größere Schrittweiten dagegen sparen Rechenzeit, da der Parameter direkten Einfluss auf die Zahl der CCL-Iterationen hat.
  • »numSameIterationsToStop«: Hierbei handelt es sich um ein Stoppkriterium des Algorithmus. Der Standardwert »0« bewirkt, dass der Algorithmus den kompletten Bereich der Disparitätswerte abarbeitet. Das erfordert viel Zeit und hilft nur bei der Detektierung von Objekten von geringerer Disparität, die in dem Kontext aber weniger relevant sind. Ein positiver definitiver Wert stoppt, wenn sich in den letzten »numSameIterationsToStop«-Schritten nichts geändert hat. Der Parameter sollte zusammen mit »thresholdStepSize« angepasst werden, wenn der Algorithmus zu viel Zeit braucht, um alle Schwellenwerte abzuarbeiten.
  • »minObjDimension«: Das ist die Mindest-Objektgröße [Pixel]. Sowohl die Höhe als auch die Breite des detektierten Blobs müssen die Kriterien erfüllen, damit ein Objekt in der Liste detektierter Objekte gespeichert wird. Zu beachten ist, dass der Algorithmus Rauschen als Objekte detektieren kann, wenn hier sehr kleine Abmessungen eingegeben werden.»maxObjDimension«: Hierbei handelt es sich um die maximale Objektabmessung [Pixel]. Höhe und Breite des detektierten Blobs müssen die Kriterien erfüllen, damit ein Objekt in der Liste detektierter Objekte gespeichert wird. Wird der Parameter zu klein gewählt, ist eine Erkennung von Objekten, die sich sehr nah an den Kameras befinden, nicht möglich. Der Vorgabewert ist kleiner als die minimale Framegröße (Höhe oder Breite), sodass das komplette Frame nicht als Objekt erkannt wird.
  • »commonAreaToConsiderBackground«: Kriterium für das Verwerfen eines neu detektierten Objekts, wenn es sich mindestens »commonAreaToConsiderBackground« (Verhältnis) innerhalb eines bereits gespeicherten Objekts befindet. In den meisten Fällen befindet sich solch ein detektiertes Objekt hinter einem bereits detektierten Objekt. Der Parameter wird nur für die Kompensation der Detektion geringfügig verschobener Objekte benötigt.
  • »commonAreaToConsiderGrowing«: Kriterium zum Aktualisieren eines gespeicherten Objekts, wenn es sich mindestens »commonAreaToConsiderGrowing« (Verhältnis) innerhalb eines neu detektierten Objekts befindet. Das bedeutet, dass das Objekt wächst. Der Parameter wird nur für die Kompensation der Detektion geringfügig verschobener Objekte benötigt.
  • »connectivity«: 8- beziehungsweise 4-Wege-Vernetzung.
  • »ltype«: Label-Typ des ausgegebenen Bilds. Aktuell werden »CV_32S« und »CV_16U« unterstützt.
  • »ccltype«: Typ des Connected-Components-Algorithmus.
Exemplarische Ergebnisse für die Segmentierung
Tabelle 3. Exemplarische Ergebnisse für die Segmentierung.
© L4B

Ergebnisse
Exemplarische wurden vier Testfälle für die Segmentierung implementiert. Tabelle 3 zeigt eine Übersicht der resultierenden Bilder mit Rechtecken um die detektierten Objekte in der entsprechenden Reihenfolge.

Erkennbares Potenzial

Der adaptive Algorithmus für die Bildsegmentierung wurde an einem nicht-binären Bild (beispielsweise einem Falschfarben- oder Grauskalen-Disparitätsbild) mithilfe der CCL-Methode angewendet. Die Ergebnisse lassen ein Potenzial erkennen, da sie sich auf Systeme mit beschränkten Ressourcen wie etwa eingebettete Fahrerassistenzsysteme übertragen lassen. Der derzeitige Ansatz liefert qualitativ bessere Ergebnisse als jene des »cv::SimpleBlobDetector« aus OpenCV. Somit ergeben sich durch Einsatz des Algorithmus nachfolgende Möglichkeiten:

  • Bessere Kontrolle mithilfe der Stoppkriterien. Beispielsweise kann angehalten werden, wenn die nächstgelegenen Objekte gefunden wurden und keines davon in den letzten Begrenzungsrahmen »gewachsen« ist. Auf diese Weise lässt sich ein guter Kompromiss zwischen der Leistungsfähigkeit und der Zahl der detektierten Objekte finden.
  • Implementierung des Vorschlags von Yapa & Harada [4] für mindestens einen der drei erwähnten CCL-Algorithmen und Durchführung eines Benchmarkings [6] für Qualität und Geschwindigkeit.
  • Betrachtung von Alternativen zu CCL für die Segmentierung (beispielsweise Watershed, Region Growing, Clustering).
  • Verbesserung des Algorithmus zur Objekttiefen-Abschätzung über die nullte Ordnung hinaus (Verwendung des maximalen Disparitätswerts im Begrenzungsrahmen).

 

Literatur

1. Lifeng He, Xiwei Ren, Qihang Gao, Xiao Zhao, Bin Yao und Yuyan Chao: »The connected-component labeling problem: A review of state-of-the-art algorithms«. Pattern Recognition, Elsevier BV, ISSN: 0031-3203, Vol: 70, Seiten: 25 - 43 (2017), DOI: 10.1016/j.patcog.2017.04.018
2. Martin Peris Martorell, Atsuto Maki, Sarah Martull, Yasuhiro Ohkawa und Kazuhiro Fukui: »Towards a Simulation Driven Stereo Vision System«. ICPR2012, Seiten: 1038 – 1042, 2012.
3. Sarah Martull, Martin Peris Martorell, Kazuhiro Fukui: »Realistic CG Stereo Image Dataset with Ground Truth Disparity Maps«. ICPR2012 workshop TrakMark2012, Seiten: 40 – 42, 2012.
4. Yapa, R.D. und Harada, K.: »Connected component labeling algorithms for gray-scale images and evaluation of performance using digital mammograms«. International Journal of Computer Science and Network Security, 8(6), Seiten: 33 – 41, 2008.
5. Nobuyuki Otsu: »A Threshold Selection Method from Gray-Level Histograms«. IEEE Transactions on Systems, Man, and Cybernetics, Vol: 9, Ausgabe 1, Seiten: 62 – 66, 1979, DOI: 10.1109/TSMC.1979.4310076.
6. Grana Costantino, Bolelli Federico, Baraldi Lorenzo und Vezzani Roberto: »YACCLAB - Yet Another Connected Components Labeling Benchmark«. Proceedings of the 23rd International Conference on Pattern Recognition, Cancun, Mexico, Seiten: 3109 – 3114, 2016, DOI: 10.1109/ICPR.2016.7900112.

 

Die Autoren

 

Viktor Mukha von L4B
Viktor Mukha von L4B.
© L4B

Viktor Mukha

arbeitet als Software-Entwickler für die ADAS-Abteilung bei L4B Automotive. Er hat sein Studium mit dem Master in Visual Computing der Universität des Saarlandes abgeschlossen.

 

 

 

 

Inon Sharony von L4B
Inon Sharony von L4B.
© L4B

Inon Sharony

ist ADAS-Abteilungsleiter bei L4B Automotive und beschäftigte sich als Doktorand an der Universität Tel-Aviv mit den Inhalten des Artikels.

 


  1. Disparitäts-Bildsegmentierung für Fahrerassistenzsysteme
  2. Implementierung

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Sensoren & -systeme

Weitere Artikel zu Entwicklungswerkzeuge

Weitere Artikel zu Safety und Security