RASTROVÝ OBRAZ
Rastrový obraz Dvourozměrná matice bodů (pixelů) z nichž každý nabývá určitých hodnot podle typu obrazu tvoří souvisle vyplněnou oblast (rastr) Bitová hloubka definuje maximální počet odstínů http://homepage.ntlworld.com/lynnfo/educatio/fileswor/filesw03.html
Rastrový obraz Obraz barevného prostoru definován 3 kanály R, G, B Kanál představuje barevné složky vytvářející rastrový obraz složen z pixelů bitová hloubka kanálu definuje maximální počet odstínů kanálu http://www.libpng.org/pub/png/spec/iso, http://www.webstyleguide.com/wsg2/graphics/displays.html
Monochromatický obraz Pixel obrazu: zhasnuto, rozsvíceno 1 bit http://www.webstyleguide.com/wsg2/graphics/displays.html
Indexový mód Pixel obrazu: index do barevné palety obvykle 1 B nebo 3 B http://www.webstyleguide.com/wsg2/graphics/displays.html
TrueColor Pixel obrazu: přímo barva (r,g,b) neindexový mód http://www.webstyleguide.com/wsg2/graphics/displays.html
Indexový mód Paleta (mapa barev) hodnota pixelu = umístění do převodní tabulky převodní tabulka index reprezentován bytem (2 8 = 256 barev) nebo 3 B (2 16 = 65 536 barev)
Indexový mód 1bitová barva (2 1 = 2 barvy) monochromatické, často černobílé 2bitová barva (2 2 = 4 barvy) CGA 4bitová barva (2 4 = 16 barev) EGA, nejnižší používaný standard VGA ve vyšším rozlišení Greyscale odkaz do palety s odstíny šedi Pseudocolor (8 bit) odkaz do palety s odstíny RGB (8-8-8) (256 256 256=16 777 216 = 2 24 ) 1 B na všechny kanály dohromady, proto výběr pouze 2 8 = 256 z celkově možných 2 24 barev Direct Color (24 bit) odkaz (r,g,b) do 3 barevných palet V pixelu 3 hodnoty, obvykle 24 bit snadná změna všech barev bez změny rastru obrazu
Černobílý obraz Podle počtu bitů na pixel: 1-bit 2 1 = 2 monochromatický (černobílý) obraz 2-bit 2 2 = 4 CGA, Macintosh 8-bit 2 8 = 256 odstíny šedi (static grey)
CGA Color Graphic Adapter IBM 1981 Textový režim 40 25 a 80 25 v 2 4 = 16 barvách Grafický režim 320 200 pixelů při v 2 2 = 4 pevně zvolených barvách Barevná paleta CGA 1. možnost Barevná paleta CGA 2. možnost default 5 magenta default 4 red 3 cyan 7 white (light gray) 2 green 6 brown (orange)
EGA Enhanced Graphics Adapter 1984 IBM AT 4-bit RGB(I) I = intenzita 2 4 = 16 barev (2 3 2 intenzity) při rozlišení 640 350 bodů Default EGA 16-color palette Color rgbrgb Decimal 0 black (#000000) 0 0 1 blue (#0000AA) 1 1 2 green (#00AA00) 10 2 3 cyan (#00AAAA) 11 3 4 red (#AA0000) 100 4 5 magenta (#AA00AA) 101 5 6 brown (#AA5500) 10100 20 7 white / light gray (#AAAAAA) 111 7 8 dark gray / bright black (#555555) 111000 56 9 bright blue (#5555FF) 111001 57 10 bright green (#55FF55) 111010 58 11 bright cyan (#55FFFF) 111011 59 12 bright red (#FF5555) 111100 60 13 bright magenta (#FF55FF) 111101 61 14 bright yellow (#FFFF55) 111110 62 15 bright white (#FFFFFF) 111111 63
Barevný obraz 8-bit na pixel (3-3-2) 2 8 = 256 3 bity na R a G, 2 bity na B B menší citlivost 8 8 4=256 VGA, Super VGA 12-bit na pixel 2 12 = 4 096 4 bity (16 barev) na barevný kanál 16 16 16=4 096 Silicon Graphics, Amiga
Barevný obraz True Color High Color 15-bit 2 15 = 32 768 5 bitů (32 barev) na barevný kanál 32 32 32=32 768 16-bit 2 16 = 65 536 5 bitů na R a B, 6 bitů G (větší citlivost) 32 64 32=65 536 18-bit 2 18 = 262 144 6 bitů na barevný kanál 64 64 64=262 144 http://www.diycalculator.com/popup-h-console.shtml
Barevný obraz True Color True Color 24-bit 2 24 = 16 777 216 8 bitů (256 barev) na barevný kanál 256 256 256=16 777 216 32-bit 2 32 = 4 294 967 296 8 bitů na každý barevný kanál + 8 bitů pro α-kanál optimalizace rychlosti Deep Color 30/36/48-bit RGB 1 073 741 824, 68 719 476 736, 281 474 976 710 656 http://www.diycalculator.com/popup-h-console.shtml
Příklady 4 b 1 b
Příklady True Color 8 b (3-3-2)
Barevné hloubky Barevná hloubka Počet bitů R G B A 3-3-2 8 b 3 3 2 - High Color 16 b 5 6 5 - High Color 16 b 5 5 5 1 18 b 6 6 6 - True Color 24 b 8 8 8 - True Color 32 b 8 8 8 8
KOMPRESE OBRAZU
Komprese rastrového obrazu Vysoká paměťová náročnost (roste kvadraticky s rozlišením) Obrovské množství formátů dáno: historicky vazbou na aplikaci technickými důvody rozdílnou metodou komprese Kompresní metody: Run length encoding (RLE) bezztrátová, PCX (ZSoft PaintBrush) Huffmanovo kódování (CCIT) bezztrátová, TIFF slovníkové kódování (LZW) bezztrátová, GIF, PNG, ZIP, ARJ diskrétní kosinová transformace (DCT) ztrátová, JPEG Hlavička souboru, definice palety a další doplňující informace se nekódují
Komprese rastrového obrazu Obrázek bez komprese ~ 3 MB JPEG ~ 200 kb Video (30 fps, 720 480) bez komprese ~ 21 MBps (31 s/cd) MPEG ~ 74 min/cd (VHS kvalita) Parametry kompresní poměr kvalita rekonstrukce složitost implementace, rychlost přenosové zpoždění Originál, 108,5 kb o 92 % inf. méně, 4,82 kb o 84 % inf. méně, 9,37 kb o 98 % inf. méně, 1,14 kb
Run length encoding (RLE, RLC) Kódování délky běhu, bezztrátová; PCX, JPEG (pomocná) Předpoklad: opakují se hodnoty sousedních pixelů Provádí se zápis: čítač (počet stejných pixelů) vlastní hodnota barvy (která se opakuje) Příklad: wwwwwwwkkwwwwwwbbbbrrrwwwwwwwwwwwbbb 7w2k6w4b3r11w3b Zpracování po řádku úplně jiná komprese po otočení o 90 vodorovná čára efektivní, u svislých ne Možnost záporné komprese v případě neopakujících se pixelů Možnost ztrátové RLE když se sousední pixely liší málo, nahradí se stejnou hodnotou http://www.siggraph.org/publications/newsletter/volume-41-number-4/afis-data-compression
Huffmanovo kódování (CCIT) Navrženo pro přenos čb. dokumentů faxem, dnes i JPEG Provedení kódování RLE úseky opakujících se pixelů Seřazení znaků podle četnosti přiřazení několikabitových kódů písmenům Opakovače nahrazeny Huffmanovými kódy často používané symboly mají kratší kódy Další příkazy FILL (vyplň do konce řádku) pro odolnost proti poruchám kódy EOL a RTC Zdokonalená metoda sleduje se změna i oproti předchozímu řádku http://www.ams.org/featurecolumn/archive/compression5.html
Příklad Huffmanova kódování Setřídění podle četnosti; např. (a, b, c, d) (obvykle relat.) Sečtení posledních dvou (c + d = 5) výsledek zařadíme podle velikosti mezi ostatní (a, cd, b) (11, 5, 4) Sečtení posledních dvou (cd + b = 9) výsledek opět zařadíme podle velikosti (a, bcd). Další opakování až dojdeme k celkovému součtu (rel. 1) (a + bcd = 20). Posledním dvěma znakům přiřadíme kódové znaky 1, 0 1 vyšší pravděpodobnost (a), 0 nižší (bcd) Opakování zpětný postup (cd ~ 1, b ~ 0) dokud nepřiřadíme kódové znaky všem zdrojovým znakům Výsledný kód znaku je sestaven ze znaků 1 a 0 podle toho, jak se daný znak seskupoval s ostatními znaky abcd a (1) bcd (0) cd (1) b (0) c (1) d (0) znak četnost kód a 11 1 b 4 00 c 3 011 d 2 010
Slovníkové kódování Obecná metoda pův. LZ77, vylepšená LZW (Lempel-Ziv-Welch) známá ze ZIP či RAR Předpoklad: některá slova se v textu vyskytují častěji jsou ukládána do slovníku ve výstupním řetězci jsou nahrazena odpovídajícími kódovými slovy začíná se od písmen abecedy, slova se zvětšují a pokračuje se do vyčerpání místa slovníku obvykle 2 12 položek; pak se buď reorganizuje (uvolní se ty položky, které se málo vyskytují) nebo se zvětší
Příklad slovníkového kódování blablablalalb nejprve všechny znaky Postupné prohledávání celého souboru část rozdělíme na dvě posuvná okna první tvoří historii, ve druhém hledáme posloupnost znaků, která se už vyskytuje v okně historie pokud již obsaženou posloupnost najdeme, nahradíme ji kódem (o kolik znaků zpět, délka sekvence) fráze kód b 1 l 2 a 3 bl 4 la 5 ab 6 bla 7 alb 8 lal 9 lalb 10 http://www2-fs.informatik.uni-tuebingen.de/~reinhard/datkom/lzw_applet.html
Diskrétní kosinová transformace JPEG JPEG File Interchange Format (JFIF) Joint Photographic Experts Group Optimalizováno pro fotografie předchozí metody neefektivní pro barevné obrázky s mnoha přechody u kvalitních obrázků nejsou stejné sousední pixely Vhodná ztrátová komprese snížení kvality na 75 % většinou nejde zrakem rozeznat, kompresní poměr však značný (20:1 až 25:1) není vhodná pro obrazy s nižším barevným rozlišením a pro čb. obrázky vhodné tiff, gif, png Rychlost zobrazení miniatur rozdělení obrázku na oblasti 8 8 členy oblastí rozděleny podle důležitosti nejdůležitější člen (DC) se zapisuje samostatně, ostatní se komprimují 8 menší obrázek se dá vykreslit ihned
JPEG, DCT Forma DFT obrazová data považována za vzorky spojitých funkcí naměřených v diskrétní síti pixelů 1. Transformace bar. prostoru: RGB YC B C R lidské oko je citlivější na detaily ve složce Y (jas) než C B (blue) a C R (red) 2. Redukce barev (downsampling) pouze barevné složky, komponenta Y se nemění 2h1v: průměrování sousedních dvojic (6 4 B; ušetří 33% prostoru) 2h2v: průměrování čtveřic nejčastěji (12 6 B; ušetří 50% prostoru) 3. Data rozdělena do čtverců 8 8, každý čtverec podroben DCT 4. Diskrétní kosinová transformace
JPEG, DCT matice 8 8 je popsána jako kombinace 64 čtverců odečte se 256/2 = 128
JPEG, DCT provede se DCT u, v prostorová frekvence (od 0 do 8) výsledek DCT
JPEG, DCT 5. Kvantování koeficientů DCT stanovuje se ztráta informace a stupeň komprese vydělení Fourierova obrazu kvantizačním činitelem prvky kvantizační tabulky dané komisí JPEG zaokrouhlení příklad (DC člen)
JPEG, DCT Výsledek kvantování řídká matice 8 8 DC člen (vlevo nahoře) největší vliv stejnosměrná složka harmonického rozkladu AC členy ovlivňují vyšší frekvence čím dál od DC jsou méně významné
JPEG, DCT 6. Kódování využívá se toho, že matice je řídká zapíše se DC a zbytek je kódován Hufmanovým nebo aritmetickým kódováním ( zigzag order) původní segment po dekomprimaci
JPEG obrázek s rozdílnou mírou ztrátovosti komprese
JPEG Progresivní JPEG načítány progresivně načteno nejdříve v malém rozlišení a postupné zjemnění o něco většívelikost, menší podpora Standardní JPEG ("Baseline") načítány shora dolů Photoshop Save As kvalita 0 12 Save for Web optimalizováno bez EXIF kvalita 0 100
JPEG 2000 Diskrétní vlnková transformace discrete wavelet transform, DWT Výhody odstranění viditelných makropixelů 8 8 lepší komprese (až o 20%) při menší ztrátě kvality odolnost proti chybám progresivnost načítání podpora 256 datových kanálů stejné barevné výstupy na monitoru i na tiskárně, průhlednost definice oblastí zájmu (ROI) některé regiony obrazu možno kódovat s větší kvalitou ztrátová i bezztrátová komprese lepší správa EXIF Obdélníkové dlaždice libovolné velikosti
Porovnání JPEG a JPEG 2000 při stejné velikosti obrazu a vysokém stupni komprese
Graphics Interchange Format (GIF) Paleta a 1 byte na pixel Slovníkové kódování (LZW84) Výhody více obrázků v jednom souboru každý může mít vlastní paletu možnost prokládání řádků po získání ¼ objemu zobrazen náhled Nevýhody maximální počet současně použitých barev palety je 256 fa CompuServe (formát) a Unisys (kódování) zpoplatňovala Verze Formát GIF87a, verze GIF89a navíc podpora průhledné barvy, animací, metadat
GIF příklad obrázku (1 pixel) Offset Sekvence Význam bytové sekvence 00 47 49 46 38 39 61 signatura GIF a verze řetězec '89a' 06 01 00 šířka logické obrazovky: jeden pixel 08 01 00 výška logické obrazovky: jeden pixel 10 80 bitové pole: povolení globální barvové palety 11 00 index barvy pozadí 12 00 poměr výšky a šířky pixelu: 1 1 13 ff 80 00 první barva v paletě: oranžový odstín 16 ff ff ff druhá barva v paletě: čistě bílá 19 2c značka začátku rámce 20 00 00 x-ová pozice levého okraje rámce: nultý sloupec 22 00 00 y-ová pozice horního okraje rámce: nultý řádek 24 01 00 šířka rámce: jeden pixel 26 01 00 výška rámce: jeden pixel 28 00 bitové pole: bez palety, bez prokládání a animace 29 02 počáteční velikost LZW kódu v bitech-1 30 02 velikost bloku zakódovaného pomocí LZW 31 44 01 zakódovaná data rámce (1 pixel s nulovým indexem) 33 00 ukončovací znak bloku zakódovaného pomocí LWZ 34 3b ukončovací znak GIF souboru: znak ';'
Portable Graphics Network (PNG) Mnoho barevných rozlišení Bezztrátové slovníkové kódování (LZ77) Předzpracování každého pixelu None (není upravován) Sub (uložen rozdíl od předchozího vlevo) Up (uložen rozdíl od předchozího nahoře) Average (uložen průměr daného pixelu a sousedů vlevo a nahoře) Paeth (uložena algoritmem získaná hodnota ze souseda vlevo, vlevo nahoře a nahoře Na každý řádek lze aplikovat jinou metodu pro zlepšení komprese poté LZ77 Dvourozměrné prokládací schéma po přenesení malého počtu dat je možné rozlišit obrázek
Portable Graphics Network (PNG) True Color až 16 bitů na barvu Informace o průhlednosti možno uložit až v 16 bitech míchání obrazů Nemožnost jednoduchých animací jediná nevýhoda oproti GIF Typ Bity indexed (color type 3) 1 2 4 8 - greyscale (color type 0) 1 2 4 8 16 greyscale & alpha (color type 4) - - - 2 8 2 16 truecolor (RGB: color type 2) - - - 3 8 3 16 truecolor & alpha (RGBA: color type 6) - - - 4 8 4 16
Struktura PNG Hlavička 8 B vždy stejná Jednotlivé sekce (chunk) s vlastní hlavičkou 4 B Byte Význam bytu 89 byte s nejvýše nastaveným bitem; detekce podpory 8 bitového přenosu dat 50 4E 47 ASCII řetězec PNG identifikace formátu 0D 0A 1A 0A konec řádku (CRLF); detekce náhrady za jinou sevenci byte zastavující výpis souboru v DOS detekce konce přenosu (LF)
Animované PNG Multiple-image Network Graphics MNG při vývoji PNG (1995) rozhodnuto nepodporovat u gif v té době nevyužíváno 2001 specifikace MNG podpora Konqueror, ostatní pomocí pluginů (Mozilla do 2003) APNG neoficiální formát PNG s podporou animací, 2004 zpětná kompatibilita s PNG zobrazí pouze první obrázek standardizace odmítnuta (2007) podpora Mozilla, Opera animovaný.png soubor
Porovnání JPEG PNG GIF fotografie a fotorealistické vizualizace menší ztrátová komprese speciálně navržená pro fotografii PNG má ve stejné kvalitě až 5-10 větší soubory text, čárová grafika, čisté barevné plochy a ostré rozhraní barev průsvitnost jednoduché animace
Tag Image File Format (TIFF) Ukládání snímků určených pro tisk neoficiální standard; 1986 fa Aldus, pův. pro čb. skenery, faxy Variabilita formátu různé komprese bez komprese, RLE, LZW, ZIP, JPEG Uložení více obrázků do jednoho souboru několik stránek dokumentu jeden soubor Možnost zpracovávat obraz po částech vhodné pro extrémně velké obrazy Struktura Image File Header hlavička souboru Image File Directory adresář souboru bitmapová data
Targa (TGA) Truevision (dnes Pinnacle Systems) podpora alfa kanálu 1 nebo 8 bitů Komprimovaná forma komprese RLE nebo Huffman Volná forma varianta bez komprese umožňuje zapsat obraz pixel po pixelu vhodné pro programátory Výhody jednoduchost realistická grafika ukládání a načítání textur
Struktura TGA Hlavička 18 B Paleta rozlišení, orientace, kódování nepovinná Rastrová data po řádcích lze nastavit obrácené pořadí Offset Název Význam položky 0 IDLength velikost obrazového identifikátoru 1 ColorMapType typ barevné mapy 2 ImageType typ obrázku 3 CMapStart počátek barevné palety 5 CMapLength délka barevné palety 7 CMapDepth bitová hloubka položek barevné palety 8 XOffset X-ová souřadnice počátku obrázku 10 YOffset Y-ová souřadnice počátku obrázku 12 Width šířka obrázku uvedená v pixelech 14 Height výška obrázku uvedená v pixelech 16 PixelDepth počet bitů na jeden pixel (bitová hloubka) 17 ImageDescriptor popisovač obrázku
BMP (Microsoft Windows Bitmap) Někdy i DIB (Device-Independent Bitmap) MS, IBM, 1988, obdoba XBM a XPM Interní formát Windows i OS/2 Podpora 4 formátů 1, 4, 8, 24 bit/px Extrémní jednoduchost, ale nehospodárnost bez komprese nebo RLE Nevýhody množství rezervovaných a zbytečných položek v hlavičce v barvové paletě rezervovány 4 B poslední není možné použít (ani pro alfa-kanál) od XP možno, ale ne všechny programy špatná komprimační metoda nefunguje pro truecolor (pouze indexový mód) někdy i nárůst velikosti vykreslování odspodu (pův. IBM)
Struktura BMP Název struktury BITMAPFILEHEADER BITMAPINFOHEADER RGBQUAD[] BITS Význam hlavička BMP souboru informační hlavička o obrázku tabulka barev (paleta) pole bitů obsahujících vlastní rastrová data (pixely) Hlavička souboru BITMAPFILEHEADER 14 B Název Délka Význam bftype 2 B Identifikátor formátu BMP, kód znaků BM bfsize 4 B Celková velikost souboru s obrazovými údaji Některé aplikace ignorují a dosazují nulu bfreserved1 2 B Rezervováno (0) bfreserved2 2 B Rezervováno (0) bfoffbits 4 B Posun struktury BITMAPFILEHEADER od začátku vlastních obrazových dat.
Struktura BMP Hlavička obrazu BITMAPINFOHEADER 40 B Název Délka Význam bisize 4 B celková velikost datové struktury BITMAPINFOHEADER biwidth 4 B šířka obrazu v pixelech biheight 4 B výška obrazu v pixelech biplanes 2 B počet bitových rovin pro výst. zařízení vždy 1 bibitcount 2 B celkový počet bitů na pixel (hodnoty 1, 4, 8, 24) bicompression 4 B typ komprimační metody obrazových dat 0 (BI_RGB), 1 (BI_RLE8) nebo 2 (BI_RLE4) bisizeimage 4 B velikost obrazu v bytech (pokud nekomprimovaná, může být 0) bixpelspermeter 4 B horizontální rozlišení výstupního zařízení v pixelech na metr (většina aplikací vkládá 0) biypelspermeter 4 B vertikální rozlišení výst. zařízení v pixelech na metr (většina aplikací vkládá 0) biclrused 4 B celkový počet barev použitých v bitmapě; nejčastější 0 je maximální počet barev biclrimportant 4 B počet barev, které jsou důležité pro vykreslení bitmapy; nejčastější 0 všechny barvy důležité)
WebP Nový formát od Google (2010) plánovaná konkurence JPEG, snížení velikosti až o 40 % základem intra-frame komprimace WebM zamýšlená jako možná náhrada flash videa Predikce založen na knihovně x264 předpovězení hodnot pixelů podle okolí, uložení chyby http://www.root.cz/clanky/ma-novy-formatwebp-od-google-sanci-nahradit-jpeg/
RAW Minimálně zpracovaná data přímo ze snímače digitálního fotoaparátu bez použití interpolace Třída souborových formátů každý výrobce implementuje jinak vlastní přípona Canon.crw a.cr2 Nikon.nef Olympus.orf Minolta.mrw Panasonic.raw není přímo použitelný jako obrázek ale obsahuje všechny potřebné informace k jeho vytvoření