Fotoalbum | BVA-System

Posts Tagged ‘Fotoalbum’

Erweiterung des Navigationsbaumes

Donnerstag, September 19th, 2013

Auch die letzten 2 Wochen habe ich mit anderen Dingen verbracht, als ich mir ursprünglich vorgenommen hatte. Dafür kann ich stolz verkünden, das mit dem BVASystem nun gezielt nach einzelnen Schlagworten recherchiert werden kann. Außerdem habe ich ein neues Metadaten Element entwickelt, mit dem Fotos einem Fotoalbum zugeordnet werden können, wenn deren Dateinamen einem bestimmten Muster entsprechen. Diese Funktion ist sicher für alle interessant, deren Dateinamen nicht dem Zählmuster von Digitalkameras entsprechen. Zu guter letzt habe ich nach recht langer Pause wieder an der Testanwendung weiterentwickelt, damit ich irgendwann soweit sein werde, die Worker-Funktionen automatisiert zu testen. Mittlerweile ist es zumindest möglich, ein Testbild zu erzeugen und dieses in der Datenbank zu speichern.

Erweiterung des Navigationsbaumes

Das ich dabei bin den Navigationsbaum zu erweitern, war ja bereits in den vorherigen Versionen zu erkennen. Allerdings habe ich vorige Woche mein geplantes Konzept nochmals erweitert und sofort vollständig umgesetzt. Der Navigationsbaum enthielt bereits die Schlagwortkategorien. Neu ist, das nun auch die einzelnen Schlagworte, die mit den Kategorien verknüpft wurden, im Baum angezeigt werden. Bei der Auswahl eines Schlagwortes im Baum werden die Fotos aus der Datenbank ausgewählt, die mit dem Schlagwort verknüpft wurden. Wird eine Schlagwortkategorie ausgewählt, so werden alle die Fotos in die Bildliste übernommen, die mindestens mit einem der Schlagworte der Kategorie verknüpft wurden. Neu ist ebenfalls, das unter dem Eintrag „Schlagworte ohne Kategorie“ alle Schlagworte, die in keiner Schlagwortkategorie genutzt wurden, als Unterknoten hinzugefügt werden. Auch hier können die einzelnen Schlagworte ausgewählt werden, um eine entsprechende Bildliste zu erhalten.

Schlagworte im Navigationsbaum

Schlagworte im Navigationsbaum

Automatische Zuordnungen mit Hilfe des Dateinamens

Beim Testen des BVASystems mit Bildern, die ich zur Nutzung auf meiner Homepage umbenannt hatte, fiel mir auf das es gut wäre, wenn man Fotos, bei denen der Dateiname einem Muster folgt automatisch einem Fotoalbum zuordnen kann. In meinem Beispiel geht es darum, das ich von jedem Bild immer 2 Varianten habe. Eines so wie ihr es euch auf der Homepage angucken könnt und eines welches ich nicht verkleinert habe. Die nicht verkleinerten Fotos kennzeichne ich mit einem „Original“ im Dateinamen. Mit der neuen Funktion ist es mir nun möglich, die Originale automatisch in einem Fotoalbum zu sammeln.

Metadatenelement Dateinamen-Übereinstimmung

Metadatenelement Dateinamen-Übereinstimmung

Ausblick

Bis zum nächsten Versionsupdate werde ich mich nun wirklich darum kümmern, das endlich die blauen Kästchen verschwinden. Die nun bis auch einige Kleinigkeiten fertig implementierte Recherche nach einem bestimmten Schlagwort ist ja bereits ganz gut, aber wenn man kombiniert nach 2 verschiedenen Schlagworten recherchieren möchte, wird es schnell doch recht aufwendig. Daher haben die Funktionen zur Filterung der aktiven Bildliste nun definitiv höchste Priorität. 

Metadatenelement: Belichtungsbewertung

Dienstag, Mai 15th, 2012

So langsam mag es etwas langweilig klingen, aber das BVASystem hat heute wieder ein weiteres Metadatenelement erhalten. Für mich ist es allerdings gerade eine spannende Zeit: Mit jedem neuen Metadatenelement wächst die Anzahl der Kombinationen, mit der die einzelnen Elemente verknüpft werden können. Das spannende daran ist, das es aktuell noch nicht absehbar ist, welche der Kombinationen genutzt werden kann, um thematisch zusammengehörige Fotos vom Rest der Bilder zu trennen.

Aber auch diesmal muss ich das Metadatenelement ein wenig erklären, da es wieder ein Element ist, welches vom Programm errechnet wird.

Wie definiert sich die Belichtungsbewertung?

Wie auch der Tonwertumfang basiert die Belichtungsbewertung auf dem Histogramm des Fotos. Im letzen Blog habe ich versucht zu erklären, das ein perfektes Bild alle möglichen Tonwerte nutzt. Es dürfen allerdings keine Farbwerte außerhalb des möglichen Tonwertumfangs liegen. Alle Bildpunkte, die dunkler als der kleinstmögliche Tonwert sind, werden von der Kamera ebenfalls auf den kleinstmöglichen Tonwert gesetzt. Analog gilt das gleiche für Bildbereiche die heller sind, als der größtmögliche Tonwert. Im Bild äußert sich das dadurch, das größere Flächen entstehen, die komplett schwarz bzw. komplett weiß sind. Im Histogramm erkennt man ebenfalls eine Häufung beim kleinstmöglichen bzw. größtmöglichen Tonwert. Für die Belichtungsbewertung zählt das BVASystem nun die weißen bzw. die schwarzen Bildpunkte und setzt sie im Verhältnis zur Gesamtbildgröße. Je mehr Prozent der Bildfläche komplett weiß bzw. schwarz sind, desto größer ist der fehlbelichtete Bildbereich.

