Kamerabildtransformation in Vogelperpektive: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
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 | 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 | * 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 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 | 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 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 | 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"> | <gallery caption="Galerie zur Transformation mit Matlab" widths="200px" heights="200px" perrow="2"> | ||
Zeile 27: | Zeile 30: | ||
</gallery> | </gallery> | ||
Es lässt sich erkennen, | 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 | 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 40: | 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 | 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, 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.
-
Eingangsbild vor der Transformation
-
Eingangsbild transformiert
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