PZORA http://pzora.wz.cz 1. přednáška
Viditelné světlo elektromagnetické záření o vlnových délkách 400-700 nm
Barevné vidění lidské oko vnímá: dominantní vlnovou délku (odstín) čistotu barvy (sytost) jas (intenzitu)
Monochromatické, achromatické světlo monochromatické světlo - s konkrétní vlnovou délkou achromatické ("bílé") - signál složený ze záření všech vlnových délek viditelného spektra difůzní odraz: odraz > 80% bílé předměty odraz < 3% černé předměty barva = schopnost předmětů odrážet světlo "červený předmět odráží jen červené světlo" hnědá barva "neexistuje"
Barevné modely jak vyjádřit libovolnou barvu pomocí několika málo parametrů? RGB CMY(K) HLS HSV YUV ...atd.
RGB Red - Green - Blue používá se v monitorech (televizích atd.) aditivní model čím více svítí jednotlivé složky, tím světlejší je výsledná barva každá barva X se dá vyjádřit jako X = rR + gG + bB 0 ≤ r,g,b ≤ 1 pro odstíny šedi platí r = g = b (0 - černá, 1 - bílá) grafická reprezentace = RGB kostka
RGB kostka
CMY(K) Cyan-Magenta-Yellow (blacK) používá se v tiskárnách dobře viditelné např. na billboardech subtraktivní model čím více jsou body nahusto a přes sebe, tím tmavší výsledek bílá barva = nepotištěný papír vyjádření X = cC + mM + yY = (1-c)R + (1-g)G + (1-b)B tj. CMY a RGB jsou vzájemně duální
Novinový tisk
HLS Hue-Lightness-Saturation intuitivní v graf. editorech odstín, světlost, sytost intuitivní v graf. editorech
Počítačová reprezentace obrazu diskrétní jednotka obrazu = pixel (picture element) každý pixel má jedinou vlastnost - barvu obraz = matice pixelů typická rozlišení 1024x768, 1280x1024, 1600x1200 moderní fotoaparáty: 4 a více megapixelů
Počítačová reprezentace obrazu 2 na disku = binární soubor = posloupnost bytů kolik bitů potřebujeme, abychom vyjádřili barvu 1 pixelu...? barevné rozlišení (barevná hloubka) počet barev v obrázku nejčastěji se udává v bitech na pixel typicky 2 bity - černobílý obraz 8 bitů - 256 barev 16 bitů - highcolor - 65536 barev 24 bitů - true color - 224 = cca 16,7 mil. barev
Paměťové nároky obrázek 1000x1000 pixelů paměťově náročné černobílý: 106 x 2 bitů = 106 / 8 bytů = cca 250kB 256 barev: 106 x byte = 106 bytů = cca 1MB truecolor: 106 x 3 bytů = cca 3MB paměťově náročné zabírá hodně místa na pevném disku dlouhá doba přenosu po pomalých linkách (Internet)
Komprese obrazu neztrátová ztrátová po kompresi a dekompresi získáme přesně původní obraz RLE, Huffmanovo kódování ztrátová část informace se při kompresi zahodí ztráta kvality obrazu (pokud možno neznatelná nebo málo znatelná) JPEG
Paleta (index) vhodné pro kresby, resp. obrázky s omezenou barevnou hloubkou (zpravidla do 256 barev) kód barvy R G B 121 154 10 1 12 125 45 2 47 3 53 na výstup se místo hodnot R, G, B zapíše kód barvy hodnoty R, G, B se pak dohledají v tabulce
Metoda RLE Run Length Encoding princip problém zakódování délkou běhu, využívá paletu vhodné pro předlohy s velkými stejnobarevnými plochami (kresby) princip posloupnost opakujících se hodnot se nahradí dvojicí [počet opakování, hodnota] př. 11 11 11 11 11 8 8 8 8 45 45 45 45 45 45 45 [5 11] [4 8] [7 45] problém může dojít k záporné kompresi (kdy?)
Huffmanovo kódování používá kratší bitové kódy pro ty hodnoty, které se v souboru vyskytují nejčastěji obecná metoda, vhodná i pro jiná data než obrazová rozšířený Huffman: LZW (Lempel-Ziv-Welch) "hodnotou" nemusí být jediný znak základ ZIP komprese
JPEG od počátku 80.let pojmenovaný podle skupiny, kterou byl vytvořen: Joint Photographic Experts Group speciálně pro ukládání fotografií (obrazů se spojitými, plynulými barevnými přechody) komplexní matematický aparát v pozadí založen na DCT (diskrétní kosinové transformaci)
Nekonečné řady & konvergence počítače umějí jen sčítat a násobit problém: jak počítat složitější funkce (ln, sin)? Taylorova věta: každá "rozumná" funkce se dá psát jako čím větší počet členů n, tím menší chyba
Nekonečné řady & konvergence například platí: Taylorova řada používá k vyjádření dané funkce polynom JPEG využívá Fourierovu řadu (součet kosinů)
Fourier na obrazová data vezměme 1 řádek obrázku, např. x 1 2 3 4 5 6 7 f(x) 10 20 30 budeme jej chtít vyjádřit jako speciální typ Fourierovy řady tj. chceme zjistit koeficienty a0, ... , a7
Fourier na obrazová data: DCT získáme je podle předpisu ...a máme spektrum funkce f(x) j 1 2 3 4 5 6 7 aj 31,82 7,911 -26,92 -8,657 3,536 0,229 -0,328 -3,524 každý z koeficientů aj v sobě nese část informace o celé původní funkci (počítá se ze všech jejích bodů) z koeficientů lze původní funkci rekonstruovat
Fourier na obrazová data: IDCT počítáme částečné součty podle vztahu x 1 2 3 4 5 6 7 S0(x) 11 S1(x) 15 13 12 10 9 8 S2(x) 19 24 23 14 -4 S3(x) 27 21 S4(x) 22 28 S5(x) S6(x) S7(x) 20 30
Princip JPEG už součet S3 slušně aproximuje původní snímek zapamatujeme si jen koeficienty a0, a1, a2, a3, zbylé zahodíme odtud ztrátová komprese ve skutečnosti se Fourier neprovádí na řádky, ale na čtverečky 8x8 pixelů o něco složitější, principiálně stejné kvalita - "kolik koeficientů si budeme pamatovat?"
JPEG v různé kvalitě 50%, 8kB 20%, 6kB 5%, 2kB