Workflow für digitale Photographie

Table of Contents

!!!! WORK IN PROGRESS !!!!
please go to http://itp.tugraz.at/~ahi/Foto/workflow/

Ziele

Die Originaldaten der Kamera sollen unter allen Umständen als digitales Negativ erhalten bleiben. Auch die Metadaten im EXIF-Header sollen soweit sinnvoll erhalten bleiben.

Um die Arbeit mit den digitalen Bilddaten schnell und sicher zu halten, müssen alle Schritte soweit möglich automatisiert ablaufen.

Vorbereitungen

  • Checkliste mit notwendigem Equipment anlegen
  • Speicherkarten in benötigter Anzahl bereitlegen.
  • Bildqualität einstellen: Raw, nur wenn Raw technisch oder wegen begrenztem Speicherplatz nicht möglich ist, alternativ JPEG in bester Qualität.
  • Bildstil: “neutral”, damit das Vorschaubild im elektronischen Sucher eine realistische Einschätzung der aufgezeichneten Roh-Daten ermöglicht.
    • EOS 1000D: Automatische Belichtungsoptimierung Custom Function 5
  • Autofokus auf back button legen
    • EOS 1000D: Auslöser AE-Specherung Custom Function 9 auf 3
  • Unsinnige Features abstellen: Vorblitz zum Reduzieren der Roten Augen, digitaler Zoom, Sepia-Tonung – ich kann später am PC in besserer Qualität dieselben Effekte erzielen.
  • Aufnahmemodus und “Film”-Empfindlichkeit einstellen
  • Testaufnahmen mit Histogrammdarstellung <cite>reichmann:histograms</cite> überprüfen
  • Uhr der Kamera korrekt setzen (UTC, keine Sommerzeit)
# Canon EOS 1000D
gphoto2 --abilities 
gphoto2 --list-config
gphoto2 --get-config /main/actions/syncdatetime
gphoto2 --get-config /main/settings/datetime
gphoto2 --set-config /main/actions/syncdatetime=1 # setze UTC vom Computer
gphoto2 --get-config /main/settings/datetime      # Ausgabe in lokaler Zeit 
# Olympus TG-310
gphoto2 --abilities 
gphoto2 --list-config
gphoto2 --set-config /main/settings/datetime=$(date --utc +%s)
gphoto2 --get-config /main/settings/datetime
# Nikon Coolpix A
gphoto2 --abilities 
gphoto2 --list-config
#gphoto2 --set-config /main/settings/datetime=$(date --utc +%s)
#gphoto2 --get-config /main/settings/datetime

Anscheinend reicht das auch schon, um die Zeit wie gewünscht auf UTC zu setzen; sonst müsste vor dem SET noch TZ=UTC stehen. Weitere Informationen siehe http://blog.davidburren.com/2012/04/setting-time-on-canon-cameras.html.

Kopieren der Bilder auf den Computer

Vom Programm digicam-download werden alle Bilder aus dem Speicher der Kamera oder einer externen Festplatte in den PC kopiert. könnte eigentlich von udev gestartet werden

  • Runterladen der Bilder von der Kamera oder den externen Festplatten sobald als möglich. Download funktioniert schneller über Firewire oder USB 2.0 (full speed) – wenn notwendig mit einem Kartenleser.
  • Das Programm zum Download soll die Daten sinnvoll umbenennen und an passender Stelle im Dateisystem ablegen.
    • Für jeden Download wird ein Verzeichnis $HOME/Bilder/$DATUM-$ZEIT angelegt.
    • Die Benennung der Bilder nach Datum und Uhrzeit der Aufnahme ist die einzig sinnvolle vollautomatische Möglichkeit. Ich habe eine vollständige Auflösung bis auf 1/100 Sekunden mit vierstelliger Jahreszahl gewählt; Dateinamen sind daher nach dem Muster YYYYMMDD-HHMMSSss.jpg aufgebaut.
  • Formatieren der Speicherkarten immer in der Kamera – nicht vom Computer gesteuert

Nachbearbeitung – Bildbearbeitung

