Barvy a barevné modely

    Barva je jeden z klíčových pojmů všech oblastí počítačové grafiky. Z fyzikálního hlediska jde o vlnovou délku světla, které danou barevnou informaci zprostředkovává. V běžném životě jsme zvyklí vnímat barvy víceméně intuitivně. Konkrétní barvu většinou popisujeme pomocí nejbližší z běžných barev (červená, modrá, oranžová...), případně přidáme nějaké přídavné jméno (sytá, světlá, tmavá...). Pokud však chceme s barvami pracovat na počítači, musíme její hodnotu specifikovat poněkud exaktněji. Jak už to u počítače bývá, znamená to zadat číslo, resp. několik čísel. To, jak se budou tato čísla interpretovat na konkrétní barvu, popisuje tzv. barevný model.
    Nejjednodušším typem barevného modelu je model založený na kombinaci tří základních barev. Jako základní barva může být vybrána libovolná barva, ale pokud má model pokrývat co nejrozsáhlejší spektrum barev, je nutné je volit obezřetně. V současnosti se nejvíce používají dva takové modely. Jsou to modely RGB a CMY.
    Vytváření barev pomocí míchání tří základních barev je sice z technického hlediska velmi jednoduché, protože je přímo odvozeno ze stávajících technologií zobrazování, ale není příliš blízké lidskému intuitivnímu pohledu na barvy. Tento nedostatek překlenují barevné modely, které pracují s odstínem barvy, plus dalšími dvěma informacemi typu světlost, sytost apod. V této oblasti jsou nejznámější modely HSV a HLS.
    V praxi pak většinou grafické systémy umožňují uživateli nastavovat barvu v některém z těchto „intuitivních“ modelů a pro účely zpracování a zobrazování je převádějí na nějaký „technický“ model (v drtivé většině případů RGB).
 


Obrázek 1

Model RGB (Red Green Blue)

    V tomto barevném modelu se barva určuje pomocí zastoupení tří základních barev: červené, zelené a modré. Je odvozen ze způsobu, jakým obrazovka (ať už počítačová nebo televizní) zobrazuje barvy. Jeden bod na obrazovce je tvořen optickým splynutím tří různých bodů – červeného, zeleného a modrého. Poměr intenzit těchto bodů vytváří konkrétní barvu. Tento barevný model je aditivní, což znamená, že výsledná barva je tím světlejší, čím vyšší je intenzita jednotlivých složek. Plná intenzita všech tří barev pak dává bílou.
    Barva v modelu RGB je reprezentována třemi hodnotami z intervalu <0, 1> (vžil se termín barevný vektor). Dosti často se také používá ukládání v celočíselném rozsahu <0, 255>. Celý barevný rozsah je pak možné zobrazit pomocí jednotkové RGB krychle (obr 1a). Černá se nachází v bodě (0, 0, 0), bílá v bodě (1, 1, 1). Na jednotlivých osách leží tři základní barvy, ve zbylých vrcholech pak barvy doplňkové.
    V praxi je možné setkat se s označením RGBA. Tato zkratka označuje barevnou informaci RGB doplněnou o informaci o průhlednosti (složka A, tzv. alfa-kanál). Ta se používá při kombinaci více obrázků. Nejde tedy o rozšíření barevného modelu, ale o jeho doplnění o další informaci.

Model CMY (Cyan Magenta Yellow)

    Barevný model RGB vznikl především pro grafické displeje. Jeho vlastnosti odpovídají směšování barevných světel. Je však nevhodný pro zařízení pracující s barevnými pigmenty, tedy především pro tiskárny. Tento problém dal vzniknout modelu CMY, který je určitým komplementem k RGB modelu. Tři základní barvy: azurová, fialová a žlutá, jsou právě doplňkovými barvami RGB modelu. Model CMY je subtraktivní. To znamená, že se zvyšující se intenzitou složek výsledná barva tmavne. To odpovídá běžné zkušenosti s mícháním nátěrových barev.
    Vlastní číselná reprezentace barvy je obdobná, jako u modelu RGB. Podobně je také možné reprezentovat jej pomocí jednotkové krychle, změní se jen zabarvení jednotlivých vrcholů.
    Z čistě teoretického hlediska model CMY pokrývá celé barevné spektrum a měl by tiskárnám stačit. Z praktických důvodů se však rozšiřuje ještě o čtvrtou složku K (Black). Tato složka určuje intenzitu černé barvy ve výsledné barvě. Pro toto rozšíření mluví dva důvody: jednak je obtížné získat směsí základních barev skutečně černou, většinou výsledek vypadá jako nějaká tmavá hnědo-fialová odpudivá záležitost. Druhý důvod je, že černá je obvykle při tisku barvou nejčastější (např. text) a je zbytečné vyplýtvat na ni třikrát více inkoustu, než je nutné. Takto rozšířený barevný model se označuje CMYK.

