Počítačová grafika - formáty Vít Pászto Datové formáty v počítačové grafice • Vektorové • Rastrové Rastrová data • Většinou prezentováno jako rastrové zobrazení (bitmapa): – Pravoúhlé uspořádání obrazových bodů – pixel – Každý pixel nese hodnotu – lze použít například pro barvu – Většina vstupních zařízení snímá „v rastru“ Rastrová data • rastrová data, tzn. jevy vyjádřené ve 2D prostoru jako sady pixelů (grid) v kartézském souřadnicovém systému • hodnota pixelu je vyjádřením jednoho atributu uloženého jako číselná datová (nominální, ordinální, intervalová nebo poměrová) hodnota • prostorové rozlišení (velikost buňky, rozměr pixelu) • datové rozlišení („barevná hloubka“ rastru) – binární rastr (0x1, výskyt x nevýskyt) – záznam 1 bitem – 8bitový rastr – 256 různých celočíselných hodnot, záznam 1 bajtem – 24bitový rastr – 1,6 milionu různých celočíselných hodnot, 3 bajty – kontinuální rastr – hodnoty v reálných číslech, záznam 4 nebo 6 bajty Vektorová data • Druhý způsob – vektor – Ze základních tvarů – bod, linie, polygon (případně síť, povrch, objem) – Každý tvar má (může mít) vlastnosti – Ukládají se instrukce, jak vykreslit obrázek – Jsou měřítkově nezávislé – Ale ve finále je stejně vektor rasterizován pro výstupní zařízení 0 2 4 6 𝑥 + 𝑎 𝑛 = ෍ 𝑘=0 𝑛 𝑛 𝑘 𝑥 𝑘 𝑎 𝑛−𝑘 Rastr x vektor 11 1 1 1 4 4 2 2 2 2 2 2 2 21 3 11 1 1 1 1 4 4 2 2 2 2 2 2 21 3 13 1 1 1 4 4 4 4 4 4 5 5 5 51 3 13 1 1 1 1 4 4 4 4 5 5 5 5 51 3 13 1 1 1 1 4 4 4 5 5 5 5 5 51 3 13 1 1 1 1 4 4 4 5 5 5 5 5 51 3 13 3 3 1 4 4 5 5 5 5 5 5 5 51 3 33 3 3 3 4 5 5 5 5 5 5 5 5 53 3 33 3 3 3 5 5 5 5 5 5 5 5 5 53 3 33 3 3 3 5 5 5 5 5 5 5 5 5 53 3 33 3 3 3 5 5 5 5 5 5 5 5 5 53 3 33 3 3 3 5 5 5 5 5 5 5 5 5 53 3 33 3 3 3 5 5 5 5 5 5 5 5 5 53 3 33 3 3 3 5 5 5 5 5 5 5 5 5 53 3 33 3 3 3 5 5 5 5 5 5 5 5 5 53 222221 12 2 2 2 2 2 2 21 2 3 Komprese rastrového obrazu • Vysoká paměťová náročnost (roste kvadraticky s rozlišením) • Na rozdíl od komprese obecných souborů  vychází se z vlastností a charakteristických rysů konkrétního rastru • Počet rastrových formátů vysoký – ačkoliv všechny mají za cíl úschova dvourozměrného pole pixelů • Existence tolika formátů se odvíjí: – od vazby na program (podle aplikace vznikal formát) • skica (PCX), černobílé dokumenty (TIFF), přenos a prezentace fotek na WWW (GIF, JPEG) – typ komprese • ztrátové a bezztrátové Komprese rastrového obrazu • Vysoká paměťová náročnost (roste kvadraticky s rozlišením) • Na rozdíl od komprese obecných souborů  vychází se z vlastností a charakteristických rysů konkrétního rastru • Počet rastrových formátů vysoký – ačkoliv všechny mají za cíl úschova dvourozměrného pole pixelů • Existence tolika formátů se odvíjí: – od vazby na program (podle aplikace vznikal formát) • skici (PCX), černobílé dokumenty (TIFF), přenos a prezentace fotek na WWW (GIF, JPEG) – typ komprese • ztrátové a bezztrátové Komprese rastrového obrazu • Bezztrátová komprese: – Zmenší se objem dat tak, aby informace zůstala nezměněna – Ale nejsou velké úspory paměti • Ztrátová komprese: – odstraňuje informaci, která není příliš významná – posloupnost 77876778778 nahrazena 7 (ztráta informace, ale úspora místa) • V počítačové grafice důležitá tzv. psychovizuální redundance – část informace, jejíž nepřítomnost nepostřehneme, a proto ji můžeme zanedbat Komprese rastrového obrazu • Základní formáty a metoda/typ jejich komprese: – U všech obrazových formátů se komprese týká pouze vlastních obrazových dat – Hlavička souboru, definice palety a další doplňující informace se nekomprimují Kompresní metoda Zkratka Ztrátovost komprese Příklad formátu Run length encoding RLE ne PCX, občas JPEG Slovníkové kódování LZW ne GIF, PNG, ZIP, ARJ, PDF (dříve) Huffmanovo kódování CCITT ne TIFF Diskrétní kosinová transformace DCT ano JPEG Run length encoding (RLE) • Jednoduchá a pro velkou třídu obrázků; i efektivní: – předpoklad opakování hodnot sousedních pixelů – zápis nejprve počtu opakujících se totožných hodnot a poté hodnota samotná – Příklad - 2222333422222 by byl 42331452 Run length encoding (RLE) • Většinou prováděno v rámci jednoho řádku • Ale: Pořadí Mortonovo Zpětně po řádcíchPo řádcích Peanovo 1 1 1 1 2 2 3 3 1 1 1 1 1 1 2 3 1 1 4 4 4 4 3 3 1 4 4 4 3 3 3 3 4 4 4 3 3 3 1 1 3 3 3 3 1 1 1 1 3 3 3 3 3 1 1 1 2 2 2 3 3 3 3 3 Po řádcích: 42 --- úspora na 65,625 % 1 4 2 2 3 2 1 6 2 1 3 1 1 2 4 4 3 2 1 1 4 3 3 4 4 3 3 3 1 2 3 4 1 4 3 5 1 3 2 3 3 5 Zpětně po řádcích: 32 --- úspora na 50 % 1 4 2 2 3 3 2 1 1 8 4 4 3 6 4 3 1 1 4 3 3 3 1 6 3 9 1 3 3 5 2 3 Úspora dat Run length encoding (RLE) • Použití speciálního kódu ve významu opakovače řádků • If obsahuje neopakující se hodnoty v sousedních pixelech  záporná komprese • Proto RLE vhodné pro „ručně“ kreslené obrázky nebo tzv. cartoons (ilustrace s většími stejnobarevnými plochami) Slovníkové kódování (LZW) • Zcela obecná metoda  většina běžných kompresních programů, jako jsou ZIP (dřívější verze), RAR, GIF, TIFF a PDF (postscript) • Původní algoritmus z roku 1977 – název LZ77 (autoři Lempel a Ziv), v roce 1984 doplněn Welchem  LZW • Princip: – nahrazení vzorků vstupních dat binárními kódy proměnné (postupně rostoucí) délky – Vstupy se překládají pomocí slovníku (tabulky), který je doplňován novými – Po zaplnění slovníku se zvýší o 1b (zdvojnásobení) Slovníkové kódování (LZW) – Z přicházejících kódů je dynamicky budován slovník – Z něj vytvářen výsledný obraz – Slovník představuje zřetězené vzorky původních hodnot • Kompresní poměr není ideální (asi o 30 % horší než u nejlepších komprimací • Ale velmi rychlá implementace • Obrázek: – příkladu jednoho řádku obrazového záznamu – prohledává slovník frází a obraz se kóduje za chodu s tím, že postupně nalezené fráze se odebírají ze vstupu Slovníkové kódování (LZW) Huffmanovo kódování • Původně navrženo CCITT (Comité Consultatif lnternational Téléphoniqueet Télégraphique) pro ČB dokumenty poslané faxem • 1952 – D. Huffman – použití různě dlouhých bitových kódů pro symboly s různou frekvencí výskytu • Často používané – krátké kódy • Často používané – ne pro individuální dokument, ale z tabulek CCITT (po statistické analýze a vyhodnocení „typického“ dok.) • Několik variant – G31D (kompresní poměr 5:1, odolné proti poruchám), G32D (kompresní poměr 8:1, citlivé na poruchy), G42D (kompresní poměr 15:1, pro bezchybný zápis na disk) Huffmanovo kódování • G31D – Úseky opakujících se bílých/černých pixelů pomocí RLE (opakovače nahrazeny Huffmanovy kódy) – Časté skupiny dvou, tří a čtyř bitů se shodnou barvou jsou tedy zapsány pomocí kratších výsledných kódů – Další krátké kódy (většinou pro bílé pixely) určeny střední úseky (63 bitů) a velmi dlouhé úseky (až do 2 623 bitů) – I konce řádků mají svůj kód – lze rekonstruovat i při ztrátě – Proto odolné „proti“ faxům – Navíc dekódování bez použití vyrovnávací paměti Huffmanovo kódování • G32D – využívá dvourozměrný charakter dat – zapisování pozic pixelů, ve kterých dochází ke změně barev – z černé na bílou a naopak je zapisována relativně vůči předchozí pozici  deformace obrazu při ztrátě – Proto každý čtvrtý řádek kódován • G42D – Bezztrátové – Pro TIFF – Vysoký stupeň komprese (obzvláště pro textové dokumenty a ČB) Diskrétní kosinová transformace (a JPEG) • RLE a LZW nejsou efektivní při kompresi plně barevných obrázků s mnoha barevnými přechody • Kompresní poměr řízen požadavkem na výši kvality dekomprimovaného obrazu – snížení kvality na 75 % je pro většinu uživatelů nepozorovatelné – přitom kompresní poměr 20:1 až 25:1 • Vyvinuta skupinou Joint Photographic Experts Group v roce 1991 • Vhodná především pro obrázky (fotografie), kde sousední pixely (na řádku či ve sloupci) mají sice odlišné, ale přesto blízké barvy • Snižování kvality obrazu se projeví potlačováním rozdílů v blízkých barvách Diskrétní kosinová transformace (a JPEG) • Metoda není vhodná: – pro obrazy s nižším barevným rozlišením (s paletou, upravené rozptylováním) – na velkých jednobarevných plochách (vytváří artefakty v podobě čtverců či pruhů) – nepoužitelná je pro ČB (rozmazává) • Diskrétní kosinová transformace (DCT) – Fourierova transformace – Data jsou považována za vzorky spojitých funkcí naměřené v diskrétní síti pixelů – Výsledkem DCT je nalezení sady parametrů kosinových funkcí, jejichž složením lze rekonstruovat původní obraz Diskrétní kosinová transformace (a JPEG) • Metoda není vhodná: – pro obrazy s nižším barevným rozlišením (s paletou, upravené rozptylováním) – na velkých jednobarevných plochách (vytváří artefakty v podobě čtverců či pruhů) – nepoužitelná je pro ČB (rozmazává) • Diskrétní kosinová transformace (DCT) – Fourierova transformace – Data jsou považována za vzorky spojitých funkcí naměřené v diskrétní síti pixelů – Výsledkem DCT je nalezení sady parametrů kosinových funkcí, jejichž složením lze rekonstruovat původní obraz Rastrové formáty • Existuje více než 50 různých • Zde nejběžnější: – JPEG (JPEG 2000) – GIF – PNG – BMP – TIFF Rastrové formáty • JPEG – většina digitálních fotoaparátů – nejčastějším kompresním poměru 10:1 - dostatek informací v obrázku – podporuje maximální velikost obrázku 65 535 x 65 535 pixelů, což je až 4 gigapixely pro poměr stran 1:1 – vhodný pro obrázky, které mají jemné či plynulé přechody mezi barvami – ostré přechody (například u textů, ikon, liniových kreseb) není formát JPEG vhodný (vhodnější formát PNG, TIFF, GIF či přímo tzv. „raw image“) – možné komprimovat do formátu JPEG i bezztrátově – nevhodný pro několikanásobné úpravy (každá úprava = komprese) Rastrové formáty • JPEG 2000 – překonává omezení 8x8 vnitřního dělení JPEG (bere obraz jako celek a transformuje pomocí tzv. wavelet funkcí) – koncovka .jp2 nebo .jpx – opakované transformace zachovají kvalitu – vyšší kompresní zisk (asi 20 %) – kompresní poměr se zvyšuje u: • vysoce kvalitních obrázků (co se týče rozlišení) • dále pak u obrázků velkých (rozměrově) • u obrázků s nízkým kontrastem na hranách objektů Rastrové formáty • JPEG 2000 – překonává omezení 8x8 vnitřního dělení JPEG (bere obraz jako celek a transformuje pomocí tzv. wavelet funkcí) – koncovka .jp2 nebo .jpx – opakované transformace zachovají kvalitu – vyšší kompresní zisk (asi 20 %) – kompresní poměr se zvyšuje u: • vysoce kvalitních obrázků (co se týče rozlišení) • dále pak u obrázků velkých (rozměrově) • u obrázků s nízkým kontrastem na hranách objektů Rastrové formáty • GIF – Jeden z nejstarších formátů (vyvinut firmou CompuServe) – specializovaný na obrázky s paletou a s jedním bytem na pixel – kompresní metoda LZW – původní určení pro přenos obrázků po telefonních linkách  složitější struktura formátu – vhodný pro webové aplikace – Charakteristiky: • více obrázků v jednom souboru (i s vlastní paletou) • možnost prokládání řádků (interlacing) – vhodné pro web - již po získání 1/4 či 1/2 objemu obrazových dat rozpoznat vzhled obrázku (a přenos dat případně ukončit) • časové prodlevy při zobrazování posloupnosti obrázků (animovaný GIF) • umožňuje průhlednost a je vhodný pro ostré přechody mezi pixely Rastrové formáty • PNG (Portable Network Graphics) – podporován konsorciem W3C - primárně zaměřen na přenos obrazu v síti – specializovaný na obrázky s paletou a s jedním bytem na pixel – mnoho barevných rozlišení, kódování je bezeztrátové na algoritmu LZ77 – zásadní vlastností – předzpracování každého pixelu – bezztrátový formát v true color – již po přenesení 1/8 celkového množství dat lze rozpoznat základní barevnou dispozici obrazu – neumožňuje „animace“ – kompresní poměr není tak výrazný jako u JPEG, ale mnohem lepší oproti RLE a překonává i slovníkové metody komprese – 16 bitů na barevnou složku, RGBA (tzn. průhlednost), ale neumí CMYK aj. Rastrové formáty • PNG (Portable Network Graphics) Rastrové formáty • BMP – nejstarší a zároveň nejjednodušší formát bitmapového obrázku – muže obsahovat 2 (1 bit na pixel), 4 (2 bity), 16 (4 bity), 256 (8 bitů), 65 536 (16 bitů), 16 777 216 (24 bitů), nebo 4 294 967 296 (32 bitů) barev – vždy v RGB, kódování RLE lze použít – nevhodný pro web (velikost) – vhodný v rámci přenosu na Windows (default pro Malování) – vysoká interoperabilita – snadno vypočítat jeho velikost na disk (šířka v pixelech) * (výška v pixelech) * (bitů na pixel / 8) dvojbarevný obrázek o velikosti 1024x1024 pixelů má velikost na disku 131 072 Bytů (cca 131 kB). Rastrové formáty • TIFF (Tagged Image File Format) – je spolu s formáty JPEG a PNG mezinárodním standardem pro kódování statických obrazů  podporován platformami (UNIX, MS, iOS) – z dílny firmy Adobe (dříve Aldus) z roku 1987 – dokáže uložit více obrázků do jednoho souboru – mnoho barevných rozlišení a modelů – vnitřní struktura • header (H, hlavička souboru) • image file directory (IFD, popis významu dat) • image data (I, vlastní data specifikovaná v IFD) – od verze TIFF 6.0 podporovány dlaždice (tiles) – pro přípravu profesionálních barevných tisků Rastrové formáty • TIFF (Tagged Image File Format) – Bezztrátová komprese – Případná komprese závisí na obsahu obrázku – Podporován • RLE, LZW, ZIP/DEFLATE, CCITT Group 3 a Group 4 (FAX), CCITT 1D (Huffmanovo modifikované kódování), JPEG, Packbits a mnoho dalších – Lze uložit téměř s libovolným rozlišením DPI; s 256 barvami (8 bity na bod) a také s 16,7 miliony barev (24 bity na bod) – Maximální velikost bitmapy je přibližně 4,3 miliardy x 4,3 miliardy pixelů – Nepoužitelný pro web Vektorové formáty • Libovolný obraz sestaven pomocí základních elementů • Vektor pracuje s objekty (samostatné a matematicky definované) • Jednoduchá kresba (např. plnobarevný kruh) zápis pomocí vektorů jednodušší (stačí tvar kruhu, poloměr a barva) než u rastru (série definovaných pixelů + „zuby“) Vektorové formáty • Měřítkově nezávislý • Při překročení určité meze složitosti rostou velmi rychle nároky na operační paměť i procesory (CPU i GPU) • Pořízení vektorové podoby nějakého objektu je náročnější oproti rastrové reprezentaci (ale dnes laserscan) • Opět mnoho druhů • Zde nejběžnější: – SVG – PostScript – WMF – .ai, .cdr, .zmf Vektorové formáty • SVG (Scalable Vector Graphics) – značkovací jazyk založený na XML – umožňuje zobrazovat dvourozměrnou grafiku s podporou interaktivity a animací – W3C vytvořeno jako otevřený standard, zejména pro web – Díky XML je možné v souborech: • vyhledávat, indexovat je, komprimovat (pomocí textových kompresních algoritmů), či rozvíjet dalšími skripty – lze tvořit a upravovat SVG grafiku i v obyčejném textovém editoru – od roku 1999 jej všechny hlavní webové prohlížeče podporují – „text“ souboru SVG součástí kódu webových stránek  lze na něj uplatnit pravidla definovaná v kaskádových stylech (CSS) Vektorové formáty • SVG (Scalable Vector Graphics) – S tím souvisí i možnost aplikace skriptovacích jazyků (například JavaScript)  rozšířit funkcionalitu a interaktivitu webových stránek – Nová verze SVG 2 by měla umožňovat lepší integraci s novými webovými prvky jako je poslední verze CSS, HTML5 či WOFF (Web Open Font Format) – Možné s ním s pracovat ve většině grafických editorů – několik online konvertorů z/do SVG formátu (například autotracer.org, svgconv.sourceforge.net, online-convert.com, ileformat.info) – Hlavní výhody: • velikost výsledného souboru, nezávislost na platformě (snadná přenositelnost), je tzv. content aware, založeno na XML (tedy textový formát) Vektorové formáty • SVG (Scalable Vector Graphics) Vektorové formáty • PostScript – koncovka .ps nebo .eps – značkovací jazyk a formát vektorové grafiky – určený ke grafickému popisu tisknutelných dokumentů – vyvinutý v roce 1985 firmou Adobe Systems – platformě nezávislý, standard pro dražší tiskárny – Pro rastrové, vektorové i kombinované obrázky se používá přípona .eps (Encapsulated PostScript): • bounding box (obdélník ohraničující tisknutelnou oblast) obsahuje jen a pouze kýžený obrázek (na rozdíl od klasického PS souboru, kdy bounding box kopíruje formát listu papíru) – Dnes formát PDF, resp. PDF převzal jako stavební kámen PostScript Vektorové formáty • WMF (Windows Metafile) – spolehlivý v černobílé grafice, nevhodný pro barevnou grafiku – velmi praktické jej rovněž využít pro přenos grafické informace v rámci schránky Windows – lze do něj umístit i bitmapy – formát neakceptuje bitmapové ani vektorové výplně • .ai, .cdr, .zmf – v podstatě koncovkami projektů, které lze tvořit v grafických programech – Adobe Illustrator, Corel Draw, Zoner Callisto – dnes navzájem „kompatibilní“ - při konverzi a načítání grafiky mohou některé nepodporované prvky ztratit – zpětná kompatibilita formátů Konverze formátů 700 vektorizační program NASKENOVANÁ MAPA (rastrový soubor) VRSTVA VRSTEVNIC (vektorový soubor) vektorizace rasterizace Konverze formátů