Komprese obrazu Verze:., ze dne:. června 6 Václav Hlaváč a Tomáš Svoboda Czech Technical University, Faculty of Electrical Engineering Center for Machine Perception, Prague, Czech Republic svoboda@cmp.felk.cvut.cz http://cmp.felk.cvut.cz/~svoboda Úvod Cíl spočívá v redukci množství dat potřebných k reprezentaci obrazu. Spotřebované množství paměti se měří například v bitech. Použití pro přenos a uchování dat. Proč se liší komprese obrazů od komprese D dat? /74 Rozdělení metod komprese obrazů. Segmentace objektů v obraze. /74 Je potřebná interpretace obrazu. Metody jsou závislé na datech. Dosahuje se nejvyšších kompresních poměrů. Není možná zpětná rekonstrukce výchozího obrazu.. Odstranění redundandní informace. Data se neinterpretují. Lze použít na libovolná obrazová data. Využívá se statistických závislostí v obraze (sekvenci obrazů).
Kódování segmentovaných dat () Kódování hranic oblastí 4/74 Polygonální aproximace hranice Kódování segmentovaných dat () Kódování hranic oblastí /74 Řetězový (též Freemanův) kód, 4-okolí Řetězový kód:,,,,,,,,,,,. Derivace kódu:,,,,,,,,,,,. Kódování segmentovaných dat () Kódování hranic oblastí 6/74 Řetězový (též Freemanův) kód, 8-okolí 4 6 7 Kód: 7766666444444444446
Kódování oblastí Kódování segmentovaných dat (4) 7/74 Kódování úseky řádků (angl. Run Length Encoding, RLE) 4 6 4 6 Kódem je seznam seznamů. Každý seznam popisuje situaci v jednom řádku. Používá FAX (CCITT Group ). ((44)(4)()) Komprese a rekonstrukce obrazu 8/74 Original image Data redundancy reduction Coding Transmission, Archiving Reconstructed image Reconstruction Decoding Odstranění redundantní informace Dvě velké třídy používaných postupů: 9/74. Bezeztrátové metody. Umožňují úplnou rekonstrukci výchozího signálu.. Ztrátové metody. Umožňují pouze částečnou rekonstrukci výchozího signálu.
Informační hodnota intensity Nechť obraz má G jasových úrovní, k =... G s pravděpodobnostmi výskytu P (k). Shannonova informační hodnota každé intenzity je h(k) log P (k) [bit] /74 Příklad: Obraz o rozměrech 6 pixelů. V něm je pouze pixel s intenzitou 8, tedy P (8) = /6. Náhodně vyberu pixel a jeho jas je právě 8. Získal jsem h(8) = log ( /6 ) = 6 bitů informace. Informace znamená v tomto případě znalost o pozici náhodně vybraného pixelu. Pamatujete ještě na hru lodě? Informační hodnota obrázku Entropie Obraz je soubor pixelů. Entropie měří průměrnou informační hodnotu: /74 G H = P (k)h(k) k= Po dosazení a úpravě G H = P (k) log P (k) k= G H = P (k) log P (k) k= Odhad entropie z histogramu obrazu Nechť #(k), k b a M, N jsou rozměry obrazu. /74 Odhad pravděpodobnosti ˆP (k) = #(k) M N Odhad entropie b Ĥ = k ˆP (k) log ˆP (k) [bitů] Poznámka: odhad entropie je příliš optimistický, protože mezi jasy obrazu existují závislosti.
Příklad obrazu a jeho entropie () /74 Entropy H=8. Entropy H=8. 6 4 Rovnoměrné zastoupení jasů. Může mít obrázek s 6 stupni šedi vyšší entropii než 8? Příklad obrazu a jeho entropie () 4/74 Entropy H=6.94 Entropy H=6.94 8 6 4 Příklad obrazu a jeho entropie () /74 Entropy H=6. Entropy H=6. 7 6 4
Příklad obrazu a jeho entropie (4) 6/74 x 4 Entropy H=4.7 4 Entropy H=4.7.... Příklad obrazu a jeho entropie () 7/74 Entropy H=.66 x 4 7 Entropy H=.66 6 4 Příklad obrazu a jeho entropie (6) 8/74 Entropy H=.9 x 4 Entropy H=.9 6 4
Entropy H=6. Entropy H=4.7 Entropy H=.66 Entropy H=.9 Entropie v obrazech 9/74 Entropy H=8. Entropy H=6.94 Který obrázek půjde lépe zkomprimovat a proč? Nechť b je nejmenší počet bitů, kterým lze reprezentovat počet kvantizačních úrovní (jasů). Informační redundance r = b H. Intensitám s menší četností se přiřadí kód s menší délkou než častějším intensitám. Výborné čtení o entropii a kódování [], kapitoly,4,,6. Postupy odstraňování redundace v datech Pomocí lineárních integrálních transformací obrazu, např. Fourierou transformací. /74 Prediktivní komprese. Hybridní metody. Kódování Obvykle optimální kódování, tj. nejkratším kódem. Kódy pevné délky (Huffmanovo kódování) nebo kódy proměnné délky (aritmetické kódování). Použití DCT /74 Princip Rozděl obraz na n n nepřekrývající se okna. Na každé okno aplikuj DCT. Dělej něco s koeficienty,... DCT tranformuje jasový obrázek na lineární kombinaci bázových obrazů. Bázové obrazy pro okna 8 8. Proč? Podívejme se na hodnoty koeficientů...
DCT coefficients /74 original image log(abs(dctcoefs)); blocksize [4 4] 6 4 DCT coefficients /74 original image log(abs(dctcoefs)); blocksize [8 8] 7 6 4 DCT coefficients 4/74 original image log(abs(dctcoefs)); blocksize [6 6] 7 6 4
DCT coefficients /74 original image log(abs(dctcoefs)); blocksize [ ] 8 7 6 4 JPEG () obraz a jeho DCT 6/74 Original image log(abs(dctcoeff)+) JPEG () vyberme okno 7/74 Original image log(abs(dctcoeff)+)
JPEG () posun intensit I 8 8/74 Original image window intensities shifted 8 6 4 4 6 8 JPEG (4) kvantizace DCT koeficientů 9/74 DCT coefficients Quantized DCT 97 zero components (from 4) round(dct./quantlevel) mnoho koeficientů nulových Účinná bezeztrátová komprese kvantizovaných koeficientů. JPEG () kvantizace DCT koeficientů /74 DCT coefficients compute the dct coefficients from the quantized data originální koeficienty po kvantizaci
JPEG (6) DCT intensity /74 idct applied to the quantized data get back the intensities IDCT aplikovávana na kvantizované koeficienty Posun pro získání intensit I + 8 JPEG (7) Aplikujeme na celý obrázek /74 Original image crude version of the JPEG [,] window Původní obrázek Komprimovaná verze JPEG (8) Méně agresivní komprese Přibližně polovina DCT koeficientů nulových /74 Original image crude version of the JPEG [,] window Původní obrázek Komprimovaná verze
JPEG (9) Vliv velikosti okna 4/74 crude version of the JPEG [8,8] window crude version of the JPEG [6,6] window okna 8 8 okna 6 6 TŘI DEFINICE KOMPRESNÍHO POMĚRU Kompresní poměr počítaný /74. Na základě redundance K = b Ĥ. Na základě úspory paměti κ = délka zprávy po kompresi délka zprávy před kompresí. Na základě úspory paměti (v doplňkovém tvaru) κ JPEG foto, quality parameter 9 6/74
JPEG foto, quality parameter 7 7/74 JPEG foto, quality parameter 8/74 JPEG foto, quality parameter 9/74
JPEG foto, quality parameter 4/74 JPEG foto sum of abs differences, quality 9 4/74 Quality 9, file size 98 4 6 Quality parameter 9 7 4 6 8 Rozdílový obrázek JPEG foto 4/74 sum of abs differences, quality Quality, file size 688 4 6 Quality parameter 7 4 6 8 Rozdílový obrázek
JPEG foto 4/74 sum of abs differences, quality Quality, file size 988 4 6 Quality parameter 7 4 6 8 Rozdílový obrázek JPEG foto, velikosti souborů 44/74 4 jpg file sizes png file size File size [kb] 8 6 4 4 6 8 Quality paremeter JPEG graf, quality parameter 9 4/74
JPEG graf, quality parameter 7 46/74 JPEG graf, quality parameter 47/74 JPEG graf, quality parameter 48/74
JPEG graf, quality parameter 49/74 JPEG graf /74 Quality 9, file size 699 sum of abs differences, quality 9 4 Quality parameter 9 6 4 6 7 Rozdílový obrázek JPEG graf /74 Quality, file size 476 sum of abs differences, quality 4 Quality parameter 6 4 6 7 Rozdílový obrázek
JPEG graf /74 Quality, file size 776 sum of abs differences, quality 4 Quality parameter 6 4 6 7 Rozdílový obrázek JPEG graf, velikosti souborů /74 jpg file sizes png file size File size [kb] 4 6 8 Quality paremeter PREDIKTIVNÍ KOMPRESE MYŠLENKA Najít matematický model, který dokáže predikovat na základě předchozích hodnot další hodnotu. 4/74 Přenášet pouze rozdíl mezi skutečnou a predikovanou hodnotou. Ke kompresi dochází, protože rozdílová data mají menší statistickou variaci (např. rozptyl) než původní data. f(i,j) + - Quantizer d(i,j) d(i,j) + + f(i,j) Predictor + Predictor (a) + (b)
Prediktivní komprese jednoduchý příklad () Lineární prediktor prvního řádu ˆf(i, j) = a f(i, j) /74 Rozdíl (chyba prediktoru) d(i, j) = ˆf(i, j) f(i, j) Hledáme takové a, které minimalizuje (např.) součet kvadratických chyb a = argmin a (af(i, j) f(i, j)) a = ( ) af(i, j) f(i, j) f(i, j) = a = f(i, j)f(i, j) f(i, j) Prediktivní komprese jednoduchý příklad () Malá odbočka k matematice 6/74 a = f(i, j)f(i, j) f(i, j) pokud je f(i, j) stacionární (stačí slabá, aby se neměnily. a. momenty v čase) a má nulovou střední hodnotu, pak kde R je autokorelační funkce. a = R() Prediktivní komprese obraz 7/74 original image, entropy=7.66 Původní obraz, entropie 7.66. a =.98
Prediktivní komprese chyby predikce 8/74 differences between predicted and actual image, entropy=6. 4 6 7 4 6 8 Prediktivní komprese porovnání hitogramů 9/74 7 histogram of the original image 7 x 4 histogram of the errors 6 6 4 4 Histogram obrázku Histogram chyb predikce Pravděpodobně půjde tedy rozdílový obrázek dobře komprimovat. Prediktivní komprese kvantizace chyb predikce 6/74 7 x 4 histogram of the errors 6 4 Histogram chyb predikce.8.6.4..8.6.4. x histogram of the errors quantized Histogram kvantovaných chyb predikce
Prediktivní komprese Přenos dat quantized differences, entropy=.4, compratio=. 4 6 6/74 7 4 6 8 Data k přenosu: I(, ), střední hodnota jasu a obrázek kvantovaných chyb predikce. Prediktivní komprese Výsledek 6/74 reconstructed image, amount of transmitted data.4 Rekonstruovaný obraz. Přenesená data.4 původních. Prediktivní komprese hrubá kvantizace chyb 6/74 reconstructed image, amount of transmitted data. Rekonstruovaný obraz. Přenesená data. původních. Kvalita není příliš uspokojivá, Proč?
Prediktivní komprese analýza problému velmi jednoduchý predikční model 64/74 naivní kvantizace z původní obrázku přenášíme pouze hodnoty Příklad částečného řešení přeneseme ještě navíc každou desátou instensitu fixujeme tak drift chyby Hrubá kvantizace + desetina intensit 6/74 reconstructed image, amount of transmitted data. Rekonstruovaný obraz. Přenesená data. původních. Prediktivní komprese kontrolní otázka () 66/74 original image, entropy=8. histogram of the original image 8 6 4 a jeho histogram Bílý šum
Prediktivní komprese kontrolní otázka () Lineární prediktor prvního řádu ˆf(i, j) = a f(i, j) 67/74 Rozdíl (chyba prediktoru) d(i, j) = ˆf(i, j) f(i, j) Hledáme takové a, které minimalizuje (např.) součet kvadratických chyb a = argmin a (af(i, j) f(i, j)) Otázka: Jaká bude asi hodnota a pro obrázek bílého šumu? a DIGITÁLNÍ PULSNĚ KÓDOVÁ MODULACE () Mějme obraz f(i, j), odhad jeho statistických vlastností pomocí autokorelační funkce R(k, l) = E{f(i, j)f(i k, j l)} 68/74 Hledáme matematický model prediktoru ˆf(i, j) Rozdíl d(i, j) = ˆf(i, j) f(i, j) Předpokládejme např. lineární prediktor. řádu ˆf(i, j) = a f(i, j ) + a f(i, j ) + a f(i, j), kde a, a, a jsou parametry prediktivního modelu. DIGITÁLNÍ PULSNĚ KÓDOVÁ MODULACE () Jak se odhadnou parametry prediktivního modelu a, a, a? 69/74 Vyřešením statistické optimalizační úlohy. Předpokládá se stacionární náhodný proces f a nulová střední hodnota. e = E{[ ˆf(i, j) f(i, j)] } a R(, ) + a R(, ) + a R(, ) = R(, ) a R(, ) + a R(, ) + a R(, ) = R(, ) a R(, ) + a R(, ) + a R(, ) = R(, ) kde R(m, n) je autokorelační funkce. Zaveďme K = b/h, kde b je bitová hloubka a H je entropie dat k přenosu.
DPCM PŘÍKLAD, K =.8 7/74 Po rekonstrukci K =.8. Rozdílový snímek. DPCM PŘÍKLAD, K = 6. 7/74 Po rekonstrukci K = 6.. Rozdílový snímek. bezeztrátová komprese Formát obrázku PNG 7/74 kombinace deflace (kódování) a prediktivní komprese mnohem lepší než GIF typicky lepší kompresní poměr ruzné bitové hloubky (GIF pouze 8 bitové paletové) lepší podopra průhlednosti
Komprimované shrnutí aneb Buyer s guide JPG (JPEG) vhodný pro: 7/74 fotografie PNG pro: obrázky textu (naskenované) grafy cartoons též snímky obrazovky (snapshots) obecně CGI (Computer Generated Images)... pokud ovšem nelze použít vektorové formáty (EPS,PDF,... ) References 74/74 [] David J.C. MacKay. Information Theory, Inference, and Learning Algorithms. Cambridge University Press, fourth printing edition,. Available also on-line http://www.inference.phy.cam.ac.uk/mackay/itila/.