Posts Tagged ‘EXIF’

Erweiterung des EXIF-Moduls zur Auswertung von GPS-Informationen

Sonntag, Oktober 7th, 2012

In der EXIF Spezifikation sind rund 25 Datenfelder vorhanden, die dazu dienen den Aufnahmeort eines Fotos festzuhalten. So können zum Beispiel geographische Länge und Breite, die Höhe, die Blickrichtung und sogar die Richtung und Geschwindigkeit mit der sich die Kamera während der Aufnahme bewegt hat, im Foto abgespeichert worden sein.

Auch wenn es aktuell noch recht wenige Kameras gibt, die über einen GPS-Empfänger verfügen, habe ich mich trotzdem entschlossen, das das  BVASystem mit diesen Daten umgehen können muß.  Ich halte die Kenntnis über den Aufnahmeort für eine sehr wichtige Information, um ein Foto einem Fotoalbum bzw. sogar einem Schlagwort zuzuordnen. Ich war in der letzten Woche zur Entspannung für ein paar Tage an der Nordsee. Nun könnte ich alle Fotos, die in der Nähe von 54°1′N 8°55′E aufgenommen wurden, dem Album „Friedrichskoog“ zuordnen. Da es mir dort gut gefallen hat und ich wahrscheinlich noch einmal hinfahren werde, ist diese Zuordnung sogar sinnvoller als eine Zuordnung per Aufnahmedatum. Bilder der nächsten Fahrt könnten ohne neue Regel sofort dem Album „Friedrichskoog“ zugeordnet werden. Per Aufnahmedatum ist dies nicht möglich, da ich den neuen Reisetermin ja noch nicht kenne.

Aber soweit ist es noch nicht. In der, ab heute zum Download bereitstehenen Version 2.1.2.51-dev, können vorhandene GPS-Daten aus Fotos extrahiert und auch in der Datenbank abgespeichert werden. Außerdem werden sie in der Bildinformationsansicht auf dem Aufnahmeort-Panel angezeigt.

Außerdem habe ich mal wieder an meiner Lieblingsbaustelle weitergearbeitet. Die oberste Ebene der manuellen Bildbewertung kann nun jederzeit per Strg+1, Strg+2, … und Strg+5 gesetzt werden. Mit Strg+0 kann die vorhandene Bewertung wieder entfernt werden. Diese Shortcuts sind ganz praktisch, wenn man mehrere Bilder schnell bewerten möchte. Zur Visualisierung der Bewertungen habe ich die Einzelbild und Miniaturbildansichten so verändert, das sie dort angezeigt werden. Und auch für die nächste Version habe ich noch eine Idee, wie ich die Bildbewertungsfunktionen verbessern kann. Lasst euch also überraschen.

Neue Miniaturbilderansicht mit Bildbewertungen

Neue Miniaturbilderansicht mit Bildbewertungen

 

Metadaten nach dem IPTC-NAA-Standard

Samstag, September 29th, 2012

Sofern ich irgendwann einmal mit der endlosen Bildbewertungs-Geschichte fertig bin, habe ich auf meiner Roadmap stehen, das im BVASystem Metadaten nach dem IPTC-NAA-Standard erfasst werden können. Da ich allerdings an einigen Stellen hier im Blog bzw. im Bugtracker die Begrifflichkeit „IPTC“ genutzt habe, möchte ich heute ganz kurz erläutern, was IPTC-Metadaten sind.

Was sind IPTC-Metadaten?

Ähnlich, wie bei den EXIF-Daten, handelt es sich bei den IPTC-NAA-Standard um einen Standard, der definiert, in welcher Form gewisse Daten innerhalb eines Fotos abgelegt werden können. Im Gegensatz zu den EXIF Daten, die meist eher technischer Natur sind, handelt es sich bei den IPTC Daten hauptsächlich um bildbeschreibende Informationen. Zum Beispiel können in den IPTC Daten eine Bildbeschreibung, der Fotograf, Schlagworte aber auch Bildrechte gespeichert werden.

