Laboratorium Grafiki Komputerowej Przekształcenia na modelach

Transkrypt

Laboratorium Grafiki Komputerowej Przekształcenia na modelach
Laboratorium Grafiki Komputerowej
Przekształcenia na modelach barw
mgr inż. Piotr Stera
Politechnika Śląska
Gliwice 2004
1
Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z podstawowymi modelami barw stosowanymi w grafice
komputerowej i konwersją danych pomiędzy nimi
2
Wprowadzenie
Istnieje bardzo wiele modeli barw. W zależności od potrzeb konkretnego zastosowania należy
wybrać odpowiednią metodę reprezentacji barwy. Tu zostanie przedstawionych tylko kilka.
2.1
Model RGB
W grafice komputerowej najczęściej stosowanym modelem jest model RGB. Wywodzi się on
z trójchromatycznej teorii widzenia. Jego geometrycznym odwzorowaniem jest sześcian o boku
o długości 1, jeśli przyjmie się że każda z wartości R, G i B będzie z zakresu 0..1 (rys. 1).
Wszystkie możliwe do uzyskania w tym modelu kolory znajdują się wewnątrz tego sześcianu.
6
C
G K
W
Y
:
M
B
-
R
Rysunek 1: Model RGB
Jego wierzchołkami są punkty odpowiadające podstawowym barwom w tym modelu (czerwona – R, zielona – G i niebieska – B) przy maksymalnej ich wartości oraz ich kombinacjom przy
takim samym warunku (magneta – M, żółta – Y, cyjan – C oraz biały – W). Ostatnim wierzchołkiem jest punkt odpowiadający brakowi wszystkich składowych (czerń – K). Na głównej
przekątnej sześcianu (KW) znajdują się poziomy szarości. Niestety model ten nie odzwierciedla
całego zbioru barw widzialnych, w szczególności ograniczona jest odwzorowywana maksymalna
jasność. Przestrzeń wyznaczana przez ten model nie jest jednorodna pod względem percepcji barw, co oznacza, że jednakowe przesunięcia wewnątrz sześcianu w różnych jego miejscach
nie powodują jednakowych zmian w odbiorze barwy przez człowieka. Zaletą jest to iż można
w prosty sposób zrealizować fizyczny pomiar wartości R, G i B. Dla addytywnego mieszania
barw (gdy jest to mieszanina świateł barw podstawowych) ten model nadaje się bardzo dobrze.
2.2
Model CMY
Model CMY, podobnie jak model RGB, tworzy przestrzeń barw w kształcie sześcianu (rys. 2).
Różnicę stanowią barwy podstawowe w tym modelu: C – cyjan (zielono-niebieska), M – magenta
(purpurowa) i Y – żółta oraz zamienione miejscami barwa biała (W) i czarna (K). W modelu
tym, w przeciwieństwie do modelu RGB, mieszanie barw odbywa się substraktywnie (składowe barw podstawowych w świetle odbitym od kolorowego obiektu; czyli ze światła białego
odfiltrowane są składowe, które nie występują w badanym kolorze). Z takim efektem mamy
do czynienia w przypadku materiałów drukowanych, dlatego przy ich tworzeniu często wykorzystuje się ten model przestrzeni barw. Barwę czarną w tym modelu tworzą wszystkie trzy
składowe przyjmujące wartości maksymalne. Dla uproszczenia procesu drukowania i polepszenia jakości wydruków najczęściej podstawowe składowe uzupełnia się barwą czarną i jest to
tzw. model CMYK (zob 2.3).
R
6
Y K
G
:
B
M
-
W
C
Rysunek 2: Model CMY
Zależności pomiędzy parametrami modelu CMY i RGB:






R
1
C



 

 G = 1 − M 
B
1
Y






C
1
R



 

 M = 1 − G 
