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

Relevanta dokument
Shannon-Fano-Elias-kodning

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.

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

Adaptiv aritmetisk kodning

TSBK04 Datakompression. Övningsuppgifter

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

TSBK04 Datakompression Övningsuppgifter

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

Kompression av ljud och bild

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.

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

Digital- och datorteknik

Digital- och datorteknik

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

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

FLAC (Free Lossless Audio Coding)

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

TSBK35 Kompression av ljud och bild

Kodning med distorsion

Informationsteori. Repetition Kanalkapaciteten C. Repetition Källkodhastigheten R 2. Repetition Kanalkodhastigheten R 1. Huffmans algoritm: D-när kod

Burrows-Wheelers transform

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Digital- och datorteknik

Föreläsning 7. Felrättande koder

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

Lab 3 Kodningsmetoder

Detta ger oss att kanalkapaciteten för den ursprungliga kanalen är C = q 1 C 1 + q 2 C C =1 h ( ) 0.30.

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

Mer om reella tal och kontinuitet

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Dagens föreläsning Programmering i Lisp Fö 5

Träd och koder. Anders Björner KTH

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

Tentamen, Algoritmer och datastrukturer

Föreläsning 3, Matematisk statistik Π + E

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

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

DAB760: Språk och logik

F2 Datarepresentation talbaser, dataformat och teckenkodning

Matematisk statistik 9 hp Föreläsning 3: Transformation och simulering

a) Beräkna sannolikheten att en följd avkodas fel, det vill säga en ursprungliga 1:a tolkas som en 0:a eller omvänt, i fallet N = 3.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

DIGITAL KOMMUNIKATION

Rekursiva algoritmer sortering sökning mönstermatchning

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

TDDI16: Datastrukturer och algoritmer

DIGITALA TAL OCH BOOLESK ALGEBRA

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

17.1 Kontinuerliga fördelningar

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

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

CE_O3. Nios II. Inför lab nios2time

Digital- och datorteknik

Simulering. Introduktion. Exempel: Antag att någon kastar tärning

Lösningsförslag Tentamen i Beräkningsvetenskap I, 5.0 hp,

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

Uppgift 1 ( Betyg 3 uppgift )

Lösningsförslag till övningsuppgifter, del V

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

kl Tentaupplägg

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Tentamen i TDDC75 Diskreta strukturer , lösningsförslag

Kontinuitet och gränsvärden

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

F2 Binära tal EDA070 Datorer och datoranvändning

Moment 2 - Digital elektronik. Föreläsning 1 Binära tal och logiska grindar

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

Prov 1 2. Ellips 12 Numeriska och algebraiska metoder lösningar till övningsproven uppdaterad a) i) Nollställen för polynomet 2x 2 3x 1:

Malmö högskola 2007/2008 Teknik och samhälle

Föreläsning 10: Ljudkodning ( Audio Coding )

Matematisk statistik TMS064/TMS063 Tentamen

F3 Introduktion Stickprov

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

MMA132: Laboration 2 Matriser i MATLAB

SF1901: SANNOLIKHETSTEORI OCH KONTINUERLIGA STOKASTISKA VARIABLER STATISTIK. Tatjana Pavlenko. 7 september 2016

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

2 Dataanalys och beskrivande statistik

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Statistiska metoder för säkerhetsanalys

Turingmaskinen - en abstrakt datormodell

Programmering II (ID1019)

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.

f (a) sin

Binär addition papper och penna metod

Facit Tentamen TDDC (7)

Facit Tentamen i Beräkningsvetenskap I, STS ES W K1

Facit Tentamen i Beräkningsvetenskap I, STS ES W K1

Kurs DN1215, Laboration 3 (Del 1): Randvärdesproblem för ordinära differentialekvationer

Transkript:

Aritmetisk kodning Vi identifierar varje sekvens av källsymboler med ett tal i intervallet [0, 1). Vi gör det med hjälp av fördelningsfunktionen (cumulative distribution function) F. För enkelhets skull antar vi att alfabetet består av positiva heltal. A = {1, 2,...,L} F (i) = i p(k) k=1 F (0) = 0 Exempel: A = {1, 2, 3} p(1) = 0.7, p(2) = 0.1, p(3) = 0.2 F (0) = 0, F(1) = 0.7, F(2) = 0.8, F(3) = 1 Källkodning fö 5 p.1/12

