Ampelphasenerkennung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 15: | Zeile 15: | ||
== Vorgehen == | == Vorgehen == | ||
Zu Beginn wurden mithilfe der von Matlab zur Verfügung gestellten App "Color Thresholder" Bildmasken entwickelt, die Ampelfarben anzeigen und den Hintergrund ausblenden sollten. Da die App gleich zu Beginn ein gewünschtes Beispielbild in den einzelnen Farbkanälen der Farbräume RGB, HSV, YCbCr und L*A*B* anzeigt, konnte an dieser Stelle gleich analysiert werden, welcher Farbraum sich am besten für die Erkennung der Ampelphasen eignet. Der HSV-Farbraum stellte sich dabei als am geeignetster heraus, da sich die Ampelfarben hier am deutlichsten in den einzelnen Kanälen hervorheben. Um den Hintergrund und die unrelevanten Bildbereiche zu entfernen, wurden in der Appplikation verschiedene Schwellwerte getestet. Den Einfluss dieser Schwellwerte für die jeweiligen Farbkanäle werden direkt am ausgewählten Beipsielbild visualisiert. Ist eine zufriedenstellende Maske gefunden, kann daraus eine Matlab-Funktion generiert werden. Diese Funktionen wurden für die Ampelfarben grün, gelb und rot erstellt. | === Erstellung von Farbmasken zur Ampelfarben-Erkennung === | ||
Zu Beginn wurden mithilfe der von Matlab zur Verfügung gestellten App "Color Thresholder" Bildmasken entwickelt, die Ampelfarben anzeigen und den Hintergrund ausblenden sollten. Da die App gleich zu Beginn ein gewünschtes Beispielbild in den einzelnen Farbkanälen der Farbräume RGB, HSV, YCbCr und L*A*B* anzeigt, konnte an dieser Stelle gleich analysiert werden, welcher Farbraum sich am besten für die Erkennung der Ampelphasen eignet. Der HSV-Farbraum stellte sich dabei als am geeignetster heraus, da sich die Ampelfarben hier am deutlichsten in den einzelnen Kanälen hervorheben. Um den Hintergrund und die unrelevanten Bildbereiche zu entfernen, wurden in der Appplikation verschiedene Schwellwerte getestet. Den Einfluss dieser Schwellwerte für die jeweiligen Farbkanäle werden direkt am ausgewählten Beipsielbild visualisiert. Ist eine zufriedenstellende Maske gefunden, kann daraus eine Matlab-Funktion generiert werden. Diese Funktionen wurden für die Ampelfarben grün, gelb und rot erstellt. Ein Aufruf der Funktion liefert die entsprechenden Bildbereiche als Binärbild und als Bild-Maske, in der die Farbinformationen erhalten bleiben. | |||
=== Bildbereinigung === | |||
Für die weitere Verarbeitung werden die einzelnen Binärbilder der Funktionen verwendet. Es werden geschlossene Strukturen ausgefüllt, da der hellste Bereich der Ampel meistens in der Mitte des Kreises liegt und bei eng gewählten Schwellwerten herausgefiltert werden. Da die drei Ampelscheiben immer rund sind, kann davon ausgegangen werden, dass das Ampelobjekt dennoch geschlossen ist und der Fehler damit ausgeglichen werden kann. | |||
Außerdem wird eine Mindestanzahl an zusammenhängenden Pixeln festgelegt. Wird diese Anzahl unterschritten, wird dieses Objekt ebenfalls aus dem Binärbild entfernt und kann ignoriert werden. Somit werden Objekte, die nah an den Schwellwerten liegen und in einzelnen Pixeln die Farbmaske passieren herausgefiltert. | |||
Als Resultat erhält man ein bereinigtes Binärbild, in dem sich ausschließlich größere Objekte der entsprechenden Farbe befinden. Bereits zu diesem Zeitpunkt kann davon ausgegangen werden, dass es sich bei dem Objekt um eine Ampel handelt. | |||
== Zusammenfassung == | == Zusammenfassung == |
Version vom 9. Juni 2016, 11:52 Uhr
Autor: Niklas Lingenauber
Betreuer: Prof. Schneider
Einleitung
Dieser Artikel wurde für die Übung des Kurses Digitale Signal- und Bildverarbeitung verfasst und dokumentiert die Ergebnisse des Projektes "Ampelphasenerkennung". Die allgemeinen Ziele der Projekte können im Wiki-Artikel DSB SoSe2016 eingesehen werden.
Aufgabenstellung
Die Aufgabe lautete eine Algorithmus zu implementieren, der aus einer aufgezeichenten Autofahrt erkennt, ob sich eine Ampel auf den einzelnen Frames befindet und welche Ampelphase diese zeigt. Das Video sollte mit einer an der Front des Autos angebrachten Kamera erstellt werden. Als Entwicklungsumgebung sollte Matlab verwendet werden.
Lösungsansatz
Zur Lösung der Aufgabe wurden zunächst Bildmasken entwickelt, die nur die Ampelfarben anzeigen und den Hintergrund ausblenden sollten.
Vorgehen
Erstellung von Farbmasken zur Ampelfarben-Erkennung
Zu Beginn wurden mithilfe der von Matlab zur Verfügung gestellten App "Color Thresholder" Bildmasken entwickelt, die Ampelfarben anzeigen und den Hintergrund ausblenden sollten. Da die App gleich zu Beginn ein gewünschtes Beispielbild in den einzelnen Farbkanälen der Farbräume RGB, HSV, YCbCr und L*A*B* anzeigt, konnte an dieser Stelle gleich analysiert werden, welcher Farbraum sich am besten für die Erkennung der Ampelphasen eignet. Der HSV-Farbraum stellte sich dabei als am geeignetster heraus, da sich die Ampelfarben hier am deutlichsten in den einzelnen Kanälen hervorheben. Um den Hintergrund und die unrelevanten Bildbereiche zu entfernen, wurden in der Appplikation verschiedene Schwellwerte getestet. Den Einfluss dieser Schwellwerte für die jeweiligen Farbkanäle werden direkt am ausgewählten Beipsielbild visualisiert. Ist eine zufriedenstellende Maske gefunden, kann daraus eine Matlab-Funktion generiert werden. Diese Funktionen wurden für die Ampelfarben grün, gelb und rot erstellt. Ein Aufruf der Funktion liefert die entsprechenden Bildbereiche als Binärbild und als Bild-Maske, in der die Farbinformationen erhalten bleiben.
Bildbereinigung
Für die weitere Verarbeitung werden die einzelnen Binärbilder der Funktionen verwendet. Es werden geschlossene Strukturen ausgefüllt, da der hellste Bereich der Ampel meistens in der Mitte des Kreises liegt und bei eng gewählten Schwellwerten herausgefiltert werden. Da die drei Ampelscheiben immer rund sind, kann davon ausgegangen werden, dass das Ampelobjekt dennoch geschlossen ist und der Fehler damit ausgeglichen werden kann. Außerdem wird eine Mindestanzahl an zusammenhängenden Pixeln festgelegt. Wird diese Anzahl unterschritten, wird dieses Objekt ebenfalls aus dem Binärbild entfernt und kann ignoriert werden. Somit werden Objekte, die nah an den Schwellwerten liegen und in einzelnen Pixeln die Farbmaske passieren herausgefiltert. Als Resultat erhält man ein bereinigtes Binärbild, in dem sich ausschließlich größere Objekte der entsprechenden Farbe befinden. Bereits zu diesem Zeitpunkt kann davon ausgegangen werden, dass es sich bei dem Objekt um eine Ampel handelt.
Zusammenfassung
Ausblick
Literaturverzeichnis
Korrektur/Rückmeldungen
Hier können Nutzer oder kritische Leser (meist Professoren) Verbesserungen fordern/vorschlagen.