Y
1
B
2.3
(1)
(2)
Model CMYK
Model CMYK bazuje na modelu CMY i powstał z myślą o stosowaniu go przy reprodukcji
barw na trwałych nośnikach, np. papierze. Prócz składowych występujących w modelu CMY
dodano jeszcze jedną oznaczającą kolor czarny (K). Wynika to z tego, że teoretycznie złożenie
składowych C, M i Y o maksymalnej wartości powinno dać w efekcie kolor czarny, a w przypadku
rzeczywistych barwników często nie jest to prawdą. W literaturze można spotkać dwie metody
przeliczania składowych CMY na model CMYK. Pierwsza z nich ([4]) bazuje na bezwzględnym
obliczaniu różnic przy wyliczaniu składowych C, M i Y. Dla regulacji kontrastu stosuje się
dodatkowy współczynnik k < 0; 1 >, przy czym najczęściej k = 1. Konwersję tę przedstawiają
wzory ([4]):
C = C − k ∗ min(C, M, Y )
M = M − k ∗ min(C, M, Y )
(3)
Y = Y − k ∗ min(C, M, Y )
K = k ∗ min(C, M, Y )
zaś konwersję z modelu CMYK na model CMY można dokonać następująco:
C = C +K
M = M +K
Y = Y +K
(4)
a konwersję bezpośrednio z modelu RGB można obliczyć:
C
M
Y
K
=
=
=
=
(1 − R) − k ∗ min(1 − R, 1 − G, 1 − B)
(1 − G) − k ∗ min(1 − R, 1 − G, 1 − B)
(1 − B) − k ∗ min(1 − R, 1 − G, 1 − B)
k ∗ min(1 − R, 1 − G, 1 − B)
(5)
i w z powrotem:
R = 1−C +K
G = 1−M +K
B = 1−Y +K
(6)
W drugim przypadku składowe obliczane są w sposób względny ([1]):
C
M
Y
K
=
=
=
=
(C − min(C, M, Y ))/(1 − min(C, M, Y ))
(M − min(C, M, Y ))/(1 − min(C, M, Y ))
(Y − min(C, M, Y ))/(1 − min(C, M, Y ))
min(C, M, Y )
(7)
oraz w drugim kierunku:
C = min(1, C ∗ (1 − K) + K)
M = min(1, M ∗ (1 − K) + K)
Y = min(1, Y ∗ (1 − K) + K)
(8)
lub bezpośrednio z modelu RGB ([1]):
C
M
Y
K
=
=
=
=
(1 − R − min(1 − R, 1 − G, 1 − B))/(1 − min(1 − R, 1 − G, 1 − B))
(1 − G − min(1 − R, 1 − G, 1 − B))/(1 − min(1 − R, 1 − G, 1 − B))
(1 − B − min(1 − R, 1 − G, 1 − B))/(1 − min(1 − R, 1 − G, 1 − B))
min(1 − R, 1 − G, 1 − B)
(9)
oraz z powrotem:
R = 1 − min(1, C ∗ (1 − K) + K)
G = 1 − min(1, M ∗ (1 − K) + K)
B = 1 − min(1, Y ∗ (1 − K) + K)
(10)
2.4
Model HSV
Model HSV opracował w 1978 roku Alvey Ray Smith. Barwa w tym modelu opisana jest poprzez trzy parametry: odcień (Hue – H), nasycenie (Saturation – S) oraz wartość (Value – V).
Pewną odmianą modelu HSV jest model HSI, w którym ostatni parametr nazywany jest intensywnością (Intensity – I) oraz model HSB, w którym jest on jasnością (Brightness – B).
Geometrycznym odwzorowaniem tego modelu jest ostrosłup o podstawie sześciokąta foremnego – rys. 3. Odcień barwy jest reprezentowany jako wartość kąta, przy czym za kąt zerowy
przyjęto kąt odpowiadający barwie czerwonej. Nasycenie jest interpretowane jako odległość
od osi ostrosłupa, zaś parametrowi intensywności odpowiada odległość od wierzchołka bryły.
W tak utworzonej bryle podstawowym kolorom nasyconym odpowiadają: czerwonemu, żółtemu, zielonemu, cyjanowi, niebieskiemu i magnecie odpowiednio wierzchołki podstawy, które są
przesunięte względem punktu zerowego (kolor czerwony) o 0Π, Π3 , 2Π
, Π, 4Π
, 5Π
i 2Π. Barwie
3
3
3
białej odpowiada środek środek podstawy, barwie czarnej – wierzchołek bryły, a na osi bryły
znajdują się punkty reprezentujące poszczególne stopnie szarości. Każdy przekrój prostopadły
do osi bryły odpowiada odpowiedniemu podsześcianowi w modelu RGB. Przy tym modelu
odcień przyjmuje wartości 0..2Π (◦ –360◦ ), a parametry nasycenia i wartości są z zakresu 0..1.
Rysunek 3: Model HSV
Konwersja danych z modelu RGB do modelu HSV odbywa się przy zastosowaniu wzorów
(opracowane wg [4], [3] i [2]):
v = max(r, g, b)

 0
s = 
dla v = 0
max(r,g,b)−min(r,g,b)
max(r,g,b)


U N DEF





g−b
π


 3 r−min(r,g,b)
h =
π
b−r


2
+
 3
g−min(r,g,b)





r−g
 π
3
4+
b−min(r,g,b)
dla v 6= 0
dla v = min(r, g, b)
dla v = r
dla v = g
dla v = b
(11)
a z powrotem:
(r, g, b) =


