WERBUNG

Der große RAW-Batch-Workflow-Thread

Zwei ganz kurze Anmerkungen zu dem letzten Skript.

Den ISO-Wert bekommt man auch ohne grep heraus, z.B. so:

Code:
exiftool -exif:iso -s -s -s  $dateiname

Außerdem lasse ich mein Skript aus den (Olympus-) Rohdaten mittels Ufraw immer erst TIFFs erzeugen, aus denen erst zum Schluss (nach dem Schärfen mit ImageMagick) JPEGs gemacht werden.

Normalerweise entrausche ich meine Fotos nicht. Die feinen Farbkrissel stören mich viel weniger als weichgematschte Konturen. Wenn, dann entrausche ich in Gimp einzelne Teile des Fotos selektiv mit dem Wavelet-Denoiser oder (seltener, da schnarchlangsam) mit Greycstoration.
 
Vielen Dank für die Anmerkung.

TIFF hat den Nachteil, dass UFRaw keine Exifs speichern kann. Dadurch müsste ich die originalen NEFs im selben Verzeichnis haben, wie meine JPGs, um die Exifs zu kopieren. Außerdem fällt die JPEG Kompression nicht auf. UFRaw und Greycstoration speichern mit Quality 100.

Entrauscht wird bei mir nur der Cr und Cb Kanal im YCrCb farbraum, wodurch das Helligkeitsrauschen erhalten bleibt. Dadurch wirken die Bilder keinesfalls glatt gebügelt, sondern bahalten eine natürliche Filmkörnung.
Dass Greycstoration recht langsam ist, stimmt leider. Die aktuelle Version unterstützt jedoch SMP, auf meinem Quad werden alle 4 Kerne zu über 95% ausgelastet.
 
Zuletzt bearbeitet:
Auf, zum zweiten Beispiel!
Gleiche Reihenfolge:
1. Bild: JPEG out of cam
2. Bild: NEF, konvertiert mit Bibble (allerdings nicht mit Default-Werten)
3. Bild: NEF, konvertiert mit obigem Skript

Netter Thread, zwar alt. Aber Nett...

meine Fragen:
  • Der Noise Threshold vom dcraw ist auf 250. Grund ? Quelle ?
  • Contrast Stretch @ dcraw: Bringt der Immer was ?
  • Gleiches gilt zum Sigmoidal Contrast, Grund für den Wert ?
  • Modulate, dito

Weiters, hat einer evt. gute Werte was den convert angeht für Canon EOS Modelle (hab ne 400D und ne 5D). Speziell was das unsharp und die Color/Contrast Dingens angeht. Ich glaube die convert Optionen aus deinem Script sind für die Canon RAW's ein bissi zuviel des guten oO.

S kommt nicht schlecht, aber es gibt schon reichlich Artefakte. Komm heut nicht mehr dazu... schau aber ein mal für ein paar Vergleichsreihen und Crops. Later :D
 
hats mal einer mit einer K200D probiert? Würde gerne, wenns ein passende Script gibt, das Teil testen

gruss
 
Aktualisierte verbesserte Versionen für folgende Modelle:

  • Canon EOS 450D (neu!)
  • Fujifilm FinePix S100FS
Bei der Canon-Version habe ich lediglich die Dateiendung von RAF (Fuji) auf CR2 (Canon) geändert. Parameter habe ich keine angepasst. Ein Testlauf mit mir verbliebenen 30 Raw-Dateien aus der EOS 450D brachte zufriedenstellende Ergebnisse.

Die Fuji-Version teste ich seit einigen Tagen anhand einer größeren Basis von Raw-Dateien (ca. 100, alle ISO 100). Ich habe die Parameter so justiert, dass ich den Output für optimal halte. Tests mit höheren ISO-Werten als 100 stehen allerdings noch aus. Eventuell werde ich den Wavelet-Denoising-Wert abhängig von der ISO-Zahl automatisch einstellen. Bei ISO 100 haben die Bilder auf jeden Fall eine sehr schöne feine Körnung (vielleicht so, wie eine aktuelle Olympus-FourThirds-Kamera bei ISO 400).

Bitte seht es mir nach, dass ich auf diverse Fragen zu den gewählten Parametern von dcraw und ImageMagick (convert) nicht näher eingehen kann. Die Werte habe ich durch Ausprobieren und durch Orientierung an Erfahrungen anderer aus einschlägigen Foren-Diskussionen gefunden. Ich habe mir keine eigenen Aufzeichnungen gemacht; das ständig veränderte Skript ist alles, was ich hierzu habe. Ich habe das Ganze selbst nie so ernst genommen, bin aber jetzt doch an einem Punkt angelangt, wo ich ernsthaft erwäge, das Skript nicht nur experimentell sondern produktiv einzusetzen. Damit hätte RAW wieder ein echte Chance bei mir. Nichts hasse ich nämlich mehr, als viele Stunden mit EBV vor dem Bildschirm zu verbringen.

