• Nie Znaleziono Wyników

Współrzędne HSV i HLS

W dokumencie Grafika komputerowa I – MIM UW (Stron 142-146)

Współrzędne RGB są wygodne w technice (w konstrukcji monitorów), ale dla potrzeb inte-rakcyjnego dobierania barw są one mało intuicyjne. Dla użytkowników programów graficznych (zwłaszcza dla osób, których wykształcenie techniczne nie dorównuje plastycznemu) znacznie wygodniejszy jest układ współrzędnych HSV (nazwy współrzędnych są wzięte z angielskiego: Hue oznacza odcień, Saturation— nasycenie6,Value— wartość).

Zbiór barw możliwych do osiągnięcia na monitorze można przedstawić jako sześcian; współ-rzędne R, G, B zmieniają się od 0 do 1 wzdłuż jego krawędzi. Tę bryłę barw można poddać nieliniowemu przekształceniu, w wyniku którego powstaje stożek. Czasem też przedstawia się tę bryłę jako ostrosłup sześciokątny, być może dlatego, że łatwiej jest go narysować.

Wierzchołek stożka ma współrzędną V = 0 i reprezentuje barwę czarną (R = G = B = 0). Współrzędne S i H są w tym punkcie nieokreślone.

Środek podstawy stożka ma współrzędne V = 1, S = 0 i reprezentuje barwę białą. Punkty na osi stożka reprezentują różne poziomy szarości; z wyjątkiem wierzchołka stożka współrzędna

S jest równa 0, a H jest nieokreślona. Oddalając się od osi stożka zwiększamy nasycenie S

do maksymalnej wartości 1 na powierzchni bocznej stożka. Współrzędna H odpowiada kąto-wi obrotu wokół osi stożka. Rysunek 12.7 przedstawia rozmieszczenie barw o poszczególnych odcieniach.

6

Nasycenie w tym układzie jest określone względem bryły barw fizycznie realizowalnych. Wartość 1 nasycenia odpowiada więc barwom o maksymalnym nasyceniu możliwym do uzyskania na danym urządzeniu, mimo że te barwy leżą wewnątrz obszaru barw widzialnych przedstawionego za pomocą diagramu CIE.

Rysunek 12.7. Układ współrzędnych i bryła HSV.

Do przejścia między układami RGB i HSV służą poniższe procedury, napisane przy zało-żeniu, że wszystkie współrzędne przebiegają przedział [0, 1]. Czasem współrzędną H podaje się w stopniach, od 0 do 360. Listing. procedure RGBtoHSV ( r, g, b, h, s, v ); begin max := max(r, g, b); min := min(r, g, b); delta := max−min; v := max;

if max 6= 0 then s := delta/max else s := 0; if s 6= 0 then begin

if r =max then h := (g − b)/delta

else if g =max then h := 2 + (b − r)/delta else h := 4 + (r − g)/delta; if h < 0 then h := h + 6; h := h/6 end end{RGBtoHSV}; Listing. procedure HSVtoRGB ( h, s, v, r, g, b ); begin

if s = 0 then begin r := v; g := v; b := v end else begin if h = 1 then h := 0; h := 6h; i := bhc; f := h−i; a := v(1 − s); b := v(1−s∗f); c := v(1 − s(1−f)); case i of 0: begin r := v; g := c; b := a end; 1: begin r := b; g := v; b := a end; 2: begin r := a; g := v; b := c end; 3: begin r := a; g := b; b := v end; 4: begin r := c; g := a; b := v end; 5: begin r := v; g := a; b := b end end end

end{HSVtoRGB};

Współrzędna V w układzie HSV jest taka sama dla np. najjaśniejszej barwy niebieskiej, jak i dla białej. Ponieważ w tym drugim przypadku barwa jest związana z większą mocą światła, więc bardziej intuicyjny może wydawać się układ HLS, w którym bryła barw składa się z dwóch stożków zetkniętych podstawami. Współrzędna L (ang. Light), która zastępuje współrzędną V w tym układzie, dla światła białego ma wartość 2, natomiast barwy „czyste” o maksymalnym nasyceniu (które w bryle barw HSV leżą na brzegu podstawy stożka) mają współrzędną L = 1. Wprawdzie światło żółte (R = G = 1, B = 0) wydaje się znacznie jaśniejsze niż np. niebieskie (R = G = 0, B = 1; luminancja światła żółtego jest równa 0.866, a niebieskiego 0.144, czyli jest 6 razy mniejsza), ale takie rozwiązanie okazało się użyteczne.

