Labyrinth Lösungsalgorithmus II: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 11: Zeile 11:


= Durchführung =
= Durchführung =
Der verwendete Algorithmus basiert darauf, dass ein Labyrinth immer mindestens aus zwei Wänden bestehen muss. Berührt man zum Beispiel dauerhaft mit der rechten Hand die Wand, welche rechts von einem liegt und folgt dieser, dann erreicht man so in einem klassischen Labyrinth den Ausgang. Gleiches gilt ebenfalls für die linke Seite, sodass diese beiden Wände die Hauptwände des Labyrinths darstellen. Diese gilt es zu ermitteln. Wenn sie extrahiert wurden, kann der Weg zwischen den beiden Hauptwänden, welcher genau den Lösungsweg durch das Labyrinth symbolisiert, mithilfe von morphologischen Operationen bestimmt werden. Dazu wird eine der beiden Wände solange dilatiert, bis sich diese Wand mit der zweiten Wand überlappt, sodass um die gesamte Breite des Ganges zwischen den beiden Wänden dilatiert wurde. Wenn das geschehen ist,  werden zunächst Löcher innerhalb des dilatierten Gebietes aufgefüllt und anschließend die Wand wieder erodiert. Die Differenz zwischen dem aufgefüllten und dem erodierten Gebiet spiegelt dabei genau den gesuchten und kürzesten Weg durch das Labyrinth wieder.
Um diesen Algorithmus mithilfe des Programms MATLAB zu implementieren, wird wie folgt vorgegangen:
* Bild einlesen und in Grauwertbild umwandeln
* Bild in Binärbild konvertieren und invertieren
* Unterschiedliche Regionen ermitteln
* Hauptwände des Labyrinths ermitteln
* Weg zwischen Hauptwände mithilfe von morphologischen Operationen ermitteln
== Umwandlung in Grauwertbild ==
/
== Konvertierung in Binärbild ==
/
== Ermittlung der Regionen ==
/
== Ermittlung der Wände des Labyrinths ==
/
== Ermittlung des Weges zwischen Wänden ==


/
/
Zeile 16: Zeile 45:
= Dokumentation =
= Dokumentation =


/
Link zu Youtube-Video


= Fazit und Ausblick =
= Fazit und Ausblick =
Zeile 87: Zeile 116:
= Literatur =
= Literatur =


/
* Tönnies, Klaus D.: Grundlagen der Bildverarbeitung. München: Pearson Studium, 2005.


→ zurück zum Hauptartikel: [[DSB SoSe2016|DSB SoSe2016]]
→ zurück zum Hauptartikel: [[DSB SoSe2016|DSB SoSe2016]]

Version vom 14. Juni 2016, 09:44 Uhr

Autoren: Marcus Irmer
Betreuer: Prof. Schneider

Einleitung

Dieser Artikel wurde im Rahmen der Lehrveranstaltung Digitale Signal- und Bildverarbeitung verfasst und dokumentiert die Ergebnisse des Projektes "Labyrinth Lösungsalgorithmus II". Die allgemeinen Ziele der Projekte können im Wiki-Artikel DSB SoSe2016 eingesehen werden.

Aufgabenstellung

Aufgabenstellung ist es, einen Algorithmus zu implementieren, der es ermöglicht, ein Bild einzulesen, auf welchem ein klassisches Labyrinth zu sehen ist. Das Labyrinth besitzt einen Eingang und einen Ausgang. Die Wände des Labyrinths sind durch dunkle Striche auf einem hellen Untergrund Symbolisiert (siehe Abbildung: ABBILDUNG EINFFÜGEN). Das Foto wird daraufhin nach den Algorithmen der Bildverarbeitung formatiert, sodass das Labyrinth auf dem Foto gefunden, entzerrt und extrahiert werden kann. Zur Lösung der Aufgabenstellung wird das Programm MATLAB benutzt.

Durchführung

