HDR für Faule
HDR-Workflow ohne Stativ und Mausklicks
All-inclusive-Paket
Alle im Überblick erwähnten Schritte erledigen Linux-Programme. Die Kunst besteht darin, sie so zu verknüpfen, dass alles automatisch abläuft. Um das Installieren der notwendigen Werkzeuge kommen Sie allerdings nicht herum. Da es sich aber um Standard-Tools handelt, finden Sie diese in aller Regel in den Repositories Ihrer Distribution.
Die Tabelle "Notwendige Pakete" zeigt alle für den Workflow erforderlichen Programme. Ein Bash-Skript namens Hdrff verknüpft deren Funktionen zu einer Toolchain. Dieses Skript entwickelte der Autor für seine Bedürfnisse und Ausrüstung. Da jeder Kamerahersteller bei den RAW-Dateiformaten sein eigenes Süppchen kocht, kommen Sie nicht umhin, das Skript an Ihre Gegebenheiten anzupassen.
Das Skript selbst finden Sie unter [1], Nutzer der DVD-Edition finden es darüber hinaus auf der Heft-DVD. Listing 1 fasst nur die einzelnen Teilbefehle zusammen. Wie Sie das Skript einrichten und mit ihm arbeiten, zeigt der Kasten "Hdrff einrichten und verwenden".
Notwendige Pakete
| Name | Beschreibung |
|---|---|
| ImageMagick | Das schweizer Taschenmesser der automatischen Bildverarbeitung |
| Exiftool | Lesen und Schreiben von EXIF-Daten |
| Enblend/Enfuse | Kombiniert mehrere Dateien |
| Hugin | Komplette Toolchain für Panoramaaufnahmen |
| Pfstools | Basispaket zum Verarbeiten von HDR-Dateien |
| Pfscalibration | HDR-Paket mit speziellen Tools für digitale Aufnahmen |
| Pfstmo | Tonemapping-Programme (Umsetzung von HDR nach LDR) |
| Qtpfsgui | Graphische Oberfläche für die verschiedenen PFS-Pakete |
| Ufraw | RAW-Konverter mit GUI- und Kommandozeilen-Modus |
| Gimp | Leistungsstarkes Programm zur Fotobearbeitung |
Hdrff einrichten und verwenden
Die modular aufgebaute Skriptsammlung besteht aus dem Hauptprogramm Hdrff und verschiedenen Modulen, beispielsweise hdrff_copyFiles.inc. Kopieren Sie es mit den Modulen als Benutzer Root ins Verzeichnis /usr/local/bin. Die Konfigurationsdatei .hdrff kopieren Sie in Ihr Heimatverzeichnis und passen sie an Ihre Bedürfnisse an. Stellen Sie sicher, dass alle notwendigen Programmpakete installiert sind.
Hängen Sie danach die Speicherkarte ein. Passen Sie den Mountpoint gegebenfalls noch in der Steuerdatei .hdrff an (Variable MEDIA). Viele Linux-Distributionen hängen die Karte selbständig ein, den genauen Mountpunkt verrät ihnen der Befehl mount in der Konsole.
Im einfachsten Fall rufen Sie hdrff in einer Kommandozeile ohne weitere Parameter auf. Das Skript arbeitet alle konfigurierten Module in einem Rutsch ab. Je nach Anzahl der Bilder und der Geschwindigkeit Ihres Rechners dauert das eine ganze Weile.
Alternativ arbeiten Sie die Module auch häppchenweise ab. In diesem Fall geben Sie die Module beim Skriptaufruf auf der Kommandozeile mit an. Beachten Sie dabei die Reihenfolge:
$ hdrff copyFiles name2lc fixDate setRO $ hdrff raw2tif findGroups
Die Bilder kopieren
Die meisten Kameras erlauben den Import über die USB-Schnittstelle, einfacher und batterieschonender geht es aber mit einem Kartenleser. Auch wenn sich die Hersteller inzwischen an den DCIM-Standard für die Dateiablage auf den Speicherkarten halten, variieren doch die Ordnernamen. Deshalb kopiert das Hdrff-Skript die Dateien über einen Find-Befehl auf die Festplatte (Listing 1, Zeile 2). Jede Datei, die das Tool findet, setzt es anstelle des geschweiften Klammerpaars in den Kopierbefehl ein.
Chmod entfernt danach zur Sicherheit die Schreib- und Ausführungsrechte der Bilderdateien, außerdem wandelt eine Schleife die Dateinamen von Groß- in Kleinbuchstaben um. Da Linuxrechner typischerweise mit einer auf UTC konfigurierten Hardware-Uhr arbeiten, während Digitalkameras meist Lokalzeit verwenden, setzt das Skript auch noch das Dateidatum gleich dem Aufnahmedatum.
Erzeugt Ihre Kameras nur JPEGs, erledigt der Convert-Befehl (Zeile 5) das Umwandeln in TIFF. Andernfalls greift das Skript auf den RAW-Konverter Ufraw-batch zurück (Zeilen 8 bis 10). Das TIF-Format erlaubt auch eine Kompression der Bilder. Das spart zwar Speicherplatz, verlangsamt aber das weitere Verarbeiten erheblich, weswegen wir in diesem frühen Stadium darauf verzichten.
Noch heute besitzen einige Kameras keinen Orientierungssensor. Deren Fotos müssen Sie anschließend manuell sichten und bei Bedarf von Hand rotieren. Aber auch sonst bietet es sich an dieser Stelle des Workflows an, innezuhalten und die Bilder einer kritischen Auswahl zu unterziehen. Die folgenden rechenintensiven Schritte dauern nämlich selbst auf aktuellen Rechnern lange, und jedes aussortierte Bild verkürzt die Gesamtrechenzeit.
Listing 1
# Dateien kopieren
find /mnt -iname "*.nef" -exec cp -va {} /data/orig \;
# JPGs nach TIF umwandeln
convert -verbose -quality 98 /data/orig/dsc_1234.nef /data/img/dsc_1234.tif
# RAW-Dateien nach TIF umwandeln
ufraw-batch \
--out-type=tif --out-depth=16 \
--out-path=/data/img --overwrite --create-id=no /data/orig/*
# HDR-Gruppen finden (Aufnahmen maximal 1 Sekunde auseinander)
oldTime=0
for f in /data/orig/*.nef; do
# Zeitstempel aktuelle Aufnahme berechnen
newTime=$(exiftool -q -q -s -s -s -d "%s" -DateTimeOriginal "$f")
if [ -z "$newTime" ]; then
continue
fi
# Zeitvergleich
if (( newTime-oldTime > 1 )); then
# eine neue Reihe fängt an. Beende die alte Reihe
...
else
# aktuelles Bild an Liste anfügen
...
fi
# Speichern der Vergleichszeit für nächste Aufnahme
oldTime="$newTime"
done
# CAs korrigieren
caParms=$(tca_correct -o abcv dsc_1234.tif | tail -n 1)
fulla $caParms -o ca_1234.tif dsc_1234.tif
# Bilder ausrichten
align_image_stack -a AIS_ dsc_1234.tif dsc_1235.tif dsc_1236.tif
# Bilder mit enfuse verschmelzen
enfuse -o enf_1234.tif ais_1234.tif ais_1235.tif ais_1236.tif
mogrify -alpha off -compress zip enf_1234.tif
# HDR erzeugen
dcraw2hdrgen ais_1234.tif ais_1235.tif ais_1236.tif | \
sort -rn -k 2 > hdr.cfg
pfsinhdrgen hdr.cfg | \
pfshdrcalibrate -c none -r gamma --bpp 16 | \
pfsclamp --rgb | \
pfsout hdr_1234.hdr
# Tonemapping mit Fattal
pfsin hdr_1234.hdr | \
pfstmo_fattal02 -s 1 | \
pfsgamma --gamma 2.2 | \
pfsout fattal_1234.tif
# Tonemapping mit Mantiuk
pfsin hdr_1234.hdr | \
pfstmo_mantiuk06 -e 1 -s 1 | \
pfsgamma --gamma 2.2 | \
pfsout mantiuk_1234.tif



