Spis treści Skorowidz Poziom główny Poziom nadrzędny Wstecz Dalej Zadania ©

Elementarz grafiki komputerowej

(część I)

W poprzednich rozdziałach niniejszego opracowania omówiono podstawowe aspekty przechowywania informacji w postaci znakowej. Ilustracje graficzne stanowią ważne uzupełnienie tekstu w dokumentach sformatowanych. Przed przejściem do omawiania budowy dokumentów oraz sposobów ich projektowania, tworzenia i przechowywania, wskazane jest zatem krótkie wprowadzenie do przechowywania i przetwarzania danych graficznych. Tematowi temu poświęcony jest bieżący rozdział.

Urządzenia cyfrowe nadają się doskonale do przechowywania i przetwarzania rysunków i obrazów. Istnieją dwie zasadniczo odmienne metody traktowania obiektów graficznych. Pierwsza z nich przypomina fotografię: rejestruje pewien obraz na płaskim nośniku, lecz jest jej wszystko jedno, co widzi; wszystkie obserwowane obiekty sprowadza do układu barwnych punktów. Metoda druga polega raczej na osobnym opisywaniu poszczególnych obiektów, zaś ostateczne nakreślenie obrazu zostawiane jest na później. W wielu sytuacjach korzysta się również z mieszanki owych metod. Przed ich szczegółowym omówieniem opiszemy sposoby definiowania barw w świecie cyfrowym.

Systemy opisu kolorów

Barwa jest wrażeniem zmysłowym powstającym wskutek postrzegania fal elektromagnetycznych. Dlatego przy opracowaniu ilościowych modeli barw korzysta się z nie tylko z teorii fizycznej, ale także z wiedzy dotyczącej zakresu i mechanizmu percepcji zmysłowej. Użytkowe modele barw mają charakter uproszczony, jednak są wystarczająco precyzyjne dla celów praktycznych.

Z użytkowego punktu widzenia należy rozróżnić między właściwościami źródeł światła emitowanego i źródeł światła odbitego. Te pierwsze cechują się zasadą addytywności, oznaczającą zwiększanie jasności obrazu wraz z wzrostem intensywności barw. Przy połączeniu światła z dwóch różnych źródeł ogólna jasność barwy wzrasta.

Obserwacja światła odbijanego przez powierzchnię barwną lub przepuszczanego przez barwny filtr prowadzi do przeciwnych wniosków. Przy oświetleniu strumieniem białego światła o ustalonym natężeniu, zwiększenie intensywności barwy spowoduje obniżenie jasności światła odbitego. Barwami światła odbitego rządzi zasada subtraktywności (odejmowania) albo dopełniania.

Założenie, że intensywność barw da się porównywać, prowadzi wprost do parametrycznego opisu intensywności koloru lub poszczególnych jego składników za pomocą liczb.

Te podstawowe fakty wpłynęły na dobór podstawowych parametrów stosowanych w użytkowych cyfrowych systemach opisu barw.

System RGB

[ model barw ] W systemie RGB (Red, Green, Blue) każdy kolor jest przedstawiany w postaci mieszanki kolorów czystych: czerwonego, zielonego i niebieskiego. Sposób ten jest odpowiedni do przedstawiania barw światła emitowanego System RGB jest szeroko stosowany do definiowania barw w grafice ekranowej.

Udział danego składnika czystego wyrażany jest w procentach, lub — co na jedno wychodzi — za pomocą liczb rzeczywistych z przedziału ⟨0.0, 1.0⟩, przy czym wartość 0.0 oznacza brak danego składnika, zaś 1.0 — jego maksymalny udział w opisywanej barwie. Tym samym każdy kolor jest opisany za pomocą trzech liczb rzeczywistych: trójka (1.0, 0.0, 0.0) odpowiada pełnemu nasyceniu barwy czerwonej, (0.0, 1.0, 0.0) — zielonej, zaś (0.0, 0.0, 1.0) — niebieskiej. Barwa biała ma współrzędne (1.0, 1.0, 1.0), a trójka (0.208, 0.184, 0.894) opisuje pewien odcień atramentowego błękitu. Proporcjonalne zmniejszenie wszystkich składników oznacza przesunięcie ku kolorowi czarnemu. Każda równomierna mieszanka kolorów podstawowych oznacza pewien odcień koloru szarego. Punkt (0, 0, 0) oznacza kolor czarny.

Skala barw RGB

Taki uogólniony opis jest niezależny od rozwiązań technicznych przyjętych w poszczególnych systemach i urządzeniach. Znalazł on również zastosowanie w interfejsach użytkowych wielu programów graficznych (np. GNU GIMP).

Poszczególne cyfrowe realizacje modelu RGB przewidują ustaloną liczbę bitów do opisu udziału każdego składnika w barwie. W praktyce zatem przyjmuje się, że udziały te są opisywane przez liczby całkowite z zakresu od zera do wartości maksymalnej, równej 2liczba bitów−1. Intensywność danego składnika wyraża się przez iloraz liczby opisującej ten składnik i jej maksymalnej możliwej wartości.