Wozu kann sie genutzt werden?

In erster Linie ist die Belichtungsbewertung dazu gedacht, damit fehlbelichtete Bilder erst garnicht in das jeweilige Fotoalbum eingefügt werden. Aber auch der umgekehrte Fall, das nur fehlbelichtete Bilder einem Album zugeordnet werden, erscheint mir sinnvoll, da man beispielsweise so gezielt alle fehlbelichteten Bilder betrachten kann.  So kann man schnell entscheiden, ob das Bild mit Photoshop noch zu „retten“ ist oder ob es besser gelöscht werden sollte. Natürlich kann man die Belichtungsbewertung auch nutzen, um Fotos die bewusst unter- oder überbelichtete Bildbereiche (z.B Sternenhimmel) besitzen von anderen Fotos zu trennen.

Um möglichst viele verschiedene Definitions-Möglichkeiten zu bieten, können auch nur unterbelichtete oder nur überbelichtete Bildbereiche ausgewertet werden. Gerade im Fall des Sternenhimmels wird einem wahrscheinlich nur der unterbelichtete Bildbereich interessieren. Standardmäßig sind bei der Definition des Metadatenelements Belichtungsbewertung unter- und überbelichtete Bildbereich ausgewählt.

Metadatenelement Belichtungsbewertung

Metadatenelement Belichtungsbewertung

Welche weiteren Änderungen wurden am Programm umgesetzt?

In der Bildinformationen-Ansicht hat sich auch einiges getan. Auffällig sollte sein, das sich nun nicht mehr 2 sondern 3 kleine Fensterchen auf der Ansicht befinden. Außerdem sollte auffallen, das jedes dieser 3 Fenster auch eine Funktion hat. Das erste der Fenster dient zur Navigation innerhalb der aktiven Bildliste. Das Foto-Fenster zeigt logischerweise das aktuell aktive Bild an und das Kamera-Fenster zeigt aktuell die EXIF-Daten des Bildes an, wie es auf dem Bildinformationspopup bekannt sein sollte.

Des weiteren habe ich  daran gearbeitet, das alle Funktionen zur Bildveränderung in der ImgFkt.dll ausgelagert sind. Neu ist diesmal, das die Funktion zur Umwandlung eines Bildes in ein Graustufenbild ausgelagert wurde. Scheinbar mag dies zu keiner Änderung für den Anwender führen, aber intern erhalte ich dadurch eine viel klarere Struktur. Und vielleicht ergibt sich auch einmal die Gelegenheit die Funktionsbibliotek für ein anderes Projekt zu verwenden.

Wie geht es weiter?

Weiterarbeiten werde ich nun an 2 weiteren Metadatenelementen, deren Umsetzung sich einfacher gestalten dürfte. Es geht dabei um die Blende und die Belichtungszeit, die von der Kamera in der Bilddatei abgelegt wurde. Mein Ziel ist es dabei, zu ermöglichen, Fotos, bei deren Aufnahme ähnliche Lichtbedingungen herschten, zu filtern.

Die Schwierigkeit bei der Entwicklung der beiden Metadatenelemente liegt ganz klar in der Benutzeroberfläche. Sowohl Blende als auch Belichtungszeit werden in der Bilddatei als reine Gleitkommazahl gespeichert. Angezeigt wird die Belichtungszeit aber  beispielsweise als  „1/250 sec“ und nicht als  „0,004 sec“. Ich muss also einen Weg finden, wie die Belichtungszeit für den Anwender bequem eingstellt werden kann,.

Außerdem werde ich wieder an der Bildinformationsansicht weiterarbeiten. Diesmal wird es darum gehen, das der Anwender zwischen verschiedenen Ansichten wechseln kann. Außerdem möchte ich die Funktion zur Definition eigenener Ansichten vorbereiten.

Metadatenelement: Tonwertumfang

Dienstag, Mai 1st, 2012

Aktuell fühlt es sich so an als wenn die Zeit rast, denn schon wieder ist es an der Zeit, eine weitere Entwicklerversion des BVASystems zu veröffentlichen.  Auch diesmal gibt es wieder ein ganz besonderes neues Metadatenelement, denn mit dem Tonwertumfang können Bilder nun auch erstmals bewertet werden. Bevor ich darauf aber weiter eingehe, werde ich kurz erläutern, was der Tonwertumfang überhaupt ist.

Was ist der Tonwertumfang eines Bildes?

Der Tonwertumfang eines Bildes gibt an, wieviele Farbinformationen (Tonwerte) ein Bild besitzt. Ein Graustufenbild mit einer Farbtiefe von 8bit besitzt beispielsweise 2^8 = 256 mögliche Grautöne. Werden von diesen 256 möglichen Grautönen nur die Hälfte (128) im Bild genutzt, so beträgt der Tonwertumfang 50%.

Ein ideales Bild nutzt alle möglichen Tonwerte. Generell ist es so, das je weniger Tonwerte ein Bild nutzt, desto kontrastärmer bzw. flauer wirkt es. Daraus folgt nun auch der bewertende Charakter des Tonwertumfangs. Je kleiner der Tonwertumfang eines Bildes ist, desto weiter ist das Foto von einem idealen Bild entfernt und desto „schlechter“ ist das Bild. Aber Vorsicht: Eine generelle Aussage, ob das Bild schlecht ist, ist nicht möglich, da ein reduzierter Tonwertumfang auch als gestalterisches Mittel eingesetzt werden kann.

