Im Zuge dieses Projekts wurde ein Programm geschrieben, das durch Kantenerkennung die zu befahrende Spur ermittelt und den Kurvenradius sowie Abweichungen des Fahrzeugs zur Spurmitte abschätzt. Ein Video sowie eine genauere Beschreibung finden sich weiter unten.
Der erste Schritt besteht aus der Kamerakalibrierung. Hierfür wird die Bibliothek OpenCV genutzt. Die Kalibrierungsfunktion nutzt aufgenommene Fotos von Schachbrettern und gibt unter anderem die zur Kamera gehörige Kameramatrix und die Koeffizienten der Verzerrung aus. Mit diesen kann das Bild entzerrt werden.
Anschließend wird das Bild in den HLS Farbraum umgewandelt. Durch Nutzen des 3. Kanals („S“) erhält man ein Bild, bei dem besonders die gelbe Fahrbahnbegrenzung hervorsticht. Aus diesem wird unter Berücksichtigung von Schwellwerten mithilfe eins Sobel Filters ein Binärbild erstellt. Auf gleiche Weise wird aus dem ursprünglichen BGR Bild ein Binärbild erstellt. Beide Binärbilder werden kombiniert, um sowohl farbige als auch weiße Fahrstreifen zuverlässig zu erkennen.
Um dies zu erreichen, werden Punkte auf dem Binärbild gewählt, die nach einer perspektivischen Transformation ein neues Bild der Fahrbahn aus Vogelperspektive ergeben. Darauf aufbauend wird ein sliding window Ansatz verwendet. Nach Berechnung eines Histogramms erfolgt eine Unterteilung in linke und rechte Markierung. Für jede Spur werden die jeweiligen definierten Fenster untersucht, und sobald die Pixelanzahl ein definiertes Minimum überschreitet, werden diese Fenster gespeichert. Mithilfe dieser Pixel- und Numpys polyfit Funktion kann so ein Polynom zweiten Grades durch die Spurmarkierungen gelegt werden.
Das Binärbild mit eingezeichneten Fenstern kann wieder zurück transformiert und über das ursprüngliche Bild gelegt werden. Der Bereich zwischen dem Polynom der linken und dem der rechten Spur wird eingefärbt. Mittels dieser Polynome lassen sich außerdem der Radius der Kurve sowie die Abweichung des Egofahrzeugs von der Spurmitte abschätzen (unter der Annahme, dass die Kamera genau mittig im Egofahrzeug angebracht ist)