Komprese obrazu Verze: 1.5, ze dne: 1. června 2006 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 1D dat? 2/74
Rozdělení metod komprese obrazů 1. Segmentace objektů v obraze. 3/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. 2. 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 (1) Kódování hranic oblastí 4/74 Polygonální aproximace hranice
Kódování segmentovaných dat (2) Kódování hranic oblastí 5/74 Řetězový (též Freemanův) kód, 4-okolí 1 2 0 3 Řetězový kód: 3, 0, 0, 3, 0, 1, 1, 2, 1, 2, 3, 2. Derivace kódu: 1, 0, 3, 1, 1, 0, 1, 3, 1, 1, 3, 1.
Kódování segmentovaných dat (3) Kódování hranic oblastí 6/74 Řetězový (též Freemanův) kód, 8-okolí 3 2 1 4 0 5 6 7 Kód: 00077665555556600000006444444442221111112234445652211
Kódování oblastí Kódování segmentovaných dat (4) 7/74 Kódování úseky řádků (angl. Run Length Encoding, RLE) 0 1 2 3 4 5 6 0 1 2 3 4 5 6 Kódem je seznam seznamů. Každý seznam popisuje situaci v jednom řádku. Používá FAX (CCITT Group 3). ((11144)(214)(52355))
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 1. Bezeztrátové metody. Umožňují úplnou rekonstrukci výchozího signálu. 2. 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 = 0... G 1 s pravděpodobnostmi výskytu P (k). 10/74 Shannonova informační hodnota každé intenzity je h(k) log 2 1 P (k) [bit] Příklad: Obraz o rozměrech 256 2 pixelů. V něm je pouze 1 pixel s intenzitou 128, tedy P (128) = 1/256 2. Náhodně vyberu pixel a jeho jas je právě 128. Získal jsem h(128) = log 2 ( 1 1/256 2 ) = 16 bitů informace.
Informační hodnota intensity Nechť obraz má G jasových úrovní, k = 0... G 1 s pravděpodobnostmi výskytu P (k). 10/74 Shannonova informační hodnota každé intenzity je h(k) log 2 1 P (k) [bit] Příklad: Obraz o rozměrech 256 2 pixelů. V něm je pouze 1 pixel s intenzitou 128, tedy P (128) = 1/256 2. Náhodně vyberu pixel a jeho jas je právě 128. Získal jsem h(128) = log 2 ( 1 1/256 2 ) = 16 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: 11/74 H = G 1 k=0 P (k)h(k)
Informační hodnota obrázku Entropie Obraz je soubor pixelů. Entropie měří průměrnou informační hodnotu: 11/74 H = G 1 k=0 P (k)h(k) Po dosazení H = G 1 k=0 P (k) log 2 1 P (k)
Informační hodnota obrázku Entropie Obraz je soubor pixelů. Entropie měří průměrnou informační hodnotu: 11/74 H = G 1 k=0 P (k)h(k) Po dosazení H = G 1 k=0 P (k) log 2 1 P (k) a úpravě H = G 1 k=0 P (k) log 2 P (k)
Odhad entropie z histogramu obrazu Nechť #(k), 0 k 2 b 1 a M, N jsou rozměry obrazu. 12/74 Odhad pravděpodobnosti ˆP (k) = #(k) M N Odhad entropie Ĥ = 2 b 1 k ˆP (k) log 2 ˆ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 (1) 13/74 Entropy H=8.00 Entropy H=8.00 600 500 400 300 200 100 0 0 50 100 150 200 250 Rovnoměrné zastoupení jasů. Může mít obrázek s 256 stupni šedi vyšší entropii než 8?
Příklad obrazu a jeho entropie (2) 14/74 Entropy H=6.94 Entropy H=6.94 1000 800 600 400 200 0 0 50 100 150 200 250
Příklad obrazu a jeho entropie (3) 15/74 Entropy H=6.01 Entropy H=6.01 7000 6000 5000 4000 3000 2000 1000 0 0 50 100 150 200 250
Příklad obrazu a jeho entropie (4) 16/74 x 10 4 Entropy H=4.27 Entropy H=4.27 4 3.5 3 2.5 2 1.5 1 0.5 0 0 50 100 150 200 250
Příklad obrazu a jeho entropie (5) 17/74 Entropy H=1.66 x 10 4 7 Entropy H=1.66 6 5 4 3 2 1 0 0 50 100 150 200 250
Příklad obrazu a jeho entropie (6) 18/74 Entropy H=0.93 x 10 4 Entropy H=0.93 6 5 4 3 2 1 0 0 50 100 150 200 250
Entropy H=1.66 Entropie v obrazech 19/74 Entropy H=8.00 Entropy H=6.94 Entropy H=6.01 Entropy H=4.27 Entropy H=0.93 Který obrázek půjde lépe zkomprimovat a proč?
Entropy H=1.66 Entropie v obrazech 19/74 Entropy H=8.00 Entropy H=6.94 Entropy H=6.01 Entropy H=4.27 Entropy H=0.93 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.
Entropy H=1.66 Entropie v obrazech 19/74 Entropy H=8.00 Entropy H=6.94 Entropy H=6.01 Entropy H=4.27 Entropy H=0.93 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í [1], kapitoly 2,4,5,6.
Postupy odstraňování redundace v datech Pomocí lineárních integrálních transformací obrazu, např. Fourierou transformací. 20/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í DCT2 21/74 Princip Rozděl obraz na n n nepřekrývající se okna. Na každé okno aplikuj DCT2. Dělej něco s koeficienty,... DCT2 tranformuje jasový obrázek na lineární kombinaci bázových obrazů. Bázové obrazy pro okna 8 8.
Použití DCT2 21/74 Princip Rozděl obraz na n n nepřekrývající se okna. Na každé okno aplikuj DCT2. Dělej něco s koeficienty,... DCT2 tranformuje jasový obrázek na lineární kombinaci bázových obrazů. Bázové obrazy pro okna 8 8. Proč?
Použití DCT2 21/74 Princip Rozděl obraz na n n nepřekrývající se okna. Na každé okno aplikuj DCT2. Dělej něco s koeficienty,... DCT2 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ů...
DCT2 coefficients 22/74 original image log(abs(dct2coefs)); blocksize [4 4] 50 100 50 100 6 5 4 150 150 3 200 200 2 1 250 50 100 150 200 250 250 50 100 150 200 250
DCT2 coefficients 23/74 original image log(abs(dct2coefs)); blocksize [8 8] 7 50 50 6 100 100 5 4 150 150 3 200 200 2 1 250 50 100 150 200 250 250 50 100 150 200 250
DCT2 coefficients 24/74 original image log(abs(dct2coefs)); blocksize [16 16] 50 50 7 6 100 150 100 150 5 4 3 200 200 2 1 250 50 100 150 200 250 250 50 100 150 200 250
DCT2 coefficients 25/74 original image log(abs(dct2coefs)); blocksize [32 32] 8 50 100 50 100 7 6 5 150 200 150 200 4 3 2 1 250 50 100 150 200 250 250 50 100 150 200 250
JPEG (1) obraz a jeho DCT2 26/74 Original image log(abs(dct2coeff)+1) 50 50 100 100 150 150 200 200 250 50 100 150 200 250 250 50 100 150 200 250
JPEG (2) vyberme okno 27/74 Original image log(abs(dct2coeff)+1) 50 50 100 100 150 150 200 200 250 50 100 150 200 250 250 50 100 150 200 250
JPEG (3) posun intensit I 128 28/74 Original image window 250 intensities shifted 80 5 200 5 60 40 10 10 20 15 150 15 0 20 20 100 20 40 25 50 25 60 80 30 30 100 5 10 15 20 25 30 5 10 15 20 25 30
JPEG (4) kvantizace DCT2 koeficientů 29/74 DCT2 coefficients Quantized DCT2 917 zero components (from 1024) 5 1000 5 10 10 500 10 5 15 0 15 0 20 500 20 5 25 1000 25 10 30 1500 5 10 15 20 25 30 30 15 5 10 15 20 25 30 round(dct2./quantlevel) mnoho koeficientů nulových Účinná bezeztrátová komprese kvantizovaných koeficientů.
JPEG (5) kvantizace DCT2 koeficientů 30/74 DCT2 coefficients compute the dct2 coefficients from the quantized data 5 1000 5 1000 10 500 10 500 15 0 15 0 20 500 20 500 25 1000 25 1000 30 1500 5 10 15 20 25 30 originální koeficienty 30 1500 5 10 15 20 25 30 po kvantizaci
JPEG (6) DCT2 intensity 31/74 idct2 applied to the quantized data get back the intensities 150 250 5 100 5 200 10 50 10 15 0 15 150 20 50 20 100 25 100 25 50 30 150 30 5 10 15 20 25 30 IDCT2 aplikovávana na kvantizované koeficienty 5 10 15 20 25 30 Posun pro získání intensit I + 128
JPEG (7) Aplikujeme na celý obrázek 32/74 Original image crude version of the JPEG [32,32] window 50 50 100 100 150 150 200 200 250 50 100 150 200 250 Původní obrázek 250 50 100 150 200 250 Komprimovaná verze
JPEG (8) Méně agresivní komprese Přibližně polovina DCT2 koeficientů nulových 33/74 Original image crude version of the JPEG [32,32] window 50 50 100 100 150 150 200 200 250 50 100 150 200 250 Původní obrázek 250 50 100 150 200 250 Komprimovaná verze
JPEG (9) Vliv velikosti okna 34/74 crude version of the JPEG [8,8] window crude version of the JPEG [16,16] window 50 50 100 100 150 150 200 200 250 50 100 150 200 250 okna 8 8 250 50 100 150 200 250 okna 16 16
TŘI DEFINICE KOMPRESNÍHO POMĚRU Kompresní poměr počítaný 35/74 1. Na základě redundance K = b Ĥ 2. Na základě úspory paměti κ = délka zprávy po kompresi délka zprávy před kompresí 3. Na základě úspory paměti (v doplňkovém tvaru) 1 κ
JPEG foto, quality parameter 90 36/74
JPEG foto, quality parameter 70 37/74
JPEG foto, quality parameter 30 38/74
JPEG foto, quality parameter 10 39/74
JPEG foto, quality parameter 5 40/74
JPEG foto 41/74 sum of abs differences, quality 90 250 Quality 90, file size 255098 100 200 200 300 150 400 500 100 600 Quality parameter 90 700 200 400 600 800 1000 50 Rozdílový obrázek
JPEG foto 42/74 sum of abs differences, quality 30 250 Quality 30, file size 068803 100 200 200 300 150 400 500 100 600 Quality parameter 30 700 200 400 600 800 1000 50 Rozdílový obrázek
JPEG foto 43/74 sum of abs differences, quality 5 250 Quality 5, file size 019858 100 200 200 300 150 400 500 100 600 Quality parameter 5 700 200 400 600 800 1000 50 Rozdílový obrázek
JPEG foto, velikosti souborů 44/74 1400 1200 jpg file sizes png file size 1000 File size [kb] 800 600 400 200 0 0 20 40 60 80 100 Quality paremeter
JPEG graf, quality parameter 90 45/74
JPEG graf, quality parameter 70 46/74
JPEG graf, quality parameter 30 47/74
JPEG graf, quality parameter 10 48/74
JPEG graf, quality parameter 5 49/74
JPEG graf 50/74 Quality 90, file size 116959 sum of abs differences, quality 90 250 100 200 200 300 150 400 100 500 50 Quality parameter 90 600 100 200 300 400 500 600 700 Rozdílový obrázek
JPEG graf 51/74 Quality 30, file size 042726 sum of abs differences, quality 30 250 100 200 200 300 150 400 100 500 50 Quality parameter 30 600 100 200 300 400 500 600 700 Rozdílový obrázek
JPEG graf 52/74 Quality 5, file size 017706 sum of abs differences, quality 5 250 100 200 200 300 150 400 100 500 50 Quality parameter 5 600 100 200 300 400 500 600 700 Rozdílový obrázek
JPEG graf, velikosti souborů 53/74 250 jpg file sizes png file size 200 File size [kb] 150 100 50 0 0 20 40 60 80 100 Quality paremeter
PREDIKTIVNÍ KOMPRESE MYŠLENKA 54/74 Najít matematický model, který dokáže predikovat na základě předchozích hodnot další hodnotu. 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 (1) 55/74 Lineární prediktor prvního řádu ˆf(i, j) = a f(i 1, j) 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 1, j) f(i, j)) 2
Prediktivní komprese jednoduchý příklad (1) 55/74 Lineární prediktor prvního řádu ˆf(i, j) = a f(i 1, j) 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 1, j) f(i, j)) 2 a = ( ) 2 af(i 1, j) f(i, j) f(i 1, j) = 0
Prediktivní komprese jednoduchý příklad (1) 55/74 Lineární prediktor prvního řádu ˆf(i, j) = a f(i 1, j) 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 1, j) f(i, j)) 2 a = ( ) 2 af(i 1, j) f(i, j) f(i 1, j) = 0 a = f(i, j)f(i 1, j) f(i 1, j) 2
Prediktivní komprese jednoduchý příklad (2) Malá odbočka k matematice 56/74 a = f(i, j)f(i 1, j) f(i 1, j) 2 pokud je f(i, j) stacionární (stačí slabá, aby se neměnily 1. a 2. momenty v čase) a má nulovou střední hodnotu, pak kde R je autokorelační funkce. a = R(1)
Prediktivní komprese obraz 57/74 original image, entropy=7.66 Původní obraz, entropie 7.66. a = 0.9518
Prediktivní komprese chyby predikce 58/74 differences between predicted and actual image, entropy=6.32 100 200 300 400 500 600 150 100 50 0 50 700 100 200 400 600 800 1000
Prediktivní komprese porovnání hitogramů 59/74 7000 histogram of the original image 7 x 104 histogram of the errors 6000 6 5000 5 4000 4 3000 3 2000 2 1000 1 0 150 100 50 0 50 100 150 Histogram obrázku 0 300 200 100 0 100 200 300 Histogram chyb predikce
Prediktivní komprese porovnání hitogramů 59/74 7000 histogram of the original image 7 x 104 histogram of the errors 6000 6 5000 5 4000 4 3000 3 2000 2 1000 1 0 150 100 50 0 50 100 150 Histogram obrázku 0 300 200 100 0 100 200 300 Histogram chyb predikce Pravděpodobně půjde tedy rozdílový obrázek dobře komprimovat.
Prediktivní komprese kvantizace chyb predikce 60/74 7 x 104 histogram of the errors 6 5 4 3 2 1 0 300 200 100 0 100 200 300 Histogram chyb predikce 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 2 x 105 histogram of the errors quantized 0 300 200 100 0 100 200 300 Histogram kvantovaných chyb predikce
Prediktivní komprese Přenos dat quantized differences, entropy=3.45, compratio=2.22 100 200 300 400 500 600 150 100 50 0 50 61/74 700 100 200 400 600 800 1000 Data k přenosu: I(1, 1), střední hodnota jasu a obrázek kvantovaných chyb predikce.
Prediktivní komprese Výsledek 62/74 reconstructed image, amount of transmitted data 0.45 Rekonstruovaný obraz. Přenesená data 0.45 původních.
Prediktivní komprese hrubá kvantizace chyb 63/74 reconstructed image, amount of transmitted data 0.21 Rekonstruovaný obraz. Přenesená data 0.21 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 2 hodnoty
Prediktivní komprese analýza problému velmi jednoduchý predikční model 64/74 naivní kvantizace z původní obrázku přenášíme pouze 2 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 65/74 reconstructed image, amount of transmitted data 0.31 Rekonstruovaný obraz. Přenesená data 0.31 původních.
Prediktivní komprese kontrolní otázka (1) 66/74 original image, entropy=8.00 1200 histogram of the original image 1000 800 600 400 200 0 150 100 50 0 50 100 150 a jeho histogram Bílý šum
Prediktivní komprese kontrolní otázka (2) 67/74 Lineární prediktor prvního řádu ˆf(i, j) = a f(i 1, j) 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 1, j) f(i, j)) 2 Otázka: Jaká bude asi hodnota a pro obrázek bílého šumu?
Prediktivní komprese kontrolní otázka (2) 67/74 Lineární prediktor prvního řádu ˆf(i, j) = a f(i 1, j) 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 1, j) f(i, j)) 2 Otázka: Jaká bude asi hodnota a pro obrázek bílého šumu? a 0
DIGITÁLNÍ PULSNĚ KÓDOVÁ MODULACE (1) 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 3. řádu ˆf(i, j) = a 1 f(i, j 1) + a 2 f(i 1, j 1) + a 3 f(i 1, j), kde a 1, a 2, a 3 jsou parametry prediktivního modelu.
DIGITÁLNÍ PULSNĚ KÓDOVÁ MODULACE (2) Jak se odhadnou parametry prediktivního modelu a 1, a 2, a 3? 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)] 2 } a 1 R(0, 0) + a 2 R(0, 1) + a 3 R(1, 1) = R(1, 0) a 1 R(0, 1) + a 2 R(0, 0) + a 3 R(1, 0) = R(1, 1) a 1 R(1, 1) + a 2 R(1, 0) + a 3 R(0, 0) = R(0, 1) 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 = 3.8 70/74 Po rekonstrukci K = 3.8. Rozdílový snímek.
DPCM PŘÍKLAD, K = 6.2 71/74 Po rekonstrukci K = 6.2. Rozdílový snímek.
bezeztrátová komprese Formát obrázku PNG 72/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: 73/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 [1] David J.C. MacKay. Information Theory, Inference, and Learning Algorithms. Cambridge University Press, fourth printing edition, 2003. Available also on-line http://www.inference.phy.cam.ac.uk/mackay/itila/.
1 2 0 3
3 2 1 4 0 5 6 7
0 1 2 3 4 5 6 0 1 2 3 4 5 6
Original image Data redundancy reduction Coding Transmission, Archiving Reconstructed image Reconstruction Decoding
Entropy H=8.00
0 50 100 150 200 250 600 Entropy H=8.00 500 400 300 200 100 0
Entropy H=6.94
0 50 100 150 200 250 Entropy H=6.94 1000 800 600 400 200 0
Entropy H=6.01
0 50 100 150 200 250 7000 Entropy H=6.01 6000 5000 4000 3000 2000 1000 0
Entropy H=4.27
0 50 100 150 200 250 x 10 4 Entropy H=4.27 4 3.5 3 2.5 2 1.5 1 0.5 0
Entropy H=1.66
0 50 100 150 200 250 7 x 10 4 Entropy H=1.66 6 5 4 3 2 1 0
Entropy H=0.93
0 50 100 150 200 250 x 10 4 Entropy H=0.93 6 5 4 3 2 1 0
Entropy H=8.00
Entropy H=6.94
Entropy H=6.01
Entropy H=4.27
Entropy H=1.66
Entropy H=0.93
original image 50 100 150 200 250 50 100 150 200 250
log(abs(dct2coefs)); blocksize [4 4] 50 100 6 5 4 150 3 200 2 1 250 50 100 150 200 250
original image 50 100 150 200 250 50 100 150 200 250
log(abs(dct2coefs)); blocksize [8 8] 7 50 6 100 5 4 150 3 200 2 1 250 50 100 150 200 250
original image 50 100 150 200 250 50 100 150 200 250
log(abs(dct2coefs)); blocksize [16 16] 50 7 6 100 5 4 150 3 200 2 1 250 50 100 150 200 250
original image 50 100 150 200 250 50 100 150 200 250
log(abs(dct2coefs)); blocksize [32 32] 8 50 7 6 100 150 200 5 4 3 2 1 250 50 100 150 200 250
Original image 50 100 150 200 250 50 100 150 200 250
log(abs(dct2coeff)+1) 50 100 150 200 250 50 100 150 200 250
Original image 50 100 150 200 250 50 100 150 200 250
log(abs(dct2coeff)+1) 50 100 150 200 250 50 100 150 200 250
5 10 15 20 25 30 Original image window 250 5 10 15 200 150 20 100 25 50 30
5 10 15 20 25 30 5 10 15 20 25 30 intensities shifted 80 60 40 20 0 20 40 60 80 100
5 10 15 20 25 30 DCT2 coefficients 5 1000 10 500 15 0 20 500 25 1000 30 1500
5 10 15 20 25 30 Quantized DCT2 917 zero components (from 1024) 5 10 10 5 15 0 20 5 25 10 30 15
5 10 15 20 25 30 DCT2 coefficients 5 1000 10 500 15 0 20 500 25 1000 30 1500
5 10 15 20 25 30 compute the dct2 coefficients from the quantized data 5 1000 10 500 15 0 20 500 25 1000 30 1500
5 10 15 20 25 30 idct2 applied to the quantized data 150 5 100 10 50 15 0 20 50 25 100 30 150
5 10 15 20 25 30 get back the intensities 250 5 10 15 200 150 20 100 25 50 30
Original image 50 100 150 200 250 50 100 150 200 250
crude version of the JPEG [32,32] window 50 100 150 200 250 50 100 150 200 250
Original image 50 100 150 200 250 50 100 150 200 250
crude version of the JPEG [32,32] window 50 100 150 200 250 50 100 150 200 250
crude version of the JPEG [8,8] window 50 100 150 200 250 50 100 150 200 250
crude version of the JPEG [16,16] window 50 100 150 200 250 50 100 150 200 250
Quality 90, file size 255098
sum of abs differences, quality 90 250 100 200 200 300 150 400 500 600 700 100 50 200 400 600 800 1000
Quality 30, file size 068803
sum of abs differences, quality 30 250 100 200 200 300 150 400 500 600 700 100 50 200 400 600 800 1000
Quality 5, file size 019858
sum of abs differences, quality 5 250 100 200 200 300 150 400 500 600 700 100 50 200 400 600 800 1000
1400 1200 jpg file sizes png file size 1000 File size [kb] 800 600 400 200 0 0 20 40 60 80 100 Quality paremeter
Quality 90, file size 116959
100 200 300 400 500 600 700 sum of abs differences, quality 90 250 100 200 300 200 150 400 100 500 600 50
Quality 30, file size 042726
100 200 300 400 500 600 700 sum of abs differences, quality 30 250 100 200 300 200 150 400 100 500 600 50
Quality 5, file size 017706
100 200 300 400 500 600 700 sum of abs differences, quality 5 250 100 200 300 200 150 400 100 500 600 50
250 jpg file sizes png file size 200 File size [kb] 150 100 50 0 0 20 40 60 80 100 Quality paremeter
(i,j) + - Quantizer d(i,j) d(i,j) + + f(i,j) Predictor + Predictor (a) + (b)
original image, entropy=7.66
differences between predicted and actual image, entropy=6.32 100 200 300 400 500 600 150 100 50 0 50 700 100 200 400 600 800 1000
0 150 100 50 0 50 100 150 7000 histogram of the original image 6000 5000 4000 3000 2000 1000
0 300 200 100 0 100 200 300 7 x 104 histogram of the errors 6 5 4 3 2 1
0 300 200 100 0 100 200 300 7 x 104 histogram of the errors 6 5 4 3 2 1
0 300 200 100 0 100 200 300 2 x histogram of the errors quantized 105 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2
quantized differences, entropy=3.45, compratio=2.22 150 100 200 300 400 500 600 100 50 0 50 700 100 200 400 600 800 1000
reconstructed image, amount of transmitted data 0.45
reconstructed image, amount of transmitted data 0.21
reconstructed image, amount of transmitted data 0.31
original image, entropy=8.00
0 150 100 50 0 50 100 150 1200 histogram of the original image 1000 800 600 400 200