Intervall Symbolen i associeras med delintervallet [F (i 1),F(i)). Varje delintervall delas i sin tur in mindre delintervall i samma proportioner som originalintervallet [0, 1) om källan är minnesfri. Har vi en minneskälla kan vi istället dela upp intervallen enligt den betingade fördelningsfunktionen. Varje symbolsekvens av längd n identifierar unikt ett delintervall. Kodordet för sekvensen är ett tal i intervallet. Antal bitar i kodordet beror av intervallets storlek, så ett stort intervall (dvs en sekvens med hög sannolikhet) får ett kort kodord, medan ett litet intervall ger ett längre kodord. Källkodning fö 5 p.2/12

Iterativ algoritm Antag att vi vill koda en sekvens x = x 1,x 2,...,x n. Vi betecknar den undre gränsen i motsvarande intervall med l (n) och den övre gränsen med u (n).mankandåvisaatt l (n) = l (n 1) +(u (n 1) l (n 1) )F (x n 1) Startvärden är l (0) =0och u (0) =1. u (n) = l (n 1) +(u (n 1) l (n 1) )F (x n ) Intervallstorleken är förstås lika med sannolikheten för sekvensen u (n) l (n) = p(x) Källkodning fö 5 p.3/12

Kodord Kodordet för ett intervall är den kortaste bitsekvens b 1 b 2...b k sådan att det binära talet 0.b 1 b 2...b k ligger i intervallet och att även alla andra tal som börjar med samma k bitar också ligger i intervallet. Givet ett binärt tal a i intervallet [0, 1) med k bitar 0.b 1 b 2...b k. Alla tal vars k första bitar är samma som för a ligger i intervallet [a, a + 1 ). 2 k Ett nödvändigt villlkor för att hela detta intervall ska ligga inom intervallet som hör till symbolsekvensen, är att det är mindre än eller lika stort som symbolsekvensintervallet, dvs p(x) 1 2 k k log p(x) Vi kan inte vara säkra på att det verkligen räcker med log p(x) bitar, eftersom vi inte kan placera ut dessa intervall på godtyckliga platser. Däremot kan man inse att det maximalt krävs en bit extra om man har otur. Kodordslängden l(x) för en sekvens x ges alltså av l(x) = log p(x) eller l(x) = log p(x) +1 Källkodning fö 5 p.4/12

Kodordsmedellängd l = p(x) l(x) x x x p(x) ( log p(x) +1) p(x) ( log p(x)+2)= x p(x) log p(x)+2 p(x) = H(X 1 X 2...X n )+2 Och den resulterande datatakten begränsas alltså uppåt av x R 1 n H(X 1X 2...X n )+ 2 n Detta är visserligen lite sämre än man skulle få med en utvidgad huffmankod, men huffmankoder är inte praktiskt användbara för stora n. Komplexiteten för en aritmetisk kod är å andra sidan oberoende av hur många symboler n som man kodar i taget. Källkodning fö 5 p.5/12

Praktiska problem Vi har begränsad precision och kan inte lagra intervallgränser och sannolikheter med godtycklig noggrannhet. Vi vill kunna börja skicka bitar utan att vänta på att hela sekvensen med n symboler kodats. En lösning är att skicka bitar så snart vi är säkra på dem och att när deta görs skala om intervallet, så att vi maximalt utnyttjar den tillgängliga precisionen. När intervallet blir mindre och mindre kan tre intressanta saker hända: 1. Intervallet ligger helt inom [0, 0.5) 2. Intervallet ligger helt inom [0.5, 1) 3. Intervallet ligger helt inom [0.25, 0.75) och innefattar 0.5 Källkodning fö 5 p.6/12