Für eine Bildverwaltung sind die IPTC Daten wichtig, da man mit ihnen einen Austausch zwischen verschiedenen Bildverwaltungen sicherstellen kann. Habt ihr zum Beispiel mit Programm „A“ bereits für tausende Bilder Bildbeschreibungen erstellt, so können sie in Programm „B“ direkt importiert werden, ohne das die Beschreibungen manuell kopiert werden müssen. Voraussetzung dafür ist natürlich das sowohl Programm „A“ als auch Programm „B“ den IPTC-Standard unterstützen.

In welcher Form wird das BVASystem den IPTC-Standard unterstützen?

Vielleicht ist es etwas übertrieben, das was ich in naher Zukunft implementieren will, IPTC zu nennen. Allerdings orientiert sich meine Vorgehensweise an dem Standard. Beim letzten Datenbankstrukturupdate habe ich bereits Datenbankfelder angelegt, die für die meiner Meinung nach wichtigsten IPTC-Daten bestimmt sind. Als nächstes möchte ich nun, das genau diese Datenfelder innerhalb der Bilddatenbank gefüllt werden können. Anschließend ist es wichtig, das nach den erfassten Daten recherchiert werden kann.

Für später habe ich mir vorgenommen, das bereits vorhandene IPTC Daten direkt beim Hinzufügen eines Fotos zur Bilddatenbank berücksichtigt werden. Außerdem möchte ich eine Exportfunktion schaffen, bei der die Originalbilder mit geänderten EXIF und IPTC Datenbereich wieder aus der Datenbank herausgeholt werden können. Dafür habe ich mir allerdings noch keinen genauen Zeitplan überlegt.

 

Metadatenelemente: Blende und Belichtungszeit

Montag, Juni 11th, 2012

Mit nur einem Tag Verzug habe ich es heute geschafft, die vor dem Urlaub gesteckten Ziele zu erreichen. In der neuen Version 2.1.1.44-dev der Bilddatenbank BVASystem habe ich diesmal sogar 2 neue Metadatenelemente hinzugefügt. Allerdings muss ich auch gestehen, das es sich um relativ einfache Metadatenelemente handelt. Sowohl die Blende, als auch die Belichtungszeit werden aus dem EXIF-Header der Bilddatei bezogen. Dadurch entfallen hier diesmal auch die großen Erklärungen. Es wird einfach ein Bereich definiert, in dem die Blende bzw. die Belichtungszeit liegen muss, um eine Zuordnung zu erreichen.

Metadatenelemente Blende und Belichtungszeit

Metadatenelemente Blende und Belichtungszeit

Die einzige Schwierigkeit daran lag in der Oberflächengestaltung, denn ich wollte nicht, das ihr beispielsweise 0,000125
eingeben müsstet, wenn ihr eine Belichtungszeit von 1/8000 s gewählt haben wollt. Aber auch eine fest vorgegebene Liste wollte ich nicht implementieren, da fehlende Werte nicht ergänzt werden könnten. Daher habe ich eine weitere Konfigurationsdatei geschaffen, welche alle Listenwerte enthält. Diese Datei wird bei jedem Programmstart eingelesen und bei den Metadatenelementen benutzt. Sollte ich einige Werte nicht bedacht haben, können sie einfach nachgetragen werden. Der Syntax der neuen Konfigurationsdatei „listen.ini“ sollte, so denke ich, leicht verständlich sein.

Welche weiteren Änderungen wurden am Programm umgesetzt?

Außerdem habe ich auch diesmal wieder an der Bildinformationsansicht weitergearbeitet. Neu hinzugekommen ist die Möglichkeit, mehrere Ansichten zu speichern und zwischen ihnen zu wechseln. Außerdem werden die Ansichten in der Größe angepasst, sobald sich die Größe des Programmfensters ändert. Da ihr noch keine eigenen Ansichten anlegen könnt, habe ich 2 Demonstrationsansichten geschaffen, mit denen der Ansichtswechsel getestet werden kann.

Wie geht es weiter?

