Kamerabildtransformation in Vogelperpektive: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Autor: John Kneib <br/>
Autor: [[Benutzer:John Kneib|John Kneib]] <br/>
Betreuer: [[Benutzer:Ulrich_Schneider| Prof. Schneider]], [[Benutzer:Mirekgoebel| Prof. Göbel]] <br/>
Betreuer: [[Benutzer:Ulrich_Schneider| Prof. Schneider]], [[Benutzer:Mirekgoebel| Prof. Göbel]] <br/>


Einleitung:
== Einleitung ==
In diesem Artikel soll beschrieben werden, wie es möglich ist die Livebilder der Kamera in die Vogelperspektive zu transformieren. Zusätzlich wird betrachtet, welche Vorteile sich ergeben und wie hoch der Arbeitsaufwand ist.
In diesem Artikel soll beschrieben werden, wie es möglich ist die Livebilder der Kamera in die Vogelperspektive zu transformieren. Zusätzlich wird betrachtet, welche Vorteile sich ergeben und wie hoch der Arbeitsaufwand ist. Da es in diesem Artikel mehr um die reine Machbarkeit und ein Abwiegen von Vor- und Nachteilen geht werden die technischen Aspekte etwas zurückgestellt.
 
== Anforderungen an die Transformation ==
Damit sich der Aufwand für die Transformation lohnt werden folgende Anforderungen gestellt:
* Das fertige C-Programm muss Echtzeitfähig auf dem PC des autonome Fahrzeug ausführbar sein
* Es müssen sich Vorteile für die Spur- und Objekterkennung ergeben (z.B. einfacherer Erkennung von Stopplinien durch Draufsicht)
* Die Fusion von Lidar- und Kameradaten muss vereinfacht werden
* "Der Aufwand darf den Nutzen nicht übersteigen"


== Gründe für die Transformation der Bilder ==
== Gründe für die Transformation der Bilder ==
Durch die Transformation der Bilder in die Vogelperspektive oder auch Birdseyeview ergeben sich verschiedene Vorteile. Durch die resultierende und immer gleiche Draufsicht auf das geschehene, lassen sich z.B. Fahrbahnmarkierungen einfacher und sicherer erkennen. Entfernungen z.B. von Stopplinien lassen sich nach einer Kamerakalibrierung sehr einfach ermitteln. Ein weiterer Vorteil ist, dass die Informationen vom Lidar auch alle in Koordinaten in "Draufsicht" vor liegen. Wenn die Position des Lidars im Kamerakoordinatensystem bekannt ist können die Daten des Lidars mit den Informationen der Kamera verschmolzen werden und genauere Messungen von z.B. Hindernissen statt finden.  
Durch die Transformation der Bilder in die Vogelperspektive oder auch Birdseyeview gennant, ergeben sich verschiedene Vorteile. Durch die resultierende und immer gleiche Draufsicht auf das Umfeld, lassen sich z.B. Fahrbahnmarkierungen einfacher und sicherer erkennen. Entfernungen z.B. von Stopplinien lassen sich nach einer Kamerakalibrierung sehr einfach ermitteln. Ein weiterer Vorteil ist, dass die Informationen vom Lidar auch in "Draufsicht" Koordinaten vorliegen. Wenn die Position des Lidars im Kamerakoordinatensystem bekannt ist können die Daten des Lidars mit den Informationen der Kamera abgeglichen werden und genauere Messungen von z.B. Hindernissen stattfinden. Ein Nachteil der Kamerabildtransformation ist das z.B. Höhenunterschiede das Kamerabild blockieren und durch Objekte nicht hindurch gesehen werden kann. Diese Störungen bilden sich als Verzerrung im Ausgangsbild aus.


== Umsetzung in Matlab ==
== Umsetzung in Matlab ==
In Matlab ist die Umsetzung sehr einfach durch einige vorgefertigte Befehle möglich bzw. eine Bibliothek. Hier soll auf die Matlab online Hilfe und das Beispiel für genauere Informationen verwiesen werden.  
Um ein Gefühl für das Verhalten der Transformation zu bekommen, wurde als erstes ein Ansatz in Matlab gewählt, da dieser mithilfe der zahlreichen Beispiele einfach und schnell zu realisieren war.
Das erzielte Ergebnis ist sehr anschaulich und dient als Benchmark für das, was später mit der OpenCV Bibliothek erreicht werden soll.
 
