Fahrspurassistent

Abstract:

Als primäre Aufgabe hat das Projekt „Fahrspurassistent“ eine rechnergestützte Auswertung von Linienmarkierungen auf der Straße zu implementieren. Das Erkennen von Fahrbahnmarkierungen in Kombination mit Lagebestimmung ermöglicht es, ungewollte Fahrstreifenwechsel zu erkennen und zu signalisieren. Dieses erfolgt in Form einer Windows-Forms Anwendung unter Verwendung einer handelsüblichen Webcam bzw. Camcorders.

 

Einleitung:

Da heutzutage immer mehr elektronische Systeme zur Unterstützung von Fahrverhalten, Steuerung oder Unterhaltung in ein Auto gebaut werden und zahlreiche Assistenten wie z.B. Abstandswarner, Einparkhilfen, Navigationssystem oder Regensensoren heute schon teilweise serienmäßig in Automobile eingebaut werden, entwickelte sich die Motivation einen weiteren Assistenten zu entwickeln, der ungewollte Fahrstreifenwechsel erkennt. Obwohl solch ein System bereits im Citröen C5 serienmäßig erhältlich ist, handelt es sich um eine relativ neue Technologie, welche noch nicht etabliert ist und noch mit Problemen zu kämpfen hat.

Die Idee, einen Fahrspurassistenten zu entwickeln, kam mit der Herausforderung mit handelsüblichen Kameras, Linienmarkierungen schnell und effizient zu erkennen und darauf zu reagieren, d.h. ohne teure embedded Systeme, Sensoren und Spezialhardware solch einen Assistenten umzusetzen.

 

 

Inhalt:

Projektidee:

Projektdurchführung:

Projektergebnisse:

Projektergebnisse:

 

Projektidee:

 

Die Kamera sollte in der Fahrgastzelle an einem geeigneten Platz angebracht sein, so dass das gewünschte Sichtfeld zur Auswertung herangezogen werden kann. Zunächst konzentriert sich die Bildauswertung auf die Linienmarkierung am Rand bzw. zwischen Fahrstreifen.

 

 

Aufgaben (umgesetzt):

 

Auswertung der Linienmarkierungen (Fahrstreifenbegrenzungen) zum Verhindern von ungewollten Richtungsänderungen und Fahrstreifenwechsel. Hinweise bei kritischen Richtungsänderungen

Text-to-Speech Engine für gesprochene Hinweise bei bestimmten Situationen

Auswertung der Linienmarkierung bei Nacht durch Infrarot Modus eines Camcorders

Erkennen von „Hindernissen“ bzw. vorausfahrende Fahrzeuge  - evtl. Abstandswarner

Geschwindigkeitsbestimmung

 

 

Projektdurchführung:

Technische Details:

Schematische Darstellung der technischen Installation:

 

Bei der Installation ist neben der Kamera auch ein serielles Kabel z.B. per Usb anzuschließen, welches die Signale vom Blinker mittels Phototransistor einfängt und überträgt. Weiterhin ist es empfehlenswert den Laptop direkt an die Audioeinrichtung des Autos anzuschließen mittels Adapter, da sich gezeigt hat, dass gewisse Kleinwagen bei hohen Geschwindigkeiten Fahrtgeräusche besonders laut im Innenraum zulassen.

 

 

Kamerapositionierung im Auto:

 

Da man im Gegensatz zu Autoherstellern nicht die Möglichkeit hat die Kamera beliebig anzubringen z.B. im Kühlergrill, auf dem Dach, sondern auf die Möglichkeiten im Auto zurückreifen muss, wurde hier eine Position direkt oberhalb von Tacho bzw. hinter dem Lenkrad gewählt, um eine möglichst freie Sicht auf die Straße zu erreichen (Das Bild zeigt nur eine mögliche Position, aber nicht die beschriebene).

 

 

 

 

Rohmaterial:

 

Dieses Material erhält man bei normaler Wahrnehmung durch eine Kamera. D.h. diese Bilder sind ungefiltert und es ist noch keine Bildaufbereitung erfolgt.

Landstraße:

Bei diesem Videoausschnitt ist die Fahrt auf einer Landstraße zu erkennen. Die Auswertung von Markierungen gestaltet sich hier schwieriger, da zum einen oftmals keine Markierungen auf diesen Strassen sind (so wie auch teilweise innerhalb von Ortschaften), und andererseits die Umgebung inhomogen ist, d.h. es befinden sich viele unterschiedliche Objekte am Straßenrand wie Häuser, Ampeln etc..

 

 

 

Autobahn:

Die Fahrt auf der Autobahn zeigt eine optimale Umgebung für die Erfassung von Linienmarkierungen. Die Fahrstreifenmarkierungen sind deutlich sowie vollständig und die Umgebung ist in den meisten Fällen homogen.

 

 

 

Infrarot bei Nacht:

