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 (28 = 256 barev) nebo 3 B (216 = 65 536 barev)
Indexový mód
1bitová barva (21 = 2 barvy)
2bitová barva (22 = 4 barvy)
odkaz do palety s odstíny šedi
Pseudocolor (8 bit)
EGA, nejnižší používaný standard VGA ve vyšším rozlišení
Greyscale
CGA
4bitová barva (24 = 16 barev)
monochromatické, často černobílé
odkaz do palety s odstíny RGB (8-8-8) (256×256×256=16 777 216 = 224) 1 B na všechny kanály dohromady, proto výběr pouze 28 = 256 z celkově možných 224 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 21 = 2
2-bit 22 = 4
monochromatický (černobílý) obraz
CGA, Macintosh
8-bit 28 = 256
odstíny šedi (static grey)
CGA
Color Graphic Adapter
Textový režim
IBM 1981 40×25 a 80×25 v 24 = 16 barvách
Grafický režim
320×200 pixelů při v 22 = 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
Default EGA 16-color palette Color rgbRGB Decimal 0 — black (#000000) 0 0 Enhanced Graphics 1 — blue (#0000AA) 1 1 Adapter 2 — green (#00AA00) 10 2 1984 IBM AT 3 — cyan (#00AAAA) 11 3 4 — red (#AA0000) 100 4 4-bit RGB(I) 5 — magenta (#AA00AA) 101 5 I = intenzita 6 — brown (#AA5500) 10100 20 4 2 = 16 barev 7 — white / light gray (#AAAAAA) 111 7 3 (2 × 2 intenzity) 8 — dark gray / bright black (#555555) 111000 56 při rozlišení 640×350 9 — bright blue (#5555FF) 111001 57 bodů 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)
3 bity na R a G, 2 bity na B
B menší citlivost
8×8×4=256 VGA, Super VGA
12-bit na pixel
28 = 256
212 = 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
5 bitů (32 barev) na barevný kanál 32×32×32=32 768
16-bit
216 = 65 536
5 bitů na R a B, 6 bitů G (větší citlivost) 32×64×32=65 536
18-bit
215 = 32 768
218 = 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
8 bitů (256 barev) na barevný kanál
256×256×256=16 777 216
32-bit
224 = 16 777 216
232 = 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
4b
1b
Příklady
True Color
8 b (3-3-2)
Barevné hloubky Barevná hloubka 3-3-2
High Color High Color True Color True Color
Počet bitů
R
G
B
A
8b
3
3
2
-
16 b 16 b 18 b 24 b 32 b
5 5 6 8 8
6 5 6 8 8
5 5 6 8 8
1 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:
Kompresní metody:
historicky vazbou na aplikaci technickými důvody rozdílnou metodou komprese 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
Video (30 fps, 720×480)
bez komprese ~ 3 MB JPEG ~ 200 kB 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:
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
čítač (počet stejných pixelů) vlastní hodnota barvy (která se opakuje)
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
Seřazení znaků podle četnosti
často používané symboly mají kratší kódy
Další příkazy
přiřazení několikabitových kódů písmenům
Opakovače nahrazeny Huffmanovými kódy
úseky opakujících se pixelů
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)
Sečtení posledních dvou (cd + b = 9)
výsledek opět zařadíme podle velikosti (a, bcd). 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
a (1)
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
bcd (0)
cd (1)
Další opakování
abcd
výsledek zařadíme podle velikosti mezi ostatní (a, cd, b) (11, 5, 4)
c (1)
b (0)
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 212 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
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
u kvalitních obrázků nejsou stejné sousední pixely
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
1. Transformace bar. prostoru: RGB →YCBCR
obrazová data považována za vzorky spojitých funkcí naměřených v diskrétní síti pixelů lidské oko je citlivější na detaily ve složce Y (jas) než CB(blue) a CR(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
výsledek DCT
u, v prostorová frekvence (od 0 do 8)
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
Standardní JPEG ("Baseline")
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 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ů
definice oblastí zájmu (ROI)
stejné barevné výstupy na monitoru i na tiskárně, průhlednost 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
možnost prokládání řádků
po získání ¼ objemu zobrazen náhled
Nevýhody
každý může mít vlastní paletu
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 00 06 08 10 11 12 13 16 19 20 22 24 26 28 29 30 31 33 34
Sekvence 47 49 46 38 39 61 01 00 01 00 80 00 00 ff 80 00 ff ff ff 2c 00 00 00 00 01 00 01 00 00 02 02 44 01 00 3b
Význam bytové sekvence signatura GIF a verze – řetězec '89a' šířka logické obrazovky: jeden pixel výška logické obrazovky: jeden pixel bitové pole: povolení globální barvové palety index barvy pozadí poměr výšky a šířky pixelu: 1÷1 první barva v paletě: oranžový odstín druhá barva v paletě: čistě bílá značka začátku rámce x-ová pozice levého okraje rámce: nultý sloupec y-ová pozice horního okraje rámce: nultý řádek šířka rámce: jeden pixel výška rámce: jeden pixel bitové pole: bez palety, bez prokládání a animace počáteční velikost LZW kódu v bitech-1 velikost bloku zakódovaného pomocí LZW zakódovaná data rámce (1 pixel s nulovým indexem) ukončovací znak bloku zakódovaného pomocí LWZ 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
Informace o průhlednosti možno uložit až v 16 bitech
až 16 bitů na barvu
míchání obrazů
Nemožnost jednoduchých animací
jediná nevýhoda oproti GIF
Typ indexed (color type 3) greyscale (color type 0) greyscale & alpha (color type 4) truecolor (RGB: color type 2) truecolor & alpha (RGBA: color type 6)
Bity 1 1 -
2 2 -
4 4 -
8 8 16 2×8 2×16 3×8 3×16 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
konec řádku (CRLF); detekce náhrady za jinou sevenci
1A
byte zastavující výpis souboru v DOS
0A
detekce konce přenosu (LF)
Animované PNG
Multiple-image Network Graphics – MNG
při vývoji PNG (1995) rozhodnuto nepodporovat
2001 specifikace MNG podpora
u gif v té době nevyužíváno
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
fotografie a fotorealistické vizualizace
PNG
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
GIF
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
Uložení více obrázků do jednoho souboru
několik stránek dokumentu jeden soubor
Možnost zpracovávat obraz po částech
bez komprese, RLE, LZW, ZIP, JPEG
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
Komprimovaná forma
komprese RLE nebo Huffman
Volná forma
varianta bez komprese umožňuje zapsat obraz pixel po pixelu
1 nebo 8 bitů
vhodné pro programátory
Výhody
jednoduchost realistická grafika ukládání a načítání textur
Struktura TGA Hlavička 18 B rozlišení, orientace, kódování
Paleta nepovinná
Rastrová data po řádcích
lze nastavit obrácené pořadí
Offset 0 1 2 3 5
Název IDLength ColorMapType ImageType CMapStart CMapLength
7 CMapDepth 8 10 12 14
XOffset YOffset Width Height
16 PixelDepth 17 ImageDescriptor
Význam položky velikost obrazového identifikátoru typ barevné mapy typ obrázku počátek barevné palety délka barevné palety bitová hloubka položek barevné palety X-ová souřadnice počátku obrázku Y-ová souřadnice počátku obrázku šířka obrázku uvedená v pixelech výška obrázku uvedená v pixelech počet bitů na jeden pixel (bitová hloubka) popisovač obrázku
BMP (Microsoft Windows Bitmap)
Někdy i DIB (Device-Independent Bitmap)
1, 4, 8, 24 bit/px
Extrémní jednoduchost, ale nehospodárnost
obdoba XBM a XPM
Interní formát Windows i OS/2 Podpora 4 formátů
MS, IBM, 1988,
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
špatná komprimační metoda
poslední není možné použít (ani pro alfa-kanál) od XP možno, ale ne všechny programy nefunguje pro truecolor (pouze indexový mód) někdy i nárůst velikosti
vykreslování odspodu (pův. IBM)
Struktura BMP
Hlavička souboru BITMAPFILEHEADER
Název struktury
Význam
BITMAPFILEHEADER
hlavička BMP souboru
BITMAPINFOHEADER
informační hlavička o obrázku
RGBQUAD[]
tabulka barev (paleta)
BITS
pole bitů obsahujících vlastní rastrová data (pixely)
Název bfType
14 B bfSize
bfReserved1 bfReserved2 bfOffBits
Délka Význam 2 B Identifikátor formátu BMP, kód znaků „BM“ 4 B Celková velikost souboru s obrazovými údaji Některé aplikace ignorují a dosazují nulu 2 B Rezervováno (0) 2 B Rezervováno (0) 4 B Posun struktury BITMAPFILEHEADER od začátku vlastních obrazových dat.
Struktura BMP Hlavička obrazu BITMAPINFOHEADER 40 B
Název biSize biWidth biHeight biPlanes
Délka Význam 4 B celková velikost datové struktury BITMAPINFOHEADER 4 B šířka obrazu v pixelech 4 B výška obrazu v pixelech 2 B počet bitových rovin pro výst. zařízení – vždy 1
2 B celkový počet bitů na pixel (hodnoty 1, 4, 8, 24) 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é) biBitCount biCompression
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í