Die nächste Version der Bildverwaltung wird die letzte sein, in der ich neue Metadatenelemente hinzufüge. Neben der bereits implementierten Blende und Belichtungszeit fehlen nämlich noch die Brennweite und die ISO-Empfindlichkeit, um die wichtigsten EXIF Parameter abzudecken. Außerdem habe ich vor, einige kleinere Korrekturen an der Bildinformationsansicht durchzuführen.

Langfristig hat sich durch meinen Urlaub einiges in der Planung geändert. Meinen aktuellen Plan, dessen Umsetzung nach heutiger Schätzung bis ungefähr Mitte/ Ende August dauern wird, habe ich im Bugtracker eingepflegt. Er beinhaltet hauptsächlich eine Unterstützung bei der ersten Grob-Sortierung, die vor dem Einsatz einer Bildverwaltung durchgeführt werden sollte. In den nächsten Tagen werde ich mindestens einen weiteren Blog verfassen, der meine Ziele genauer erläutern wird.

Das Bildinformations-Popupfenster

Sonntag, Februar 12th, 2012

Dem aufmerksamen Leser dieses Blogs sollte bekannt sein, das ich mir als nächsten kleinen Meilenstein für das BVASystem, ein Popupfenster ausgesucht hatte, in dem Informationen zu dem jeweiligen Bild angezeigt werden. Dieses Bildinformations-Popupfenster ist nun in der Version 2.1.0.37-dev der Bilddatenbank endlich fertig.

Bildinformations-Popupfenster mit EXIF-Daten

Bildinformations-Popupfenster mit EXIF-Daten

Ich freue mich sehr, das ich nun dieses Fenster beim Betrachten meiner Fotos zur Verfügung habe. Endlich werden die gespeicherten Informationen angezeigt und ich kann nun mit nur einem Klick prüfen, welche Aufnahmebedingungen beim Fotografieren herrschten. Aktuell werden im Informations-Popupfenster die, meiner Meinung nach, 8 wichtigsten Daten aus dem Exif-Header angezeigt. Zu den 8 Parametern gehören:

  • Aufnahmedatum
  • Kamerahersteller/Kameramodell
  • Brennweite
  • Iso-Empfindlichkeit
  • Belichtungszeit
  • Blende
  • Abstand zum Objekt

Die Komponente, die zur Anzeige der Bildinformationen dient, ist allerdings so implementiert, das es später möglich sein wird, sich genau die Informationen anzeigen zu lassen, die man persönlich bevorzugt. Auch die Anzahl der Informationen ist nicht in Stein gemeißelt, ab dem 9ten Element wird einfach eine Scrollbar in dem Fenster angezeigt.

Außerdem habe ich in den letzten Tagen noch an dem Administrationstool weitergearbeitet. Ich habe für die Erstellung des BVASystem Datenbankschemas einen Optionsdialog erstellt, der alle notwendigen Informationen erfasst. Den Dialog werde ich allerdings erst in einem späteren Blog beschreiben, da die Implementierung der eigentlichen Funktionalität erst in den nächsten 2-3 Wochen ansteht.

Erweiterung des Exif-Moduls

Donnerstag, Dezember 22nd, 2011

Ich hatte ja kaum damit gerechnet, aber ich habe es doch tatsächlich geschaft, in diesem Jahr noch eine Entwicklerversion fertigzustellen. Die Fertigstellung der stabilen Softwareversion war genau der Motivationsschub, den ich gebraucht habe. Es macht doch deutlich mehr Spaß, etwas neues zu entwickeln als immer nur Fehler zu suchen und zu korrigieren. Dies nun wird aber die definitiv letzte Version des Jahres sein, denn viel Zeit ist ja nicht mehr und die Feiertage möchte ich ehrlich gesagt nicht am Rechner verbringen.

Was wurde neu implementiert?

Wie bereits angekündigt, war das Ziel für diese Version, das die ungenutzen EXIF-Datenbankfelder genutzt werden. Dazu wurde als erstes natürlich das EXIF-Modul angepasst, welches die entsprechenden Daten aus dem Header ausliest. Außerdem wurden die internen Datenkomponenten so angepasst, das neuen Informationen nach dem Auslesen im Speicher gehalten werden können. Dort stehen die Informationen für zukünfige Erweiterungen am Programm jederzeit zur Verfügung. Die dritte Änderung erfolgte beim Bildimport, denn hier werden die neuen Datenbankfelder gefüllt.