Bearbeiteten Bilder wird hinter dem Grundnamen der Datei ein Bindestrich und zusätzlich eine Bezeichnung (vorzugsweise eine laufende Nummer) angefügt.

  • Rotieren von Bildern im Hochformat: Wenn die Kamera in den EXIF Einträgen Lageinformation speichert, werden die Bilder bereits beim Runterladen von der Kamera korrekt gedreht; sonst muß mit dem Programm digicam-rotate manuell gedreht werden. Bei JPEG Bildern ist zur Vermeidung zusätzlicher Kompressionsartefakte darauf zu achten, daß die Rotation ohne Neukomprinierung durchgeführt wird - dazu wird von digicam-rotate das Programm jpegtrans verwendet.
  • Löschen der weniger guten Bilder: geeqie, digikam (früher: gqview, xv, gthumb)
  • Korrektur der Tonwerte: gimp - Weil dabei Bildinformationen verloren gehen, lege ich eine Kopie der Datei an.

Archiv

Organisation des Archivs

Proof

Vom Programm digicam-archiv-wartung werden für Bildschirmansicht passend (PAL) aufgelöste Vorschau-Bilder in derselben Directory-Struktur wie im Archiv erzeugt. Dabei werden automatische Bildveränderungen vorgenommen:

  • Farben und Helligkeiten normalisieren
  • unscharf maskieren
  • schwarzer Rahmen mit Copyright-Hinweis

Bildformate

Um das Archiv einfach zu halten, sollte die Anzahl der unterstützten Bildformate beschränkt sein.

  • Raw-Bilder sind stark von der verwendeten Kamera abhängig. (siehe \cite{reichmann:_raw_files})\\ Die Verwendung von Raw kann auch die leidige Beschränkung von GIMP auf nur 8 Bit pro Farbkanal weitgehend kompensieren.
  • Alle gescannten Bilder werden von mir ins PNG-Format gewandelt, gegenüber dem dafür oft verwendeten TIFF hat das folgende Vorteile:
    • standardisierte Komprimierung – viele TIFF-Implementierung bieten je nach Plattform nur eine beschränkte Auswahl unter den vielen möglichen Kompressionsverfahren an.
    • Kompression ist meist effizienter als die besten verlustfreien Kompressionverfahren bei TIFF.
    • Bietet wie TIFF beliebig viele Ebenen und bis zu 16 Bit Helligkeitsauflösung je Farbe.
  • JPEG als kleinster gemeinsamer Nenner für einfache digitale Kameras notwendig.
  • XCF und PSD sind als Format der beiden wichtigsten Bildbearbeitungsprogramme wohl unverzichtbar.

Backup

Bildschirm kalibrieren

Das grafische Frontend DisplayCAL funktioniert zur Zeit nicht; weil es noch (aktuell: [2021-04-20 Di]) von Phython 2 abhängig ist, das nicht mehr gewartet wird. Eine funktionierende Version für Python 3 ist mittelfristig wohl nicht zu erwarten - oder doch?

Alternativen:

Infos:

Metadaten

  • EXIF: In den EXIF-Daten werden vor allem von Digitalkameras technische Information zu Bildern gespeichert.
  • IPTC (International Press Telecommunications Council): Die IPTC-Felder sind der de-facto Standard für inhaltliche Metadaten von Fotografien, obwohl sie in dieser Form veraltet sind und in weiterer Folge durch XMP ersetzt werden sollen.
    Perl-Modul: Image::IPTCInfo
  • XMP (Adobe’s Extensible Metadata Platform): In Adobe’s Extensible Metadata Platform werden die Daten in einem XML-basierten Resource Description Framework (RDF) abgelegt.
  • Photo-RDF: Vom World Wide Web Consortium wurde eine RDF-Vorschlag ausgearbeitet, um Photos mit Metadaten zu taggen – dieser Vorschlag scheint nicht sehr verbreitet zu sein.
  • Dublin Core Metadata Initiative: http://dublincore.org/

