+--------------------------------------+ | Zpracování palety rastrových obrázků | +--------------------------------------+ Běžně používané formáty barevných obrázků mají dvě základní varianty. Buď je obrázek v barevném rozlišení True Color, nebo je doplněn o paletu, mluvíme potom o paletovaných obrázcích. V rozlišení True Color barvu nejčastěji chápeme jako vektor v třírozměrném prostoru RGB (viz např. [4]). Barva pixelu je potom určena třemi bajty (24 bitů). Každý z nich určuje intenzitu jedné ze tří barevných složek R - red, červená; G - green, zelená; B - blue, modrá. Intenzity jsou tedy v rozsahu 0 - 255 a celkem můžeme rozlišit 2^(8+8+8) barev, tedy zhruba 16 milionů. V paletovaných obrázcích nechápeme barvu jako vektor v prostoru RGB, ale jako index do palety, která je většinou součástí obrázku. Palety obsahují maximálně 256 barev ve tvaru RGB hodnot. Celý obrázek proto může obsahovat nejvíce 256 různých barev. Na reprezentaci barvy jednoho pixelu je potom zapotřebí jen jednoho bajtu (8 bitů). Někdy se počet barev dále omezuje a používají se formáty 4 bity na pixel (16 barev), 2 bity (4 barvy), nebo 1 bit na pixel (2 barvy). Někdy také paletované obrazy bývají označovány jako indexované. Velkou výhodou paletovaných obrázků jsou podstatně menší paměťové nároky a tím i rychlejší zpracování. V typické situaci jde o poměr 24:8 bitům. Tento poměr se týká hlavně nároků na paměť videokarty, kde nemůže být obraz komprimován. Při uložení v některém z komprimovaných formátů může být situace jiná, protože se používá různých formátů, a tím i různých komprimačních metod. Obrázky v rozlišení True Color se nejčastěji ukládají ve formátu JPEG, který používá stejnojmenné komprese, kdežto pro obrázky s paletou je typický formát GIF s kompresí LZW. Poznamenejme jen, že komprese JPEG je ztrátová. Ještě před nedávnem byl také patrný omezující vliv hardware, například dobře známý grafický adaptér VGA zobrazení v kvalitě True Color vůbec nepodporuje, protože v době jeho vzniku byly paměťové nároky i nutná přenosová rychlost a s nimi spojená cena nad možnostmi běžného zákazníka. Dnes jsou již běžné grafické karty s pamětí 2MB, sběrnicí PCI nebo VLB a tyto důvody tedy pomíjejí, ale podpora paletovaných obrázků hardwarem videokarty většinou zůstává kvůli kompatibilitě zachována. V současné době se paletovaným obrázkům znovu věnuje velká pozornost v souvislosti s Internetem. WWW stránky jsou doplněny množstvím obrázků, a to nejen v pravém smyslu slova, ale i v podobě různých ikon nebo pozadí. Snížením hloubky barevného rozlišení, a tím i velikosti souboru s obrázkem, dosáhneme snížení množství přenášených dat a tím i urychlení přenosu. Pokud vytváříme nový obrázek, ať je to již z barevného scanneru, kamery, digitálního fotoaparátu nebo specializovaného programu, je však téměř vždy v rozlišení True Color. Otázkou tedy je, zda lze vůbec dodatečně snížit barevné rozlišení tak, aby byl výsledný indexovaný obraz na první pohled nerozeznatelný od původního obrazu. Je známo, že lidské oko je schopné rozlišit přibližně 64 odstínů jedné barvy, odstínů zelené o něco více. V rozlišení True Color je tedy 256 stupňů pro každou z barevných složek do jisté míry zbytečný luxus. Snížením počtu odstínů na 32 pro červenou a modrou a 64 odstínů pro zelenou složku se tedy nedopustíme příliš velké chyby. Toto snížení je vhodné zejména proto, že na reprezentaci barvy jednoho pixelu je potom zapotřebí 5 + 5 + 6 = 16 bitů, tedy 2 bajty. Toho si všimli i výrobci hardware a zavedli barevné rozlišení High Color, často používané operačními systémy Windows. Obrázky v High Color rozlišení jsou však stále příliš velké. Naším cílem je snížit počet barev na 256 a použít paletu. Znovu se tedy nabízí otázka, zda toto snížení barevné hloubky není příliš drastické. Lidské oko naštěstí (či naneštěstí) není dokonalé a z několika různobarevných paprsků, které dopadají na sítnici oka pod přibližně shodným úhlem, získává vjem jediné barvy, která je dána aditivním složením původních barev. Přesvědčivým příkladem této schopnosti oka jsou reklamní billboardy, které ze vzdálenosti několika metrů budí dojem dokonalých barev, avšak při přiblížení na vzdálenost několika decimetrů vidíme, že celý obraz je tvořen různobarevnými tečkami. Dalšími příklady mohou být celé umělecké směry, impresionismus a pointilismus, kde se v malířství používá technika nanášení čistých tónů; dojem různých odstínů vzniká až na sítnici oka. Jiným příkladem může být barevná obrazovka, ať již televizní nebo monitor, kde se každý pixel skládá ze tří základních složek, R, G a B, které se na obrazovku promítají těsně vedle sebe, ale lidskému oku se jeví jako jeden barevný bod. Tohoto jevu využívají grafické algoritmy na vyšší úrovni, na úrovni celých pixelů, kde se nekombinují barvy jednotlivých složek jediného pixelu jako v obrazovce, ale barvy několika sobě blízkých pixelů tak, aby v místech přechodů barevných odstínů nebo dokonce různých barev střídáním několika různobarevných pixelů vytvořily dojem plynulého přechodu barvy. Takto je možno vytvořit nejen přechod, ale i simulovat barvu, která v paletě obrázku vůbec není. Aby různobarevné body splynuly v oku do jediné barvy, musí být úhlový rozdíl směru paprsků malý, nebo se jejich barva nesmí příliš lišit. V barevné obrazovce mají jednotlivé barevné složky uvnitř pixelu různé barvy, ale jsou dostatečně blízko u sebe a do oka ve standardní pozorovací vzdálenosti dopadají paprsky pod dostatečně blízkým úhlem. V případě rastrové grafiky však jde o vzdálenosti samotných pixelů. Ty jsou již větší a je proto nutno zajistit buď barevnou podobnost, nebo zvětšit vzdálenost pozorovatele od monitoru. Druhé řešení v praxi není příliš použitelné a je proto nutno vhodně navrhnout paletu barev, aby bylo možno střídat podobné odstíny jedné barvy. Tato metoda důmyslného střídání několika málo barev s cílem vyvolat dojem velké barevné škály se nazývá dithering Dithering se používá nejen pro obrázky s paletou 256 barev, ale i pro šestnáctibarevné obrázky. Používá se i dvoubarevné varianty, typickým představitelem jsou obrázky v novinách, kde se střídáním černé a bílé barvy vytváří dojem odstínů šedi. Ukazuje se tedy, že převod obrazu z rozlišení True Color na indexovaný osmi nebo méně bitový obraz je možný, ale jde o velmi náročný úkol. Proto také existuje celá řada metod, lišících se paměťovými a časovými nároky, a je velmi obtížné nalézt tu nejlepší z nich, neboť výsledky závisí i na charakteru zpracovávaných obrázků. Pro úplnost dodejme, že tento převod někdy bývá označován jako kvantování barev. +-----------------------+ | Proces převodu obrazu | +-----------------------+ Jak již bylo uvedeno, existuje celá řada postupů pro převod obrázků z rozlišení True Color na paletovaný obraz. Ukazuje se však, že většina postupů obsahuje několik základních kroků. Pro každý krok se používá skupina metod a většinou lze kombinovat různé metody v různých fázích tvorby obrazu. Načtení obrazu ve vhodném grafickém formátu Předzpracování obrazu (pre-processing) Vytvoření palety barev (color quantization) Vytváření paletovaného obrázku Uložení obrazu ve vhodném grafickém formátu ..-------------.. Literatura Tento članek je i s ukázkami kvality jednotlivých metod přístupný na adrese http://cs.felk.cvut.cz/xdachs/Dither/ výheň