Presentation is loading. Please wait.

Presentation is loading. Please wait.

Formáty grafických súborov

Similar presentations


Presentation on theme: "Formáty grafických súborov"— Presentation transcript:

1 Formáty grafických súborov

2 Rastrový a vektorový obraz
Rastrový obraz (nazývaný aj bitová mapa) je reprezentovaný množinou bodov (pixelov), kde je každý bod daný svojou farbou. Takáto reprezentácia je najvhodnejšia pre fotografie a fotorealistické scény. Vektorový obraz je daný súborom jednoduchých geometrických útvarov, ktoré obraz vytvárajú (úsečka, kružnica, krivka, text...). Táto reprezentácia je vhodná pre rôzne typy kresieb.

3 Rastrové a vektorové formáty
Najznámejšie rastrové formáty: RAW BMP JPEG (Joint Photographics Experts group) GIF (Graphics Interchange Format) PNG (Portable Graphics Network) TIFF (Tag Image File Format) PCX (PC PaintBrush Exchange) Najznámejšie vektorové formáty: WMF (Windows Metafile) PS, EPS (PostScript, Encapsulated PostScript) PDF (Portable Document Format) SVG (Scalable Vector Graphics) SWF (ShockWave Flash)

4 Kompresia dát Dôležitou vlastnosťou väčšiny grafických formátov je určitá kompresia dát – zakódovanie pôvodných dát takým spôsobom, aby súbor s kódovanými dátami mal menšiu veľkosť ako pôvodný súbor. Ak chceme koprimované dáta opäť načítať, musí prebehnúť dekompresia, teda dekódovanie – postup, ktorý je inverzný k postupu kódovania. Z hľadiska kvality rozoznávame dva typy kompresií: 1. Bezstratová kompresia – po dekódovaní dostaneme presne tie isté dáta, aké sme mali pred kódovaním 2. Stratová kompresia – kódovaním stratíme istú časť dát a po dekódovaní dostaneme dáta, ktoré sa od pôvodných líšia, čo má za následok zhoršenie kvality obrazu. Vo väčšine prípadov má užívateľ možnosť zvoliť si kvalitu kódovania – čím menšia kvalita, tým menšia bude veľkosť kódovaného súboru. Pomer veľkostí pôvodného a zakódovaného súboru sa nazýva kompresný pomer.

5 Kódovanie RLE RLE (Run Length Encoding) je jedna z najjednoduchších metód kódovania a ide o bezstratové kódovanie. Vychádza z predpokladu, že v riadkoch obrázku sa vyskytujú skupiny po sebe idúcich pixelov s rovnakou farbou. Postup RLE je takýto: Prechádzame obrázok po riadkoch Ak narazíme na skupinu pixelov rovnakej farby, zapíšeme do súboru číslo 1, ktoré je indikátorom opakovania. Za ním nasleduje počet pixelov a potom ich farba. Ak narazíme na pixel, ktorého farba sa neopakuje, indikujeme to číslom 0 a za ním nasleduje farba pixelu. Kódovanie teda vyzerá takto: 1 počet opakovaní farba

6 RLE Príklad: zakódovanie jedného riadku obrázku kódovaním RLE 1 13 11
100 pixelov 13 pixelov 20 pixelov 30 pixelov kódovaný riadok 1 13 11 30 8 5 20

7 Huffmanovo kódovanie Huffmanovo kódovanie je bezstratové kódovanie, ktoré sa využíva nielen pri kódovaní obrázkov, ale aj iných dát. Jeho základným princípom je využitie frekvencie výskytu jednotlivých prvkov dát (znakov, skupín pixelov a pod.). Základné pravidlo je, že prvky s väčšou frekvenciou výskytu majú kratšie kódy ako prvky s nízkou frekvenciou. To umožňuje spotrebovať menej miesta na zápis tých prvkov, ktoré sa vyskytujú často, a naopak viac miesta potrebujú len prvky, ktoré sa vyskytujú zriedka. Frekvencia výskytu jednotlivých prvkov je uložená v tabuľke. Táto tabuľka sa môže vytvoriť pre každý dátový súbor zvlášť, ale existujú aj hotové tabuľky, ktoré vznikli štatistickou analýzou mnohých súborov. Aby sme sa vyhli problémom pri dekódovaní, musíme použiť tzv. prefix-free kódovanie. To znamená, že žiadny kód nesmie tvoriť začiatočnú časť nejakého iného, dlhšieho kódu.

