Zur Dynamic Range-Einstellung in Fujifilm X-T Kameras

Die „Dynamic Range“-Option der Fujifilm X Kameras

DR-Funktion

In die Fujifilm Kameras der X-Serie ist eine DR-Funktion eingebaut. DR steht für „Dynamic Range“ und soll bei der fotografischen Aufnahme sehr kontrastreicher Motive im JPEG-Modus helfen. Mit dieser Funktion soll besser vermieden werden können, dass Lichter ungewollt „ausfressen“ bzw. Schatten „absaufen“.

Hintergrund

Ich habe zwei Belichtungsreihen einer konstanten Lichtquelle (hellgrau leuchtender Bildschirm meines iPads) mit meiner Fujifilm X-T20 Kamera aufgenommen. Eine Belichtungsreihe wurde mit ISO 200, DR100%, die andere mit ISO 800, DR200% aufgenommen. Blende, Brennweite des Objektivs und Abstand zwischen Kamera und Lichtquelle blieben dabei konstant, die Belichtungszeit variierte jeweils von 1/8023 s bis 1/8 s in Stufen, die 1/3-Blendenstufen bzw. 1/3-EV-Werten (Exposure Values) entsprechen.

Das folgende Bild zeigt die Ergebnisse der drei Farbkanäle der RAW-Files im doppelt-logarithmischen Maßstab. Dabei wurden die Pixelwerte eines (500 x 500) Pixel-Ausschnitts um die Bildmitte ausgewählt und jeweils Mittelwerte der Farbkanäle Rot, Grün und Blau gebildet. Die Abszisse stellt die Belichtung in EV-Werten (Exposure Values) entsprechend den Angaben der Kamera dar. Die Ordinate enthält die Digitalausgaben der drei Kanäle minus dem Schwarzwert von 1022.

Die Punkte stellen die Daten der Belichtungsreihe mit ISO 200, DR100% und die gestrichelten Linien die Daten der Belichtungsreihe mit ISO 800, DR400% dar. Demnach bewirkt die Anwendung der DR-Funktion DR400% mit gleichzeitiger Erhöhung des an der Kamera eingestellten ISO-Wertes um den Faktor 4 auf ISO 800 praktisch keinen Unterschied im RAW-Abbild des Motivs. Es ist unerheblich, ob man mit DR100% und dazu ausgewählten Belichtungsdaten: Blende B, Belichtungszeit T und ISO-Wert S oder DR400% und B, T und um zwei Stufen erhöhten ISO-Wert belichtet, das RAW-Abbild ändert sich dadurch praktisch nicht. Die Pixel-Daten der RAW-Files beider Reihen sind praktisch identisch.

Die dazugehörigen JPEG-Files sind Ergebnisse der kamerainternen Berechnung auf Basis der (jeweils identischen) RAW-Daten. Im Unterschied zu den RAW-Daten unterscheiden sich jedoch die JPEG-Bilder entsprechend der gewählten DR-Funktion erheblich voneinander.

Die folgende Abbildung zeigt die Ergebnisse aus den JPEG-Files für die beiden Belichtungsreihen. Dargestellt ist jeweils nur eine der RGB-Farben, da das graue Monitorbild aufgrund des Weißabgleichs fast identische Werte in den drei Kanälen liefert. Dabei wurden wiederum Mittelwerte des bereits für die Abbildung 1 verwendeten (500 x 500) Pixel-Ausschnitts verwendet. Die Abszisse stellt wieder die Belichtung in EV-Werten dar. Die Ordinate ist der RGB-Wert im JPEG File.

Die Umsetzung der RAW-Werte in RGB-Werte für DR100%, ISO 200 erfolgt in der Kamera entsprechend der grün gefärbten Kurve. Um die Lichter eines Motivs mit der DR400%-Funktion zu sichern, wird in der Kamera die in der obigen Abbildung dargestellte rote Kurve verwendet.

