semmixkolor i percepcja

Pochodne CIE XYZ: CIELUV i CIELAB

CIE XYZ opisuje każdą barwę widzianą przez człowieka, ale równe kroki w XYZ nie wyglądają dla oka na równe. CIELUV i CIELAB, przyjęte przez CIE w 1976 roku, przekształcają XYZ tak, żeby odległość w przestrzeni mniej więcej odpowiadała różnicy, którą widać.

Problem z XYZ

W latach 40. David MacAdam zmierzył, jak daleko musi przesunąć się barwa na wykresie chromatyczności, zanim obserwator zauważy zmianę. Obszary "bez widocznej różnicy" okazały się elipsami o bardzo różnych rozmiarach: maleńkimi w błękitach, dużymi w zieleniach. XYZ jest liniowy względem światła, więc idealny do obliczeń, ale nie jest równomierny dla percepcji.

Obie przestrzenie z 1976 roku rozwiązują to podobnie: biorą XYZ względem bieli odniesienia, stosują nieliniowość zbliżoną do odpowiedzi oka (w przybliżeniu pierwiastek trzeciego stopnia) i dzielą wynik na jasność oraz dwie osie przeciwstawne.

Część wspólna: jasność L*

L* jest taka sama w obu przestrzeniach. Zależy tylko od luminancji Y względem bieli Yn:

ε = 216 / 24389 ≈ 0,008856 κ = 24389 / 27 ≈ 903,3 y_r = Y / Y_n L* = 116 · ∛y_r - 16 gdy y_r > ε L* = κ · y_r w pozostałych przypadkach

L* ma zakres od 0 (czerń) do 100 (biel odniesienia). Odcinek liniowy przy czerni usuwa nieskończone nachylenie pierwiastka w zerze.

CIELAB (L*a*b*)

f(t) = ∛t gdy t > ε f(t) = (κ·t + 16) / 116 w pozostałych przypadkach L* = 116 · f(Y / Y_n) - 16 a* = 500 · [ f(X / X_n) - f(Y / Y_n) ] b* = 200 · [ f(Y / Y_n) - f(Z / Z_n) ]

a* to oś czerwień-zieleń (dodatnie wartości to czerwień, ujemne zieleń), b* to oś żółć-błękit (dodatnie to żółć). Szarości mają a* = b* = 0. CIELAB to standard w poligrafii, farbach, tekstyliach i w zarządzaniu kolorem: zwykle jest przestrzenią pośrednią w profilach ICC.

CIELUV (L*u*v*)

u' = 4X / (X + 15Y + 3Z) v' = 9Y / (X + 15Y + 3Z) (u'_n, v'_n liczy się tak samo dla punktu bieli) u* = 13 · L* · (u' - u'_n) v* = 13 · L* · (v' - v'_n)

CIELUV zawiera w sobie wykres chromatyczności CIE 1976 u'v', na którym addytywna mieszanina dwóch świateł leży na odcinku prostej. Dlatego jest wygodny dla ekranów i źródeł światła. CIELAB tej cechy nie ma, ale lepiej opisuje barwy powierzchni.

Punkt bieli

Obie przestrzenie potrzebują bieli odniesienia Xn, Yn, Zn. Dla sRGB i większości ekranów to D65 z obserwatorem 2°: Xn = 95,047, Yn = 100, Zn = 108,883. W poligrafii zwykle używa się D50. Ta sama barwa ma przy innym punkcie bieli inne wartości Lab, więc zapis Lab bez punktu bieli jest niepełny.

LCh: postać biegunowa

a* i b* można potraktować jak wektor. Jego długość to chroma (nasycenie), kąt to odcień:

C*_ab = √(a*² + b*²) h_ab = atan2(b*, a*) (w stopniach, 0..360)

LCh działa jak HSL czy HSV, ale z jasnością zgodną z percepcją. Obrót h przy stałych L i C daje barwy, które wyglądają na równie jasne, czego HSL nie potrafi. Dlatego współczesny CSS ma lch() i oklch().

Przykład krok po kroku

RGB (200, 80, 40), #c85028, w sRGB. Przeliczenie do XYZ opisuje strona CIE XYZ i RGB. Wynik w skali 0..100:

X = 27,07 Y = 18,17 Z = 4,09 X / X_n = 0,2848 Y / Y_n = 0,1817 Z / Z_n = 0,0376 wszystkie powyżej ε, więc f = pierwiastek trzeciego stopnia: f_x = 0,6580 f_y = 0,5664 f_z = 0,3349 L* = 116 · 0,5664 - 16 = 49,71 a* = 500 · (0,6580 - 0,5664) = 45,77 b* = 200 · (0,5664 - 0,3349) = 46,31 C* = √(45,77² + 46,31²) = 65,11 h = atan2(46,31; 45,77) = 45,3°
u' = 0,3472 v' = 0,5243 (biel: u'_n = 0,1978, v'_n = 0,4683) u* = 13 · 49,71 · (0,3472 - 0,1978) = 96,49 v* = 13 · 49,71 · (0,5243 - 0,4683) = 36,18

Barwa ma więc Lab (49,71; 45,77; 46,31) i Luv (49,71; 96,49; 36,18). Jasność jest identyczna, pozostałych osi nie można ze sobą zamieniać.

Różnica barw ΔE

Sens przestrzeni równomiernej polega na tym, że odległość coś znaczy. Pierwotny wzór z 1976 roku to zwykła odległość euklidesowa w Lab:

ΔE*_ab = √(ΔL*² + Δa*² + Δb*²)

Porównanie naszej barwy z RGB (210, 90, 40), czyli Lab (53,14; 44,76; 50,15), daje ΔE ≈ 5,25: różnicę, którą większość osób zauważy, patrząc na obie barwy obok siebie. Za próg ledwo zauważalnej różnicy zwykle przyjmuje się ΔE około 2.

CIELAB jest równomierny tylko w przybliżeniu, więc późniejsze wzory go poprawiają: CIE94 i CIEDE2000 (ΔE00) ważą osobno różnice jasności, nasycenia i odcienia. W kontroli jakości druku obecnym standardem jest ΔE00.