Software

  • jhead – Exif Jpeg camera setting parser and thumbnail remover. Lesen und manipulieren der EXIF Daten, automatisches Umbenennen der Datei, autorotation, …
  • perl Modul Image::ExifTool
    ExifTool provides an extensible set of perl modules to read and write meta information in image, audio and video files.
    ExifTool reads EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profile, Photoshop IRB, AFCP and ID3 meta information from JPG, JP2, TIFF, GIF, BMP, PICT, QTIF, PNG, MNG, JNG, MIFF, PPM, PGM, PBM, XMP, EPS, PS, AI, PDF, PSD, DCM, ACR, THM, CRW, CR2, MRW, NEF, PEF, ORF, RAF, RAW, SRF, SR2, MOS, X3F and DNG images, MP3, WAV, WMA and AIFF audio files, and AVI, MOV, MP4 and WMV videos. ExifTool also extracts information from the maker notes of many digital cameras by various manufacturers including Canon, Casio, FujiFilm, JVC/Victor, Kodak, Leaf, Minolta/Konica-Minolta, Nikon, Olympus/Epson, Panasonic/Leica, Pentax/Asahi, Ricoh, Sanyo and Sigma/Foveon.
    ExifTool writes EXIF, GPS, IPTC, XMP, JFIF, MakerNotes, Photoshop IRB and AFCP meta information to JPEG, TIFF, GIF, PSD, XMP, PPM, PGM, PBM, PNG, MNG, JNG, CRW, THM, CR2, MRW, NEF, PEF, MOS and DNG images.
  • exempi: C++ Library zum Lesen und Manipulieren von XMP-Dateien - nicht feature complete, aber ambitioniert.
  • photomolo, jpegcom, exifiron and jpegnail
  • Generic Graphical Library (GEGL)