Intervallskalning 1. Vi vet att kodordet måste börja med en 0:a. Skicka en 0:a och skala om intervallet så att [0, 0.5) [0, 1) 2. Vi vet att kodordet måste börja med en 1:a. Skicka en 1:a och skala om intervallet så att [0.5, 1) [0, 1) 3. Skala om intervallet så att [0.25, 0.75) [0, 1) Skicka inga bitar, men håll reda på hur många gånger vi gör omskalningar av den här typen. Nästa gång vi gör en omskalning av typen 1, skicka först en 0:a och sedan lika många 1:or extra som antalet omskalningar av typ 3. På samma sätt, nästa gång vi gör en omskalning av typ 2 så skickas en 1:a och lika många extra 0:or som antalet omskalningar av typ 3. Källkodning fö 5 p.7/12

Fixpunktsaritmetik Aritmetisk kodning implementeras oftast med fixpunktsaritmetik. Antag att intervallgränserna l (n) och u (n) lagras som heltal med m bitars noggrannhet och att fördelningsfunktionen F (i) lagras som heltal med k bitars noggrannhet. Algoritmen kan då modifieras till l (n) = l (n 1) + (u(n 1) l (n 1) +1)F (x n 1) 2 k u (n) = l (n 1) + (u(n 1) l (n 1) +1)F (x n ) 2 k 1 Startvärden blir l (0) =0och u (0) =2 m 1. Källkodning fö 5 p.8/12

Intervallskalning De tre fallen när vi ska göra intervallskalning blir: 1. Intervallet ligger helt inom [0, 2 k 1 ), dvs den mest signifikanta biten i både l (n) och u (n) är 0. 2. Intervallet ligger helt inom [2 k 1, 2 k ), dvs den mest signifikanta biten i både l (n) och u (n) är 1. 3. Intervallet ligger helt inom [2 k 2, 2 k 1 +2 k 2 ) och innehåller 2 k 1 1, dvs de två mest signifikanta bitarna är 01 i l (n) och 10 i u (n). Källkodning fö 5 p.9/12

Intervallskalning, forts. Intervallskalningarna modifieras till: 1. Skifta ut mest signifikant bit ur l (n) och u (n) och skicka den. Skifta in 0il (n) och 1 i u (n). 2. Samma som typ 1. 3. Skifta ut mest signifikant bit ur l (n) och u (n). Skifta in 0 i l (n) och 1 i u (n). Invertera de nya mest signifikanta bitarna i l (n) och u (n).skicka inga bitar, men håll reda på hur många gånger vi gör omskalningar av den här typen. Nästa gång vi gör en omskalning av typen 1, skicka lika många 1:or extra som antalet omskalningar av typ 3. På samma sätt, nästa gång vi gör en omskalning av typ 2 så skickas lika många extra 0:or som antalet omskalningar av typ 3. Källkodning fö 5 p.10/12

Krav på precisionen Vi måste använda en datatyp med minst m + k bitar för att få plats med delresultaten i beräkningarna. Vi ser också att det minsta intervall vi kan ha utan att någon omskalning görs har storleken 2 k 2 +1, vilket till exempel händer när l (n) =2 k 2 1 och u (n) =2 k 1. För att algoritmen ska fungera måste alltså alla intervall i fördelningsfunktionen uppfylla F (i) F (i 1) 2 k m+2 ; i =1,...,L Till exempel så måste m k +2om vi har något intervall av storlek 1. Källkodning fö 5 p.11/12

Avkodning Starta avkodaren i samma tillstånd (dvs l =0och u =2 m 1) som kodaren. Inför t som de m första bitarna i bitströmmen (kodordet). I varje steg räknar vi ut talet (t l +1) 2k 1 u l +1 Jämför detta tal med F för att se vilket intervall detta motsvarar. Detta ger en avkodad symbol. Uppdatera l och u på samma sätt som i kodaren. Vi gör eventuellt ett antal skift (omskalningar). Varje gång vi skiftar l och u ska vi även uppdatera t genom att skifta ut den mest signifikanta biten och skifta in en ny bit från kodströmmen som minst signifikant bit. Repetera tills hela sekvensen är avkodad. Observera att kodaren kan behöva skicka antalet symboler som sidoinformation, så att avkodaren vet när den ska sluta avkoda. Alternativt kan man införa en extra symbol i sitt alfabet, med lägsta möjliga sannolikhet, som används för att markera när sekvensen tar slut. Källkodning fö 5 p.12/12