MIN-Faculty
Department of Informatics
Scene analysis and visualization (SAV)

Infoseite zu dem Bildverarbeitungspraktikum (Do 14 - 18 Uhr) im SoSe 2015

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.

Wichtige Termine (tabellarische Ansicht)

  • 2. April 2014
  • 9. April 2014
    • Weitere praktische Bildverarbeitungsübungen am Rechner (Minikurs BV - 2. Teil).
    • Vorstellung der Projektgruppen und Themen untereinander.
  • 16. April 2014
  • 23. April 2014
    Weitere Experimente mit den aufgenommenen Bildern. Hilfreiche Materialien hierzu:
  • 30. April 2014
    Vorstellung und Abgabe des Grobentwurfs und des Pflichtenheftes. Darin sollten folgende Punkte enthalten sein:
    1. Das Team, also alle Mitglieder mit Namen und Matrikelnummern.
    2. Das Thema, mit dem ihr Euch beschäftigen wollt.
    3. Der Leistungsumfang der Software, die Ihr entwickeln möchtet.
    4. Rahmenbedinungen, die erfüllt sein müssen, damit das Programm erfolgreich arbeiten kann.
  • 7. Mai 2014
    • Einführung in die Versionsverwaltung mit SVN (Folien, Handout).
    • Einrichtung der Versionsverwaltung für alle Gruppen
  • 14. Mai 2014 - Himmelfahrt
  • 21. Mai 2014
    • Einführung in die verteilte GUI-Programmierung mit Racket
      anhand des Client-Server-basierten TicTacToe-Beispiels (universe-ttt.rkt, world-ttt.rkt)
    • Unterscheidung zwischen Single- und Multiplayer.
    • Nachtrag 1: Hier ein TicTacToe-Beispiel, das direkt die TCP-Schnittstelle von Racket benutzt, also ohne das World/Universe-Paket auskommt. Diese Demo besitzt zur Zeit allerdings auch noch keine GUI...
      Der TCP-Server: tcp-server-ttt.rkt und der TCP-Client: tcp-client-ttt.rkt
    • Nachtrag 2: Falls ihr eine eigene GUI um die "World" mit den Widgets von DrRacket brauen wollt, so rate ich erst einmal davon ab. Wer es dennoch probieren möchte, kann wir folgt vorgehen:
      1. Arbeitet euch in die benötigten Module racket/gui und racket/class ein.
      2. Erzeugt euch eine lokale Kopie des Ordners "DrRacket/share/pkgs/htdp-lib/2htdp" im collects-Verzeichnis von Racket, z.B. "DrRacket/collects/my2htdp"
      3. Öffnet die Datei "DrRacket/collects/my2htdp/private/world.rkt"
      4. Ab Zeile 199 wird die GUI zu einer World erzeugt. Hier könnt ihr entweder eure Änderungen einarbeiten, oder aber von der Klasse world% erben und die Methode (create-frame) überladen. Schaut euch hierzu auch die bereits definierte Klasse aworld% an.
      5. Für den Fall einer Spezialisierung, z.B. als Klasse bworld%, muss diese noch in "DrRacket/collects/my2htdp/private/world.rkt" provided werden und in "DrRacket/collects/my2htdp/universe.rkt" in Zeile 271 ergänzt werden.
  • 28. Mai 2014 - Pfingstferien UHH
  • 11. Juni 2014
    Vorstellung des Zwischenstandes der Gruppen untereinander. Diese sollte folgendes umfassen:
    • Das Gruppenthema,
    • die gewählten Lösungsansätze und
    • die bisher entwickelten Software-Module.
  • 18. Juni 2014
    Abgabe des Feinentwurfes des Programms. Dieser sollte folgendes umfassen:
    • Die Schnittstellen,
    • die Paketstruktur und
    • die verschiedenen Module der Software.
  • 9. Juli 2013 (letze Sitzung)
    • Präsentation der Software auf dem vorläufigen endgültigen Stand
  • bis spätestens 20. September 2014!
    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, 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 ge-cloned 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:

  1. Herunterladen und Installieren der MS Visual Studio 2010 Runtime (32bit und/oder 64bit).
  2. 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:

  1. Herunterladen und Installieren VIGRA-Bibliothek (am besten Version 1.10.0, entweder über den System-Paketmanager oder von der VIGRA-Homepage aus).
    ACHTUNG! Unter Ubuntu kann es passieren, dass die Vigra-Bibliotheken (libvigraimpex.so.*) im falschen Verzeichnis (usr/local/lib) installiert werden!
    Um dies zu korrigieren, kopiert die Biblitheken bitte an den Ort, den euch "vigra-config --libs" nennt! Zum Beispiel mit:
    sudo cp /usr/local/lib/libvigraimpex.* /usr/lib/x86_64-linux-gnu
  2. Herunterladen und Entpacken der VigRacket-Anbindung (gleiches Paket für alle Betriebssysteme!).
  3. Anpassen der "config.rkt", so dass Racket die korrekte Umgebungsvariablen kennt.
    Falls VIGRA in ein Standardverzeichnis installiert wurde, einfach die Zeile 28 ändern in:
    (define (system-env arg) (system arg))
    Falls VIGRA in ein anderes Verzeichnis installiert wurde, den "source" Befehl (Zeile 27) ggf. anpassen und die Datei "vigra_c/fallback.profile" so anpassen, dass diese den Systempfad um den Installationspfad der VIGRA erweitert.
    ACHTUNG: Aufgrund mangelnder Verzeichnis-Rechte kann es vorkommen, dass die vigra-C-Anbindung nicht in das vigracket Verzeichnis kopiert werden kann. Kontrolliert daher bitte das Vorhandensein der "libvigra_c.so" im vigracket-Verzeichnis.
  4. Danach, wie bei allen anderen Systemen, Ausführen der Datei "install.rkt" mit DrRacket.