Unter folgendem Link befindet sich eine ausführliche Erklärung der Matlab Funktion für die Bildtransformation.
https://de.mathworks.com/help/driving/examples/visual-perception-using-monocular-camera.html
https://de.mathworks.com/help/driving/examples/visual-perception-using-monocular-camera.html
Nachdem Herr Menke freundlicherweise sein Matlab Skript zur Transformation von Kamera Bildern in die Vogelperspektive für das autnome Fahrzeug zur Verfügung gestellt hat, konnten die Aufnahmen transformiert werden.
<gallery caption="Galerie zur Transformation mit Matlab" widths="200px" heights="200px" perrow="2">
Datei:Eingangsbild vor Transformation.png|Eingangsbild vor der Transformation
Datei:Eingangsbild_in_Birdseyeview.png|Eingangsbild transformiert
</gallery>
Es lässt sich erkennen, dass die Transformation in Matlab sehr gut funktionierte. Die Transformation in Matlab zu lösen ist momentan allerdings keine Option, da eine passende Schnittstelle zwischen VR-Magic Kamera und DSpace Karte nicht existiert. Die momentane Verarbeitung der Kameradaten findet in einem eigenen C-Programm mithilfe der OpenCV Bibliothek statt. Die ermittelten Spurdaten werden dann mittels der UART Schnitstelle des PCs an die DSpace Karte übertragen.
== Umsetzung in OpenCV ==
== Umsetzung in OpenCV ==
Um die momentane Konfiguration zur Übertragung des Spurpolynoms mittels der UART Schnittstelle beibehalten zu können, muss die Perspektiventransformation in C gelöst werden. Für die Bildverabeitung in C/C++ bietet sich die Bibliothek OpenCV an. In dieser kann mittels "getPerspective()" eine Koordinatentransformation durchgeführt werden.
Beispiel A:
https://nikolasent.github.io/opencv/2017/05/07/Bird%27s-Eye-View-Transformation.html
Beispiel B:
https://stackoverflow.com/questions/48264861/birds-eye-view-opencv


== Transformation in Matlab Simulation bereits vorhanden ? ==


== Zusammenfassung und Ausblick ==
== Zusammenfassung und Ausblick ==
Da Matlab während des Fahrzeugbetriebs nicht ausgeführt wird und auch zu viele Hardware Ressourcen vebrauchen würde, wird die Transformation der Bilder über diesen Weg ausgeschlossen. In OpenCV kann die Transformation auch gelöst werden, allerdings müsste dann eine komplett neue Spurerkennung programmiert werden. Das arbeiten mit Bildern aus der Draufsicht in Hinblick auf erkennen von Stopp- und Spurlinien wäre allerdings um einiges einfacher und eleganter. Zusätzlich ist das Erkennen von Hindernissen und der Fusion mit den Lidar Daten einfacher.
Als nächstes steht noch ein Gespräch mit den Professoren und den Teams an um zu entscheiden, wie weiter verfahren werden soll.
----
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]]

Aktuelle Version vom 3. August 2018, 22:23 Uhr

Autor: John Kneib
Betreuer: Prof. Schneider, Prof. Göbel

Einleitung

In diesem Artikel soll beschrieben werden, wie es möglich ist die Livebilder der Kamera in die Vogelperspektive zu transformieren. Zusätzlich wird betrachtet, welche Vorteile sich ergeben und wie hoch der Arbeitsaufwand ist. Da es in diesem Artikel mehr um die reine Machbarkeit und ein Abwiegen von Vor- und Nachteilen geht werden die technischen Aspekte etwas zurückgestellt.

Anforderungen an die Transformation

Damit sich der Aufwand für die Transformation lohnt werden folgende Anforderungen gestellt:

  • Das fertige C-Programm muss Echtzeitfähig auf dem PC des autonome Fahrzeug ausführbar sein
  • Es müssen sich Vorteile für die Spur- und Objekterkennung ergeben (z.B. einfacherer Erkennung von Stopplinien durch Draufsicht)
  • Die Fusion von Lidar- und Kameradaten muss vereinfacht werden
  • "Der Aufwand darf den Nutzen nicht übersteigen"