8 Huffmanovo kódovanie Príklad: Huffmanovo kódovanie pre znaky
Zakódujme túto vetu: “TÁTO VETA UKAZUJE AKÝM SPÔSOBOM SA DÁ POUŽIŤ HUFFMANOVO KÓDOVANIE”. V tabuľke nájdeme frekvencie výskytu jednotlivých znakov a príklady kódov, ktoré im môžeme priradiť: Medz O A U E K M Á D F I N P 9 7 6 4 3 2 111 000 010 001 1101 1011 1010 01110 01100 11000 10010 10000 01111 S T V B H J Ó Ô Ť Z Ž 2 1 01101 11001 10011 Spojením týchto kódov dostaneme výsledný binárny kód vety. Namiesto tejto tabuľky frekvencií by sme mohli použiť všeobecnú frekvenčnú tabuľku znakov pre slovenský text.

9 Kódovanie LZW Kódovanie LZW (Lempel-Ziv-Welch) sa využíva nielen pri grafických formátoch, ale aj pri iných kompresiách, napr. pri vytváraní súborov typu zip. Je to bezstratová kompresia. Podstatou tohto kódovania je, že algoritmus začne s určitou jednoduchou tabuľkou prvkov, ktoré sa môžu v súbore vyskytovať (napr. obyčajná ASCII tabuľka znakov) a pri prechode súborom do tabuľky pridáva aj ďalšie zložitejšie prvky, na ktoré narazí (napr. dvojice a trojice znakov). Algoritmus teda spočíva v aktualizovaní tabuľky kódov počas behu. Na začiatku kódovania sú teda kódmi označené len samostatné prvky, neskôr menšie skupiny a neskôr aj väčšie skupiny prvkov. Dobrou vlastnosťou je, že na dekódovanie stačí len samotný zakódovaný text a základná tabuľka a nie je potrebná celá tabuľka, ktorá sa pri kódovaní vytvorila.

10 Kódovanie LZW Príklad: Kódovanie jednoduchého reťazca pomocou LZW
Zakódujme a dekódujme tento reťazec pomocou LZW: TOBEORNOTTOBEORTOBEORNOT Na začiatku vychádzame z ASCII tabuľky znakov. Tu majú znaky 8-bitové kódy, teda kódy od 0 do 255. V novej tabuľke budeme používať 9-bitové kódy, čo nám umožní mať kódy od 0 do 511. Znakom z ASCII tabuľky priradíme ich pôvodné kódy , ostatné kódy ostanú zatiaľ voľné. Teda máme: T=084 O=079 B=066 E=069 R=082 N=078 Prechádzame reťazec a priebežne ukladáme všetky dvojice znakov, ktoré nájdeme a priraďujeme im kódy ( ): TO=256 OB=257 BE=258 EO=259 OR=260 RN=261 NO=262 OT=263 TT=264

11 Kódovanie LZW Postupne, ako vytvárame tabuľku, dáta zároveň kódujeme. Kým nachádzame stále nové dvojice znakov, používame na kódovanie stále len kódy pre jednotlivé znaky. Teda prvá časť textu TOBEORNOT bude kódovaná len kódmi z ASCII tabuľky: Keď narazíme na dvojicu, ktorú sme už raz našli (TO), už ju zakódujeme novým kódom, t.j Zároveň si zapamätáme trojicu znakov, ktorá touto dvojicou začína, a priradíme jej kód, t.j. TOB=265 Ďalej narazíme na dvojicu BE, ktorá už tiež má svoj kód 258. Zapamätáme si ďalšiu trojicu: BEO=266 Ďalšia dvojica je OR s kódom 260 a príslušná trojica je: ORT=267 Po toto miesto má teda reťazec kód:

12 Kódovanie LZW Ďalej narazíme na trojicu TOB, ktorá má kód 265. Zapamätáme si štvoricu, ktorá touto trojicou začína: TOBE=268 Kód reťazca po toto miesto bude: Ďalej narazíme už len na dvojice EO s kódom 259, RN s kódom 261 a OT s kódom 263. Príslušné trojice sú: EOR=269 RNO=270 Celkový kód reťazca teda bude: Uvažovaný reťazec má 24 znakov. Pri pôvodnom 8-bitovom ASCII kódovaní by zaberal 24*8=192 bitov. Pri novom 9-bitovom kódovaní máme len 16 kódov a teda komprimovaný reťazec bude mať veľkosť 16*9=144 bitov. Teda naozaj sme urobili kompresiu pôvodných dát.