Die Aufnahmen von einem Camcorder mit Infrarotunterstützung werden hier in diesem Video gezeigt. Ausgehend von diesen Bildern wird versucht eine Linienerkennung für die Nacht zu implementieren.

 

 

                       

 

Verschiedene Bildfilter:

Graufilter

Graufilter ermöglichen es die für die Linienerkennung redundanten Farbinformationen zu reduzieren.

 

Binärfilter

 

Kombination aus Graufilter und Schwellwertfilter ermöglicht es nur zwei Farben darzustellen, schwarz und weiß. Anhand der Sensibilisierung des Schwellwerts können so weiße Linien optimal aus dem Bild herausgearbeitet werden. Das Erkennen der Linien wird also deutlich vereinfacht.

 

 

Kantenerkennungsfilter

Diese Filter erkennen Kanten, also harte Farbwechsel bzw. Kontrastunterschiede.

Farbfilter:

 

Dieser Filter nimmt einen gewissen begrenzten Farbraum und verstärkt diese Farbwerte, so dass diese weiß werden. Alle anderen Farben werden als schwarz dargestellt.

 

 

 

 

 

Lösungsideen:

 

Lösungsidee 1

Durch Anwendung von Binärfiltern und Betrachtung eines bestimmten Bildbereichs können Fahrstreifenwechsel erkannt werden. Solange wie keine weiße Linie durch den mittleren unteren Abschnitt „wandert“ ist man auf der Spur. Wird jedoch eine weiße Linie in diesem Abschnitt erkannt, wird ein Signal ausgelöst.

 

Umsetzung der Lösungsidee

Wie bei der Idee angegeben wird hier nur ein geringer Bereich der Fahrbahn abgetastet. In diesem 40x40 Pixel großen Feld wird ein Farbfilter alle Linienähnlichen Farben verstärken und weiß darstellen und alles was nicht in diesen Farbbereich passt als Schwarz darstellen. Anschließend wird die Anzahl der weißen Pixel in jedem Frame ausgewertet. Messungen haben ergeben, dass ein erkannter Fahrstreifen etwa 180-280 weiße Pixel hat. Da teilweise durch Überblendungen und andere Sonneneinwirkungen auch Teile der Fahrbahn in den speziellen Farbbereich rutschen, ist an dieser Stelle eine grobe „Form“-Erkennung in Arbeit.

 

 

 

 

 

 

Lösungsidee 2

Verwendung einer Objekterkennung bzw. Kantenerkennung. Dabei wird der Mittelpunkt des erkannten Objektes berechnet und in Beziehung zum Gesamtbild gesetzt. Befindet sich das Objekt in einem Bereich, der mittig ist, wird ein Fahrstreifenwechsel erkannt und darauf reagiert.

Umsetzung der Lösungsidee

Bei dieser Lösung werden die Linien als Objekte erkannt. Dabei werden Rechtecke um die Objekte gezeichnet, deren Mittelpunkt ausgewertet wird. Befindet sich eine bestimmte Anzahl von Rechtecken im Abtastfeld, wird eine Warnung für einen Fahrstreifenwechsel erfolgen.

 

 

 

 

 

Projektergebnisse:

Prototyp des Fahrspurassistenten:

 

 

Bei dem Prototyp des Fahrspurassistenten handelt es sich um eine Weiterentwicklung des Open Source Programms „Motion“. Dabei wird die Rahmenapplikation verwendet, um über die Direct Show Schnittstelle Zugriff auf die Kamera zu bekommen. Weiterhin ist bereits eine umfangreiche Bibliothek an Bildfiltern und Operationen vorhanden, die verwendet werden kann.

Der Prototyp enthält bereits einen selbst implementierten Farbfilter sowie eine erweiterte Objekterkennung, welche die Positionen von erkannten Objekten auswertet.

Da sich die Objekterkennung als nicht zuverlässig herausgestellt hat, liegt der Fokus beim Prototyp eindeutig auf der Farbfilterlösung, welche in der jeweiligen Wettersituation zuverlässig arbeitet.

Weiterhin beinhaltet er auch die Verwendung der MsAgent Technologie zum Erzeugen eines Avatars, der mittels Text-to-Speech Engine auch gesprochene Hinweise geben kann. Die Applikation erhält also durch diesen Avatar mehr den Charakter eines Assistenten, ähnlich wie die Stimmen in Navigationssystemen.

Bei erkannten Fahrstreifenwechseln wird ein lauter Hinweiston gegeben sowie ein roter auffallender Rahmen um das Camera-Fenster gezeichnet. Der Assistent gibt darüber hinaus gesprochene Hinweise.

 

 

Probleme:

 

Gewollter Fahrspurwechsel:

Lösung:

Dem Programm signalisieren - durch Schalter am Blinker per Seriell-/Parallelportkabel abfragen

 

Unterschiedliche Wetterbedingungen

Lösung:

Verschiedene Wettersituationen einplanen und adaptive Farbfilter programmieren.

 

