SOP · slope, offset, power, per kanałSAT · luma Rec.709WYMIANA · plik .cdl / .cc
Rozdział 8 / Matematyka gradingu

ASC CDL: slope, offset, power

Slope, offset, power — jeden wzór, który koordynator koloru wysyła do dziesięciu studiów na świecie i wie, że wygląda tak samo na każdym z nich.

TL;DR
Etap: Problem wymiany

Dlaczego „ten sam offset, gain i gamma” nie wystarczy

Wyobraź sobie DIT-a (Digital Imaging Technician) na planie, który podczas dailies ustala wstępny look sceny — trochę cieplejsze cienie, delikatnie podniesiony kontrast. Ten look musi dotrzeć niezmieniony do wielu odbiorców: montażysty oglądającego podgląd, kolorysty robiącego finalny grading, i studiów VFX, które osadzą swój render w tym samym looku. Gdyby każdy z tych odbiorców odtwarzał „ten sam offset, gain i gamma” we własnym narzędziu, subtelne różnice w implementacji — kolejność operacji, sposób zaokrąglania, definicja „gammy” akurat w tym programie — dałyby zauważalnie różne obrazy. ASC CDL, opracowany i utrzymywany przez American Society of Cinematographers, rozwiązuje to inaczej niż każde pojedyncze narzędzie: definiuje wzór na tyle precyzyjnie i publicznie, że każda poprawna implementacja — niezależnie od producenta — musi dać identyczny wynik dla identycznych parametrów.

Etap: SOP

Slope, Offset, Power — ta sama trójka, per kanał

SOP stosuje dokładnie operatory z Rozdziału 7 w ustalonej kolejności — najpierw slope (mnożenie), potem offset (dodawanie), na końcu power (potęgowanie) — ale osobno dla każdego z trzech kanałów:

out_c = (in_c · slope_c + offset_c)^power_c,   dla c ∈ {R, G, B}in_c — wartość wejściowa kanału c; slope_c — mnożnik tego kanału (odpowiednik gainu); offset_c — stała dodawana do tego kanału; power_c — wykładnik tego kanału (odpowiednik 1/gamma); wynik zwykle ograniczany (clamp) do zakresu wyświetlanego

Dziewięć liczb (po trzy na kanał) zamiast trzech z Rozdziału 7 to nie nadmiarowa komplikacja — to właśnie ta różnica pozwala CDL opisać nie tylko zmianę jasności czy kontrastu, ale też przesunięcie koloru: nieco inny slope na czerwonym niż na niebieskim kanale nachyla całą tonalną skalę w stronę ciepła albo chłodu, bez osobnego, nienazwanego kroku „balans bieli” (Rozdział 10 wraca do białego wyważenia jako osobnego, precyzyjniejszego narzędzia).

Policzone: neutralna szarość przez SOP z lekko innymi wartościami per kanał
Wejście — (0,500; 0,500; 0,500) (neutralna szarość)
slope = (1,05; 1,00; 0,95)   offset = (0,02; 0,00; −0,01)   power = (0,95; 1,00; 1,05)
R' = (0,500 · 1,05 + 0,02)^0,95 = 0,545^0,95 ≈ 0,562
G' = (0,500 · 1,00 + 0,00)^1,00 = 0,500^1,00 = 0,500
B' = (0,500 · 0,95 − 0,01)^1,05 = 0,465^1,05 ≈ 0,448
(0,500; 0,500; 0,500) → (0,562; 0,500; 0,448) — idealnie neutralna szarość staje się widocznie cieplejsza, mimo że żaden pojedynczy parametr „koloru” nie został ustawiony wprost
Sprawdzenie kierunku: R wzrósł, B spadł — to definicja przesunięcia w stronę ciepła (więcej czerwieni, mniej błękitu) względem tego samego neutralnego wejścia.
Etap: Sat

Saturacja jako ostatni, osobny krok

Po SOP standard dodaje jeden krok saturacji, wspólny dla wszystkich trzech kanałów naraz, liczony względem luma — ważonej sumy kanałów przybliżającej postrzeganą jasność (współczynniki Rec.709, te same, do których Rozdział 10 wraca przy pełnym mechanizmie macierzy saturacji):

luma = 0,2126 · R + 0,7152 · G + 0,0722 · B
out_c = clamp( luma + sat · (in_c − luma) )sat — parametr saturacji: sat=1 nie zmienia niczego, sat=0 daje pełną szarość (każdy kanał staje się równy luma), sat>1 wzmacnia różnice między kanałami ponad oryginał; clamp ogranicza wynik do poprawnego zakresu

Zwróć uwagę na strukturę tego wzoru: dla każdego kanału liczysz, o ile różni się on od luma (in_c − luma), skalujesz tę różnicę parametrem sat, i dodajesz z powrotem do luma. Przy sat=0 różnica znika całkowicie i każdy kanał ląduje dokładnie na luma — czyli w odcieniu szarości o tej samej jasności co oryginalny kolor. To dokładnie ten sam mechanizm, którym posługuje się każdy suwak „Saturation” w każdym programie do gradingu; Rozdział 10 pokazuje go w pełnej ogólności, łącznie z wersją zapisaną jako macierz 3×3.

Etap: W praktyce

Plik .cdl i dwa renderery

SOP i Sat razem zapisuje się jako plik .cdl, .cc albo .ccc (warianty XML tego samego standardu) — metadana towarzysząca materiałowi od planu, przez montaż, po finishing, czytelna w Resolve, Baselight, Nuke i, co najważniejsze dla tej książki, bezpośrednio w node'ach korekcji koloru obu rendererów: aiColorCorrect w Arnoldzie i PxrColorCorrect w RenderManie mają tryb pracy zgodny wprost ze specyfikacją CDL, przyjmujący te same dziewięć liczb SOP plus saturację, bez przepisywania ich ręcznie na osobne parametry offset/gain/gamma z Rozdziału 7. Dzięki temu look zatwierdzony na planie i zapisany jako CDL trafia do lookdevu (Rozdział 1) i do lightingu jako dokładnie ten sam, matematycznie identyczny punkt startowy — Dodatek W pokazuje, jak taki plik wpasowuje się w wersjonowanie looku w całym pipeline'ie.

Słowniczek
ASC CDL
Publiczny standard American Society of Cinematographers na zapis korekcji koloru jako SOP (slope/offset/power per kanał) plus saturacja.
SOP
Slope, Offset, Power — trójka operatorów z Rozdziału 7, zastosowana osobno do każdego kanału RGB.
Luma
Ważona suma kanałów RGB przybliżająca postrzeganą jasność koloru; tu liczona współczynnikami Rec.709 (0,2126 / 0,7152 / 0,0722).
DIT (Digital Imaging Technician)
Osoba na planie odpowiedzialna m.in. za wstępny look materiału i jego prawidłowe przekazanie dalej w pipeline.
Plik .cdl / .cc / .ccc
Formaty XML zapisujące parametry ASC CDL jako metadane, wymieniane między narzędziami i studiami.