13 Kódovanie LZW Pri dekódovaní postupujeme podobne. Prvých 9 kódov sú ASCII kódy (keďže sú <256), teda vieme ich dekódovať. Zároveň si zase zapamätávame dvojice znakov, ktoré nachádzame a priraďujeme im kódy, teda dospejeme k tým istým kódom: TO=256 OB=257 BE=258 EO=259 OR=260 RN=261 NO=262 OT=263 TT=264 Potom narazíme na kód 256 a už vieme, že to zodpovedá dvojici TO. Ďalší kód 258 zodpovedá dvojici BE. Opäť si zapamätáme trojicu TOB a priradíme jej kód 265. Postupne dostaneme presne rovnakú tabuľku ako pri kódovaní, ktorá nám umožní jednotlivé kódy preložiť. Ak by sa stalo, že by sme našli toľko skupín znakov, že kódy by prekročili 511, musíme prejsť na 10-bitové kódy atď.

14 Diskrétna kosínusová transformácia
Táto kompresia sa používa na vytváranie obrázkov typu JPEG a je to stratová kompresia. Doteraz uvedené metódy vychádzali z toho, že v obrázku sa isté skupiny pixelov opakujú. Pri kresbách je to dosť často pravda, ale pri fotografiách to nemusí tak byť. Diskrétna kosínusová transformácia bola navrhnutá pre obrázky, ktoré sa nevyznačujú opakovaním skupín pixelov. Táto transformácia sa skladá z niekoľkých krokov: 1. Transformácia farieb 2. Redukcia farieb 3. Dopredná diskrétna kosínusová transformácia 4. Kvantovanie koeficientov 5. Kódovanie

15 Diskrétna kosínusová transformácia
1. Transformácia farieb Formát JPEG je založený na farebnom modeli YCBCR, preto musíme najskôr obrázok (obyčajne v modeli RGB alebo CMYK) transformovať do tohto modelu. V modeli YCBCR predstavuje Y jasovú zložku a CB a CR určujú farebné zložky. Z modelu RGB prevedieme farbu do modelu YCBCR nasledujúcim spôsobom: Y=0.299R+0.587G+0.114B CB= R G-0.5B CR=0.5R G B Jednotlivé hodnoty Y, CB, CR majú rozsah (resp ), preto na uloženie farby potrebujeme pre jeden pixel 3 byty.

16 Diskrétna kosínusová transformácia
2. Redukcia farieb Redukciou farieb sa robí prvá kompresia, ktorá však ešte nie je veľmi výrazná. Farebný model YCBCR je na redukciu zvlášť vhodný. Keďže ľudské oko je oveľa citlivejšie na zmenu jasu ako na zmenu farebného odtieňa, zložka Y ostáva zachovaná a menia sa len farebné zložky CB a CR. Kompresia spočíva v tom, že sa spriemerujú farebné zložky CB a CR pre niekoľko susedných pixelov (susedné dvojice alebo štvorice). Farebné zložky pre tieto pixely sa nahradia vypočítanou priemernou hodnotou, nemusíme si teda pamätať tieto zložky pre každý pixel zvlášť. Aj keď redukcia farieb spôsobuje mierne zhoršenie kvality obrazu, táto zmena je pre ľudské oko v podstate nepozorovateľná.

17 Diskrétna kosínusová transformácia
3. Dopredná diskrétna kosínusová transformácia V tomto kroku sa obrázok rozdelí na štvorce veľkosti 88 pixelov. Funkcia reprezentujúca farbu pixelov v tomto štvorci (resp. každú zo zložiek Y, CB, CR) sa dá napísať ako lineárna kombinácia periodických funkcií. Nech f(x,y) je farba pixelu (alebo niektorá zo zložiek farby). Potom platí: Tento vzťah sa nazýva inverzná diskrétna kosínusová transformácia (IDCT). Nepoznáme v ňom koeficienty F(u,v). Ak by sme ich poznali, môžeme si farbu pixelu zapamätať tak, že uložíme tieto koeficienty a neskôr pôvodné farby pomocou nich zrekonštruujeme podľa uvedeného vzorca. Práve výpočet a uloženie týchto koeficientov je základom formátu JPEG.

18 Diskrétna kosínusová transformácia
Koeficienty F(u,v) vypočítame nasledujúcim spôsobom (ide o inverznú transformáciu k uvedenému vzťahu). Tento vzťah sa nazýva diskrétna kosínusová transformácia (DCT): V tomto kroku teda pre každý štvorec 88 pixelov dostaneme maticu koeficientov F(u,v). Koeficient F(0,0) je v absolútnej hodnote najväčší a koeficienty sa postupne v absolútnej hodnote zmenšujú, koeficient F(7,7) býva podstatne menší ako F(0,0). príklad tabuľky koeficientov