Schlechte Wetterbedingungen:

Lösung:

Spezielle Filter z.B. Helligkeit/Kontrast erhöhen

 

Schlechte Straßen/Markierungen

Lösung:

Wird nicht behandelt, da Assistent nur für Autobahn ab 80km/h gedacht ist.

 

Überblendungen/Gegenlichtkompensation:

Lösung:

Versuchen die Konturen der Striche zu erkennen.

 

Lautstärke im Auto:

Laptop am Radio anschließen und dieses als Verstärker nutzen.

 

Blinkerabfrage:

Per Phototransistor wird ein Signal ausgelöst beim per seriellem Kabel angeschlossenen Laptop.

 

 

 

Projektergebnisse:

 

Fazit:

Als Ergebnisse des Projektes kann man Folgendes festhalten. Die intuitive Herangehensweise an das Projekt leistet bis zu einem gewissen Grad gute Ergebnisse. Mit Hilfe von mehreren Presets für unterschiedliche Wettersituationen kann man Fahrspurwechsel sehr zuverlässig erkennen.

Für eine eventuelle Fortführung des Projektes muss man unbedingt folgende Punkte beachten:

Mindestens zwei Kameras im Auto installieren. Mit nur einer Kamera, die sich auf die Fahrspurmitte konzentriert, wird der Alarm bei einem Fahrspurwechsel erst ausgelöst, wenn die Linienmarkierung bereits halb überfahren ist.

Des Weiteren sollten die Kameras fest im Auto installiert sein, da man sonst immer nachregulieren muss, um den gleichen Blickbereich einzufangen.

Eine weitere Erkenntnis ist, dass man auf einfache Consumer Kameras verzichten sollte, da diese in Framerate, Auflösung und Qualität nicht überzeugen konnten.

Zuletzt sei noch erwähnt, dass die manuelle Preset Auswahl im Prototyp gänzlich ungeeignet beim Autofahren ist. Man müsste eine adaptive Filterwahl implementieren, welche abhängig von der Gesamthelligkeit des Bildes oder Teilbereichen das richtige Preset auswählt.

 

Eine alternative Möglichkeit an das Projekt heran zu gehen ist, vorhandene Graphikfilterbibliotheken zu verwenden und bekannte Verfahren zum Erkennen der Linien anzuwenden.

Möglich wären da Constraint-Filter, Störungsbeseitigungsfilter, Auswerten der Helligkeitsverteilung, Kantendetektion, Skelletierung, Bildsegmentierung, Mustererkennung sowie aus der Bewegtbildkodierung bekannte Verfahren (z.B. Mpeg, H.264) spatial redundancy reduction, motion vectors und prediction.

 

 

Ausblick:

Die Erweiterungsmöglichkeiten sind wie gesagt sehr groß. Erweitert werden kann die Applikation z.B. durch eine Objekterkennung (Abstandswarner), Geschwingkeitserfassung (Tempolimitkontrolle) oder adaptive „intelligente“ Filteranwendung.

Es ist auch möglich die Hardware zu optimieren und bessere Kameras mit höherer Framerate, Auflösung oder Bildverarbeitungshardware zu nutzen und besser ins Auto zu integrieren. Eine weitere Möglichkeit ist es den Pc durch ein Pda oder Handy zu ersetzen und deren eingebaute Kameras zu nutzen.

Langfristig werden solche Fahrassistenten in welcher Form auch immer serienmäßig in Automobilen zur Fahrsicherheit und Komfort beitragen.

 

 

 

 

Downloads:

Prototyp (binary)

Benötigt .Net 1.1

 

Prototyp (source)

Benötigt .Net 1.1 (C#)

 

     

Testvideo

Preset “Bewölkt” nehmen

 

 

 

Paper Ausarbeitung dieses Themas

     
     

 

 

Quellen:

 

http://www.rst-software.de/dbv/download.html

dbv_buch.html

„Bildverarbeitung in der Praxis“ R. Steinbrecher R. Oldenbourg Verlag, 1993
ISBN 3-486-22372-0

 

http://www.spiegel.de/auto/fahrberichte/0,1518,324239,00.html

Kritische Berichterstattung über vorhandenes System im C5

 

http://www.codeproject.com/cs/media/csharpgraphicfilters11.asp

Image Processing for Dummies with C# and GDI+ Part 1 - Per Pixel Filters

 

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp11152001.asp

Unsafe Image Processing

 

http://www.codeproject.com/cs/media/Motion_Detection.asp

Motion Detection mit Direct Show – Anwendung von verschiedenen Filtern

 

http://www.rauscher.de/Aktuelles/News/Matrox-Iris-P-Serie-Intelligente-Kameras/3/

Iris Kamera mit eingebauter Bildverarbeitungshardware

 

http://www.microsoft.com/msagent/

TTS-Engine und Avatare

Zuletzt aktualisiert: 23. Februar 2006 18:43

Zurück Nach oben Weiter