Datakompression fö 1 p.3 Datakompression fö 1 p.4 Kursinnehåll Datakompression Harald Nautsch harna@isy.liu.se http://www.icg.isy.liu.se/courses/tsbk04/ ISY Bildkodning, Linköpings universitet Källmodellering: Stokastiska variabler och processer som modeller för källor. Källkodningsteori: Definition av en kod. Kodklasser. Praktiska komprimeringsmetoder: Huffmankodning, tunstallkodning, aritmetisk kodning, systematiska koder, Lempel-Ziv-kodning, Burrows-Wheeler-kodning. pack, compress, zip, gzip, bzip, GIF, PNG, faxkodning, lossless JPEG, JPEG-LS, m.fl. Informationsteori: Definitioner av information och entropi. Entropin ger en teoretisk gräns för hur mycket vi kan komprimera signalen från en stokastisk källa utan att få någon distorsion. Datakompression fö 1 p.1 Föreläsningar, preliminärt program Examination Datakompression fö 1 p.2 1. Inledning. Källor. Stokastiska källmodeller. Källkodning. 2. Källkodning. Informationsteori 3. Informationsteori. Optimala koder. Huffmankodning. 4. Skurlängdskodning. Systematiska koder. Tunstallkodning. 5. Aritmetisk kodning. 6. Lempel-Ziv-kodning. 7. Burrows-Wheelers blocktransform. 8. Adaptiv aritmetisk kodning. ppm. Binära aritmetiska kodare. 9. Diverse. Sammanfattning. Liten projektlab. Implementation av ett par av metoderna som gås igenom i kursen. Testa på riktiga data (text, exekverbara filer, m.m.). Entropiskattningar. Görs i grupper om 1-2 personer. Redovisas med en liten rapport. Information inom kort på kurssidan. Labtiderna i schemat resurstider, dvs assistent finns tillgänglig. Skriftlig tentamen. Inga hjälpmedel tillåtna, förutom miniräknare.
Datakompression fö 1 p.7 Datakompression fö 1 p.8 Källor Stokastiska variabler En källa är något som producerar en en sekvens av symboler. Symbolerna är element i ett diskret alfabet A = {a 1,a 2,...,a L } av storlek L. För det mesta kommer vi att behandla ändliga alfabet, men även oändliga alfabet är tillåtna. I många fall har man bara tillgång till själva symbolsekvensen och får därför modellera källan från den. De källmodeller vi kommer att koncentrera oss på är stokastiska modeller, där vi antar att symbolerna produceras från stokastiska variabler eller stokastiska processer. Utfallsrummet Ω är mängden av möjliga utfall av ett slumpexperiment, Ω={ω 1,ω 2,...,ω n } Varje delmängd av Ω kallas för en händelse. Elementen ω i kallas för elementarhändelser. Vi har ett mått P (sannolikhet) på elementarhändelserna. En stokastisk variabel X är en avbildning från utfallsrummet till alfabetet A X :Ω A Vi skriver {X = x} för händelsen {ω : X(w) =x}, menp (X = x) istället för det mer otympliga P ({X = x}). Stokastiska variabler, forts. Datakompression fö 1 p.5 Stokastiska variabler, forts. Datakompression fö 1 p.6 Sannolikhetsfunktionen p X p X (x) =P (X = x), x A Vidare gäller att p X (x) 0 för alla x och p X (x) =1 x A För en reellvärd funktion f(x) av en stokastisk variabel X så är medelvärdet (väntevärdet) det reella talet E{f(X)} = x A f(x) p X (x) VikanävenhaX =(Y,Z) där Y och Z är stokastiska variabler med alfabet A Y = {y 1,...,y M } resp. A Z = {z 1,...,z N }. X tar då värden i A X = {(y 1,z 1 ), (y 1,z 2 ),...,(y M,z N )}. Vi skriver vanligtvis p YZ (y, z) istället för p X ((y, z)). Vi kan naturligtvis generalisera detta till X =(X 1,X 2,...,X K ). De stokastiska variablerna Y och Z kallas oberoende om p YZ (y, z) =p Y (y) p Z (z), y, z Den betingade sannolikhetsfunktionen p X Y definieras som p X Y (x y) = p XY (x, y) p Y (y) då p Y (y) > 0.
Datakompression fö 1 p.11 Datakompression fö 1 p.12 Stokastiska källor Markovkällor En källa modelleras som en stokastisk process X n (kan också ses som en följd av stokastiska variabler)...,x 1,X 0,X 1,X 2,... För det mesta är vi bara intresserade av stationära källor, dvs att alla sannolikhetsfunktioner är oberoende av n. Exempelvis: p Xn X n+1 = p Xn+k X n+k+1 Om X n och X m är oberoende för alla n m så kallas källan minnesfri, annars säger vi att källan har minne. En markovkälla av ordning k är en minneskälla med begränsat minne k steg tillbaka i sekvensen p(x n x n 1 x n 2...)=p(x n x n 1...x n k ) Om alfabetet är A = {a 1,a 2,...,a L }, kan markovkällan beskrivas som en tillståndsmodell med L k tillstånd (x n 1...x n k ) där vi går från tillstånd (x n 1...x n k ) till tillstånd (x n...x n k+1 ) med sannolikheten p(x n x n 1...x n k ). Dessa sannolikheter kallas övergångssannolikheter Sekvensen av tillstånd är en stokastisk process S n =(X n 1...X n k ) med ett alfabet {s 1,s 2,...,s L k} av storlek L k. Markovkällor, forts. Datakompression fö 1 p.9 Stationär fördelning Datakompression fö 1 p.10 Markovkällan kan beskrivas med hjälp av sitt starttillstånd och sin övergångsmatris P. Denna kvadratiska matris har i rad r och kolumn k övergångssannolikheten från tillstånd s r till s k. Om det är möjligt att gå, med positiv sannolikhet, från varje tillstånd till varje annat tillstånd i ett ändligt antal steg så kallas markovkällan irreducibel. Om vi i tidpunkten n står i tillstånd s i med sannolikheterna p n i,såkanvi beräkna sannolikheterna för tidpunkt n +1som [p n+1 1 p n+1 2... p n+1 L k ]=[p n 1 p n 2... p n L k] P En fördelning över tillstånden sådan att fördelningen vid tidpunkt n +1är den samma som vid tidpunkt n kallas för en stationär fördelning. Om markovkällan är irreducibel och ickeperiodisk, så är den stationära fördelningen unik och varje startfördelning kommer att gå mot den stationära fördelningen när tiden går mot oändligheten. Vi betecknar de stationära sannolikheterna med w i och definierar radvektorn w =(w 1,w 2,...,w L k) Om den stationära fördelningen existerar kan den fås som lösningen till ekvationssystemet w = w P eller w (P I) = 0 Detta ekvationssystem är underbestämt (om w är en lösning är även k w en lösning). För att kunna lösa det ersätter vi någon ekvation med L k j=1 w j =1(w j är ju sannolikheter och måste därför summera till 1). (Föredrar man ekvationssystem med kolumnvektorer, så är det bara att transponera hela uttrycket och lösa w t = P t w t istället.)
Datakompression fö 1 p.15 Datakompression fö 1 p.16 Stokastisk modellering Bibeln som markovkälla Givet en lång symbolsekvens från en källa, hur gör man en stokastisk modell för den? Relativa frekvenser: För att till exempel få fram sannolikheten för en enstaka symbol, så räknar man antalet förekomster av symbolen och delar med det totala antalet symboler i sekvensen. På samma sätt kan detta göras för parsannolikheter, trippelsannolikheter, betingade sannolikheter et c. Dessa metoder ger tvåpassalgoritmer, där man först måste gå igenom sekvensen en gång för att skatta sannolikheter och sen en gång till när man kodar sekvensen. Senare i kursen kommer vi att ta upp adaptiva metoder, där man inte behöver gå igenom sekvensen två gånger. Sannolikheter skattade ur 1917 års bibel. Exempelsekvenser skapade av olika markovmodeller: Markov, ordning 1: Ban n pr tusopå bensoch jakaränguräkerärudera. sochör son deng, aranoch o brsade ftyggörmed. ochartiljupppt odenuskvigdekadens, t deskarör vå hoch s ber föve, en boma vtärtit ha, Markov, ordning 2: Med går, tashet. Fares, var som jung När må lagar och vinrödet De dig för mott bröder dardin Jest, prett konom forslöver: 2 för icklara säkt. 5 Akblom i Jort at Markov, ordning 3: Mina arbort Likas»rätt milja derna, 60. Då när mina vand böner kommitt de ifrån nu Heles skapade: på Herren. Han införlåter. På David beskänning, ty 1 Mosebok (Lev Markov, ordning 4: Jag sågen pust att hjärtan för mig, jag lämna icke vid namn av havet, godelaktning. Till se mig, vagnens och mark ut bliva månade skola och sitt talats ting, Källkodning Datakompression fö 1 p.13 Källkodning, forts Datakompression fö 1 p.14 Källkodning innebär att vi avbildar sekvenser av symboler ur en källas alfabet på binära sekvenser (kallade kodord). Mängden av alla kodord kalls för en kod. Man kan förstås tänka sig att ha icke-binära koder också, men i praktiken används bara binära koder. Beroende på om vi avbildar ett fixt eller varierande antal symboler till varje kodord och om varje kodord har ett fixt eller varierande antal bitar, kan vi dela in koderna i fyra grupper: Fixt antal symboler, fixt antal bitar Exempel: ASCII, ISO 8859-1 Fixt antal symboler, varierande antal bitar Exempel: Huffmankodning, aritmetisk kodning Varierande antal symboler, fixt antal bitar Exempel: Tunstallkodning, Lempel-Ziv Varierande antal symboler, varierande antal bitar Exempel: Lempel-Ziv
Datakompression fö 1 p.19 Datakompression fö 1 p.20 Några exempel Egenskaper hos koder Antag att A = {a, b, c} fix fix fix variabel a 00 0 b 10 10 c 01 110 variabel fix variabel variabel aa 000 0 aba 001 100 abb 010 101 abc 011 1100 ac 100 1101 b 101 1110 c 110 11110 Om man från en sekvens av kodord kan återskapa den ursprungliga källsekvensen kallas koden för unikt avkodbar. Om man kan känna igen kodorden direkt vid avkodning, kallas koden momentant avkodbar (instantaneous). Om inget kodord är prefix till något annat kodord kallas koden för en prefixkod (i viss litteratur kallas de för prefixfria koder). Dessa koder är trädkoder, dvs kodorden är löv i ett binärt träd. Alla prefixkoder är momentant avkodbara och alla momentant avkodbara koder är prefixkoder. Exempel Datakompression fö 1 p.17 Datakompression fö 1 p.18 Är en given kod unikt avkodbar eller ej? Exempel, A = {a, b, c, d} Symbol Kod 1 Kod 2 Kod 3 Kod 4 a 0 0 0 0 b 0 1 10 01 c 1 00 110 011 d 10 11 111 111 Kod 1 Ej unikt avkodbar Kod 2 Ej unikt avkodbar Kod 3 Unikt avkodbar, momentant avkodbar Kod 4 Unikt avkodbar, ej momentant avkodbar Gör en lista av alla kodord. Undersök alla par av element i listan för att se om något element är prefix till ett annat element. I sådana fall lägg till suffixet till listan, om det inte redan finns där. Repetera tills en av två saker händer: 1. Man hittar ett suffix som är ett kodord. 2. Man hittar inga nya suffix att lägga till listan. I fall 1 är koden inte unikt avkodbar, i fall 2 är koden unikt avkodbar.