Wie wird der Tonwertumfang innerhalb der Metadaten umgesetzt?

In der Metadatendefinition gibt man für den Tonwertumfang eine untere und obere Grenze an. Liegt der Tonwertumfang des Fotos zwischen den beiden Grenzen, so wird das Bild dem Album zugeorndet. Damit wird ein recht guter Freiheitsgrad erreicht, da sowohl gute Bilder (Beispielsweise Tonwertumfang zwischen 80% und 100%) als auch schlechte Bilder (Beispielsweise Tonwertumgang zwischen 0% und 25%) zugeordnet werden können. Wie immer lassen sich weitere Elemente mit dem Tonwertumfang kombinieren, so dass dann alle Elemente erfüllt sein müssen. Auch kann das Metadatenelement Tonwertumfang mehrfach genutzt werden, um mehrere Tonwertbereiche abzudecken.

Metadatenelement Tonwertumfang

Metadatenelement Tonwertumfang

Welche Änderungen gibt es außerdem an der Bilddatenbank?

Neben dem neuen Metadatenelement habe ich damit begonnen, einen vierten Ansichtsmodi in das Programm zu integrieren. Der neue Modus soll dazu genutzt werden, um die erfassten Informationen zu einem Bild anzuzeigen. Aktuell stört es mich schon sehr, das nicht einsehbar ist, wie groß beispielsweise der Tonwertumfang eines Fotos ist. Ein überprüfen, ob die Zuordnung zu einem Fotoalbum formal korrekt gewesen ist, ist also leider noch nicht möglich. Aktuell ist ein Stand erreicht, in dem 2 kleine Bildinformationsfenster ein- und auch wieder ausgeblendet werden können. Da noch keinerlei Informationen in diesen Fenstern stehen, ist der Nutzen des ganzen quasi noch nicht vorhanden.

Wie gehts weiter?

Heute abend werde ich daher gleich an dieser Ansicht weiterentwickeln. Ziel ist es, das zumindest ein Teil der aktuell erfassten Informationen visualisiert werden können. Sobald die Ansicht für den Anwender einen Nutzen hat, werde ich mein Konzept hinter dieser Ansicht näher erläutern. Außerdem werde ich in den nächsten Wochen wieder ein neues Metadatenelement implementieren. Auch dieses wird wieder einen bewertenden Charakter haben.

Fokus Hauptfunktionalität

Montag, April 16th, 2012

Meiner Roadmap ist seit einigen Wochen zu entnehmen, das ich mich nun, nachdem ich mich die letzten Monate viel mit Datenbanksystemen rumgeärgert habe, wieder verstärkt der Hauptfunktionalität des BVASystems, den Metadaten, widmen werde. Dies erscheint mir sinnvoll, da sich das BVASystem gerade in diesem Punkt von anderen Bildverwaltungsprogrammen unterscheidet. Geplant ist, die automatische Zuordnung von Bildern zu Fotoalben soweit auszubauen, dass auch komplexere Bedingungen definiert und genutzt werden können. Die bereits vorhandenen Elemente „Aufnahmedatum“, „Besitzer des Bildes“ und „Verwendete Kamera“ funktionieren zwar schon ganz gut, lassen aber eben nur simple Entscheidungen zu, da sie sich kaum kombinieren lassen.

Aktuell ist mein Ziel zu demonstrieren, was mit dem Metadatensystem alles erreicht werden kann. Dafür ist es natürlich am wichtigsten, weitere Metadatenelemente zu schaffen, die beliebig mit den bereits vorhandenen Elementen kombiniert werden können. Langfristig möchte ich die Metadaten noch an andere Verwaltungselemente, wie zum Beispiel die Schlagworte, binden.

Den ersten abgesteckten Entwicklungsschritt habe ich nun auch bereits erreicht. Das Metadatenelement „Mittlere Helligkeit“ ist in der Version 2.1.1.41 nun zum ersten Mal enthalten. Das Besondere dabei ist, dass der Helligkeitswert nicht aus dem Header des Fotos ausgelesen werden kann. Es handelt sich vielmehr um einen Wert, der direkt aus dem Foto errechnet wird. Das BVASystem ist damit also in der Lage, helle und dunkle Fotos zu unterscheiden.

Weiterhin habe ich das Metadatenelement „Aufnahmedatum“ verbessert, in welchem nun auch die Uhrzeit eingestellt werden kann. Bisher war es so, das man nur tageweise definieren konnte. War man beispielsweise vormittags wandern und nachmittags auf einer Familienfeier, waren die Fotos automatisch nicht voneinander trennbar. Nun können auch beliebig viele Fotoalben angelegt werden, welche alle Fotos enthalten, die an dem gleichen Tag aufgenommen wurden.

Veränderte Metadatenelemente der Version 2.1.1.41-dev

Veränderte Metadatenelemente der Version 2.1.1.41-dev

Als dritte kleine Verbesserung habe ich die Metadatenelemente in der Auswahlliste gruppiert. Damit sollte es, auch wenn es mal mehrere Dutzend Metadatenelemente werden, trotzdem übersichtlich bleiben. Die 3 nun verwendeten Gruppen lauten:

  • EXIF: Hier werden alle Elemente zusammengefasst, die auf dem EXIF-Header eines Fotos basieren
  • DB: Hier werden alle Elemente zusammengefasst, die sich direkt aus der Datenbank ableiten lassen
  • BV: Hier werden alle Elemente zusammengefasst, die mittels Bildverarbeitung direkt am Foto errechnet werden