Szeroko dziś stosowany 24-bitowy model RGB przewiduje dla każdego składnika barwy liczbę 8-bitową, którą można utożsamiać z liczbą całkowitą z zakresu 0–255. Na przykład czystej barwie czerwonej (1.0, 0.0, 0.0) odpowiada 24-bitowy kolor RGB opisany współrzędnymi (255, 0, 0). Barwie białej (1.0, 1.0, 1.0) odpowiadają współrzędne (255, 255, 255). Odcienia błękitu (0.208, 0.184, 0.894) nie da się odwzorować w omawianej reprezentacji dokładnie; w przybliżeniu ma on współrzędne (53, 47, 226).

Popularna jest też konwencja przedstawiania barw RGB z tego modelu w postaci jednej liczby 6-cyfrowej w systemie szesnastkowym, której kolejne pary cyfr opisują zawartość barw podstawowych w mieszance. Jest to tzw. trójka szesnastkowa (lub triplet szesnastkowy). I tak na przykład czystej barwie czerwonej (255, 0, 0) odpowiada triplet ff0000, barwie białej (255, 255, 255) — triplet ffffff. Odcieniowi błękitu (53, 47, 226) odpowiada triplet szesnastkowy 352fe2.

Skala barw RGB 24-bitowa

W profesjonalnych realizacjach model RGB umożliwia opis większej liczby poziomów barwy czystej. Model 48-bitowy pozwala na 16-bitowy opis każdego składnika, co odpowiada poziomom wartości od 0 do 65535. Na przykład w pełni nasycona czysta barwa czerwona ma w 48-bitowym modelu RGB współrzędne (65535, 0, 0), zaś biała – (65535, 65535, 65535). W przypadku 48-bitowym triplet szesnastkowy musi się składać z trzech bloków 4-znakowych.

Skala barw RGB 48-bitowa

System ERGB

[ model barw ] System ERGB (Enhanced RGB) wprowadza dodatkowy parametr związany z atrybutem przezroczystości (transparency). Każdy kolor jest opisany czterema współczynnikami liczbowymi. Barwa ostateczna jest efektem wtedy interakcji nakładających się warstw.

W notacji szesnastkowej, do tripletu znanego z modelu RGB dołączany jest czwarty blok z opisem przezroczystości. Na przykład kolor błękitny opisywany w 24-bitowym modelu RGB jako 352fe2, jest w ERGB reprezentowany przez 352fe2ff. Barwa 352fe200 jest w pełni przezroczysta, zatem niewidoczna, zaś 352fe280 jest kryjąca „w połowie”.

Literatura fachowa i oprogramowanie użytkowe często odwołują się do atrybutu przezroczystości za pomocą terminu kanał alfa. Dlatego system ERGB bywa także oznaczany jako RGBA (Red, Green, Blue, Alpha).

System HSB

Do opisu barwy światła emitowanego bywa stosowany także system HSB (Hue, Saturation, Brightness), czyli (odcień, nasycenie, jasność). Parametr odcienia odpowiada kolorom brzegowym koła barw od 0 (czerwony) przez 120 (zielony) i 240 (niebieski) do 360 (czerwony), parametr nasycenia leży w przedziale od 0 (biel) do 1.0 lub 100% (pełne nasycenie), parametr jasności leży w przedziale od 0 (czerń) do 1.0 lub 100% (jasny kolor o podanym odcieniu i nasyceniu). Kolorowi opisanemu w systemie RGB jako (0.208, 0.184, 0.894) odpowiadają w przybliżeniu współrzędne (242, 0.79, 0.88) systemu HSB.

Skala barw RGB Skala barw HSB

System CMYK

[ model barw ] System CMYK (Cyan, Magenta, Yellow, blacK) służy do opisu barw przedmiotów nie emitujących światła, tylko je pochłaniających. Jest on podobny do systemu RGB, lecz korzysta z innego układu kolorów bazowych (turkusowy, fioletowy i żółty), właściwszego przy mieszaniu barwników (tzw. model dopełnieniowy barw). Tutaj nakładanie się kolorów prowadzi do zmniejszenia jasności. Jest on używany głównie w systemach druku, a także w sterownikach drukarek, do definiowania barw wydruku.

Skala barw CMYK

Skale odcieni szarości

[ model barw ] W obrazach korzystających z tylko jednej barwy składowej jej natężenie da się wyrazić za pomocą pojedynczego parametru liczbowego. Podobnie jak w systemie RGB, może to być liczba rzeczywista z zakresu od 0.0 (czerń) do 1.0 (biel) lub całkowitoliczbowa reprezentacja cyfrowa.

