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

Infoseite zu dem Bildverarbeitungspraktikum "Funktionale Programmierung" (Di 8-12) im SoSe 2010

Ablauf des Praktikums:

Es werden abwechselnd theoretische und praktische Blöcke angeboten, die es erlauben die theoretischen Grundlagen zu hören, um erfolgreich mit der Umsetzung dieser beginnen zu können. Die verwendete Programmiersprache ist PLT Scheme, die der Editor DrScheme komfortabel anbietet.

Wichtige Termine:

  • 1. Juni 2010
    Abgabe des Pflichtenhelftes. Darin sollten folgende Punkte enthalten sein:
    1. Das Team, also alle Mitglieder mit Namen und Matrikelnummern.
    2. Das Thema, bzw. das Spiel 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 (z.B. Zusicherungen für die einzulesenden Bilder).
  • 22. Juni 2010
    Abgabe des Feinentwurfes des Programms. Dieser sollte folgendes umfassen:
    • Die Schnittstellen,
    • die Paketstruktur und
    • die verschiedenen Module der Software.
  • 13. Juli 2010 (letze Sitzung)
    • Präsentation der Software
    • Abgabe der Dokumentation (bestehend aus Bediener- und Programmierhandbuch)

Materialien:

Einführung in VigraPLT

Eine überarbeitete Version der Präsentation, die ich am ersten Termin gezeigt hatte, erklärt noch einmal kurz die grundsätzliche Arbeitsweise der VigraPLT. Sie kann hier heruntergeladen werden und bezieht sich nun auf die aktuelle Version der Anbindung.

Außerdem ist noch das Referenzhandbuch für Version 0.5.0 inklusive aller Beispiele verfügbar. Es beinhaltet eine ausführliche Beschreibung der Verfahren und weitere Beispiele.

Das Versionsverwaltungssystem SVN

Der Vortrag zu dem SVN-System kann hier heruntergeladen werden..
Außerdem habe ich das SVN-Handout ebenfalls noch einmal hier zum Download hineingestellt.

Verfälschte Satellitenbilder im Internet

Ein kleine Auswahl an möglichen Verfälschungen die Google einsetzt findet ihr auf Leonies Website.

Download und Installation auf den Pool-iMacs (SnowLeopard)

Die aktuelle VIGRAPLT Library kann als Binary zur Benutzung auf den Pool iMacs direkt hier auf der Homepage heruntergeladen werden. Weitere Informationen zur Bibliothek (z.B. Sourcen und Installationshinweise) finden sich auf dieser Seite. Ab sofort stehen dort auch vorkompilierte Dateien für Windows bereit! Es sollte nur noch die aktuelle Version (0.5.0) benutzt werden. Diese unterstützt Farbbilder!
Sie muss für jeden Benutzer einmal lokal installiert werden. Damit dies gelingt, müssen neben der beschriebenen Anleitung noch folgende Dinge beachtet werden.

nach dem Download muss der gesamte Inhalt des VIGRAPLT-Pakets in den Ordner

/Users/BENUTZER/Library/PLT Scheme/4.1.1/collects/vigraplt

kopiert oder symbolisch gelinkt werden. Für andere Versionen von DrScheme muss dieser Pfad evt. angepasst werden! Die Ordnerstruktur PLT Scheme/4.1.1/collects wird standardmäßig nicht von DrScheme im Ordner /Users/BENUTZER/Library angelegt. Daher müssen wie ebenfalls von Hand erzeugt werden.

Nach dem Kopieren kann die VIGRAPLT ausprobiert werden, zum Beispiel durch ein Doppelklick auf die Datei "examples.ss" im VIGRAPLT Ordner, oder interaktiv durch folgendes Kommando eingebunden werden:

(require vigraplt/vigraplt)

Bugfix der VIGRAPLT:

Leider hat sich in der aktuellen Version ein Fehler in der Anzeige eingeschlichen, der verhindert dass einfarbige Bilder angezeigt werden können. Diesen Fehler kann man aber recht einfach selbst beheben, in dem man im vigraplt-Verzeichnis in der Datei vigraplt.viewer.ss, Zeile 22:

         (color_spread (- max_color min_color))

durch

         (color_spread (max (- max_color min_color) 1))

ersetzt.

Weitere Ressourcen:

Kleines Plotting-Beispiel mit der VigraPLT

Listen, zum Beispiel Zeilen- und Spalten-Projektionen kann man sich natürlich natürlich auch "per Hand" in dem Interpreter anschauen. Oder aber plotten - also als Bildhafte Information darstellen. Mit folgender Funktion geschieht genau dies:

 (define (plot xs scale)
   (let* ((max_val (apply max xs))
          (image   (make-image (length xs)  scale 0.0)))
     (image-for-each-index 
      (lambda (x y band_id)
        (if (< y (* (/ (list-ref xs x) max_val) scale))
               (image-set! image x y band_id 255.0)
               (image-set! image x y band_id 0.0)))
      image)))

Aufgerufen werden kan diese Funktion z.B.mit Höhe des Plottes von 200 Pixeln:

 (show-image (plot *irgend_eine_liste* 200))