Der Vergleich beider Kurven zeigt, dass ein mit den Einstellungen DR400% und ISO 800 aufgenommenes JPEG-Bild im Vergleich zu einem mit DR100% und ISO 200 aufgenommenen JPEG-Bild mit einer um minus zwei EV-Stufen verschobenen Kurve mit zusätzlich abgesenkten Lichtern aus den RAW-Daten berechnet wird. Es erfolgt praktisch eine Überbelichtung der Schatten- und Mitteltöne entsprechend dem ISO-Wert 800 mit einer Absenkung im Bereich der Lichter. So wird zum Beispiel mit der DR400%-Einstellung bei 0 EV der RGB-Wert erreicht, der bei der DR100%-Einstellung erst bei ca. 1,7 EV Überbelichtung auftritt. Bei gleicher sonstiger Kameraeinstellung ergeben sich dadurch bei der Belichtungsreihe mit DR400%, ISO 800 deutlich hellere Mitten und Schattentöne ohne jedoch die Lichter zu beschneiden und somit ein größerer Dynamikbereich im JPRG-Bild.

Zur Demonstration ist die um 2 EV-Werte nach links verschobene DR100%-Kurve in der obigen Abbildung als grün gestrichelte Kurve eingezeichnet. Sie zeigt eine Deckung mit der DR400%-Kurve im Schatten- und Mittenbereich. Die rote Kurve demonstriert im Vergleich dazu die Erweiterung des Dynamikbereichs im Bereich der Lichter.

Die Wahl der DR200% ISO 400 Einstellung führt zu entsprechenden Ergebnissen für Verschiebungen um eine EV-Stufe.

Hieraus lassen sich zwei Belichtungsstrategien für die Aufnahmepraxis ableiten.

Aufnahmepraxis

Die eine Belichtungsstrategie zielt auf die Aufhellung der Schatten bei gleichzeitiger Rettung der Lichter. Zunächst ermittelt man bei dieser Vorgehensweise im DR100%-Modus die Aufnahmeparameter für das Motiv so, dass die bildwichtigen Lichter nicht „ausgefressen“ sind. Durch Anmessen der Schatten, zum Beispiel mit der Spot-Belichtungsmessung der Kamera und der Lichtwaagenanzeige ermittelt man dann die dazugehörigen Änderungen der EV-Werte. Oder man verdreht das Belichtungskorrekturrad, zählt die Klicks und beurteilt die Schattenwerte im Sucher dabei visuell. Dazu muss man allerdings die Anzeige auf „Belichtungsvorschau“ eingestellt haben. Schließlich muss man sich entscheiden, ob bzw. um wieviel Belichtungsstufen man die Schatten im JPEG-Bild dann anheben möchte. Dementsprechend wählt man bei ca. einem EV-Wert Unterschied DR200% und bei bis zu zwei EV-Werten DR400% aus. Anschließend erhöht man den ISO-Wert dementsprechend um eine bzw. zwei Stufen und macht dann die Aufnahme bei der ursprünglich gewählten Blende und Belichtungszeit. Bei diesem Vorgehen bleiben die Lichter bei dem zu Anfang ermittelten Wert und die Schatten werden entsprechend der gewählten DR-Stufe aufgehellt.

Bei der alternativen Strategie belichtet man im DR200%- bzw. DR400%-Modus auf die Schatten und hofft, dass die Dynamik für eine gute Darstellung der Lichter ausreicht. Ich bevorzuge die zuerst erläuterte Methode, da diese sicherstellt, dass die Lichter erhalten bleiben und nicht ungewollte Beschneidungen auftreten.

Die UniWB-Einstellung, Teil 3

Einleitung