Auch in der nächsten Version werde ich mich um die Metadaten kümmern. Ziel ist es das erste bildbewertende Metadatenelement zu schaffen. Damit soll es dann möglich sein, das nur gelungene Bilder den Weg in ein Fotoalbum finden. Außerdem werde ich damit beginnen, einen vierten Ansichtsmodi „Bildinformationen“ in das Programm zu integrieren.

Wichtige Ankündigung

Donnerstag, August 11th, 2011

Bekanntlich werfen große Ereignisse ihre Schatten voraus und so soll es auch beim BVASystem sein. Bevor ich allerdings zur wichtigen Ankündigung komme, möchte ich diesen Blog kurz nutzen um die neue Programmversion vorzustellen.

BVASystem 2.0.0.26

Die wichtigste Änderung diesmal ist sicherlich das EXIF-Modul, welches ich bereits vor ein paar Tagen vorgestellt habe. Optisch fällt das neue Modul leider überhaupt nicht auf. Erst beim Import von Fotos sollte dem aufmerksamen Nutzer auffallen, das nicht mehr das Änderungsdatum der Bilddateien ausschlaggebend ist.

Auffälliger dagegen ist eine „Kleinigkeit“ die einen deutlichen Komfortgewinn mit sich bringt. Und zwar kann nun mit Hilfe des Mausrades  innerhalb der Komponente, die gerade den Eingabefocus hat, navigiert werden. In der Komponente, die zur Bildanzeige genutzt wird, kann sogar in vertikaler und horizontaler Richtung mit dem Mausrad navigiert werden. Zur Aktivierung der horizontalen Navigation muss während man das Mausrad bewegt die Strg-Taste der Tastatur gedrückt werden.

Die dritte größere Änderung, die mich am meisten Zeit gekostet hat, betrifft den Dialog zum Anlegen eines Fotoalbums. Ich hoffe, das ich es geschafft habe, das die Metadatendefinitionen nun komfortabler angelegt werden können. Und ich hoffe, das  für jeden Zustand des Dialoges gültige Daten angezeigt werden. Es wird nun nämlich der Metadatenname automatisch festgelegt und bei Namensgleichheit mit einer bestehenden Definition wird diese geladen.

Wichtige Ankündigung

Nun aber zum eigentlichen Themagebenden Teil des Blogs: Ich denke langsam aber sicher ist es an der Zeit, das vom BVASystem nach nun etwas mehr als einem Jahr Entwicklungszeit eine stabile nutzbare Version veröffentlich wird. Da meine eigenen Bilder sehnlichst darauf warten, kategoriert zu werden, ist der Schritt zur stabilen Programmversion auch nicht ganz uneigennützlich. Die stabile Version hat zur Konsequenz, das ich garantiere, das die angelegten Daten bei späteren Programmversionen nicht wieder neu angelegt werden müssen.

Die nächste Zeit werde ich damit verbringen, Fehler zu beseitigen und kleinere Erweiterungen zu entwickeln, die den Komfort erhöhen. Wie lange ich dafür brauchen werde, ist schwierig abzuschätzen. Da ich nicht weiß, was sich noch so an Fehlern im Programm befindet. Ich rechne aber damit, das ich noch dieses Jahr die stabile Programmversion fertigstellen kann. Die Aufgaben, die noch erledigt werden müssen, habe ich in den letzten Tagen im Bugtracker eingetragen.

Die stabile Programmversion BVASysten 2.1 werde ich sobald sie fertig ist, käuflich für ein paar Euro anbieten. Aber trotzdem bleibt die Programmversion, die heruntergeladen werden kann, frei von zeitlichen und funktionellen Einschränkungen. Der unregistrierte Nutzer wird „nur“ einen kleinen Hinweis auf die Kaufversion hinnehmen müssen. Ich hoffe, das Ihr so ehrlich seid und das Programm nach einer uneingeschränkten Testphase, bei Gefallen käuflich erwerbt. Für mich wäre es jedenfalls ein toller Anreiz, wenn ich durch die Arbeit den einen oder anderen Euro bekommen würde. Danke schonmal im voraus.

Dreifaches Jubiläum

Dienstag, Juli 19th, 2011

Dieses mal freue ich mich ganz besonders darauf, eine neue Programmversion der Bildverwaltung anzukündigen. Denn ich habe, fast auf den Tag genau, nach nun einem Jahr „BVA goes Datenbank„, ein für mich ganz wichtiges Ziel erreicht. Die Bilddatenbank ist nun in der Lage, bereits beim Archivieren von neuen Fotos, diese zu Fotoalben zuzuordnen. Außerdem ist es auch noch die 25. Programmversion, die ich soeben veröffentlicht habe.

Die, für die automatischen Zuordnungen, genutzten Metadaten wurden ja bereits in älteren Blogs ausführlich beschrieben. Auch der Ablauf der Zuordnungen über den Entscheidungsbaum wurde erläutert. Im letzten Schritt wurde in der neuen Version die Suche im Entscheidungsbaum programmiert und natürlich ebenso die Speicherung der gefundenen Verknüpfungen.

Screenshot der Version 2.0.0.25 der Bilddatenbank BVASystem

Screenshot der Version 2.0.0.25 der Bilddatenbank BVASystem

