Simulationsumgebung für die Objekt- und Spurerkennung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 118: Zeile 118:
=== Programmablaufpläne für die Bildtransformation ===
=== Programmablaufpläne für die Bildtransformation ===


[[Datei:VP ImgTrans.png|right|mini|300px|Abb. 6: Funktion Bild transformieren]]
[[Datei:VP ImgTrans.png|right|mini|200px|Abb. 6: Funktion Bild transformieren]]


[[Datei:RegionOfInterest.png|right|mini|300px|Abb. 7: Funktion Region of Interest]]
Die Funktion VP_ImgTrans wird aus der main.c aufgerufen und beinhaltet die Transformation in Vogelperpektive.


[[Datei:Binarisierung.png|right|mini|300px|Abb. 8: Funktion Binärbild erstellen]]
Zu Beginn wird abgefragt, ob ein RGB-Farbvideo ausgegeben werden soll. Falls ja erfolgt die Ausgabe des Videos. Anschließend wird die Funktion Region of Interest aufgerufen, in der der Bildausschnitt angepasst wird. Anschließend erfolgt eine Binarisierung, um ein Schwarz-Weiß Bild zu erhalten. Im letzen Schritt erfolgt die eigentliche Transformation in Vogelperspektive.


[[Datei:ImageTransformation.png|right|mini|300px|Abb. 9: Funktion Transformation in Vogelperspektive]]
<onlyinclude><div style="clear:{{{{{|safesubst:}}}#switch:{{{1}}}
| links|left = left
| rechts|right = right
| #default = both
}};"></div></onlyinclude>
 
[[Datei:RegionOfInterest.png|right|mini|200px|Abb. 7: Funktion Region of Interest]]
 
<onlyinclude><div style="clear:{{{{{|safesubst:}}}#switch:{{{1}}}
| links|left = left
| rechts|right = right
| #default = both
}};"></div></onlyinclude>
 
[[Datei:Binarisierung.png|right|mini|200px|Abb. 8: Funktion Binärbild erstellen]]
 
<onlyinclude><div style="clear:{{{{{|safesubst:}}}#switch:{{{1}}}
| links|left = left
| rechts|right = right
| #default = both
}};"></div></onlyinclude>
 
[[Datei:ImageTransformation.png|right|mini|200px|Abb. 9: Funktion Transformation in Vogelperspektive]]


<onlyinclude><div style="clear:{{{{{|safesubst:}}}#switch:{{{1}}}
<onlyinclude><div style="clear:{{{{{|safesubst:}}}#switch:{{{1}}}

Version vom 2. Mai 2020, 11:30 Uhr

Autoren: Hagen Heuer, Tim Kruse, Marius Köhler, Stefan Arndt
Betreuer: Prof. Schneider


Einleitung

Autoren: Hagen Heuer, Tim Kruse
Um die Hauptnutzungszeit der Kamera für Funktionstests zu verringern, soll eine Simulationsumgebung in Visual Studio programmiert werden. Ziel ist es hierbei die Weiterverarbeitung der Bilder, welche die Kamera bereitstellt, zu implementieren und zu testen.

Es sollen hierbei folgende Funktionen der Bildverarbeitung implementiert und getestet werden.

  • Erstellung eines Binärbildes, um die Rechenleistung zu optimieren
  • Festlegen der Region of Interest, um die Rechenleistung weiter zu optimieren
  • Filterung von Reflektionen durch den Einfall von Licht
  • Transformation des Kamerabildes in Vogelperspektive, um die Objekt- und Spurerkennung zu vereinfachen

Anforderungen

Autoren: Hagen Heuer, Tim Kruse

Auf Basis der gestellten Anforderungen aus dem Lastenheft konnten folgende Pflichten für die Simulationsumgebung abgeleitet werden.

Abb. 1: Pflichtenheft
Abb. 2: Pflichtenheft

Um die Zusammenarbeit beider Teams zu vereinfachen wurden weitere Anforderungen an die Bildvorverarbeitung gestellt. Diese werden nachfolgend ausgelistet und erörtert.
Binärbild
Zur vereinfachten Objekt und Spurerkennung sollte das RGB-Farbbild in ein Binärbild gewandelt werden. Dieses stellt die Farben lediglich in Schwarz und Weiß dar. Somit sollen die Fahrbahnlinien in Weiß dargestellt werden und die Umgebung in Schwarz.

Reflektionen filtern
Zudem sollen Reflektionen nach Möglichkeit heraus gefiltert werden, da diese sonst auf Grund ihrer Helligkeit weiß dargestellt werden und somit die Objekt- und Spurerkennung beeinträchtigen können. Im Zweifelsfalls soll die Fahrspur unterbrochen werden, um Reflektionen sicher zu filtern.

