VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV RADIOELEKTRONIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF RADIO ELECTRONICS PROGRAM PRO VÝPOČET TRANSFORMACÍ BAREVNÝCH SOUŘADNIC A MÍSENÍ BAREV BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR MICHAL JURZYKOWSKI BRNO 2009
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV RADIOELEKTRONIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF RADIO ELECTRONICS PROGRAM PRO VÝPOČET TRANSFORMACÍ BAREVNÝCH SOUŘADNIC A MÍSENÍ BAREV AN APPLICATION FOR COLOR COORDINATE TRANSFORMS AND COLOR MIXING BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Michal Jurzykowski Ing. Martin Slanina, Ph.D. BRNO, 2009
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Ústav radioelektroniky Bakalářská práce bakalářský studijní obor Elektronika a sdělovací technika Student: Michal Jurzykowski ID: 78954 Ročník: 3 Akademický rok: 2008/2009 NÁZEV TÉMATU: Program pro výpočet transformací barevných souřadnic a mísení barev POKYNY PRO VYPRACOVÁNÍ: Seznamte se se souřadnými systémy pro znázornění barev. Určete vztahy pro transformaci souřadnic mezi jednotlivými systémy a pro aditivní a substraktivní mísení barev. Vytvořte počítačový program s grafickým rozhraním, který bude umožňovat výpočet transformací barevných souřadnic a výpočet souřadnic barvy vzniklé mísením. Program by měl rovněž zobrazit příslušnou barvu v diagramu zvoleného souřadného systému. DOPORUČENÁ LITERATURA: [1] VÍT, V. Televizní technika - přenosové barevné soustavy, 1. vydání. Praha: BEN - technická litteratura, 1997. [2] ŘÍČNÝ, V. Videotechnika. Skriptum. Brno: FEKT VUT v Brně, 2003. Termín zadání: 9.2.2009 Termín odevzdání: 5.6.2009 Vedoucí práce: Ing. Martin Slanina, Ph.D. prof. Dr. Ing. Zbyněk Raida Předseda oborové rady UPOZORNĚNÍ: Autor bakalářské práce nesmí při vytváření bakalářské práce porušit autorská práve třetích osob, zejména nesmí zasahovat nedovoleným způsobem do cizích autorských práv osobnostních a musí si být plně vědom následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení 152 trestního zákona č. 140/1961 Sb.
ABSTRAKT Nejdůležitější lidský smysl je zrak. Vidíme pomocí očí, které jsou citlivé na malou část elektromagentického vlnění. Bílé sluneční světlo obsahuje celé viditelné spektrum. Rozkladem bílého světla získáme barevné spektrum. Barvy rozeznáváme čípky, které jsou citlivé na červené, zelené a modré spektrum světla. V minulosti vzniklo mnoho barevných modelů využivající aditivní nebo subtraktivní míchání barev. Jeden z prvních matematicky definovaných modelů byl CIE 1931 neboli XYZ. Společně s ním byl vytvořen xy chromatický diagram, pro zobrazení barevného prostoru. Nejznámější barevné modely jsou RGB a CMY. V televizní technice se používá YUV. Modely HSV a HSL jsou více intuitivní. Mají tři základní parametry: barevný tón, sytost a jas. KLÍČOVÁ SLOVA barva, zrak, oči, elektromagentické vlnění, viditelné spektrum, barevné spektrum, additivní, subtraktivní, barevný tón, sytost, jas, světlost, CIE 1931, XYZ, Yxy, xy chromatický diagram, RGB, CMY, YUV, HSV, HSB, HSL ABSTRACT The most important human sense is sight. We can see thanks to eyes, which are very sensitive on small part of electromagnetic wave. White sunlight contents all the spectrum visible. By decomposition of white sunlight we get colour spectrum. We recognize colours by cones, which are sensitive on red, green and blue spectrum of white light. Informer times it was de nited many colour models, which have been using additive and subtractive method od mixing colours. One of the first models which were matemacily defined was CIE 1931, also known as XYZ. Together with this model was created xy chromatic diagram for displaying of colour space. Best known colour models are RGB and CMY. In TV technics is used model YUV. Models HSV and HSL are more intuitiv. This models have three basic parameters: hue, saturation and brightness. KEYWORDS colour, sight, eyes, electromagnetic wave, spectrum visible, colour spectrum, additive, subtractive, hue, saturation, brightness, CIE 1931, XYZ, Yxy, xy chromaticity diagram, RGB, CMY, YUV, HSV, HSB, HSL
JURZYKOWSKI, m. Program pro výpočet transformací barevných souřadnic a mísení barev: bakalářska práce. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologíı, 2009. 40 s. Vedoucí semestrální práce Ing. Martin Slanina, Ph.D..
PROHLÁŠENÍ Prohlašuji, že svou bakalářskou práci na téma Program pro výpočet transformací barevných souřadnic a mísení barev jsem vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor uvedené bakalářské práce dále prohlašuji, že v souvislosti s vytvořením této bakalářské práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení 152 trestního zákona č. 140/1961 Sb. V Brně dne................................................. (podpis autora) PODĚKOVÁNÍ Děkuji vedoucímu bakalářské práce Ing. Martinovi Slaninovi, Ph.D. za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mého bakalářské práci. V Brně dne................................................. (podpis autora)
OBSAH Úvod 8 1 Barva 9 1.1 Co je to barva?................................. 9 1.1.1 Světlo.................................. 9 1.1.2 Zrakový orgán.............................. 10 1.1.3 Definování barvy............................ 11 1.2 Základní charakteristiky barvy......................... 11 2 Míchání barev 13 2.1 Aditivní míchání barev............................. 13 2.1.1 Výpočty................................. 13 2.2 Subtraktivní míchání barev.......................... 14 2.2.1 Výpočty................................. 14 3 Barevné modely 16 3.1 CIE XYZ, CIE 1931.............................. 16 3.1.1 Yxy................................... 17 3.1.2 Převodní vztahy............................. 18 3.2 RGB....................................... 19 3.2.1 Varianty RGB modelů......................... 20 3.3 CMY....................................... 21 3.3.1 CMYK.................................. 21 3.3.2 Převodní vztahy............................. 22 3.4 YUV....................................... 22 3.4.1 Převodní vztahy............................. 23 3.5 HSV, HSB.................................... 24 3.5.1 Převodní vztahy............................. 24 3.6 HSL....................................... 25 3.6.1 Převodní vztahy............................. 26 3.7 Převody mezi barevnými modely....................... 28 4 Programové řešení 29 4.1 Programovací jazyk............................... 29 4.2 Grafická knihovna................................ 29
5 Struktůra programu 31 5.1 Hlavní okno................................... 31 5.2 Rozhraní pro transformaci barev........................ 31 5.3 Rozhraní pro míchání barev.......................... 32 5.4 Knihovna implementující transformační a míchací funkce.......... 32 5.5 Okno s Yxy diagramem............................ 33 5.6 Knihovna implementující kontrolu vstupních hodnot............. 33 5.7 Použité prvky s Qt4.............................. 34 5.8 Programová statistika............................. 34 6 Ovládání aplikace 35 7 Závěr 38 Literatura 39 Seznam symbolů, veličin a zkratek 40
ÚVOD Cílem bakalářské práce bylo prostudovat problematiku týkající se různých souřadnicových systémů pro znázornění barev, jejich vzájemnou transformaci a metody míchání barev. Dále bylo cílem vytvořit počítačovou aplikaci, která bude umožňovat převádět barvy mezi jednotlivými barevnými modely a zobrazení výsledné barvy v Yxy chromatickém diagramu. Druhou funkcí aplikace bude míchání dvou barev. V první kapitole se seznámíme s pojmem barva a s tí, co si máme pod tímto pojmem představit. Její fyzikální význam a způsob vnímání lidmi. Dále se dozvíme základní charakteristiky barvy. V druhé kapitole jsou popsány dvě základní metody míchání barev. Aditivní míchání založené na práci se světlem a subtraktivní míchání pracující s barevným pigmentem. Nejrozsáhlejší kapitola se zabývá popisem základních barevných souřadnic, s nimiž se setkáváme v běžném životě. Základním model je CIE 1931 neboli XYZ, který patří mezi první matematicky definované modely. V počítačovém světě se pracuje s RGB a CMY. Pro přenos barevného obrazu v televizní normě PAL se používají souřadnice YUV. Nakonec jsou popsány modely HSV a HSL, které jsou orientovány uživatelsky a umožňují intuitivní práci s barvami. Čtvrtá kapitola popisuje výběr programového řešení počítačové aplikace. Volbu mezi jednotlivými programovacími jazyky a grafickými knihovnami, určenými pro tvorbu grafického uživatelského rozhraní. V páté kapitole je popsána struktura vytvořené aplikace. Popis a účel jednotlivých tříd a knihoven, z nichž se skládá program. Poslední kapitola nás seznamuje se samotným programem, jeho ovadáním a možnostmi jak v režimu míchání tak i transformaci barevných souřadnic. 8
1 BARVA 1.1 Co je to barva? Lidé jsou obdařeni pěti základními lidskými smysly, pomoci nichž vnímají své okolí. Mezi náš nejrozvinutější a nejdrahocennější smysl patří bezesporu zrak, kterým získáváme kolem 80 % informací o okolním světě. Vidíme díky očím, které jsou drážděny určitým druhem záření. Toto záření dopadá na sítnici jejiž povrch je tvořen tyčinkami a čípky. Lidské oko pak předává informace do mozku, kde jsou vyhodnocovány jako zrakový vjem neboli vidění. 1.1.1 Světlo Zrakem vnímané záření tvoří nepatrný frekvenční rozsah elektromagnetického vlnění. Viditelné záření, také světelné spektrum je pouze úzkou částí celého spektra elektromagnetického vlnění. Rozložení celého spektra je vidět na obr. 1.1 počínaje od dlouhých vln, přes střední a krátké vlny, milimetrové vlny k infračervenému vlnění. Za ním následuje viditelné světlo přecházející v ultrafialové vlnění. Dále se pak vlnová délka zkracuje na rentgenové paprsky, následně paprsky gama až ke kosmickému záření. Obr. 1.1: Elektromagnetické spektrum Rozsah vlnových délek světelného spektra je přibližně v rozmezí 400-700 nm. Typickým zdrojem přírodního světla, obsahující celé světelné spektrum, je bílé sluneční záření. Při dopadu bílého světla na skleněný hranol se rozloží na barevné spektrum. Jak je vidět na obr 1.2 barevné spektrum přechází spojitě od červené, přes oranžovou, žlutou, zelenou a 9
modrou do fialové. Rozsah vlnových délek monochromatických (jednobarevných) světel je uvedeno v tab 1.1. Světlo je tedy nositelem barevné informace a bez něj nemůžeme vidět a tedy vnímat barvy. Obr. 1.2: Spektrum bílého světla Tab. 1.1: Parametry monochromatického záření viditelného spektra světla Barva Vlnová délka Frekvence červená 700-630 nm 430-480 THz oranžová 630-590 nm 480-510 THz žlutá 590-560 nm 510-540 THz zelená 560-490 nm 540-610 THz modrá 490-450 nm 610-670 THz fialová 450-400 nm 670-750 THz Aby bíle světlo se stalo nositelem barevné informace musí nejdříve dopadnout na povrch objektu. Podle vlastností povrchu předmětu se odrazí jen určité vlnové délky světla. Odrazit se mohou jenom vlnové délky dopadající na povrch. Pokud dopadající světlo neobsahuje vlnové délky, které se odrážejí od povrchu, daný objekt nevidíme. Proto spektrum dopadajícího světla ovlivňuje výsledné spektrum odraženého světla vnímané naším zrakem. 1.1.2 Zrakový orgán Oční bulva obsahuje tři vrstvy, obr. 1.3. Ve vnější vrstvě se nachází průhledná rohovka, kterou prochází světelné paprsky přes čočku do oka. Střední vrstva cévnatka zásobuje celý zrakový orgán krví a přechází v předu v ciliární sval. Jeho úkolem je měnit tvar čočky, a tím měnit její ohniskovou vzdálenost a zaostřovat obraz na vnitřní vrstvě oka - sítnici. Kromě toho přechází ciliární sval na vnější straně čočky v duhovku, který mění podle množství dopadajícího světla (jasu) průměr duhovky.[10] Prostor před i za čočkou je vyplněn průhlednou komorovou tekutinou zvaný sklivec. Přes čočku dopadá obraz jako světlo na zadní část sítnice. V ose této dráhy je na sítnici ústřední jamka žluté skvrny. V tomto místě se nachází buňky dvojího druhu, které jsou 10
Obr. 1.3: Schématický průřez lidským okem citlivé na světlo. První skupinu jsou tyčinky. Jejich počet je okolo 120 miliónu. Druhou skupinu tvoří čípky, asi 6 miliónu. Pouze čípky jsou schopné rozeznávat barevné spektrum. Tyčinky vidí pouze černobíle, ale jsou 200 000 krát citlivější na světlo než čípky. Proto vidí i za šera. Tyčinky jsou trojího druhu a každé jsou citlivé na jinou vlnovou délku elektromagnetického záření. Těmto vlnovým délkám odpovídají barvy: červená, zelená a modrá. Lidské oko je nejvíce citlivé na zelené spektrum, pak červené a nakonec modré. Toto se přisuzuje evoluci a prostředí ve kterém jsme se vyvíjeli.[10] Světlo dopadající na tyčinky a čípky vyvolává podráždění odpovídající jeho intenzitě a vlnové délce. Tyto vzruchy jsou pak vysílány do mozku, kde jsou interpretovány na barvy. 1.1.3 Definování barvy Na základě těchto podkladů lze barvu definovat jako subjektivní vjem vyvolaný působením světla daného spektra šířeného ze zdroje, které se odráží od povrchu objektu a následně dopadá na sítnici oka. Oko zpracuje dopadající světlo a pošle informaci do mozku. Ten jej interpretuje jako barvu odpovídající charakteristickým rozsahům vlnových délek světla odraženého od povrchu objektu.[8] 1.2 Základní charakteristiky barvy U barev můžeme rozlišovat tři objektivní charakteristické vlastnosti. První vlastností barvy je tón (anglický termín hue). Ten je dán převládající (dominantní) vlnovou délkou 11
barevného světla. Barevné tóny jsou například monochromatické světla, která vznikají při rozkladu bílého světla hranolem. Pokud bychom světelné spektrum rozdělili ještě na menší částí po 10 nm získali bychom tak 30 spektrálních barev. Tyto barvy patří mezi čisté barvy a nazýváme je barvy syté. Zde se dostáváme k druhé charakteristice sytosti barvy (anglický termín saturation). Někdy taky chroma, síla, čistota. Sytost představuje množství příměsi bílého světla k čisté barvě. Tak můžeme získat z modré spektrální barvy blankytnou modř. Čisté, syté barvy mají 100 % sytost. Barvy se zmenšenou sytostí jsou pastelové barvy. Bílá, všechny stupně šedi a černá barva mají nulovou sytost. Jsou to barvy nepestré. Třetí charakteristikou barvy je její jas, neboli její světlost, resp. tmavost (anglický termín brightness, nebo luminosity). Velikosti jasu odpovídá množství energie odražené od barevného povrchu. Změnou jasu světla o určitém barevném tónu např. červeném dostáváme barvu tmavě červenou nebo světle červenou, ale nemůžeme získat růžovou. Změnou jasu se nemění tón ani sytost barvy. U nepestrých barev (barvy s nulovou sytostí) se změnou jasu mění černá barva přes odstíny šedi na bílou. Pro přenos barevné scény je zapotřebí u každého obrazového prvku přenášet barevný tón, sytost a jas. Ve spektrálním rozložení barvy představuje velikost amplitudy velikost jasu. Frekvence vrcholu křivky určuje převládající tón barvy. Poměr vrcholu křivky ke konstantní úrovni (množství bílého světla) udává sytost barvy.[10] 12
2 MÍCHÁNÍ BAREV Pro míchání nových barev je zapotřebí vhodně zvolit základní barvy. Kombinací pak můžeme získat velké množství různých barevných odstínů. Abychom mohli namíchat všechny existující barvy potřebujeme nekonečně mnoho základních barev. V praxi běžně vystačíme se třemi barvami. Při míchání barev se používají dva základní přístupy. 2.1 Aditivní míchání barev Používá se při práci se světlem. Tedy u zařízení, které produkují nebo zpracovávají barevné světlo, např. televizory, projektory, kamery. Základní barvy jsou červená (Red), zelená (Green) a modrá (Blue), které odpovídají barevné soustavě RGB. Složením základních barev získáme bílou barvu obr. 2.1. Smícháním dvou barev vzniká nová barva. Stejný poměr modré a zelené barvy dává azurovou barvu. Červená a modrá barva dává purpurovou a smícháním zelené a červené vznikne žlutá barva. Další barvy získáme změnou poměru základních barev. Při aditivním míchání barev si především musíme uvědomit, že mícháním dvou barev slučujeme dvě záření o různých intenzitách. Tedy výsledná barva má větší intenzitu barevných spekter než vstupní barvy, roste jasová složka barvy. U aditivního míchání dvou barevných světel nejsme schopni snížit intenzitu. To by šlo jenom v případě, že bychom mohli vytvořit černé světlo pohlcují okolní světlo a to za doposud známých fyzikálních zákonů není možné. Další omezení vyplývá z fyziologického vnímání světla. Lidské oči jsou schopny vnímat světlo jenom do určité intenzity. Při zvyšování intenzity světla nad tuto mez, začínají lidé vnímat dopadající záření jako velmi světlé, zářící barvy, přes zářící bílou až dojde k přesycení světlocitlivých receptorů, dočasné ztrátě zraku nebo dokonce k jejich poškození a trvalé slepotě. 2.1.1 Výpočty Bereme-li v potaz tyto dvě omezení, byla by rovnice pro aditivní míchání dvou barev daná součtem dílčích spektrálních výkonů. Po překročení maximální intenzity by byla výsledná barva bílá. Tento způsob omezuje možnosti míchání, proto při překročení některé barevné složky nad hodnotu jedné, bude se provádět normování maximální složky na hodnotu jedné. Tímto koeficientem se normují i ostatní barevné složky. Zjednodušený tvar bude mít pak podobu: R = R 1 + R 2, G = G 1 + G 2, B = B 1 + B 2, (2.1) 13
určíme max hodnotu, bude-li max > 1 pak R = R max, G = G max, B = B max. (2.2) a) b) Obr. 2.1: Míchání barev: a)aditivní, b)subtraktivní 2.2 Subtraktivní míchání barev Na rozdíl od aditivního míchaní barev se zde nepracuje se světlem, ale s pigmenty. Výsledná barva je daná množstvím pohlceného a odraženého světla na povrchu barevného objektu. Využívá se v tiskárnách, plotrech, malbě. Základní barvy jsou zde azurová (Cyan), purpurová (Magenta) a žlutá (Yellow), které odpovídají barevné soustavě CMY. Subtraktivní míchání barev je znázorněno na obr. 2.1. Smícháním základních barev získáme černou barvu. V praxi se černé pouze přiblížíme, proto se využívá barevný systém CMYK, kde se přidává samostatná černá barva (black). U aditivního míchání jsme mohli mícháním získat pouze barvy, které měli shodnou nebo vyšší jasovou složku (energii signálu) než vstupní záření. Subtraktivní míchání využívá prací s pigmentem, odrazem světla, který je schopen jak barevné světlo odrážet, tak i pohlcovat. Což je největší rozdíl od aditivního míchání. Můžeme měnit jas signálu směrem nahoru nebo dolu. 2.2.1 Výpočty Při uvažování dokonalého pigmentu, kde budou mít všechny barevné pigmenty stejnou koncentraci a schopnost odrážet, pohlcovat světelné spektrum. Lze definovat rovnici 14
míchání: R = v 1 R 1 +v 2 R 2 v 1 +v 2, G = v 1 G 1 +v 2 G 2 v 1 +v 2, B = v 1 B 1 +v 2 B 2 v 1 +v 2, (2.3) kde v 1 a v 2 představují množství barevného pigmentu. 15
3 BAREVNÉ MODELY Barevný model slouží jako abstraktní matematický model popisující barvy. Vychází z míchaní základních barev a slouží pro zjednodušení práce a uchovávaní barevných informací. V praxi se používají modely, u kterých je zvolen vhodný kompromis mezi přesností podání barevného dojmu a složitostí konkrétního modelu. V barevném modelu jsou definovány základní barvy, pravidla jejich míchání a barevné charakteristiky. Různé barevné modely se používají v různých odvětvích. Od počítačové grafiky, přes televizní techniku, studiové návrhy, ke kalibracím zařízení. V minulosti se jejich tvorbou zabývalo řada osobností a institucí. 3.1 CIE XYZ, CIE 1931 Jeden z prvních matematicky definovaných prostorů byl CIE XYZ. O jeho vytvoření se zasloužil mezinárodní úřád Commission internationale de l éclairage (zkráceně CIE) v roce 1931. Odtud pochází i jeho druhý název CIE 1931. Byl vytvořen na základě výzkumu, experimentů vnímání barev. Obr. 3.1: CIE standardní pozorovatel, color matching functions Organizace CIE v roce 1931 definovala základní stavební prvek kolometrie tzv. standardní kolometrický pozorovatel CIE 1931, CIE 1931 standard colorimetric observer. Standardní pozorovatel je charakterizován třemi color matching functions, které popisují odezvu pozorovatele na barevný světelný podmět. Color matching funkce x(λ), ȳ(λ) a z(λ) slouží ke stanovení speciální trojice čísel, tzv. XYZ tristimulu. Funkce je založena na nelineárním vnímání výkonů barevných spekter, jejíž závislost lze vidět na obrázku 3.1 16
a jejich matematické vyjádření je X Y Z = 0 I(λ) r(λ) dλ = 0 I(λ)ḡ(λ) dλ = 0 I(λ) b(λ) dλ. (3.1) Kde x(λ) je vlnová délka ekvivalentního monochromatického světla. XYZ tristimulus je pouze indikátorem shody barev. Mají-li dva podněty pozorované za týchž podmínek shodný nebo skoro shodný XYZ tristimulus, pak se jeví být stejné nebo téměř stejné barvy. Hodnota XYZ tristimulu neudává, jaká bude pozorovaná barva, protože neexistuje jednoznačný vztah mezi jednotlivými barvami a hodnotami XYZ tristimulu v závislosti na pozorovacích podmínkách, adaptaci našeho zraku atd. Z těchto důvodu se nám podněty se shodnou hodnotou XYZ tristimulu mohou jevit pokaždé trochu jinak. V praxi bývá užitečné oddělit jasovou složku (intenzitu podnětu) a chromatikou (barevnou) složku. Z XYZ tristimulu lze tyto oddělené složky získat jejich normalizací. Většinou se používá jednoduchá normalizace: x = X X+Y +Z, y = Y X+Y +Z, z = Z X+Y +Z, (3.2) a platí, že x + y + z = 1. (3.3) Třetí hodnota z je však zbytečná a dopočítává se jednoduše z prvních dvou. 3.1.1 Yxy Hodnota Y a normované hodnoty x, y tristimulu jsou základem pro barevný model Yxy. V této barevné soustavě hodnota Y vyjadřuje jasovou složku vnímané barvy. Nejčastějších rozsah jasu v Yxy je od 0 % do 100 %, kde hodnotě 100 % odpovídá odraz dokonalého bílého difuzního reflektoru, který odráží všechny vlnové délky stejně. To však neznamená, že jas nemůže být vyšší než 100 %. V praxi mají vyšší hodnotu například fluorescentní barvy [1]. Normované hodnoty x a y nesou informaci o chromatičnosti barvy. Velkou výhodu přináší redukce tristimulu na pouhé dvě hodnoty. Díky tomu lze jednoduše graficky znázornit chromatičnost barvy prostřednictvím chromatických diagramů. Pro barevný model Yxy vycházející z CIE 1931 je chromatický diagram znázorněn na obr 3.2. Hodnotám x = 1/3 a y = 1/3 v diagramu odpovídá bílá barva. 17
Obr. 3.2: Chromatický diagram CIE 1931 Chromatický diagram pouze vyjadřuje chromatickou informaci barvy, který nám dává dobrou představu o spektrálním složení barevného vjemu. Nepředstavuje však skutečnou vnímanou barvu. Abychom získali skutečnou barvu musíme zohlednit i jasovou složku Y. Pak může například z čistě syté červené barvy vzniknout téměř černá. Bohužel realita není tak jednoduchá jak se zdá. Chromatický diagram vychází z modelu CIE 1931, kde se hodnoty tristimulu vypočítávají na základě standardního pozorovatele. V CIE 1931 je však definována řada pozorovatelů. V praxi se často využívá pozorovatel s označením D65 přibližující situaci při denním světle. Další definování pozorovatelé jsou například A(Incandescent), F2 (Fluorescent)[1]. 3.1.2 Převodní vztahy Barevný model XYZ neboli CIE 1931 reprezentuje mnohem větší barevné spektrum než běžně používaný model RGB. Barevný model RGB je pouze schopen zobrazit omezenou trojúhelníkovou výseč CIE 1931 chromatického diagramu. Pro převod mezi RGB modelem a touto oblastí platí tyto vztahy: ( ) r+0,055 2 r = 1,055, pro r > 0, 04045, r, pro r 0, 04045. (3.4) 12,92 18
Obdobně i pro g a b r = r 100, g = g 100, b = b 100, X Y Z = 0, 4124 0, 3576 0, 1805 0, 2126 0, 7152 0, 0722 0, 0193 0, 1192 0, 9505 r g b (3.5), (3.6) Nazpět do RGB můžeme převádět jenom vyznačenou oblast. X Y Z r g b = X, 100 = Y, 100 = Z 100, = 3, 2406 1, 5372 0, 4986 X 0, 9689 1, 8758 0, 0415 Y 0, 0557 0, 2040 1, 0570 Z (3.7), (3.8) 1, 055 r 1 2.4 0.055, pro r > 0.0031308 r = r 12, 92, pro r 0.0031308, (3.9) obdobně i pro g a b. 3.2 RGB Mezi nejznámější barevné modely patří RGB. Název je odvozen ze tří základních barev: červená (Red) 630 nm, zelená (Green) 530 nm a modrá (Blue) 450 nm. Model vychází z principu skládání barev lidského zraku. Jejich kombinací můžeme získat téměř všechny barvy barevného spektra. Pracuje na principu aditivního míchání barev. Používá se zejména v počítačové grafice a počítačové technice. Barva je dána mohutností základních barev. Zastoupení barev se může udávat v procentech, ale většinou dekadickou hodnotu. Rozmezí hodnot je dané barevnou hloubkou. Ve většině případů se používá hloubka 8 bitů na jednotlivé barvy. Tedy 256 možných úrovní. Někdy se u digitálních fotografií používá 12-ti bitová hloubka, 4096 úrovní intenzity barvy. Nejnižší hodnota znamená nulové zastoupení barvy, tj. intenzita záření nedráždí oční receptory. Maximální úroveň naopak odpovídá intenzitě záření, kdy receptory oslepnout (jsou přesyceny). Pro znázornění RGB modelu se používá jednotková krychle obr 3.3. Jednotlivé osy představují červené, zelené a modré světlo. V jejich počátku (0, 0, 0) vzniká barva černá. 19
V protilehlém rohu (255, 255, 255), kde je intenzita všech barev maximální, je naopak barva bílá. Uhlopříčka spojující tyto dva vrcholy reprezentuje všechny odstíny šedé barvy. Tato reprezentace není příliš intuitivní, protože změna jasu barvy není lineární s posunem po přímce. Obr. 3.3: Krychle reprezentující RGB model 3.2.1 Varianty RGB modelů Samotný RGB model neobsahuje specifikace o svých základních barvách, bíle barvě a gamutu. Z těchto důvodů vzniklo více variant RGB modelů. Mezi základní varianty můžeme řadit. RGBA Jedná se o klasický RGB model, kde je navíc obsažena informace o průhlednosti barvy, taky označován jako alfa kanál. Odtud název RGBA. Využívá se v počítačové grafice při prolínání jednotlivých obrazců. srgb Nejznámější a nejpoužívanější varianta. Běžný RGB model je navíc rozšířen o definici gamutu (rozsah barevného prostoru) běžného monitoru, teplotu bílé barvy 6500 K a hodnotu gamma 2,2. Model odpovídá zobrazovacím schopnostem monitorů, proto se používá na internetu a je standartem operačního systému Windows[7]. 20
Adobe RGB Model byl vyvinut společností Adobe v roce 1998. Používá mírně odlišné základní barvy než model srgb a díky tomu obsáhne větší rozsah barev, zejména v barvě zeleno-modré. Bohužel Adobe RGB model není většina dnešních monitorů schopna zobrazit.[7] Pracuje se s ním většinou v profesionální sféře. 3.3 CMY Další známým modelem je model CMY, který je doplňkový k modelu RGB. CMY představuje tři základní barvy: azurová (Cyan), fialová (Magenta) a žlutá (Yellow). Model pracuje na subjektivním míchaní barev. Je typický pro míchání malířských nebo tiskových barev, proto se zejména používá v tiskárnách. Výsledná barva je daná množstvím pohlceného záření dopadající na objekt. Jednotlivé základní barvy pohlcují určité spektrum záření. Podíl pohlceného záření je dán obdobně jako u modelu RGB. Minimální hodnota barvy znamená, že spektrum záření příslušné barvy se úplně odráží. Maximální hodnota zcela pohltí záření. V praxi při smíchání všech tří barev získáme maximálně tmavou hnědou barvu.[3] Pro znázornění CMY modelu se používá shodná krychle jako u modelu RGB. Na rozdíl od modelu RGB má krychle obr. 3.4 počátek v bílé barvě. Obr. 3.4: Krychle reprezentující CMY model 3.3.1 CMYK V praxi při smíchání všech tří barev CMY získáme maximálně tmavou hnědou barvu. Proto byla k modelu CMY přidaná černá barva (black). S tímto modelem jsme schopni 21
zobrazit přibližný rozsah barev, jako s modelem RGB. 3.3.2 Převodní vztahy Hlavním problémem při převodu mezi RGB modelem a CMYK spočívá v podání barev, protože jsou založeny na jiném principu míchání barev. Většinou barevné podání obrázku na monitoru vypadá jinak než následně vytištěný na papír. I když matematický jsou si barvy rovny. Barvy na papíře nejsou tak syté jako na monitoru. Jedním z důvodu je rozdíl v bílé barvě vyzařované monitorem a schopnosti papíru odrážet bílou barvu. Proto na kvalitě papíru velice záleží. Převod mezi RGB a CMY potažmo CMYK, aby si barvy odpovídaly není jednoduchý. Většinou tento převod zajišt ují ovladače tiskáren, které využívají různé techniky pro maximální věrohodnost barev. Pokud tyto techniky zanedbáme můžeme pro převod do CMY modelu použit tyto jednoduché vztahy c = 1 r, m = 1 g, y = 1 m. (3.10) Rozmezí hodnot intenzity barev je od 0 do 1. U modelu CMYK navíc využíváme dokonalou černou barvu k = 1 min, c = 1 (r min), m = 1 (g min), y = 1 (b min). (3.11) 3.4 YUV Model se používá v barevném televizním vysílání v normě PAL pro přenos analogového televizního vysílání. Norma PAL se převážné používá v Evropě. Model pracuje na principu aditivního skládání barev. Barvy v modelu YUV jsou popisovány třemi veličinami. První veličinou je Y nesoucí informaci o jasu obrazu, která je získána z intenzit základních RGB barev pomocí rovnice 3.12 Y = 0, 299r + 0, 587g + 0, 114b. (3.12) Černobílé televizory pracují pouze s jasovou složkou. Další dvě veličiny U a V nesou informaci o barvě (chromatičnosti) obrazu. Aby při přenosu nepestrých barev (černá, 22
všechny stupně šedé, bílá) vymizely veličiny U a V jsou vytvářeny jako rozdílové signály. Hodnoty jsou získané z rozdílu intenzity jasové složky a intenzity barevné složky červené (Red) a modré (Blue) barvy podle rovnic 3.13 U = r Y, V = b Y. (3.13) Informace o intenzitě třetí zelené (Green) barvy se přenášet nemusí. Její hodnota se dopočítává z rovnice 3.12. Rozsah jasové složky Y je v rozmezí 0 až 1. Barvonosná složka U nabývá hodnot v intervalu -0,436 až 0,436 složka V je v rozmezí -0,615 až 0,615. 3.4.1 Převodní vztahy Pro převod RGB soustavy na YUV se používá maticový zápis[4], kde r, g, b jsou intenzity základních složek RGB modelu. K převodu je nutné, aby nabývaly normované hodnoty, tj. od 0 po 1. Y U V = 0, 299 0, 587 0, 114 r 0, 14713 0, 28886 0, 436 g 0, 615 0, 51499 0, 10001 b, (3.14) Pro převod mezi RGB a YUV souřadnicemi se nabízí druhá možnost, která využívá celočíselné aritmetiky. Hlavní výhoda této aproximace je urychlení početních operací, protože celočíselné operace probíhají na hardwaru mnohem rychleji než operace s plovoucí desetinnou čárkou. Nevýhodou je vznik zkreslení daného počtem bitů na hodnotu. Při 8- bitovou hodnotě lze použít transformaci: Y U V = 66 129 25 r 38 74 112 g 112 94 18 b, (3.15) Y = (Y + 128) >> 8, U = (U + 128) >> 8, V = (V + 128) >> 8, Y + = 16, U + = 128, V + = 128. (3.16) (3.17) Transformace nevyužívá plného rozsahu 8-bitových čísel, který je od 0 do 255. Všechny složky signálu Y, U a V nabývají hodnoty v rozsahu od 16 do 240. Využívá se pro aplikace, kde je důležitější rychlost převodu, než samotná přesnost. Existují i transformace 23
pro 16-bitovou celočíselnou přesnost. Zpětný převod se také provádí maticovým zápisem[4] a platí stejné zásady. Výhody maticového zápisu je rychlost provedení na signálových procesorech. r g b = 1 0 1, 13983 Y 1 0, 39465 0, 58060 U 1 2, 03211 0 V, (3.18) 3.5 HSV, HSB Předchozí modely se používají v technické praxi, nejsou pro člověka moc intuitivní a práce s nimi je obtížná. Model HSV je orientován uživatelsky a vytvořil jej v roce 1978 Alvy Ray Smith. Práce s modelem lépe odpovídá popisu barev, na který je člověk zvyklý. Model HSV má základní tři parametry: barevný tón (Hue), sytost (Saturation) a jas (Value). Používá se i druhé označení modelu HSB, kde třetí parametr je světlost (Brightness). Barevným tónem určujeme převládající spektrální barvu, sytostí ovlivňujeme příměsi jiných barev a jasem množství bílé barvy. Barvy HSV modelu jsou reprezentovány pravidelným šestibokým jehlanem obr. 3.5. Vrchol jehlanu se nachází v počátku a osa jehlanu je shodná se svislou osou, která zároveň znázorňuje změny úrovně jasu. Sytost, která je umístěná na vodorovné ose i jas se mění v intervalu 0 až 1. Na obvodu podstavy se nachází čisté barvy. Barevný tón je definován jako velikost úhlu, která se měří od osy S proti směru hodinových ručiček - barevný tón může nabývat hodnot 0-360. HSV model má ovšem bohužel dva nedostatky. Přechod mezi černou a bílou barvou není plynulý a pohyb barevného tónu se neodehrává po kružnici, ale po šestiúhelníku, proto není změna barevného tónu plynulá. 3.5.1 Převodní vztahy Při převodu z RGB do HSV musí být hodnoty barevných složek reálná čísla v rozmezí 0 až 1. Hodnota max v rovnici představuje nejvyšší hodnotu z RGB veličin, hodnota min nejnižší.[2] nedefinován, g b 60 + max min 0, h = 60 g b + max min 360, 60 b r + max min 120, 60 r g + max min 240, pro max = min pro max = r a g b pro max = r a g < b pro max = g pro max = b, (3.19) 24
Obr. 3.5: Šestiboký jehlan reprezentující barvy HSV model 0, pro max = 0 s = max min max, (3.20) = 1 min, pro max 0 max v = max, (3.21) Pro převod z HSV modelu do RGB lze použít tyto vztahy.[2] h i = h 60 modulo 6, (3.22) f = h 60 h i, (3.23) p = v (1 s), q = v (1 f s), t = v [1 (1 f) s], (3.24) (v, t, p), pro h i = 0 (q, v, p), pro h i = 1 (p, v, t), pro h i = 2 (r, g, b) =, (3.25) (p, q, v), pro h i = 3 (t, p, v), pro h i = 4 (v, p, q), pro h i = 5 3.6 HSL Nedostatky modelu HSV odstraňuje model HSL. Tento model zavedla firma Tektronix a je velice podobný modelu HSV. Tvar modelu má více odpovídat intuitivní práci s 25
barvami. Parametry modelu barevný tón (Hue), sytost (Saturation) a světlost (Lightness) jsou obdobné parametrům modelu HSV. Modely se hlavně od sebe liší tvarem modelu reprezentující barvy obr. 3.6. Obr. 3.6: Dvojitý kužel reprezentující barvy HLS model Tvar modelu odpovídá skutečnosti, že schopnost rozlišování barevných odstínů skutečně klesá se ztmavováním a zesvětlováním základní čisté barvy. Zvyšování a snižování světlosti barvy skutečně spočívá v přidávání světlého nebo tmavého pigmentu. Model HLS i HSV, na rozdíl od předchozích modelů, umožňuje měnit jeden parametr barvy, zatímco ostatní dva zůstanou zachovány, Tato možnost je důležitá pro počítačové grafiky, tiskaře i kartografy. 3.6.1 Převodní vztahy Při převodu z RGB do HSL musí být hodnoty barevných složek reálná čísla v rozmezí 0 až 1. Stejně jako u modelu HSV hodnota max v rovnici představuje nejvyšší hodnotu z RGB veličin, hodnota min nejnižší. Výpočet barevného tónu je shodný, ale rovnice sytosti a jasu jsou jiné.[2] nedefinován, g b 60 + max min 0, h = 60 g b + max min 360, 60 b r + max min 120, 60 r g + max min 240, pro max = min pro max = r a g b pro max = r a g < b pro max = g pro max = b, (3.26) l = 1 (max min), (3.27) 2 26
s = 0, pro l = 0 nebo max = min max min = max min max+min, pro 0 < l 1 2l 2 max min = max min, pro l > 1 2 (max+min) 2 2l 2, (3.28) Při převodu zpět do RGB modelu můžou nastat dvě situace. V prvním případě je hodnota sytosti barvy rovna nule, pak je výsledná barva bezbarvá (černá, stupně šedi a bílá) a převod se řídí vztahem[2] (r, g, b) = (l, l, l), (3.29) V druhém případě se nejdříve vypočtou pomocné koeficienty l (1 + s), pro l < 1 2 q =, (3.30) l + s (l s), pro l 1 2 p = 2 l q, h k = h 360, (3.31) (3.32) t R = h k + 1 3, t G = h k, t B = h k 1 3. (3.33) Nakonec se pro každou barevnou složku postupuje stejně jak je uvedeno pro výpočet červené. Jen místo koeficientu t R se dosadí t G pro zelenou barvu a t B pro modrou barvu.[2] t C = t C, pro 0 t C 1 t C = t C + 1, pro t C < 0 t C = t C 1, pro t C > 1, (3.34) p + [(q p) 6 t C ], pro t C < 1 6 q, pro 1 r = t 6 C < 1 2 p + [(q p) 6 ( 2 t 3 C)], pro 1 t 2 C < 2 3 p, jinak, (3.35) 27
3.7 Převody mezi barevnými modely Při převádění barev z jednoho barevného modelu do druhému dochází k nepřesnostem. Je to způsobeno určitou přesnosti převodních koeficientu, zaokrouhlováním a rozsahem barev modelů. I když jsou tyto odchylky většinou lidskému oku nepostřehnutelné, měl by se počet převodních operací vždy minimalizovat. Grafické programy se snaží pracovat během celé doby s jedním barevným modelem a až při ukládání obrázku se převádí do jiného barevného modelu vhodného pro ukládání obrazu. Další vliv na převádění má použitá výpočetní architektura. Většina zde uvedených převodních transformací pracuje s aritmetikou v plovoucí desetinné čárce. Systémy založené na celočíselné aritmetice jsou méně náročné na hardwarovou realizace a jejich rychlost vyšší. V těchto případech se využívají transformační vztahy založené pouze na celočíselné aritmetice. Pro některé barevné systémy byly vyvinuty speciální rovnice, například RGB Y UV, u jiných stačí mírné úpravy. Nevýhodou tohoto pojetí je její nepřesnost při malém počtu bitů na uchování barvy. Většina dnešních počítačových formátu používá pro ukládání barvy celočíselného pojetí, např. 24-bitové, 32-bitové. Přesnější není ani potřeba, protože dnešní zobrazovací systémy ani nejsou schopné zobrazit tak velké barevné spektrum. Opakem je například digitální fotografie, kde se klade důraz na věrné zobrazení. V takových případech se běžně používají i 48-bitové formáty. 28
4 PROGRAMOVÉ ŘEŠENÍ Úkolem bylo vytvořit aplikaci s grafickým uživatelským rozhraním, která bude umožňovat vzájemné transformace mezi výše popsanými barevnými modely. Představa rozhraní byla taková, že si uživatel bude moci nejdříve zvolit vstupní barevný model. Po zadání vstupních hodnot a spuštění převodu se barevný model rovnou převede do všech zbývajících souřadnic. To umožní snadné pozorování rozdílu mezi jednotlivými modely. Současně by se i vykreslila převáděná barva. Dále by zde měla být možnost zobrazení barvy v chromatické diagramu Yxy i s vypočtenými hodnotami tristumulu. Další funkcí programu má být míchání barev. Na výběr budou dvě možnosti - aditivní a subtraktivní míchání barev. Míchají se dvě barvy a každá může být zadána v jiné barevné souřadnici. Po smíchání na výstupu získáme výslednou barvu u níž můžeme také měnit barevný model. Samozřejmě bude i k dispozici náhled barvy v chromatickém diagramu. 4.1 Programovací jazyk Nároky na programové prostředí jsou minimální. Program pro svůj běh si vystačí s běžně dostupnými knihovnami, nepotřebuje žádné zvláštní prostředky. Jenom pro převodní transformace mezi modely RGB a CIE 1931 bude zapotřebí matematickou knihovnu pro realizaci umocnění s reálným mocnitelem. Tento požadavek umožňuje splnit většina dnešních programovacích jazyků. Od těch nízkoúrovňových C, C++, až po jazyky vyšší úrovně C#, Java, Python. V tomto směru nebyly kladeny žádné speciální požadavky a volba byla čistě jenom na mě. Zkušenosti mám s většinou jmenovaných. Každý jazyk má své výhodné i nevýhodné stránky, které jsou dané jejich vývojem a určením. Konečná volba padla na jazyk C++, který umožňuje vyšší míru abstrakce programování než samotné C a také s ním mám největší zkušenosti. Využívá plné síly nízkoúrovňového přístupu k prostředkům hardwaru. Vývoj aplikací v jazycích Java, Python, které využívají velkou míru abstrakce je sice většinou rychlejší, programátor má méňě práce, protože část úkolu za něj provádí tzv. virtual machines, ale samotná aplikace běží pomaleji. 4.2 Grafická knihovna Aplikace bude komunikovat s uživatelem pomocí běžného grafického uživatelského prostředí. Prostředky pro její realizaci nám poskytují mnohé grafické knihovny pro tvorbu GUI. Tyto knihovny můžeme dělit do více kategorií podle různých vlastností, například: multiplatformnost 29
otevřenost kódu licenční podmínky poskytované prostředky jednoduchost návrhu a v neposlední řadě také podle poskytované dokumentace. Protože nedostatečná dokumentace dokáže velmi zpomalit a znepříjemnit vývoj aplikace i když samotná grafická knihovna je na dobré úrovni. Zde byl daný pouze jediný požadavek, aby aplikace jela v systému Microsoft Windows, který má prioritní zastoupení mezi operačními systémy. Výběr knihoven je široký, často využívané jsou: Win32api Gtk+ Qt wxwidgets Swing, SWT (používá Java) Jsem zastáncem multiplatformních aplikací, proto jsem volil mezi grafickými knihovnami, které spadají do této kategorie a navíc poskytují kvalitní dokumentaci a prostředky pro návrh. Jako nejlepší volba pro tvorbu GUI se mi jevila grafická knihovna Qt4. Nejznámější aplikace využívající tuto knihovnu jsou Opera, Skype, KDE. Program bude vytvářen v jazyku C++ za použití grafické knihovny Qt4. 30
5 STRUKTŮRA PROGRAMU Jazyk C++ s grafickou knihovnou Qt4 umožňují objektový návrh, který byl využit při tvorbě programu. Po prozkoumání požadavku na aplikaci a možností programovacích prostředku jsem zvolil následující struktůru. Hlavní okno Rozhraní pro transformaci barev Rozhraní pro míchání barev Knihovna implementující transformační a míchací funkce Okno s Yxy diagramem Každá struktura se bude realizovat objektem v jazyku C++. 5.1 Hlavní okno Ve zdrojovém kódu je název třídy MainWindow, zdrojové soubory jsou: mainwindow.h mainwindow.cpp Hlavní úkolem třídy je vytvoření celého okna s nabídkovým menu, oznamovacím panelem a prvotní inicializace. Nabídkové menu bude umožňovat přepínání mezi funkcí míchání barev a transformace barevných souřadnic. Dále v nabídce help je možnost získat informace o programu. Při přepínání vytvoří požadovaný objekt reprezentující zvolenou funkci programu a vloží její grafické rozhraní do vykreslované části hlavního okna. Předchozí instance bude zrušena. 5.2 Rozhraní pro transformaci barev Ve zdrojovém kódu je název třídy ConversionWidget, zdrojové soubory jsou: conversionwidget.h conversionwidget.cpp 31
Třída má za úkol vytvořit celé uživatelské rozhraní, potřebné pro převod mezi barevnými soustavami. Okno je rozděleno na dvě částí - vstupní a výstupní hodnoty. V první části si uživatel bude moci vybrat vstupní barevný model a vložit vstupní hodnoty. Při vkládání hodnot se bude hlídat jejich správnost. Tedy jestli se jedná o číslo a je v požadovaném rozsahu. Toto opatření zabrání možnosti chyby při transformaci a možnému pádu aplikace, protože dokud nejsou zadány správně vstupní hodnoty není převod umožněn. V druhé části se po transformaci zobrazí výstupní hodnoty všech barevných modelů s určitou přesností. Tyto hodnoty není možné nijak editovat. 5.3 Rozhraní pro míchání barev Ve zdrojovém kódu je název třídy BlendingWidget, zdrojové soubory jsou: blendingwidget.h blendingwidget.cpp Třída má za úkol vytvořit celé uživatelské rozhraní, pro druhou funkci aplikace. Rozvržení se nijak neliší od předešlého rohraní. Opět je okno rozdělené na dvě částí - vstupní a výstupní hodnoty. Ve vstupní části uživatel zadává dvě barvy. Každou může vložit v jiném barevném modelu. I zde se provádí kontrola vstupních hodnot. Nakonec je volba dvou mechanismu míchání barev - aditivní a subtraktivní. Ve výstupní části se po operací smícháni barev zobrazí hodnoty výsledné barvy. Lze si volit výstupní barevný model jak před tak i po smíchání barev. Dále se vyobrazí náhled na takto smíchanou barvu. 5.4 Knihovna implementující transformační a míchací funkce Knihovna je implementována modulárně, tedy funkce nejsou zapouzdřeny v jedné třídě. Zdrojové soubory jsou: libconversionblending.h libconversionblending.cpp V knihovně jsou implementovány všechny transformační vztahy popsané v teoretické části o barevných modelech. Každému vztahu odpovídá jedna funkce. Parametry funkce 32
jsou hodnoty barevného modelu ze kterého se převádí tak i hodnoty modelu výstupního. Funkce lze tedy jednoduše využít i v jiných aplikacích. Knihovna dále obsahuje funkce vypočítávající výslednou barvu při aditivním a subtraktivním míchání, kterou jsou navrženy s možností dalšího nasazení. Funkce využívají pro svou činnost třídy ConversionWidget a BlendingWidget. 5.5 Okno s Yxy diagramem Ve zdrojovém kódu je název třídy DisplayXY, zdrojové soubory jsou: displayxy.h displayxy.cpp Je samostatná třída, která má na starost zobrazování xy diagramu a hodnoty souřadnic barevných modelů XYZ a z něho odvezeného Yxy v nezávislém okně. V digramu je vyznačen bod barvy odpovídající chromatičnosti barvy modelu Yxy. Okno diagramu kominukuje s hlavním oknem a při změně barvy ve funkci míchání nebo transformace barvy se tato změna projeví současně i v diagramu. Pro zobrazení diagramu využívá aplikace externí obrázek, který musí být v adresáři spouštěného souboru. Pozice zvýrazněného bodu se vypočítává na základě velikosti obrázku v pixelech a rozsahu os x a y. Z těchto důvodů nemůže být obrázek zaměňován, jinak by došlo k nepřesnostem při zobrazení. 5.6 Knihovna implementující kontrolu vstupních hodnot Knihovna je implementována modulárně, tedy funkce nejsou zapouzdřeny v jedné třídě. Zdrojové soubory jsou: libcheckinputvalue.h libcheckinputvalue.cpp Během vývoje aplikace se ukázalo jako výhodné oddělit funkce pro kontrolu vstupních hodnot do samostatného modulu. Funkce využívá jak třída ConversionWidget tak i BlendingWidget. 33
5.7 Použité prvky s Qt4 K implementaci grafického rozhraní byly použity základní stavební prvky s knihovny Qt4. Transformační a míchací rovnice využívají pouze prostředky jazyka C++ a matematické knihovny math.lib a jsou nezávislé na grafickém rozhraní. Výčet prvků a jejích požití je: QLineEdit Slouží pro vkládání krátkých textových a číselných vstupů. Je použit pro vkládání vstupních hodnot barev a zobrazení výsledných hodnot. QComboBox Umožňuje výběr volby předem definovaných hodnot. Jsou využívány pro výběr barevných modelu a způsobu míchání. QLabel Slouží pro zobrazení krátších popisků nebo obrázků. V aplikaci popisuje složky a zobrazuje diagram xy. QPushButton Standardní tlačítko pro spouštění akcí. Dále jsou pak využívány komponenty pro rozmístění prvků v aplikaci. 5.8 Programová statistika hlavičkových souborů: 6 zdrojových souborů: 7 celkem řádku: 3718 velikost: 83,5 kb 34
6 OVLÁDÁNÍ APLIKACE Grafické rozhraní je velmi jednoduché a přehledné, aby umožňovalo snadnou ovladatelnost. Po spuštění programu nám automaticky naběhne hlavní aplikace s funkcí transformace barev. Náhled je na obr. 6.1 Obr. 6.1: Náhled aplikace po spuštění V hlavním menu máme na výběr mezi volbou Úloha, kde si volíme mezi převodem barevných modelu a Nápověda. Nejdříve si volíme vstupní barevný model. Na výběr máme ze souřadnic RGB, CMY, CMYK, YUV, HSV a HSL. Pak máme možnost si zvolit mezi rozsahem vstupních hodnot. Implicitně je volba nastavena na normované hodnoty. Tedy rozmezí 0; 1. Vyjímku tvoří modely HSV a HSL, kde je rozmezí hodnot pro barevný tón Hue vždy 0 ; 360. U modelu YUV je rozmezí hodnot pro složku u 0, 436; 0.436 a složku v 0, 615; 0.615. Omezení jsou dané vlastnostmi modelu. Model YUV má ještě jedno omezení a to pro rozmezí hodnot 0; 255 kde se používají pro přepočet transformační vztahy modifikované na celočíselnou aritmetiku, viz rov. 3.15. Hodnoty lze zadávat v intervalu 16; 240. V normovaném rozsahu se pracuje s desetinnými čísly, v ostatních pouze s celými čísly a proto jsou povoleny na vstupu pouze celá čísla. 35
Výsledky trasformace se zobrazí v dolní části. Máme i možnost zobrazení xy diagramu. Náhled aplikace po převodu i diagramem je na obr. 6.2 Obr. 6.2: Výsledky transformace s diagramem xy Druhou funkcí programu je míchání barev. Dostaneme se k ní, přes volbu úlohy v menu. Na počátku zadáváme dvě vstupní hodnoty s možností volby barevných modelů. Vstupní hodnoty se vkládají v normovaném tvaru a platí pro ně stejné podmínky jako pro transformaci barevných modelů. Posleze se volí typ míchání barev. Po smíchání se na výstupu zobrazí hodnoty smíchané barvy, kde si můžeme volit mezi jednotlivými barevnými souřadnicemi. Náhled výsledku po míchání barev i s diagramem je na obr. 6.3 36
Obr. 6.3: Výsledky míchání barev s diagramem xy 37
7 ZÁVĚR Ve své bakalářské práci jsem se zabýval základními barevnými souřadnicemi, se kterými se setkáváme v běžném životě, aniž si to uvědomujeme. Základem je porozumění pojmu barva. Všichni sice tento pojem běžně používáme, ale už málo lidí ví, jak vzniká, kdo je nositelem této informace atd. Touto problematikou se zabývám v první kapitole. V další kapitole popisuji dva základní principy míchání barev. První z nich je aditivní míchání, které pracuje se světlem. Typickým představitelem je tvoření barevného obrazu v monitorech a televizorech. Druhý princip je založen na barevném pigmentu a jeho schopnostem odrážet (pohlcovat) světelné spektrum. Setkáváme se s ním naprosto všude, protože veškerý materiál, který nás obklopuje, jej obsahuje. Nejvíce jsem se zaměřil na popis jednotlivých barevných modelů. Ve světě jich existuje celá řada, některé jsou chráněny i patenty. V práci se zabývám těmi nejdůležitějšími a nejrozšířenějšími. Mezi ně patří CIE 1931, RGB, CMY, YUV, HSV a HSL. Každý model má své určité zaměření. V rámci bakalářské práce jsem dále vytvořil počítačovou aplikaci pro míchání a transformaci barevných souřadnic. Hlavní jádro programu je napsané v jazyku C++ a k tvorbě grafického uživatelského rozhraní využívá grafickou knihovnu Qt4. Veškeré převodní vztahy popsané v teoretické části jsou implementovány ve vlastní knihovně libconversionblending, kterou je možné využívat i v jiných programech. Aplikace umožňuje zobrazit výslednou barvu v Yxy chromatickém diagramu. Popis struktury a ovládání programu je v kapitolách čtyři až šest. Samotná aplikace by se mohla rozšířit o propracovanou nápovědu, ve které by byly popsány jednotlivé barevné modely i jejich převodní vztahy. Poté by mohl program sloužit pro názorné studijní účely. Další možností rozšíření je vytvoření dávkového zpracování textových souborů. Nejzajímavější je však možnost prozkoumat problematiku samotného určování barvy z viditelného spektra světla a míchání dvou spekter. Porovnání barev získaných touto metodou a pomocí CCD snímačů. 38
LITERATURA [1] WIKIPEDIA - The Free Encyclopedia: CIE 1931 [online]. poslední aktualizace 20. 5. 2009 [cit. 2. 6. 2009]. Dostupné z URL: <http://en.wikipedia.org/wiki/cie 1931 color space>. [2] WIKIPEDIA - The Free Encyclopedia: HSL and HSV [online]. poslední aktualizace 23. 5. 2009 [cit. 2. 6. 2009]. Dostupné z URL: <http://en.wikipedia.org/wiki/hsl and HSV>. [3] WIKIPEDIA - The Free Encyclopedia: CMYK [online]. poslední aktualizace 18. 11. 2008 [cit. 2. 6. 2009]. Dostupné z URL: <http://cs.wikipedia.org/wiki/cmyk>. [4] WIKIPEDIA - The Free Encyclopedia: YUV [online]. poslední aktualizace 23. 5. 2009 [cit. 2. 6. 2009]. Dostupné z URL: <http://en.wikipedia.org/wiki/yuv>. [5] WIKIPEDIA - The Free Encyclopedia: RGB [online]. poslední aktualizace 1. 6. 2008 [cit. 2. 6. 2009]. Dostupné z URL: <http://cs.wikipedia.org/wiki/rgb>. [6] Easy RGB: Color math/formulas [online]. poslední aktualizace 1. 1. 2008 [cit. 2. 6. 2009]. Dostupné z URL: <http://www.easyrgb.com>. [7] PIHAN, R. Vše o světle - 5. Barevné modely [online]. fotografovani.cz poslední aktualizace 23. 2. 2007 [cit. 2. 6. 2009]. Dostupné z URL: <http://www.fotografovani.cz/art/fozak df/rom 1 05 colormodels.html>. [8] [9] [10] KRŠEK, P. Základy počitačové grafiky - Studijní opora Brno: VUT v Brně - Fakulta informačních technologií, 2005. 89 s. ŘÍČNÝ, V.; KRATOCHVÍL, T. Základy televizní techniky Brno: VUT v Brně - Fakulta informačních technologií, 2004. 178 s. VÍT, V. Televizní technika - přenosové barevné soustavy 1.vydání. Praha: BEN - technická litteratura, 1997. 39