Lab als Arbeitsfarbraum - 8bit vs. 16bit



Häufig liest man gutgemeinte Tipps, die eine Entrauschung oder Schärfung im Lab-Modus empfehlen.  Das hat in der Tat auch gewisse Vorteile, da man im Lab-Farbraum die Helligkeit (L-Achse) unabhängig von der Farbe (a- und b-Achsen) bearbeiten kann. Es kommt dem Sehgevermögen des Auges entgegen, weil wir die Helligkeitsinformationen (Luminanz) besser auflösen können, als die Farbinformationen (Chrominanz).

Die Sache hat allerdings einen gewaltigen Haken: Der Lab-Raum ist sehr viel größer als die meisten RGB-Räume, insbesondere als sRGB (IEC 61966-2-1) 1), dem von Hewlett-Packard und Microsoft entwickelten Standard für Bildschirmdarstellungen. Das Problem ist die allgemeine Verwendung von Integer-Werten (ganzen Zahlen) mit 8bit Farbtiefe, also 28 = 256 Abstufungen (0 bis 255). Ein RGB-Farbraum ist ein Würfel mit der Kantenlänge 256, der sozusagen komplett und lückenlos 2) mit Farben gefüllt ist. Lab spannt auch einen würfelförmigen Raum mit der Kantenlänge 256 auf, nur verschwendet er leider ca. 65% der theoretisch möglichen Kombinationen von L, a und b an Farben, die es physikalisch nicht gibt. Oder andersrum: Nur gut 35% der in Lab zahlenmäßig darstellbaren Farben gibt es überhaupt. Zum besseren Verständnis kann man sich das mal hier anschauen. Diese schiefe bunte Kartoffel ist der Lab-Farbraum oder auch Gamut, er beinhaltet die Farben, die es auch wirklich gibt. Der transparente Quader ist der von L, a und b aufgespannte Raum der theoretisch möglichen Farben 3). Von den über 16 Millionen Möglichkeiten sind also nur knappe 6 Millionen (35%) mit Farben belegt. Die sRGB-Kartoffel ist noch kleiner, sie beschränkt sich ebenfalls auf ca. 35% der in Lab existierenden Farben. Somit bleiben also letztendlich wenig über 2 Millionen Farben übrig 4).

Ganz schön bitter, nicht? Das bedeutet jetzt nicht, daß generell bei jedem Bild 87% aller Farbinformationen das Zeitliche segnen, denn nicht jedes Bild enthält alle möglichen Farben von sRGB. Aber Verluste gibt es auf jeden Fall. Man muß sie nicht gleich sehen, aber sie sind da. Wenn man dann später lustig an den Gradationskurven rumdreht, die Sättigung ein wenig erhöht, die Tonwerte spreizt etc., dann erhöhen sich sukzessive die Bildstörungen (Rauschen) oder es kommt sogar zu richtigen Stufen in Farbverläufen.

Und das alles nur, weil in ganzen Zahlen gerechnet wird. Würde man mit Fließkommazahlen rechnen, dann gäbe es diese Quantisierungsfehler nicht. Und das ist der Punkt, wo das 16bit-Format ins Spiel kommt: Damit wird nicht etwa der Farbbereich (unsinnigerweise noch mehr) erweitert, sondern die Zwischenabstufungen werden verfeinert. Wir haben jetzt also nicht mehr 256, sondern 216 = 65.536 Abstufungen pro Achse. Das sind 281 Billionen Farbmöglichkeiten! 13% davon sind immer noch 34 Billionen, das reicht jetzt also übrig für die 16 Millionen Farben von sRGB.

Wenn man in Photoshop eine Datei direkt von Profil A in Profil B konvertiert, dann dient Lab als Basis für die Umrechnung, als sogenannter Profile Connection Space (PCS). Beide Profile enthalten die Umrechnungsvorschrift vom jeweiligen Farbraum nach Lab, der Farbrechner (CMM) berechnet dann daraus den direkten Weg von A nach B. Diese Berechnung erfolgt mit 16bit-Genauigkeit, auch wenn die Daten ursprünglich nur in 8bit vorliegen. Konvertiert man jedoch eine Datei direkt nach Lab, dann wird das in der jeweiligen Farbtiefe vorgenommen, also im schlechtesten (und wohl häufigsten) Fall in 8bit.



Links ist das Testbild. Es wurde in sRGB (8bit) erstellt und hat im Rot- und Grün-Kanal zwei perfekte Verläufe (Glättung 0, ohne Dither) von Schwarz nach Weiß. Der Blau-Kanal wurde mit 50% Grau gefüllt. Das kann man auch schön am Histogramm sehen: Rot- und Grün-Kanal sind komplett gefüllt, d.h. jeder der 256 Tonwerte kommt gleich häufig im Bild vor, und der Blau-Kanal besteht aus nur einem einzigen Tonwert.


Umwandlung von sRGB nach Lab in 8bit




Es hat sich offenbar nichts geändert, das Bild sieht genau so weich und glatt aus, wie oben. Aber das Histogramm zeigt, daß hier deutlich gekürzt wurde: Ist oben noch in zwei Kanälen der gesamte Bereich von 0 bis 255 ausgefüllt, so haben hier die Verteilungen einen gehörigen Abstand zum Rand. Auch wenn der B-Kanal gefüllter wäre, im a- und b-Kanal von Lab drängelt sich immer alles wie ein Haufen Pinguine um die Mitte.



