Kolor, mat. pomoc. dla technologia inf. (c) M. Żabka (12 listopada 2007) str. 1 Kolor (barwa) 1 Modele RBG i CMY(K) Kolor każdego punktu, linii lub powierzchni (oraz inne cechy wyglądu) jest wyznaczony przez sposób odbijania światła. W szczególności część padającego światła jest pochłaniana a część odbijana i rozpraszana. Widziany kolor (barwa) jest uzależniony od padającego światła, własności obiektu, kąta patrzenia oraz własności oka i umysłu. Dzięki badaniom nad własnościami ludzkiego oka, zauważono, że dla model RGB większości barw można dobrać wartości trzech barw podstawowych: czerwonej, zielonej i niebieskiej tak, że człowiek nie odróżnia piewotnej barwy od mieszanki barw podstawowych. Wykorzystano to zjawisko między innymi w telewizji i fotografii. Przykładowo, z bliska można zobaczyć, że kineskop ma małe punkty świecące na czerwono, zielono i niebiesko, a z pewnej odległości widzimy np. punkt biały, żółty, fioletowy itd. Te wartości czerwonego, zielonego i niebieskiego (w skrócie RGB od ang. red, green, blue) jest nazywana składową koloru lub kanałem. Można sobie wyobrażać kolor jako punkt w trzywymiarowej przestzeni RGB, na osiach OX, OY, OZ są wartości R, G, B. model addytywny Ponieważ wartość 0 dla R, G, B (R=G=B=0) oznacza brak świecenia, czyli kolor model substraktywny czarny, a dodajemy poszczególne składowe aby uzyskać jakiś kolor (np. dodajemy czerwony i zielony aby uzyskać żółty), więc model RGB nazywany jest modelem addytywnym. W druku musimy odejmować od białej kartki jakieś kolory przez nadrukowanie kolorowych kropek atramentu (lub tonera). Stąd modele sub- model CMY straktywne. Najważniejszy to model CMY, oparty o atramenty: cyan, magenta, yellow, czyli po polsku: cyjan (zwany też: zielononiebieski, turkusowym), magenta (zwana też: purpura, fiolet, karmazyn), żółty. Uwaga: jest sporo dyskusji jak nazywać kolory cyjan i magenta, drukarki i programy stosują różne nazwy (np. The Gimp cyjan = niebieskozielony, magenta = purpurowy) Model CMY nie pozwala na ładny druk kolorów ciemnych, w szczególności koloru czarnego. Powodem jest ograniczenie w ilości farby którą można nałozyć na kartkę, w szczególności atramenty w różnych kolorach muszą być drukowane w nieco innych miejscach. Innym powodem jest trudność w doborze proporcji atramentów (które bywają częściowo zużyte oraz ich odcień może być niestabilny). Więc najczęściej dodajemy czwarty atrament czarny. W ten sposób powstaje model CMYK (cyjan, CMYK magenta, yellow, black). Aby umieścić w komputerze informację o kolorze musiano jeszcze ustalić jak dokładnie opisać każdą składową. Najczęściej obecnie każdą składową RGB określamy jako liczbę całkowitą z zakresu 0 do 255, mówimy wtedy o srgb (lub o Truecolor (lub True Color), choć słowo Truecolor ma czasem szersze znaczenie). Poza tym można określać składowe po 5 bitów lub jedną z nich 6 bitów, uzyskujemy wtedy 32768 lub 65536 kolorów. Taki sposób uzyskania koloru nosi nazwę Highcolor (High Color) lub kolor 15 bitowy (16 bitowy). Do jego określenia wystar- 1 wg słowników, barwa i kolor są w polsce synonimami srgb True Color Hight Color
Kolor, mat. pomoc. dla technologia inf. (c) M. Żabka (12 listopada 2007) str. 2 czą 2 bajty. Taki kolor jest wykorzystywany szeroko w grach komputerowych (choć może nie w tych najnowszych), oraz w kartach graficznych (szczególnie starszych, choć i teraz na liście trybów kart można taki kolor znaleźć). Czasem zamiast podawać wprost składowe koloru podajemy numer na liście kolorów (palecie, po ang. color map) Na tej liście każdy kolor jest przeważnie określony 3 bajtami RGB. Sama tablica może mieć 2 pozycje, 16 pozycji lub 256 pozycji (rzadko inną ilość). Przy 2 pozycjach musimy użyć 1 bitu na określenie koloru, przy 16 pozycjach konieczne są 4 bity, czyli połowa bajtu, a dla 256 jest to jeden bajt (8-bitowy kolor paletowy). Zwróćmy uwagę, że np. w programie IrfanView możemy ustalić np. 18 kolorów, ale paleta powstanie 256 kolorowa, tyle że większość pozycji pozostanie nieużywana. paleta Przybliżanie koloru W przypadku użycia koloru z palety, inne kolory należy jakoś przedstawić. Można przybliżyć wybierając kolor z palety bliski danemu kolorowi, można też zrobić mozajkę pikseli o barwach z palety (tak robili impresjoniści na obrazach), w pewnej odległości widać barwę złożoną. Przykład, dla koloru rgb = (166, 119, 46). orginał przybliżenie przybliżenie adaptacyjna dithering koloru koloru mozajka W pierwszym wierszu mamy powiększone fragmenty kwadratów z dołu (33 piksele). Wartości liczbowe w modelach CMY i CMYK są na ogół też w zakresie 0 do 255. Czasem w programach chcemy uniezależnić się od wyboru dokładności (czyli od arbitralnej wartości 255 jako maksimum). Wtedy podajemy kolor RGB (CMYK) w wartości rzeczywistej z przedziału domkniętego [0, 1] (można to nazwać wartością znormalizowaną) lub w procentach (czasem bez podana znaku %). W programie Pixia można przełączać się między skalami 0 do 100 a 0 do 255. W programie Paint i Paint.NET jest skala 0 do 255. W programie TEX(L A TEX) podajemy kolor składowy jako ułamek dziesiętny z zakresu [0, 1]. W języku HTML (a właściwie w CSS) można podać składową koloru w liczbe 0 do 255 jak i w procentach.
Kolor, mat. pomoc. dla technologia inf. (c) M. Żabka (12 listopada 2007) str. 3 Modele HSV (HSB) oraz HSL Modele RGB, CMY i CMYK nie oddają psychologii koloru. Stworzono więc modele bardziej intuicyjne: HSV (zwany czasem HSB) i HSL. W modelach HSV (HSB) i HSL litery oznaczają: H hue (odcień), S saturation (nasycenie), V value (wartość), B brightness (jasność) L lightness (jaskrawość). Wartość H jest taka sama w modelach HSV i HSL natomiast S przyjmuje nieco inną wartość. Odcień H jest interpretowany jako kąt w kole barw, bardzo często jest opisywany w stopniach 0 do 360. Wartości S, V, L są opisywane jako wartości w przedziale domkniętym [0, 1]. W modelu HSV, V jest maksymalną wartością z R, G, B (znormalizowaną przez podzielenie przez 255 lub 256), a L jest średnią z wartości maksymalnej i minimalnej (również znormalizowana). Stąd dla maksymalnej watości V otrzymujemy najaśniejsze kolory z możliwych, a dla maksymalnej wartości L otrzymujemy kolor biały. 180 90 koło barw 270 0 s 1 1 l Przykładowo dla h = 0 możemy na układzie współrzędnych zaznaczyć kolory w HSL i HSV. Na pionowej osi jest nasycenie (s), a na poziomej l lub v HSL HSV s 1 1 v Bardzo często interpretujemy model HSV jako stożek, a HSL jako dwa stożki połączone podstawami. Wzdłóż osi stożka zmienia się wartość v lub odpowiedznio l, a s jest miarą oddalenia od osi, na osi ma wartość 0, a na powierzchni wartość 1. Po lewej mamy jeden z przekrojów tych połączonych stożków dla modelu HSL, a po prawej jeden z przekrojów stożka dla modelu HSV. W przykładzie po prawej stronie wykorzystano model HSV, Utworzony został zestaw 33 kolorów o tym samym odcieniu (H=24 w skali 0 do 360); ponadto po 11 kolorów ma tę samą wartość V (V=60, V=80, V=100 w skali od 0 do 100), a S jest co 10, od 0 do 100 (również w skali 0 do 100).
Kolor, mat. pomoc. dla technologia inf. (c) M. Żabka (12 listopada 2007) str. 4 Użycie modeli HSV i HSL w programach: Większość programów używa idei modelu HSL w poprawianiu jasności i nasycenia, a czasem nawet przesunięcia koloru, np. w Paint.NET. Użycie HSV i HSL w programach do wyboru koloru przedstawia tablica: program HSV zakresy HSL zakresy Pixia tak h {0, 1,..., 359} tak 1 h {0, 1,..., 359} v, s {0, 1,..., 100} l, s {0, 1,..., 100} lub 2 lub 2 v, s {0, 1,..., 255} l, s {0, 1,..., 255} The Gimp tak h {0, 1,..., 360} v, s {0, 1,..., 100} Paint tak 3 h {0, 1,..., 239} s, v {0, 1,..., 240} Paint.NET tak h {0, 1,..., 360} v, s {0, 1,..., 100} 1 HSL zapisywany HLS 2 wybór w opcjach proramu 3 HSL zapisywany jako Odc. Nas. Jaskr. Zrzuty ekranowe z Paint.NET v3.10 wybór koloru (RGB i HSV) korekcja odcienia, nasycenia, jasności (HSL) Wzory na przeliczenie modeli RGB, HSV, HSL Możemy przeliczać modele przy pomocy programów, np. programu Pixia lub Paint, ale w programach napisanych w C, C++ lub PHP musimy dokonać konwersji wzorami (lub musimy znaleźć odpowiednią bibliotekę danego języka z gotowymi funkcjami). Mogą wyjść minimalne różnice między poniższymi wzorami, a wynikami z programów graficznych, wynikające z odmiennych zaokrągleń liczb do wartości całkowitych. Wzory zostały napisane przy następujących założeniach: r, g, b, s, v, l [0, 1], h [0, 360). Jeżeli potrzebujemy np. r, g, b {0, 1,..., 255} to należy wartość
Kolor, mat. pomoc. dla technologia inf. (c) M. Żabka (12 listopada 2007) str. 5 przeskalować, np. (f : [0, 1] {0, 1,..., 255}, f(x) = x 255, a odwrotnie g : {0, 1,..., 255} [0, 1], f(x) = x 255 ). RGB HSV nieoreślona g b 60 b g 360 60 h = b r 120 + 60 r g 240 + 60 v =M nieoreślona gdy M = 0 s = M gdy M > 0 gdy M = m gdy m = r g b gdy m = r g < b gdy m r m = g w pozostałych przypadkach gdzie M = max{r, g, b} oraz m = min{r, g, b} RGB HSL m, M, h są określone jak wyżej w RGB HSV, natomiast s oraz l są określone przez wzory: l = M + m 2 nieoreślona gdy M = 0 s = 0 gdy M 0 m = M M + m 2 (M + m) gdy l < 1/2 gdy l 1/2 HSV RGB (r, g, b) = (v, z, x) gdy E[h/60] = 0 (y, v, x) gdy E[h/60] = 1 (x, v, z) gdy E[h/60] = 2 (x, y, v) gdy E[h/60] = 3 (z, x, v) gdy E[h/60] = 4 (v, x, y) gdy E[h/60] = 5 gdzie E[u] oznacza część całkowitą z liczby u. gdzie f = h E[h/60] x = v (1 s) y = v (1 s f) z = v (1 s (1 f))
Kolor, mat. pomoc. dla technologia inf. (c) M. Żabka (12 listopada 2007) str. 6 HSL RGB Liczymy po kolei: Dla c = r, g, b obliczamy c = { l (1 + s) gdy l < 1/2 q = l + s s l gdy l 1/2 p = 2 l q t g = { h/360 tg + 1/3 gdy h t r = 0 < 2/3 t g 2/3 gdy h 0 2/3 { tg 1/3 gdy h t b = 0 1/3 t g + 2/3 gdy h 0 < 1/3 p + (q p) 6 t c gdy t c < 1/6 q gdy 1/6 t c < 1/2 p + (q p) 6 (2/3 t c ) gdy 1/2 t c < 2/3 p gdy t c 2/3 Przykłady pytań na teście komputerowym 1. Co oznacza litera R w modelu RGB kolorów? 2. Co oznacza litera S w modelu HSL 3. Przelicz HSV na RGB gdy H=30, S=1/2, V=1/3. ( Obliczenia można wykonać za pomocą wzorów ale lepiej jakimś programem np. Pixią). 4. Przelicz RGB na HSL, gdy R=19, G=223, B=182. (uwaga jak wyżej) 5. Brakło atramentu magenta w drukarce. Który kolor wydrukujemy prawidłowo: (tu test) czerwony, niebieski, zielony, żółty, pomarańczowy itd. 6. Który model nazywany jest substraktywnym: RGB, HSV, HSL, CMY 7. Po co jest dodawany Black do CMY, tu kilka wyjaśnień, w tym prawidłowe. 8. Ile bitów zajmuje srgb?