Datakompression fö 9 p.1 FLAC (Free Lossless Audio Coding) Distorsionsfri kodning av ljud Ljudsignalen delas in i block (typiskt några tusen sampel). Koda summa/skillnad av de två stereokanalerna om det ger högre kompression. Linjära prediktorer optimeras inom blocket. Det finns även möjlighet att använda fixa prediktorer (jämför med lossless JPEG). Prediktionsfelet kodas med Ricekoder (ungefär samma sak som Golombkoder). http://flac.sourceforge.net/
Datakompression fö 9 p.2 Tester Vi testar att koda lite olika data med olika kodare. Testdata: bibeln.txt: Textfil (1917 års bibel), 8 bitar per tecken. ffmpeg.tar: tar-arkiv med C-källkod till ffmpeg, 8 bitar per tecken. emacs: Exekverbar fil, 8 bitar per tecken. reise.wav: Musikfil (Rammstein, Reise, reise ) i wav-format: kort header plus råa ljudsampel, 16 bitar per sampel, stereo. papegoja.pgm: Gråskalebild i PGM-format (Portable GreyMap): kort header och råa sampel, 8 bitar per bildpunkt. papegoja.ppm: Färgbild i PPM-format (Portable PixMap): kort header och råa sampel, 24 bitar per bildpunkt.
Datakompression fö 9 p.3 Kodning av bibeln.txt pack 4.51 bitar/symbol. compress -b 16 2.96 gzip -9 2.55 bzip2-9 1.84 ppmd -m128 -o16 1.53 paq6-6 1.42
Datakompression fö 9 p.4 Kodning av ffmpeg.tar pack 5.42 bitar/symbol. compress -b 16 2.99 gzip -9 1.82 bzip2-9 1.55 ppmd -m128 -o16 1.33 paq6-6 1.02
Datakompression fö 9 p.5 Kodning av emacs pack 5.84 bitar/symbol. compress -b 16 3.28 gzip -9 2.50 bzip2-9 1.80 ppmd -m128 -o16 1.49 paq6-6 0.92
Datakompression fö 9 p.6 Kodning av reise.wav pack 15.60 bitar/sampel. compress -b 16 - gzip -9 15.35 bzip2-9 15.19 ppmd -m128 -o16 15.37 paq6-6 12.82 FLAC -8 11.90 huffman på 16-bitars symboler 15.10 sampelskillnader+huffman 13.19 paq6 klarar sig bra, eftersom den har kontexter som försöker upptäcka 16-bitarsdata.
papegoja.pgm Datakompression fö 9 p.7
Datakompression fö 9 p.8 Kodning av papegoja.pgm pack 7.30 bitar/bildpunkt. compress -b 16 5.94 gzip -9 5.87 bzip2-9 4.47 ppmd -m128 -o16 4.24 paq6-6 3.87 png 3.93 lossless JPEG 3.94 JPEG-LS 3.49
papegoja.ppm Datakompression fö 9 p.9
Datakompression fö 9 p.10 Kodning av papegoja.ppm pack 22.86 bitar/bildpunkt. compress -b 16 19.52 gzip -9 15.77 bzip2-9 12.85 ppmd -m128 -o16 13.32 paq6-6 9.15 png 11.36 lossless JPEG 12.07 JPEG-LS 10.61 Förvånansvärt gör paq6 ett bättre jobb än speciella bildkodare. paq6 har kontexter som försöker upptäcka 24-bitarsdata. Dessutom klarar paq6 av att utnyttja beroendet mellan de tre färgkanalerna, medan de tre bildkodarna kodar R-, G- och B-kanalerna separat.
Datakompression fö 9 p.11 Informationsteori Entropi H(X) = L p X (x i ) log p X (x i ) i=1 H(X, Y )= Betingad entropi H(X Y )= Ömsesidig information L i=1 L i=1 M p XY (x i,y j ) log p XY (x i,y j ) j=1 M p XY (x i,y j ) log p X Y (x i y j ) j=1 I(X; Y )= L i=1 M j=1 p XY (x i,y j ) log p X Y (x i y j ) p X (x i )
Datakompression fö 9 p.12 Informationsteori Kedjeregeln H(X 1 X 2...X N )= H(X 1 )+H(X 2 X 1 )+ + H(X N X 1...X N 1 ) Ömsesidig information I(X; Y )=H(X) H(X Y )=H(Y) H(Y X) I(X; Y )=H(X)+H(Y) H(X, Y ) Olikheter 0 H(X) log L H(X Y ) H(X) I(X; Y ) 0 H(f(X)) H(X)
Datakompression fö 9 p.13 Källor Entropi(takt) lim n 1 n H(X 1...X n ) = lim n H(X n X 1...X n 1 ) Markovkälla av ordning k: Källa med minne som inte sträcker sig längre än k steg tillbaka i sekvensen. Entropi(takt) för markovkälla: H(X i X i 1...X i k ) L k j=1 w j H(S i+1 S i = s j )
Datakompression fö 9 p.14 Källkodningsteori Kod: Avbildning från symbolsekvenser till bitsekvenser. Unikt avkodbara koder: Man kan återskapa symbolsekvensen. Momentant avkodbara koder: Gränserna mellan kodorden i bitsekvensen kan ses direkt när man avkodar. Prefixkoder: Inget kodord prefix till något annat. Trädkoder. Alla prefixkoder är moment avkodbara och vice versa.
Datakompression fö 9 p.15 Källkodningsteori Krafts olikhet: En momentant avkodbar kod (prefixkod, trädkod) med kodordslängderna l 1,...,l N existerar om och endast om N 2 l i 1 i=1 Kraft-McMillans olikhet: Olikheten ovan gäller för alla unikt avkodbara koder. Godhetsmått: medeldatatakt R = E{# bitar i kodordet} E{# symboler per kodord} [bitar/symbol] Medeldatatakten är aldrig mindre än entropitakten. Glöm inte bort sidoinformationen! Kodträd, fördelningar, kodparametrar, etc.
Datakompression fö 9 p.16 Praktiska metoder Huffmankodning Aritmetisk kodning Lempel-Ziv-kodning (LZ77, LZ78, LZSS, deflate, LZW) Adaptiv huffmankodning Adaptiv aritmetisk kodning (ppm) Systematiska koder (Golomb) Skurlängdskodning (fax) Tunstallkodning BWT