Umwandlung von Lab nach sRGB in 8bit




So, jetzt sind wir wieder da, wo wir einmal waren, nur haben wir ganz schön Federn gelassen. Auch wenn das Bild noch schön aussieht, die Histogramme sind doch arg mitgenommen. Besonders in den Schatten (im Histogramm ganz links) sieht das nicht gut aus und läßt böses ahnen (Rauschen in den dunklen Tonwerten). Aus unserem einsamen Stab im B-Kanal  ist so eine Art Empire State Building geworden.

Später zeige ich, was sich in den Bildern getan hat. Doch zuerst wollen wir mal den Königsweg über 16bit ausprobieren.



Umwandlung von sRGB nach Lab in 16bit




Bevor ich jetzt nach Lab umwandle, konvertiere ich meine Datei ins 16bit-Format. Das tut nicht weh, und ist mit einem Klick erledigt. Am Bild und im Histogramm verändert sich dabei überhaupt nichts.


Dann ab nach Lab. Im Bild sehen wir, wie immer, keinen Unterschied (warum machen wir das hier eigentlich?). Aber das Histogramm sieht schon ein wenig aufgeräumter aus, die Ränder sind glatter. An der Form hat sich überhaupt nichts verändert. Wenn Du mit der Maus über das Bild fährst, dann erscheint zum Vergleich das 8bit-Histogramm.


So weit sieht das also schon mal ganz ordentlich aus. Jetzt kommt der große Moment: Die Rückkonvertierung. Wird das 16bit-Format praktisch halten, was es theoretisch verspricht?



Umwandlung von Lab nach sRGB in 16bit




Bingo. Wir sind wieder genau da angekommen, von wo wir gestartet sind. Alle drei Histogramme sind perfekt! Auch das Luminanz-Histogramm sieht aus wie vorher.


Daß man im Bild immer noch keine Änderung sieht, brauche ich wohl nicht zu erwähnen.


Aber wo ist der Haken?



Umwandlung in sRGB von 8bit nach 16bit




Hier kommt der Wermutstropfen, aber es ist mehr ein Tröpfchen: Bei der Umrechnung von 16bit zu 8bit kommt es auch zu Quantisierungsfehlern. Aber die sind wesentlich kleiner, als bei der 8bittigen Lab-Konvertierung. Im Großen und Ganzen sieht das alles sehr anständig aus. Zum Vergleich wird das Histogramm der 8bit-Konvertierung angezeigt, wenn Du mit der Maus über das Bild fährst.


Der Unterschied ist an den Histogrammen deutlich zu sehen, während die Veränderungen im Bild eher dezent sind. Wie angekündigt, zeige ich jetzt aber noch, wie man die Veränderungen im Bild sichtbar machen kann, oder wie diese veilleicht bei der nachgelagerten Bearbeitung ans Tageslicht kommen können.



Ein einfacher Trick, auch geringfügigste Unterschiede zwischen einzelnen Pixeln herauszustellen, ist die Sättigung bis zum Anschlag hochzudrehen. Dann werden auch feinste Nuancen in der Farbe deutlich sichtbar. Ganz links das Originalbild: Trotz extremer Sättigung ist das Bild perfekt, kein Pixel tanzt aus der Reihe. In der Mitte das Bild nach der 8bittigen Konvertierung nach Lab. Da der Farbraum etwas anders funktioniert, wirkt sich hier eine Erhöhung der Sättigung etwas anders aus, aber das Wichtigste sehen wir schon: Vor allem in der Mitte wirkt das Bild pixelig, die Farbübergänge sind nicht mehr sauber. Rechts dann das desaströse Endergebnis: Sieht aus wie ein GIF. Hier sieht man jetzt ganz klar, daß viele feine Zwischenabstufungen einfach fehlen.


Original, 8bit

Lab, 8bit

sRGB, 8bit

Und hier das gleiche im 16bit-Workflow. Kommentare erübrigen sich. Links wieder das Original in 8bit, in der Mitte das Bild in 16bit Lab, und rechts in 8bit sRGB. Wie man sieht, sieht man nichts ;-) Auch die kleinen Fehler bei der 16bit-nach-8bit-Konvertierung sind nicht zu sehen.


Original, 8bit

Lab, 16bit

sRGB, 8bit

Hier noch ein anderes Beispiel: ein Streifen aus dem Rotkanal in 200%-Ansicht. Oben das Original, in der Mitte das Ergebnis nach 8bit-Worfkflow, unten nach 16bit-Workflow. Vor allem, wenn man vorhatte, das Bild in Lab zu entrauschen, ging das in 8bit wohl nach hinten los. Hier sieht man das Rauschen in den Schatten, das ich oben am Histogramm schon angedeutet hatte.


R-Kanal, Original, 8bit

R-Kanal, nach Lab-Konvertierung in 8bit

R-Kanal, nach Lab-Konvertierung in 16bit




1) siehe http://www.srgb.com
2) sofern man bei diskreten Werten von lückenlos sprechen kann. Der Würfel enthält 256 x 256 x 256 = 16.777.216 unterschiedliche Farben.
3) in dieser Darstellung ist es kein Würfel, da die L-Achse auf 100 normiert wurde. Das machen auch viele Programme so, aber intern wird mit 256 gerechnet.
4) hier wird es genauer aufgeführt: http://www.brucelindbloom.com/RGB16Million.html