Modelowanie koloru
fiolet
-
niebieski
-
cyan
-
zielony
-
ż
ółty
-
pomarańczowy
-
czerwony
Ś
wiatło
widzialne
stanowi
wąski
wycinek
fal
elektromagnetycznych z zakresu
400nm ÷ 700nm. Fale
400nm
700nm
Spektrum światła białego:
Barwa (ang. hue) – określana przez dominującą długość fali, czynnik
jakościowy – to co odróżnia np. zieleń od błękitu.
Nasycenie (ang. saturation) – określane jako stosunek energii dominującej
długości fali e
2
do wypadkowej energii e
1
pozostałych fal tworzących
widmo świetlne. Nasycenie (czystość barwy) jest tym większe, im większa
jest wartość e
2
w stosunku do e
1
. Dla e
1
=0 nasycenie maksymalne, dla e
2
=e
nasycenie zerowe (barwy achromatyczne).
e2
e1
λ
λ
λ
λ
[nm]
z dominującą długością fali
Ś
wiatło białe można uzyskać mieszając w odpowiednich
proporcjach tylko kilka barw: np. barwę czerwoną, zieloną i
niebieską w stosunku 26:66:8.
Takie trójki czy pary barw, które w sumie dają światło białe
nazywamy barwami dopełniającymi. Dla barwy czerwonej
(656 nm) barwą dopełniającą jest cyjan (492 nm), dla żółtej
(574 nm) niebieska (482 nm).
Barwy, którymi opisujemy inne nazywane są barwami
podstawowymi. Nie istnieje „najlepszy” zestaw barw
podstawowych.
Cyan
Każda dowolna barwa może być odwzorowana za pomocą
trzech liniowo niezależnych barw.
Trzy barwy tworzą układ niezależnych liniowo jeżeli dowolne
zsumowanie dwóch z nich nie może dać trzeciej barwy układu.
uwaga: twierdzenie odwrotne nie jest prawdziwe, tzn. z
dowolnie wybranych trzech liniowo niezależnych barw, nie da
się utworzyć wszystkich barw.
W mieszaninie złożonej z dwóch barw, stopniowa zmiana
barwy jednego ze składników pociąga za sobą stopniową
zmianę barwy mieszaniny. Prawo to wyklucza możliwość
istnienia barwy nie sąsiadującej z barwami składowymi.
Alternatywne sformułowanie: przy ciągłej zmianie długości
fali promieniowania barwa zmienia się w sposób ciągły.
III prawo – prawo addytywności
niezależne od urządzenia – CIE XYZ, CIE La*b*
ukierunkowane na użytkownika – HLS, HSV
ukierunkowane na sprzęt – RGB, CMY, CMYK
zdefiniowany na podstawie systemu CIE RGB, w którym doświadczalnie za pomoc
kolorymetru wizualnego określono wartości składowych trójchromatycznych
r(λ), g(λ), b(λ)
widma światła widzialnego L
składowe r(λ), g(λ), b(λ) określają względny udział barw podstawowych R, G i B
potrzebnych do wywołania takiego samego wrażenia jak barwa widmowa
ś
wiatła wzorcowe: R[700 nm]
G[546 nm]
B[435 nm]
składowe r(λ), g(λ), b(λ) wyznaczono
dla L=< 360-830 nm> z krokiem co 1nm
Kolorymetr wizualny
są nieujemne w całym zakresie widma
składowa y(λ) – informacja o strumieniu światła (luminancja, jasność)
składowe x(λ) i z(λ) – informacja o barwie (chromatyczność)
w przestrzeni CIE XYZ kolory widzialne są zawarte w bryle zbliżonej
do stożka o wierzchołku w początku układu współrzędnych
Diagram (wykres, trójkąt) chromatyczności CIE jest fragmentem
przestrzeni
Stożek barw widzialnych
w przestrzeni CIE XYZ
Rzuty płaszczyzny X+Y+Z=1
w przestrzeni CIE XYZ
krawędź części krzywoliniowej - barwy podstawowe widma światła białego
krawędź dolna - purpury, powstałe przez zmieszanie w różnych proporcjach skrajnych barw
Nasycenie barwy A jest określone proporcją:
s = AC / BC
2. Dodawanie barw:
Barwę A można otrzymać jako mieszaninę
barwy B i światła białego C w proporcji
określonej przez długości odcinków AC i BC
3. Wyznaczanie barw dopełniających
Dopełniające pary barw wyznaczone są przez
końce dowolnych odcinków przechodzących
przez punkt C (światło białe). (Np. barwy B i G
lub D i E.
przestrzeń
barw,
która
powstała
w
wyniku
przekształcenia modelu CIE XYZ. Każdy inny model
koloru da się opisać we współrzędnych La*b*, ale nie
na odwrót. Model jest niezależny od urządze
wejścia/wyjścia. Wykorzystywany do obliczeń
barwach i wyznaczania stopnia podobieństwa barw w
systemach
zarządzania
barwami
CMS
(Color
Management System
).
Wszystkie barwy o jednakowej jasności leżą na
powierzchni kołowej wyznaczonej osiami a* i b*:
- oś a* - barwy od czerwonej do zielonej
- oś b* - barwy od żółtej do niebieskiej
Jasność L zmienia się w kierunku pionowym.
Kolor wypadkowy powstaje w wyniku addytywnego
mieszania składowych podstawowych
R
,
G
,
B.
Model wykorzystywany:
w sprzęcie tworzącym obraz w wyniku emisji światła:
monitory, projektory, skanery, cyfrowe aparaty
fotograficzne
do sprzętowej reprezentacji (opisu) pikseli w systemach
komputerowych
Kolor - punkt w przestrzeni ograniczonej
sześcianem jednostkowym, definiowany
przez trójkę (r,g,b)
R
R
G
G
1
1
1
1
1
1
0
0
Kolory podstawowe:
R = (1,0,0)
G = (0,1,0)
B = (0,0,1)
Kolory dopełniające:
C = (0,1,1)
M = (1,0,1)
Y = (1,1,0)
Obraz binarny:
:
liczba możliwych kolorów: 2
wartość koloru: { 0, 1 }
głębokość bitowa: 1
Wartość koloru - liczbowa reprezentacja barwy piksela
Głębokość bitowa - liczba bitów przeznaczona do zapisu
wartości koloru
liczba możliwych kolorów: 2
3 ×
×
×
× 5
lub 2
(5+6+5)
= 32 768 lub 65 536
wartość koloru: { R, G, B }, gdzie R, G, B ∈<0, 31> lub <0, 63>
głębokość bitowa: 15 lub 16 bitów (2 bajty)
True Color:
:
liczba możliwych kolorów: 2
8×
×
×
×3
= 16 777 216
wartość koloru: { R, G, B }, gdzie R, G, B ∈<0, 255>
głębokość bitowa: 24 bity (3 bajty ze składowymi R,G,B)
x
pamięć obrazu
o głębokości
8 bitów/piksel
ekran
R G B
111111111111000000 19
0
255
.
.
.
24-bitowa tabela barw (LUT)
19
W=KxLxBpp
gdzie: Bpp – głębokość bitowa (bit per pixel)
K – liczba kolumn obrazu
L – liczba linii obrazu
Obraz binarny:
800×
×
×
×600x1 = 60000B = 60000/1024 KB = 58,6KB
Obraz True Color:
800×
×
×
×600×
×
×
×24 = 14400000B = 14400000/1024/1024 MB = 1,373MB,
Model wykorzystywany w sprzęcie tworzącym obraz w wyniku nakładania
na nośnik barw podstawowych: drukarki, plotery
Kolor wypadkowy powstaje w wyniku substraktywnego mieszania światła
Kolor - punkt w przestrzeni ograniczonej
sześcianem jednostkowym, definiowany
przez trójkę (c,m,y)
Kolory podstawowe:
C = (1,0,0)
cyan
M = (0,1,0)
magenta
Y = (0,0,1)
yellow
Kolory dopełniające:
R = (0,1,1)
G = (1,0,1)
B = (1,1,0)
M
M
Y
Y
1
1
1
1
1
1
0
0
tworzą neutralną szarość, która w modelu CMYK jest generowana przez
czwartą barwę podstawową K (blacK - czarny).
(
(
(
+
0.2
0.4
0.4
0.4
0.5
0.6
0.4
0.9
C M
Y
)
)
)
(
(
(
+
0.2
0.4
0.5
0.2 0.5
C M
Y K
)
)
)
0.4
W celu poprawy jakości druku (kolorystyka, kontrast) barwa
czarna K zastępuje (całkowicie lub częściowo) tą część barw
modelu CMY, które tworzą neutralne odcienie szarości.
Procedury generowania czerni:
UCR (Under Color Removal) - usuwanie koloru neutralnego
GCR (Gray Component Replacement) - zamiana szarego
składnika
atramentu. Zamiana CMY na CMYK:
(c,m,y,k) = (c-k
max
, m-k
max
, y-k
max
, k
max
)
CMY=(0.4, 0.6, 0.9)
k
max
={0.4, 0.6, 0.9}
min
= 0.4
CMYK=(0.0, 0.2, 0.5, 0.4)
ilość atramentu:
CMY=40%+60%+90%=190%
CMYK=0%+20%+50%+40%=110%
GCR - odtwarza tylko część neutralnej szarości przy pomocy
czarnego atramentu: Zamiana CMY na CMYK:
(c,m,y,k) = (c-g, m-g, y-g, g)
gdzie: g = s% k
max
s - zadany stopień zastępowania neutralnej szarości.
Przykład:
CMY = (0.4, 0.6, 0.9), s=50%, k
max
= 0.4
g = 50% k
= 0.2
druk
CMYK
zawsze
obniża
łączne
zużycie
atramentu/farby w porównaniu z drukiem CMY
drukarki stosują własne procedury generowania czerni,
więc nie mamy kontroli nad tym procesem
przy wyznaczaniu wartości neutralnych odcieni szarości
urządzenia drukujące posługują się krzywymi mieszania
atramentów (tonerów) uwzględniającymi ich wpływ na
„brudzenie” odcieni jasnych
Definiowanie koloru
Znaczenie i zakresy współrzędnych:
// zakresy zmiennych: r[0,1], g[0,1], b[0,1], h[0,360], l[0,1], s[0,1]
void rgb2hls (double r, double g, double b, double &h, double &l, double &s)
{
double max = max (max (r,g),b);
double min = min (min (r,g),b);
l = (max + min) / 2
// wyznaczenie jasności l
if (max = min) {
s = 0; h = 0; }
// wartość niezdefiniowana – kolory achromatyczne
else
{
if (l <= 0.5) s = (max - min)/(max + min);
// wyznaczenie nasycenia s
else s = (max -min) / (2 - max - min);
//
if (r = max) h = (g - b) / (max - min);
// wyznaczenie barwy h
// zakresy zmiennych: h[0,360], l[0,1], s[0,1], r[0,1], g[0,1], b[0,1]
// funkcja pomocnicza: value
include <math.h>
inline double value (double nl, double n2, double h)
if (h > 360) h -= 360;
else if (h < 0) h += 360;
if (h < 60) return nl + (n2 - nl) * h / 60.0;
if (h < 180) return n2;
if (h < 240) return nl + (n2 - nl) * (240 - h) / 60.0;
{
double m1, m2;
if (l <= 0.5)
m2 = l * (1.0 + s);
else
m2 = l + s - l * s;
m1 = 2.0 * l - m2;
if (s == 0)
r = g = b = l;
else
{
1.
Operacje bezpośrednie
dodawanie kolorów
C
1
+C
2
=[r
1
+r
2
, g
1
+g
2
, b
1
+b
2
]
mnożenie przez skalar
αC=[αr, αg, αb]
2.
Operacje pośrednie
interpolacja liniowa
C
=αC
1
+ (1- α)C
2
gdzie: C
1
, C
2
– kolory znane
α – współczynnik mieszania kolorów
3.
Nakładanie kolorów
wspólna krawędź
C
=α
1
C
1
+α
2
C
2
gdzie: α
1
,α
2
€
<0;1> – współczynnik pokrycia obszaru
obszary rozłączne
C
=α
1
C
1
+α
2
C
2
gdzie: α
1
,α
2
€
<0;1> – współczynnik pokrycia obszaru
C
1
C
2
C
1
C
2