Lückenbehandlung bei der Spurerkennung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 22: Zeile 22:
Die Anforderungen die Daten in einer Endlosschleife einzulesen wird durch den folgenden Quellcode erfüllt.
Die Anforderungen die Daten in einer Endlosschleife einzulesen wird durch den folgenden Quellcode erfüllt.
[[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]]
[[Datei:DSB2.png]]



Version vom 7. Juni 2014, 16:27 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

  1. Zeichnen Sie die Kamerasicht eines Rundkurses mit Fehlstellen auf.
  2. Lesen Sie diesen als Endlosschleife in Matlab ein.
  3. Optimieren Sie die Fahrspurerkennung, so dass Fehlstellen überbrückt werden.
  4. 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