SoSe23 - Praktikum Systementwurf - Segmentierung der Fahrbahnmarkierungen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autoren: Johann Kismann & Dominik Koenig

Einleitung

Im 6. Semester des Studiengangs Mechatronik findet das Praktikum Systementwurf statt. Dabei werden semesterbegleitend Workshops absolviert, welche sich mit einem autonomen Fahrzeug beschäftigen. Im Rahmen dieses Praktikums handelt der 9. Workshop über die Objekt- und Spurenerkennung mit der Kamera, wobei unsere Gruppe das Thema "Segmentierung der Fahrbahnmarkierungen" bekommen hat.

Anhand der kalibrierten Kamera des autonomen Fahrzeuges wurde ein Video aufgenommen, welches so segmentiert werden soll, dass die Fahrbahnmarkierungen segmentiert und farbig erkenntlich gemacht werden.

Segmentierung mit Matlab

Das Video wurde bereits von einer anderen Gruppe in die Vogelperspektive transformiert. Damit das zu analysierende Video mit Matlab bearbeitet werden kann, muss dieses zuerst durch den Befehl VideoReader() eingelesen werden. Dabei werden der zugewiesenen Variable alle benötigten Informationen über das Video übergeben. Auf diese kann dann mit dem Punkt-Operator zugegriffen werden, wodurch unter Anderem die Auflösung und die gesamte Videolänge für die weitere Verarbeitung verwendet werden kann.

Damit möglichst viele Frames des Videos in Matlab wiedergegeben werden können, wird eine übergeordnete Schleife erstellt, welche alle 0,2 Sekunden ein Frame des Videos über die gesamte Länge bearbeitet und ausgibt. Da es sich bei dem Video jedoch um ein RGB-Video handelt, müssen diese Frames mit dem Befehl im2bw() zuerst in eine Binärdatei umgewandelt werden. Danach erhält man ein Bild bzw. eine Matrix, welche nur mit 1en oder 0en gefüllt ist und somit auf dem Bild nur schwarze oder weiße Pixel vorhanden sind. Damit das System nun auch erkennt, welche Pixel zu einem Segment gehören, wird der Befehl bwboundaries mit der Binärdatei als Eingabewert angewendet. Dadurch wird das Frame in seine einzelnen Segmente unterteilt und ebenfalls automatisch farbig gekennzeichnet. Zudem wurde auch das Signalwort 'noholes' übergeben, welches bewirkt, dass einzelne Pixel entfernt und dadurch Löcher ausgelöscht werden.

Die beiden darauf folgenden verschachtelten for-Schleifen dienen zur Erkennung der Segmente des linken, rechten und mittleren Fahrstreifens. Die äußere Schleife zählt in 5er-Schritten von 0 bis 40 hoch und die innere Schleife von 1 bis 70 in 1er-Schritten. Der Sinn dahinter ist, dass ein Anfangspunkt aus einem Frame gewählt bzw. geschätzt wird, wo das autonome Fahrzeug sich vermutlich ungefähr befindet. Darauf wird dann mit der inneren Schleife von dem Ausgangspunkt bis zu 70 Pixel nach rechts gesucht, bis ein Segment gefunden wird. Sollte keines gefunden werden, wird der Startpunkt mit der äußeren for-Schleife um 5 Pixel nach oben verschoben, von wo dann dieselbe Suche fortgeführt wird. Wird ein beliebiges Segment gefunden, wird es in diesem Fall als die rechte Spur identifiziert und der Farbwert, den dieses Segment besitzt, wird sich gemerkt und zwischengespeichert. Mit dieser Vorgehensweise werden ebenfalls die mittlere und linke Spur gesucht, wobei der einzige unterschied ist, dass diese andere Ausgangspunkte, ab denen gesucht werden, besitzen. Werden alle drei Farben der Segmente der jeweiligen Spuren ermittelt, werden diese beiden Schleifen frühzeitig durch einen break-Befehl beendet.

Mit der nächsten Schleife wird das segmentierte Bild so gefiltert, dass am Ende ein Bild entsteht, welches nur noch die Segmente der Fahrbahnmarkierung enthält. Hierbei wird jedes Pixel zeilenweise mit einer if-Bedingung mit den Farbwerten der gefundenen Spuren verglichen. Ist eine Übereinstimmung vorhanden, bleibt der Wert des Pixels weiter bestehen, gibt es jedoch keine Treffer, so wird es auf 0 und somit auch schwarz gesetzt.



→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2023/24 | SoSe23-Praktikum Systementwurf - Objekt- und Spurerkennung (OSE) mit Kamera