+--------------------------------------+
| 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ň