1. Formáty grafických dat Studijní cíl Tento blok kurzu je věnován problematice grafických formátů, kompresi grafických dat a odlišností u rastrových a vektorových souborů.
Doba nutná k nastudování 2 hodiny
Pod pojmem datového formátu rozumíme způsob uložení dat na paměťovém médiu. Důvodem standardizace datových formátů byla a stále je nutnost přenosu souborů dat mezi různými aplikacemi a mezi různými platformami.
1.1 Typy formátů grafických souborů •
rastrové (BMP, GIF, JPG, PCX, PNG, RAW, TGA, TIFF)
•
vektorové (AI, CDR, DXF, SVG)
•
metafile soubory (RTF, EPS, PDF, WMF, PICT)
•
hypertextové (HTML, MHTML, XHTML, XML)
•
3D grafické (3DS, BLEND, MAX, MA, MB, OBJ, VRML, X)
•
animační (FLI, FLC, FLV, MP4)
•
multimediální (AVI, FLA, MOV, MPEG, SWF)
1.2 Komprese grafických dat Komprese je proces, který redukuje fyzickou velikost datového souboru. Přestože při kompresi a dekompresi dochází při určitých metodách k jisté ztrátě dat, nesmí dojít k viditelné deformaci grafických objektů v souboru. Kompresní algoritmy se používají na všechny typy grafických dat, ale jsou podle toho odlišné. Příklady některých typů kompresí.
1
RLE kódování (Run-Length Encoding) Proudového kódování RLE využívá většina souborů s rastrovým formátem (TIFF, BMP, PCX). Tato komprese pracuje na principu opakujících se řetězců dat. Tento řetězec se pak do souboru zapíše jako dvoubytová hodnota, kdy první byte je počet opakování a druhý vlastní hodnota znaku. Například řetězec AAAAAAAAA se zapíše jako 9A. Toto číslo 9A se nazývá RLE paket. Existuje několik variant proudového kódování. Výhodou této bezztrátové metody je jednoduchost a rychlost, nevýhodou pak nižší kompresní poměry ve srovnání s jinými metodami. LZW (Lempel-Ziv-Welchova) komprese Tato komprese je založena na slovníkovém kódování. Algoritmus pracuje tak, že za chodu kompresního programu buduje datový slovník tzv. frází řetězců dat nekomprimovaného souboru. Pokud se určitý podřetězec ve slovníku nevyskytuje, zapíše nová kódová fráze do slovníku a potom je tato fráze zapsána do komprimovaného výstupního souboru. Pokud se daný podřetězec ve slovníku již vyskytuje, zapíše se jeho fráze do výstupu. Komprese je dosaženo tehdy, pokud má fráze menší velikost, než původní podřetězec. Dekódování je potom opačný proces. Tato metoda je bezztrátová. Vyskytuje se běžně v archivačních programech Pkzip, Arj, Lha. Je použitelná pro všechny typy grafických formátů. JPEG komprese JPEG je zkratka názvu komise, která vypracovala komprimační standard pro kompresi obrázků s 24 bitovými daty (barevné fotografie se spojitými tóny). JPEG je ztrátová metoda, která komprimuje předlohy se spojitými tóny rychle, spolehlivě a účinně. Kompresní poměr může dosahovat vysokých hodnot, běžně 10, a uživatel ho může ovlivnit zadáním parametru nízké, střední nebo vysoké kvality zakomprimované grafiky. Většina programů pro zpracování grafiky nabízí možnost komprese grafických dat pomocí této metody. Princip komprese JPEG lze popsat následujícími kroky: •
transformace předlohy do optimálního barevného prostoru (obvykle do YUV)
•
podvzorkování barevných složek U,V průměrováním skupin pixelů 2 x 2 (50 % úspora v datech)
2
•
použití DCT (Diskrete Cosine Transformation) na informační bloky 8 x 8 pixelů. Tak získáme frekvenční koeficiety bloků. Data s vysokou frekvencí (rychlé změny v obraze) se dělením kvantizačními koeficienty transformují po zaokrouhlení na nulové hodnoty (kolik jich bude nulových, o tom rozhoduje parametr kvality komprese, který zadává uživatel)
•
kódování výsledných koeficientů pomocí CCITT komprese
•
po přenosu se potom provádí zpětná diskrétní kosinová transformace z frekvenční oblasti zpět do prostorové oblasti
CCITT komprese je neztrátová kompresní metoda používaná původně pro přenos faksimilií černobílých předloh. Dnes je nejvíc používán typ této komprese nazývaný Group 4. Princip kódování spočívá ve vytváření proudů bílých a černých pixelů o různé délce, kterým se na výstupu kodéru přidělí kódová slova (binární) délky příslušného proudu. Kódová slova jsou předdefinována v tabulce. Protože výstupní kódová slova jsou kratší než vstupní proudy, dochází ke kompresi.
1.3 Rastrové soubory Tyto soubory, které obsahují rastrový popis objektů, jsou obvykle organizovány do oblastí hlavičky, vlastních dat, paty a palety barev. Pata a paleta barev mohou chybět. Hlavička se nachází na začátku souboru a obsahuje v pevných polích informace o souboru (identifikátor souboru, počet bitů na pixel, typ komprese, začátek dat, apod.). Za hlavičkou rastrového souboru může být umístěna paleta barev. Problémem je, pokud výstupní zařízení neumožní zobrazit všechny zobrazitelné barvy (obvykle 16,7 miliónů), což jsou v dnešní době některá mobilní zařízení. Potom musíme celý barevný rozsah konvertovat na počet barev zobrazitelných na výstupním zařízení. Například pokud grafický adaptér umožňuje zobrazit pouze 256 barev, musí se každá možná barva z rozsahu 16,7 miliónu převést na nejbližší z 256 barev zobrazitených na monitoru. Souboru těchto 256 barev se říká paleta. Je to v podstatě mapa barev, tedy tabulka, ve které se na jednotlivé barvy odkazujeme číslem přiděleným této barvě. Tok dat je potom posloupnost těchto čísel. Například na 16-bitovou paletu se odkazujeme čísly 0-15. A barevná paleta uložená ve formátu souboru je vlastně přiřazení hodnot barevných složek R, G, B v rozmezí 0255 těmto číslům.
3
0 1 2 . . 15
0,0,0 255,255,255 255,0,0
255,128,128
V případě, že jsou v datech souboru zapsány pixely v barevném rozsahu truecolor (24bitů na barevný pixel), je informace o paletě zbytečná a data následují přímo za hlavičkou. Vlastní rastrová data jsou uložena za hlavičkou nebo paletou barev. Mohou být v souboru organizována různými způsoby. Nejpoužívanější jsou: •
vzorkovací řádky
•
planární organizace.
Jestliže si představíme, že předloha je rozložena na řádky a tyto na jednotlivé pixely, potom lze podobně organizovat v souboru data po řádcích. Když známe počet pixelů v řádku a velikost pixelu (v bytech), můžeme spočítat, kde v souboru začíná každý následující řádek. To umožní jakoukoliv manipulaci se souborem. Komplikace nastávají v případech formátů, kde se požaduje nějaké zarovnávání řádků. Planární data jsou kromě řádků ještě organizována do ploch. Je to v případech, kdy toto uspořádání koresponduje s nějakým konkrétním grafický adaptérem. Například mohou být data barevné předlohy uspořádána do tří ploch odpovídajících barevným složkám R, G, B.
1.4 Vektorové soubory Vektorové soubory obsahují matematické popisy (pomocí analytické geometrie) prvků předlohy. Pojem vektor je odvozen z parametrického popisu křivek, kdy každý bod je definován vektorem, tedy směrem a délkou. Tyto formáty úzce souvisí s aplikacemi CAD (Computer Aided Design) grafickými editory a tabulkovými procesory. Jsou to například AutoCAD DXF, Corel CDR, Excel XLS a obecný CGM (Computer Graphics Metafile).
4
Organizace vektorového souboru je podobná jako u rastrového. Obsahuje hlavičku, paletu (nemusí být) a vlastní data. Zásadní rozdíl je v interpretaci obrazových dat. Data vektorového souboru jsou množinou popisů základních prvků (úsečka, kružnice, atd.). Např. následující popis CIRCLE,40,100,100,BLUE; LINE,200,50,136,227,BLACK; znamená popis kružnice a úsečky s parametry umístění, velikosti a barvy. Tyto údaje jsou samozřejmě v souboru zapsány v ASCII kódu. V oblasti prepressu (přípravy materiálů, zejména grafiky do tisku) obsahují vektorový popis dat postscriptové PS, PRN, EPS soubory (nebo PDF soubory), i když obsahují také rastrová data, takže patří spíš mezi metasoubory.
1.5 Metafile soubory Tyto soubory obsahují jak vektorové tak rastrové specifikace dat. Obvykle se jedná o vektorový formát doplněný o možnost ukládat rastrová data. Většina typů metasouborů se od sebe tak liší, že je zbytečné se pokoušet o nějaký obecný hierarchický popis. Nejznámějším metasouborem je v našem oboru EPS formát (Encapsulated PostScript). Další jsou RTF (Rich Text Format), WMF (Microsoft Windows Metafile), Macintosh PICT a další.
1.6 Popis některých grafických formátů Windows Bitmap formát (BMP) Formát BMP je formát používaný především ve Windows. Na začátku je hlavička o velikosti 54 bajtů, ve které jsou informace o velikosti souboru, rozměrech obrázku, počátku dat a další informace. Potom v případě použití barevné palety následuje informace o použité paletě a za ní už následují data o jednotlivých bodech obrázku. Pokud se používá 24 bitových barev, potom chybí informace o paletě a po 54 bajtech následují data ve formátu osmibitových slov v pořadí B, G, R pro každý barevný bod. Tento formát je z důvodu jednoduchosti velmi vhodný pro programování. Formát GIF (Graphic Interchange Format) Tento formát slouží k ukládání více rastrových obrázků v jednom souboru a je určen především pro výměnu dat mezi programy a platformami. Obvyklý je však jeden obrázek v jednom souboru. Formát se používá pro import grafiky do HTML dokumentů.
5
Formát GIF je proudově orientován, skládá se ze sérií různých kategorií datových bloků. Například obrazová data jsou ukládána v bloku typu Image Data, poznámky jsou ukládány v bloku Special Purpose atd. Formát GIF je schopen uchovávat jednobitová až osmibitová data v barevném prostoru RGB. Paleta barev je 16 nebo 256 bitová. Data jsou vždy komprimována metodou LZW. Vlastní uspořádání souboru může být následující: •
hlavička
•
popisovač logické obrazovky
•
globální tabulka barev
•
obrazová data
Obrazová data obsahují následující bloky: •
lokální popisovač obrázku na logické obrazovce
•
lokální tabulka barev
•
vlastní komprimovaná obrazová data ve formě subbloků.
Obrazová data jsou ukládána po řádcích a v jejich rámci po pixelech. Je možné použití také čtyřprůchodového prokládaného řádkování (z historických důvodů).
Nová verze GIF formátu 89a má nový prvek, tzv. řídicí rozšíření: •
rozšíření řízení grafiky
•
rozšíření standardního textu
•
rozšíření pro aplikaci
•
rozšíření komentáře
Microsoft RTF (Rich Text Format) Formát je určen ke kódování textu a grafiky pro výměnu souborů mezi různými aplikacemi. Vyznačuje se dobrou kompatibilitou s mnoha programy. Data v souboru
6
jsou uspořádána proudově a soubor sestává z polí proměnné délky následujících typů:
•
řídicí slova
•
řídicí symboly
•
skupiny
Každý z těchto typů začíná zpětným lomítkem následovaným ASCII znaky. Skupina je potom souhrn řídicích slov, řídicích symbolů a dat (textových nebo grafických) ve složených závorkách.
Příklady skupin: {\rtf1\ansi \geff0\deflang1024} {\fonttbl\f0\froman Tms Rmn; ....}. {\colortbl;\red0\green0\blue0;\red0\green0\blue255; .....} {\styleshhet{\fs20\lang1033 \snext0 Normal;} {\paperw12240\paperh11800\margl1800 ......} Four Basic Principles to Unify Mind and Body. {\par \tab1. Keep one point. \par \tab2. Relax copletely. \par }
V první skupině je popis základních parametrů RTF souboru jako celku. Druhá skupina obsahu je popis písem použitých v dokumentu. Potom následuje skupina popisu barevné palety. Skupina s řídicím slovem stylesheet obsahuje definici stylů dokumentu. Vlastní obsah dokumentu tvoří řádka textu začínající slovy Four Basic následovaná dvěmi řádkami odsazenými zleva. RTF formát pracuje také s rastrovými obrázky. Následuje příklad skupiny obrazových dat. {\pict\wmetafile8\picw23918\pich14552 ......\picscalex63 \picscaley63 010009000000328ea0100020a........\par}
7
Otázky na procvičení 1. 2. 3. 4. 5.
Rozdělte typy formátů grafických souborů? Uveďte několik kompresních algoritmů? Vysvětlete princip RLE kódování? Popište strukturu rastrových souborů? Popište strukturu vektorových souborů?
Odkazy a další studijní prameny http://www.root.cz/serialy/graficke-formaty/ - Seriál Grafické formáty - Root.cz
8