Cinematic Color, OpenColorIO and more

Der Technical Achievement Award der Academy of Motion Picture Arts and Sciences geht in diesem Jahr an Jeremy Selan für die Entwicklung von OpenColorIO. OpenColorIO ist ein OpenSource-Projekt zur Vereinheitlichung des Color Managements, das mittlerweile von diversen Tools unterstützt wird.

Auf der Website cinematiccolor.com gibts (ebenfalls von Selan) ein pdf zum Color-Management bei Visual Effects.

Links:
OCIO, opencolorio.org
fxguide.com: podcast mit Jeremy Selan
Cinematic Color, cinematiccolor.com
Jeremy Selan: Cinematic Color (pdf)

LWF & Dithering in Nuke

Ein Beitrag zum Dithering in Nuke. Dithering (auch Fehlerdiffusion, vermeidet harte Übergänge benachbarter Farbstufen) kommt immer dann zum Einsatz, wenn float-Daten in integer-Daten gewandelt werden, so zum Beispiel bei der Darstellung im Viewer.

Nuke bietet in den Viewersettings (gl_buffer_depth) 3 Farbtiefen an: byte, half-float und float. Bei den Varianten half-float und float kann die GPU das Dithering übernehmen, was die Darstellung beispielsweise insofern beeinflusst, als das Dithering bei jeder Zoomstufe neu angewendet wird.

Links:
Major Kong: All of a dither about Nuke dithering
Bill Spitzak: Conversion of Floating Point Images to 8-bit
Bill Spitzak: Advantages of linear compositing

Lineares Arbeiten mit Adobe After Effects CS6

Die ersten Blicke zeigen: Das (leider etwas umständliche) Management des linearen Workflows mit After Effects hat Adobe mit der neuen CS6 nicht verändert. Sämtliche Hinweise, die auf älteren Versionen basieren, behalten also ihre Gültigkeit.

Der lineare Workflow in 3ds Max mit VRay

Anhand von kleinen, anschaulichen Animationen wird hier der LWF im Allgemeinen und in der Anwendung mit VRay erläutert.
Linearer Workflow mit VRay und 3ds Max.

Dateiformate & Datenkompression

Da beim Arbeiten mit 16 oder 32 Bit float schnell große Datenmengen anfallen, folgt hier eine Übersicht zu Dateigrößen der einzelnen Formate. Untersucht wurden ausschließlich verlustlose Kompressionsverfahren.



Alle Werte sind in Byte angegeben und nach Größe sortiert. Die Werte hängen stark vom zu komprimierenden Bildinhalt ab. Für den Test wurde folgendes, besonders komplexes Bild (Grain) verwendet.

Testbild: Macbeth Color Checker mit Grain. (Original 1280*960)

Weitere Erläuterungen zu den einzelnen Formaten und unterschiedlichen Kompressionsverfahren sind im Buch aufgeführt.

Lineare Kameradaten / RAW *update

Professionelle digitale Filmkameras, wie ARRIFLEX D21 oder RED ONE, speichern die auf den Sensor treffenden Bildhelligkeiten in einem sog. RAW-Format ab. Die gespeicherten RAW-Files einer Kamera sollten nicht als Bilder, sondern vielmehr als Daten betrachtet werden, auf deren visuelle Reproduktion noch Einfluss genommen werden kann.

Die Daten der RAW-Files enthalten keinerlei Gammaverzerrung.

Im Vergleich dazu speichern tapebasierte Consumer oder Prosumer Kameras (miniDV, DVCam, DigiBeta oder D-SLRs wie die 5D oder 7D) komplette Bilder, die für die korrekte Darstellung am Monitor gammakorrigiert sind.

Virtuelle Beleuchtung im linearen Workflow

Nachfolgend werden die Auswirkungen des linaren Workflows auf die virtuelle Beleuchtung betrachtet. Als Referenz dient folgendes Foto, das den Ball in heller Umgebung zeigt, um die Aufhellung seines Schattens durch die indirekte Beleuchtung deutlich zu machen.

Reale Aufnahme.

Die Szene wurde in Maya mit den gemessenen Lichtparametern nachgestellt und gerendert. Das Augenmerk liegt nicht auf realistischem Modelling und Texturierung, sonder auf der Lichtstimmung und Schatten.

Um die Ergebnisse nicht zu verfälschen und den Gesamteindruck der Beleuchtung besser abzubilden, wird kein Compositing, sondern ausschließlich ein 3D-Rendering betrachtet.

Rendering der Szene im linearen Workflow.

Im nonlinearen Workflow sieht das Ergebnis mit denselben Settings folgendermaßen aus:

Rendering der Szene im nonlinearen Workflow.

Fazit: Das Rendering im linearen Workflow bildet die reale Lichtstimmung besser nach. Besonders im Bereich der Schatten wirkt das nonlineare Rendering zu dunkel.

Compositing: Screen vs. Add

Dieser Post betrachtet die Auswirkungen des linearen Workflows auf die sog. Operatoren im Compositing, genauer die Operatoren SCREEN und ADD.

