Übersicht
Kamerasensoren liefern Daten im linearen RGB-Format, das ursprüngliche Bild erscheint daher flach und langweilig. Das ist der Grund, warum Kamerahersteller ihre charakteristische Basiskurve auf die RAW-Daten anwenden, wenn sie in der Kamera JPEG-Bilder mit besseren Farben und Kontrast erzeugen.
Anwendung
Darktable kommt mit voreingestellten Basiskurven die die Kurven der verschiedenen Hersteller nachbilden. Diese werden automatisch auf RAW-Bilder angewendet gemäß der in den EXIF-Daten gefunden Hersteller-ID. Für einige Kameramodellen kommt Darktable mit Basiskurven die für das jeweilige Modell angepasst sind. Eine Konfigurationsoption im Dialog globale Voreinstellungen (Registerkarte zentrale Optionen) legt fest, ob Darktable standardmäßig die pro-Kamera Basiskurve oder die Hersteller-Basiskurve anwendet.
Sie können eine bestehende Basiskurve anpassen oder neu erstellen. Die Basiskurve wird durch zwei oder mehr Knoten definiert. Sie können an jedem beliebigen Knoten ziehen um die Kurve zu ändern. Sie können auch zusätzliche Knoten erstellen, indem Sie zwischen zwei Knoten auf das Kurvensegment klicken. Mit Strg-Klick erzeugen Sie einen neuen Knoten an der x-Position des Mauszeigers und der entsprechenden y-Position der aktuellen Kurve - dies fügt einen Knoten hinzu ohne zu riskieren dass die Kurve geändert wird. Um einen Knoten zu entfernen ziehen Sie ihn außerhalb des Anwendungsbereichs .
Sie können auch eine schon definierte Basiskurve auswählen, in dem Sie mit der rechten Maustaste eine Klick in das Kurvendiagramm machen.
Tip:
Wenn Sie beabsichtigen, die manuelle Steuerung der Tonwerte komplett mit dem Modul Farbkurve oder dem Modul Zonensystem durchzuführen (siehe Abschnitt 3.4.2.3, "Farbkurve" und Abschnitt 3.4.2.4, "Zonensystem") kann es einfacher sein, das Bild im linearen RGB-Format zu belassen. Deaktivieren Sie in diesem Fall das Modul Basiskurve .
Skalierung
Das Auswahlfeld wechselt zwischen "linearer" und "logarithmischer" Ansicht In der doppelt logarithmischen Ansicht erhalten die unteren Werte eine höhere Auflösung, was eine feinere Einstellung der Schatten ermöglicht.
Fusion
Diese Auswahlbox steuert die Verschmelzung der Belichtung.
Die Funktion dient dazu ein HDR Bild, dass aus einer Belichtungsreihe mit der Kamera entstanden ist zu korrigieren oder aus einem stark unterbelichteten Bild durch kopieren und anwenden unterschiedlichen Basiskurveinstellung ein HDR zu erstellen.
Sie können das HDR-Bild aus ein oder zwei Kopien von sich selbst erstellen (Belichtungsreihe aus einem unterbelichteten Bild), nachdem Sie die aktuelle Basiskurve angewendet und die Belichtung um eine wählbare Anzahl von Belichtungseinheiten erhöht haben. Das resultierende HDR-Bild ist somit eine Kombination von zwei oder drei unterschiedlichen Belichtungen des Originalbildes. Verwenden Sie diese Option, um den Dynamikbereich für extrem unterbelichtete Bilder oder für echte HDR-Eingaben zu komprimieren. Verwenden Sie für optimale Ergebnisse das Belichtungsmodul.
Belichtungsanpassung
Dieser Schieberegler ist nur sichtbar, wenn die Belichtungsfusion aktiviert ist. Sie können den Belichtungsunterschied zwischen den zusammengeführten Bildern in EV-Einheiten einstellen (Standardwert ist 1).
Belichtungstendenz
Dieser Schieberegler ist nur sichtbar, wenn die Belichtungsfusion aktiviert ist. Sie können wählen, wie die Mehrfachbelichtungen berechnet werden soll. Bei einem Wert von 1 (Standardeinstellung) wird das Bild mit überbelichteten Kopien von sich selbst verschmolzen. Bei einem Wert von -1 wird es mit unterbelichteten Kopien verschmolzen. Ein Wert von 0 versucht, die Gesamthelligkeit des Bildes zu bewahren, indem sowohl die über- als auch unterbelichtete Kopien des Bildes kombiniert werden.
Zurück zur Darktable Modul Übersicht
Übersetzt durch H. Benetti
Verbesserungsvorschläge oder Korrektur der Übersetzung vom Handbuch bitte an dartkable(at]multimedia4linux.de schicken.
Überblick
Das in der Helligkeitsgruppe enthaltene Modul bietet eine weitere Möglichkeit zur Änderung der Helligkeiten Ihres Fotos, basierend auf dem Zonensystem von Ansel Adams. Es erlaubt die Modifizierung der Helligkeit einer Helligkeitszone (= Helligkeitsbereich) unter Berücksichtigung des Effekts auf die benachbarten Zonen.
Verwendung
Entsprechend dem Konzept von Ansel Adams werden die Helligkeiten (Luminanz = L-Kanal im Lab-Farbraum) in eine Anzahl Zonen (Helligkeitsbereiche) unterteilt, die von reinem Schwarz bis zu reinem Weiß reichen. Diese Bereiche werden in einer Zonenleiste unter dem Vorschaubild angezeigt (10 Zonen als Grundeinstellung).
Diese Zonenleiste ist horizontal geteilt. Der obere Bereich gehört zum Output des Moduls und der untere entsprechend zum Input (das in den Modul eingespeiste Foto). In der Grundeinstellung sind beide Teile identisch (das Modul hat keine Wirkung). Während die Outputzonen statisch sind lassen sich die Inputzonen (der untere Teil) modifizieren, indem mit einem Linksklick und Verschieben des erzeugten Kontrollpunktes das Zonensystem verändert wird. Das Verschieben bewirkt auf der einen Seite eine proportionale Komprimierung und auf der anderen Seite eine Expansion der Zonen, abhängig von der Verschieberichtung. Es assen sich mehrere Kontrollpunkte erzeugen und verschieben. Ein bereits existierender Kontrollpunkt bleibt dabei fest und verhindert Änderungen in den Zonen links von ihm (dunklere Zonen). Mit Rechtsklick werden Kontrollpunkte entfernt.
Das Vorschaubild zeigt das in die Zonen unterteilte Foto. Beim Überstreichen einer (Input oder Output) Zone in der Zonenleiste mit dem Mauszeiger wird die Zone im Vorschaubild hell markiert.
Mit dem kleinen Button "Einstellungen zurücksetzen" links oben werden alle Änderungen wieder gelöscht (neutrale Ausgangssituation). Außerdem lassen sich (wie bei den meisten Modulen) mehrere Instanzen des Moduls mit unterschiedlichen Einstellungen erzeugen, die an beliebigen Stellen des workflows eingesetzt werden können (Button "Multi-Instanz-Optionen"). Bewährte Zonen-Einstellungen können auch als benahmte Voreinstellungen gespeichert werden um sie schnell anwenden zu können. Wie gewohnt lässt sich auch der Überblendmechanismus anwenden und die Wirkung des Moduls auch auf Masken beschränken.
Überblenden
Bei ausgeschaltetem Überblenden wirken sich die Änderungen auf das gesamte Bild aus. Durch einen Überblend Modus können Sie z.B. die Änderungen auf den über die Maske ausgewählten Bereich beschränken bzw. die Wirkung des Moduls beeinflussen. Weitere Informationen siehe Überblend Modus.
Beispiele;
Das Originalfoto ohne Modifikation
Zur Erhöhung des Kontrasts wurden die dunkleren und helleren Zonen komprimiert (linker und rechter Kontrollpunkt), dann wurden die oberen der dunklen Zonen mit dem neu erzeugten mittleren Kontrollpunkt wieder expandiert um ihr visuelles Gewicht anzuheben.
Zurück zur Darktable Modul Übersicht
Übersetzt durch L. Schanne
Verbesserungsvorschläge oder Korrektur der Übersetzung vom Handbuch bitte an dartkable(at]multimedia4linux.de schicken.
Darktable verwendet zum Speichern von Informationen eine einfach aufgebaute Sqlite3 Datenbank mit 16 Tabellen. Die Datenbank ist immer vom User abhängig und abgespeichert unter ~./config/darktable/library,db. Sie können die Datenbank ganz einfach mit z.B. dem Sqlite DB Browser öffnen, aber auch per SQL Befehl auslesen bzw. editieren.
darktable-db utility Revision 0.5
Mit dem unten aufgeführten darktable-db Skirpt können Sie nützliche Informationen aus der Datenbank abrufen und auch Bilder ohne darktable zu öffnen exportieren. Zum Kennzeichnung, welche Bilder exportiert werden sollen werden die Farblabel aus Darktable verwendet. Markieren Sie mit darktable dazu einfach die Foto die Sie exportieren wollen mit z.B. einem geben Punkt. Zwei Farbpunkte für ein Bild sind zwar in darktable möglich, erzeugen aber bei darktable-db Fehler!
Das Skript befindet sich noch in der Entwicklung, daher fehlen noch die Fehlerabfangroutinen bei falschen Eingaben! Bei fehlerfreier Eingabe funktioniert das Utility aber. Bitte führen Sie das Skript nur als normaler user aus. Das Ausführen mit dem root user funktioniert nicht! Wenn Sie nach dem expotieren die Farblable automatisch umstellen wollen, dann erstellen Sie bitte vorher eine Sichungskopie der darktable Datenbank. Wie Sie eine Sicherungskopie der Datenbank erstellen können Sie hier nachlesen.
darktable-db Feature:
- Anzeigen von Informationen zur darktable datenbank (Farbpunkte, Pfade)
- Anzeige von Informationen zum Fotoarchiv (Dateien und Sterne)
- Export von Bildern die in darktable mit einem Farbpunkt gekennzeichnet wurden. Die entwickelten RAW-Daten können als jpg, png, tif, ppm, pfm oder pdf exportiert werden.
- Beim Exportieren kann die Bildgröße angepasst werden
- Export von einem Verzeichnis (Filmrolle) oder rekursiv über alle Verzeichnisse (Filmrollen) aus der Datenbank
- Verschiedene Modi für die Behandlung, wenn schon ein Bitmap im Zielverzeichnis vorhanden ist
- Optional kann bei dem export der Farbpunkt auf eine gewünschte Farbe umgestellt werden
- Die Verwendung von darktable-db mit root ist nicht möglich
- Der Export von Bildern die mit mehr als einem Farbpunkt gekennzeichnet sind ist nicht möglich
- Erstellen von Datenbank Backups und wieder herstellen der Datenbank aus einem Backups
- Sychronisation vom Rating (Sterne) aus der darktable Datenbank mit den Bitmaps in dem Fotoarchiv. Die Bitmap müssen dafür im gleichen Ordner liegen wie die Raw Dateien. Wenn nach dem Export von Bildern das Rating in der Datenbank geändert wird, dann wird das Rating Tag im Bitmap nicht aktualisiert. Mit der Option -u können Sie das korregieren. Das Synchonisieren dauer sehr lange und lohnt sich daher nur, wenn viele Bilder aktualisiert werden sollen. Nur die Bitmaps JPG, PNG und Tif besitzen ein Rating Tag.
darktable-db Anhängigkeiten:
Für die fehlerfreie Ausführung von darktable-db sind die folgenden Programme notwendig
- darktable-cli (Paket darktable)
- sqlite3 (Paket sqlite3)
- ls, wc, cut, rm, whoami, md5sum, printf (Paket coreutils)
- grep (Paket grep)
- exiftool (Paket libimage-exiftool-perl und perl-doc)
darktable-db -h
Usage: -h | -c |-r |-s | -q |-v | -e colorlable | -m write mode | -f export format | -i path | -o path | -l colorlable | -x width | -y hight
Options:
-h Help | Display this help message and exit |
- c Create database backup | Save database file to ~/.config/darktable/db_backups |
- r Replace database file | Overwrites the database file with a selected backup |
-s Show database report | Shows darktable database informations |
-q Quality and quantity report | Shows photo library information |
-u Update bitmap rating | Synchronize darktable rating with bitmaps |
-v Version | Database API version |
-e Export colorlabled bitmap | red, yellow, green, blue, magenta |
-m Write mode |
dav = Delete all exiting image versions and write new version, |
-f Export bitmap format | jpg, png, tif, ppm, pfm, pdf |
-i Input directory | /var/lib/photoarchiv or recursive |
-o Output direktory | Optional if different with input directory /var/lib/photoarchiv/export |
-l Switch colorlable after export to | red, yellow, green, blue, magenta |
-x Image width in pixel | Optional, default without scaling = 0 |
-y Image hight in pixel | Optinnal, default without scaling = 0 |
Beispiel 1:
Sie möchten alle gelb markierten Fotos aus der Filmrolle "2015_Sommerurlaub" als JPEG in voller Auflösung exportieren. Falls ein Foto schon existiert, dann soll das unverändert übersprungen werden.
a) Zuerst holen wir uns die Infomationen zum Pfad über den Befehl:
darktable-db -sAnalysing Darktable Sqlite 3 database...The Darktable database includes:
Filmrolls: 28
Photos: 4698Photos with colorlabels:
Red labels: 1
Yellow labels: 88
Green labels: 511
Blue labels: 1
Magenta labels: 7
Without labels: 4090The filmrolls are saved at direktory:
/var/daten_hdd/home/foto_archiv/2015_Workshopvorbereitung
/var/daten_hdd/home/foto_archiv/2015_Sommerurlaub
b) Mit dem folgenden Befehl exportieren wir die Fotos wie oben beschrieben:
darktable-db -e yellow -m sev -f jpg -i /var/daten_hdd/home/foto_archiv/2015_Sommerurlaub
Exporting 10 yellow labled raw images, from /var/daten_hdd/home/foto_archiv/2015_Sommerurlaub as jpg to /var/daten_hdd/home/foto_archiv/2015_Sommerurlaub ...
Die Jpeg's werden dabei in das Verzeichnis /var/daten_hdd/home/foto_archiv/2015_Sommerurlaub exportiert, da kein Ausgabeverzeichnis angegeben wurde. Falls ein anders Verzeichnis gewünscht wird, dann geben Sie das mit -o /Pfad an.
Beispiel 2:
Sie möchten alle gelb markierten Fotos aus dem Fotoarchiv der darktable Datenbank als PNG in voller Auflösung exportieren. Falls ein Foto in einer oder mehreren Version im Ausgabeverzeichnis schon existiert, dann sollen die Versionen gelöscht werden und eine neue Version exportiert werden. Bei einem recursiven Export sind Eingabe- und Ausgabeverzeichnis immer identisch. Eine Angabe zum Ausgabeverzeichnis wird bei -i recursive nicht beachtet! Nach dem Export soll noch der Farblable von gelb auf grün geändert werden.
Mit dem folgenden Befehl führen Sie das so aus:
darktable-db -e yellow -m dav -f png -i recursive -l green
Beispiel 3:
Sie möchten wissen wieviele Dateien in Ihrem Fotoarchiv vorhanden sind und eine qualitätive Bewertung mit den Sternen bekommen haben. Das Skipt durchsucht bei der Option -q das ganze Fotoarchiv, was je nach Größe des Archives einige Zeit dauern kann!
Mit dem folgenden Befehl führen Sie das so aus:
darktable-db -q
Analysing darktable photo library. Please wait...
The darktable photo library containsRAW filesDNG files: 5
CR2 files: 4847Bitmap files
JPG files: 6999
PNG files: 2
TIF files: 5
Image rating
Images with 0 stars: 817 (14.22%)
Images with 1 stars: 4820 (83.91%)
Images with 2 stars: 24 (.41%)
Images with 3 stars: 43 (.74%)
Images with 4 stars: 14 (.24%)
Images with 5 stars: 26 (.45%)
Beispiel 4:
Es sollen von allen Bitmaps im Fotoarchiv das Rating Tag überprüft werden und falls abweichend zur Darkable Datenbank soll der Status aus der Datenbank in das Bitmap übertragen werden. Die Bitmaps müssen dazu im selben Verzeichnis liegen, wie die Raw- bzw. XMP-Dateien. Die Synchronization dauert sehr lange! Es lohnt sich daher nur ein Rating Update durchzuführen, wenn viele Ratings geändert wurden.
Mit dem folgenden Befehl führen Sie das Rating update aus:
darktable-db -u
Synchronize darktable rating with bitmaps from the whole photo library. The bitmap must be in the same directory as the raw file. This may take a very longer time. Please wait...
976 files from 4868 checked
/var/daten_hdd/home/foto_archiv/2014_Stockholm/img_0627.jpg updated
977 files from 4868 checked
/var/daten_hdd/home/foto_archiv/2014_Stockholm/img_0628.jpg updated
....
draktable-db Skript
Das Skript darktable-db einfach unter /usr/bin abspeichern und ausführbar machen. Sie können das Skript auch hier herunterladen.
Quelltext vom Skript darktable-db Rev. 05 |
#! /bin/sh # ############################################################################# NAME_="darktable-db" HTML_="" PURPOSE_="darktable database tool" SYNOPSIS_="$NAME_ [-s] [-i <input_dir>] -o <output_dir>" REQUIRES_="standard GNU commands" VERSION_="0.5" DATE_="2016-04-02" AUTHOR_="H. Klemm" URL_="www.multimedia4linux.de" CATEGORY_="file" PLATFORM_="Linux" SHELL_="bash" DISTRIBUTE_="yes" DEPENDENCE_="darktable-cli, sqlite3, ls, wc, cut, rm, whoami, md5sum, printf, grep, exiftool"# ############################################################################# # This program is distributed under the terms of the GNU General Public License# HISTORY: # 2016-03-20 v0.2 - add export function # 2016-03-24 v0.3 - add root user blocking # - add reverse export # - add colorlable switch # 2016-03-27 v04 - add quality and quantity report option # 2016-03-29 v05 - add rating syncronization from bitmap with the xmp file # - add database backup function graceful_exit() { ##### # Function called for a graceful exit # No arguments ##### exit } error_exit() { ##### # Function for exit due to fatal program error # Accepts 1 argument # string containing descriptive error message ##### echo "${NAME}: ${1:-"Unknown Error"}" >&2 exit 1 } term_exit() { ##### # Function to perform exit if termination signal is trapped # No arguments ##### echo "${NAME}: Terminated" exit } int_exit() { ##### # Function to perform exit if interrupt signal is trapped # No arguments ##### echo "${NAME}: Aborted by user" exit } usage() { ##### # Function to display usage message (does not exit) # No arguments ##### echo "Usage: ${PROGNAME} -h | -c |-r |-s | -q |-u |-v | -e colorlable | -m write mode | -f export format | -i path | -o path | -l colorlable | -x width | -y hight" } helptext() { ##### # Function to display help message for program # No arguments ##### usage echo "Options:\n"echo "-h, Help Display this help message and exit" echo "-c Create database backup Save database file to ~/.config/darktable/db_backups" echo "-r Replace database file Overwrites the database file with a selected backup" echo "-s Show database report Shows darktable database informations" echo "-q Quality and quantity report Shows photo library information" echo "-u Update bitmap rating Synchronize darktable rating with bitmaps" echo "-v Version Database API version" echo "-e Export colorlabled bitmap red, yellow, green, blue, magenta" echo "-m Write mode dav = Delete all existing image versions and write new," echo " env = Export new version," echo " sev = Skip image if exist" echo "-f Export bitmap format jpg, png, tif, ppm, pfm, pdf" echo "-i Input directory /var/lib/photoarchiv or recursive" echo "-o Output direktory Optional if different with input directory" echo " /var/lib/photoarchiv/hdtv_export" echo "-l Switch colorlable after export to red, yellow, green, blue, magenta" echo "-x Image width in pixel Optional, default without scaling = 0" echo "-y Image hight in pixel Optinnal, default without scaling = 0" echo " -y 1080 for HDTV resolution" exit } create_database_backup() { checksumme=`md5sum ~/.config/darktable/library.db | cut -d" " -f1` datum=`date +"%Y-%m-%d_%H:%M"` if [ -d ~/.config/darktable/db_backups ] then cp ~/.config/darktable/library.db ~/.config/darktable/db_backups/library.db_$datum checksumme_backup=`md5sum ~/.config/darktable/db_backups/library.db_$datum | cut -d" " -f1` if [ "$checksumme" = "$checksumme_backup" ] then echo "Backup file ~/.config/darktable/db_backups/library.db_$datum successfully saved" exit else echo "Error backup file! Pleasure ckeck the backup." exit fi else mkdir ~/.config/darktable/db_backups cp ~/.config/darktable/library.db ~/.config/darktable/db_backups/library.db_$datum checksumme_backup=`md5sum ~/.config/darktable/db_backups/library.db_$datum | cut -d" " -f1` if [ "$checksumme" = "$checksumme_backup" ] then echo "Backup file library.db_$datum successfully saved. You can check it with the command darktable --library ~/.config/darktable/db_backups/library.db_$datum" exit else echo "Error backup file! Pleasure ckeck the backup." exit fi fi }replace_database() { ls -l ~/.config/darktable/db_backups | cut -d" " -f10 read -p "Please enter the file to which you want to replace the database: " replace_file if [ -e ~/.config/darktable/db_backups/$replace_file ] then if [ -e ~/.config/darktable/library.db ] then read -p "Are you sure that you want overwrite the library.db [Y/n]" overwrite if [ "$overwrite" = "Y" ] then cp -f ~/.config/darktable/db_backups/$replace_file ~/.config/darktable/library.db echo "library.db database has been successfully replaced" exit 0 else echo "Replace backup was aborted by user" exit 4 fi fi else echo "Error. Backup file $replace_file not found" exit 6 fi }show_db_info() { echo "Analysing Darktable Sqlite 3 database...\n" numberfilmrolls=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM (SELECT DISTINCT folder FROM film_rolls)";` numberphotos=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM (SELECT DISTINCT id FROM images)";` lablered=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM color_labels WHERE COLOR = 0";` lableyellow=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM color_labels WHERE COLOR = 1";` lablegreen=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM color_labels WHERE COLOR = 2";` lableblue=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM color_labels WHERE COLOR = 3";` labelmagenta=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM color_labels WHERE COLOR = 4";` echo "The Darktable database includes:" echo "Filmrolls:" $numberfilmrolls echo "Photos:" $numberphotos "\n" echo "Photos with colorlabels:" echo "Red labels:" $lablered #ID 0 echo "Yellow labels:" $lableyellow #ID 1 echo "Green labels:" $lablegreen #ID 2 echo "Blue labels:" $lableblue #ID 3 echo "Magenta labels:" $labelmagenta #ID 4 echo "Without labels:" $((numberphotos-lablered-lableyellow-lablegreen-lableblue-labelmagenta)) "\n" echo "The filmrolls are saved at direktory:" sqlite3 ~/.config/darktable/library.db "SELECT folder FROM film_rolls"; exit } show_qaq_info() { filmrolls=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM (SELECT DISTINCT folder FROM film_rolls)";` COUNTER=0 echo "Analysing darktable photo library. Please wait..." while [ $COUNTER -lt $filmrolls ]; do input_dir=`sqlite3 ~/.config/darktable/library.db "SELECT folder FROM film_rolls LIMIT $COUNTER,1"`; # Check RAW files quantity_dng=`ls -1 $input_dir"/"*.dng 2>/dev/null | wc -l`; #DNG RAW quantity_cr2=`ls -1 $input_dir"/"*.cr2 2>/dev/null | wc -l`; #Canon RAW quantity_raf=`ls -1 $input_dir"/"*.raf 2>/dev/null | wc -l`; #Fuji RAW quantity_raw=`ls -1 $input_dir"/"*.raw 2>/dev/null | wc -l`; #Leica RAW quantity_mrw=`ls -1 $input_dir"/"*.mrw 2>/dev/null | wc -l`; #Minolta RAW quantity_nef=`ls -1 $input_dir"/"*.nef 2>/dev/null | wc -l`; #Nikon RAW quantity_orf=`ls -1 $input_dir"/"*.orf 2>/dev/null | wc -l`; #Olympus RAW quantity_rw2=`ls -1 $input_dir"/"*.rw2 2>/dev/null | wc -l`; #Panasonic RAW quantity_pef=`ls -1 $input_dir"/"*.pef 2>/dev/null | wc -l`; #Pentax RAW quantity_srw=`ls -1 $input_dir"/"*.srw 2>/dev/null | wc -l`; #Samsung RAW quantity_x3f=`ls -1 $input_dir"/"*.x3f 2>/dev/null | wc -l`; #Sigma RAW quantity_arw=`ls -1 $input_dir"/"*.arw 2>/dev/null | wc -l`; #Sony RAW total_dng=`expr $total_dng + $quantity_dng` total_cr2=`expr $total_cr2 + $quantity_cr2` total_raf=`expr $total_raf + $quantity_raf` total_raw=`expr $total_raw + $quantity_raw` total_mrw=`expr $total_mrw + $quantity_mrw` total_nef=`expr $total_nef + $quantity_nef` total_orf=`expr $total_orf + $quantity_orf` total_rw2=`expr $total_rw2 + $quantity_rw2` total_pef=`expr $total_pef + $quantity_pef` total_srw=`expr $total_srw + $quantity_srw` total_x3f=`expr $total_x3f + $quantity_x3f` total_arw=`expr $total_arw + $quantity_arw` # Check Bitmap files quantity_jpg=`ls -1 $input_dir"/"*.jpg 2>/dev/null | wc -l`; quantity_png=`ls -1 $input_dir"/"*.png 2>/dev/null | wc -l`; quantity_tif=`ls -1 $input_dir"/"*.tif 2>/dev/null | wc -l`; quantity_ppm=`ls -1 $input_dir"/"*.ppm 2>/dev/null | wc -l`; quantity_pfm=`ls -1 $input_dir"/"*.pfm 2>/dev/null | wc -l`; quantity_pdf=`ls -1 $input_dir"/"*.pdf 2>/dev/null | wc -l`; total_jpg=`expr $total_jpg + $quantity_jpg` total_png=`expr $total_png + $quantity_png` total_tif=`expr $total_tif + $quantity_tif` total_ppm=`expr $total_ppm + $quantity_ppm` total_pfm=`expr $total_pfm + $quantity_pfm` total_pdf=`expr $total_pdf + $quantity_pdf` # Rating quantity_rating_0=`grep -r -i 'Rating="0"' $input_dir"/"*.xmp | wc -l` quantity_rating_1=`grep -r -i 'Rating="1"' $input_dir"/"*.xmp | wc -l` quantity_rating_2=`grep -r -i 'Rating="2"' $input_dir"/"*.xmp | wc -l` quantity_rating_3=`grep -r -i 'Rating="3"' $input_dir"/"*.xmp | wc -l` quantity_rating_4=`grep -r -i 'Rating="4"' $input_dir"/"*.xmp | wc -l` quantity_rating_5=`grep -r -i 'Rating="5"' $input_dir"/"*.xmp | wc -l` total_rating_0=`expr $total_rating_0 + $quantity_rating_0` total_rating_1=`expr $total_rating_1 + $quantity_rating_1` total_rating_2=`expr $total_rating_2 + $quantity_rating_2` total_rating_3=`expr $total_rating_3 + $quantity_rating_3` total_rating_4=`expr $total_rating_4 + $quantity_rating_4` total_rating_5=`expr $total_rating_5 + $quantity_rating_5` COUNTER=`expr 1 + $COUNTER` done rating100=`expr $total_rating_0 + $total_rating_1 + $total_rating_2 + $total_rating_3 + $total_rating_4 + $total_rating_5` ratingpercent_0=$(echo "scale=2 ; $total_rating_0*100/$rating100" |bc) ratingpercent_1=$(echo "scale=2 ; $total_rating_1*100/$rating100" |bc) ratingpercent_2=$(echo "scale=2 ; $total_rating_2*100/$rating100" |bc) ratingpercent_3=$(echo "scale=2 ; $total_rating_3*100/$rating100" |bc) ratingpercent_4=$(echo "scale=2 ; $total_rating_4*100/$rating100" |bc) ratingpercent_5=$(echo "scale=2 ; $total_rating_5*100/$rating100" |bc)#Output informations echo "The darktable photo library contains\n" echo "RAW files" if [ "$total_dng" -gt "0" ] then echo "DNG files:" $total_dng fiif [ "$total_cr2" -gt "0" ] then echo "CR2 files:" $total_cr2 fiif [ "$total_raf" -gt "0" ] then echo "RAF files:" $total_raf fiif [ "$total_raw" -gt "0" ] then echo "RAW files:" $total_raw fiif [ "$total_mrw" -gt "0" ] then echo "MRW files:" $total_mrw fiif [ "$total_nef" -gt "0" ] then echo "NEF files:" $total_nef fiif [ "$total_orf" -gt "0" ] then echo "ORF files:" $total_orf fiif [ "$total_rw2" -gt "0" ] then echo "RW2 files:" $total_rw2 fiif [ "$total_pef" -gt "0" ] then echo "PEF files:" $total_pef fiif [ "$total_srw" -gt "0" ] then echo "SRW files:" $total_srw fi if [ "$total_x3f" -gt "0" ] then echo "X3F files:" $total_x3f fi if [ "$total_raf" -gt "0" ] then echo "ARW files:" $total_arw fi echo "\n" echo "Bitmap files" if [ "$total_jpg" -gt "0" ] then echo "JPG files:" $total_jpg fiif [ "$total_png" -gt "0" ] then echo "PNG files:" $total_png fiif [ "$total_tif" -gt "0" ] then echo "TIF files:" $total_tif fiif [ "$total_ppm" -gt "0" ] then echo "PPM files:" $total_ppm fi if [ "$total_pfm" -gt "0" ] then echo "PFM files:" $total_pfm fiif [ "$total_pdf" -gt "0" ] then echo "PDF files:" $total_pdf fi echo "\n" echo "Image rating" echo "Images with 0 stars:" $total_rating_0 "("$ratingpercent_0"%)" echo "Images with 1 stars:" $total_rating_1 "("$ratingpercent_1"%)" echo "Images with 2 stars:" $total_rating_2 "("$ratingpercent_2"%)" echo "Images with 3 stars:" $total_rating_3 "("$ratingpercent_3"%)" echo "Images with 4 stars:" $total_rating_4 "("$ratingpercent_4"%)" echo "Images with 5 stars:" $total_rating_5 "("$ratingpercent_5"%)" exit }update_rating() { echo "Synchronize darktable rating with bitmaps from the whole photo library. The bitmap must be in the same directory as the raw file. This may take a very longer time. Please wait..." numberphotos=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM (SELECT DISTINCT id FROM images)";` filmrolls=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM (SELECT DISTINCT folder FROM film_rolls)";` COUNTER=0 jpg_updates=0 png_updates=0 tif_updates=0 checked_files=0 while [ $COUNTER -lt $filmrolls ]; do # Read path from filmroll 1,2,3... input_dir=`sqlite3 ~/.config/darktable/library.db "SELECT folder FROM film_rolls LIMIT $COUNTER,1"`; # Create file list from filmroll 1,2,3... rm -f /tmp/dt_input_raw_files.txt `sqlite3 ~/.config/darktable/library.db "SELECT distinct images.filename FROM film_rolls, images WHERE film_rolls.id = images.film_id AND film_rolls.folder ='$input_dir'" > /tmp/dt_input_raw_files.txt;` while read input_file do xmpfile=$input_dir"/"$input_file".xmp" jpgfile=$input_dir"/"`echo "$input_file" | cut -d'.' -f1`".jpg" pngfile=$input_dir"/"`echo "$input_file" | cut -d'.' -f1`".png" tiffile=$input_dir"/"`echo "$input_file" | cut -d'.' -f1`".tif" xmprating=`grep -r -i 'xmp:Rating=' $xmpfile | cut -c 16` jpgrating=`exiftool -p '$Rating' $jpgfile 2>/dev/null` pngrating=`exiftool -p '$Rating' $pngfile 2>/dev/null` tifrating=`exiftool -p '$Rating' $tiffile 2>/dev/null` if [ -f "$jpgfile" ] && [ "$xmprating" != "$jpgrating" ] then exiftool -overwrite_original -XMP:Rating=$xmprating $jpgfile >/dev/null 2>&1 echo "\n$jpgfile updated" jpg_updates=`expr 1 + $jpg_updates` fi if [ -f "$pngfile" ] && [ "$xmprating" != "$pngrating" ] then exiftool -overwrite_original -XMP:Rating=$xmprating $pngfile >/dev/null 2>&1 echo "\n$pngfile updated" png_updates=`expr 1 + $png_updates` fi if [ -f "$tiffile" ] && [ "$xmprating" != "$tifrating" ] then exiftool -overwrite_original -XMP:Rating=$xmprating $tiffile >/dev/null 2>&1 echo "\n$tiffile updated" tif_updates=`expr 1 + $tif_updates` fi checked_files=`expr 1 + $checked_files` printf "\r $checked_files files from $numberphotos checked" done < /tmp/dt_input_raw_files.txt COUNTER=`expr 1 + $COUNTER` done updates=`expr $jpg_updates + $png_updates + $tif_updates` clear echo "\n$updates Rating tags of the bitmaps were updated" exit }version_info() { dtdbversion=`sqlite3 ~/.config/darktable/library.db "SELECT value FROM db_info";` echo "Darktable library.db API Version" $dtdbversion exit }set_colorlable() { # extract file number from db if [ "$lable_in" != "$lable_out" ]; then if [ -e ~/.config/darktable/library.db.lock ]; then echo "The darktable database is locked. Please exit darktable, if you want switch the colorlable!" exit 6 else filenumber=`sqlite3 ~/.config/darktable/library.db "SELECT DISTINCT images.id FROM film_rolls, images WHERE images.film_id = film_rolls.id AND film_rolls.folder = '$input_dir' AND images.filename = '$input_file'";` # change colorlable sqlite3 ~/.config/darktable/library.db "UPDATE color_labels SET color = '$lable_out' WHERE imgid = '$filenumber'"; fi fi }export_image() { # delete temp file rm -f /tmp/dt_input_files.txt# Count colorlabled images numberlabled=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM film_rolls, images, color_labels WHERE film_rolls.id = images.film_id AND images.group_id = color_labels.imgid AND film_rolls.folder ='$input_dir' AND color_labels.color='$lable_in'";` # Write message echo "Exporting $numberlabled ${colorlable_in}" labled raw images, from ${input_dir} as ${outputfileformat} to ${output_dir} ... # Create file list `sqlite3 ~/.config/darktable/library.db "SELECT distinct images.filename FROM film_rolls, images, color_labels WHERE film_rolls.id = images.film_id AND images.group_id = color_labels.imgid AND film_rolls.folder ='$input_dir' AND color_labels.color='$lable_in'" > /tmp/dt_input_files.txt;` while read input_file do case "$writemode" in dav) deltefile=$output_dir"/"$output_file`echo "$input_file" | cut -d'.' -f1`"*."$outputfileformat; rm -f $deltefile; darktable-cli $input_dir"/"$input_file $output_dir"/"$output_file`echo "$input_file" | cut -d'.' -f1`"."$outputfileformat --width $image_width --height $image_hight; ;; env) darktable-cli $input_dir"/"$input_file $output_dir"/"$output_file`echo "$input_file" | cut -d'.' -f1`"."$outputfileformat --width $image_width --height $image_hight; ;; sev) output_filecheck=$output_dir"/"$output_file`echo "$input_file" | cut -d'.' -f1`"."$outputfileformat; if [ -f "$output_filecheck" ]; then echo "[export_job] skip file $output_filecheck"; else darktable-cli $input_dir"/"$input_file $output_filecheck --width $image_width --height $image_hight; fi ;; esac set_colorlable done < /tmp/dt_input_files.txt rm -f /tmp/dt_input_files.txt} ########################################################################### # Program starts here ############################################################################ Trap TERM, HUP, and INT signals and properly exittrap term_exit TERM HUP trap int_exit INT# Process command line argumentsif [ "$1" = "-h" ]; then helptext graceful_exit fi# Display usage message if no options or arguments are givenif [ "$1" = "" ]; then usage exit 1 fiif [ `whoami` = "root" ] then echo "The use of darktable-db is not possible as root user" exit 10 fi# Process arguments colorlable_in="" outputfileformat="" input_dir="" output_dir="" image_width=0 image_hight=0while getopts ":hcrsquve:m:f:i:o:l:x:y:" options; do case "$options" in h) helptext ;; c) create_database_backup ;; r) replace_database ;; s) show_db_info ;; q) show_qaq_info ;; u) update_rating ;; v) version_info ;; e) colorlable_in="$OPTARG" ;; m) mode="$OPTARG" ;; f) outputfileformat="$OPTARG" ;; i) input_dir="$OPTARG" ;; o) output_dir="$OPTARG" ;; l) colorlable_out="$OPTARG" ;; x) image_width="$OPTARG" ;; y) image_hight="$OPTARG" ;; esacdonecase "$colorlable_in" in red) lable_in=0 ;; yellow) lable_in=1 ;; green) lable_in=2 ;; blue) lable_in=3 ;; magenta) lable_in=4 ;; *) echo "Unkown colorlable"; exit 9;;esaccase "$colorlable_out" in red) lable_out=0 ;; yellow) lable_out=1 ;; green) lable_out=2 ;; blue) lable_out=3 ;; magenta) lable_out=4 ;; *) lable_out=$lable_in;;esac case "$mode" in dav) writemode=dav;; env) writemode=env;; sev) writemode=sev;; *) echo "Unkown write mode"; exit 8;; esaccase "$outputfileformat" in jpg) ;; png) ;; tif) ;; ppm) ;; pfm) ;; pdf) ;; *) echo "Unknown or not supported export format"; exit 7;; esac# Main program if [ "$input_dir" = "recursive" ] then # Calculate number of filmrolls filmrolls=`sqlite3 ~/.config/darktable/library.db "SELECT COUNT (*) FROM (SELECT DISTINCT folder FROM film_rolls)";` COUNTER=0 while [ $COUNTER -lt $filmrolls ]; do input_dir=`sqlite3 ~/.config/darktable/library.db "SELECT folder FROM film_rolls LIMIT $COUNTER,1"`; output_dir=$input_dir export_image COUNTER=`expr 1 + $COUNTER` done else if [ "$output_dir" = "" ]; then output_dir=$input_dir fi export_image fi |
Übersicht
Das Farbkontrast Modul bietet eine vereinfachte Steuerung zum Ändern der Kontraststärke und der Trennung der a-Achse (grün/magenta) und der b-Achse (blau/gelb) des Lab-Farbraumes.
Verwendung
Höhere Werte erhöhen den Farbkontrast der gewählten Achse, niedrigere verringern ihn.
Die Wirkung der Schieberegler des Moduls sind ähnlich wie die Anwendung einer steileren oder abgeflachten a- oder b-Kurve im Modul Farbkurve.
Grün / Magenta
Ändert den Farbkontrast der a-Achse für grün und magenta.
Blau / Gelb
Ändert den Farbkontrast der b-Achse für blau und gelb.
Überblenden
Bei ausgeschaltetem Überblenden wirken sich die Änderungen auf das gesamte Bild aus. Durch einen Überblend Modus können Sie z.B. die Änderungen auf den über die Maske ausgewählten Bereich beschränken bzw. die Wirkung des Moduls beeinflussen. Weitere Informationen siehe Überblend Modus.
Zurück zur Darktable Modul Übersicht
Übersetzt durch M. Goele
Verbesserungsvorschläge oder Korrektur der Übersetzung vom Handbuch bitte an dartkable(at]multimedia4linux.de schicken.
Übersicht
Dieses Modul ist ein leistungsfähiges Werkzeug, um die Kanäle zu verwalten. Das Kanalmixer Modul akzeptiert den roten, grünen und blauen Kanal als ein Eingangssignal. Als Ausgangssignal bietet es die Kanäle für rot, grün, blau, grau, Farbton, Sättigung und Helligkeit an. Wählen Sie zuerst den Ausgangskanal und legen dann für jeden Eingangskanal die Menge für den Ausgangskanal fest.
Verwendung
Mit dem Kanalmixer kann man Farbstiche aus Bildern entfernen und SW-Bilder mit individuellen Grautönen erzeugen. Der Kanalmixer wird oft auch beim Cross-processing eingesetzt. Wählen Sie zuerst ein Ziel, beispielsweise Helligkeit, Sättigung oder einen Farbkanal auswählen und stellen dann mittels der Regler für jeden Eingangskanal den Wert für den Ausgangskanal ein.
Ziel
Über die Auswahlbox liegen Sie zuerst das Ausgangssignal fest. Es stehen der Farbton, die Sättigung, die Helligkeit, die Farbkanäle rot, grün, blau und die Graustufen zur Auswahl.
Rot
Mit dem Schieber können Sie den Anteil des Rot-Kanal im Ausgabekanal festlegen. Gültige Werte sind von -2 bis +2. Bei einem Werte von 0 bleibt der Rotanteil unverändert.
Grün
Mit dem Schieber können Sie den Anteil des Grün-Kanal im Ausgabekanal festlegen. Gültige Werte sind von -2 bis +2. Bei einem Werte von 0 bleibt der Grünanteil unverändert.
Blau
Mit dem Schieber können Sie den Anteil des Blau-Kanal im Ausgabekanal festlegen. Gültige Werte sind von -2 bis +2. Bei einem Werte von 0 bleibt der Blauanteil unverändert.
Überblenden
Bei ausgeschaltetem Überblenden wirken sich die Änderungen auf das gesamte Bild aus. Durch einen Überblendmodi können Sie z.B. die Änderungen auf den über die Maske ausgewählten Bereich beschränken bzw. die Wirkung des Moduls beeinflussen. Weitere Informationen siehe Überblend Modi.
Beispiele:
Bei Hauttönen in Farbfotos neigt der Blaukanal zu mehr Details und Rot tendenziell für glattere Hauttöne als Grün. Durch mischen der drei Eingangskanäle steuert man die Ausgabe. Gehen Sie sehr dezent mit den Werten um.
Im folgenden Bild wird ein Monochrom-Porträt durch einfaches Auswählen des grauen Kanal als Ausgang erzeugt. Eine glatte Hautfarbe wird durch die Reduzierung des Blaukanal-Eingang erreicht und mit der Betonung des roten in Bezug auf den grünen Eingangskanal zusätzlich unterstrichen. Hier wurde ein Mix der RGB-Kanäle von 0.9, 0.3, -0.3 zusammen mit einer Belichtungserhöhung um 0,6 EV für etwas mehr Helligkeit verwendet.
In diesem Beispiel wurde ein RGB Mix von 0.4, 0.75, -0.15 verwendet um mit mehr grün als rot, einige Merkmale zurückzubringen. Wir reduzieren noch den blauen Kanal um unerwünschte Hautstrukturen abschwächen.
Wertetabelle für einige S/W-Filme
Klassisches Schwarz-Weiß-Filme haben unterschiedliche charakteristische Farbreaktionen. Wählen Sie als Ziel "Graustufen" aus und versuchen Sie die vorgeschlagen Werte für Ihren Lieblingsfilmtyp.
Filmtyp |
Rot |
Grün |
Blau |
AGFA 200X |
0.18 |
0.41 |
0.41 |
Agfapan 25 |
0.25 |
0.39 |
0.36 |
Agfapan 100 |
0.21 |
0.40 |
0.39 |
Agfapan 400 |
0.20 |
0.41 |
0.39 |
Ilford Delta 100 |
0.21 |
0.42 |
0.37 |
Ilford Delta 400 |
0.22 |
0.42 |
0.36 |
Ilford Delta 3200 |
0.31 |
0.36 |
0.33 |
Ilford FP4 |
0.28 |
0.41 |
0.31 |
Ilford HP5 |
0.23 |
0.37 |
0.40 |
Ilford Pan F |
0.33 |
0.36 |
0.31 |
Ilford SFX |
0.36 |
0.31 |
0.33 |
Ilford XP2 Super |
0.21 |
0.42 |
0.37 |
Kodak T-Max 100 |
0.24 |
0.37 |
0.39 |
Kodak T-Max 400 |
0.27 |
0.36 |
0.37 |
Kodak Tri-X 400 |
0.25 |
0.35 |
0.40 |
Normaler Kontrast |
0.43 |
0.33 |
0.30 |
Hoher Kontrast |
0.40 |
0.34 |
0.60 |
Standard S/W |
0.24 |
0.68 |
0.08 |
Zurück zur Darktable Modul Übersicht
Übersetzt durch M. Goele
Verbesserungsvorschläge oder Korrektur der Übersetzung vom Handbuch bitte an dartkable(at]multimedia4linux.de schicken.