Ich muss aber ehrlich zugeben, das noch immer eine Menge Details nicht funktionieren. Wichtig ist es mir, darauf hinzuweisen, das zur Zeit Änderungen an den Metadatendefinitionen erst nach einem erneutem Start des Programmes aktiv sind. Änderungen am Entscheidungsbaum werden vorerst nur durch den Initialisierungs-Workertask vorgenommen. Diesen Umstand werde ich in einer der nächsten Versionen auf jeden Fall korrigieren.

Apropos korrigieren. Vor bereits relativ langer Zeit wurden mir Unstimmigkeiten im Programm gemeldet, die die Steuerung per Tastatur betrafen. Diese Unstimmigkeiten waren mir allerdings bisher nicht so wichtig. Da ich das Programm mittlerweile fast täglich benutze, stören mich solche „Kleinigkeiten“ immer mehr. Also bin ich der Sache nun nachgegangen, damit das Programm in sich stimmiger wird.

Tastatursteuerungen erfolgen nun nicht mehr global, sondern sie werden von der Komponente gesteuert, die gerade den Focus besitzt. Wo sich der Focus gerade befindet, kann durch den gestrichelten Rahmen am Rand festgestellt werden. Je nachdem, welche Komponente den Focus bestitzt, stehen unterschiedliche Funktionen zur Verfügung. In den Baumansichten kann per Pfeiltaste hoch bzw. runter navigiert werden. Mit der Pfeiltaste nach rechts der aktuelle Knoten im Baum geöffnet und mit der Pfeiltaste nach links wieder geschlossen werden. Besitzt der Filmstreifen den Focus, kann mit den Pfeiltasten nach links bzw. nach rechts in der Liste navigiert werden. Das gleiche ist auch in der Miniaturbilderansicht möglich.

Als Ausblick auf die nächste Programmversion der Bildverwaltung kann ich den Hinweis geben, das ich die nächsten 14 Tage damit verbringen werde, ein Modul zu entwickeln, mit dem ich die EXIF Informationen eines Bildes auslesen kann. Im Speziellen geht es darum, das das korrekte Aufnahmedatum des Bildes ausgelesen werden kann. Es ist toll, das ich Fotoalben-Zuordnungen aufgrund des Aufnahmedatums vornehmen kann. Es ist allerdings weniger toll, wenn ich dafür das Dateiänderungsdatum nutze, da sich dieses vom wirklichen Aufnahmedatum unterscheiden kann.

 

Wozu dient ein Entscheidungsbaum?

Mittwoch, Juni 22nd, 2011

Im Ausblick bei der letzten Programmaktualisierung habe ich beschrieben, das ich auf der Suche nach einer sinnvollen Datenstruktur bin, um die Zuordnungen zwischen Fotos und Fotoalben effizient erstellen zu können. Entschieden habe ich mich für einen Entscheidungsbaum. Bevor ich in 1 bis 2 Wochen die Version 2.0.0.24 veröffentliche, die eine Implementierung eines Entscheidungsbaumes enthält, möchte ich kurz erklären, was ein Entscheidungsbaum ist und worin ich die Vor- bzw. Nachteile sehe.

Was ist ein Entscheidungsbaum?

In der Informatik stellen Entscheidungsbäume eine Möglichkeit dar, mit der automatische Klassifizierungen vorgenommen werden können. Um eine Klassifizierung vornehmen zu können, wird der Entscheidungsprozess durch mehrere formale Regeln beschrieben. Diese formalen Regeln werden hierarchisch angeordnet. Ein simpler Entscheidungsbaum könnte wie folgt aussehen:

Ein einfacher Entscheidungsbaum

Ein einfacher Entscheidungsbaum

Zur Klassifizierung wird beim Wurzelelement begonnen, die formale Regel zu beantworten. Anschließend wird beim passenden Kindknoten des Baumes fortgefahren. Es wird wieder die formale Regel abgearbeitet und anschließend wieder der Kindknoten untersucht. Der Prozess endet, sobald der Baum keine weiteren Kindknoten enthält.

Möchte ich, nach dem obigen Beispiel, einen roten runden Ball in eines der Fächer einordnen, dann gehe ich wie folgt vor: Als erstes schaue ich, ob der Ball rot oder gelb ist. Da der Ball rot ist, muss ich auf der linken Hälfte des Baumes weitersuchen. Der rechte Teil des Baumes muss nicht weiter betrachtet werden. Anschließend schaue ich mir die Form des Balls an: Er ist rund und somit ist wieder der linke Teil des Baumes der gesuchte Teil. Da die unterste Ebene des Baumes erreicht wurde, ist nun bekannt, das der Ball in das Fach1 gehört.

Welche Vorteile hat ein Entscheidungsbaum?

Der größte Vorteil eines Entscheidungsbaumes ist, das der Anwender durch die formalen Regeln  relativ gut nachvollziehen kann, warum eine Entscheidung so getroffen wurde, wie sie getroffen wurde. Treten falsche Klassifizierungen auf, so kann der Anwender problemlos durch Anpassung der formalen Regeln, korrigierend eingreifen. Bei alternativen Ansätzen, zum Beispiel neuralen Netzen, ist es für den Anwender absolut unmöglich eine Klassifizierung nachzuvollziehen.

Auch der Aufwand, der zur Klassifikation eines Elementes benötigt wird, wird reduziert. Ohne Entscheidungsbaum würde man für jedes mögliche Klassifikationsergebnis testen, ob die Bedingungen erfüllt sind. Schauen wir wieder auf das Beispiel, so müssten für die Fächer 1 bis 4 jeweils 2 Vergleiche, insgesamt also 8, durchgeführt werden. Mit Entscheidungsbaum fallen mit jeder Hierarchiestufe eine Anzahl nicht möglicher Klassifikationsergebnisse weg. Beim Beispiel bleiben somit nur 2 Vergleiche übrig um das richige Fach zu finden. 