Um nicht nur unsichtbare Änderungen zu programmieren, habe ich noch die Metadatenzuordnungen erweitert. Es kann nun den zusätzlichen Metadatentyp „Verwendete Kamera“ für die automatischen Zuordnungen genutzt werden.

Metadaten mit neuem Metadatentyp "Verwendete Kamera"

Metadaten mit neuem Metadatentyp "Verwendete Kamera"

Was kommt als nächstes?

Eigentlich habe ich vor, als nächstes größere Änderungen an der Oberfläche vorzunehmen. Die neu hinzugekommenen EXIF-Datenfelder müssen in der Oberfläche angezeigt werden. Dazu möchte ich der Miniaturbilder und Filmstreifenansicht, bei dem „Bild markieren“ Knopf einen weiteren Knopf hinzufügen. Durch diesen soll sich ein PopUp-Dialog öffnen, auf dem die EXIF-Daten angezeigt werden. Außerdem soll neben den 3 bekannten Ansichten eine vierte Ansicht hinzukommen,  auf der alle gespeicherten Daten zu einem Bild angezeigt werden. Hier soll im Gegensatz zu dem PopUp-Dialog eine Navigation innerhalb der aktiven Bildliste möglich sein.

Diese Änderungen werden aber wohl etwas nach hinten verschoben, da ich aller Wahrscheinlichkeit nach meine Entwicklungsumgebung auf den neusten technischen Stand bringen will. Mein Delphi 2005 ist mittlerweile bald 8 Jahre alt und es ist wohl von Vorteil, wenn man es durch etwas zukunftssicheres ersetzt. Ich habe in der letzten Woche bereits kurz erfolgreich getestet, ob eine Umstellung auf das neue Delphi XE2 prinzipell machbar ist. In den nächsten Wochen werde ich berichten, zu welchen Veränderungen der Wechsel beim BVASystem führt. Ich hoffe, das ich bei der Umstellung nicht auf allzuviele Probleme treffe und ich mich dann schnell wieder auf die eigentliche Weiterentwicklung konzentrieren kann.

Kleiner Ausblick auf 2012

Dienstag, November 15th, 2011

Für ein Jahresfazit mag es nun noch etwas früh sein, aber da ich den Rest des Jahres damit verplant habe, eine möglichst fehlerfreie, einsetzbare Softwareversion der Bilddatenbank fertigzustellen, bleibt nur noch wenig Zeit für große Änderungen. Daher sei es mir gegönnt, einmal einen kleinen Ausblick aufs nächste Jahr zu wagen. Denn ich habe ohne Zweifel mehrere große Änderungen geplant. Dieser Blogeintrag soll euch zeigen, wohin die Reise im nächsten Jahr gehen wird.

EXIF-Informationen

In den aktuellen Versionen werden vom EXIF-Header nur das Aufnahmedatum und das Vorschaubild genutzt. Dies ist natürlich etwas dürftig und bedarf einer Erweiterung. Ziel ist es, das die EXIF-Header Informationen möglichst vollständig angezeigt und auch in der Datenbank gespeichert werden können. Langfristig soll es auch möglich sein, das mit Hilfe der so gewonnenen Daten, in der Datenbank recherchiert werden kann.

Schlagworte

Eine Standardfunktion, die meiner Bilddatenbank noch fehlt ist die Verschlagwortung von Fotos. Eine normale Verschlagwortung werde ich allerdings nicht umsetzen. Ich stelle mir vor, das ich den vorhandenen Mechanismus der automatischen Zuordnungen ausnutze und ihn ebenfalls für die Verschlagwortung anbieten werde. Natürlich werden dann auch andere Kriterien benötigt als bei den Zuordnungen zu Fotoalben.

Automatische Zuordnungen

