Lückenbehandlung bei der Spurerkennung: Unterschied zwischen den Versionen
Zeile 23: | Zeile 23: | ||
[[Datei:DSB1.png]] | [[Datei:DSB1.png]] | ||
Bei Start des Programms wird ein Zähler für die Frames initialisiert. Soll nicht am Anfang des Videos begonnen werden, kann durch das Ändern von Zeile 3 ein anderer Frame ausgewählt werden. Anschließend wird der Framename bestimmt und das Bild geladen bevor mit der Verarbeitung gestartet wird. Sofern das erste Element des Zählers niemals größer wird als 2, wird die Schleife immer weiter ausgeführt und mit dem folgenden Quelltext wird sichergestellt, dass das nicht geschieht. | Bei Start des Programms wird ein Zähler für die Frames initialisiert. Soll nicht am Anfang des Videos begonnen werden, kann durch das Ändern von Zeile 3 ein anderer Frame ausgewählt werden. Anschließend wird der Framename bestimmt und das Bild geladen bevor mit der Verarbeitung gestartet wird. Sofern das erste Element des Zählers niemals größer wird als 2, wird die Schleife immer weiter ausgeführt und mit dem folgenden Quelltext wird sichergestellt, dass das nicht geschieht. | ||
[[Datei:DSB2.png]] | |||
=== Fahrspurerkennung === | === Fahrspurerkennung === |
Version vom 7. Juni 2014, 16:26 Uhr
Autor: Tim Salinski
Betreuer: Prof. Schneider
Motivation
Der Rundkurs bei Carolo Cup weist zahlreiche Fehlstellen auf. Während dieser soll das Fahrzeug weiterhin in der korrekten Spur fahren.
Ziel
Korrekte Fahrspurerkennung trotz Fehlstellen.
Aufgabe
- Zeichnen Sie die Kamerasicht eines Rundkurses mit Fehlstellen auf.
- Lesen Sie diesen als Endlosschleife in Matlab ein.
- Optimieren Sie die Fahrspurerkennung, so dass Fehlstellen überbrückt werden.
- Optimieren Sie die Laufzeit des Algorithmus.
Lösung
Setup vor Ausführung
Das Verarbeiten von Videodateien ist in Matlab immer mit größerem Aufwand von Rechenzeit und Speicherplatz verbunden, da diese unkomprimiert große Matrizen füllen. Um dem etwas entgegenzuwirken existiert das Skript "DSB_Aufgabe_Setup". Damit ist es möglich das Video "Lueckenerkennung" in seine einzelnen Frames zu zerlegen und diese unter "Lueckenerkennung_Frames" zu speichern. Dabei erhalten die Frames durchnummerierte Names in der Form "Frame_0000", sodass sie im weiteren Verlauf einfach geladen werden können. Alle Frames zusammen verbrauchen zwar mehr Speicher als das Video selbst aber auf diese Weise kann bei der weiteren Verarbeitung Rechenzeit gespart werden, da eine Bilddatai schneller geladen werden kann als ein Frame aus der Videodatei. Unter echten Bedingungen würden solche Ladezeiten komplett entfallen, weil die Daten direkt von der Kamera verwendet werden können und nicht auf der Festplatte zwischengespeichert werden müssen.
Einlesen in Endlosschleife
Die Anforderungen die Daten in einer Endlosschleife einzulesen wird durch den folgenden Quellcode erfüllt. Bei Start des Programms wird ein Zähler für die Frames initialisiert. Soll nicht am Anfang des Videos begonnen werden, kann durch das Ändern von Zeile 3 ein anderer Frame ausgewählt werden. Anschließend wird der Framename bestimmt und das Bild geladen bevor mit der Verarbeitung gestartet wird. Sofern das erste Element des Zählers niemals größer wird als 2, wird die Schleife immer weiter ausgeführt und mit dem folgenden Quelltext wird sichergestellt, dass das nicht geschieht.
Fahrspurerkennung
Laufzeitbetrachtung
Siehe auch
Weblinks
Carolo Cup 2013 (TU Braunschweig)
→ zurück zum Hauptartikel: Digitale Signal- und Bildverarbeitung SoSe2014