Fokus-Stacking auf der Kommandozeile
veröffentlicht am 03.01.2018 in * BILDBEARBEITUNG * PROGRAMME *
Inhaltsverzeichnis
Da will ich “mal eben schnell” meinen Scanner für einen Beitrag hier im Blog ablichten. Aber: das Teil ist zu lang, die Tiefenschärfe reicht vorn und hinten nicht. Also hab ich erstmal eine Serie geschossen und den Fokuspunkt mit jedem Bild etwas weiter von vorn nach hinten verschoben.
Import und Vorbereitung des Workflows
Vorarbeit
Diese Bilderserie hab ich in darktable importiert, dort an einem Bild die notwendigen Bearbeitungsschritte durchgeführt, diese auf die restlichen Bilder der Serie übertragen und die Bilder als .tif
-File exportiert.
Die Bilder der Serie werden also aus darktable heraus
- im TIF-Format
- mit 16bit Farbtiefe
- in ein passendes Arbeitsverzeichnis
exportiert.
Arbeitsablauf
Dort werden dann eine Reihe von Arbeitsschritten durchgeführt:
- Um die Benennung des Ausgabefiles sinnvoll und automatisch durchführen zu können, werden zunächst die Filenamen eingelesen und der letzte gespeichert.
- Als nächstes müssen die Bilder ausgerichtet werden. Dazu nutze ich
align_image_stack
, das ist ein Kommandozeilen-Programm aus hugin, der Open-Source-Panorama-Software. Dabei gibt es zwei wichtige Optionen:-m
dient dazu, neben Verschiebungen auch Größenvariationen auszugleichen. Das ist nötig, weil etliche Objektive im Nahbereich beim Verändern des Fokus-Rings auch eine m. o. W. starke Veränderung der effektiven Brennweite erfahren.-a
ermöglicht, den Ausgabefile-Namen einen Präfix vorzugeben
- Im nächsten Schritt werden die Bilder übereinander geblendet mittels enfuse. Dieses Tool kann
- Tonwerte/Helligkeiten angleichen - nützlich beim Zusammensetzen von Panoramen oder Belichtungsreihen
- Bilder überblenden anhand von Kontrasten/Schärfe. Diese Fähigkeit wird hier benötigt: Das Ausgabebild soll von jeder Einzelaufnahme die Bildbereiche übernehmen, in denen das Motiv jeweils am schärfsten ist.
- Sodann kopiere ich die EXIF-Daten vom letzten der Ursprungsbilder in das Endresultat, dazu dient das bekannte exiftool von Phil Harvey. Weil exiftool vor der Übertragung von Metadaten eine Sicherungskopie erstellt (die hier nicht gebraucht wird, denn das Ausgabefile ist ja künstlich erzeugt und kein unwiederbringliches Original), kann diese im Anschluß wieder gelöscht - oder ersatzweise exiftool mit der Option
-overwrite_original
aufgerufen werden. - Das entstandene Ergebnis wird aus dem Arbeitsverzeichnis weg verschoben, die restlichen Files (außer dem Scriptfile natürlich) im Arbeitsverzeichnis werden nicht mehr gebraucht und gelöscht.
- Im letzten Schritt kann dann manuell das erzeugte Bild wieder in darktable importiert und dort weiterverarbeitet und -verwaltet werden.
Die notwendigen Befehle habe ich in einem Script-File zusammengefaßt, das ebenfalls im obigen Arbeitsverzeichnis liegt und dort im Terminal mittels
$ bash {scriptname}.sh
aufgerufen werden kann.
Script zur Automatisierung
Und hier der Quelltext des kompletten Scripts mit kurzen Erläuterungen in den Kommentarzeilen #
:
#!/bin/bash
# alle Eingangsfiles durchlaufen und Filenamen lesen
for file in *.tif
do
echo "${file%.*}"
# der letzte Filename wird gespeichert und weiterverwendet
done
# Bilder ausrichten
align_image_stack -m -v -a ausr_ *.tif
# Bilder überlagern
enfuse -o "${file%.*}"_fokus.tif --exposure-weight=0 --saturation-weight=0 --contrast-weight=1 --hard-mask ausr_????.tif
# EXIF-Daten des letzten Ursprungsbild auf das gestackte Ergebnis übertragen
exiftool -overwrite_original -TagsFromFile "${file%.*}".tif "${file%.*}"_fokus.tif
# Ausgabefile ins Ergebnis-Unterverzeichnis verschieben
mkdir ergebnis
mv "${file%.*}"_fokus.tif ergebnis/"${file%.*}"_fokus.tif
echo "Das fertige Bild liegt im Unterverzeichnis 'ergebnis'"
# Temporäre Dateien entfernen
rm ausr_????.tif
Script zum download
Das Ausgabefile - also das fertige Bild - kann dann in darktable wieder aus dem Ergebnis-Unterverzeichnis importiert werden.
An einem Beispiel dazu ist zu sehen, was mit dem Script erreicht werden kann, zunächst 2 der insgesamt 6 Ausgangsbilder:
und hier das Ergebnis:
Anleitung in Schritten
- die
.tif
-Files, die verarbeitet werden sollen, in ein geeignetes Verzeichnis kopieren ("Arbeitsverzeichnis")
oder die Bilder der Serie aus darktable direkt dorthin exportieren - Script oben herunterladen, entpacken und die Datei
stacking.sh
in dasselbe Arbeitsverzeichnis, in dem auch die.tif
-Files liegen, verschieben - Terminal öffnen, im Terminal in das Arbeitsverzeichnis wechseln
cd /pfad/zum/arbeitsverzeichnis
, in das im ersten Schritt die Dateien kopiert wurden bash stacking.sh
eingeben und “abschicken” …- das Ergebnis wird in das Unterverzeichnis
ergebnis
des Arbeitsverzeichnisses gespeichert.
Viel Erfolg!
611 Worte - Lesezeit: 3 Minute(n)
weitere Artikel

Wellenform (Waveform) anstelle Histogramm in der Fotografie?
02.02.2025 Mit Version 5.0 wurde die Wellenform-Darstellung zur Voreinstellung in darktable gewählt. Was sagt diese Darstellung aus und wie unterscheidet sie sich vom 'normalen' Histogramm?

darktable: Beschreibung für Umsteiger
04.04.2024 Wer umsteigen will von einem vertrauten RAW-Konverter, der tut sich gelegentlich nicht wirklich leicht bei der Vielzahl der Funktionen dieser Programme. Und wenn dann die Anordnung 'sehr anders' ist ... könnte eine systemmatische Einführung helfen.

Evolution in darktable - Zonensystem vs. Tonwert-Equalizer
15.01.2023 Kurze Beschreibung der Optimierung kontrastreicher Gegenlichtaufnahmen in darktable 'einst und jetzt': einmal mittels des veralteten Zonensystems - und dann die aktuelle Methode mittels Tonwert-Equalizer

darktable: einfache szenenbezogene Entwicklung in 3 Schritten
29.09.2021 Seit darktable 3.0 ist die szenenbezogene Entwicklung zunehmend das Mittel der Wahl, will man ein RAW-Bild entwickeln. Die ersten Schritte zu einer effektiven Vorgehensweise zeigt dieses Tutorial ...