Adaptiv aritmetisk kodning

Relevanta dokument
Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Shannon-Fano-Elias-kodning

Aritmetisk kodning. F (0) = 0 Exempel: A = {1, 2, 3} k=1. Källkodning fö 5 p.1/12

FLAC (Free Lossless Audio Coding)

Burrows-Wheelers transform

Ordbokskodning. Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning)

Exempel, minnesfri binär källa. Ordbokskodning. Lempel-Zivkodning. Lempel-Zivkodning, forts.

Skurlängdskodning. aaaabbbbbbbccbbbbaaaa. Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga.

Källkodning. Egenskaper hos koder. Några exempel

Datakompression. Harald Nautsch ISY Bildkodning, Linköpings universitet.

Kursinnehåll. Datakompression. Föreläsningar, preliminärt program. Examination

TSBK04 Datakompression. Övningsuppgifter

TSBK04 Datakompression Övningsuppgifter

En generell prediktiv kodare utnyttjar signalens utseende N steg tillbaka i tiden för kodningen, dvs vi kodar efter den betingade fördelningen

Linjär prediktion. Prediktiv kodning. Linjär prediktion. Prediktiv kodare och avkodare

Krafts olikhet. En momentant avkodbar kod (prefixkod) med kodordslängderna l 1,...,l N existerar om och endast om. 2 l i. 1 i=1

Kurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer. Khalid Sayood, Introduction to Data Compression

Digital- och datorteknik

Digital- och datorteknik

Kompression av ljud och bild

Datorsystemteknik DVG A03 Föreläsning 3

AD-DA-omvandlare. Mätteknik. Ville Jalkanen. 1

Kurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer

Datastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd.

Föreläsninsanteckningar till föreläsning 3: Entropi

F3 Datarepresentation teckenkodning och datakompression EDAA05 Datorer i system! Roger Henriksson!

F3 Datarepresentation teckenkodning och datakompression

Förenklad förklaring i anslutning till kompedieavsnitten 6.3 och 6.4

Digital- och datorteknik

Analog till Digitalomvandling

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Analog till Digitalomvandling

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Tentamen, Algoritmer och datastrukturer

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Föreläsning 8: Aritmetik och stora heltal

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

F2 Datarepresentation talbaser, dataformat och teckenkodning

DIGITALA TAL OCH BOOLESK ALGEBRA

Digital elektronik CL0090

Föreläsning 13. Dynamisk programmering

Grundläggande Datorteknik Digital- och datorteknik

Kort beskrivning av Sveriges första dator BESK

Digital Aritmetik Unsigned Integers Signed Integers"

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

Föreläsning 7. Felrättande koder

TSBK35 Kompression av ljud och bild

Transformkodning Idé: 1. Tag datasekvensen och dela in den i block av storlek N (eller N N om signalen är tvνadimensionell). Transformera dessa block

F2 Introduktion. Sannolikheter Standardavvikelse Normalapproximation Sammanfattning Minitab. F2 Introduktion

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Övning 6 - Tillämpad datalogi 2012

LMA201/LMA521: Faktorförsök

Övningshäfte 2: Induktion och rekursion

Föreläsning 17 - Komprimering

IE1205 Digital Design: F9: Synkrona tillståndsautomater

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

Tentamen'i'TMA321'Matematisk'Statistik,'Chalmers'Tekniska'Högskola.''

Föreläsning 1: Bild- och ljudkodning

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDDC74 Programmering, abstraktion och modellering. Tentamen

Datoraritmetik. Binär addition papper och penna metod. Binär subtraktion papper och penna metod. Binär multiplikation papper och penna metod

Psykoakustik. Ljudtrycksnivå. Hörselns omfång. Hörnivå(loudness) Människans hörsel är ganska väl studerad och det finns bra modeller för den.

Simulering av Poissonprocesser Olle Nerman, Grupprojekt i MSG110,GU HT 2015 (max 5 personer/grupp)

Tenta i Digitalteknik