Operatoren beschreiben die mathematische Verknüpfung zweier Bildebenen. Der Operator ADD bezeichnet die Addition der Farbwerte der Bildebenen A und B. ADD = A + B. Der Operator Screen subtrahiert vom Ergebnis im Anschluss an die Addition das Produkt aus beiden Farbwerten. SCREEN = A + B − (A ∙ B) = 1 − (1 − A) ∙ (1 − B).

Im Folgenden sollen 2 verschiedene Lichtanteile (diffus und spekular) des CG-Renderings im Compositing zusammengeführt werden. Rein Physikalisch entspricht dies einer Addition der beiden Helligkeitswerte der Bildebenen.

Im nonlinearen Workflow:
Werden im Compositing die verschiedene Anteile des Lichtes zusammengeführt, erscheint das visuelle Ergebnis des Operators ADD zu hell. Besonders in den Highlights fehlt Zeichnung. Aus diesem Grund wurde der Operator SCREEN eingeführt um das Ergebnis des ADD-Operators abzuschwächen und dem realen Lichtverhalten anzunähern.

Im linearen Workflow:
Hier ist der "Workaround" des SCREEN-Operators hinfällig. Der Operator ADD entspicht dem physikalischen Verhalten von Licht und erzielt den gewünschten Fotorealismus.

Mathematische Erläuterungen finden sich im Buch.

Physikalische Gesetzmäßigkeiten - Teil 2

Die Skalierung eines Farbwertes mit dem Faktor 2, um dessen Helligkeit zu verdoppeln, führt in einem traditionellen Workflow zu einem falschen Ergebnis. Der am Monitor sichtbare RGB-Farbwert [32, 25, 2] wird fälschlicherweise zum Wert [149, 115, 8] "verdoppelt".
Die Berechnung wird anhand der gammavorentzerrten Bilddaten durchgeführt. Der darin befindliche RGB-Farbwert [100, 89, 26] verzweifacht sich zum Wert [200, 178, 52]. Dieser zeigt sich allerdings als Farbwert [149, 115, 8] am Monitor. Eigentlich sollte der Wert [64, 50, 4] zu sehen sein. Dies entspräche einer korrekten Verdopplung der Helligkeit, die nur durch den Gebrauch eines linearen Workflows errechnet werden kann.

In diesem werden die Bilddaten vor der Berechnung in ihren Ursprungszustand gebracht. Dazu dient eine Gammakorrektur entgegen der Gammavorentzerrung, also Gamma = 2,2. (0,45*2,2 = 1)
Anstatt dem Rotwert 100, der ein Gamma von 0,45 enthält, wird der Wert 32 verdoppelt und anschließend wieder zur korrekten Darstellung mit der Gammavorentzerrung versehen.

Gammakorrektur:


Verdopplung und Gammavorentzerrung:


Die Verdopplung eines Wertes im linearen Workflow


Das Resultat des korrekten Workflows ist ein Bild, das dem länger belichteten Foto wesentlich ähnlicher ist. Geringe Differenzen verbleiben aufgrund der Bauweise einer Digital-Kamera.

Das Foto bei doppelter Belichtungszeit

Die Verdopplung der Helligkeit im linearen Workflow

Physikalische Gesetzmäßigkeiten - Teil 1

Physikalische Gesetzmäßigkeiten werden bei der Ausführung von Bildberechnungen auf gammavorentzerrten Bilddaten nicht befolgt. Die visuellen Auswirkungen zeigen sich in Form einer unrealistischen Helligkeitsverteilung. Rein mathematisch lässt sich das Problem einfach anhand eines Beispiels erklären:

Ein digitales Foto (RGB, je 8 Bit) ist um eine Blende zu dunkel geraten und soll zum Ausgleich um den Faktor 2 aufgehellt werden (Gain = 2 oder Exposure +1).
Das Ausgangsmaterial: Eine zu dunkel geratene Aufnahme

Der exemplarische RGB-Farbwert [100, 89, 26] wird von der Bearbeitungssoftware mit einer simplen Multiplikation zu [200, 178, 52] umgerechnet. Das Foto ist nun aufgehellt, entspricht jedoch nicht dem Foto des gleichen Motives, das bei einer doppelt so langen Belichtungszeit aufgenommen wurde. Warum?
Das gleiche Foto bei doppelter Belichtungszeit

Die errechnete Aufhellung unterscheidet sich deutlich

Wichtig zu bemerken ist, dass das Foto von der Kamera bei der Aufnahme gammavorentzerrt (Gamma = 0,45) wurde, was den Normalfall darstellt. Der Rotwert 100 im vorentzerrten Bild repräsentiert also einen Rotwert von 32 in der linearen Version des Bildes.


(Die Berechnung erfolgt unter der Normierung mit 256 Farbstufen um die Gammafunktion mit Werten zwischen 0 und 1 anzuwenden.)

Desweiteren erscheint der Wert 100 auf dem Monitor (Gamma 2,2) wie erwünscht mit der Helligkeit des Wertes 32, was der eigentliche Grund für die Gammavorentzerrung ist.
Der Rotwert 32 bis zur Darstellung

