Przekształcenie CIE XYZ i RGB
Przejście z RGB do CIE XYZ to most między kolorem urządzenia a kolorem opisanym niezależnie od urządzenia. Składa się z dwóch kroków: usunięcia korekcji gamma i mnożenia przez macierz 3×3. Tu na przykładzie sRGB, najpopularniejszej przestrzeni RGB.
Dlaczego "RGB" to za mało
Trójka (200, 80, 40) nie określa jeszcze barwy. Trzeba wiedzieć, jakie są barwy podstawowe ekranu, jaki ma punkt bieli i jaką krzywą przejścia. Te trzy rzeczy definiuje konkretna przestrzeń RGB. sRGB, ustalona w 1996 roku dla monitorów i internetu, ma:
| x | y | |
|---|---|---|
| czerwień | 0,64 | 0,33 |
| zieleń | 0,30 | 0,60 |
| błękit | 0,15 | 0,06 |
| biel D65 | 0,3127 | 0,3290 |
Z tych współrzędnych chromatyczności wyprowadza się macierz poniżej. Adobe RGB czy Display P3 mają inne barwy podstawowe, a więc inne macierze.
Krok 1: linearyzacja
Wartości sRGB są zakodowane nieliniowo (o tym więcej w artykule o korekcji gamma). Macierz działa na wartościach proporcjonalnych do światła, więc najpierw trzeba zakodowanie odwrócić. Dla każdej składowej c w zakresie 0..1:
Krok 2: macierz
Środkowy wiersz to wzór na luminancję: zieleń wnosi do jasności ponad 71%, błękit nieco ponad 7%. Biel (1, 1, 1) daje X = 0,9505, Y = 1, Z = 1,0888, czyli dokładnie punkt bieli D65.
Droga odwrotna: XYZ na RGB
Przykład krok po kroku
RGB (200, 80, 40), #c85028.
Zwróć uwagę na linearyzację: zakodowana wartość R = 0,78 to tylko 0,58 światła, a G = 0,31 to zaledwie 0,08. Pominięcie tego kroku to najczęstszy błąd przy przeliczaniu kolorów, dla tego koloru L* wychodzi wtedy 69,7 zamiast 49,7.
Z tego XYZ można dalej policzyć CIELAB i CIELUV. Dla tego koloru: Lab (49,71; 45,77; 46,31).
Barwy spoza gamy
XYZ obejmuje wszystkie barwy widzialne, sRGB tylko ich część. Przeliczenie w drugą stronę może więc dać wartości ujemne albo większe od 1. Przykład: X = 0,20, Y = 0,50, Z = 0,10 (nasycona zieleń):
Ujemna czerwień oznacza, że tej zieleni nie da się wyświetlić w sRGB. Najprostsze rozwiązanie to obcięcie do zakresu 0..1 (tu wynik to mniej więcej RGB (0, 224, 33)), ale zmienia ono odcień i jasność. Programy do zarządzania kolorem stosują lepsze metody mapowania gamy, które zachowują odcień kosztem nasycenia.
Macierz zależy od punktu bieli. Gdy XYZ ma być względny do D50 (np. w profilach ICC), trzeba dodatkowo zastosować adaptację chromatyczną, zwykle metodą Bradforda. Pominięcie jej daje lekko niebieskawe albo żółtawe przesunięcie.