Welche Nachteile hat ein Entscheidungsbaum?

Ein Nachteil eines Entscheidungsbaumes ist, das er nur für abzählbare Datentypen anwendbar ist. Wählt man beispielsweise die Länge eines Objektes als Kriterium, so kann es vorkommen, das für jedes Objekt ein neuer Knoten eingefügt wird. Der Grund dafür ist, das jedes Objekt eine leicht andere Länge aufweisen kann: Eines ist 2,5cm lang, das nächste, 2,49cm und das übernächste 2,495, usw. Entgegen wirken kann man dem, indem die Länge nur gerundet in die Bewertung eingeht. Durch die Rundung kann sich allerdings das Klassifikationsergebnis leicht verschlechtern, da möglicherweise Elemente einem falschen Knoten zugeordnet werden.

Ein weiterer Nachteil ist, das der Baum sehr schnell in die Breite wachsen kann, wenn eine Eigenschaft sehr viele verschiedene Ausprägungen besitzt. Je breiter der Entscheidungsbaum wird, desto mehr büßt man von dem eingesparten Aufwand zur Entscheidungsfindung ein. Tritt so ein Fall ein, so ist es ratsam, den Baum so umzuformen, das eine weitere Ebene entsteht.

Fazit

Für mich scheinen Entscheidungsbäume genau der richtige Weg zu sein, um die Zuordnungen zwischen Foto und Fotoalbum effizient treffen zu können. Allerdings sehe ich schon noch Schwierigkeiten darin, wie er sinnvoll aufgebaut werden sollte. Bereits bei dem Metadatentyp „Aufnahmedatum“ habe ich die Befürchtung, das der Baum zu sehr in die Breite wächst. Vorteilhaft ist aber, das der Entscheidungsbaum nur temporär entstellt wird. Daher kann ich die Struktur des Baumes ohne Probleme aktualisieren, wenn die alte Struktur sich als ineffizent herrausstellen sollte.

Metadatenverwaltung Teil 2

Sonntag, Juni 5th, 2011

Die Zeit vergeht wie im Fluge. Schon wieder sind die 2 Wochen um und somit steht wieder eine Aktualisierung der Programmversion an.

Leider muss ich diesmal gleich vorab einen unangenehmen Fehler beichten: Ich habe vergessen, bei einer neuen Datenbanktabelle das Häkchen zum automatischen Hochzählen des Index-Feldes vergessen. Daher gibt es diesmal wieder eine aktualisierte Datenbankstruktur, die erstellt werden muss. Es tut mir Leid, das schon wieder eine Aktualisierung notwendig ist.

Wie die korrigierte Datenbankstruktur vermuten lässt, habe ich die Metadatenverwaltung so erweitert, das die XML-Strukturen in der Datenbank abgespeichert werden können. Beim Erstellen eines neuen Fotoalbums können die Metadateneinstellungen vorgenommen werden. Diese werden dann automatisch mit dem Fotoalbum zusammen gespeichert. Für die Speicherung ist es notwendig, das die Metadaten einen eindeutigen Namen erhalten. Dieser Name muss im aktuellen Entwicklungsstand manuell festgelegt werden. Bereits verwendete Namen sind in der Auswahlliste des Namenfeldes eingetragen. Ein Editieren der gespeicherten Metadaten ist aktuell noch nicht möglich.

Neues Fotoalbum anlegen mit eingetragenen Metadaten

Neues Fotoalbum anlegen mit eingetragenen Metadaten

Die zweite riesige Änderung der letzten 14 Tagen wird wohl jedem, der das Programm benutzt, sofort ins Auge stechen. Ich habe die Funktionen in den Menüs neu geordnet. Neu hinzugekommen ist, das nun auch ebenfalls auf dem Vorschaubild ein Popup-Menü geöffnet werden kann. Jetzt sollte es möglich sein, das jede Funktion in jeder der drei Ansichtsmodi verwendet werden kann. Es hatte mich gestört, das man in der Einzelbildansicht beispielsweise kein Bild in die Datenbank importieren konnte. Ich hoffe, das die neue Anordnung klarer strukturiert ist und keine logischen Unstimmigkeiten mehr aufweist.

Ich schätze, das ich noch 2 weitere Versionen benötigen werde, um eine allererste durchgängig funktionierende Metadatenverwaltung am Start zu haben. In den nächsten 14 Tagen will ich mich damit beschäftigen, eine Worker-Aufgabe zu implementieren, die mir die gespeicherten Metadaten in einer sinnvollen Datenstruktur ablegt. Diese Datenstruktur will ich dann in der übernächsten Version nutzen, um direkt beim Import Zuordnungen zu Fotoalben zu erstellen.

Was sind Metadaten?

Dienstag, Mai 17th, 2011

An der einen oder anderen Stelle hier im Blog habe ich bereits den Begriff  Metadaten verwendet. So richtig erklärt habe ich ihn allerdings noch nicht. Da die Metadaten mit der heute veröffentlichten neuen Programmversion langsam den Weg ins Programm finden, ist es ein guter Zeitpunkt, die Erklärung  jetzt nachzureichen.

