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}}.