För logitmodellen ges G (=F) av den logistiska funktionen: (= exp(z)/(1+ exp(z))

SEKVENSKRETSAR. Innehåll

Diskreta Linjära System och Skiftregister

7 november 2014 Sida 1 / 21

Tentamen MVE301 Sannolikhet, statistik och risk

Digital- och datorteknik

Lab 3 Kodningsmetoder

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

FÖ: MVE045, Riemann integral, grunder Zoran Konkoli, HT 2018

Tentamen i Digitalteknik, EITF65

Flyttal kan också hantera vanliga tal som både 16- och 32-bitars dataregister hanterar.

Grupp/Center-statistik. Terminologi/ordlista...2 Urval...3 Analystyper...4

F2 Binära tal EDA070 Datorer och datoranvändning

Tillämpad Programmering (ID1218) :00-13:00

Kodning med distorsion

Analys/syntes-kodning

Binär addition papper och penna metod

Föreläsning 7: Bild- och videokodning

Läsminne Read Only Memory ROM

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Resträkning och ekvationer

Teoretisk del. Facit Tentamen TDDC (6)

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

4/27/12. Fönstring i MDCT. Föreläsning 10: Ljudkodning ( Audio Coding ) 1. Inledning PCM, standardmetoder, MDCT, psykoakustik, ljudtryck

IE1205 Digital Design: F6 : Digital aritmetik 2

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

Programmering II (ID1019)

Mattias Wiggberg Collaboration

Tillåtna hjälpmedel: Räknedosa. Formel- och tabellsamling i matematisk statistik.

LARS ULVELAND HOPFIELDNÄTVERK FÖR IGENKÄNNING AV DEGRADERADE BILDER OCH HANDSKRIVNA TECKEN

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

2-14 Binära talsystemet-fördjupning Namn:

Exempel ode45 parametrar Miniprojekt 1 Rapport. Problemlösning. Anastasia Kruchinina. Uppsala Universitet. Januari 2016

Räkna med C# Inledande programmering med C# (1DV402)

Tenta i Digitalteknik

Transkript:

Datakompression fö 8 p.1 Adaptiv aritmetisk kodning Aritmetisk kodning är väldigt enkel att göra adaptiv, eftersom vi bara behöver göra en adaptiv sannolikhetsmodell, medan själva kodaren är fix. Till skillnad från huffmankodning så behöver vi inte hålla reda på ett kodträd, utan bara skatta sannolikheterna för de olika symbolerna genom att räkna hur ofta de uppträder. Det är även enkelt att koda minneskällor genom att hålla reda på betingade sannolikheter.

Datakompression fö 8 p.2 Exempel Minnesfri källa, A = {a, b}. Låt r a och r b hålla reda på antalet gånger a resp. b uppträtt tidigare. De skattade sannolikheterna blir då p(a) = r a r a + r b, p(b) = r b r a + r b Antag att vi ska koda sekvensen aababaaabba... Startvärden: r a = r b =1. Koda a, med sannolikheterna p(a) =p(b) =1/2. Updatera: r a =2,r b =1. Koda a, med sannolikheterna p(a) =2/3, p(b) =1/3. Updatera: r a =3,r b =1.

Datakompression fö 8 p.3 Exempel, forts. Koda b, med sannolikheterna p(a) =3/4, p(b) =1/4. Updatera: r a =3,r b =2. Koda a, med sannolikheterna p(a) =3/5, p(b) =2/5. Updatera: r a =4,r b =2. Koda b, med sannolikheterna p(a) =2/3, p(b) =1/3. Updatera: r a =4,r b =3. et cetera.

Datakompression fö 8 p.4 Exempel, minneskälla Markov ordning 1, A = {a, b}. Låt r a a,r b a,r a b och r b b hålla reda på antal gånger symboler uppträtt, givet föregående symbol. De skattade sannolikheterna blir då p(a a) = r a a r a a + r b a, p(b a) = r b a r a a + r b a p(a b) = r a b r a b + r b b, p(b b) = r b b r a b + r b b Antag att vi ska koda sekvensen aababaaabba... Antag att föregående symbol var ett a. Startvärden: r a a = r b a = r a b = r b b =1. Koda a, med sannolikheterna p(a a) =p(b a) =1/2. Updatera: r a a =2,r b a =1,r a b =1,r b b =1.

Datakompression fö 8 p.5 Exempel, forts. Koda a, med sannolikheterna p(a a) =2/3, p(b a) =1/3. Updatera: r a a =3,r b a =1,r a b =1,r b b =1. Koda b, med sannolikheterna p(a a) =3/4, p(b a) =1/4. Updatera: r a a =3,r b a =2,r a b =1,r b b =1. Koda a, med sannolikheterna p(a b) =1/2, p(b b) =1/2. Updatera: r a a =3,r b a =2,r a b =2,r b b =1. Koda b, med sannolikheterna p(a a) =3/5, p(b a) =2/5. Updatera: r a a =3,r b a =3,r a b =2,r b b =1. et cetera.

Datakompression fö 8 p.6 Uppdatering Uppdatering av räknarna sker efter att symbolen kodas, så avkodaren kan göra exakt samma uppdateringar, och ingen sidoinformation behövs. Om man vill att kodningen ska bero mer av det som hänt nyligen än det som hände långt tillbaka i tiden, kan man använde en glömskefaktor. T.ex. i vårt första exempel, när r a + r b >Nså delar vi räknarna med en faktor K: r a r a K, r b r b K Beroende på hur man väljer N och K så glömmer vi tidigare värden olika snabbt, d.v.s. vi får olika snabb adaptering till ändrad statistik.

Datakompression fö 8 p.7 Prediction with Partial Match (ppm) Om man vill koda aritmetiskt med betingade sannolikheter, där man tar hänsyn till många tidigare symboler (motsvarande en markovmodell med hög ordning) så måste man lagra väldigt många räknare. Istället för att lagra alla möjliga kombinationer av tidiga symboler (kontexter), så lagrar vi bara de som verkligen har hänt. Vi måste då införa en extra symbol (escape) för att kunna tala om när något nytt inträffar. I ppm använder man även kontexter av olika längd. Man ansätter en maximal längd N. När man ska koda en symbol tittar man först på den längsta kontexten. Om symbolen uppträtt tidigare i den kontexten kodar man symbolen med motsvarande sannolikhet, annars kodar man en escape-symbol och fortsätter med närmast mindre kontext. Har symbolen inte kodats alls tidigare, i någon kontext, kodas symbolen med en likformig fördelning. Efter att symbolen kodats uppdateras räknarna i kontexterna och eventuella nya kontexter skapas.

Datakompression fö 8 p.8 ppm forts. Det finns många varianter av ppm. Framför allt finns det diverse olika sätt att behandla räknaren (sannolikheten) för escape-symbolen. Den enklaste varianten (kallad ppma) är att alltid låta escape-räknaren vara ett. I ppmb minskar man alla räknare med ett (utom de som redan har värdet ett) och låter räknaren för escape ta detta värde. ppmc är snarlik ppmb. Räknaren för escape är lika med antalet olika symboler som uppträtt i den kontexten. I ppmd ökar man räknaren för escape med ett varje gång man kodar escape. En annan sak man kan utnyttja är uteslutningsprincipen. När man kodar en escapesymbol så vet man att nästa symbol inte är någon av de symboler som uppträtt i den kontexten tidigare. Dessa symboler kan därför ignoreras när man kodar med en kortare kontext. ppm-kodare är de bland de bästa generella kodare som finns när det gäller kompressionsgrad. Nackdelen är att de tenderar att vara väldigt långsamma och kräver mycket minne.

Datakompression fö 8 p.9 Komprimering av bibeln.txt pack 4.51 bitar/symbol. compress -b 16 2.96 gzip -9 2.55 bzip2-9 1.84 dmc c 128000000 1.80 ppmd -m128 -o16 1.53 paq6-7 1.41 pack är en minnesfri statisk huffmankodare. compress använder LZW, ordboksstorlek 2 b. gzip använder deflate, parametern bestämmer hur länge man söker. bzip2 använder BWT + mtf + huffmankodning, blockstorlek n 100000. dmc bygger dynamiskt en markovmodell för källan och kodar aritmetiskt. ppmd: -o styr maxstorleken på kontexterna och -m styr hur mycket minne som maximalt används. paq6 är en nära släkting till ppm där man väger samman olika typer av sannolikhetsskattningar.

Datakompression fö 8 p.10 MQ-kodaren MQ-kodaren är en binär aritmetisk kodare som används i stillbildskodningsstandarderna JBIG2 och JPEG2000. Dess föregångare QM-kodaren används i standarderna JBIG och JPEG. Varje fördelning över ett godtyckligt stort alfabet kan beskrivas som en följd av binära val, så det är ingen större begränsning att bara låta den aritmetiska kodaren arbeta med ett binärt alfabet. I MQ-kodaren håller man reda på den lägre gränsen (kallad C) och intervallets storlek (kallad A). För att maximalt utnyttja noggrannheten i beräkningarna skalar man om intervallet med en faktor 2 (vilket motsvarar ett bitskift åt vänster) så fort som intervallstorleken går under 0.75. Intervallstorleken kommer alltså alltid att uppfylla 0.75 A<1.5. Vid kodningen lägger man alltid den mest sannolika symbolen (MPS) längst ner i intervallet och den minst sannolika (LPS) överst.

Datakompression fö 8 p.11 MQ-kodaren, forts. Om den minst sannolika symbolen (LPS) har sannolikheten Q e, så blir uppdateringen av C och A: Om man kodar MPS: och om man kodar LPS: C = C A = A (1 Q e ) C = C + A (1 Q e ) A = A Q e Eftersom A alltid är ungefär 1, så kan man göra approximationen A Q e Q e.

Datakompression fö 8 p.12 MQ-kodaren, forts. Uppdateringen av C och A blir efter approximationen Om man kodar MPS: C = C A = A Q e och om man kodar LPS: C = C + A Q e A = Q e Vi får alltså en aritmetisk kodare som är fri från multiplikationer, vilket gör att den är enkel att implementera både i mjuk- och hårdvara.

Datakompression fö 8 p.13 MQ-kodaren, forts. MQ-kodaren använder typiskt fixpunktsaritmetik med 16 bitars noggrannhet, där C och A lagras i 32-bitars-register enligt C : 0000 cbbb bbbb bsss xxxx xxxx xxxx xxxx A : 0000 0000 0000 0000 aaaa aaaa aaaa aaaa x-bitarna är bitarna efter binärpunkten i C och a-bitarna är bitarna efter binärpunkten i A. Som konvention låter man A =0.75 motsvaras av 1000 0000 0000 0000. Det innebär att man ska skifta A och C när den 16:e biten i A blir 0.

Datakompression fö 8 p.14 MQ-kodaren, forts. C : 0000 cbbb bbbb bsss xxxx xxxx xxxx xxxx A : 0000 0000 0000 0000 aaaa aaaa aaaa aaaa b är de 8 bitar som ska skickas som en byte härnäst. Varje gång man skiftar C och A så räknar man upp en räknare, när man räknat 8 bitar så kan man skicka en byte. s är till för att man inte ska skicka de 8 senaste bitarna, utan så man får en buffert i händelse av att man får bitar i minne från beräkningarna. Av samma orsak finns c. Om en minnessiffra propagerar ända till c så får man addera ett till den senast buffrade byten. För att inte denna bit i sin tur ska ge upphov till minnespropagering så stoppar man in en extra nolla i kodordet varje gång man buffrar en byte med bara ettor i. Denna extra bit kan detekteras (och tas bort) vid avkodningen. Jämför med problemet med 01 vs 10 i den tidigare beskrivningen av aritmetisk kodning.

Datakompression fö 8 p.15 Sannolikhetsskattningar I JPEG, JBIG och JPEG2000 använder man adaptiva skattningar av sannolikheterna. Istället för att ha räknare för hur ofta symbolerna uppträder, så använder man en tillståndsmaskin där varje tillstånd har en förutbestämt fördelning (värde på Q e ) och där man byter tillstånd beroende på vilken symbol som kodades.