Vorweg allerdings noch der Hinweis, das mit der neuen Version eine klitzekleine Datenbankänderung vorgenommen wurde. Es ist also wieder notwendig, die Datenbankstruktur zu aktualisieren. Die neue, dafür notwendige Workbench-Projektdatei befindet sich wieder im Unterverzeichnis „db“ des Programmverzeichnisses.

Was sind also nun die ominösen Metadaten?

Normalerweise ist es bei Bildverwaltungen so, das der Anwender nachdem er Bilder in der Datenbank importiert hat, diesen Bildern Fotoalben und/oder Schlagworte zuordnen kann. Die Zuordnung erfolgt manuell durch den Anwender und erfordert viel Zeit und Ausdauer. Das BVASystem möchte genau den umgekehrten Weg gehen. Nachdem ein Fotoalbum oder Schlagwort erstellt wurde, soll der Anwender eine Reihe von Kritieren festlegen können, die beschreiben, wann ein Bild zu dem Album bzw. Schlagwort gehört. Diese Kritieren, die unterschiedlicher Struktur sein können, bezeichne ich als Metadaten.

Die festgelegten Metadaten sollen vom Programm beim Bildimport dazu dienen, das die Bilder gleich automatisch den entsprechenden Fotoalben bzw. Schlagworten zugeordnet werden. Dadurch möchte ich erreichen, das der Anwender viel Arbeit spart. Es ist nicht mehr notwendig, für jedes Bild festzulegen wohin es gehört. Schlussendlich soll der Anwender beim Betrachten seiner Bilder nur noch, eventuell vorhandene, falsche Zuordnungen korrigieren.

Im einfachsten Fall nutzt man für ein Fotoalbum nur die Metainformation des Aufnahmedatums aus. Tante Trudes Geburtstag war halt am 16. Mai 2011. Alle Bilder, die nicht am 16. Mai aufgenommen worden sind, können also nicht von Tante Trudes Geburtstag stammen. Im Umkehrschluss sind also alle Bilder, die am 16. Mai aufgenommen wurden, von Tante Trudes Geburtstag.

Kompliziertere Zuordnungen sind natürlich denkbar. Alle Fotos die im Umkreis von 52° 31′ N, 13° 24′ O aufgenommen wurden, sind in Berlin gemacht. Alle Bilder, auf denen sich ein Gesicht befindet, sind Portraits. Alle Bilder, auf denen sich eine Horizont-Linie finden lässt, sind Landschaftsbilder. Alle Bilder, die nachts aufgenommen wurden und deren vorherrschende Farbe schwarz ist, sind Nachtaufnahmen. Generell sind der Phantasie hier keine Grenzen gesetzt.

Was ist davon bisher umgesetzt?

Mit dem Dialog zum Erstellen eines Fotoalbums war ich bisher ja nicht richtig zufrieden. Daher hat dieser Dialog nun eine komplett neue Oberfläche erhalten. In der neuen Oberfläche kann nun ausgewählt werden, welche Metadaten zu dem Fotoalbum gehören. Umgesetzt habe ich 2 Metadatentypen (Aufnahmedatum und Bildbesitzer), die in beliebiger Anzahl ausgewählt werden können. In der linken unteren Ecke des Dialoges gibt es eine Testfunktion, die die Metadaten in einem XML-Format abspeichert. In der Datenbank werden die Metadaten noch nicht abgelegt.

Eine Metadatendatei könnte wie folgt aussehen:

<?xml version="1.0" encoding="ISO-8859-1"?>
<metadata>
 <name>Album_Mosel_2011</name>
 <elemente>
  <element typ="0">
   <mindate>10.05.2011</mindate>
   <maxdate>20.05.2011</maxdate>
  </element>
  <element typ="1">
   <owner>Marc</owner>
  </element>
 </elemente>
</metadata>

In der nächsten Programmversion werde ich mich darum kümmern, das das Hauptmenü und die PopUp – Menüs wieder klarer strukturiert sind. Durch die Einführung der 3 Ansichtmodi ist die klare Struktur leider verloren gegangen, so das eine Anpassung notwendig wird.

Außerdem werde ich mich natürlich darum kümmern, die Metadatenfunktionalität weiter auszubauen. Bei dem Metadatentyp Bildbesitzer muss die Auswahlliste der möglichen Bildbesitzer gefüllt werden. Die Metadaten müssen natürlich in der Datenbank gespeichert werden. Eine Auswahlliste der verfügbaren Metadatendefinitionen muss ebenfalls gefüllt werden. Beim Editieren müssen die Metadatendefinitionen wieder geladen werden …. usw. Es gibt noch viel zu tun bis die Metadaten richtig genutzt werden können. Ich hoffe, das sich der Aufwand trotzdem lohnen wird.

Ordnungsprinzipien

Montag, März 28th, 2011

Gerade jetzt, wo die Implementation der Fotoalben schon relativ weit vorrangeschritten ist, ist ein guter Zeitpunkt sich Gedanken darüber zu machen, nach welchen Prinzipien Ordnung in die Bilderflut gebracht werden kann. Durch die Fotoalben hat das BVASystem ein flexibles System erhalten, mit der Anwender fast jedes Ordnungsystem manuell umsetzen können. Trotzdem ist es angebracht, zu schauen, welche weit verbreiteten Prinzipien  in das Programm zusätzlich implementiert werden können, damit sich diese mit wenig Aufwand nutzen lassen.

Welche Ordnungsprinzipien gibt es?