In den Teilen 1 und 2 habe ich beschrieben, wie man für eine Digitalkamera auf relativ einfache Weise den UniWB-Abgleich machen kann. Im Ergebnis werden die Sensorwerte der drei Farbkanäle beim Weißabgleich nicht mehr mit unterschiedlichen Faktoren multipliziert, so dass beim Weißabgleich keine Verzerrung des Histogramms erzeugt wird. Jedoch ist das angezeigte Histogramm immer noch ein aus dem jpeg-Vorschaubild berechnetes Histogramm, d.h. es enthält immer noch Verzerrungen aufgrund der Signalverarbeitung der kamerainternen jpeg-Berechnungssoftware, z.B. durch die angewendete Tonkurve zum Kontrast- und Helligkeitsausgleich. Und es ist ein 8-Bit-Histogramm! Der höhere Dynamikumfang des RAW-Bildes (mehr als 12 Bit, je nach Kameramodell) kann in dem angezeigten Histogramm ohne weitere Manipulationen nicht dargestellt werden. Die Möglichkeiten, hier Abhilfe zu schaffen, hängen stark vom jeweiligen Kameramodell ab. Ich beschreibe im Folgenden, wie ich bei meiner Fujifilm X-T20 dabei vorgegangen bin.

Testaufnahmen

Für die weitere Untersuchung der Kameraeigenschaften habe ich eine Belichtungsreihe für die Fotografie einer weißen Wand bei Tageslicht im RAW-Format mit eingeschaltetem UniWB-Abgleich aufgenommen, bei jedem Bild das RGB-Histogramm auf dem Kameradisplay eingeschaltet und mit einem Smartphone zum Vergleich abfotografiert. Die Belichtungsreihe beginnt bei -3 EV und endet bei +3 EV, die Schrittweite beträgt 1/3 EV. Die RAW-Daten habe ich mit dem Programm RawDigger ausgewertet. Mit diesem Programm kann man das RAW-Histogramm auswerten und darstellen. Dabei habe ich zunächst nur einen kleinen Bereich der Fotos jeweils in der Bildmitte ausgewertet, damit die Helligkeitsverteilung auf der Wand und die Vignettierung des Objektivs keinen großen Einfluss auf das Histogramm haben. Die Abbildung 1 zeigt das RAW-Histogramm für 0 EV. Dabei ist das Histogramm so angepasst, dass der Grüne Kanal den Wert 0 EV erhält.

Abbildung 1: Beispielhistogramm für 0 EV

Trägt man nun die zu den jeweiligen RAW-Fotos gehörenden Sensor-Ausgaben (ADC) der drei Kanäle über den an der Kamera eingestellten Belichtungswerten in einem Diagramm auf, erhält man die folgenden Darstellungen, wobei die Abbildung 2 die Sensorwerte im linearen Maßstab und die Abbildung 3 im logarithmischen Maßstab zeigt.

Abbildung 2: Sensorwerte in Abhängigkeit von der Belichtung

Abbildung 3: Sensorwerte in Abhängigkeit von der Belichtung

Wie erwartet zeigt sich in der logarithmischen Darstellung ein streng linearer Zusammenhang, wobei bei einem Sensorwert von 15360 Sättigung eintritt. Dabei beträgt die Belichtung für den grünen Kanal 3,3 EV, für den roten Kanal 4,5 EV und für den blauen Kanal 4,3 EV.

Das Kamera-Histogramm

Das Kamera-Histogramm enthält die Daten aller Sensorpunkte. Aufgrund der Helligkeitsverteilung auf der fotografierten Wand, der Vignettierung des Objektivs und des intern in der Kamera gewählten Maßstabs der Häufigkeiten ergeben sich im Kamera-Histogramm keine schmalen Peaks sondern mehr säulenförmige Bereiche, d.h. der intern gewählte Maßstab der Häufigkeiten ist für Motive mit räumlich konstanter Helligkeit, wie eine weiße Wand, nicht gut geeignet, weil er die hohen Häufigkeiten nicht darstellen kann. Die folgende Abbildung 4 zeigt das Kamerahistogramm für die Aufnahme mit 0 EV Belichtung. Aufgrund der UniWB-Einstellung wird die weiße Wand im Kameradisplay grün dargestellt.

Abbildung 4: Kamerahistogramm für 0 EV Belichtung und UniWB

Andererseits ist zu erkennen, dass die UniWB Einstellung die Relation der drei Farbkanäle richtig wiedergibt (siehe zum Vergleich Abbildung 1).