Der verwendete Algorithmus basiert darauf, dass ein Labyrinth immer mindestens aus zwei Wänden bestehen muss. Berührt man zum Beispiel dauerhaft mit der rechten Hand die Wand, welche rechts von einem liegt und folgt dieser, dann erreicht man so in einem klassischen Labyrinth den Ausgang. Gleiches gilt ebenfalls für die linke Seite, sodass diese beiden Wände die Hauptwände des Labyrinths darstellen. Diese gilt es zu ermitteln. Wenn sie extrahiert wurden, kann der Weg zwischen den beiden Hauptwänden, welcher genau den Lösungsweg durch das Labyrinth symbolisiert, mithilfe von morphologischen Operationen bestimmt werden. Dazu wird eine der beiden Wände solange dilatiert, bis sich diese Wand mit der zweiten Wand überlappt, sodass um die gesamte Breite des Ganges zwischen den beiden Wänden dilatiert wurde. Wenn das geschehen ist, werden zunächst Löcher innerhalb des dilatierten Gebietes aufgefüllt und anschließend die Wand wieder erodiert. Die Differenz zwischen dem aufgefüllten und dem erodierten Gebiet spiegelt dabei genau den gesuchten und kürzesten Weg durch das Labyrinth wieder.

Um diesen Algorithmus mithilfe des Programms MATLAB zu implementieren, wird wie folgt vorgegangen:

  • Bild einlesen und in Grauwertbild umwandeln
  • Bild in Binärbild konvertieren und invertieren
  • Unterschiedliche Regionen ermitteln
  • Hauptwände des Labyrinths ermitteln
  • Weg zwischen Hauptwände mithilfe von morphologischen Operationen ermitteln

Umwandlung in Grauwertbild

/

Konvertierung in Binärbild

/

Ermittlung der Regionen

/

Ermittlung der Wände des Labyrinths

/

Ermittlung des Weges zwischen Wänden

/

Dokumentation

Link zu Youtube-Video

Fazit und Ausblick

/

Weiterführende Informationen zu den benutzten MATLAB-Funktionen

Funktionsnamen Hyperlink
bwareaopen http://de.mathworks.com/help/matlab/ref/bwareaopen.html]
bwlabel http://de.mathworks.com/help/matlab/ref/bwlabel.html]
cat http://de.mathworks.com/help/matlab/ref/cat.html]
cd http://de.mathworks.com/help/matlab/ref/cd.html]
clc http://de.mathworks.com/help/matlab/ref/clc.html]
clear http://de.mathworks.com/help/matlab/ref/clear.html]
close http://de.mathworks.com/help/matlab/ref/close.html]
disp http://de.mathworks.com/help/matlab/ref/disp.html]
getrect http://de.mathworks.com/help/matlab/ref/getrect.html]
imclearborder http://de.mathworks.com/help/matlab/ref/imclearborder.html]
imdilate http://de.mathworks.com/help/matlab/ref/imdilate.html]
imerode http://de.mathworks.com/help/matlab/ref/imerode.html]
imfill http://de.mathworks.com/help/matlab/ref/imfill.html]
imread http://de.mathworks.com/help/matlab/ref/imread.html]
imshow http://de.mathworks.com/help/matlab/ref/imshow.html]
islogical http://de.mathworks.com/help/matlab/ref/islogical.html]
label2rgb http://de.mathworks.com/help/matlab/ref/label2rgb.html]
logical http://de.mathworks.com/help/matlab/ref/logical.html]
msgbox http://de.mathworks.com/help/matlab/ref/msgbox.html]
ones http://de.mathworks.com/help/matlab/ref/ones.html]
round http://de.mathworks.com/help/matlab/ref/round.html]
size http://de.mathworks.com/help/matlab/ref/size.html]
sprintf http://de.mathworks.com/help/matlab/ref/sprintf.html]
subplot http://de.mathworks.com/help/matlab/ref/subplot.html]
title http://de.mathworks.com/help/matlab/ref/title.html]
uigetfile http://de.mathworks.com/help/matlab/ref/uigetfile.html]
uint8 http://de.mathworks.com/help/matlab/ref/uint8.html]

Aufruf am 13.06.16

Literatur

  • Tönnies, Klaus D.: Grundlagen der Bildverarbeitung. München: Pearson Studium, 2005.

→ zurück zum Hauptartikel: DSB SoSe2016