(v, v, v)





))),
(v, v ∗ (1 − (s ∗ (1 − 3h

π


3h


(v
∗
(1
−
(s
∗
(
−
1))),
v,

π












2.5
v ∗ (1 − s))
v ∗ (1 − s))
(v ∗ (1 − s), v, v ∗ (1 − (s ∗ (3 − 3h
))))
π
(v ∗ (1 − s), v ∗ (1 − (s ∗ ( 3h
−
3))),
v)
π
3h
(v ∗ (1 − (s ∗ (5 − π ))), v ∗ (1 − s), v)
(v, v ∗ (1 − s), v ∗ (1 − (s ∗ ( 3h
− 5))))
π
dla
dla
dla
dla
dla
dla
dla
h = U N DEF
0 ¬ h < π3
π
¬ h < 2π
3
3
2π
¬
h
<
π
3
π ¬ h < 4π
3
4π
5π
¬
h
<
3
3
5π
¬
h
<
2π
3
(12)
Model HLS
W modelu HLS opracowanym przez firmę Tektronix barwa jest opisana trzema parametrami:
odcieniem (H – Hue), jasność (L – Luminance) i nasyceniem (S – Saturation). Jego przestrzeń
reprezentują dwa stożki stykające się ze sobą podstawami. Na obwodzie stykających się podstaw
stożków są rozmieszczone barwy nasycone na takiej samej zasadzie jak w modelu HSV. Osie
brył tworzą oś L przy czym na wierzchołku jednego stożka parametr ten przyjmuje wartość 0
(i punkt ten reprezentuje barwę czarną), a na wierzchołku drugiego stożka wartość 1 (punkt
ten reprezentuje barwę białą). Zasadniczą różnicą w porównaniu z modelem HSV jest wartość
jasności, dla której barwy przyjmują maksymalne nasycenie: w modelu HSV przyjmuje ona
wartość 1, a w tym modelu wynosi 0,5.
Konwersji z modelu RGB można dokonać wg wzorów:
l
=
max(r,g,b)+min(r,g,b)
2



s = 

max(r,g,b)−min(r,g,b)
max(r,g,b)+min(r,g,b)
dla l < 0.5
max(r,g,b)−min(r,g,b)
2−max(r,g,b)−min(r,g,b)
dla l ­ 0.5


U N DEF





g−b
π


 3 r−min(r,g,b)
h =
π
b−r


2
+

3
g−min(r,g,b)





r−g
 π
3
4+
b−min(r,g,b)
dla r = g = b
(13)
dla max(r, g, b) = r
dla max(r, g, b) = g
dla max(r, g, b) = b
oraz w drugą stronę:
(
(r, g, b) =
(l, l, l)
(val(h +
2π
),
3
val(h), val(h −
2π
))
3
dla h = U N DEF
dla 0 ¬ h < 2π
(14)
0 ¬ h < π3
π
¬h< π
3
π ¬ h < 4π
3
4π
¬
h
<
2π
3
(15)
gdzie:
val(x) =

n1 + (n2 − n1) ∗




3∗h
π
n2

n1 + (n2 − n1) ∗ ( 4π
− h) ∗

3


n1
zaś
(
n2 =
3
π
dla
dla
dla
dla
l+l∗s
dla
0 ¬ l ¬ 0.5
l + s − l ∗ s dla 0.5 < l ¬ 1
n1 = 2 ∗ l − n2
(16)
3
Program ćwiczenia
1. Zapoznać się z programem do konwersji formatów graficznych oraz dostępnymi kompilatorami.
2. Napisać funkcje konwersji pomiędzy zadanymi przez prowadzącego modelami barw.
3. Wykorzystując napisane funkcje konwersji modeli barw napisać program generujący następujące obrazki dla zadanej przez prowadzącego barwy:
• prostokąt o jednolitej barwie
• dla każdej współrzędnej przestrzeni barw prostokąt, którego barwa będzie się zmieniać w poziomie lub w pionie w całym dostępnym zakresie tej współrzędnej i zawierać
zadaną barwę
Np. dla zadanej barwy czerwonej o współrzędnych RGB=(1,0,0) i dla przestrzeni HSV
powinny powstać następujące obrazy:
• czerwony prostokąt o barwie RGB=(1,0,0)
• zmiana parametru H: zmiana odcieni od czerwonego poprzez całe koło odcieni do
czerwonego
• zmiana parametru S: zmiana nasycenia od barwy achromatycznej do pełnego nasycenia czerwieni
• zmiana parametru V: zmiana jasności od ciemnej do jasnej czerwieni, przy stałym
nasyceniu wynikającym z konwersji parametrów RGB do przestrzeni HSV
4. W sprawozdaniu zamieścić:
• stronę tytułową
• treść zadania
• wydruk napisanych funkcji i programu (z komentarzami!!!)
• uwagi i wnioski
Literatura
[1] D. Bourgin. Color spaces faq. http://www.scarse.org/docs/color_faq.html.
[2] J. Burkardt. Colors – color conversion. http://www.csit.fsu.edu/~burkardt/f_src/
colors/colors.html, 2003.
[3] M. Jankowski. Elementy grafiki komputerowej. Wydawnictwa Naukowo-Techniczne, Warszawa, 1990.
[4] J. Zabrodzki, editor. Grafika komputerowa. Wydawnictwa Naukowo-Techniczne, Warszawa,
1994.