Infoseite zu dem Bildverarbeitungspraktikum (Do 14 - 18 Uhr) im SoSe 2017
Ablauf des Praktikums:
Ziel des Praktikums ist die Entwicklung eines Spiels mit Hilfe der funktionalen Programmiersprache Racket sowie der Anbindung der VIGRA-Bildverarbeitungsbibliothek über die VigRacket-Schnittstelle. Das Spiel sollte hierbei aus einer Aufnahme des Spielzustands generiert werden, und anschließend Multi- oder Singleplayer-basiert weiter gespielt werden können. Insgesamt werden in diesem Praktikum folgende Kenntnisse vermittelt:
- Bildentstehung und Bildvorverarbeitung,
- Objekterkennung / Klassifikation von Bildinhalten,
- Bildverstehen,
- Interaktive, Netzwerkbasierte GUI-Programmierung und
- Künstliche Intelligenz (im Sinne der implementierten Spiellogik sowie mögl. Computergegner).
Die gewählten Teilprojekte sollen in Kleingruppen bearbeitet werden, die aus jeweils 2 bis 3 Personen bestehen.
Aufnahmen der Spielfelder vom 20. April 2017
Die Bilder der Spielfelder werden einige Minuten nach dem Abschluss der Aufnahmen hier zur Verfügung gestellt. Bitte verwendet direkt nach dem Laden der Bilder die VigRacket-Funktion resizeimage und verkleinert die hochauflösenden Bilder vor der weiteren Verarbeitung. Um ein Bild z.B. prozentual zu verkleinern, hilft folgende Hilfsfunktion:
(define (resizeimage-percent img prozent [interpolation 2]) (let* ((p (/ prozent 100)) (new_w (round (* (image-width img) p))) (new_h (round (* (image-height img) p)))) (resizeimage img new_w new_h interpolation)))Um ein Bild img sowohl in der Breite, als auch in der Höhe zu halbieren, kann dann folgender Aufruf dienen:
(define small_img (resizeimage-percent img 50))Und hier nun die Übersicht über die bereits verfügbaren Aufnahmen:
Gruppe | Spiel | Aufnahmen (zip-komprimiert) |
1 | Dame | download |
2 | Mensch ärgere dich nicht | download |
3 | Junior Labyrinth | download |
4 | Abalone | download |
5 | Dame | download |
6 | Go | download |
7 | Shogi | download Take 1 download Take 2 |
8 | Mühle | download |
9 | Lotti Karotti | download |
10 | Othello | download |
11 | Rummikub | download Take 1 download Take 2 |
12 | Mühle | download |
13 | Vier gewinnt | download |
Wichtige Termine (tabellarische Ansicht)
- 6. April 2017
- Vorstellung des Praktikums (Folien)
- Gruppen bilden und Thema aussuchen,
- Erste praktische Bildverarbeitungsübungen am Rechner (Installationsanleitung VigRacket, Minikurs BV - 1. Teil)
- 13. April 2017
- Weitere praktische Bildverarbeitungsübungen am Rechner (Minikurs BV - 2. Teil).
- Vorstellung der Projektgruppen und Themen untereinander.
- 20. April 2017
- Mitbringen der ausgewählten Spiele, Aufnahmen mit DSLR im Labor.
- Präsentation zur Freistellung von Bildinhalten.
- Racket-Code und Beispielbilder zur Freistellung von Bildinhalten.
- 27. April 2017
- Erneuter Seminarteil zur Freistellung von Bildinhalten.
- Präsentation zur Ordnung und Bildverarbeitung.
- Racket-Quellen zur obigen Präsentation.
- Beginn der Erstellung des Grobentwurfs/Pflichtenheftes.
- Weitere Experimente mit den aufgenommenen Bildern.
- 4. Mai 2017
Vorstellung und Abgabe des Grobentwurfs/Pflichtenheftes. Darin sollten folgende Punkte enthalten sein:- Das Team, also alle Mitglieder mit Namen und Matrikelnummern.
- Das Thema, mit dem ihr Euch beschäftigen wollt.
- Der Leistungsumfang der Software, die Ihr entwickeln möchtet.
- Rahmenbedinungen, die erfüllt sein müssen, damit das Programm erfolgreich arbeiten kann.
- 11. Mai 2017
Einführung in fortgeschrittene Bildverarbeitungsverfahren zur Erkennung und Klassifikation von Spielständen.
Downloads:- Vortragsfolien zur Klassifikation,
- Demos zur Klassifikation,
- IVC Skript für Gruppieren von Pixeln und die Hough-Transformation (ab Seite 443).
- 18. Mai 2017
- Einführung in die Versionsverwaltung mit dem IRZ GitLab.
- Einrichtung der Versionsverwaltung für alle Gruppen
- 25. Mai 2017 - Himmelfahrt
- 1. Juni 2017
Einführung in die verteilte GUI-Programmierung mit Racket- anhand des Client-Server-basierten TicTacToe-Beispiels (ttt.zip)
- anhand des Client-Server-basierten Memory-Beispiels (memory.zip)
- Unterscheidung zwischen Single- und Multiplayer.
- 8. Juni 2017 - Pfingstferien UHH
- 15. Juni 2017
Vorstellung des Zwischenstandes der Gruppen untereinander. Diese sollte folgendes umfassen:- Das Gruppenthema,
- die gewählten Lösungsansätze und
- die bisher entwickelten Software-Module.
- 22. Juni 2017
Abgabe des Feinentwurfes des Programms. Dieser sollte folgendes umfassen:- Die Schnittstellen,
- die Paketstruktur und
- die verschiedenen Module der Software.
- 13. Juli 2017 (letze Sitzung)
- Präsentation der Software auf dem vorläufigen endgültigen Stand
- bis spätestens 20. September 2017!
Endgültiger Praktikumsabschluss- Fertige Software liegt vor
- Abgabe der Entwickler- und Anwender-Handbücher
Benötigte Softwarepakete:
Racket
Das aktuelle Racket kann man unter http://racket-lang.org herunterladen. Es steht für nahezu jeden Betriebssystem bereit. Auf den Pool Rechnern ist zurzeit Racket 6.0 (64-bit) installiert.
Eine gelungene Einführung in die Programmiersprache findet sich unter der offiziellen Dokumentation, die auch in Racket unter Hilfe (F1) verfügbar ist.
Bildverarbeitung mit Racket: VigRacket
Die Bildverarbeitungsanbindung, mit der wir die Aufgaben der Bildverarbeitung innerhalb des Praktikums lösen werden, liegt in einer neuen Version 1.6 vor und kann hier heruntergeladen werden. Die Installation besteht im Entpacken des Verzeichnisses und dem Aufrufen/Ausführen der Datei "install.rkt" mit DrRacket. Nach der Installation kann man durch Aufruf der enthaltenen Beispiele "examples.rkt" die Funktionalität testen.
Wer Fehler an der VigRacket findet oder beim Entwickeln selbiger helfen möchte, kann das gerne tun. Die Bibliothek kann z.B. von meiner github-Seite gefork'd werden.
VigRacket unter Windows benutzen
Befolgt man folgende Schritte, so lässt sie die VigRacket-Erweiterung auch unter Windows mit der entsprechenden Windows-Version von Racket benutzen:
- Herunterladen und Installieren der MS Runtime 2015 (Download Link).
- Danach gleiche Vorgehensweise wie oben genannt.
VigRacket unter Linux/Unix benutzen
Befolgt man folgende Schritte, so lässt sie die VigRacket-Erweiterung auch unter Linux (z.B. Ubuntu) mit der entsprechenden Version von Racket benutzen:
- Herunterladen und Installieren VIGRA-Bibliothek (mindestens Version 1.11.0, entweder über den System-Paketmanager oder von der VIGRA-Homepage aus).
- Herunterladen und Entpacken der VigRacket-Anbindung (gleiches Paket für alle Betriebssysteme!).
- Danach, wie bei allen anderen Systemen, Ausführen der Datei "install.rkt" mit DrRacket.
VigRacket unter Mac OS X benutzen
Auf den Pool-iMacs ist die VIGRA bereits installiert, hier kann direkt das install.rkt Skript gestartet werden. Ansonsten empfehle ich, die aktuelle Version der vigra über die MacPorts (www.macports.org) zu installieren:
- Herunterladen und Installieren der MacPorts (https://www.macports.org/install.php).
- Im Terminal die Vigra und alle Abhängigkeiten installieren:
> sudo port install cmake
> sudo port install vigra
- Danach gleiche Vorgehensweise wie oben genannt.