Der im Zuge der Belichtungskorrektur neu errechneter Rotwert 200 erscheint am Monitor mit der Helligkeit des Wertes 149, da



Der eigentliche Sinn der Farbkorrektur war es, die Helligkeit zu verdoppeln. Der auf dem Monitor sichtbare Wert 32 sollte zum Wert 64 umgerechnet werden. Durch eine mathematische Verdopplung ergibt sich jedoch der wesentlich hellere Wert 149!

Im nächsten Teil dieses Beitrags wird die Helligkeitskorrektur im linearen Workflow am selben Beispiel beschrieben.
Die Verdopplung der Helligkeit im linearen Workflow

Die Gammafunktion

Die Gammafunktion spielt im linearen Workflow eine große Rolle. Mit ihr lässt sich die Kennlinie eines Monitors recht gut beschreiben. Die Formel der Funktion lautet einfach

Ausgangswert = Eingangswert^Gamma


Gamma = 2,2 und Gamma = 0,45

Betrachtet man einen Eingangswert auf der horizontalen Achse, so kann man einen geringeren Ausgangswert auf der vertikalen Achse ablesen. Davon ausgenommen sind die Werte Null und Eins, sie bleiben unangetastet. Selbiges gilt für Farbwerte: Ein mit einem Gamma von 2,2 manipuliertes Bild bleibt in den Farbwerten #000000 (Schwarz) und #FFFFFF (Weiß) unangetastet, alle Anderen werden verringert, dunkle Farben in besonders hohem Maße. Das Ergebnis wird durch das obere Bild des letzten Blogeintrags veranschaulicht.

Die Funktion Gamma = 0,45 hat den umgekehrten Effekt und hebt so die beschriebene Wirkung auf. Bilder mit dieser Gammavorentzerrung erscheinen am Monitor mit der korrekten Helligkeitsverteilung.

Der lineare Workflow in der 3D Computergrafik

Die folgenden Bilder verdeutlichen den Vorteil des linearen Workflows. Unter Verwendungen eines (physikalisch korrekten) quadratischen Lichtabfalls scheint das traditionelle Rendering zu dunkel. Unter Verwendung des linearen Workflows (unteres Bild) wirkt der Lichtabfall realistischer; das Objekt im Hintergrund wird sichtbar.

Traditionelles Rendering ohne Beachtung des linearen Workflows.
Rendering unter Berücksichtigung des linearen Workflows.

Grundlagen zum linearen Workflow.

Die Kernproblematik des linearen Workflows besteht im Grunde aus dem nonlinearen Helligkeitsverhalten von Wiedergabegeräten. Farbwerte eines Fotos, die zur Wiedergabe an einen Monitor gehen, erscheinen dort mit einer geringeren Helligkeit. Das hängt mit der Kennlinie des Monitors zusammen (Monitorgamma).

Diese wird bei der Aufnahme durch eine Kennlinie in der Kamera ausgeglichen, um das Bild korrekt wiedergeben zu können. Durch diese sog. Gammavorentzerrung wird das Bild also aufgehellt und die Helligkeitsverteilung der fotografierten Szene am Monitor sichtbar.

Gesamt-Gamma mit Gamma-Vorentzerrung










Mit Hilfe der Gammavorentzerrung werden beliebige Szenen also trotz Monitorgamma korrekt abgebildet.

Das Problem tritt erst bei der Bearbeitung der Bilder auf. Die in den Bildern gespeicherte Gammavorentzerrung führt zu einem Konflikt mit der 2D- und 3D-Computergrafik: die Berechnungen einer Bildbearbeitungssoftware setzen unkorrigierte Daten voraus.

Werden die Berechnungen auf gammavorentzerrten Bildern ausgeführt, so hat dies negative Auswirkungen auf das visuelle Resultat, da physikalische Gesetzmäßigkeiten nicht befolgt werden. Der sogenannte lineare Workflow beschreibt die korrekte Berechnung auf unkorrigierten, sogenannten linearen Bilddaten.

Abstract.

Aufgrund der nonlinearen Kennlinie der Wiedergabegeräte müssen digitale Bilddaten zur Visualisierung korrigiert werden. In der Regel wird diese Korrektur in den Bilddaten gespeichert.

Allerdings können mit den korrigierten, nonlinearen Daten keine Berechnungen der 2D- und 3D-Computergrafik nach physikalischen Gesetzmäßigkeiten erfolgen. Abhilfe schafft das konsequente Arbeiten mit unkorrigierte Bilddaten, der sogenannte lineare Workflow.

Ausgangspunkt dieser Arbeit ist die fortschreitende Etablierung des linearen Workflows zur Verbesserung der Bildqualität von Visual Effects. Unter Verwendung dieses Workflows wird die Bildaufnahme digitaler Kameras, die Erzeugung fotorealistischer Renderings sowie deren Compositing beschrieben.

Das Buch.

Dieser Blog ist Teil des Buches "Der lineare Workflow" der Autoren Janosch Köhler und Jakob Saretz. Hier werden in Kürze aktuelle Beiträge zum Thema linearer Workflow veröffentlicht.

Amazon-Link zum Buch: Der lineare Workflow