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.