Model HSV (Hue Saturation Value)

    Také tento model používá k určení barvy tří složek, Nejde však již o základní barvy. Tyto složky se nazývají odstín, sytost a jasnost. Odstín určuje převládající spektrální barvu (od červené po fialovou), sytost je dána množstvím příměsi ostatních barev. Množství bílého světla v barvě pak určuje jasnost. Tento přístup je lidskému chápání barev mnohem bližší. Člověk obvykle ví, jaký odstín hledá a poté ho upraví pomocí sytosti a jasu na požadovanou úroveň.
    K číselné reprezentaci modelu se opět používá třísložkový barevný vektor. Prostorovým zobrazení barevného rozsahu daného HSV modelem však již není krychle. HSV model se reprezentuje jako šestiboký jehlan, postavený „na špici“ (obr 1b). Vrchol jehlanu je tvořen černou barvou. Barvy spektra se nalézají na obvodu podstavy. Každý vrchol udává jednu základní, resp. hlavní doplňkovou barvu v pořadí: červená, žlutá, zelená, azurová, modrá, fialová. Ve středu podstavy se nachází bílá barva. Význam tří složek barevného modelu je následující. Odstín je dán úhlem v rozsahu <0°, 360°>. Ten určuje odklon od spojnice červená-bílá a tím i barvu ve spektru. Vzdálenost od osy jehlanu určuje sytost barvy (odstíny šedé leží na ose jehlanu – mají nulovou sytost). Konečně výška (vzdálenost od vrcholu) odpovídá jasnosti barvy.
    Model HSV je mnohem intuitivnější než technicky orientované modely, ale má některé drobné nedostatky. Např. z hlediska výpočtů by bylo mnohem vhodnější, kdyby se bod, probíhající barevné spektrum pohyboval po kružnici a ne po šestiúhelníku. Druhým nedostatkem je to, že největší „výběr“ barev máme při nejvyšší hodnotě jasu. To neodpovídá způsobu, jakým barvy vnímá lidské oko, které je nejcitlivější při středních hodnotách jasu.

Model HLS (Hue Lumination Saturation)

    Zmíněné nedostatky modelu HSV se snaží odstranit model HLS. Význam jednotlivých složek je velmi obdobný: odstín, světlost a sytost. Ve skutečnosti jde pouze o formální odlišení. Rozdílný je ovšem způsob mapování těchto hodnot na příslušnou barvu.
    Prostorovým zobrazením barevného modelu HLS jsou dva zrcadlově souměrné kužely, sdílející stejnou podstavu (obr 3). Barevné spektrum se nachází po obvodu společné podstavy. Sytost je dána vzdáleností od osy kuželů, světlost pak výškou, resp. vzdáleností od vrcholu spodního kužele (černá barva). Konkrétní barevný odstín ve spektru je opět určen úhlem. Filozofie modelu HLS je tedy stejná, jako u modelu HSV, ale s ohledem na výše zmíněné požadavky (výpočetně jednodušší kružnice a maximální rozsah pro střední hodnotu jasu).

Barevné modely pro televizi a video

    Poněkud méně často se na počítači můžeme setkat s barevnými modely používanými v oblasti televizní a video techniky. Objevují se především tam, kde se tato technika stýká s počítači, tj. televizní karty, video grabbery apod. Využívají jich také některé techniky ztrátové komprese obrazu a videa (JPEG, MPEG). Společnou vlastností těchto modelů je to, že oddělují jasovou složku informace od barevné. Lidské oko je totiž mnohem citlivější na změnu jasu, než na změnu barevného odstínu. V televizních video modelech se toho běžně využívá například tak, že jasové informace jsou přenášeny s vyšším rozlišením (větší počet bitů), než informace o barvě, nebo je jedna barva společná vždy pro dva sousedící body. Další výhodou oddělení jasu od barvy je to, že je snadné takový signál zobrazovat i na černobílé obrazovce.
    Typickým představitelem těchto modelů je model YUV, používaný normou PAL. Složka Y představuje jas a složky U a V slouží k záznamu barevného odstínu. Podobným modelem je model YCbCr, který je součástí normy SECAM a je rovněž využíván v kompresní metodě JPEG.

Převody mezi jednotlivými barevnými modely

    Vzájemný převod mezi modely RGB a CMY je triviální. Vzhledem k tomu, že jeden model je komplementem druhého lze barvu v modelu RGB převést na odpovídající barvu v modelu CMY následovně:

 
    Abychom mohli v programu používat model HSV nebo HLS, musíme zajisti převod na model RGB a zpět, protože model RGB bývá jediný, přímo podporovaný technickými i programovými prostředky. Tento převod však již nelze vyjádřit jednoduchým vzorcem, má spíše charakter algoritmu.