SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Kontextové metody
SWI072 Algoritmy komprese dat2 2 fáze komprese dat u Vytvoření modelu u Kódování u Model 0-tého řádu - pravděpodobnosti výskytu izolovaných znaků abecedy
SWI072 Algoritmy komprese dat3 Konečné kontextové modely u K určení pravděpodobnosti výskytu znaku je použito několik znaků předcházejících u původně navrženo pro kompresi textových souborů u model řádu i - používá kontext délky i u metody –s pevnou délkou kontextu –kombinované - používají kontexty různých délek »úplné (všechny kontexty délek i,i-1,…,0) »částečně kombinované u metody statické, adaptivní
SWI072 Algoritmy komprese dat4 PPM - Prediction by Partial Matching u Cleary, Witten, 1984, Moffat, 1990 u kombinace kontextového modelu & aritmetického kódování u kombinovaný model řádu i u pro znak z, kontext c určíme f(z |c) - četnost znaku z v kontextu c u Kódování znaku z: Buď c kontext délky i if f(z |c) > 0 then kóduj z s použitím f(z |c) else aktualizuj f(z |c) output(kód(ESC)) zkus kontext řádu i-1 fi u pro jisté i musí být f(z |c) pro všechny kontexty délky i definováno
SWI072 Algoritmy komprese dat5 PPM - pokračování u Jak definovat f(z |c)? –# výskytů znaku z v kontextu c –# případů, v nichž byl kontext c použit k predikci z u Princip exkluze –x se vyskytne poprvé v kontextu abc –f(y|abc)>0 y lze vyloučit z modelu 2. řádu –empirické údaje: 2x délka výpočtu zlepšení komprese o 5%
SWI072 Algoritmy komprese dat6 Variace na téma PPM u PPMA –kontext c f(c)=n f(ESC |c)=1/(n+1) –pro ostatní znaky zůstává f(x|c) u PPMB: f(z |c)´= f(z |c)-1 –abcx...abcx....abcy –f(x|abc) = 1, f(y|abc)=0, f(esc|abc)=2 u PPMC –pro každý kontext c skupina znaků, pro něž f(x|c)>0 –f(esc|c) := # znaků ve skupině
SWI072 Algoritmy komprese dat7 Datové struktury n 1 s 1n 1s 1 n 1a 1 assan forward tree a 2 s 2 a 1
SWI072 Algoritmy komprese dat8 Datové struktury n 1 s 1n 1s 1 n 1a 1 assani a 2 s 2 a 1 i 1
SWI072 Algoritmy komprese dat9 Datové struktury n 1 s 1n 1s 1 n 1a 1 assani a 2 s 2 a 1 i 1
SWI072 Algoritmy komprese dat10 Datové struktury n 1 s 1n 1s 1 n 1a 1 assanis a 2 s 2 a 1 i 1
SWI072 Algoritmy komprese dat11 Datové struktury n 1 s 1n 1s 1 n 1a 1 assanis a 2 s 2 a 1 i 1 s 1
SWI072 Algoritmy komprese dat12 Datové struktury n 1 s 1n 1s 1 n 1a 1 assanis a 2 s 2 a 1 i 1 s 1
SWI072 Algoritmy komprese dat13 Datové struktury n 1 s 1n 1s 1 n 1a 1 assanis a 2 s 3 a 1 i 1 s 1
SWI072 Algoritmy komprese dat14 Paměťová omezení Sledování velikosti volné paměti, pokud klesne pod určitou mez T zmrazení modelu –aktualizuji četnosti již existujících kontextů –ignoruji nové kontexty Sledování velikosti volné paměti, pokud klesne pod určitou mez T rekonstrukce modelu –k inicializaci použiji bezprostřední historii, uloženou ve vyrovnávací paměti Kromě volné paměti sleduji též relativní úspěšnost komprese, pokud začne klesat rekonstrukce modelu
SWI072 Algoritmy komprese dat15 Experimentální výsledky (Fiala,Greene,1989) SC TM NS CC BF SF RCF SNI SCI BI H H FGK V WNC SC zdrojový kód TM ASCII (technické memoranda) NS ASCII (news service) CC zkompilovaný kód BF boot file SF splajnové fonty RCF bitové mapy fontů kódované RLE SNI syntetické obrázky SCI digitalizované barevné fotografie (8bitů/pixel) BI digitalizované faxové dokumenty H0 entropie 0. řádu, H1 entropie 1. řádu WNC aritmetické kódování s kontextem délky 3 (Witten, Neal, Cleary)
SWI072 Algoritmy komprese dat16 Příklad - MNP (Microcom Networking Protocol) u MNP5: 2 fáze –RLE –adaptivní statistické kódování u n stejných bytů s hodnotou B B B B n-3 u kódovací tabulka
SWI072 Algoritmy komprese dat17 MNP5 - kódovací tabulka (dokončení) u EOF 111| zarovnání 1 na hranici bytu
SWI072 Algoritmy komprese dat18 Adaptivní strategie u read(B); output(kód(B)) u if B je znak then četnost(B)++; aktualizuj tabulku fi u četnost(B) - 1 byte u if četnost(B)=maximum then vyděl všechny četnosti 2
SWI072 Algoritmy komprese dat19 Aktualizace tabulky četnost(i)++; while true do j := P(i); if j=1 then exit fi j := Q(j-1); if četnost(i) četnost(j) then exit else P(i) P(j); Q(P(i)) Q(P(j)) fi od.
SWI072 Algoritmy komprese dat20 Aktualizace tabulky - příklad četnosti kódPQ b a PQ b a PQ b a PQ b a
SWI072 Algoritmy komprese dat21 MNP7 u RLE + kontextový model řádu 2 u RLE: běh znaků B délky 3 3 kopie B 4bitová četnost zbytku u 256 tabulek (pro každý znak), 256 řádků (kontext) s četnostmi u (statická) tabulka s kódovými slovy prefixového kódu