Robotik Vorlesung 22.01.2007
Ein Roboter-Auto soll sich anhand der weissen Linien auf der Strasse lokalisieren.
Hierzu muss in den Bildern der Frontalkamera (
1,2,3,4,
5,6,7,
8,9,10,
11)
des Autos nach Linien gesucht werden. Das heisst, dass die weisse
durchgezogene Linie am rechten Strassenrand gefunden werden muss, sowie die gestrichelte Mittellinie.
Desweiteren soll das Roboter-Auto herausfinden, ob vor ihm die Strasse frei ist. Hierzu
muss die Strasse segmentiert werden.
a)
Linien-Teil 1: Benutze den Canny-Edge detector (entweder aus der opencv-library oder den in matlab eingebauten) um ein Kantenbild zu erzeugen. Adaptiere die Schwellenwerte per Hand, so dass die weissen Linien gut zu sehen sind und keine unerwuenschten Kanten erscheinen. Gib das Kantenbild als Schwarz-Weiss-Bild aus für eins der Bilder.
b)
Linien-Teil 2: Finde nun mithilfe des Kantenbildes und einer geeigneten Heuristik die weisse durchgezogene Linie am rechten Strassenrand und die gestrichelte Linie in der Mitte der Strasse. Die Ausgabe soll jeweils eine Liste von monoton in y steigenden Punkten sein, wobei die Punkte auf der durchgezogenen bzw. gestrichelten Linie liegen. Die Heuristik muss die selbe für alle Bilder sein. Gib für alle Bilder die Liste der Punkte als Plot aus.
c)
Strassensegmentierung - Teil 1: Implementiere einen flood-fill Algorithmus. Dieser nimmt als Eingabe einen Anfangspixel und einen Schwellenwert. Wende deinen Algorithmus an auf ein Bereich in einem der Strassenbilder und gib das Resultat als Bild aus.
d)
Strassensegmentierung - Teil 2: Definiere einen kleinen Bereich direkt vor dem Auto welches nur Strassenfarbe enthaellt. Berechne die mittlere Farbe und Standardabweichung des Bereiches und benutze dein flood-fill Algorithmus um die Strasse zu Segmentieren. Bestimme in allen Bildern wie viele freie Pixel es gibt bis zum nächsten Auto/Hindernis auf unser Spur.