19 Diskrétna kosínusová transformácia
4. Kvantovanie koeficientov Práve v tomto kroku dochádza k podstatnej komprimácii pôvodných dát. Úroveň kompresie, a teda aj kvalitu výsledného obrazu, si zvolí užívateľ. Kvantovanie sa robí tak, že každý koeficient v matici koeficientov vydelíme nejakým kvantizačným činiteľom a výsledok zaokrúhlime. Čím je úroveň kompresie vyššia, tým vyššie sú kvantizačné činitele. Ak sú kvantizačné činitele dostatočne veľké, mnohé koeficienty sa po vydelení zaokrúhlia na 0. Tabuľka kvantizačných činiteľov pre kvalitu 75% bola stanovená komisiou JPEG. Pre iné úrovne kompresie sa kvantizačná tabuľka odvodí od tejto základnej tabuľky. základná kvantizačná tabuľka kvantované koeficienty

20 Diskrétna kosínusová transformácia
5. Kódovanie Máme vytvorenú tabuľku kvantovaných koeficientov, ktorú musíme nejako uložiť. Keďže v nej môže byť aj veľké množstvo núl, snažíme sa uložiť len najnutnejšie informácie. Pri ukladaní postupujeme takýmto smerom: Keďže nenulové prvky sú sústredené okolo ľavého horného rohu, postupne sa dopracujeme k línii, na ktorej už budú všetky prvky nulové. Tam prestaneme ukladať, čím ušetríme veľa miesta. Pri ukladaní koeficienty ešte kódujeme, aby sme ďalej zvýšili kompresný pomer, môžeme použiť napr. Huffmanovo kódovanie alebo RLE. koniec ukladania

21 Diskrétna kosínusová transformácia
Dekódovanie Pri dekódovaní postupujeme v opačnom poradí. Najprv dekódujeme zakódované koeficienty, potom zrekonštruujeme maticu kvantovaných koeficientov. Z nich inverznou kosínusovou transformáciou získame farby pixelov. Keďže mnohé koeficienty sa kvantovaním vynulovali a neboli vôbec uložené, zrekonštruovaná farba nebude presne zodpovedať pôvodnej. Preto je táto kompresia stratová. kvalita 100% 236 kB kvalita 50% 51 kB kvalita 10% 19 kB kvalita 0% 7 kB

22 Štruktúra rastrového formátu
Súbor, ktorý obsahuje obrázok reprezentovaný rastrovo, má zvyčajne tieto základné časti: 1. Hlavička – časť, ktorá obsahuje rôzne informácie o obraze, napr. jeho rozmery, farebný model, softvér, ktorý súbor vygeneroval a pod. 2. Farebná paleta Informácia o farbe, ktorá je pre daný pixel uložená, ešte nemusí zodpovedať skutočnej farbe, ktorú bude mať pixel na obrazovke. Často predstavuje len ukazovateľ do tabuľky farieb a skutočná farba sa načíta z tejto tabuľky. To sa využíva, ak sa s obrazom robia rôzne farbené transformácie. Vtedy netreba meniť priamo farby pixelov, ale stačí zmeniť farby v tabuľke. 3. Obrazové dáta – obsahujú informácie o farbe jednotlivých pixelov 125 200 126 150 127 80 128 22 221 40 222 41 223 42 224 43 81 160 82 158 83 156 84 154 (127,223,83) (80,42,156)

23 Najznámejšie rastrové formáty
1. RAW Tento formát uchováva nekomprimované dáta, t.j. farbu každého pixelu. Môže, ale nemusí obsahovať aj hlavičku. Používa sa najmä pri kvalitných digitálnych fotografiách, kde je dôležitý fakt, že sa žiadna informácia nestratí. Fotograf si fotku v RAW formáte môže “vyvolať”, t.j. sám si určí farebnú paletu. 2. BMP Tento formát je podobný formátu RAW, ale obsahuje aj hlavičku a farebnú paletu. V hlavičke sú rozmery obrázku, počet bytov na jeden pixel (napr. 1 pri 8-bitovej farbe, 3 pri modeli RGB) a informácie o farebnej palete. Informácie v hlavičke môžu byť rôzne, keďže pre formát BMP boli časom vyvinuté rôzne verzie. BMP do istej miery podporuje aj kompresiu, ale najviac pre 8-bitovú farbu. Používa kompresiu typu RLE. Pre farbu reprezentovanú viac ako 1 bytom sa táto kompresia nepoužíva, lebo sa predpokladá, že v takto kódovaných obrázkoch (čo sú väčšinou fotografie) sa málokedy vyskytujú po sebe idúce pixely, ktoré by mali všetky byty rovnaké.

