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

Relevanta dokument
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.

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.

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

FLAC (Free Lossless Audio Coding)

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

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

Kompression av ljud och bild

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

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

Shannon-Fano-Elias-kodning

Adaptiv aritmetisk kodning

TSBK04 Datakompression. Övningsuppgifter

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

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

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

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

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

Föreläsning 7: Bild- och videokodning

Kodning med distorsion

Burrows-Wheelers transform

Föreläsning 1: Bild- och ljudkodning

TSBK35 Kompression av ljud och bild

Övning 6 - Tillämpad datalogi 2012

Föreläsning 7. Felrättande koder

Digital- och datorteknik

Träd och koder. Anders Björner KTH

Digital- och datorteknik

Digital Aritmetik Unsigned Integers Signed Integers"

Analys/syntes-kodning

DIGITAL KOMMUNIKATION

Turingmaskinen - en abstrakt datormodell

Tentamen, Algoritmer och datastrukturer

Datorsystemteknik DVG A03 Föreläsning 3

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

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

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

DIGITALA TAL OCH BOOLESK ALGEBRA

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

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

Lab 3 Kodningsmetoder

Digital elektronik CL0090

Övning 6. Komprimering, kryptering, dokumentering & testning

Teoretisk del. Facit Tentamen TDDC (6)

Lösningsförslag till övningsuppgifter, del V

F2 Datarepresentation talbaser, dataformat och teckenkodning

Giriga algoritmer och dynamisk programmering

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

Dekomposition och dynamisk programmering

Tentamen Bildanalys (TDBC30) 5p

Datorteknik TSIU02 Lab 2 Morsesändare v0.7

RIKSSEMIFINAL 2018 LAGEN

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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.

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

Digital- och datorteknik

Digital- och datorteknik

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

Föreläsning 5: Kardinalitet. Funktioners tillväxt

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013)

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

Tentamen i EDA320 Digitalteknik för D2

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

x 23 + y 160 = 1, 2 23 = ,

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

RIKSSEMIFINAL 2018 DOMARE

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

Föreläsning 9 Innehåll

Informationsteknologi Tom Smedsaas 19 augusti 2016

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

Tommy Färnqvist, IDA, Linköpings universitet

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Mattias Wiggberg Collaboration

i LabVIEW. Några programmeringstekniska grundbegrepp

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

Videosignalen består av en sekvens av bilder, typiskt 24, 25 eller 30 bilder i sekunden.

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

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

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

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

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

Blandade problem från elektro- och datateknik

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

F2 Binära tal EDA070 Datorer och datoranvändning

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Programmering II (ID1019) :00-11:00

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

729G43 Artificiell intelligens / Maskininlärning 2. Marco Kuhlmann

Eulercykel. Kinesiska brevbärarproblemet. Kinesiska brevbärarproblemet: Metod. Kinesiska brevbärarproblemet: Modell. Definition. Definition.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Rekursiva algoritmer sortering sökning mönstermatchning

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Att sända information mellan datorer. Information och binärdata

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Språket Python - Del 1 Grundkurs i programmering med Python

Transkript:

Datakompression fö 4 p1 Skurlängdskodning Ibland har man källor som producerar långa delsekvenser av samma symbol Det kan då vara praktiskt att istället för att beskriva sekvensen som en följd av enstaka symboler, se sekvensen som en följd av skurar En skur är en tupel som talar om dels vilken symbol som skuren består av och dels hur lång skuren är Till exempel så kan man beskriva sekvensen aaaabbbbbbbccbbbbaaaa som (a, 4)(b, 7)(c, 2)(b, 4)(a, 4) Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga Vinsten är att det kan vara enklare att hitta en effektiv kod för det nya alfabetet, samt att man lättare kan utnyttja källans minne

Datakompression fö 4 p2 Faxkodning Faxkodning är ett typiskt exempel på när man använder skurlängdskodning Det finns två digitala faxstandarder: Grupp 3 (T4) och grupp 4 (T6) En faxmaskin läser av en sida en linje i taget (1728 punkter per linje på en A4) Varje punkt är antingen vit eller svart Typiskt får man skurar av vita respektive svarta bildpunkter En linje kan antingen kodas separat eller med hjälp av föregående linje

