Ü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,
 env  = Export new reversion (default),
 sev = Skip if file exist  

 -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 -s
Analysing Darktable Sqlite 3 database...
The Darktable database includes:
Filmrolls: 28
Photos: 4698
Photos with colorlabels:
Red labels: 1
Yellow labels: 88
Green labels: 511
Blue labels: 1
Magenta labels: 7
Without labels: 4090
The 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 contains
RAW files
DNG files: 5
CR2 files: 4847
Bitmap 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
fi
if [ "$total_cr2" -gt "0" ]
  then
  echo "CR2 files:" $total_cr2
fi
if [ "$total_raf" -gt "0" ]
  then
  echo "RAF files:" $total_raf
fi
if [ "$total_raw" -gt "0" ]
  then
  echo "RAW files:" $total_raw
fi
if [ "$total_mrw" -gt "0" ]
  then
  echo "MRW files:" $total_mrw
fi
if [ "$total_nef" -gt "0" ]
  then
  echo "NEF files:" $total_nef
fi
if [ "$total_orf" -gt "0" ]
  then
  echo "ORF files:" $total_orf
fi
if [ "$total_rw2" -gt "0" ]
  then
  echo "RW2 files:" $total_rw2
fi
if [ "$total_pef" -gt "0" ]
  then
  echo "PEF files:" $total_pef
fi
if [ "$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
fi
if [ "$total_png" -gt "0" ]
  then
  echo "PNG files:" $total_png
fi
if [ "$total_tif" -gt "0" ]
  then
  echo "TIF files:" $total_tif
fi
if [ "$total_ppm" -gt "0" ]
  then
  echo "PPM files:" $total_ppm
fi
 
if [ "$total_pfm" -gt "0" ]
  then
  echo "PFM files:" $total_pfm
fi
if [ "$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 exit
trap term_exit TERM HUP
trap int_exit INT
# Process command line arguments
if [ "$1" = "-h" ]; then
    helptext
    graceful_exit
fi
# Display usage message if no options or arguments are given
if [ "$1" = "" ]; then
    usage
    exit 1
fi
if [ `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=0
while 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" ;;
    esac
done
case "$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;;
esac
case "$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;;
      
esac
case "$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.

Joomla templates by a4joomla