Region of Interest anpassen
Um die benötigte Rechenleistung zu verringern, sollte zudem der gezeigte Bildausschnitt angepasst werden. Die Bedeutet, dass das Fahrzeug nicht mehr zu sehen sein soll und die Sicht in die Ferne eingeschränkt werden soll.

Transformartion in Vogelperspektive
Desweiteren sollen die einzelnen Bilder in Vogelperspektive transformiert werden und möglichst ohne Verzerrungen dargestellt werden.

Konzeptentwicklung

Autoren: Hagen Heuer, Tim Kruse
Die Programmierung der Simulationsumgebung erfolgt in Visual Studio 2019, da die bisherige Implementierung der Kamera ebenfalls in Visual Studio erfolgte. Zudem stellen die Bibliotheken von OpenCV Funktionen bereit, welche die Simulation der VRmagic Kamera vereinfachen.

Als Grundlage für die Simulation der VRmagic Kamera dient ein Video, welches die Strecke inklusive der Stopp-Kreuzungen beinhaltet. Zudem Berücksichtigt das Fahrzeug in dem Video die Anforderungen an das Verhalten an Stopp-Kreuzungen, welches der Spurerkennung zu gute kommt.

Da zwei Teams an der Simulationsumgebung arbeiten bietet es sich an, dass Programm modular aufzubauen. Die Programmstruktur ist nachfolgend erläutert.

  • main.cpp
    • Hauptprogramm der Simulationsumgebung
  • Frame_lesen.cpp und Frame_lesen.h
    • Einlesen des Videos
    • Frames aus dem Video extrahieren
  • Vogelperspektive.cpp und Vogelperspektive.h
    • Binärbild erstellen
    • Reflektionen filtern
    • Region of Interest anpassen
    • Transformation in Vogelperspektive
  • Frame_speichern.cpp und Frame_speichern.h
    • Frame speichern
    • Video ausgeben

Programmablaufpläne für die Simulationsumgebung

Autoren: Hagen Heuer, Tim Kruse
Um die Programmierung der Simulationsumgebung zu vereinfachen, wurden ein Programmablaufplan für das Hauptprogramm entwickelt. Zudem wurden Programmablaufpläne für die benötigten Funktionen entworfen.

Programmablaufplan für die main.c

Fehler beim Erstellen des Vorschaubildes: Datei mit Abmessungen größer als 12,5 MP
Abb. 1: Hauptprogramm für die Simulationsumgebung

Im Hauptprogramm werden zunächst alle Variablen initialisiert und Parameter an Funktionen übergeben. Anschließend wird in einer Schleife der nächste Frame geladen und die Transformation durchgeführt. Für den Fall, dass die Taste für den Abbruch gedrückt wird, wird das Programm beendet. Die While-Schleife wird so implementiert, dass sie sich nicht selbst beenden kann. Der Abbruch erfolgt durch aus der Schleife mittels while.

Programmablaufpläne für die Ausgabe

Abb. 2: Funktion Ausgabe initialisieren

In der Funktion FS_InitVideo werden die Ausgabefenster, welche bei Übergabe festgelegt wurden, geöffnet. In diesen Fenstern wird das später Video dargestellt. Der Funktionsaufruf mit Übergabe der Parameter erfolgt in der main.c

Abb. 3: Funktion Video ausgeben

In der Funktion FS_Ausgabe wird das Video im jeweiligen geöffneten Fenster ausgegeben.

Programmablaufpläne für das Lesen

Abb. 4: Funktion Video lesen

In der Funktion FL_Load wird das ausgewählte Video eingelesen. Für den Fall, dass das einlesen nicht erfolgreich war, wird ein Text ausgegeben und die Transformation abgebrochen.

Abb. 5: Funktion Frame aus Video

In der Funktion FL_GetFrame wird zunächst die Funktion FL_Load aufgerufen, wenn noch kein Video geladen wurde. Anschließend wird der nächste Frame des Videos geladen und in eine Matrix geschrieben. Falls der Frame nicht geladen werden konnte, erfolgt eine Textausgabe und das Programm wird beendet.

Programmablaufpläne für die Bildtransformation

Abb. 6: Funktion Bild transformieren

Die Funktion VP_ImgTrans wird aus der main.c aufgerufen und beinhaltet die Transformation in Vogelperpektive.

Zu Beginn wird abgefragt, ob ein RGB-Farbvideo ausgegeben werden soll. Falls ja erfolgt die Ausgabe des Videos. Anschließend wird die Funktion Region of Interest aufgerufen, in der der Bildausschnitt angepasst wird. Anschließend erfolgt eine Binarisierung, um ein Schwarz-Weiß Bild zu erhalten. Im letzen Schritt erfolgt die eigentliche Transformation in Vogelperspektive.

Abb. 7: Funktion Region of Interest
Abb. 8: Funktion Binärbild erstellen
Abb. 9: Funktion Transformation in Vogelperspektive




Zurück zum Hauptartikel:
OSE - Objekt - und Spurerkennung