Beispielsweise habe ich vor, den Zuordnungsmechanismus um einen GPS-Koordinaten-Parameter zu erweitern. Damit wäre es dann beispielsweise möglich, das alle Bilder im Umkreis von 25km um 52° 31′ N, 13° 24′ O automatisch dem Schlagwort „Berlin“ zugeordnet werden können. Natürlich wird der Parameter ebendso für die Fotoalbenzuordnung zur Verfügung stehen, falls sich wer ein Fotoalbum „Berlin“ anlegen möchte. Des weiteren wird es gerade für die Schlagworte interessant sein, wenn man diese anhand einiger Beispielbilder definieren kann. Die Zuordnung erfolgt dann über einen Ähnlichkeitsvergleich zwischen den Beispielbildern und den zu importierenden Fotos.

Kopieren/Verschieben von Bildern auf Dateiebene

Der kleinste Änderungswunsch, der sich mir beim Arbeiten mit den aktuellen Versionen sofort erschließt, ist das Kopieren bzw. Verschieben von Bildern im Dateisystem. Ich betreibe auf http://www.marc-alinski.de eine kleine Fotoseite, auf der ich meine Bilder veröffentliche. Mein Arbeitsablauf sieht vor, das ich neue Fotos auf dem Dateisystem ablege und anschließend einige schöne Bilder auswähle, die ich dann auf die Seite hochlade. Zum Auswählen nutze ich bereits das BVASystem. Nur das Kopieren der ausgewählten Bilder in ein anderes Verzeichnis erledige ich noch mit Windows Standardtools und ärgere mich jedes Mal, wenn ich die ausgewählten Bilder anhand des Dateinamens identifizieren muss. Es liegt also nahe, das das BVASystem nicht nur Fotos löschen, sondern auch die Funktionen Kopieren und Verschieben beherrschen muss.

Zusammenfassung

In welcher Reihenfolge ich die Änderungen angehen werde, habe ich noch nicht festgelegt. Klar ist allerdings, das sich in diesen paar Zeilen mehr als genug Arbeit fürs ganze nächste Jahr befindet. Detailiert werde ich die einzelnen Punkte beschreiben, sobald ich mich an ihrer Umsetzung versuchen werde. Ich freue mich jedenfalls darauf, das ich bald wieder größere Änderungen angehen kann.

Automatisches Drehen von Fotos und andere neue Funktionen

Mittwoch, August 31st, 2011

Für die Version 2.0.0.27 der Bildverwaltung habe ich diesmal die kompletten drei Wochen Entwicklungszeit benötigt. Dafür sind aber auch drei größere neue Funktionen entstanden, die ich mittlerweile nicht mehr missen möchte. Gerade die Erweiterung des EXIF-Moduls hab ich liebgewonnen.

Die erste Woche habe ich damit verbracht, das kürzlich vorgestellte EXIF-Modul zu erweitern. Es wird nun, sofern es vorhanden ist, das Orientierungs-Tag ausgewertet. Einige Digitalkameras mit Lagesensor speichern dort ab, ob das Bild im Hochformat oder Querformat aufgenommen wurde. Mit dieser Information ist es ein leichtes, die Fotos vor der Anzeige in die korrekte Richtung zu drehen. Es ist richtig schön, das der Aufwand zum Drehen der Bilder quasi komplett wegfällt.

Weiterhin wird das Thumbnail des EXIF-Headers genutzt, damit die Bildmatrix und der Filmstreifen schneller aufgebaut werden können. Es geht nämlich schneller, ein kleines Bild zu laden, als das Gesamtbild zu öffnen und dieses klein zu skalieren. Da das EXIF-Thumbnail wahrscheinlich kleiner ist als die Thumbnails im BVASystem, werden nachdem alle EXIF-Thumbnails geladen wurden, skalierte Originalbilder geladen.  Dieser Vorgang kann allerdings jederzeit abgebrochen werden. Für die Zukunft habe ich mir vorgenommen, den Ladevorgang so zu modifizieren, das zuerst die Bilder geladen werden, die sich im sichtbaren Bereich befinden. Vorerst muss es aber reichen, das die Bilder der Reihe nach geladen werden.