Archivierung & Entwicklung

  • Darktable wird im Moment von mir verwendet.
  • digiKam is a simple digital photo management application for KDE, which makes importing and organizing digital photos a “snap”. The photos can be organized in albums which can be sorted chronologically, by directory layout or by custom collections. An easy to use interface is provided that enables you to connect to your camera and preview, download and/or delete your images.

    digiKam kann EXIF, IPTC und XMP verwenden; unterstützt wird zumindest PNG, JPG und CR2. Derzeit mein Wahl.

  • Geeqie ist ein Nachfolger von gqview; kann EXIF, IPTC und XMP anzeigen und ändern; kommt mit Raw-Formaten zurecht.
  • KPhotoAlbum (früher KimDaBa): KimDaba focuses on three key points:
    • It must be easy to describe a number of images at a time. It must for example not take more than a few mouse clicks to mark all your images from your holiday as being from Italy, 1992. KimDaba offers two ways of description images one at a time, which is useful for writing text about images, and All Simultaneously, which is useful for selecting a number of images, and setting properties like location, persons on images, and date of image.
    • It must be easy to search for images. KimDaba offers to describe images with a number of properties. These includes date, persons on image, location of image, plus a keyword field the user can use for custom keywords like Album 7 or Holiday trip to Italy. With KimDaBa you can search using these categories - for example Find the images with Jesper on them.
    • It must be easy to browse and View the images. When viewing images, your focus often changes - one moment you are looking at images from your holiday in 1992, and when seeing an image of a friend whom you spent that holiday with, you focus suddenly changes, so you want to see all images of that friend.

      Die Schlagworte werden in einer XML-Datei gespeichert - es gibt ein Perl-Modul zum Bearbeiten der Datensammlung. Schlagworte werden anscheinend nicht in den Bilddateien selbst gespeichert.

  • imgSeek is a photo collection manager and viewer with content-based search and many other features. The query is expressed either as a rough sketch painted by the user or as another image you supply (or an image in your collection). The searching algorithm makes use of multiresolution wavelet decomposition of the query and database images.

    EXIF und IPTC werden für die Formate JPEG und TIFF gelesen und verwertet, aber nicht geschrieben. – dafür ist eine grafische Suchmöglichkeit vorhanden.

  • Shotwell is an open source photo organizer designed for the GNOME desktop Environment.
    • vor allem der Import mit automatischer Erkennung von Ereignissen klingt sehr interessant
    • Import von Bildern hat bei mir (Debian Paket 0.6.1-1+b2) nicht funktioniert
    • Dokumentation läßt einige Fragen offen, die wegen der fehlerhaften Importfunktion nicht geklärt werden konnten:
      • werden Informationen (IPTC/XMP) im Bild gespeichert
      • hierachische Tags
      • Geolocation
      • CROP: kann man Seitenverhältnisse als constraint verwenden
      • wie funktioniert die Übergabe an digikam
  • F-Spot - kein XMP oder IPTC \\ F-Spot is an application designed to provide personal photo management to the GNOME desktop. Features include import, export, printing and advanced sorting of digital images. F-Spot is still in the early phases of development. Prerelease versions of the software are available …
  • Photo Organizer - Web-Anwendung (PHP, PostgreSQL), Versionsverwaltung, Metadaten in XMP, IPTC, EXIF und XML, kann raw – Import funktioniert nicht sehr zuverlässig für mich (2007-11-18) und unklar, ob Metadaten wieder in die Bilder geschrieben werden.
  • picasa ist nicht open source – schreibt Metadaten nach IPTC
  • iOta
  • KPhotoBook
  • PhotoTools
  • Fotoon
  • idb http://www.linux-magazin.de/Artikel/ausgabe/2003/04/perl/perl.html, http://www.linux-magazin.de/Artikel/ausgabe/2003/05/perl/perl.html
  • PicApport ist ein ein einfach zu handhabender, kostenlos verfügbarer Foto-Server für Ihr Heimnetzwerk. Schauen Sie sich Ihre Bilder zu Hause an jedem, in Ihrem Netzwerk angeschlossenen, Gerät (PC, Tablets, Smartphones) an, ohne diese vorher an einen fremden Internetprovider oder auf ein anderes Gerät übertragen zu müssen!
  • Rapid Photo Downloader for Linux is written by a photographer for professional and amateur photographers. Its goal is to be the best photo and video downloader for the Linux Desktop. It is free software, released under the GNU GPL license.
    • Generates meaningful, user configurable file and folder names
    • Downloads photos and videos from multiple devices simultaneously
    • Backs up photos and videos as they are downloaded
    • Easy to configure and use
    • Runs under Gnome, KDE and other Linux desktop environments
    • Available in seventeen languages
    • Program configuration and use is fully documented
  • Entangle → tethered camera control and capture

Raw-Konverter

Datenrettung

  • PhotoRec kann aus beliebigen Datenbereichen Bilddaten extrahieren, indem es nach deren typischen Dateiheadern und Signaturen sucht.

Farbmanagement

  • Argyll CMS is an open source, ICC compatible color management system. It supports accurate ICC profile creation for scanners, CMYK printers, film recorders and calibration and profiling of displays. Spectral sample data is supported, allowing a selection of illuminants observer types, and paper fluorescent whitener additive compensation. Profiles can also incorporate source specific gamut mappings for perceptual and saturation intents. Gamut mapping and profile linking uses the CIECAM02 appearance model, a unique gamut mapping algorithm, and a wide selection of rendering intents. It also includes code for the fastest portable 8 bit raster color conversion engine available anywhere, as well as support for fast, fully accurate 16 bit conversion. Device color gamuts can also be viewed and compared using a VRML viewer. Comprehensive documentation is provided for each utility, and a general guide to using the tools for typical color management tasks is also available. A mailing list provides support for more advanced usage.
  • dispcalGUI is a GUI frontend for several utilities from the open source color management system Argyll CMS by Graeme Gill, specifically dispcal, dispread, colprof and dispwin, which when used together allow you to calibrate and profile your display using a measurement device. Of course, you can do a lot more with Argyll CMS, but this is not the scope of this document - refer to the Argyll CMS documentation for in-depth information and usage scenarios.
  • Little CMS

Geolocation

siehe auch http://wiki.openstreetmap.org/wiki/Geotagging_Source_Photos, http://www.kowoma.de/gps/spiele/geotagging/geotagging.htm und http://marc.merlins.org/linux/gps_geotagging/