Rysunek 12.8. Bryła barw HLS.

Wybór układu współrzędnych i związanej z nim bryły barw jest ważny nie tylko ze względu na wygodę wybierania pojedynczych punktów (tj. barw). Znacznie istotniejsze jest mieszanie barw oraz interpolacja między wskazanymi punktami. Mieszanie barw podczas filtrowania (zmiany rozdzielczości, antyaliasing) i interpolacja w cieniowaniu Gourauda najczęściej wiążą się z addytywnymi układami współrzędnych, natomiast w interakcyjnym dobieraniu barw często celem jest otrzymanie barw reprezentowanych przez punkty wskazanego odcinka. Zauważmy, że interpolacja w bryle barw RGB polega na interpolacji współrzędnych, natomiast interpolacja w bryłach HSV i HLS wymaga przejścia do pomocniczego układu współrzędnych kartezjań-skich i interpolacji tych współrzędnych.

13.1. Wprowadzenie

Język PostScript został opracowany przez firmę Adobe Systems Inc. w 1985r. Jest to tzw. język opisu strony; plik postscriptowy jest programem, który jest interpretowany przez drukar-kę lub inne urządzenie, w celu utworzenia obrazu np. do wydrukowania. Dodatkowo, jest to prawdziwy język programowania (nawet dosyć „wysokopoziomowy”), w którym można pisać programy wykonujące skomplikowane obliczenia. Możliwości graficzne można wtedy zignorować lub wykorzystać do wyprowadzenia wyników.

Podstawowa zasada systemu grafiki związanego z językiem PostScript to niezależność opisu strony od urządzenia, które ma utworzyć obraz; wiadomo, że jest to urządzenie rastrowe, ale można i warto używać PostScriptu w oderwaniu od sprzętu; interpreter języka w dowolnym urządzeniu ma za zadanie przedstawić obraz o najlepszej jakości osiągalnej z tym urządzeniem. Praktyczny przykład tej filozofii: piszemy g setgray, gdzie g jest liczbą rzeczywistą z prze-działu [0, 1]. Polecenie to ustawia poziom szarości (0 to kolor czarny, 1 — biały). Rozwiązanie, w którym poziom szarości byłby określany przez podanie liczby całkowitej z przedziału od 0 do 255 nosiłoby piętno zależności sprzętowej (prawdopodobnie od liczby bitów w rejestrach prze-twornika cyfrowo-analogowego sterownika graficznego). Tymczasem dzięki możliwości podania liczby rzeczywistej

— nie ma ograniczenia tylko do 256 poziomów szarości (istnieją, co prawda rzadko spotykane, sterowniki z dziesięcio- lub dwunastobitowymi przetwornikami, więc to rozwiązanie umożli-wia pełne wykorzystanie ich możliwości),

— nawet jeśli jasność jest ostatecznie przeliczana na liczbę całkowitą od 0 do 255 (która bę-dzie przypisana pikselom), może to być przekształcenie nieliniowe, dopasowane do specyfiki urządzenia (inne dla drukarki, inne dla monitora).

Można pisać programy zależne od docelowego urządzenia, warto jednak robić to tylko wtedy, gdy domyślne ustawienie tego urządzenia nie pasuje do specyfiki zastosowania (ale zdarza się to bardzo, bardzo rzadko).

Program GhostScript jest interpreterem języka PostScript, opracowanym przez firmę Alad-din Software. Może on się przydać jako przeglądarka ekranowa, albo sterownik drukarki nie-postscriptowej, który czyni z niej drukarkę postscriptową. W odróżnieniu od większości produktów firmy Adobe, jest dostępny za darmo.

W ostatnim czasie PostScript traci nieco na popularności na rzecz języka PDF (ang. porta-ble document format), też opracowanego przez firmę Adobe. Pliki PDF są binarne (w związku z czym zajmują mniej miejsca) i pozwalają na tworzenie hipertekstu, co przydaje się w pra-cy z dokumentami elektronicznymi. Do oglądania plików PDF można użyć programu Adobe Acrobat Reader (jest za darmo), ale również GhostScriptu.

Ostatnia sprawa — nazwa. Wzięła się ona od notacji przyrostkowej (ang. postfix), czyli odwrotnej notacji polskiej Łukasiewicza. Notacja ta pozwala na beznawiasowy zapis wyrażeń arytmetycznych. Interpreter PostScriptu jest maszyną stosową której zadaniem jest przetwarza-nie kolejnych symboli takich wyrażeń.

W dokumencie Grafika komputerowa I – MIM UW (Stron 142-146)