210 likes | 414 Views
Algoritmy komprese dat. Kontextové metody. 2 fáze komprese dat. Vytvoření modelu Kódování Model 0-tého řádu - pravděpodobnosti výskytu izolovaných znaků abecedy. Konečné kontextové modely. K určení pravděpodobnosti výskytu znaku je použito několik znaků předcházejících
E N D
Algoritmy komprese dat Kontextové metody SWI072 Algoritmy komprese dat
2 fáze komprese dat • Vytvoření modelu • Kódování • Model 0-tého řádu - pravděpodobnosti výskytu izolovaných znaků abecedy SWI072 Algoritmy komprese dat
Konečné kontextové modely • K určení pravděpodobnosti výskytu znaku je použito několik znaků předcházejících • původně navrženo pro kompresi textových souborů • model řádu i - používá kontext délky i • 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é • metody statické, adaptivní SWI072 Algoritmy komprese dat
PPM - Prediction by Partial Matching • Cleary, Witten, 1984, Moffat, 1990 • kombinace kontextového modelu & aritmetického kódování • kombinovaný model řádu i • pro znak z, kontext c určíme f(z |c) - četnost znaku z v kontextu c • Kódování znaku z: Buď c kontext délky iif 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 • pro jisté i musí být f(z |c) pro všechny kontexty délky i definováno SWI072 Algoritmy komprese dat
PPM - pokračování • Jak definovat f(z |c)? • # výskytů znaku z v kontextu c • # případů, v nichž byl kontext c použit k predikci z • 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 dat
Variace na téma PPM • PPMA • kontext c f(c)=n Þ f(ESC |c)=1/(n+1) • pro ostatní znaky zůstává f(x|c) • PPMB: f(z |c)´= f(z |c)-1 • abcx ...abcx....abcy • f(x|abc) = 1, f(y|abc)=0, f(esc|abc)=2 • PPMC • pro každý kontext c skupina znaků, pro něž f(x|c)>0 • f(esc|c) := # znaků ve skupině SWI072 Algoritmy komprese dat
Datové struktury forward tree a 2 n 1 s 2 n 1 s 1 a 1 s 1 n 1 a 1 s 1 assan SWI072 Algoritmy komprese dat
Datové struktury a 2 i 1 n 1 s 2 i 1 n 1 s 1 a 1 s 1 n 1 a 1 i 1 s 1 assani SWI072 Algoritmy komprese dat
Datové struktury a 2 i 1 n 1 s 2 i 1 n 1 s 1 a 1 s 1 n 1 a 1 i 1 s 1 assani SWI072 Algoritmy komprese dat
Datové struktury a 2 i 1 n 1 s 2 i 1 n 1 s 1 a 1 s 1 n 1 a 1 i 1 s 1 assanis SWI072 Algoritmy komprese dat
Datové struktury a 2 i 1 n 1 s 2 i 1 n 1 s 1 a 1 s 1 s 1 n 1 a 1 i 1 s 1 assanis SWI072 Algoritmy komprese dat
Datové struktury a 2 i 1 n 1 s 2 s 1 i 1 n 1 s 1 a 1 s 1 s 1 n 1 a 1 i 1 s 1 assanis SWI072 Algoritmy komprese dat
Datové struktury a 2 i 1 n 1 s 3 s 1 i 1 n 1 s 1 a 1 s 1 s 1 n 1 a 1 i 1 s 1 assanis SWI072 Algoritmy komprese dat
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 dat
Experimentální výsledky (Fiala,Greene,1989) H0 entropie 0. řádu, H1 entropie 1. řádu WNC aritmetické kódování s kontextem délky 3 (Witten, Neal, Cleary) SC TM NS CC BF SF RCF SNI SCI BI H0 73.2 61.2 59.0 78.0 75.2 62.6 75.6 39.7 84.5 14.8 H1 40.1 42.4 46.7 54.0 57.3 38.0 59.7 18.1 51.0 10.1 FGK 75.1 62.5 59.5 80.4 75.6 63.7 76.7 41.5 85.0 20.5 V 74.9 62.4 59.5 80.2 75.6 63.7 76.6 41.4 85.0 20.5 WNC 36.9 35.8 32.6 76.8 54.4 51.6 64.9 23.3 60.8 10.6 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 SWI072 Algoritmy komprese dat
Příklad - MNP (Microcom Networking Protocol) • MNP5: 2 fáze • RLE • adaptivní statistické kódování • n stejných bytů s hodnotou B B B B n-3 • kódovací tabulka SWI072 Algoritmy komprese dat
MNP5 - kódovací tabulka (dokončení) • EOF 111|11111111 + zarovnání 1 na hranici bytu SWI072 Algoritmy komprese dat
Adaptivní strategie • read(B); output(kód(B)) • if B je znak then četnost(B)++; aktualizuj tabulku fi • četnost(B) - 1 byte • if četnost(B)=maximum then vyděl všechny četnosti 2 SWI072 Algoritmy komprese dat
Aktualizace tabulky • četnost(i)++; • while true do j := P(i); if j=1 thenexit fi • j :=Q(j-1); • if četnost(i) četnost(j) thenexit • else P(i) P(j); Q(P(i)) Q(P(j)) fi • od. SWI072 Algoritmy komprese dat
P Q kód P Q P Q P Q četnosti b b b b a a a a Aktualizace tabulky - příklad SWI072 Algoritmy komprese dat
MNP7 • RLE + kontextový model řádu 2 • RLE: běh znaků B délky 3 3 kopie B 4bitová četnost zbytku • 256 tabulek (pro každý znak), 256 řádků (kontext) s četnostmi • (statická) tabulka s kódovými slovy prefixového kódu SWI072 Algoritmy komprese dat