Gründe für die Transformation der Bilder

Durch die Transformation der Bilder in die Vogelperspektive oder auch Birdseyeview gennant, ergeben sich verschiedene Vorteile. Durch die resultierende und immer gleiche Draufsicht auf das Umfeld, lassen sich z.B. Fahrbahnmarkierungen einfacher und sicherer erkennen. Entfernungen z.B. von Stopplinien lassen sich nach einer Kamerakalibrierung sehr einfach ermitteln. Ein weiterer Vorteil ist, dass die Informationen vom Lidar auch in "Draufsicht" Koordinaten vorliegen. Wenn die Position des Lidars im Kamerakoordinatensystem bekannt ist können die Daten des Lidars mit den Informationen der Kamera abgeglichen werden und genauere Messungen von z.B. Hindernissen stattfinden. Ein Nachteil der Kamerabildtransformation ist das z.B. Höhenunterschiede das Kamerabild blockieren und durch Objekte nicht hindurch gesehen werden kann. Diese Störungen bilden sich als Verzerrung im Ausgangsbild aus.

Umsetzung in Matlab

Um ein Gefühl für das Verhalten der Transformation zu bekommen, wurde als erstes ein Ansatz in Matlab gewählt, da dieser mithilfe der zahlreichen Beispiele einfach und schnell zu realisieren war. Das erzielte Ergebnis ist sehr anschaulich und dient als Benchmark für das, was später mit der OpenCV Bibliothek erreicht werden soll.

Unter folgendem Link befindet sich eine ausführliche Erklärung der Matlab Funktion für die Bildtransformation. https://de.mathworks.com/help/driving/examples/visual-perception-using-monocular-camera.html

Nachdem Herr Menke freundlicherweise sein Matlab Skript zur Transformation von Kamera Bildern in die Vogelperspektive für das autnome Fahrzeug zur Verfügung gestellt hat, konnten die Aufnahmen transformiert werden.

Es lässt sich erkennen, dass die Transformation in Matlab sehr gut funktionierte. Die Transformation in Matlab zu lösen ist momentan allerdings keine Option, da eine passende Schnittstelle zwischen VR-Magic Kamera und DSpace Karte nicht existiert. Die momentane Verarbeitung der Kameradaten findet in einem eigenen C-Programm mithilfe der OpenCV Bibliothek statt. Die ermittelten Spurdaten werden dann mittels der UART Schnitstelle des PCs an die DSpace Karte übertragen.

Umsetzung in OpenCV

Um die momentane Konfiguration zur Übertragung des Spurpolynoms mittels der UART Schnittstelle beibehalten zu können, muss die Perspektiventransformation in C gelöst werden. Für die Bildverabeitung in C/C++ bietet sich die Bibliothek OpenCV an. In dieser kann mittels "getPerspective()" eine Koordinatentransformation durchgeführt werden.

Beispiel A: https://nikolasent.github.io/opencv/2017/05/07/Bird%27s-Eye-View-Transformation.html

Beispiel B: https://stackoverflow.com/questions/48264861/birds-eye-view-opencv


Zusammenfassung und Ausblick

Da Matlab während des Fahrzeugbetriebs nicht ausgeführt wird und auch zu viele Hardware Ressourcen vebrauchen würde, wird die Transformation der Bilder über diesen Weg ausgeschlossen. In OpenCV kann die Transformation auch gelöst werden, allerdings müsste dann eine komplett neue Spurerkennung programmiert werden. Das arbeiten mit Bildern aus der Draufsicht in Hinblick auf erkennen von Stopp- und Spurlinien wäre allerdings um einiges einfacher und eleganter. Zusätzlich ist das Erkennen von Hindernissen und der Fusion mit den Lidar Daten einfacher.

Als nächstes steht noch ein Gespräch mit den Professoren und den Teams an um zu entscheiden, wie weiter verfahren werden soll.



→ zurück zum Hauptartikel: Praktikum SDE