Datakompression fö 4 p3 Faxkodning, forts När man kodar en linje separat, används skurlängdskodning Eftersom det möjliga antalet skurlängder är så stort skulle det vara opraktiskt att ha en huffmankod över alla skurlängder Istället beskriver man en skurlängd r som r =64 m + t, t=0,,63 och m =1,,27 Man inför även en extra symbol som talar om att linjen är slut (EOL), dvs att resten av linjen har samma färg Den första skuren på en linje antas vara vit Alfabetet med olika m, t och EOL kodas med fixa trädkoder, en vardera för vita respektive svarta skurar Denna typ av kodning kallas MH (modified huffman)

Datakompression fö 4 p4 Faxkodning, forts Två linjer efter varandra är förmodligen ganska lika varandra Detta kan utnyttjas vid kodningen Några definitioner: a 0 a 1 a 2 b 1 b 2 Den sista bildpunkten på en linje som är känd för både sändare och mottagare, dvs aktuell position på linjen När man börjar är det en tänkt vit bildpunkt till vänster om linjens första punkt Första bildpunkt till höger om a 0 med motsatt färg Känd endast av sändaren Första bildpunkt till höger om a 1 med motsatt färg Känd endast av sändaren Första bildpunkt till höger om a 0 på linjen ovanför som har motsatt färg Känd av både sändare och mottagare Första bildpunkt till höger om b 1 som har motsatt färg Känd av både sändare och mottagare

Datakompression fö 4 p5 Faxkodning, forts Vid kodningen får man tre fall 1 Om både b 1 och b 2 ligger mellan a 0 och a 1 så skickas kodordet 0001 Alla bildpunkter fram till punkten under b 2 har samma färg Denna punkt blir vår nya a 0 Nyab 1 och b 2 tas fram 2 a 1 ligger före b 2 och avståndet mellan b 1 och a 1 är högst 3 Avståndet a 1 b 1, { 3, 2, 1, 0, 1, 2, 3} kodas med {0000010, 000010, 010, 1, 011, 000011, 00000011} a 1 blir ny a 0 3 I övriga fall skickas 001 och skurlängderna från a 0 till a 1 och från a 1 till a 2 kodas med den endimensionella koden

Datakompression fö 4 p6 Faxkodning, forts I grupp 3 använder man båda metoderna och kodar med jämna mellanrum en linje rent endimensionellt, för att eventuella överföringsfel ska fortplanta sig till hela bilden Denna kodningsmetod kallas MR (modified READ) I grupp 4 använder man bara den tvådimensionella metoden Detta kallas MMR (modified MR)

Datakompression fö 4 p7 Systematiska koder Vid kodning av vågformsdata, såsom ljud eller bilder, har man ofta fördelningar där alfabetet är heltal A = {0, 1, 2, 3,} (eller A = {, 2, 1, 0, 1, 2,}) och där sannolikheterna avtar monotont med ökande värden I stället för att räkna statistik och konstruera trädkoder kan man då ofta använda systematiska koder, där kodorden enkelt kan fås fram direkt ur symbolerna

Datakompression fö 4 p8 Den unära koden (Umbra-koden) Kodordet för ett heltal n består av n ettor följt av en nolla (OBS inkonsistens i Sayood, s 61) Symbol kodord 0 0 1 10 2 110 3 1110 4 11110 Den unära koden når entropigränsen för den dyadiska fördelningen p(i) =2 (i+1)

Datakompression fö 4 p9 Eliaskoden Tag den binära representationen av talet i, repetera varje bit och invertera den sista biten Symbol binärt kodord 0 0 01 (alt 0) 1 1 10 2 10 1101 3 11 1110 4 100 110001 5 101 110010 6 110 111101 7 111 111110 För att bli optimal måste man låta kodordet för 0 vara 0, annars får man ett outnyttjat kodord (00)