Bei automatischem Weißabgleich mit der Kamera erhält man eine Histogrammdarstellung auf grauem Hintergrund mit praktisch gleich positionierten Histogrammen in allen Kanälen, wie die folgende Abbildung 5 zeigt. Der Bildhintergrund ist aufgrund der Kalibrierung der Belichtungsmessung in der Kamera entsprechend der eingestellten Belichtung mit 0 EV grau eingefärbt.

Abbildung 5: Kamerahistogramm für 0 EV Belichtung und automatischem Weißabgleich

(Die Belichtungszeiten der Fotos zu den Abbildungen 4 und 5 unterscheiden sich etwas, weil die Beleuchtungsbedingungen bei den Aufnahmen unterschiedlich sind.)

Im hier vorliegenden Fall einer weißen Wand erhält man im grünen Kanal deutlich höhere Sensorwerte als im roten und blauen Kanal, wie die RAW-Histogramme in den Abbildungen 1 und 4 zeigen. Bei automatischem Weißabgleich geht dieser Unterschied der Farbkanäle im Histogramm verloren, weil es aus dem bearbeiteten jpeg-Bild ermittelt wird. Außerdem sind die „Säulen“ deutlich nach rechts gerückt und suggerieren höhere Belichtungswerte und damit höhere Sensorwerte. Oder anders ausgedrückt, man wird aufgrund dieses Histogramms zu knapp belichten, wenn man den Belichtungsspielraum des Sensors voll nutzen möchte. Verläßt man sich bei der Belichtung auf ein solches Histogramm, kann es außerdem passieren, dass je nach Farbverteilung des Motivs bereits ein Farbkanal in den Sättigungsbereich kommt ohne dass dies angezeigt wird. Alles Gründe für das Fotografieren im RAW-Format mit UniWB -Einstellung, solange die Kamerahersteller kein RAW-Histogramm in die Kamerasoftware integrieren.

Justieren des Kamera-UniWB-Histogramms

Für die Bewertung der gewählten Belichtung, ist es wünschenswert, im Histogramm die Sättigungspunkte des Sensors in den drei Farbkanälen zu erkennen. Weil das aus dem jpeg-Vorschaubild gewonnene Histogramm trotz der UniWB-Einstellung nur 8 Bit des je nach Kameratyp 12 Bit bis 16 Bit umfassenden RAW-Bildes auflöst, ergibt sich hier ein weiteres Problem. Abhilfe ist hier nur möglich, indem die jpeg-Verarbeitung in der Kamera dazu veranlasst wird, die Transformation der Lichter des RAW-Bildes so zu verändern, dass eine entsprechende Anpassung am rechten Ende des Histogramms erfolgt. Bei den Fujifilm X-T Kameras kann diese Anpassung über die Funktion „TON LICHTER“ vorgenommen werden. Hier lassen sich Werte im Bereich von -2, -1, …, +4 auswählen, welche die Tonkurve im Bereich der Lichter verändern, d.h. den Kontrast erhöhen oder vermindern. Ich habe für die Darstellung dieses Einflusses auch eine entsprechende Belichtungsreihe aufgenommen. Bei praktisch unverändertem RAW-Histogramm ergibt sich mit zunehmendem Wert der TON-LICHTER-Einstellung eine Verschiebung des Kamerahistogramms zum rechten Rand und darüber hinaus. Es zeigt sich, dass eine Einstellung von -2 das Problem fast löst. Die Wahl eines Filmprofils mit flachem Farbkontrast, wie PRO.Neg.Std., unterstützt dies noch einmal. Bei einer Belichtung mit 3 EV und der Einstellung TON LICHTER von -2 überschreitet das Histogramm nur leicht den rechten Rand (hier der grüne Kanal) und es bleibt noch eine Reserve von ca. 1/3 EV bis zur Sättigung, wie die folgenden Abbildungen zeigen. Die folgende Abbildung 6 zeigt das RAW-Histogramm aus dem Programm RawDigger für das gesamte RAW-Bild (nicht nur für das Zentrum, wie Abbildung 1). Der grüne Kanal erreicht einen Sensorwert von 15183 im Vergleich zum Sättigungswert von 15360 bei meiner Kamera.