24 Najznámejšie rastrové formáty
3. JPEG Formát JPEG (JPG) využíva kompresiu pomocou DCT. Dáta v súbore sú uložené po blokoch, každý blok je na začiatku vyznačený tzv. markerom. V hlavičke sú opäť uložené základné informácie o rozmeroch a pod. 4. GIF Tento formát ukladá obrázky s najviac 8-bitovou farbou. Je schopný ukladať aj viac obrázkov v jednom súbore, čím vznikne animácia. Umožňuje aj priehľadnosť pozadia, teda pri použití obrázku vo formáte GIF sa pozadie vôbec nezobrazí. Obrázok vo formáte GIF má globálnu hlavičku, kde sú informácie platné pre všetky obrázky v súbore. Každý obrázok má aj svoju lokálnu hlavičku. Ak majú všetky obrázky rovnakú farebnú paletu, je uvedená na začiatku, inak je lokálna paleta uvedená pred každým obrázkom. Formát GIF využíva kódovanie LZW. JPEG GIF

25 Najznámejšie rastrové formáty
5. PNG Formát PNG je špeciálne navrhnutý pre prenos obrázkov po sieti. Rovnako ako GIF využíva kódovanie LZW, je však schopný uchovávať aj obrázky vo farebnom rozlíšení true color aj vo farebnom modeli RGBA. Na rozdiel od GIF však nie je schopný uchovať viac ako jeden obrázok v jednom súbore. Tento formát sa ďalej vyznačuje tzv. dvojrozmerným prekladaním typu ADAM7. Pixely nie sú uložené za sebou po riadkoch, ale tak, aby počas prenosu po sieti čo najskôr bolo možné približne rozoznať, čo je na obrázku. Obrázok je rozdelený do blokov 88 pixelov a každý blok je vykresľovaný v nasledujúcom poradí:

26 Najznámejšie rastrové formáty
6. TIFF Formát TIFF sa vyznačuje veľkou flexibilitou, ale aj pomerne veľkou zložitosťou a množstvom variánt. Používa sa vo fotografii, pri snímaní rôznymi prístrojmi (napr. mikroskop), pri skenovaní, faxovaní. Formát TIFF nepoužíva výlučne jednu kompresiu, ale môžu sa vyskytovať v podstate všetky typy kompresií. V súbore je potom uvedené, aký typ bol použitý. Dáta môžu byť takisto úplne nekomprimované. TIFF rovnako ako GIF umožňuje ukladať viacero obrázkov v jednom súbore. Každý obrázok v súbore má svoju hlavičku a informácie v hlavičke môžu byť veľmi rozsiahle, okrem štandardných informácií tam môžu byť informácie ako čas vytvorenia, copyright, rôzne detaily kompresie a pod. 7. PCX Formát PCX sa používa hlavne na kresby. Obsahuje hlavičku so základnými informáciami, farebnú paletu a obrazové dáta kódované poväčšine algoritmom RLE. Môže uchovávať obrázky s farebným rozlíšením až 24 bitov.

27 Vektorové formáty Ak ukladáme obrázok vo vektorovom formáte, nemáme uložené farby jednotlivých pixelov, ale objekty, z ktorých sa obrázok skladá. V takomto formáte sa oplatí ukladať najmä rôzne kresby a texty, ktoré nemajú veľký počet objektov a rastrový súbor by bol zbytočne veľký. Príklad: Majme daný napr. nasledujúci obrázok. Vo formáte JPG má veľkosť 21kB. Skúsme ho popísať pomocou objektov: 1. Elipsa so stredom (Ex,Ey), s polomermi a,b, s čiernym obrysom a s červenou výplňou 2. Obdĺžnik, ľavý horný roh (x1,y1), dĺžka d, šírka s, čierny obrys, modrá výplň 3. Obdĺžnik, ľavý horný roh (x2,y1), dĺžka d, šírka s, čierny obrys, modrá výplň 4. Čiara, začiatok (Zx,Zy), koniec (Kx,Ky), čierna farba

28 Vektorové formáty Príklad: Uvedený obrázok vo formáte SVG (1.3kB)
elipsa obdĺžnik obdĺžnik čiara

29 Vektorové formáty Príklad: Uvedený obrázok vo formáte PS (1.8kB)
obrys obdĺžnika výplň elipsy čiara obrys elipsy výplň obdĺžnika


Download ppt "Formáty grafických súborov"

Similar presentations


Ads by Google