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.
- Für jeden Download wird ein Verzeichnis
- 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 vondigicam-rotate
das Programmjpegtrans
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: ) 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?
- https://hub.displaycal.net/forums/topic/displaycal-is-dead-time-to-move-on-what-alternative-you-choosed/
- https://github.com/eoyilmaz/displaycal-py3 gesehen und via
pip3 install DisplayCAL
installiert
Alternativen:
- Argyll CMS direkt verwenden
dispcal -d 1 -t 6500 -b 150 -gs -yl -v -o MONITOR1
- http://rawtherapee.com/mirror/dcamprof/argyll-display.html
- Gnome Color Manager
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
- Darktable - siehe weiter vorn unter “Archivierung”
- https://bitbucket.org/agriggio/art/wiki/Home
- RawTherapee
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/
- Digikam kann das schon
- http://www.darktable.org/2012/09/geotagging-in-darktable/
- GPicSync
- gpsPhoto.pl
- GEOSETTER
- Geotag is an open source program that allows you match date/time information from photos with location information from a GPS unit or from a map.
- gpscorrelate
- mtkbabel + gpsbabel
Präsentation
Vorbereitung der Bilder
- Export aus Bildverwaltung im Format JPEG; mittlere bis bessere Qualität, in HD Auflösung 1920x1080
- fehlende Time-Stamps in Exif ergänzen (vor allem bei Panoramen oft
notwendig):
jhead -mkexif -ts2014:02:18-15:57:00 20140218-1557.jpg
- Rotationsinformationenhttp://apdev.blogspot.co.at/2013/09/camera-orientation-vs-orientation-exif.html http://www.leancrew.com/all-this/2009/04/derotating-jpegs-with-exiftool/,
Thumbnails aus EXIF-Headern entfernen:
jhead -dt -norot *.jpg; exiftool -CameraOrientation#=0 *.jpg
- gegebenenfalls Bilder rotieren:
jpegtrans
odergeeqie
- EXIF-Zeitstempel auf die Dateisystem-Infomationen der Bilder übertragen:
jhead -ft *.jpg
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
aktive Server
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
Footnotes:
könnte
eigentlich von udev
gestartet werden