Abbildung 6: RAW-Histogramm für +3 EV

Abbildung 7: Kamerahistogramm mit UniWB und TON LICHTER = -2 bei +3 EV

Zusammenfassung

Für die Beurteilung der Belichtung von RAW-Aufnahmen ist eine UniWB-Einstellung des Weißabgleichs hilfreich. Weiterhin ist eine Justage des Kamerahistogramms hinsichtlich eines minimalen Abstandes zwischen dem rechten Rand und dem Sättigungspunkt des Sensors günstig. Für Fujifilm X-T Kameras kann hierzu die Funktion TON LICHTER verwendet werden, wobei sich bei meiner Kamera die Einstellung auf den Wert -2 und auf eine Filmsimulation mit PRO.Neg.Std. als optimal erwies.

Die UniWB-Einstellung, Teil2

Einleitung

Im Folgenden wird die Begründung des im Teil 1 beschriebenen iterativen Verfahrens dargestellt.

Modell

Für die weitere Darstellung wird in guter Näherung davon ausgegangen, dass der Sensor linear arbeitet, d.h. dass sein Ausgangssignal der gesammelten Lichtmenge und damit der „Helligkeit“ des fotografierten Objekts, in unserem Fall das Monitorbild, proportional ist und dies für jeden Pixel in gleicher Weise gilt. In diesem Fall kann der Zusammenhang zwischen dem Sensor-Ausgangssignal für jedes Pixel (RAW-Bild) und der Objekthelligkeit bei einer festen Belichtungseinstellung (Belichtungszeit, Blende, ISO-Wert) wie folgt dargestellt werden:

\vec{F} = \{C\} \cdot \vec{H} + \vec{B}.

Dabei sind
\vec{F} der Vektor mit den Sensordaten  für die drei RGB-Farbkanäle
F_r, F_g und F_b,
\{C\} die Transformationsmatrix,
\vec{H} der Vektor mit den Helligkeiten der drei Grundfarben des Monitors und
\vec{B} der Vektor mit den Schwarzwerten des Sensors, d.h. den Sensorausgaben bei schwarzem Monitorbild.
Die Komponenten des Vectors \vec{H} ergeben sich aus dem Vektor \vec{S} mit den normierten RGB-Werten (R/255, G/255, B/255) für die Ansteuerung
des Monitors und seinem \gamma -Wert mit:
\vec{H} = \vec{S}^{\frac{1}{\gamma}}.

Manueller Weißabgleich

Beim manuellen Weißabgleich ermittelt die Kamerasoftware eine  Korrekturmatrix

\{W\} = Diag(K_r, 1.0, K_b) ,

so dass gilt:

\vec{G} = \{W\} \cdot \vec{F} = \{W\} \cdot(\{C\}\cdot \vec{H} + \vec{B}).

Dabei enthält der Grauwert-Vektor \vec{G} identische Werte in seinen Komponenten.

UniWB-Einstellung

Um eine UniWB-Einstellung zu erreichen, muss somit ein solcher Helligkeitsvektor \vec{H_W} auf dem Monitor dargestellt werden, dass die Kamerasoftware für \vec{W} die Einheitsmatrix \{E\}= Diag(1.0, 1.0, 1.0) ermittelt. Dieser Helligkeitsvektor lässt sich bei bekannter Transformationsmatrix und bekanntem Schwarzwertvektor aus einem vorgegebenen Grauwert gemäß den obigen Gleichungen ermitteln:

\vec{H_W}=\{C\}^{-1}\cdot(\vec{G}-\vec{B})

