Kamerabildtransformation in Vogelperpektive: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
Zeile 3: Zeile 3:


== 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. Da es in diesem Artikel mehr um die reine Machbarkeit und ein Abwigen von Vor- und Nachteilen geht werden die technischen Aspekte etwas zurückgestellt.
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 ==
== Anforderungen an die Transformation ==
Zeile 9: Zeile 9:
* Das fertige C-Programm muss Echtzeitfähig auf dem PC des autonome Fahrzeug ausführbar sein
* 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)
* Es müssen sich Vorteile für die Spur- und Objekterkennung ergeben (z.B. einfacherer Erkennung von Stopplinien durch Draufsicht)
* Die Fusion von Lidar Daten und Kamera Daten muss vereinfacht werden
* Die Fusion von Lidar- und Kameradaten muss vereinfacht werden
* "Der Aufwand darf den Nutzen nicht übersteigen"
* "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 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 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. Ein Nachteil der Kamerabildtrafo ist z.B. das Höhenunterschiede das Kamerabild blockieren und durch Objekte nicht hindurch gesehen werden kann, diese Störungen wirken sich als Verzerrung im Ausgangsbild aus.
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 ==
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 Beispiel einfach und schnell zu realisieren war.  
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 erziehlte Ergebniss ist sehr anschaulich und dient als Benchmark für das, was später mit der OpenCv Bibliothek erreicht werden soll.
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.
Unter folgendem Link befindet sich eine ausführliche Erklärung der Matlab Funktion für die Bildtransformation.
Zeile 30: Zeile 30:
</gallery>
</gallery>


Es lässt sich erkennen, das die Transformation in Matlab sehr gut funktionie. Die Transformation in Matlab zu lösen ist momentan allerdings keine Option, da eine passende Schnittstelle zwischen VrMagic 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 mithilfe der UART Schnitstelle des PCs an die DSpace Karte übertragen.
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 der Hardware mittels der UART Schnittstelle beibehalten zu können, müsste die Perspektiven transformation 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.  
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:
Beispiel A:
Zeile 43: Zeile 43:


== 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 im Hinblick auf erkennen von Stopplinien 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.
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.
Als nächstes steht noch ein Gespräch mit den Professoren und den Teams an um zu entscheiden, wie weiter verfahren werden soll.

Aktuelle Version vom 3. August 2018, 21: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