Präsentation

Vorbereitung der Bilder

im Internet

Meine Anforderungen sind eigentlich recht gering - die meisten aktiven Lösungen sind mir serverseitig viel zu umfangreich.

Wunschlösung

  • alle Bilder in einer Verzeichnisstruktur
  • befüllen der Datenbasis soll automatisiert möglich sein: scp, rsync, syncthing, …
  • Excludes müssen möglich sein - ich synchronisiere einen kleineren Pool an Bildern zwischen verschiedenen Geräten (PC, Medien-PC, Mobiltelefon); eine großere Teil davon, aber nicht alle sollen auch am Webserver sichtbar sein.
  • chronologisch sortiert
  • Tag-Cloud am (rechten) Bildschirmrand
  • Tags, Bildtitel und Beschreibung werden aus dem Metadaten (IPTC, XMP, …) automatisch extrahiert
  • Auswahl mehrerer Tags gleichzeitig möglich
  • Selektion auf einen Zeitbereich sollte möglich sein
  • Selektion auf geographische Koordinaten sollte zumindest rudimentär möglich sein
  • direkter Link auf eine Auswahl ist möglich - das wäre meine Vorstellung von einem “Album”
  • direkter Link auf ein einzelnes Bild - stand-alone oder in einer Auswahl - sollte möglich sein
  • direkter Link auf ein einzelnes Vorschaubild (~600×400) sollte möglich sein - zur Verwendung in Dokumenten außerhalb der Galerie
  • entweder eine “einfache” Serverlösung auf Basis von Clojure, Python oder Erlang oder alles passiert mit Java/Coffee-Script am Client
  • kein Wordpress-Plugin

Dazu noch eine Android-App mit ähnlicher Funktionalität …

passive HTML Generatoren

  • [ ] Sigal - ok
  • [ ] baguetteBox - reines JavaScript ohne weitere Abhängigkeiten
  • [ ] imageindex - ok - wird bei mir aber massiv durch gedrehte Bilder gestört; auch Löschen der jeweiligen Exif-Informationen führt hier leider zu keiner Verbesserung. imageindex sortiert auch nach Datum und Uhrzeit des Dateisystemes anstelle der EXIF-Informationen. Wird derzeit am Institut für die Gallerien verwendet.
  • [X] http://www.thregr.org/~wavexx/software/fgallery/
    • + sieht sehr gut aus, flottes Display
    • + Keyboard-Navigation
    • + Thumbnails können auf Gesichter fokussiert werden
    • + wahlweise ZIP-Archiv aller Bilder
    • - Unterdirectories werden für die Präsentation in eine komplett flache Ebene abgebildet, keine Alben
    • - alle EXIFs werden entfernt
    • - keine Möglichkeit, “excludes” anzugeben
    • - erzeugt Kopie der Originale - das macht es in meinem Workflow ineffizient, weil ich eine Temporäre Kopie der Bilder (ohne private) anlegen müsste, die dann nochmals kopiert wird.
    • Konklusio: aus dem Stand sehr gut geeignet für kleine Fotosammlungen. Die Architektur der Software trennt aber strikt den Frontend (HTML + JavaScript) vom Backend am Server (JSON + Thumbnail-Cache). Es wäre daher möglich, nur einen Backend zu schreiben, der dynamisch das passende JSON-File erzeugt.
  • [X] http://bgoglin.free.fr/llgal/
    • + schön, Keyboard-Navigation funktioniert im Beispiel 2
    • + rekursives bearbeiten der Unterverzeichnisse
    • + --exlude <...>
    • + Templates sind einigermaßen einfach zu ändern
    • - Architektur ist (im Vergleich zu fgallery) nicht sehr elegant
  • [ ] http://zx2c4.com/projects/photofloat/ - ok, Navigation mit Keyboard funktioniert
  • [ ] http://igal.trexler.at/
  • [ ] http://xome.net/projects/jigl/ (stale)
  • [ ] http://sousmonlit.zincube.net/~niol/playa/oss/projects/lazygal/
  • [ ] http://www.saillard.org/programs_and_patches/photon/ - 404 Not Found
  • [ ] http://sourceforge.net/projects/webmagick/ - die Demos funktionieren nicht korrekt