Die Ermittlung der Transformationsmatrix, des Schwarzwertvektors und des Gammawertes des Monitors ist mit einem entsprechend gestalteten Testbild und der Anwendung von Parameterschätzverfahren auf das RAW-Abbilds dieses Testbilds möglich. Und mit der obigen Gleichung lassen sich dann die Helligkeitswerte und die RGB-Signalwerte zur Ansteuerung des Monitors für ein Testbild zum manuellen Weißabgleich ermitteln. Ich habe dieses Verfahren auch erprobt, es funktioniert, ist aber sehr aufwändig und wenig praktikabel. Ich habe auch im Internet eine etwas abgespeckte Version gefunden, die mit nur drei Testfarben auskommt und die Schwarzwerte nicht berücksichtigt, aber selbst diese Variante ist mir zu „unhandlich“ und die Ergebnisse waren nicht optimal. Daher verwende ich das im folgenden dargestellte iterative Verfahren.

Iterativer UniWB-Abgleich

Aus der im Abschnitt Weißbildabgleich dargestellten Beziehung folgt, dass zum einen gilt:

\vec{G} = \{W\} \cdot(\{C\}\cdot \vec{H} + \vec{B}).

Und zum anderen für den UniWB-Abgleich gilt:

\vec{G} = \{C\}\cdot (\vec{H_W} + \vec{B}).

Beide Gleichungen lassen sich kombinieren, wodurch sich ergibt:

\vec{H_W}=\{W\}\cdot\vec{H}+\{C\}^{-1}\cdot(\{W\}\cdot\vec{B}-\vec{B})

Hier ist bereits zu erkennen, dass bei einem Schwarzwert gleich Null der erste Summand das Problem löst. Es ist aber ebenso zu erkennen, dass der zweite Summand gegen Null konvergiert, wenn \{W\} gleich der Einheitsmatrix ist, also wird die Iterationsfolge

\vec{H}_{neu}=\{W\}\cdot\vec{H}_{alt}

gegen den gesuchten Vektor \vec{H_W} konvergieren.  Das Einsetzen der Komponentenwerte in den Vektor \vec{H} und in die Matrix \{W\} liefert dann den gesuchten Iterationsalgorithmus

R_{neu} = R_{alt}\cdot {K_r}^{\frac{1}{\gamma}}
G_{neu} = G_{alt}
B_{neu} = B_{alt}\cdot {K_b}^{\frac{1}{\gamma}}.

Die UniWB-Einstellung, Teil1

Einleitung

Die Software von Digitalkameras unterstützt den Fotografen dabei, die richtigen Einstellwerte für die Belichtung zu finden. Insbesondere Fotografen, die vorzugsweise im RAW-Format arbeiten, möchten ihre Fotos häufig so belichten, dass die hellsten bildwichtigen Teile gerade noch nicht überbelichtet sind, um den Belichtungsspielraum des Sensors voll auszunutzen. Hilfsmittel dazu ist meist das Live-Histogramm. Hiermit belichtet man in diesem Fall so, dass die bildwichtigen Lichter gerade noch nicht den rechten Rand des Histogramms erreichen (Exposure To The Right).
Das Histogramm gibt jedoch leider nicht den originalen Inhalt der RAW-Daten des Sensors wieder, sondern wird erst aus dem bereits von der Kamerasoftware online aus der RAW-Datei entwickelten (jpeg-)Foto berechnet. Dabei sind bereits eine Vielzahl von Berechnungen zur Bildverarbeitung, wie Kontrast, Helligkeit und Weißabgleich erfolgt. Daher wird es meist dazu kommen, dass bei der Aufnahme des Fotos der tatsächliche Belichtungsspielraum trotz ggf. konservativer Einstellungen für Kontrast und Helligkeit nicht ausgenutzt wird und ca. eine bis anderthalb Blendenstufen im Raw-Bild nicht genutzt werden. Abhilfe schafft hier die sogenannte UniWB-Einstellung der Kamera. Im Internet sind viele Möglichkeiten dargestellt, wie man diese Einstellung vornehmen kann. Diese Vorschläge erfordern aber meist kompliziertere Prozeduren mit Bildbearbeitungsprogrammen, wie z.B. mit Photoshop, und ein tieferes Verständnis des Farbmanagements digitaler Bildbearbeitung. Ich beschreibe meine etwas einfachere Vorgehensweise im folgenden Text. Besserer Bequemlichkeit halber habe ich für die Rechnerei und Testbilderzeugung ein Python-Skript erstellt, das weiter unten von dieser Website kopiert werden kann, aber eigentlich reichen auch ein Taschenrechner, das frei erhältliche dcraw und ein einfaches Zeichenprogramm, wie Paint o.ä.