Weit verbreitet ist zum Beispiel ein relativ einfaches System, bei dem die Bilder zeitlich geordnet werden. Die Bilder, die an einem Tag aufgenommen wurden, werden einfach in einem Ordner gespeichert. Zur besseren Übersicht können die Ordner monats- bzw jahresweise zusammengefasst werden. Dieses einfache System hat den Vorteil, das sich niemals neue und alte Bilder miteinander vermischen. Es kommen immer nur weitere Ordner dazu, der Inhalt der bestehenden Ordner bleibt immer gleich. Das Auffinden eines speziellen Bildes gestaltet sich allerdings schwierig, wenn man nicht ungefähr weiß, wann das Bild aufgenommen wurde.

Ebenfalls weit verbreitet ist ein Ordnungssystem, welches auf dem Bildinhalt basiert.  Jedes einzelne Bild wird dabei durch eine Anzahl einzelner Schlagwörter verknüpft. Wenn man den Aufwand nicht scheut, wird man damit belohnt, das Bilder, die thematisch zusammengehören ohne größere Probleme lokalisiert werden können. Neben dem hohen Aufwand hat dieses System aber auch Nachteile. Nicht ganz einfach ist das Festlegen der Schlagworte, denn diese müssen aussagekräftig und auch bei späteren Verschlagwortungen von ähnlichen Bildern wieder gleich sein. Es nützt zum Beispiel relativ wenig, wenn die Hälfte der Bilder mit dem Schlagwort „Spatz“ und die andere Hälfte mit „Feldsperling“ versehen wurde. Logische Problemlösung dafür ist eigentlich, alle Bilder mit den Schlagworten „Spatz“ und „Feldsperling“ zu versehen. Damit steigt allerdings der Aufwand für die Verschlagwortung weiter an und trotzdem ist die Gefahr, kein Schlagwort vergessen zu haben, nicht ausgeschlossen.

Ein weiteres Prinzip ist nutzbar, wenn zu den Bildern GPS-Informationen vorhanden sind. Dann können Bilder, die am gleichen Ort aufgenommen wurden, in eine Kategorie geordnet werden. Vorteilhaft ist, das dabei Kartenansichten erzeugt werden können, in denen man relativ leicht navigieren kann. Für die Suche nach Bildinhalten bringt das System nur dann Vorteile, wenn sich der Bildinhalt eindeutig lokalsieren lässt. Das „Brandenburger Tor“ kann eben nur in Berlin aufgenommen werden, ein „Spatz“ findet man dagegen wohl in jeder deutschen Stadt.

Als viertes System könnten automatisch bestimmte Parameter genutzt werden. Es könnten Beispielsweise alle Bilder nach ihrer vorherschenden Farbe geordnet werden. Alle Bilder einer Banane würden so in die Kategorie „gelb“ eingeordnet werden. Vorteil eines solchen Systems ist, das es ohne großen Aufwand umgestetzt werden kann. Leider ist es aufgrund automatischer Parameter nicht möglich den Inhalt des Bildes zu erkennen.  Nicht alle „gelben“ Bilder zeigen Bananen und alle Bananen sind auch nicht „gelb“. Unreife Bananen sind „grün“ und würden leider in einer anderen Kategorie landen.

Weiterhin könnten Bilder noch nach Parametern geordnet werden, die während der Bildaufnahme mit gespeichert werden. Solche Parameter wären zum Beispiel: verwendete Kamera, Brennweite oder Belichtungszeit. Da ich denke, das solche Systeme kaum genutzt werden, werde ich darauf jetzt nicht weiter eingehen.

Was bedeutet das nun für eine Bilddatenbank und für das BVASystem im Speziellen?

Der große Vorteil einer Bilddatenbank liegt darin, das nicht nur ein Ordnungsprinzip genutzt werden kann. Durch eine Mischung von mehreren Systemen kann das Auffinden eines Bildes erleichtert werden, da die Nachteile der einzelnen Systeme nicht so sehr zum tragen kommen. Vielleicht erinnert man sich an das ungefähre Aufnahmedatum des Bildes, welches man gerade sucht. Oder man hat genau den Ort vor Augen, wo das Bild aufgenommen wurde. Im Idealfall führt jede der Suchanfragen zu dem gesuchten Bild.

Ziel des BVASystems sollte es sein, möglichst alle Ordnungsprinzipien zu ermöglichen. Dabei soll der Anwender aber nicht in ein starres Konzept gepresst werden, welches wahrscheinlich nicht seiner Wunschvorgehensweise entspricht. Es gilt also einen Mittelweg zu finden zwischen einer kompletten Freiheit und einer selbsterklärenden Struktur.

Die Fotoalben sind ein erster Schritt um dieses Ziel zu erreichen. Durch die Fotoalben habe ich dem Anwender ein System geschaffen, mit dem er selbst eine Mischung aus den oben genannten Prinzipien umsetzen kann. Mein Beispielbild aus der Ankündigung der Fotoalben vermischt die Prinzipien der inhaltlichen („Urlaub“) und zeitlichen („Alpen 2002“) Ordnung.

Fotoalben im Rubrikenbaum

Fotoalben im Rubrikenbaum

Weiterhin ist bereits eine fest vorgegebene zeitliche Ordnung nach dem „Aufnahmedatum“ in dem Programm integriert, welches beim Aufbau keinerlei Benutzerinteraktiv benötigt. Das System wird einfach beim Import der Bilder mit erstellt.  In der Zukunft werde ich das BVASystem sicherlich um das eine oder andere fest vorgegebene Ordnungssystem erweitern. Welche das im genauen sein wird, kann ich noch nicht sagen. Ein System zur Verschlagwortung der Bilder wird aber auf jeden Fall mit dabei sein.