Meine aktuelle Lösung

Derzeit verwende ich primär MinigalNano. Ich würde aber gern auf PHP verzichten und von meiner Wunschlösung ist es sehr weit entfernt. Hauptproblem für mich dabei ist, daß es nicht möglich ist, auf einzelne Bilder zu verlinken.

Für temporär verwendete Bildergalerien setze ich auf fgallery

Tethering

Tethering mit gphoto2

https://www.youtube.com/watch?v=o9KtXqZZBrc

Starte geeqie mit der Option “Refresh on file change” (“Dateiliste bei Änderung aktualisieren”) gesetzt und mit einem Einstiegsbild; danach gphoto2 --capture-tethered:

# SETTINGS
WORKDIR="$HOME/notebook/Bilder/$(date +"%Y")/$(date +"%Y%m%d-%H")"
LOGO="$HOME/notebook/Bilder/ASSETS/logo.jpg"

# search for my camera
gphoto2 --auto-detect || exit

# set camera time UTC from computer, afterwards show time reread from camera
# in our local time zone
gphoto2 --set-config /main/actions/syncdatetime=1  &&  sleep 1
gphoto2 --get-config /main/settings/datetime       &&  sleep 1

# setup working directory
echo " # Prepare working directory: ${WORKDIR}"
test -d ${WORKDIR} || mkdir -p ${WORKDIR} || exit
cd ${WORKDIR} || exit

# preset preview picture
test -f ./preview.jpg || cp ${LOGO} ./preview.jpg || exit

# start geeqie if not already running
pgrep -x "geeqie" >/dev/null || geeqie ./preview.jpg &

# and start thethered shooting
gphoto2 --capture-tethered --hook-script=${HOME}/bin/digicam-tether-hook.sh

Mit dem Hook-Script werden die Bilder nach dem Download im Arbeitsdirectory konvertiert und weiterbearbeitet:

# Full name of user - copyright tagging
FULLNAME="Andreas Hirczy"

# Directory for a first temporary backup. This is not a regular backup, but
# intended as a rescue path in case of trouble while shooting or very soon
# afterwards.
BACKUP=/var/tmp/$USER-backup

case $ACTION in
    start )
        echo "READY ... start shooting ..."
        ;;
    download )
        # backup copy
        [ -d $BACKUP ] || mkdir -p $BACKUP
        cp $ARGUMENT /var/tmp/$BACKUP

        case $(file ${ARGUMENT}) in
            *"Canon CR2 raw image data"* )
                # metadata handling
                /usr/bin/exiftool -d '%Y%m%d-%H%M%S' \
                                  '-filename<${CreateDate}${SubSecTime}.cr2' \
                                  -overwrite_original \
                                  -By-line="$FULLNAME" -Credit="$FULLNAME" \
                                  $ARGUMENT
                ;;
            *"JPEG image data"* )
                echo "# Just downloaded $ARGUMENT"
                jhead -dt -autorot $ARGUMENT
                cp $ARGUMENT ./preview.jpg

                # start geeqie if not already running
                pgrep -x "geeqie" >/dev/null || geeqie --fullscreen ./preview.jpg

                /usr/bin/exiftool -d '%Y%m%d-%H%M%S' \
                                  '-filename<${CreateDate}${SubSecTime}.jpg' \
                                  -overwrite_original \
                                  -By-line="$FULLNAME" -Credit="$FULLNAME" \
                                  $ARGUMENT
                ;;
            *)
                echo "### unknown file type ###"
        esac
esac

Tethering mit Darktable

Wahrscheinlich macht man es schlauer mit Darktable: https://www.darktable.org/usermanual/en/tethering_chapter.html

Links

Footnotes:

Author: Andreas Hirczy

Created: 2023-04-28 Fr 16:52

Validate