Datakompression fö 4 p10 Eliaskoden, forts Den modifierade eliaskoden uppnår entropigränsen för fördelningen { p(0) = 05 2(1+ log i ) p(i) =2 dvs för en fördelning som avtar ungefär som 1/i 2

Datakompression fö 4 p11 Golombkoder A = {0, 1, 2,} Välj parameter m Representera heltalet n med q = n m och r = n qm Koda q med en unär kod Om m är en jämn tvåpotens, koda r binärt med log m bitar Om m inte är en jämn tvåpotens: 0 r<2 log m m Koda r binärt med log m bitar 2 log m m r m 1 Koda r +2 log m m binärt med log m bitar

Datakompression fö 4 p12 Exempel på golombkoder Symbol m =1 m =2 m =3 m =4 0 0 00 00 000 1 10 01 010 001 2 110 10 0 011 010 3 1110 10 1 10 0 011 4 11110 110 0 10 10 10 00 5 111110 110 1 10 11 10 01 6 1111110 1110 0 110 0 10 10 Golombkoder är optimala för fördelningar av typen p(i) =q i (1 q) ; 0 <q<1 om man väljer m = 1 log q Golombkoder används tex i bildkodningsstandarden JPEG-LS och i videokodningsstandarden H264

Datakompression fö 4 p13 Exp-golombkoder Symbol k =0 k =1 k =2 0 0 00 000 1 10 0 01 001 2 10 1 10 00 010 3 110 00 10 01 011 4 110 01 10 10 10 000 5 110 10 10 11 10 001 6 110 11 110 000 10 010 7 1110 000 110 001 10 011 8 1110 001 110 010 10 100 9 1110 010 110 011 10 101 10 1110 011 110 100 10 110 Exp-golombkoder används bla i H264

Datakompression fö 4 p14 Tunstallkoder En tunstallkod är en kod där alla kodorden har ett fixt antal bitar, men där antalet källsymboler som kodas med varje kodord är variabelt Bestäm kodordslängden n (maximalt 2 n kodord) Elementen i kodboken är strängar av symboler ur alfabetet Börja med en kodbok som består av de L symbolerna i alfabetet I varje steg, tag bort det mest sannolika elementet i kodboken och ersätt det med de L strängar som fås då man konkatenerar elementet med var och en av de L symbolerna Beräkna sannolikheter för de nya elementen

Datakompression fö 4 p15 Tunstallkodning, forts Vid varje steg utökar vi kodboken med L 1 element, så vi kan göra detta k ggr där k är det största heltal sådant att L + k(l 1) 2 n Ge varje element i kodboken ett kodord med n bitar Elementen i kodboken är löv i ett L-närt träd, så vi kan beräkna medeldjupet d (symboler/kodord) i detta träd Eftersom varje kodord har n bitar blir datatakten R R = n d [bitar/symbol] Tunstallkoder är oftast något sämre än huffmankoder De funkar bra när alfabetet är litet, men är väldigt opraktiska när man har ett stort alfabet

Datakompression fö 4 p16 Testbild Goldhill 512 512 bildpunkter, 8 bitar/bildpunkt

Datakompression fö 4 p17 Enkel huffmankodning Histogram för Goldhill: 3000 2500 2000 1500 1000 500 0 0 50 100 150 200 250 Huffmankodning ger en medeldatatakt på 750 bitar/bildpunkt Längsta kodord 16 bitar, kortaste kodord 7 bitar Vi har inte utnyttjat något av det beroende som finns mellan bildpunkter

Datakompression fö 4 p18 Huffmankodning av skillnader Istället för att koda bildpunkterna direkt, kodar vi skillnaden i pixelvärde mellan en bildpunkt och den ovanför Minsta skillnaden är -112, största skillnaden 185 Histogram för skillnader: 18000 16000 14000 12000 10000 8000 6000 4000 2000 0 150 100 50 0 50 100 150 200 Huffmankodning av skillnaderna ger en medeldatatakt på 534 bitar/bildpunkt Längsta kodord 18 bitar, kortaste kodord 4 bitar

Datakompression fö 4 p19 Golombkodning I Vi måste först modifiera värdena så att vi bara har icke-negativa värden, vilket vi tex kan göra med avbildningen F (x) = { 2x ; x 0 2x 1 ; x<0 dvs de negativa talen avbildas på udda positiva tal och de positiva talen avbildas på jämna positiva tal F 1 (x) = { x 2 ; x jämn x+1 2 ; x udda

Datakompression fö 4 p20 Golombkodning I, forts Histogram för modifierade skillnader 18000 16000 14000 12000 10000 8000 6000 4000 2000 0 50 0 50 100 150 200 250 300 350 400 Den bästa golombkoden är den med parameter m =10, vilken ger en medeldatatakt på 538 bitar/bildpunkt

Datakompression fö 4 p21 Golombkodning II Alternativt kan vi koda absolutvärdet av skillnaderna med en golombkod och skicka en extra teckenbit för varje nollskilt värde Histogram för absolutvärdet av skillnaderna 35 x 104 3 25 2 15 1 05 0 50 0 50 100 150 200 Den bästa golombkoden är den med parameter m =5, vilken ger en medeldatatakt på 542 bitar/bildpunkt

Datakompression fö 4 p22 Lossless JPEG JPEG är normalt en bildkodningsmetod som ger distorsion, men det finns även distorsionsfri mod i standarden Bildpunkterna kodas radvis uppifrån och ner Bildpunkten I ij på position (i, j) predikteras från närliggande bildpunkter Det finns 7 val av prediktor: 1 Î ij = I i 1,j 2 Îij = I i,j 1 3 Îij = I i 1,j 1 4 Îij = I i,j 1 + I i 1,j I i 1,j 1 5 Î ij = I i,j 1 + (I i 1,j I i 1,j 1 )/2 6 Î ij = I i 1,j + (I i,j 1 I i 1,j 1 )/2 7 Îij = (I i,j 1 + I i 1,j )/2

Datakompression fö 4 p23 Lossless JPEG, forts Skillnaden d ij = I ij Î ij kodas antingen med en adaptiv aritmetisk kodare, eller med en huffmankod Huffmankodning sker inte direkt på skillnadsvärdena Istället bildar man k ij = log( d ij +1) Man beräknar statistik och bygger ett huffmanträd för signalen k ij Kodordet för en skillnad d ij består av huffmankodordet för k ij plus k ij stycken extra bitar för att exakt specificera d ij k ij d ij extra bitar 0 0 1 1, 1 0, 1 2 3, 2, 2, 3 00, 01, 10, 11 3 7,, 4, 4,,7 000,,011, 100,,111

Datakompression fö 4 p24 Lossless JPEG, forts Kodning av Goldhill med lossless JPEG: Prediktor 1 539 bitar/bildpunkt Prediktor 2 542 bitar/bildpunkt Prediktor 3 580 bitar/bildpunkt Prediktor 4 527 bitar/bildpunkt Prediktor 5 516 bitar/bildpunkt Prediktor 6 515 bitar/bildpunkt Prediktor 7 513 bitar/bildpunkt För olika bilder kommer olika prediktorer vara bäst Standarden stöder även att man kodar olika delar i bilden med olika prediktorer

Datakompression fö 4 p25 JPEG-LS Standard för att koda bilder distorsionsfritt och nästan distorsionsfritt (near lossless) Nästan distorsionsfritt innebär att man tillåter att bildpunktsvärdena i den avkodade bilden avviker lite från originalbilden Bildpunkterna kodas radvis uppifrån och ner När bildpunkten (i, j) ska kodas tittar man först på de omgivande bildpunkterna i position (i, j 1), (i 1,j 1), (i 1,j) och (i 1,j+1) Man bildar en kontext genom att först beräkna gradienterna D 1 = I i 1,j+1 I i 1,j D 2 = I i 1,j I i 1,j 1 D 3 = I i 1,j 1 I i,j 1

Datakompression fö 4 p26 JPEG-LS, forts Gradienterna D k kvantiseras sen till tre heltal Q k så att 4 Q k 4 Kvantiseringsgränserna kan väljas av användaren Varje Q k kan ta 9 olika värden, vilket innebär att vi har 729 möjliga kombinationer Kombinationer med inverterade tecken räknas som samma kontekt vilket alltså slutligen ger oss 365 olika kontexter Prediktionen av I ij görs enligt: Om I i 1,j 1 max(i i,j 1,I i 1,j ) Î ij =max(i i,j 1,I i 1,j ) Om I i 1,j 1 min(i i,j 1,I i 1,j ) Îij =min(i i,j 1,I i 1,j ) Annars: Îij = I i,j 1 + I i 1,j I i 1,j 1 För varje kontext q håller vi reda på om vår prediktion har ett systematiskt fel, om så är fallet justeras prediktionen lite i rätt riktning

Datakompression fö 4 p27 JPEG-LS, forts Skillnaden mellan det riktiga pixelvärdet och det predikterade värdet d ij = I ij Î ij kodas med en golombkod med parameter m =2 k q För varje kontext q håller man reda på vilken golombkod som är optimal, och k q justeras hela tiden adaptivt under kodningsprocessen Kodaren detekterar även om det uppträder långa skurar med samma värde i rad, i sådana fall går den över till att koda skurlängder istället Kodar vi Goldhill med JPEG-LS får vi en medeldatatakt på 471 bitar/bildpunkt