Wenn man heute von 16 Bit Farbtiefe spricht kann das entweder ziemlich schlecht oder ziemlich gut gemeint sein. Zeit für ein paar aufklärende Worte, worauf man bei Farben im Videobereich achten sollte - besonders bei der Farbkorrektur.
Der aktuelle Bericht über Apples Color 1.0 hat uns auf die Idee gebracht, einmal näher auf die Problematik der Farbtiefen einzugehen. Wir haben uns gefragt, warum Color 1.0 unter Nvidia nur mit 8 Bit rechnet und besonders, warum das scheinbar niemanden stört.
8 Bit gestern und heute
Die Zeiten in denen man sogar nur eine gesamte Farbtiefe von 8 Bit hatte sind glücklicherweise vorbei. Denn bei dieser Farbtiefe (die man heute eigentlich nur noch für Gifs benötigt) werden sogenannte indizierte Farben verwendet. Hierbei werden in einer Farbtabelle oder Farbpalette (Look Up Table, LUT) 256 Farbtöne definiert und nur diese Farbtöne können dann in einem Bild verwendet werden.
Dies kann man sich so vorstellen, wie ein Malkasten,den man mit 256 nicht mischbaren Farben bestückt. Jede Farbe enthält dann eine Nummer und jedes Pixel im Bild entspricht dem Prinzip „Malen nach Zahlen“ (dessen Zeiten ebenfalls schon vorbei zu sein scheinen). Auf jeden Fall enthält jedes Pixel nur eine Nummer, die der Farbe aus der Farbpalette entspricht. Da man 256 Farben genau in 8 Bit unterbringt, benötigt die Beschreibung eines Farbpixels eben nur 8 Bit.

Mehr ist besser
Dank stark fallender Speicherpreise konnte man es sich allerdings schnell erlauben, ein Pixel auch durch mehr Informationen zu beschreiben. Aus praktikablen Gründen setzte man daher in der Computergrafik zuerst auf das allseits bekannte RGB-Modell. Hierbei wird eine Farbe aus den drei Grundfarben Rot, Grün und Blau zusammengemischt. Jedes Pixel wird also durch seinen Farbanteil an Rot, Grün und Blau beschrieben. Bei einer Farbtiefe von 16 Bit speichert man den Wert für den roten und den blauen Kanal in 5 Bit und den grünen Kanal in 6 Bit. Dies gibt 65.536 mögliche Farben. Das klingt auf den ersten Blick viel, jedoch gibt es bei genauerem Hinsehen nur 32 Farbtonabstufungen bei 5 Bit und 64 Farbtöne bei 6 Bit. Oder Kurz: Ein Bild kann beispielsweise nur 32 verschiedene Rot-Töne darstellen. Und das ist so wenig, dass man bei Farbverläufen schnell Stufen in einem Bild erkennt. Daher sind 16 Bit RGB (früher auch als „High Color“ bezeichnet) für die Videobearbeitung eine schlechte Sache.

Also ging man schnell zu 24 Bit-Farbtiefe über, die auch TrueColor bezeichnet wird.
Hierbei stehen für jeden Farbkanal 8 Bit bzw. 256 Farbabstufungen zur Verfügung, was über 16 Millionen mögliche Farbkombinationen ergibt. Das ist in der Tat eigentlich schon mehr, als die meisten menschlichen Auge unterscheiden können und reicht für die meisten Anwendungsfälle aus. Zumindest für die Distribution, doch dazu später mehr.
32 Bit und gut?
Da aktuelle Computer jedoch hauptsächlich mit 32 Bit-Werten rechnen (64 Bit stehen noch vor der Tür) brauchen Prozessoren deutlich länger um einen 24 Bit-Wert aus dem Speicher zu holen als einen 32 Bit-Wert (Glaubt es bitte einfach, wir gehen hier jetzt nicht auf Memory Alignment ein). Also speichert man Pixel meistens gleich mit 32 Bit. Und um die übrigen 8 Bit pro Pixel nicht verkommen zu lassen, nutzt man diese oft zur Speicherung des Alpha-Kanals (und lässt sie somit in 98 Prozent der Anwendungsfälle doch verkommen). Nachdem man für diesen Modus schräge Namen wie „True Color mit Alpha“ gefunden hatte, gingen die Profis eine Stufe zurück und sprechen in so einem Fall wieder von 8 Bit Farbauflösung, meinen damit aber 8 Bit pro Farbkanal und nicht 8 Bit für ein Pixel.
Also scheinen 32 Bit/8Bit pro Kanal das NonPlusUltra der Bildbearbeitung. Alles Paletti ohne Paletten? Leider nicht ganz. Denn wenn man Bilder nachträglich mit 8 Bit pro Kanal bearbeitet stößt man schnell an die Grenzen der 256 Abstufungen. Ein kurzes Beispiel zum Verständnis:
Wir haben ein Bild mit 256 Rot-Abstufungen und möchten es etwas heller machen. Dazu addieren wir zu jedem Rot-Wert 20 Rot-Einheiten. Wenn die Rottöne des Bildes vorher von 0 bis 255 gingen, so gehen sie jetzt nur noch von 20 bis 255. Denn wegen der 8 Bit-Auflösung des Rot-Kanals, kann kein Wert größer als 255 werden. Alle ursprünglichen roten Farben von 235 bis 255 besitzt nach unserer Korrektur also nur noch einen Wert und zwar 255.
Jetzt schlägts 48
Um also noch mehr Spielraum zu haben, verwenden viele Profiformate mittlerweile mehr als 8 Bit pro Kanal. Mit 10 Bit sind schon 1024 Farbabstufungen möglich, was 4 mal mehr als bei 8 Bit sind. 10 Bit werden bei professionellen Videoformaten wie DigiBeta eingesetzt. Professionelle Fotografie setzt sogar oft auf 36 Bit/12Bit pro Farbkanal. Und Schnittstellen wie das neue HDMI 1.3 erlauben sogar die Übertragung von 16 Bit pro Farbkanal (also insgesamt 48 Bit pro Pixel RGB 4:4:4 oder YCbCr 4:4:4).
Das schlägt die Brücke zu unserer Einleitung. Wer hier von 16 Bit Farbe spricht, meint etwas absolut professionelles. Aber Achtung: Die meisten TFTs haben intern eine 16- oder 18 Bit Farbauflösung, die jedoch pro Pixel gemeint und ergo ziemlich schlecht ist. Also hier nicht von technischen Daten in die Irre führen lassen.
Die Welt zwischen 0 und 1
Wer nun denkt, mit 48 Bit ist das Ende der Fahnenstange erreicht sein sollte, der irrt. Denn ein gehobener Farbarbeiter verachtet die Arbeit mit ganzzahlige Farbangaben (sogenannte Integer-Arithmetik). Er setzt auf Float-Werte, d.h. auf Fließkommazahlen. Hierbei können Farbkanäle einfach einen Wert zwischen 0 und 1 annehmen. Null ist Schwarz und 1 ist Weiß. 0,9 ist demnach ziemlich hell. Der Vorteil? Erstens werden diese Floats in der Regel mit 32 Bit gespeichert. Und zweitens sind Sie auch für Werte unter 0 oder über 1 definiert. Tritt also zwischenzeitlich ein Überlauf auf, so wird dieser ohne Verzerrungen oder Clipping im Float Wert gespeichert. Erst vor der Wiedergabe wird die Farbe dann geclippt oder komprimiert, was bei mehreren Bearbeitungsschritten ziemlich praktisch sein kann.
Die Praxis
OK, OK wird sich jetzt mancher Leser denken: „Meine HDV-CAM hat 8 Bit, also was kümmert mich das alles. Mehr als 8 Bit sind nicht auf dem Band, also muss mich das alles auch nicht interessieren“.
Wer so denkt, sollte sich das ganze wohl mal in der Praxis ansehen. Als erstes einmal ein Beispiel aus dem Lehrbuch: Wir machen ein Bild zuerst dunkler und dann wieder heller. Das macht auf den ersten Blick so keinen Sinn, jedoch kommt so etwas in der Praxis dauernd vor: Man korrigiert ein Bild in den Grunddtönen, dann montiert man die Secondaries rein, und dann gibt man dem ganzen nochmal einen Master-Look. Wir pfeifen (wegen der Anschaulichkeit) jetzt einmal auf die Secondaries...

