home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1997 #3 / amigamamagazinepolishissue03-1 / ma_1995 / 05 / ami019.txt < prev    next >
Text File  |  1997-04-07  |  12KB  |  224 lines

  1. MODELE BARW I ALGORYTMY
  2.  
  3. <lead>Zagadnienie modelu barw HSV i RGB jest na tyle waûne i
  4. jednoczeônie zagmatwane, ûe przy okazji pracy z programami
  5. malarskimi, warto ten temat nieco odôwieûyê.
  6.  
  7. <a>Stanisîaw Wësîawski
  8.  
  9. <txt> Zaczâê trzeba od terminologii. W dziewiëtnastym odcinku
  10. "Deluxe Paint w praktyce" wspomniaîem o mieszaniu barw ADDYTYWNYM
  11. I SUBSTRAKTYWNYM. Otóû ksiâûka "Kolor czy barwa" Wîodka
  12. Pastuszaka (1993) podaje termin SUBSTRAKTYWNY, ksiâûka "Elementy
  13. grafiki komputerowej" Michaîa Jankowskiego (1990) to samo, a
  14. "Grafika komputerowa" wydana przez NOT obecnie (1994) i
  15. "Materiaîy fotograficzne barwne" Dubiela i Iliïskiego (1973)
  16. podaje termin SUBTRAKTYWNY. "Sîownik naukowo-techniczny
  17. angielsko-polski" informuje nas, ûe termin SUBTRACTIVE COLOUR
  18. PROCESS to "synteza subtraktywna barw, subtraktywne mieszanie
  19. barw." Jak wiëc widaê, ani czas wydania, ani rodzaj podrëcznika
  20. nie chroni nas od chaosu terminologicznego. Myôlë, ûe rozstrzyga
  21. tu jednak sîownik i od dziô ogîaszam, ûe zaczynam uûywaê terminu
  22. SUBTRAKTYWNY. Sîowo to pochodzi od angielskiego terminu SUBTRACT
  23. -- odejmowaê. Filtr zielony, np. kolorowe szkîo, przez które
  24. obserwujemy obraz, pochîania barwë czerwonâ, a przepuszcza
  25. promieniowanie zielone. W efekcie widzimy jasne liôcie drzew i
  26. ciemne czerwone róûe. Jeûeli naîoûymy na siebie trzy okrâgîe
  27. filtry w kolorze niebieskozielonym, purpurowym i ûóîtym, a
  28. nastëpnie poîoûymy je na biaîym tle, otrzymamy róûne kolory w
  29. miejscu ich wzajemnego przysîaniania.
  30.  
  31. Kolor ûóîty naîoûony na filtr purpurowy da w wyniku kolor
  32. czerwony. Kolor ûóîty naîoûony na filtr niebieskozielony da kolor
  33. zielony. Kolor purpurowy w zestawieniu z filtrem
  34. niebieskozielonym da barwë niebieskofioletowâ. Filtr purpurowy
  35. naîoûony na niebieskozielony, a potem na ûóîty da w efekcie czerï
  36. (teoretycznie).
  37.  
  38. Kolejne filtry odejmujâ "swojâ czëôê" promieniowania widzialnego
  39. i dlatego mówimy, ûe mieszanie subtraktywne dâûy do czerni.
  40. Metodë të stosujemy równieû posîugujâc sië farbami, tak w
  41. malarstwie, jak i w poligrafii. Poniewaû kolory (fizyczne) farb
  42. nie mogâ byê idealne, czerï uzyskana w ten sposób jest wîaôciwie
  43. kolorem ciemnobrunatnym. Dlatego w poligrafii stosuje sië
  44. dodatkowo czarnâ farbë. Peîne odwzorowanie barwnego rysunku
  45. nastëpuje wiëc po zastosowaniu nie trzech, ale czterech kolorów.
  46. W mieszaniu SUBTRAKTYWNYM mamy do czynienia z MIESZANIEM FARB.
  47.  
  48. Mieszanie ADDYTYWNE polega na MIESZANIU PROMIENIOWAÏ. Termin
  49. pochodzi od angielskiego sîowa ADD (dodawanie). Kolejne barwy
  50. ôwiatîa widzialnego po dodaniu do siebie utworzâ kompletne,
  51. biaîe, ôwiatîo. Ekran monitora komputerowego ôwieci. W zwiâzku z
  52. tym posîugujâc sië programami malarskimi dokonujemy mieszania
  53. addytywnego barw. Jeûeli puôcimy barwne plamy ôwiatîa z trzech
  54. reflektorów (np. w teatrze) na biaîy ekran, to stosujâc trzy
  55. róûne barwy uzyskamy róûne kolory w miejscu pokrywania sië
  56. barwnych plam na ekranie.
  57.  
  58. Czerwone ôwiatîo naîoûone na zielone da w efekcie kolor ûóîty.
  59. Czerwone ôwiatîo naîoûone na niebieskie da kolor purpurowy.
  60. Zielone naîoûone na niebieskie da kolor niebieskozielony.
  61. Naîoûenie na siebie ôwiatîa czerwonego, zielonego i niebieskiego
  62. da w efekcie biaîâ plamë ôwiatîa.
  63.  
  64. Mieszanie addytywne dâûy do bieli i jest charakterystyczne dla
  65. techniki telewizyjnej. Trzy plamy koloru, zmieszane przez dodanie
  66. ôwiateî, przedstawia pierwsza ilustracja. Mamy tam teû cztery pary
  67. fragmentów okien z regulatorami koloru z Deluxe Painta.
  68. Identyczne (lub podobne) suwaki ma kaûdy liczâcy sië program
  69. malarski, czy to dla komputera MacIntosh, IBM, czy Amiga.
  70. Przykîady pokazujâ ustawienia suwaków dla czerwieni, zieleni,
  71. niebieskiego i koloru bliûej nie okreôlonego, powiedzmy --
  72. brunatnozielonego. Suwaki pokazane sâ w pozycjach dla dwóch typów
  73. (modeli) barw mieszania addytywnego -- RGB i HSV. Suwaki pokazujâ
  74. odpowiednio dla RGB: 15-0-0 -- czerwieï, 0-15-0 -- zieleï, 0-0-15
  75. -- niebieski i 11-10-7 -- czwarty kolor. Druga ilustracja
  76. to model barw RGB. Przedstawia sië go w postaci szeôcianu.
  77. Na kolejnych naroûnikach mamy czyste kolory: czerwony -- RED (R),
  78. zielony -- GREEN (G), niebieski -- BLUE (B), ûóîty -- YELLOW (Y),
  79. purpurowy -- MAGENTA (M), niebieskozielony -- CYAN (C), brak
  80. koloru albo czerï -- BLACK (K) oraz biel albo czyste biaîe
  81. ôwiatîo -- WHITE (W). Trzy kolejne suwaki R, G i B przesuniëte ma
  82. maksimum dajâ pierwsze trzy kolory, a R i G -- ûóîty, R i B --
  83. purpurowy, G i B -- niebieskozielony. Logikë tego modelu widaê na
  84. ilustracji. Punkt wyznaczajâcy konkretny kolor znajduje sië
  85. gdzieô na szeôcianie. Czysta czerwieï to naroûnik szeôcianu.
  86. W miarë przesuwania sië po krawëdzi w kierunku czerni (K)
  87. czerwieï staje sië coraz mniej intensywna, ciemniejsza. Punkt
  88. poôrodku ôciany, wyznaczonej naroûnikami R-M-W-Y, jest równo
  89. oddalony od czerwieni, purpury, bieli i ûóîtego -- daje to nam
  90. jakâô odmianë koloru cielistoróûowego.
  91.  
  92. Trochë to rozumowanie moûna przeôledziê na ilustracji. Niestety,
  93. mogîem wykonaê rysunki modelu barw tylko w trybie HAM6 i
  94. prawdopodobnie reprodukcja na stronie bëdzie jeszcze gorsza od
  95. niezbyt dobrego oryginaîu. Z popularnych programów malarskich
  96. najlepszy do cieniowania takich ilustracji jest DigiPaint III,
  97. ale ideaîem byîoby wykonanie tego w IFF24. Wymieniam tu
  98. DigiPaint, poniewaû program ten ma wygodnâ opcjë cieniowania
  99. pîaszczyzn róûnymi barwami z róûnych stron powierzchni. Wracajâc
  100. do naszego szeôcianu, to zwraca uwagë fakt, ûe jeden z naroûników
  101. reprezentuje biel, a przeciwlegîy czerï. Kolory "bliskie" jednemu
  102. z naroûników ciemniejâ, po przeciwnej stronie, inne ulegajâ
  103. rozjaônieniu. Niestety, zwykîa geometria przy obliczaniu
  104. wartoôci RGB (zakres 0-15) na takim modelu nie ma zastosowania.
  105. Czasem moûna zobaczyê w niektórych programach rozwiniëcie ôcian
  106. takiego modelu w postaci pól, z których moûna "pobraê" odpowiedni
  107. kolor. Na nieco innej zasadzie zbudowany jest model HSV. Kolor ma
  108. swoje miejsce w kole barw i wartoôê odpowiadajâcâ kâtowi punktu
  109. na obwodzie koîa -- od zera do trzystu szeôêdziesiëciu stopni.
  110.  
  111. Wyjaôniaîem to w grudniowym odcinku "Deluxe Paint w praktyce".
  112. Przypominam wiëc tylko, ûe w modelu HSV czerwieï ma kât 0 lub 360
  113. stopni, a od zera przechodzi stopniowo w ûóîê, zieleï, bîëkit i
  114. tak dalej, aû znowu wróci do czerwieni. Model HSV (dokîadnie
  115. to samo co HSB) zostaî wyprowadzony z atrybutów barwy. Poza
  116. omówionym juû kolorem (a wîaôciwie jego miejscem w kole barw) -
  117. HUE (H), mamy tu jeszcze nasycenie i jaskrawoôê. Nasycenie to
  118. SATURATION (S). Zmniejszajâc nasycenie postëpujemy tak jakbyômy
  119. odbierali energië úródîu ôwiatîa. Reflektor przygasa, barwa staje
  120. sië coraz ciemniejsza. Jaskrawoôê BRIGHTNESS (B), zwana czasem
  121. wartoôciâ VALUE (V), to postëpowanie odwrotne. Dodajemy energii
  122. reflektorowi, ôwiatîo staje sië coraz jaôniejsze, aû do bieli.
  123. Teoria mówi, ûe kolor (HUE) to barwa pozbawiona atrybutów --
  124. nasycenia i jaskrawoôci. Na kole barw mamy barwy nieczësto
  125. spotykane w naturze -- kolory czyste. Polny kamieï, kolor râk czy
  126. cieï odbity przez niebieski kafelek na szarâ podîogë to czysty
  127. kolor wzbogacony o atrybuty. Suwaki na pierwszej ilustracji
  128. pokazujâ odpowiednie wartoôci HSV: 0-100-100 -- czerwieï,
  129. 120-100-100 -- zieleï, 240-100-100 -- niebieski. Sâ to kolory
  130. czyste. Czwarty kolor, a wîaôciwie barwa, to 45-36-72. Mamy tu
  131. kolor o numerze kâta czterdzieôci piëê, czyli gdzieô pomiëdzy
  132. pomaraïczowym a ûóîtym, oraz trzydzieôci szeôê procent nasycenia
  133. (S) i siedemdziesiât dwa procent wartoôci (V). Dziwnie to nazwaê
  134. jaskrawoôciâ. Bardziej przekonujâce byîoby 100-72 = dwadzieôcia
  135. osiem procent jaskrawoôci, ale tak wyskalowane sâ suwaki HSV w
  136. programach z modelem HSV. Lepszym sîowem jest tu uûywane czasem
  137. okreôlenie "intensywnoôê". Kolor w miarë zwiëkszania wartoôci V
  138. wyodrëbnia sië z biaîego tîa, aû staje sië coraz bardziej wyraúny
  139. -- intensywny.
  140.  
  141. Dobierajâc jakâô barwë "na oko" îatwiej jest posîugiwaê sië
  142. modelem HSV niû RGB. Mamy, powiedzmy, do ustawienia jakiô kolor
  143. odpowiadajâcy barwie naszych skórzanych butów. Wybierzemy
  144. przypuszalnie kolor pomaraïczowoczerwony, przyciemnimy za pomocâ
  145. zmniejszania nasycenia i ewentualnie "rozbielimy", zmieniajâc
  146. wartoôê V. Przestrzenny model HSV przedstawia ilustracja trzecia.
  147. Jest to ostrosîup o podstawie szeôciokâta, odwrócony
  148. wierzchoîkiem w dóî. Na podstawie mamy kolory uîoûone w koîo.
  149. Szeôê waûniejszych kolorów znajduje sië na wierzchoîkach
  150. szeôciokâta. Ôrodek podstawy wyznacza czysta biel. Im bliûej
  151. ôrodka, tym kolory na podstawie bardziej sië rozjaôniajâ.
  152. Wierzchoîek figury to czerï. Im bliûej wierzchoîka, tym ciemniej.
  153. Nasza wybrana barwa butów znajduje sië prawdopodobnie gdzieô
  154. wewnâtrz figury. Rozpoczëîa wëdrówkë na podstawie w pobliûu
  155. ûóîtego i pomaraïczowego, poszîa nieco po podstawie do ôrodka i
  156. zeszîa trochë niûej w kierunku ciemnoôci wierzchoîka. Model ten,
  157. podobnie jak RGB, nie daje sië îatwo przeliczaê normalnymi
  158. metodami. Do tego celu sîuûâ specjalne algorytmy. Poniewaû oba
  159. udaîo mi sië szczëôliwie znaleúê, zaczynamy opis po kolei od RGB.
  160.  
  161. Algorytm zaczerpnâîem z ksiâûki Michaîa Jankowskiego "Elementy
  162. grafiki komputerowej", Wydawnictwa Naukowo-Techniczne, Warszawa,
  163. 1990. Umieszczony na stronie 230. algorytm zmieniîem na jëzyk
  164. HisoftBasic, który jest jëzykiem na tyle prostym, ûe z pewnoôciâ
  165. algorytm da sië îatwo przerobiê na dowolny inny jëzyk
  166. programowania. Przeliczamy model HSV na RGB. Pobieramy kolejno
  167. wartoôê H z zakresu 0-360 i S oraz V z zakresu 0-100. Zmienna "I"
  168. to INT, wartoôê caîkowita zmiennej, a dalej sprawa jest juû
  169. raczej prosta. Algorytm odnajduje poszczególne miejsca szeôcianu
  170. RGB i podaje wartoôci czerwieni, zieleni i niebieskiego. Drugi
  171. algorytm byîo zdecydowanie trudniej odnaleúê. Jakoô nikt nie
  172. chciaî zamieszczaê wzoru na przeliczanie "w drugâ stronë".
  173. Znalazîem to dopiero w pracy zbiorowej "Grafika komputerowa --
  174. metody i narzëdzia", Wydawnictwa Naukowo-Techniczne, Warszawa
  175. 1994.  Poniewaû w grubym tomie nikt z autorów nie wspomniaî
  176. sîowem o Amidze, ksiâûki "za karë" nie kupiîem, ale algorytm
  177. przepisaîem.  Wzór podany byî nie tylko w obcym mi jëzyku
  178. programowania, ale twierdziî, ûe w niektórych wypadkach wartoôê
  179. "H" jest niewyliczalna. Jako laik nie przejâîem sië tym, tylko
  180. pracowicie dîubaîem w algorytmie (teû chyba odpisanym przez
  181. autorów, bo fragmenty "sîowne" byîy po angielsku) i po paru
  182. godzinach stworzyîem algorytm w HisoftBasicu, który nie tylko
  183. dobrze dziaîa, ale wartoôê "H" jest zawsze do wyliczenia.
  184.  
  185. Algorytm przeliczania RGB na HSV podaje ostatnia ilustracja.
  186. Pobieramy wartoôci R, G, B z zakresu 0-15. Dalej mamy wyliczanie
  187. najwiëkszej pobranej wartoôci i najmniejszej. Moûna to zastâpiê
  188. odpowiedniâ funkcjâ, ale to, co napisaîem, teû liczy dobrze.
  189. Pierwsza linijka z MAX oblicza maksimum, gdy pobieramy trzy róûne
  190. wartoôci. Poniewaû wzór w wypadku odpowiedzi TRUE (prawda) zwraca
  191. wartoôê (-1), zastosowaîem zmiennâ pomocniczâ T. Druga linijka
  192. podaje, co robiê w wypadku, gdy dwie pobrane wartoôci sâ równe i
  193. maksymalne. Trzecia linijka -- gdy wszystkie wartoôci sâ równe.
  194. To samo dotyczy wartoôci minimalnych. Dalej "leci" juû normalnie,
  195. podajâc na koïcu odpowiednie wartoôci koloru, nasycenia i
  196. intensywnoôci. Mam w ten algorytm niewâtpliwie pewien twórczy
  197. wkîad, w zwiâzku z tym nie moûe on byê wzorem elegancji
  198. programowania. Jest (na co mam nadziejë) wyîoûeniem metodâ "kawa
  199. na îawë" sposobu, który pozwoli przerobiê go kaûdemu programiôcie
  200. na odpowiadajâcâ mu formë i jëzyk. Staraîem sië wyeliminowaê
  201. bîëdy podczas druku, dlatego podajë algorytmy w postaci rysunków.
  202. Poniewaû, jak wiadomo, co moûe byê pomylone, pomylone bëdzie,
  203. zalecam Czytelnikom skontrolowanie dziaîania algorytmów.
  204.  
  205. <r>
  206. Wartoôci RGB 15  0  0 to dla HSV    0  100 100,
  207.  
  208.          RGB 15 15 15        HSV    0    0 100,
  209.  
  210.          RGB  0  0  0        HSV    0    0   0,
  211.  
  212.          RGB  6  9  0        HSV   80  100  60,
  213.  
  214.          RGB  9  3 14        HSV  272   78  93,
  215.  
  216.          RGB 15  0 15        HSV  300  100 100,
  217.  
  218.          RGB  5  3  4        HSV  330   40  33.
  219.  
  220. <txt> Algorytmy pozwalajâ przeliczyê wartoôci w obie strony i
  221. dajâ wyniki zgodne z tabelkâ, a kto nie wierzy, niech weúmie
  222. wartoôci z dowolnego programu malarskiego i sprawdzi.
  223.  
  224.