Laborpraktikum
|
Navigationsindexe für Bilddatenbanken
| Betreuer: |
Eike Schallehn,
Anke Schneidewind |
| SWS: |
je nach Prüfungsordnung |
| Zielgruppe: |
WIF/IF/IngInf/CV ab 5. Semester,
CVM/DKEM 1-3
|
| Ort: |
Vorerst Gebäde 29 Labor 145 |
| Zeit: |
Vorerst Fr 9:00 - 11:00 |
| erster Termin: |
Falls kein anderer Termin vereinbart Fr 9:00 - 11:00 den
13. April Labor 144 |
| Einschreibung und Rückfragen: |
können über erfolgen. |
| Teilnehmerzahl |
Es werden bis zu 20 Teilnehmer erwartet. Unter 10 wird die
Aufgabenstellung eingeschränkt. Ist die Teilnehmerzahl geringer
als 6 kann das Praktikum nicht
durchgeführt werden. |
| Anforderungsprofil: |
Java (mit eclipse-Umgebung), und je nach Teilgebiet,
Datenbanken, Java3D/2D oder auch Interesse an Netzwerken. Der
Student sollte auch bereit sein, sich in fremden Quellcode und in
wissenschaftliche Fragestellungen einzuarbeiten. |
Bitte das WIKI
nicht nur befüllen sondern auch regelmäßig lesen da es
als Kommunikationsplattform dienen soll.
In einem Laborpraktikum soll eine komplexe und praktische
Aufgabenstellung in einer selbst organisierenden Gruppe gelöst
werden. Organisation bedeutet vor alle Kommunikation über
Dokumentation des Quellcodes. Werkzeuge wie cvs, maven,
junit und eventuell auch ein wiki sind hierbei wichtige Prüf- und
Kommunikationsmittel zwischen Programmierern.
Bilddatenbanken leiden in der Regel unter einer unzureichenden
Suchoption. Oft müssen alle Bilder gesichtet werden um die
relevanten zu finden. Daher soll im Praktikum eine geeignete
Indexierung und grafische Aufbereitung von Bilder erfolgen um ein
zielorientiertes Browsen auf dem Datenbestand zu ermöglichen.
Der Ansatz der in diesem Praktikum verfolgt wird ist das
Entwickeln eines sogenannten Kleine-Welt-Netzwerkes. Bilder sollen
dabei so verbunden werden, dass von jedem Bild aus Bilder
erreicht werden können die unter bestimmten Gesichtspunkten,
Ähnlichkeit mit dem aktuellen Bild aufweisen. Bilder können
aufgrund ihrer Farbverteilung ähnlich zueinander sein oder
aufgrund der Textur oder wenn im Idealfall vorhanden aufgrund
ähnlicher Beschreibungen, in Form von sog. tagging oder
Annotationen, aus Umgebungstext von html-Seiten. Verbindungen
können im einfachsten Fall aber auch durch manuelles setzen
hergestellt werden.
Grundstruktur ist also eine Matrix in der zu jedem Bild die
Nächsten Nachbarn eingetragen sind. Da in Netzwerken nicht alle
Bilder mit allen verbunden sind handelt es sich dabei um eine
dünn besetzte Matrix. Warum ausgerechnet Kleine-Welt-Netzwerke
eingesetzt werden sollen liegt in ihren besonderen Eigenschaften.
Bekannt sind die Eigenschaften durch das Kleine-Welt-Phänomen oder
die six degrees of separation. Grob
ausgedrückt besagt es, dass auch bei sehr vielen Knoten im
Netzwerk, jeder Knoten von jedem Knoten aus in wenigen Schritten
erreicht werden kann und dass Knoten die einander ähnlich sind
Cluster bilden. Also ideal wenn man sich in kurzer Zeit einen
Gesamtüberblick verschaffen will und gleichzeitig nach ganz
bestimmten Kriterien ausschau hält.
Die sich aus dem Thema ergebenden Fragesstellungen sind vor
allem: Wie kann so eine Matrix aufgebaut werden, wie kann sie
visualisiert und mit ihr interagiert werden und mit welchen Methoden
kann sie angepasst und manipuliert werden.
Überlegungen sind unter Anderem: wenn man pro Bild
zwischen 3 und 15 Verbindungen zu anderen Bildern hat wieviel Bilder
können dann gleichzeitig dargestellt werden? Ab wann (Kriterium)
werden überzählige Verbindungen ausgeblendet?
Die größte Herausforderung wird in der Wahl der
Bildnachbarn liegen. Wie entscheidet man welche 3-15 Bilder aus einer
Menge von vielleicht 100.000 oder gar 1.000.000 Bildern Nachbarn zu
dem aktuellen Bild sein sollen. Hier müssen Mechanismen wie
Feature-Extraktion hinterlegt werden oder ein Crawler entwickelt
werden der Bilder aus dem Netz einschließlich jeder greifbarer
Annotation zieht um ein initiales Annotations-Netzwerk aufzubauen.
Geeignete Quellen für Bildannoationen sind Google und Seiten wie
flickr die eigene APIs für Java anbieten, aber auch die unmengen
an Photoseiten die es sonst noch so gibt (http://www.webshots.com/ ,
http://www.fotocommunity.de/ etc.)
Wie sieht die Interaktion aus? Ist es z.B. mögich durch
Beaobachten des Browserverhaltens des Nutzers Rückschlüsse
auf Verbindungen zwischen Bildern zu ziehen? Kann man also neue
Verbindungen zwischen Bildern erkennen und generieren indem man
Benutzerverhalten auswertet? Gibt es einfache Interaktionen, mit
geringstem Eingabeaufwand durch die der Nutzer gezielt neue
Verbindungen setzen kann? Wie bewegt man sich in oder über einem
2 oder 3 dimensional dargestelltem Netz aus Bildern?
Zu Beginn der Arbeit müssen Diskussionspunkte wie
Arbeitsteilung, Schnittstellen sowie Austauschformate unter den
gegebenen Rahmenbedingungen erörtert und klar entschieden werden.
Festlegen einzelner Schritte, z.B.:
- Datenbank mit Annotationen aufbauen,
- Erstellung einer Matrix basierend auf Ähnlichkeiten,
- Daraus: Ableitung einer Nachbarschaftsmatrix,
- Navigations-Frontend,
- User-Feedback: wieder eine Matrix, in der verwendete
Navigationen gespeichert werden, die dann zur Verfeinerung
verwendet werden.
Material und Dokumentation
Im Folgenden ein paar Seiten als Informatinsquellen.
Arbeitsumgebung
Software die für die Arbeit im Team des Laborpraktikums
gebraucht wird
- Java SDK
- Es soll die Version 1.5 benutzt werden mit Dokumentation
- eclipse
- Als Programmierumgebung. Umfangreiche Informationen gibt
es auf den eclipse-Seiten Dokumentation
- Wiki
- Installieren eines Wikis für die Koordination im
Team. Plattform für Datenaustausch, Arbeits- und Zeitplanung.
Wiki
des Laborpraktikums
- maven
- Software Projekt Management und Beschreibungs Werkzeug.
Wird als Universalwerkzeug zum Entwickeln von Software im Team
verwendet. Die Plugin-Architektur bietet Schnittstellen zu vielen
anderen Werkzeugen. In erster Linie wichtig für das Labor sind
neben dem automatischen Erstellen von Verzeichnisstrukturen und
Generieren von Fehler und Testseiten auch das direkte Einbinden von
cvs und eclipse in das Managementwerkzeug.
Ausgeffallenere Sachen sind das automatische kontrollieren von Programmierrichtlinien
über maven-checkstyle. Hilfreiche
Plugins sind aber auch maven-javadoc und Weiter
Plugins sind zu finden unter maven und mojo
- junit
- Zum Testen der Software wird junit verwendet und ist als
wichtigstes Werkzeug fü "saubere" Programmierung voraussetzung
für die Arbeit mit maven
- Coverlipse
- Grafische Aufarbeitung der Testabdeckung. Der Quellcode
wird analysiert in wie weit er bei Tests durchlaufen wird und zeigt
dem Nutzer an welche Schleifen etc. nicht erfasst wurden. Es gibt
auch ein howto für coverlipse
- CVS
- Software-System zur Versionsverwaltung von Dateien Deutsche CVS Dokumentation
(Literatur "kurz & gut" Reihe von O'Reillys)
- log4J
- Loggingwerkzeug
Weitere Software die ganz nützlich sein kann und einfach
bei Bedarf eingesetzt wird.
- Tutorial von Omondo
- UML aus Java generieren und aus UML Java generieren :-)
- v4all
- Oberfläche generieren v4all ( lokale Version)
GUI zum Browsen
Es gibt geradezu absurd viele Möglichkeiten große
Datenmengen zu visualisieren. Der Grund dafür ist jedoch eher
einfach, man hat bis jetzt noch keine ultimative Visualisierung
gefunden und daher gibt es einfach nur sehr viele Spezialisierungen.
Die folgenden Beispiele sind meist nicht in Java programmiert und
dienen vorwiegend als Anschauungsmaterial.
- designklicks
- Sehr ansprechende Darstellung mit einer etwas
gewöhnungsbedürftigen Bedienung. Auf jeden Fall eine
Analyse wert.
- Netzwerkkommunikation
- Ein Blog der sich auch mit der Visualisierung solcher
Netze befasst.
Java Werkzeuge
Diese Liste erfasst ein paar APIs und Programme die
teilsweise unerlässlich sind wenn man mit Bildern arbeiten oder
aufwändige GUIs erstellen will.
- Grafik in Java
- Grafikausgabe mit Java (AWT, Java 2D, JIMI, JAI) von
Torsten Horn. Kurze und gute Einführungen in die genannten
Titel
- java3d
- API zum erstellen und interagieren mit 3D Objekten in Java
- colt
- API Speziell für Programmierung im wissenschaftlichen
und technischen Bereich gedacht. Berücksichtigt große
Datenmengen und Performanceproblematik. Das hat man recht schnell
wenn man auf Bildpixeln arbeitet.
- piccolo
- Weist sich als šA Structured 2D Graphics Frameworkš aus
und bietet nach eigenen Angaben die ideale Umgebung zum
programmiern von grafischen Anwendungen
- color inspector
- Ein Java-Programm zum Anzeigen von Farbverteilungen im
Bild mit komplexen Analysemöglichkeiten. Da hier der Quellcode
zur Verfügung steht lohnt sich ein besonders naher Blick auf
die ganze Sache. Es gibt auch eine offizielle Einstiegsseite
GUI zum Suchen
Diese Reihe geht eher in Richtung Dateimanager, wie man die
Arbeit mit Bildern erleichtern will
- picasa
- picasa von Google
- PhotoMesa
- Ein Stück Software zum Anzeigen von Bildordnern in
einer besonders kompakten Form. Mit zoom-Elementen. Das Programm
kann heruntergeladen werden. Ein weiterer Link dort hin ist hier
|
|