DSB18: Start- und Stopplinienerkennung: Unterschied zwischen den Versionen
Zeile 19: | Zeile 19: | ||
== Lösungen == | == Lösungen == | ||
=== Einleitung === | |||
Im Sommersemester 2018 wird das Praktikum „Systementwurf“ durchgeführt. Gegenstand dieses Projekts ist ein autonomes Fahrzeug. Unter anderem soll dieses Fahrzeug selbstständig auf einem Rundkurs fahren. Neben der Erkennung der Fahrspur wird die Detektion von Stopplinien benötigt. Stopplinien sind beispielsweise in Kreuzungsbereichen vorhanden. An diesen soll das Auto gemäß der Straßenverkehrsordnung halten. Außerdem enthält der Rundkurs eine Startlinie, an welcher das Fahrzeug nicht halten soll. | |||
=== Implementierung === | |||
Die Stopplinienerkennung wird anhand eines vorhandenen Videos einer Fahrt auf dem Rundkurs in Form eines MATLAB-Skripts implementiert. | |||
==== Vorinitialisierungen ==== | |||
Zu Beginn der Bildverarbeitung werden einige Vorinitialisierungen durchgeführt. Zunächst wird das Command Window der MATLAB-Benutzeroberfläche geleert, alle geöffneten Figuren geschlossen und vorhandene Variablen gelöscht. Anschließend wird ein Region of Interest (ROI) definiert, der den für die Stopplinienerkennung relevanten Bildausschnitt beschreibt. Zuletzt wird eine Figur zur Darstellung verschiedener Ausgabebilder in einem Vollbildformat initialisiert. | |||
<syntaxhighlight lang="matlab" line='line'> | |||
clc,close all,clear varibales; % Command Window leeren, Figuren schließen, Variablen löschen | |||
%% Vorinitialisierungen | |||
% ROI (Region of interest) | |||
% [xmin ymin width height] | |||
roi = [216 225 320 100]; | |||
% Speicher für das Kantenbild in der Größe des ROI | |||
edgeFrame = zeros(roi(1,4),roi(1,3)); | |||
% Figur in Vollbild | |||
figure('units','normalized','outerposition',[0 0 1 1]); | |||
hold on; | |||
</syntaxhighlight> | |||
==== Einlesen des Videos ==== | |||
Zunächst wird die Videoaufnahme der Fahrt eingelesen. Dazu wird ein VideoReader-Objekt erzeugt. Das Video soll endlos abgespielt werden. Dazu wird innerhalb einer Endlosschleife zu Beginn überprüft, ob die Aufnahme noch unverarbeitete Einzelbilder (Frames) besitzt. Ist dies nicht der Fall, ist das Ende des Videos erreicht und die Abspielzeit wird auf den Beginn zurückgesetzt. | |||
<syntaxhighlight lang="matlab" line='line'> | |||
%% Video einlesen und einzelne Bilder verarbeiten | |||
video = VideoReader('Rundkurs.mp4'); % Das Video muss sich im gleichen Ordner wie dieses Programm befinden. | |||
% Einlesen des Videos in einer Endlosschleife | |||
while true | |||
if ~video.hasFrame | |||
video.CurrentTime = 0.0; | |||
disp('Restart Video'); | |||
end | |||
</syntaxhighlight> | |||
Erkennung der Stopplienen | |||
Um die Stopplinienerkennung durchzuführen wird aus der eingelesenen Videodatei ein Einzelbild entnommen. Dieses Bild wird innerhalb der vorinitialisierten Figur in Form eines Subplots dargestellt. | |||
<syntaxhighlight lang="matlab" line='line'> | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="matlab" line='line'> | |||
</syntaxhighlight> | |||
== Weblinks == | == Weblinks == |
Version vom 3. Juli 2018, 10:13 Uhr
Autor:
Betreuer: Prof. Schneider
Motivation
Eine Aufgabe beim Carolo Cup ist der "Rundkurs mit Hindernissen". Hierbei ist eine Startlinie zu überfahren und an einer Stopplinie zu halten.
Ziel
Die Start- und Stoppline soll robust erkannt und unterschieden werden.
Anforderungen
- Nutzen Sie die bestehende Aufzeichnung der Kameransicht eines Rundkurses.
- Lesen Sie diesen als Endlosschleife in Matlab ein.
- Identifizieren Sie während der virtuellen Fahrt Start- und Stopplinien mit Matlab.
- Vermeiden Sie Fehler ("false-positives").
- Optimieren Sie die Rechenzeit Ihres Algorithmus.
- Wissenschaftliche Dokumentation als HSHL-Wiki Artikel
- Softwareentwicklung nach SDE Standard in SVN
- Funktionsnachweis als YouTube-Video (vgl. Veranstaltungsregeln)
Lösungen
Einleitung
Im Sommersemester 2018 wird das Praktikum „Systementwurf“ durchgeführt. Gegenstand dieses Projekts ist ein autonomes Fahrzeug. Unter anderem soll dieses Fahrzeug selbstständig auf einem Rundkurs fahren. Neben der Erkennung der Fahrspur wird die Detektion von Stopplinien benötigt. Stopplinien sind beispielsweise in Kreuzungsbereichen vorhanden. An diesen soll das Auto gemäß der Straßenverkehrsordnung halten. Außerdem enthält der Rundkurs eine Startlinie, an welcher das Fahrzeug nicht halten soll.
Implementierung
Die Stopplinienerkennung wird anhand eines vorhandenen Videos einer Fahrt auf dem Rundkurs in Form eines MATLAB-Skripts implementiert.
Vorinitialisierungen
Zu Beginn der Bildverarbeitung werden einige Vorinitialisierungen durchgeführt. Zunächst wird das Command Window der MATLAB-Benutzeroberfläche geleert, alle geöffneten Figuren geschlossen und vorhandene Variablen gelöscht. Anschließend wird ein Region of Interest (ROI) definiert, der den für die Stopplinienerkennung relevanten Bildausschnitt beschreibt. Zuletzt wird eine Figur zur Darstellung verschiedener Ausgabebilder in einem Vollbildformat initialisiert.
clc,close all,clear varibales; % Command Window leeren, Figuren schließen, Variablen löschen
%% Vorinitialisierungen
% ROI (Region of interest)
% [xmin ymin width height]
roi = [216 225 320 100];
% Speicher für das Kantenbild in der Größe des ROI
edgeFrame = zeros(roi(1,4),roi(1,3));
% Figur in Vollbild
figure('units','normalized','outerposition',[0 0 1 1]);
hold on;
Einlesen des Videos
Zunächst wird die Videoaufnahme der Fahrt eingelesen. Dazu wird ein VideoReader-Objekt erzeugt. Das Video soll endlos abgespielt werden. Dazu wird innerhalb einer Endlosschleife zu Beginn überprüft, ob die Aufnahme noch unverarbeitete Einzelbilder (Frames) besitzt. Ist dies nicht der Fall, ist das Ende des Videos erreicht und die Abspielzeit wird auf den Beginn zurückgesetzt.
%% Video einlesen und einzelne Bilder verarbeiten
video = VideoReader('Rundkurs.mp4'); % Das Video muss sich im gleichen Ordner wie dieses Programm befinden.
% Einlesen des Videos in einer Endlosschleife
while true
if ~video.hasFrame
video.CurrentTime = 0.0;
disp('Restart Video');
end
Erkennung der Stopplienen Um die Stopplinienerkennung durchzuführen wird aus der eingelesenen Videodatei ein Einzelbild entnommen. Dieses Bild wird innerhalb der vorinitialisierten Figur in Form eines Subplots dargestellt.
Weblinks
BSD-Lizenzbedingung BSD-Lizenz
Copyright (c) 2014, Hochschule Hamm-Lippstadt, Dep. Lip. 1, Prof. Schneider
Hochschule Hamm-Lippstadt. Alle Rechte vorbehalten.
→ zurück zum Hauptartikel: Digitale Signal- und Bildverarbeitung SoSe2018