SoSe24 - Praktikum Systementwurf - Spurerkennung mit Kamera (Modul OSE): Unterschied zwischen den Versionen
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 63: | Zeile 63: | ||
Um eine Kamera sinnvoll zur Spurerkennung einsetzen zu können, muss diese zuvor kalibriert werden. | Um eine Kamera sinnvoll zur Spurerkennung einsetzen zu können, muss diese zuvor kalibriert werden. | ||
# Studieren Sie die zugehörigen Wiki-Artikel und arbeiten Sie sich in die Camera Calibrator App von MATLAB<sup>®</sup> ein. | # Studieren Sie die zugehörigen Wiki-Artikel und arbeiten Sie sich in die Camera Calibrator App von MATLAB<sup>®</sup> ein. | ||
# | # Messen Sie die extrinsische und intrinsische Parameter der Kameras von Wagen 1 und 2 mit der [https://de.mathworks.com/help/vision/ref/cameracalibrator-app.html?searchHighlight=camera%20calibrator&s_tid=srchtitle_camera%20calibrator_1#responsive_offcanvas MATLAB<sup>®</sup> Camera Calibrator App]. | ||
# Identifizieren Sie extrinsische und intrinsische Parameter. | # Identifizieren Sie extrinsische und intrinsische Parameter. | ||
# Machen Sie ein Foto eines vermessenen Aufbaus. | # Machen Sie ein Foto eines vermessenen Aufbaus. | ||
# Transformieren Sie einen vermessenen Punkt von Weltkoordinaten in Bildkoordinaten | # Transformieren Sie einen vermessenen Punkt von Weltkoordinaten in Bildkoordinaten. | ||
# Machen Sie ein Foto mit der Kamera auf der Fahrbahn von der Startlinie aus (Geradeaus.jpg). | |||
# Machen Sie ein Foto mit der Kamera auf der Fahrbahn von der ersten Kurve aus (Linkskurve.jpg). | |||
# Entzerren Sie beide Fotos anhand Ihrer ermittelten k-Matrix mit dem MATLAB<sup>®</sup>-Skript <code>entzerreVideobild</code>. | |||
# Dokumentieren Sie Ihren Versuchsaufbau, die Durchführung und Ergebnisse. | # Dokumentieren Sie Ihren Versuchsaufbau, die Durchführung und Ergebnisse. | ||
'''Arbeitsergebnisse:''' | |||
* Extrinsische Kameraparameter: <math>[x,y,z]_C, \Phi, \Theta, \Psi</math> | |||
* Intrinsische Kameraparameter: k-Matrix | |||
* Eingangsdaten: Geradeaus.jpg, Linkskurve.jpg | |||
* MATLAB<sup>®</sup>-Skript <code>entzerreVideobild</code>, welches anhand der intrinsischen Kameraparameter die Bildentzerrung durchführt. | |||
* Versuchsprotokoll <code>Kamerakalibrierung.docx</code> | |||
'''Lernzielkontrollfragen:''' | |||
* Welche intrinsischen und extrinsischen Kameraparameter haben Wagen 1 und 2? | |||
* Welchen Region-of-Interest (ROI) haben die Kameras? | |||
* Wie ist der Zusammenhang zwischen Welt- und Bildkoordinaten? | |||
* Welchen Blindbereich in Fahrzeugkoordinaten haben Wagen 1 und 2 (<math>x_F</math>)? | |||
'''Links''' | '''Links''' | ||
* [[Kalibrierung_der_Kamera| HSHL-Wiki: Kalibrierung_der_Kamera]] | * [[Kalibrierung_der_Kamera| HSHL-Wiki: Kalibrierung_der_Kamera]] | ||
* [https://de.mathworks.com/help/vision/ref/cameracalibrator-app.html?searchHighlight=camera%20calibrator&s_tid=srchtitle_camera%20calibrator_1#responsive_offcanvas MATLAB<sup>®</sup> Camera Calibrator App] | * [https://de.mathworks.com/help/vision/ref/cameracalibrator-app.html?searchHighlight=camera%20calibrator&s_tid=srchtitle_camera%20calibrator_1#responsive_offcanvas MATLAB<sup>®</sup> Camera Calibrator App] | ||
*[[OSE:_Bildverarbeitung_mit_Spurerkennung]] | |||
---- | ---- | ||
=== Aufgabe 9.2: Segmentierung der Fahrbahnmarkierungen === | === Aufgabe 9.2: Segmentierung der Fahrbahnmarkierungen === | ||
Spurkandidaten F040.png | [[Datei:Spurkandidaten F040.png|200px|thumb|right|Abb. 3: Geradeausfahrt (Frame 40)]] | ||
[[Datei:Spurkandidaten | [[Datei:Spurkandidaten F160.png|200px|thumb|right|Abb. 4: leichte Linkskurve (Frame 160)]] | ||
[[Datei:Spurkandidaten F350.png|200px|thumb|right|Abb. 5: scharfe Linkskurve (Frame 350)]] | |||
[[Datei:Rundkurs IPT markiete Segmente.png|400px|thumb|right|Abb. 3: Segmentierung der Fahrspuren]] | [[Datei:Rundkurs IPT markiete Segmente.png|400px|thumb|right|Abb. 3: Segmentierung der Fahrspuren]] | ||
# Laden Sie das Bild <code>Spurkandidaten_F040.png</code>. | # Laden Sie das Bild <code>Spurkandidaten_F040.png</code> (vgl. Abb. ). | ||
# Segmentieren Sie aus dem Kantenbild die rechte Fahrbahnmarkierungen | # Segmentieren Sie aus dem Kantenbild die rechte Fahrbahnmarkierungen. Welche Algorithmen der Vorlesung "Digitale Signal und Bildverarbeitung" lassen sich anwenden? | ||
# Zeigen Sie das Segment farbig im Bild an. | |||
# Verifizieren Sie Ihren Segmentierungsalgorithmus mit den Bildern Spurkandidaten F160.png und Spurkandidaten F350.png. | |||
# Zeigen Sie | |||
# Verifizieren Sie Ihren Segmentierungsalgorithmus | |||
''' | '''Eingangsdateien:''' | ||
* [[Medium:Spurkandidaten F040.png]] | |||
* [[Medium:Spurkandidaten F160.png]] | |||
* [[Medium:Spurkandidaten F350.png]] | |||
'''Arbeitsergebnis:''' X-Y-Daten der | '''Arbeitsergebnis:''' Segmentierung der X-Y-Daten der rechten Fahrspuren für die unterschiedlichen Eingangsdateien mit dem Skript <code>segmentiereFahrbahnmarkierung.m</code>. | ||
---- | ---- | ||
Zeile 100: | Zeile 115: | ||
[[Datei:Rundkurs IPT Polynom.jpg|400px|thumb|right|Abb. 4: Darstellung der Fahrspuren als Polynom]] | [[Datei:Rundkurs IPT Polynom.jpg|400px|thumb|right|Abb. 4: Darstellung der Fahrspuren als Polynom]] | ||
# Bestimmen Sie für die | # Bestimmen Sie für die rechte Fahrbahnmarkierungen das Spurpolynome 2. Ordnung mit <code>polyfit</code>. | ||
# Ersetzen Sie <code>polyfit</code> durch die einfache Polynomapproximation <code>interpoliere_weg.m</code>. | # Ersetzen Sie <code>polyfit</code> durch die einfache Polynomapproximation <code>interpoliere_weg.m</code>. | ||
# Berechnen Sie aus dem Spurpolynom die | # Berechnen Sie aus dem Spurpolynom die rechte Fahrbahnmarkierungen. | ||
# Blenden Sie die | # Blenden Sie die rechte Fahrbahnmarkierungen im Videobild für die Bildframes 40, 160 und 350 ein. | ||
'''Demo:''' https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking | '''Demo:''' https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking | ||
'''Arbeitsergebnis''': Spurpolynome für | '''Arbeitsergebnis''': Spurpolynome für die Bildframes 40, 160 und 350, visuelle Überprüfung durch Einblendung in die Bilddateien <code>zeigeSpurpolynom.m</code> | ||
== Durchführung == | == Durchführung == | ||
Zeile 116: | Zeile 131: | ||
! # !! Thema !! Teilnehmer | ! # !! Thema !! Teilnehmer | ||
|- | |- | ||
| 1 | | | 1 || 9.4 Inverse Perspektiventransformation (IPT) || Daniel Block, Paul Janzen | ||
|- | |- | ||
| 2 | | | 2 || 9.5 Segmentierung der Fahrbahnmarkierungen || Dennis Fleer, Philipp Sander | ||
|- | |- | ||
| 3 | | | 3 || 9.6 Spurpolynom || Yunkai Lin, Xiangyao Liu, Yuhan Pan | ||
|} | |} | ||
=== Aufgabe 9.4 | === Aufgabe 9.4: Inverse Perspektiventransformation (IPT) === | ||
# Studieren Sie den Artikel zur [https://www.mathworks.com/help/driving/ref/birdseyeview.html Inversen Perspektiventransformation mit MATLAB®]. | # Studieren Sie den Artikel zur [https://www.mathworks.com/help/driving/ref/birdseyeview.html Inversen Perspektiventransformation mit MATLAB®]. | ||
# Beschreiben Sie die Eingangsparameter. Nutzen Sie die Parameter von Gruppe 1. | # Beschreiben Sie die Eingangsparameter. Nutzen Sie die Parameter von Gruppe 1. | ||
Zeile 158: | Zeile 152: | ||
* Transformiertes Video <code>Spurerkennung_IPT.mp4</code> | * Transformiertes Video <code>Spurerkennung_IPT.mp4</code> | ||
* Dokumentation im Wiki (Verlinken Sie hier Ihr Ergebnis.) | * Dokumentation im Wiki (Verlinken Sie hier Ihr Ergebnis.) | ||
---- | ---- | ||
=== Aufgaben 9. | === Aufgaben 9.5: Segmentierung der Fahrbahnmarkierungen === | ||
# Segmentieren Sie die Fahrspuren aus dem Video <code>Spurerkennung_IPT.mp4</code>. | # Segmentieren Sie die Fahrspuren aus dem Video <code>Spurerkennung_IPT.mp4</code>. | ||
# Segmentieren Sie aus dem | # Segmentieren Sie aus dem Binärbild die rechte Fahrbahnmarkierungen | ||
# Zeigen Sie dieses Segmente magentafarbend im Video an. | |||
# Zeigen Sie | |||
'''Eingangsdateien:''' <code>Spurerkennung_IPT.mp4</code> | '''Eingangsdateien:''' <code>Spurerkennung_IPT.mp4</code> | ||
'''Arbeitsergebnisse:''' | '''Arbeitsergebnisse:''' | ||
* X-Y-Daten der drei Fahrspuren für jeden Zyklus des Films <code>segmentiereFahrbahnmarkierung.m</code> als <code>Fahrbahnsegmente.mat</code> | * X-Y-Daten der drei Fahrspuren für jeden Zyklus des Films <code>segmentiereFahrbahnmarkierung.m</code> als <code>Fahrbahnsegmente.mat</code> | ||
---- | ---- | ||
=== Aufgaben 9. | === Aufgaben 9.6: Spurpolynom === | ||
# Bestimmen Sie für die drei Spuren die Spurpolynome 2. Ordnung mit <code>interpoliere_weg.m</code>. | # Bestimmen Sie für die drei Spuren die Spurpolynome 2. Ordnung mit <code>interpoliere_weg.m</code>. | ||
# Berechnen Sie aus dem Spurpolynom die drei Fahrspuren metrisch im Fahrzeugkoordinatensystem. | # Berechnen Sie aus dem Spurpolynom die drei Fahrspuren metrisch im Fahrzeugkoordinatensystem. | ||
Zeile 201: | Zeile 181: | ||
---- | ---- | ||
== Nützlicher Link == | == Nützlicher Link == |
Version vom 17. Juni 2024, 10:29 Uhr
![](/wiki/images/c/c1/PolynomVorKalman.gif)
Autor: | Prof. Dr.-Ing. Schneider |
Thema: | Spurerkennung mit Kamera (OSE) |
Workshoptermin 9: | 20.06.2024 |
Lernzielkontrolle 3: | 04.07.2024 |
Einleitung
Die Workshops im SDE Praktikum sollen die Studierenden das praktische Arbeiten in einem Mechatroniklabor im Bereich modellbasierte Entwicklung mit MATLAB/Simulink und DSpace Hardware DS1104/ControlDesk vermitteln. Der Umgang soll in der Selbstlernzeit geübt werden.
Im Projekt OSE werden Objekte mit dem LiDAR-Sensor erkannt und verarbeitet sowie die Fahrspur mit der Kamera. Dieser Workshop fokussiert die Spurerkennung sowie die Bildung und des Spurpolynoms.
Lernziele
Nach erfolgreicher Teilnahme am Workshop:
- können Sie die intrinsischen und extrinsischen Parameter einer Kamera bestimmen.
- können Sie eine Inverse Perspektiventransformation durchführen.
- können Sie Fahrbahnmarkierungen segmentieren.
- können Sie das Spurpolynom maßstabsgetreu bestimmen.
Bewertung
Die Bewertung erfolgt im Rahmen der Lernzielkontrolle 3.
Voraussetzungen
- Für den Workshop benötigen Sie MATLAB/Simulink in der Version 2019b.
- Studieren Sie die Praktikumsordnung.
- Die unter Vorbereitung aufgeführten Aufgaben sind vor dem Workshoptermin vorzubereiten. Der Workshop baut auf Ihre Vorbereitung auf.
Der Workshop setzt nachfolgende Kenntnisse voraus:
- die Grundlagen der Programmierung,
- der Umgang mit der Versionsverwaltung SVN und
- der Umgang mit MATLAB/Simulink.
- der Grundlagen der Digitalen Signal- und Bildverarbeitung:
- Lektion 2: Koordinatentransformationen
- Lektion 7: Kantenerkennung und Rauschunterdrückung
- Lektion 8: Datengetriebene Segmentierung
Ablauf des Praktikums
Uhrzeit | Agenda | Form |
---|---|---|
8:15 | Begrüßung | Moderation durch Marc Ebmeyer |
8:20 | Bearbeitung der Aufgaben (vgl. Tabelle 2) | Gruppenarbeit |
10:00 | Statusbericht der Teams | max. 5 Min. pro Team |
10:25 | Verabschiedung | Moderation durch Marc Ebmeyer |
10:30 Uhr | Veranstaltungsende |
Vorbereitung
Aufgabe 9.1: Vorbereitung der Kamera
![](/wiki/images/thumb/7/77/CameraCalibratorApp.jpg/400px-CameraCalibratorApp.jpg)
Um eine Kamera sinnvoll zur Spurerkennung einsetzen zu können, muss diese zuvor kalibriert werden.
- Studieren Sie die zugehörigen Wiki-Artikel und arbeiten Sie sich in die Camera Calibrator App von MATLAB® ein.
- Messen Sie die extrinsische und intrinsische Parameter der Kameras von Wagen 1 und 2 mit der MATLAB® Camera Calibrator App.
- Identifizieren Sie extrinsische und intrinsische Parameter.
- Machen Sie ein Foto eines vermessenen Aufbaus.
- Transformieren Sie einen vermessenen Punkt von Weltkoordinaten in Bildkoordinaten.
- Machen Sie ein Foto mit der Kamera auf der Fahrbahn von der Startlinie aus (Geradeaus.jpg).
- Machen Sie ein Foto mit der Kamera auf der Fahrbahn von der ersten Kurve aus (Linkskurve.jpg).
- Entzerren Sie beide Fotos anhand Ihrer ermittelten k-Matrix mit dem MATLAB®-Skript
entzerreVideobild
. - Dokumentieren Sie Ihren Versuchsaufbau, die Durchführung und Ergebnisse.
Arbeitsergebnisse:
- Extrinsische Kameraparameter:
- Intrinsische Kameraparameter: k-Matrix
- Eingangsdaten: Geradeaus.jpg, Linkskurve.jpg
- MATLAB®-Skript
entzerreVideobild
, welches anhand der intrinsischen Kameraparameter die Bildentzerrung durchführt. - Versuchsprotokoll
Kamerakalibrierung.docx
Lernzielkontrollfragen:
- Welche intrinsischen und extrinsischen Kameraparameter haben Wagen 1 und 2?
- Welchen Region-of-Interest (ROI) haben die Kameras?
- Wie ist der Zusammenhang zwischen Welt- und Bildkoordinaten?
- Welchen Blindbereich in Fahrzeugkoordinaten haben Wagen 1 und 2 ()?
Links
- HSHL-Wiki: Kalibrierung_der_Kamera
- MATLAB® Camera Calibrator App
- OSE:_Bildverarbeitung_mit_Spurerkennung
Aufgabe 9.2: Segmentierung der Fahrbahnmarkierungen
![](/wiki/images/thumb/6/67/Spurkandidaten_F040.png/200px-Spurkandidaten_F040.png)
![](/wiki/images/thumb/b/b5/Spurkandidaten_F160.png/200px-Spurkandidaten_F160.png)
![](/wiki/images/thumb/e/ef/Spurkandidaten_F350.png/200px-Spurkandidaten_F350.png)
![](/wiki/images/thumb/5/5a/Rundkurs_IPT_markiete_Segmente.png/400px-Rundkurs_IPT_markiete_Segmente.png)
- Laden Sie das Bild
Spurkandidaten_F040.png
(vgl. Abb. ). - Segmentieren Sie aus dem Kantenbild die rechte Fahrbahnmarkierungen. Welche Algorithmen der Vorlesung "Digitale Signal und Bildverarbeitung" lassen sich anwenden?
- Zeigen Sie das Segment farbig im Bild an.
- Verifizieren Sie Ihren Segmentierungsalgorithmus mit den Bildern Spurkandidaten F160.png und Spurkandidaten F350.png.
Eingangsdateien:
Arbeitsergebnis: Segmentierung der X-Y-Daten der rechten Fahrspuren für die unterschiedlichen Eingangsdateien mit dem Skript segmentiereFahrbahnmarkierung.m
.
Aufgabe 9.3: Spurpolynom
![](/wiki/images/thumb/6/6e/Rundkurs_IPT_Polynom.jpg/400px-Rundkurs_IPT_Polynom.jpg)
- Bestimmen Sie für die rechte Fahrbahnmarkierungen das Spurpolynome 2. Ordnung mit
polyfit
. - Ersetzen Sie
polyfit
durch die einfache Polynomapproximationinterpoliere_weg.m
. - Berechnen Sie aus dem Spurpolynom die rechte Fahrbahnmarkierungen.
- Blenden Sie die rechte Fahrbahnmarkierungen im Videobild für die Bildframes 40, 160 und 350 ein.
Demo: https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/Demos/Lane_Tracking
Arbeitsergebnis: Spurpolynome für die Bildframes 40, 160 und 350, visuelle Überprüfung durch Einblendung in die Bilddateien zeigeSpurpolynom.m
Durchführung
Themen der Teams
# | Thema | Teilnehmer |
---|---|---|
1 | 9.4 Inverse Perspektiventransformation (IPT) | Daniel Block, Paul Janzen |
2 | 9.5 Segmentierung der Fahrbahnmarkierungen | Dennis Fleer, Philipp Sander |
3 | 9.6 Spurpolynom | Yunkai Lin, Xiangyao Liu, Yuhan Pan |
Aufgabe 9.4: Inverse Perspektiventransformation (IPT)
- Studieren Sie den Artikel zur Inversen Perspektiventransformation mit MATLAB®.
- Beschreiben Sie die Eingangsparameter. Nutzen Sie die Parameter von Gruppe 1.
- Beschreiben Sie die Ausgangsparameter.
- Wenden Sie die IPT auf das Video
Rundkurs.mp4
an. - Bewerten Sie Ihr Ergebnis und aktualisieren Sie ggf. den Wiki-Artikel.
- Konvertieren Sie mittels IPT das Video
Spurerkennung.mpg
.
Eingangsdateien: SVN: Rundkurs.mp4, Spurerkennung.mp4
Arbeitsergebnisse:
- Versuchsprotokoll
InversePerspektiventransformation.docx
- Transformiertes Video
Spurerkennung_IPT.mp4
- Dokumentation im Wiki (Verlinken Sie hier Ihr Ergebnis.)
Aufgaben 9.5: Segmentierung der Fahrbahnmarkierungen
- Segmentieren Sie die Fahrspuren aus dem Video
Spurerkennung_IPT.mp4
. - Segmentieren Sie aus dem Binärbild die rechte Fahrbahnmarkierungen
- Zeigen Sie dieses Segmente magentafarbend im Video an.
Eingangsdateien: Spurerkennung_IPT.mp4
Arbeitsergebnisse:
- X-Y-Daten der drei Fahrspuren für jeden Zyklus des Films
segmentiereFahrbahnmarkierung.m
alsFahrbahnsegmente.mat
Aufgaben 9.6: Spurpolynom
- Bestimmen Sie für die drei Spuren die Spurpolynome 2. Ordnung mit
interpoliere_weg.m
. - Berechnen Sie aus dem Spurpolynom die drei Fahrspuren metrisch im Fahrzeugkoordinatensystem.
- Blenden Sie die drei Fahrspuren im Videobild ein.
Eingangsdateien: Spurerkennung_IPT.mp4
Arbeitsergebnisse:
- Spurpolynome für jeden Zyklus des Films, Visuelle Überprüfung durch Einblendung in das Video
zeigeSpurpolynom.m
- Versuchsprotokoll
Spurpolynom.docx
- Spurpolynom als
Spurpolynom.mat
- Dokumentation im Wiki (Verlinken Sie hier Ihr Ergebnis.)
Nützlicher Link
- Allgemeine Anforderungen an ein Versuchsprotokoll
- MATLAB®-Skript, welches die Messung in eine Auswertedatei umwandelt: funktion_wandle_dspacemess_in_CCF_mess.m
→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2024/25