Von einem Problem ist aber öfter berichtet worden: rosa Spitzlichter oder gar komplett lila-farbene Bilder. Falls soetwas auftritt, dann unterstützt die verwendete dcraw-Version nicht die Raw-Dateien. Im Zweifel sollte man sich immer die neueste Version von der dcraw-Homepage von Dave Coffin (http://www.cybercom.net/~dcoffin/dcraw/) besorgen und selbst kompilieren. Auch die in vielen Linux-Distributionen vorhandenen dcraw-Version sind oft hoffnungslos veraltet.

"cr22jpg" für Canon:
Code:
#!/bin/bash
#
# cr22jpg
# Automatisierter RAW-Workflow für die Canon EOS 450D
# unter Benutzung von dcraw, ImageMagick und ExifTool
# (c) 2009 by Wolfram-Asmund Sattler alias Ruler_of_the_Thirds
#
# ACHTUNG:
# erfolgreich getested mit dcraw 8.86
# (die meisten Linux-Distributionen enthalten ein veraltetes dcraw!)
#
# ANLEITUNG:
# Datei als cr22jpg speichern, mit chmod u+x cr22jpg ausführbar machen
# und in das Verzeichnis mit den zu konvertierenden RAW-Dateien kopieren.
# Aufruf in der Konsole: ./cr22jpg
#
if [ -e cr22jpg_done ]; then
    echo "raf2jpg has already been run. Nothing to be done."
    echo "Press <RETURN> to exit."
    read some_key && exit 1
fi
start_time=`date +%R`
all_files="`ls *.CR2 | wc -w`"
echo "Starting cr22jpg by W.-A. Sattler"
echo "   $all_files files to be processed."
echo

echo "Preparation: renaming CR2 files"
echo "-------------------------------------------------"
echo "The files are going to be renamed according to the scheme"
echo "PYYMMDD-HHMMSS-NN-label.CR2."
echo "The label may refer to the location, person or occasion." 
echo "Please enter label text (no spaces, only 0-9 and a-z):"
read text_label
echo
for raffile in *.CR2; do
    date_stamp=`exiftool -DateTimeOriginal -d "%Y%m%d-%H%M%S" $raffile`
    yymmdd_hhmmss=$(expr substr "`echo $date_stamp`" 24 36)
    unique_num=$(expr substr `date +"%N"` 8 9)
    raf_renamed="P$yymmdd_hhmmss-$unique_num-$text_label.CR2"
    mv $raffile $raf_renamed
    echo "$raffile -> $raf_renamed"
done
echo "... Renaming done."
echo
count_files=1
echo "Step 1 of 3: starting RAW-conversion (CR2->PPM)"
echo "------------------------------------------------"
for rawfile in P*.CR2; do
    echo "processing CR2-file $count_files / $all_files"
    dcraw -w -H 4 -b 2.1 -n 96 $rawfile
    let count_files=( $count_files + 1)
done
echo "... Conversion done."
echo
echo "Step 2 of 3: starting PPM-processing (PPM->JPG)"
echo "-------------------------------------------------"
count_files=1
for ppmfile in P*.ppm; do
    echo "processing PPM-file $count_files / $all_files"
    convert \
      -gaussian 1x1 \
      -contrast-stretch 0 \
      -sigmoidal-contrast 4,25% \
      -modulate 100,115 \
      -unsharp 0.8x1+5.5+0 \
      -quality 97 \
      $ppmfile \
      `basename $ppmfile .ppm`.jpg
    let count_files=( $count_files + 1)
done
echo
echo "Tidying up ..."
rm -f P*.ppm
echo "... ppm files deleted."
echo
echo "Step 3 of 3: transferring EXIF data"
echo "-------------------------------------------------"
count_files=1
for rawfile in `ls P*.CR2`; do
    echo "processing $count_files / $all_files"
    jpgfile=`basename $rawfile .CR2`.jpg
    exiftool -TagsFromFile $rawfile -x Orientation $jpgfile
    sleep 2
    let count_files=( $count_files + 1)
done
echo
echo "Tidying up ..."
mkdir JPG_backup
mkdir JPG
mv -f P*.jpg_original JPG_backup/
mv -f P*.jpg JPG/
touch cr22jpg_done
echo "... JPG files moved."
echo
echo "Workflow finished."
echo "Duration: started $start_time, finished `date +%R`."
echo "-------------------------------------------------"
# Ende des Skripts

"raw2jpg" für Fuji:
Code:
#!/bin/bash
#
# raf2jpg
# Automatisierter RAW-Workflow für die Fujifilm FinePix S100FS
# unter Benutzung von dcraw, ImageMagick und ExifTool
# (c) 2009 dagg_och_gryning
#
# ACHTUNG:
# erfolgreich getested mit dcraw 8.86
# (die meisten Linux-Distributionen enthalten ein veraltetes dcraw!)
#
# ANLEITUNG:
# Datei als raf2jpg speichern, mit chmod u+x raf2jpg ausführbar machen
# und in das Verzeichnis mit den zu konvertierenden RAW-Dateien kopieren.
# Aufruf in der Konsole: ./raf2jpg
#
if [ -e raf2jpg_done ]; then
    echo "raf2jpg has already been run. Nothing to be done."
    echo "Press <RETURN> to exit."
    read some_key && exit 1
fi
start_time=`date +%R`
all_files="`ls *.RAF | wc -w`"
echo "Starting raf2jpg by dagg_och_gryning"
echo "   $all_files files to be processed."
echo

echo "Preparation: renaming RAF files"
echo "-------------------------------------------------"
echo "The files are going to be renamed according to the scheme"
echo "PYYMMDD-HHMMSS-NN-label.RAF."
echo "The label may refer to the location, person or occasion." 
echo "Please enter label text (no spaces, only 0-9 and a-z):"
read text_label
echo
for raffile in *.RAF; do
    date_stamp=`exiftool -DateTimeOriginal -d "%Y%m%d-%H%M%S" $raffile`
    yymmdd_hhmmss=$(expr substr "`echo $date_stamp`" 24 36)
    unique_num=$(expr substr `date +"%N"` 8 9)
    raf_renamed="P$yymmdd_hhmmss-$unique_num-$text_label.RAF"
    mv $raffile $raf_renamed
    echo "$raffile -> $raf_renamed"
done
echo "... Renaming done."
echo
count_files=1
echo "Step 1 of 3: starting RAW-conversion (RAF->PPM)"
echo "------------------------------------------------"
for rawfile in P*.RAF; do
    echo "processing RAF-file $count_files / $all_files"
    dcraw -w -H 4 -b 2.1 -n 96 $rawfile
    let count_files=( $count_files + 1)
done
echo "... Conversion done."
echo
echo "Step 2 of 3: starting PPM-processing (PPM->JPG)"
echo "-------------------------------------------------"
count_files=1
for ppmfile in P*.ppm; do
    echo "processing PPM-file $count_files / $all_files"
    convert \
      -gaussian 1x1 \
      -contrast-stretch 0 \
      -sigmoidal-contrast 4,25% \
      -modulate 100,115 \
      -unsharp 0.8x1+5.5+0 \
      -quality 97 \
      $ppmfile \
      `basename $ppmfile .ppm`.jpg
    let count_files=( $count_files + 1)
done
echo
echo "Tidying up ..."
rm -f P*.ppm
echo "... ppm files deleted."
echo
echo "Step 3 of 3: transferring EXIF data"
echo "-------------------------------------------------"
count_files=1
for rawfile in `ls P*.RAF`; do
    echo "processing $count_files / $all_files"
    jpgfile=`basename $rawfile .RAF`.jpg
    exiftool -TagsFromFile $rawfile -x Orientation $jpgfile
    sleep 2
    let count_files=( $count_files + 1)
done
echo
echo "Tidying up ..."
mkdir JPG_backup
mkdir JPG
mv -f P*.jpg_original JPG_backup/
mv -f P*.jpg JPG/
touch raf2jpg_done
echo "... JPG files moved."
echo
echo "Workflow finished."
echo "Duration: started $start_time, finished `date +%R`."
echo "-------------------------------------------------"
# Ende des Skripts
 
Zuletzt bearbeitet:
Hmmm. Ich bin zwar ebenfalls ein großer Freund von Linux und Scripting und auch ein Kontroll-Freak, aber nachdem Bibble ja angeblich auch auf den dcraw (?) Sourcen basiert, habe ich kein schlechtes Gewissen, wenn ich jetzt sage, daß ich aktuell meine Bilder mit Bibble 5 pro bearbeite und die Batch-Bearbeitung sehr gut finde! - Nachdem ich mich nicht einmal Durch die Anleitung gelesen habe, sondern das System "intuitiv" bediene, fand ich es gestern recht erfreulich, festzustellen, daß es die Änderungen, die ich bereits an einigen Bildern durchgeführt hatte, bei einem "Testlauf" (Alle Bilder mal nach JPEG konvertieren) tatsächlich einfach mit konvertierte, so daß die wenigen bearbeiteten Bilder richtig aus der Flut der JPEGs heraus stachen.

Mein einziger "Wermutstropfen" ist, daß ich eine Nikon habe (D90) und Capture NX2 einfach noch ein paar Features mehr besitzt, die herstellerspezifisch sind und bei denen Bibble leider einfach nicht mithalten kann. - Zum Beispiel die Korrektur der Objektive (wer kann das besser als der Hersteller?) und auch das D-Lighting ist einfach genial...

Für meine alte Zweitkamera (EOS 350 D) werde ich Bibble wohl weiter nutzen, bei der D90 will ich eigentlich nicht wirklich zwischen zwei Systemen hin und her hüpfen.

Daß Bibble auch Objektivkorrektur kann, ist gut und schön, nur meine relativ aktuellen (Kit-) Objektive werden leider immer noch nicht unterstützt... :(

Ich habe zwar einen Sack voll Aufnahmen dafür geschossen, nur weiss ich nicht, ob die den Anspüchen von Bibble genügen...

Von der Scripterei bin ich weg. - Kostet viel Zeit und bringt nicht viel, wenn man Bibble oder ähnliches benutzt.

Ciao,

Herbert
 
aber nachdem Bibble ja angeblich auch auf den dcraw (?) Sourcen basiert
Hast Du dafür eine Quelle?
Daß Bibble auch Objektivkorrektur kann, ist gut und schön, nur meine relativ aktuellen (Kit-) Objektive werden leider immer noch nicht unterstützt...
Ich verstehe die Aufregung wegen der Objektiv-Korrektur nicht so ganz. Auch bei Diskussionen über andere RAW-Konverter. Sind eure Objektive wirklich so schlecht, daß das eine Rolle spielt? Oder ist mein Eindruck richtig, daß das Thema sehr übertrieben wird?
Von der Scripterei bin ich weg. - Kostet viel Zeit und bringt nicht viel, wenn man Bibble oder ähnliches benutzt.
Ich nicht. RAW-Konvertierung mache ich nicht per Script, da ich individuell sehen will, was ich mache.
Aber bei der Aufbereitung der Geo- und EXIF-Daten und der Pflege meiner Bildverwaltung verwende ich Scripte. Um Zeit zu sparen!
 
Zuletzt bearbeitet:
Hallo Leute,
anbei ist mein Skript zum Entwickeln der Olympus RAW's basierend auf ufraw-batch und imagemagik auf ubuntu 10.04

Aufruf aus der Konsole:
Code:
$ ./raw2jpg *.ORF
converting P7101120.ORF to P7101120.jpg (1/2) 100%
converting P7101121.ORF to P7101121.jpg (2/2) 100%
Oder
Code:
$ ./raw2jpg P7101120.ORF P7101121.ORF

Code:
#!/bin/bash
# ScriptName: raw2jpg
# Folgende tools werden benutzt:
#  toolname                :    ubuntu(debian) package name
#
#  exiftool                :    libimage-exiftool-perl
#  convert                 :    imagemagick
#  ufraw-batch             :    ufraw
#
CNTR=0
for i in $@; do
    CNTR=$(($CNTR+1))
    
    RAW_FILE_NAME="$i"

    PPM_FILE_NAME=${RAW_FILE_NAME%.*}.ppm
    UFRAW_FILE_NAME=${RAW_FILE_NAME%.*}.ufraw
    JPG_FILE_NAME=${RAW_FILE_NAME%.*}.jpg
    
    echo -n "converting $RAW_FILE_NAME to $JPG_FILE_NAME ($CNTR/$#) "
    echo -ne "0%"
    
    ufraw-batch \
      --wb=camera \
      --base-curve=linear \
      --curve=linear \
      --gamma=0.45 \
      --linearity=0.10 \
      --saturation=1.1 \
      --exposure=auto \
      --black-point=auto \
      --interpolation=ahd \
      --out-type=ppm \
      --create-id=also \
      --silent \
      "$RAW_FILE_NAME"
    echo -ne "\b\b30%"
# Leichte Entrauschung durch Gauss-Filter und USM. Umwandlung nach JPEG.
    convert "$PPM_FILE_NAME" \
      -gaussian 1x1 \
      -unsharp 2x1.4+1+0.02 \
      -quality 85 \
      "$JPG_FILE_NAME"

    echo -ne "\b\b\b60%"

    exiftool -TagsFromFile "$RAW_FILE_NAME" -x Orientation "$JPG_FILE_NAME" 2>&1 >/dev/null
    
    rm -rf "$UFRAW_FILE_NAME" "$PPM_FILE_NAME" "${JPG_FILE_NAME}_original"
    echo -e "\b\b\b100%"
done

Da die RawDateien über die Parameter eingegeben werden, sollte es auch mit allen anderen Kamerasystemen, die ufraw unterstützt, funktionieren.

Gruss,
knipster
 
Hallo Forum!

Ich habe vor meine ganzen alten Farbnegative zu scannen. Aktuell bin ich dabei die richtigen Einstellungen zu finden und den Workflow festzulegen um aus den TIFs etwas kleinere JPGs machen kann.

Im Augenblick überlege ich ob ich die "normalen" 16-Bit Farbtiefe nehme oder die "linearen".

Ich habe den Eindruck, dass das Skript auch für meine Anforderung geeignet wäre. Hat schon jemand Erfahrungen mit der TIF-Umwandlung bzw. dem Negativscannen in Zusammenhang mit diesem Skript?
 
Sehe ich das richtig, dass hier zumindest für die Nikon Version kein Kameraprofil verwendet wird? Warum nicht? Wenn ich UFRaw zum konvertieren bei meiner D80 benutze, brauche ich zumindest das D80 Profil, um auf die gleichen guten Farben wie out of cam zu kommen, ich vermute das wird auch hier der Grund für die abweichenden Farben sein.

Edit: mit folgenden 2 Befehlen bekomme ich ein Foto aus dem Raw, was den intern generierten JPEGs meiner D80 farblich sehr nahe kommt, wobei ich zB Farbmode I anstatt 3 benutze, letzterer liefert andere farben und würde daraufhin ein entsprechend anderes Kameraprofil erforderlich machen, wenn man die gleichen Farben aus einem Raw bekommen will. Das D80 Profil müsste auf der UFRaw Seite zu finden sein.

Code:
dcraw -T -o 0 -4 -w in.nef
convert -intent Perceptual -black-point-compensation -profile d80.icm -gamma 2.2 -profile sRGB.icm in.tiff out.tiff
 
Zuletzt bearbeitet:
...
mit folgenden 2 Befehlen bekomme ich ein Foto aus dem Raw, was den intern generierten JPEGs meiner D80 farblich sehr nahe kommt, ...

Vielen Dank für den Tipp.:top:
Ich habe mich schon immer gefragt, wie das mit dcraw geht. Bei dcraw gibt es ja auch die Möglichkeit, ein Kameraprofil anzugeben. Aber in Wirklichkeit geht es ja gar nicht mit dcraw sondern mit ImageMagick (convert).

Wie man an die Kameraprofile von Nikon-Kameras kommt steht übrigens hier:

http://blog.crushedredpepper.com/nikon/raw.html

Der Text bezieht sich zwar auf eine D300 und CaptureNX. Es geht aber auch mit einer D50 oder D90 (und wahrscheinlich auch mit anderen Modellen; die beiden habe ich probiert) und ViewNX 1.5 (vielleicht auch mit 2.03).
 
Bei dcraw gibt es ja auch die Möglichkeit, ein Kameraprofil anzugeben. Aber in Wirklichkeit geht es ja gar nicht mit dcraw sondern mit ImageMagick (convert).
Jap. Das Problem ist, wenn ich mich richtig erinnere, dass dcraw das Kameraprofil erst *nach* der Gammaanpassung anwendet, dies muss jedoch vorher geschehen.

Momentan sehen meine Parameter wie folgt aus (16Bit workflow):
Code:
dcraw -c -o 0 -4 -w #{nef} | convert pnm:- -intent Perceptual -auto-orient -profile #{PROFILE} -set colorspace sRGB -colorspace RGB -profile /usr/share/icm/NKsRGB.icm pnm:output.pnm

Hier habe ich jetzt den -gamma 2.2 Parameter durch die sRGB Gammakurve ersetzt, die ja einen linearen Anteil hat. Bei 2 Probeaufnahemn decken sich die Farben jetzt noch besser mit den Out-of-Cam Farben.

Anschließend werden noch kleinere Helligkeits- und Kontrastanpassungen vorgenommen, ggf. Entrauschen und eine lokale Kontrasterhöhung, gefolgt von leichtem Nachschärfen und dem Konvertieren in ein 8Bit JPEG.
 
Zuletzt bearbeitet:
WERBUNG
Zurück
Oben Unten