Burrows-Wheelers transform

Relevanta dokument
Adaptiv aritmetisk kodning

FLAC (Free Lossless Audio Coding)

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

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. Ö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.

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

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

Shannon-Fano-Elias-kodning

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

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

Övning 6 - Tillämpad datalogi 2012

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

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

TSBK04 Datakompression Övningsuppgifter

Tentamen i Digitalteknik, EIT020

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

LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I

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

Uppgift 1 (grundläggande konstruktioner)

Kodning av ansiktstextur med oberoende komponenter

Föreläsning 7. Felrättande koder

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

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Textsträngar från/till skärm eller fil

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

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

Magnus Nielsen, IDA, Linköpings universitet

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

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

Tentamen, Algoritmer och datastrukturer

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 14 augusti, 2002

Övning 6. Komprimering, kryptering, dokumentering & testning

Digital Display VDS / Bus2

kl Tentaupplägg

Förlustfri datakompression

Diskreta Linjära System och Skiftregister

November 6, { b1 = k a

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

Övning 7 - Tillämpad datalogi DD1320, TENTAMEN I TILLÄMPAD DATALOGI Tisdagen den 12 januari 2010 kl 14 18

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Kompression av ljud och bild

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.

TDP Regler

ENKEL Programmering 3

Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Fredag 10 juni 2016 kl 8 12

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Grunderna i stegkodsprogrammering

Lektionsanteckningar 2: Matematikrepetition, tabeller och diagram

Data och Information. Dr. Johan Hagelbäck.

Föreläsning 7: Bild- och videokodning

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

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering.

REPETITION. [F ] = a. a m1... a mn Sådan att [F (v)] = [F ][v].

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Objektorienterad programmering D2

kl Tentaupplägg

Nonogram

ALEPH ver. 16 Sökning

Uppgift 1 (vadå sortering?)

Repetition TSIU05 Digitalteknik Di/EL. Michael Josefsson

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Programmeringsolympiaden 2014

Instruktion för laboration 1

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?

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

4 Sammansatta datatyper

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

Introduktion till MATLAB

Kombinatorik. Kapitel 2. Allmänt kan sägas att inom kombinatoriken sysslar man huvudsakligen med beräkningar av

Uppgift 1 ( Betyg 3 uppgift )

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

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Spektrala transformer Laboration: JPEG-kodning

Instruktion för laboration 1

Datorteknik TSIU02 Lab 2 Morsesändare v0.7

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Datastrukturer och Algoritmer D0041D

FormatE. Om format för arkivbeständiga elektroniska handlingar

TAIU07 Matematiska beräkningar med Matlab

ALLMÄNT 2. Introduktion 2. Åtgärder vid driftsättning 2. Förklaring av termer och begrepp 3. Kommandosyntax 3 HANDHAVANDE 4. Kommandon 4.

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.

Spektrala transformer Laboration: JPEG-kodning

Migrera till Word 2010

Databaser - Design och programmering. Minnesteknik. Minnesteknik, forts. Hårddisk. Primärminne (kretsteknik) Fysisk design av databasen

Föreläsning 3.1: Datastrukturer, en översikt

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

2-1: Taltyper och tallinjen Namn:.

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Användarhandledning Analys & sök Version: 1.2

Transkript:

Datakompression fö 7 p.1 Burrows-Wheelers transform Transformen själv ger ingen kompression, men gör det lättare att koda signalen med en enkel kodare. Antag att vi vill koda en sekvens av längd n. Skapa alla cykliska skift av denna sekvens och sortera dem lexikografiskt. Skicka den sista symbolen i varje rad som en sekvens L och positionen för originalsekvensen i den sorterade listan.

Datakompression fö 7 p.2 Exempel Antag att vi vill koda sekvensen abacabb. Vi bildar all cykliska skift och sorterar dem: Cykliska skift Sorterade cykliska skift abacabb babacab bbabaca abbabac cabbaba acabbab bacabba abacabb abbabac acabbab babacab bacabba bbabaca cabbaba Originalsekvensen återfinns på rad 1. Den information som skickas är alltså positionen 1 och sekvensen bcbbaaa.

Datakompression fö 7 p.3 Egenskaper Betrakta matrisen med sorterade sekvenser, A, och den matris, A s man får om man skiftar alla sekvenser cykliskt ett steg åt höger, så att den sista symbolen hamnar först A abacabb abbabac acabbab babacab bacabba bbabaca cabbaba A s babacab cabbaba bacabba bbabaca abacabb abbabac acabbab Alla sekvenser i A som börjar med en viss bokstav står i samma inbördes ordning som de gör i A s. Ekvivalent, om man betraktar alla sekvenser i A som börjar med samma bokstav, så står suffixen i samma inbördes ordning som prefixen i de sekvenser som slutar med denna bokstav.

Datakompression fö 7 p.4 Avkodning BWT Dessa egenskaper, som kommer av att de är cykliska skift vi sorterat, gör att vi kan avkoda transformen, trots att vi inte har tillgång till hela A. Den sekvens vi mottagit, L, är den sista kolumnen i A. Genom att sortera L får vi den första kolumnen, F,iA. Bokstaven på position k i F är den som kommer efter (cirkulärt) bokstaven på position k i L.

Datakompression fö 7 p.5 Avkodning BWT, forts. Om vi för vårt exempel skriver L och F bredvid varandra får vi L b c b b a a a F a a a b b b c Efter b nummer 1 kommer a nummer 1, efter c kommer a nummer 2, efter b nummer 2 kommer a nummer 3, efter b nummer 3 kommer b nummer 1, efter a nummer 1 kommer b nummer 2, efter a nummer 2 kommer b nummer 3 och efter a nummer 3 kommer c.

Datakompression fö 7 p.6 Avkodning BWT, forts. Givet den mottagna sekvensen L och den sorterade första kolumnen F kan vi alltså skapa en vektor T som hjälper oss ordna symbolerna i L irätt ordning. T [i] pekar ut det index i L där symbolen som kommer efter L[i] ligger. Det vill säga, i den avkodade sekvensen följs L[i] av L[T [i]] som i sin tur följs av L[T [T [i]]], o.s.v. Det kodade indexet I bestämmer var sekvensen börjar. I vårt exempel får vi alltså T = [5 6 7 1 3 4 2]. På position 1 i L står b nummer 1 som följs av a nummer 1 som återfinns på position 5 i L. På position 2 i L står c som följs av a nummer 2 som återfinns på position 6 i L, o.s.v.

Datakompression fö 7 p.7 Avkodning BWT, forts. En algoritm för avkodning kan alltså beskrivas med pseudokod enligt följande, där vi skapat vektorn T från L och F : k = T [I] D[1] = L[k] for j =2to n { k = T [k] D[j] =L[k] } Den avkodade sekvensen ligger nu i D.

Datakompression fö 7 p.8 Alternativ avkodning BWT Man kan även göra avkodningen baklänges, om man låter T [i] peka ut positionen i L för den symbol som kommer före L[i]. Det är ekvivalent med att säga att T [i] är den position i F där L[i] ligger. I vårt exempel blir T = [4 7 5 6 1 2 3]. Avkodningsalgoritmen blir: k = I D[n] =L[k] for j = n 1 downto 1 { k = T [k] D[j] =L[k] }

Datakompression fö 7 p.9 Komprimering Vi har fortfarande inte gjort någon komprimering, snarare tvärtom, eftersom vi förutom sekvensen även måste skicka en position. L kommer att vara partiellt sorterad, vilket kan utnyttjas vid komprimering. Ett sätt är att använda move-to-front coding (mtf). Börja med att lista symbolerna i någon ordning. För varje symbol som ska kodas skickar vi index till den symbolen, sedan lägger vi den symbolen först i listan. Detta kommer (under förutsättning att vi indexerar listan från 0) att ge oss långa skurar med nollor, och små värden kommer att bli väldigt vanliga. Vi har fortfarande inte gjort någon komprimering, men den nya sekvensen av index kommer att ha en väldigt skev fördelning mot låga värden, vilket kan utnyttjas enkelt av t.ex. en huffmankodare. Det är även ganska vanligt att man skurlängdskodar nollorna.

Datakompression fö 7 p.10 Exempel Originaltext (mellanslag och radbrytning utbytt mot _): Vi_CARL,_med_Guds_nåde,_Sveriges,_Götes_och_Vendes_Konung _&c._&c._&c.,_arvinge_till_norge,_hertig_till_schleswig_holstein, _Stormarn_och_Ditmarsen,_greve_till_Oldenburg_och_Delmenhorst_&c._ &c.,_göre_veterligt:_att,_sedan_riksens_ständer_enhälligt_antagit_och_ fastställt_den_successionsordning,_varefter_den_högborne_furstes,_ Svea_rikes_utkorade_kronprins,_hans_kungl._höghet_prins_JOHAN_ BAPTIST_JULII_manliga_bröstarvingar_skola_äga_rätt_till_den_ svenska_tronen,_samt_sveriges_rikes_styrelse_tillträda,_och_denna_ grundlag_till_vårt_nådiga_gillande_blivit_överlämnad,_have_vi,_i_ kraft_av_den_enligt_85_ _i_regeringsformen_oss_tillkommande_ rättighet,_velat_denna_av_riksens_ständer_samtyckta_ successionsordning_härmed_antaga,_gilla_och_bekräfta,_alldeles_ såsom_den_ord_för_ord_härefter_följer:

Datakompression fö 7 p.11 Exempel L (sista bokstaven i de sorterade cykliska skiften): snsea.an.sdeilantgtcccccl8_rthbc O_LTI RUA_ J AA I PSJ :_...tgtnihhd,gstsllnnvl,ss thel,dt,: atheavrmtlthrnherd,a,a dgn., iesi,stgnsa,tnrtisaae,r,rsnanseeggtseas e5attgdnggnlegtklnrrltt_ssdlmmh gvmmt_fl h g_n&&&&&uucc oooooosyaeerräeånanl l nnnånrrudgvdnddgvsrvmmsrrrtbvd DrsnmddddddVm ddssvjtdtdvvgtvhgtdtgklkcclhhvr_saäee nninriaaiiänörneiiiö an niii_cccccc ggcnn VV wtldrrtlllrrrrtttttggttennvvrrrssgvdllsiislt eiic_gllllllodlel Oehnrnlböliiiiiiiaäiäieeollrom_rt_rrloäaaieeeaeereeennmeaa ääeuroiuiiiuieeddaeeeoiieeaeooaao khskrriikk ss Ntfbhn_eeeeöeaokooooöaä_yguoee eppeeoäoaotkaouåegaatk beennennndeeeese l_rkkgssn_ånnoeerölra_t e_tegsgmg flarietifknnssffesört uis_lsaäämssssssgrnkbf_aa_aes_ sssö_rristt_rr_htltthhrrnnvshhffgrg_

Datakompression fö 7 p.12 Exempel Betrakta till exempel (början av) sekvenserna som slutar på c:.,_arvinge_till_norg.,_göre_veterligt:_a._&c.,_arvinge_till_._&c.,_göre_veterlig._&c._&c.,_arvinge_t cessionsordning,_var cessionsordning_härm essionsordning,_vare essionsordning_härme h_delmenhorst_&c._&c h_ditmarsen,_greve_t h_vendes_konung_&c._ h_bekräfta,_alldeles h_denna_grundlag_til h_fastställt_den_suc hleswig_holstein,_st kta_successionsordni

Datakompression fö 7 p.13 Exempel Sekvens efter mtf-kodning: 95 0 0 0 0 115 111 1 103 100 51 1 4 2 4 103 5 107 83 7 7 116 107 1 106 000011168131165858081500000911139688300959786 3911020105100000095975308312700162119625110 02874630181260280118264010119315410521531377 3929114610174122831111101110002147174167179 16235213993115541229660976114751250808335 270385450613820115735115451102402212094180 1850101940841147200710711175000011903801170 00002912220200190228222911511513000011020041 7 0 12 20 15 20 2 5 1 0 3 3 21 6 2 21 0 3 3 0 0 21 119 5 7 103 5 6 9 8 5 0 000011021303050812011411301232243341226171 2402607141111192121040017029172601064246527 5004707520140021200000100140240300019010 124 17 16 18 13 0 3 3 0 0 2 0 42 0 3 0 0 0 0 10 0 1 0 14 10 0 17 0 6 0 0 1706322904150129130105015396000002814271442 21 15 15 1 5...

Datakompression fö 7 p.14 Exempel 120 250 100 200 80 150 60 100 40 20 50 0 0 50 100 150 200 250 Histogram före mtf 0 50 0 50 100 150 200 250 Histogram efter mtf I exemplet har vi bara en sekvens av längd av 790. Ju längre sekvenser man kodar, desto bättre kompression kan man få.

Datakompression fö 7 p.15 Komprimering av bibeln.txt pack 4.51 bitar/symbol. compress -b 9 5.56 compress -b 12 3.65 compress -b 16 2.96 gzip -1 3.13 gzip -5 2.63 gzip -9 2.55 bzip2-1 2.14 bzip2-5 1.90 bzip2-9 1.84 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.