Der Trick
Der Sensor einer Digitalkamera hat unterschiedliche Empfindlichkeiten in den drei Farbkanälen Rot, Grün und Blau. Diese Unterschiede werden erst bei der Weiterverarbeitung des RAW-Files ausgeglichen, indem für den Weißabgleich die RAW-Werte der drei Kanäle jeweils mit entsprechenden Korrekturfaktoren multipliziert werden. Da der Kanal für die grüne Farbe am empfindlichsten ist, wird sein Korrekturfaktor auf den Wert Eins gesetzt und die Werte aus dem roten und dem blauen Kanal werden dann jeweils mit von Eins verschiedenen Korrekturfaktoren multipliziert. Der Trick besteht nun darin, alle drei Korrekturwerte auf den Wert Eins zu setzen, also eine „Unitary White Balance“, kurz UniWB-Einstellung vorzunehmen. Dadurch gibt das Live-Histogramm dann die korrekten Verhältnisse der RAW-Farbkanäle im Histogramm viel besser wieder.

Der Nachteil ist jedoch ein Grün-Farbstich des jpeg-Bilds, sowohl im Live-Bild des Kameradisplays als auch des ggf. abgespeicherten jpg-Bilds. Letzteres ist damit praktisch unbrauchbar.
Der korrekte Weißabgleich muss dann immer bei der Entwicklung des RAW-Bilds von Hand vorgenommen werden. Dies ist technisch kein Problem, vergrößert aber den Zeitaufwand.

Es gibt zur Zeit bei keiner Digitalkamera die Möglichkeit, die Werte der Korrekturkoeffizienten für den Weißabgleich direkt einzugeben. Der Trick besteht darin, ein zur Empfindlichkeit der Farbkanäle des Kamerasensors „inverses“ Bild auf einem Monitor zu erzeugen und mit diesem einen manuellen Weißabgleich durchzuführen, sodass dieser Weißabgleich kameraintern in allen drei Farbkanälen Korrekturfaktoren mit einem Wert nahe Eins erzeugt.
Nachdem ich mich eine ganze Weile mit den verschiedenen Möglichkeiten beschäftigt hatte dies zu bewerkstelligen, ist mir eine relativ einfach Variante eingefallen, die ohne komplizierte Mathematik auskommt und auch keine umfassenden Kenntnisse über das Farbmanagement u.ä. erfordert.

Die Vorgehensweise ist iterativ:

  1. Es wird ein Monitorbild mit definierten RGB-Vorgabewerten erzeugt.
  2. Mit diesem Bild wird ein manueller Weißabgleich durchgeführt.
  3. Anschließend wird mit diesem Weißabgleich ein beliebiges gut belichtetes Foto aufgenommen und als Raw-Datei abgespeichert.
  4. Aus den Exif-Daten dieses Fotos werden die Korrekturkoeffizienten Kr und Kb des manuellen Weißabgleichs ausgelesen.
  5. Mit diesen Korrekturkoeffizienten wird dann ein korrigiertes Monitorbild mit neuen RGB-Werten erzeugt. (Diese Arbeit erledigt mein Pythonskript.)

Die Prozedur wird dann wiederholt, und zwar solange, bis die Korrekturfaktoren nahe genug am Zielwert Eins liegen. 5% Abweichung ist nahe genug.
Als weiterer Eingabewert wird der Gamma-Wert (\gamma) des verwendeten Monitors benötigt. Der Gamma-Wert ist für die gleichmäßige Konvergenz der beiden Korrekturfaktoren während der Iteration wichtig. Er kann ausreichend genau mit visuellen Tools aus dem Internet ermittelt werden. Im Pythonskript ist dieser Wert als Variable „Gam“ abgespeichert und muss daher entsprechend angepasst werden. Werte von 1.8 (Mac) oder 2.2 (Windows PC) sind dafür üblich. Für mein IPad habe ich den Wert 2,0 ermittelt. Wichtig ist außerdem, während der Prozedur die Kamera mit immer gleichen Belichtungseinstellungen zu benutzen, also zweckmäßigerweise den manuellen Modus für die Belichtungseinstellungen zu wählen.