Neu ist auch im Datenbankmodus ein Eintrag für „Fotos ohne Fotoalbum“. Dieser dient dazu, das nachdem die automatischen Zuordnungen durchgeführt wurden, Bilder leicht gefunden werden können, welche noch keinem Fotoalbum zugeordnet sind. Von dort können die Bilder dann manuell einem Fotoalbum zugeordnet werden.

Fotos ohne Album

Fotos ohne Album

Die letzte Änderung betrifft die Metadatendefinitionen. Dort ist es nun möglich, das bereits gespeicherte Definitionen verändert werden können. Kompliziert daran war, das durch eine Änderung ebenfalls der Entscheidungsbaum aktualisiert werden musste. Auch werden nun nicht mehr benötigte Metadatendefinitionen gelöscht. Gelöscht wird zum Beispiel, wenn einem bereits angelegtem Fotoalbum eine neue bereits vorhandene Metadatendefinition zugewiesen wird. In diesem Fall wird die alte Definition nicht mehr benötigt. Beim Löschen von Fotoalben werden ebenfalls nicht mehr benötigte Metadatendefinitionen gelöscht.

Was ist der EXIF Header und wofür ist er gut?

Montag, August 8th, 2011

Der aufmerksame Leser meiner im Bugtracker veröffentlichten Roadmap hat bereits gesehen, das in der neuen Programmversion 2.0.0.26 ein neues Modul genutzt wird, welches den EXIF-Header eines Bildes auslesen kann. Obwohl der EXIF Header recht weit verbreitet ist, und demnach viele Nutzer mit der Abkürzung wohl etwas anfangen können, so möchte ich trotzdem kurz für den Rest erklären was der EXIF Header ist und wofür er gut ist.

EXIF ist die Abkürzung für Exchangeable Image File Format. Moderne Digitalkameras nutzen diesen Standard der Japan Electronics and Information Technology Industries Association (JEITA) um aufnahmerelevante Informationen direkt mit dem Bild zusammen abzuspeichern. Die Daten werden in einem sogenannten Header am Anfang einer Bilddatei abgelegt. Der Header selber besteht aus einer sequentiellen Auflistung von sogenannten EXIF-Tags. In jedem Tag wird eine Information, wie zum Beispiel das Aufnahmedatum, gespeichert. Es gibt einige dutzend Tags, die so gut wie immer in einem EXIF-Header vorhanden sind.

Zu diesen Tags zählen:

  • Kamerahersteller
  • Kameramodell
  • Aufnahmedatum
  • Bildorientierung
  • Belichtungszeit
  • Blende
  • Brennweite
  • ISO-Wert

Zusätzlich könnten beispielsweise bei einer Kamera mit integriertem GPS die Koordinaten der Bildaufnahme im Bild ablegt werden. Ebenfalls ist es möglich, das bereits ein kleines Vorschaubild im Header integriert ist. Auch werden häufig herstellerabhängige technische Parameter mit im Header abgespeichert, die sich nicht ohne weiteres allgemein gültig interpretieren lassen. Insgesamt gibt es mehrere hundert verschiedene EXIF-Tags.

Für die Bildverwaltung ganz interessant ist, das der EXIF Header durch die sogenannten IPTC Tags nachträglich erweitert werden kann. Dort lassen sich Bildbeschreibungen, der Fotograph des Bildes und Copyright-Hinweise ablegen. In einer Bildverwaltung sollte diese Möglichkeit genutzt werden, damit für den Anwender die Möglichkeit besteht das Verwaltungsprogramm zu wechseln ohne das wieder alle Bilder neu beschrieben werden müssen.

Vorerst habe ich mir für das BVASystem nur vorgenommen, das das Aufnahmedatum eines Bildes ausgelesen werden kann, damit auch bearbeitete Bilder an die richtigen Stellen der Datenbank sortiert werden können. Nach und nach werde ich das EXIF Modul erweitern, bis möglichst alle Informationen ausgewertet werden können.