Zapis taki zawiera jedynie informację o natężeniu barwy, ale nie o samym kolorze. Dlatego tego typu obrazy umownie nazywa się szarymi, a zamiast o skali barw mówi się w nich o skali odcieni szarości.

Wygenerowanie obrazu szarego z barwnego jest stosunkowo proste, choć da się przeprowadzić na wiele sposobów (należy w tym celu trójkę liczb zastąpić jedną liczbą, która ma coś wspólnego z parametrem opisującym intensywność); nie istnieje jednak operacja odwrotna, która przywróciłaby pierwotne kolory obrazowi sprowadzonemu do szarości.

[ model barw ] Dodajmy, że przy przedstawianiu obrazu szarego można posłużyć się innym zestawem barw. Np. fotografie w technice sepii operują wyłącznie odcieniami brązu, od czerni do bieli. Podczas przygotowywania obrazów barwnych do druku, na etapie zwanym rozbarwianiem, obraz barwny CMYK poddaje się rozkładowi na 4 obrazy szare, z których każdy odpowiada jednej składowej bazowej.

Przestrzenie barw

Zbiór wszystkich kolorów możliwych do reprezentowania danym sposobem tworzy tzw. przestrzeń barw. Na przykład w modelu RGB, przy jednobajtowej reprezentacji poszczególnych składników, przestrzeń barw można utożsamiać ze zbiorem trójek uporządkowanych postaci (r, g, b), gdzie r, g i b są liczbami całkowitymi z przedziału ⟨0, 255⟩. Przestrzeń ta zawiera 2563 = 224 = 16777216 różnych kolorów. Tak opisana przestrzeń barw nosi w systemach użytkowych nazwę TrueColor.

W profesjonalnych zastosowaniach związanych z poligrafią standardem są dziś przestrzenie złożone z 655353 = 248 = 281474976710656 (280 bilionów) różnych kolorów. Część informacji służy w nich do opisu stopnia przezroczystości, osobnego dla poszczególnych składowych koloru.

W użyciu są także inne przestrzenie barw, np. HighColor (poziom r z zakresu 0–32; poziom g z zakresu 0–64; poziom b z zakresu 0–32 — razem 16 bitów). Za jej pomocą da się opisać 32 × 64 × 32 = 216 = 65536 różnych barw.

Zbiór barw o jednakowej intensywności można graficznie przedstawić w postaci trójkąta, którego wierzchołki odpowiadają barwom czystym, lub koła, którego brzeg odpowiada mieszankom co najwyżej dwóch kolorów czystych. Cała przestrzeń barw bywa przedstawiana graficznie w postaci walca, stożka, kuli lub wrzeciona — zależnie od geometrycznej interpretacji parametrów opisujących pojedynczy kolor. Z reprezentacji takich korzystają interfejsy wyboru koloru w graficznych programach użytkowych.

Oczywiście barwy szare da się opisać w każdym systemie barw: są to te barwy, które mają jednakowy udział barw podstawowych. Jednak skala składająca się wyłącznie z odcieni szarości pozwala na reprezentowanie większej liczby takich odcieni, niż skala barwna o takiej samej liczbie bitów przypadającej na opis jednego koloru. Na przykład w przestrzeni TrueColor z trzy-bajtową reprezentacją barwy można przedstawić tylko 256 odcieni szarości. W przestrzeni odcieni szarości wystarczyłby do tego jeden bajt. Za to w trzy-bajtowym opisie szarości da się wyrazić aż 16777216 różnych jej odcieni.

Wybór koloru Wybór koloru Wybór koloru

Barwa poszczególnych elementów obrazu (pikseli w zapisie rastrowym lub obiektów w zapisie wektorowym) zadawana jest albo bezpośrednio w przyjętej przestrzeni barw (np. jako mieszanka RGB) albo pośrednio — jako numer koloru we wcześniej przygotowanej tabeli kolorów, tzw. palecie. Paleta może opisywać co najwyżej tyle kolorów, ile jest dostępnych w zastosowanej przestrzeni barw, na ogół jednak opisuje ich znacznie mniej. Zastosowanie palety w obrazie korzystającym z niewielkiej liczby barw pozwala istotnie zredukować ilość danych wymagających przechowania.

Paletę barw można reprezentować graficznie jako uporządkowany ciąg elementów pomalowanych kolorami zdefiniowanymi w palecie. Struktur takich używa się np. w interfejsach programów użytkowych umożliwiających wybór koloru z palety.

Pytania kontrolne

  1. W jaki sposób opisuje się barwę elementów obrazu cyfrowego?
  2. Jakie znasz przestrzenie barw? jakie są ich możliwości i ograniczenia?
  3. Co to jest paleta barw?
© Copyright 2001–2009 by Jan Jełowicki, Katedra Matematyki Uniwersytetu Przyrodniczego we Wrocławiu
janj@aqua.up.wroc.pl
http://karnet.up.wroc.pl/~jasj