Ein Beispiel

Für das Beispiel habe ich meine alte KonicaMinolta A200 benutzt, mit meiner Fujifilm XT-20 hat die Prozedur ebenfalls in gleicher Weise funktioniert.  Zunächst habe ich mit meinem Pythonskript und den Eingaben: R = G = B = 90 und Kr = Kb = 1.0 ein Graubild erzeugt, dieses auf meinem IPad (sein Bildschirm ist besser als mein PC-Monitor) dargestellt und einen manuellen Weißbildabgleich durchgeführt. Mit diesem Abgleich habe ich ein Foto (in meiner Wohnung) gemacht und mir dann mit dcraw die relevanten Koeffizienten anzeigen lassen:

\Projekte\Foto\UniWB\Iteration>dcraw -i -v PICT0140.MRW
Filename: PICT0140.MRW
Camera multipliers: 602.000000 254.000000 400.000000 254.000000

Die Camera Multipliers sind die Parameter des eingestellten Weißabgleichs in der Kamera. Sie werden in dcraw für die sog. Bayer-Anordnung der Farbmatrix angegeben. Es handelt sich daher um die 4 Werte für die Farbkanäle RGBG. Für die weitere Berechnung werden die Werte dann auf den grünen Farbkanal normiert (G=1).
Die gesuchten Korrekturwerte ergeben sich dementsprechend aus den Werten der „Camera multipliers“, und zwar sind in diesem Fall:
Kr = 602.0/254.0 = 2.37 und
Kb = 400.0/254.0 = 1.57.

Mit diesen Werten errechnet das Pythonskript die neuen RGB-Werte aus

R_{neu} = R_{alt} \cdot K_r^{\frac{1}{\gamma}}, G_{neu} = G_{alt}, B_{neu} = B_{alt} \cdot K_r^{\frac{1}{\gamma}},

und mit diesen Werten wird die Prozedur wiederholt. Diese Iteration erfolgt dann solange, bis man mit dem Ergebnis zufrieden ist oder es sich nicht mehr verbessert. (Warum diese Prozedur funktioniert, erkläre ich demnächst in einem anderen Beitrag.)
In dem gewählten Beispiel ergab sich folgender Ablauf:

\Projekte\Foto\UniWB\Iteration>dcraw -i -v PICT0140.MRW
Filename: PICT0140.MRW
Camera multipliers: 602.000000 254.000000 400.000000 254.000000

Filename: PICT0141.MRW
Camera multipliers: 335.000000 254.000000 312.000000 254.000000

Filename: PICT0142.MRW
Camera multipliers: 280.000000 254.000000 281.000000 254.000000

Filename: PICT0143.MRW
Camera multipliers: 272.000000 254.000000 267.000000 254.000000

Filename: PICT0144.MRW
Camera multipliers: 264.000000 254.000000 261.000000 254.000000

Filename: PICT0145.MRW
Camera multipliers: 256.000000 254.000000 260.000000 254.000000

Die dazugehörigen RGB-Werte und Korrekturfaktoren Kr und Kb waren:

  1.   90 90  90  2.37   1.57
  2. 138 90 112 1.319 1.228
  3. 158 90 124 1.102 1.106
  4. 165 90 130 1.071 1.051
  5. 170 90 133 1.039 1.026
  6. 173 90 134 1.008 1.023

Nach 5 Iterationsschritten war meine Zielvorgabe von weniger als 5 %-Abweichung von 1 bereits erreicht.
Das dazugehörige Monitorbild kann abgespeichert und bei Bedarf jederzeit wieder verwendet werden.

Das Pythonskript

Das Python-Skript kann hier heruntergeladen werden.