Fakultät für Informatik Arbeitsgruppe Datenbanken & Software Engineering

Laborpraktikum

Navigationsindexe für Bilddatenbanken

Organisatorisches

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.

Aktuelles

Bitte das WIKI nicht nur befüllen sondern auch regelmäßig lesen da es als Kommunikationsplattform dienen soll.

Allgemein

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.

Thema

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.

Fragestellungen

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?

Vorgehen

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

Material

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
<Webmaster> - webmaster@iti.cs.uni-magdeburg.de
Last modified: Fri Mar 31 16:31:56 CEST 2006