Wie man sieht, entstehen Löcher im Histogramm. Das kommt daher, dass zuerst der Bereich von 0 bis 256 auf den Bereich 0 bis 128 gestaucht wird. Wenn man diese 128 Werte anschließend wieder auf 256 aufbläst (heller macht) so sind logischerweise nicht mehr alle Werte vorhanden, sondern es fehlt jeder zweite Wert. Schauen wir und den gleichen Vorgang mit 32 Bit (float) an:

Die Lücken sind aus dem Histogramm verschwunden, das Bild entspricht dem Original, wenn die Kurven exakt eingestellt sind. Denn trotz der Stauchung von 1 auf 0,5 gibt es genügend Zwischenwerte um alle Farbabstufungen zu erhalten. Wenn man dann wieder von 0,5 auf 1 streckt, kommen diese wieder zum Vorschein. Ich nenne dieses Beispiel Lehrbuchbeispiel, weil man in erster Linie die Löcher im Histogramm sieht und daran diese Problematik erklärt wird. Im realen Resultat sieht man den Unterschied dagegen nur im direkten Vergleich. Otto-Normal-Auge würde hier kaum einen Grund zur Klage haben. Sind 8 Bit also doch für die Mehrzahl der Anwendungen gut genug?
Das Pferd von hinten...
Definitiv nein, denn jetzt mal Reality Check: Wir drehen unser Beispiel um und hellen unser Bild zuerst auf und dunkeln es dann wieder ab. Vorhang auf für 8 Bit:

Uuuups, ziemlich flau das ganze. Was ist hier passiert? Durch das Aufhellen wurden alle Werte von 0 bis 128 auf den Bereich 0 bis 255 aufgeteilt. Alle werte über 128 wurden jedoch weggeclippt und wurden zum Einheitswert 255. Beim nachträglichen Abdunkeln wandern alle Werte von 0 bis 255 wieder auf den Bereich 0 bis 128 übertragen. Die weggeclippten Werte sind natürlich verloren. Es gibt jetzt einfach keinen Wert mehr über 128. Doch wie sieht es nun im Vergleich mit 32 Bit aus?

Tja, offensichtlich gibt es keine sichtbaren Verluste. Also wird es Zeit für unser Resümee.
Fazit – Oder was man daraus lernen kann
Wie man sieht, macht es einen großen Unterschied, ob das Schnitt- oder Compositingprogramm nur mit 8 Bit rechnet, oder auch größere Farbräume verarbeiten kann. Wir lernen daraus nicht nur, dass 8 Bit-Verarbeitung ziemlich verlustbehaftet ist, sondern dass auch die Reihenfolge der Korrekturen bei 8 Bit essentiell ist. Sobald es an eine echte Farbkorrektur ansteht, sollten daher mehr als 8 Bit auf jeden Fall Pflicht sein, auch und gerade wenn das Ursprungsmaterial nur in 8 Bit gefilmt wurde.
Mehr Bit verlangsamen natürlich auch die Bearbeitung oftmals deutlich, darum ist es bei Echtzeit-Effekten besonders wichtig, darauf zu achten, wie genau hier gerechnet wird.