Kompression av ljud och bild

Storlek: px
Starta visningen från sidan:

Download "Kompression av ljud och bild"

Transkript

1 Kompression av ljud och bild Harald Nautsch ISY Informationskodning, Linköpings universitet

2 Kurslitteratur Rekommenderad bok: Khalid Sayood, Introduction to Data Compression. Finns tillgänglig i elektronisk form. Övningshäfte och formelsamling. Finns på hemsidan. Elektroniska böcker, se kurssidorna. Labkompendium, föreläsningsslides, lösningsförslag till Sayood, gamla tentor, et c. finns på kurssidorna.

3 Föreläsningar, preliminärt program 1. Inledning. Källmodeller, källkodning, huffmankodning. 2. Entropi, golombkoder, skurlängdskodning. 3. Aritmetisk kodning 4. Lempel-Ziv-kodning, distorsionsfri ljud- och bildkodning. GIF, PNG, lossless JPEG, JPEG-LS 5. Amplitudkontinuerliga stokastiska processer. Kvantisering 6. Vektorkvantisering 7. Linjär prediktiv kodning 8. Transformkodning. JPEG 9. Delbandskodning. JPEG Ljudkodning. Psykoakustik. mp3, AAC, Dolby Digital, Ogg Vorbis 11. Videokodning. H.26x, MPEG 12. Videokodning forts. Talkodning. CELP, GSM

4 Laborationer 1. Distorsionsfri komprimering av stillbilder och musik. Görs i grupper om 1-2 personer. Redovisas med en liten rapport. 2. Kodning av musik. Görs i grupper om 1-2 personer. Redovisas med en liten rapport. 3. Transformkodning av stillbilder (4h) Görs på schemalagd tid i grupper om 1-2. Det finns schemalagda jourlabtider även för de två första laborationerna, då assistent kommer att vara närvarande.

5 Lämpliga förkunskaper Sannolikhetslära Linjär algebra (matriser, vektorer) Analys Grundläggande transformteori Signalbehandling (linjära system) Matlab

6 Vad är datakompression? X Y X komprimering rekonstr. Y tar mindre plats att lagra än X. Distorsionsfri komprimering (lossless): X = X Komprimering med distorsion (lossy): X X

7 Exempel: JPEG-kodning Förenklat blockschema över en JPEG-kodare: Bild Blockbaserad transform Storlek, färgrymd, metadata, etc Kvantisering Källkodning Parametrar MUX JPG-fil Avkodaren gör förstås allt i omvänd ordning.

8 Förekommande metoder Exempel på distorsionsfri komprimering: Textkomprimering: zip, gzip, bzip, compress Stillbilder: GIF, PNG, lossless JPEG, JPEG-LS, faxkodning Musik: FLAC Exempel på komprimering med distorsion: Stillbilder: JPEG, JPEG 2000 Video: H.261, H.263, H.264, H.265, MPEG-1 (VideoCD), MPEG-2 (DVD, DVB), MPEG-4 (DivX, XviD), DV Ljud: MPEG-1 layer 3 (mp3), AC-3 (Dolby Digital), ATRAC (MiniDisc), Ogg Vorbis, AAC Tal: CELP, GSM

9 Godhetsmått Hur stor kompression ger vår metod? Kompressionsgrad (compression ratio) Ex. Signal att komprimera gråskalebild bildpunkter, 1 byte (8 bitar) per bildpunkt. Antag att den komprimerade signalen tar bytes att lagra. Kompressionsgraden är då = 4 ggr. Vanligt att mäta medeldatatakten (rate) i bitar/sampel (bitar/bildpunkt, bitar/tecken) Ex. Vår bild ovan: = 2 bitar/bildpunkt För video- och ljudsignaler anger man ofta medeldatatakten i bitar/s.

10 Godhetsmått, forts Hur stor distorsion ger vår metod? Mänsklig bedömning Matematiska mått Kvadratiskt medelfel (mean square error) SNR SNR viktat för att ta hänsyn till människans syn eller hörsel.

11 Vad är originalet? För ljud och bilder är originalsignalerna samplade och fint kvantiserade amplitudsignaler. Signalen kan vara skalär (monoljud, gråskalebilder) eller vektorvärd (exempelvis RGB, CMYK, multispektrala bilder, stereoljud, surroundljud). Trots att originalsignalen i princip alltid är kvantiserad kan man ändå ofta använda amplitudkontinuerliga modeller för den (föreläsning 5 och senare.)

12 Egenskaper att utnyttja Vad är det för egenskaper hos signalen som gör att vi (oftast) kan komprimera den? Alla symboler är inte lika vanliga. T.ex. i en musiksignal är det vanligare med små amplitudvärden än med stora. Beroende mellan närliggande symboler. T.ex. i en bild så har bildpunkter bredvid varandra oftast ungefär samma värde. Egenskaper hos människans syn- eller hörselsinne. Man kan ta bort information som ändå inte kommer synas eller höras.

13 Diskreta källor 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 N } av storlek N. 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.

14 Stokastiska källmodeller 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. Den enklaste stokastiska modellen för en källa är en diskret stokastisk variabel X. Fördelning Pr(X = a i ) = P X (a i ) = P(a i ) = p i P(a i ) 0, a i N P(a i ) = 1 i=1

15 Stokastiska källmodeller, forts. En bättre källmodell är diskreta stationära stokastiska processer. En stokastisk process X t kan ses som en följd av stokastiska variabler, där man får ett utfall i varje tidpunkt t. Betingade sannolikheter: Källans utsignal i två tidpunkter t och s P(x t, x s ) = Pr(X t = x t, X s = x s ) P(x s x t ) = P(x t, x s ) P(x t ) P(x t, x s ) = P(x t ) P(x s x t )

16 Minneskällor Beroende mellan utsignalens värde i olika tidpunkter brukar kallas för minne. Om X t och X t+k är oberoende för alla k 0 så kallas källan minnesfri. För en minnesfri källa gäller: P(x t, x t+k ) = P(x t ) P(x t+k ) P(x t+k x t ) = P(x t+k )

17 Markovkällor Markovkälla av ordning k P(x t x t 1 x t 2...) = P(x t x t 1... x t k ) En markovkälla är en minneskälla med begränsat minne k steg tillbaka i sekvensen En markovkälla kan beskrivas med en tillståndsgraf med M = N k tillstånd s i. Se extramaterial om markovkällor.

18 Verklig källa som stokastisk process. Exempel: Alfabet {a, b}. Givna data: bbbbaabbbaaaaabbbbbabaaabbbb. För att skatta symbolsannolikheter räknar vi hur ofta varje symbol uppträder: a finns 11 gånger, b 17 gånger. De skattade sannolikheterna P(x t ) blir då: P(a) = 11 17, P(b) = För parsannolikheter och betingade sannolikheter får vi istället räkna hur ofta de olika symbolparen uppträder. aa finns 7 gånger, ab 4 gånger, ba 4 gånger och bb 12 gånger. De skattade sannolikheterna P(x t, x t+1 ) och P(x t+1 x t ) blir då: P(aa) = 7 27, P(ab) = 4 27, P(ba) = 4 12, P(bb) = P(a a) = 7 11, P(b a) = 4 11, P(a b) = 4 12, P(b b) = 16 16

19 1917 års bibel som markovkälla 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,

20 Källkodning Källkodning innebär att vi tilldelar binära sekvenser (kallade kodord) till symboler i ett alfabet. Mängden av alla kodord kalls för kod. En kod där antalet bitar i varje kodord är fixt kallas för en fixlängdskod. En kod där kodorden har olika antal bitar kallas för en variabellängdskod. Exempel: A = {a, b, c, d} Symbol Kod 1 Kod 2 Kod 3 Kod 4 Kod 5 a b c d

21 Källkodning Koda sekvensen abbacddcd med våra koder Symbol Kod 1 Kod 2 Kod 3 Kod 4 Kod 5 a b c d Kod 1: Kod 2: Kod 3: Kod 4: Kod 5:

22 Egenskaper hos koder 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. Dessa koder är trädkoder, dvs kodorden är löv i ett binärt träd. Alla prefixkoder är momentant avkodbara.

23 Exempel på koder Symbol Kod 1 Kod 2 Kod 3 Kod 4 Kod 5 a b c d Kod 1: Unikt avkodbar, momentant avkodbar Kod 2: Ej unikt avkodbar Kod 3: Ej unikt avkodbar Kod 4: Unikt avkodbar, momentant avkodbar Kod 5: Unikt avkodbar, ej momentant avkodbar

24 Är en given kod unikt avkodbar eller ej? 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.

25 Prestanda för koder Hur bra en kod är ges av dess (medel)datatakt R (eng. rate) och anges i bitar/symbol. R = antal bitar per kodord i medel antal symboler per kodord i medel Eftersom det är komprimering vi sysslar med vill vi förstås att R ska vara så liten som möjligt. Det existerar en teoretisk lägre gräns för hur mycket vi kan komprimera signalen. Observera att R är ett mått på hur bra koden är i medel över alla möjliga sekvenser från källan. Den säger ingenting om hur bra koden är för en enskild källsekvens.

26 Krafts olikhet, kodordsmedellängd Krafts olikhet: En momentant avkodbar kod (trädkod) med kodordslängderna l 1,..., l N existerar omm N 2 l i 1 i=1 Olikheten gäller även för alla unikt avkodbara koder. Den brukar då kallas Kraft-McMillans olikhet. Kodordsmedellängd: N l = p i l i i=1 [bitar/kodord] Om vi kodar en symbol per kodord så har vi att R = l

27 Entropin som nedre gräns Det finns en lägre gräns för hur bra en unikt avkodbar kod kan bli: N l p i log 2 p i = H(X t ) i=1 H(X t ) kallas för källans entropi (mer om det på följande föreläsningar).

28 Entropin som nedre gräns, forts. Bevis för l H(X t ) H(X t ) l = = N i=1 N p i log 2 p i i=1 1 ln 2 N p i l i = i=1 p i (log 2 1 p i log 2 2 l i ) = i=1 N i=1 p i (log 2 1 p i l i ) N 2 l i p i log 2 i=1 N p i ( 2 l i 1) = 1 N p i ln 2 ( 2 l i 1 (1 1) = 0 ln 2 där vi utnyttjat ln x x 1 samt Kraft-McMillans olikhet i=1 p i N p i ) i=1

29 Optimala koder En optimal kod för en källa är en kod sådan att det inte existerar andra koder med lägre l. En optimal kod är oftast inte unik, d.v.s. det existerar flera olika koder med samma prestanda. Det enklaste exemplet på detta är att bara byta nollor mot ettor och ettor mot nollor i kodorden. Ofta kan man även konstruera koder där uppsättningen av kodordslängder skiljer sig åt, men som har samma medelkodordslängd.

30 Övre gräns för optimala koder Det existerar en unikt avkodbar kod med l < H(X t ) + 1 Bevis: Låt l i = log 2 p i = log 2 p i + s i där 0 s i < 1 N 2 l i = i=1 = N i=1 2 log 2 p i s i N p i 2 s i i=1 N p i = 1 i=1 Kraft-McMillans olikhet är uppfylld, alltså existerar en unikt avkodbar kod med de givna kodordslängderna

31 Övre gräns, forts. Vad är kodordsmedellängden? N l = p i l i = i=1 = < N p i ( log 2 p i + s i ) i=1 N p i log 2 p i + i=1 N p i log 2 p i + i=1 N p i s i i=1 N p i = H(X t ) + 1 Den optimala koden kan ju inte vara sämre än denna kod, då vore det ingen optimal kod. Alltså gäller även för en optimal kod att l < H(X t ) + 1. OBS: Om p i = 2 k i, i för heltal k i, så kan vi konstruera en kod med l = H(X t ). i=1

32 Huffmankodning Enkel metod för att konstruera optimala koder. Börja med enskilda symboler som löv. Slå i varje steg ihop de två minst sannolika noderna till en inre nod. Sannolikheten för den nya noden är summan av de två ursprungliga noderna. Om det finns fler noder med samma sannolikhet att välja mellan spelar det ingen roll vilken vi väljer. När vi konstruerat hela kodträdet, skapar vi kodorden genom att sätta 0 resp. 1 på de utgående grenarna i varje nod. Vilken gren som sätts till 0 resp. 1 spelar ingen roll.

33 Utvidgning För små alfabet med skeva fördelningar, eller för källor med minne, kan en huffmankod vara ganska långt från optimal. Detta kan ofta förbättras om man utvidgar källan, dvs man kodar fler symboler i taget med varje kodord. Om man kodar n symboler med varje kodord, och koden har kodordsmedellängden l så blir datatakten R = l n Den maximala redundansen (skillnanden mellan datatakten och entropin) minskar som 1 n när vi kodar n symboler i taget.

34 Sidoinformation Hittills har vi bara tittat på kodens datatakt R för att bedöma hur bra eller dålig den är. I en praktisk tillämpning måste man även tänka på att man kan behöva överföra sidoinformation för att mottagaren ska kunna avkoda signalen. Till exempel kan man behöva tala om för mottagaren vilket alfabet som används och hur kodträdet ser ut. I de flesta fall känner dock mottagaren till alfabetet. Ett rättframt sätt att beskriva ett kodträd är att för varje symbol först tala om hur långt dess kodord är och sen skicka kodordet. Om alfabetsstorleken är N så kan kodorden maximalt vara N 1 bitar långa, under förutsättningen att koden är optimal. Om kodordslängderna är l 1,..., l N så går det alltså åt N log(n 1) + bitar för att beskriva trädet på detta sätt. N i=1 l i

35 Sidoinformation, forts. Givet kodordslängderna spelar det i de flesta fall ingen roll exakt hur kodorden ser ut. Om både kodaren och avkodaren använder samma algoritm för att konstruera en kod utgående från kodordslängder, så räcker det med att skicka dessa längder som sidoinformation. I praktiken kan det gå till så att kodaren använder huffmanalgoritmen för att konstruera en kod, noterar kodordslängderna och sen slängder bort koden. Kodordslängderna används för att konstruera en ny kod, som har samma datatakt som den ursprungliga. Avkodaren kan konstruera samma kod givet längderna. I detta fall räcker det alltså att skicka N log(n 1) bitar som sidoinformation. Om mängden data som ska skickas är stor så inverkar inte sidoinformationen särskilt mycket på den totala datatakten, men om datamängden är liten eller om man har stora och/eller många koder kan det vara en signifikant andel.

36 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 som aaaabbbbbbbccbbbbaaaa (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.

37 Faxkodning Faxkodning är ett typiskt exempel på när man använder skurlängdskodning. Det finns två digitala faxstandarder: Grupp 3 (T.4) och grupp 4 (T.6). En faxmaskin läser av en sida en rad 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 rad kan antingen kodas separat eller med hjälp av föregående rad.

38 Faxkodning, forts. När man kodar en rad 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 raden är slut (EOL), dvs att resten av raden har samma färg. Den första skuren på en rad 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).

39 Faxkodning, forts. Två rader 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 rad som är känd för både sändare och mottagare, dvs aktuell position på raden. När man börjar är det en tänkt vit bildpunkt till vänster om radens 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å raden 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.

40 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 Alla bildpunkter fram till punkten under b 2 har samma färg. Denna punkt blir vår nya a 0. Nya b 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 { 3, 2, 1, 0, 1, 2, 3} kodas med { , , 011, 1, 010, , }. a 1 blir ny a 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.

41 Faxkodning, forts. I grupp 3 använder man båda metoderna och kodar med jämna mellanrum en rad rent endimensionellt, för att eventuella överföringsfel inte 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).

42 Golombkoder Koder för att koda heltal med monotont avtagande sannolikheter. A = {0, 1, 2,...} Välj parameter m Representera heltalet n med q = n m och r = n qm. Koda q som q stycken 1:or följt av en 0:a. 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 med log m bitar 2 log m m r m 1 Koda r + 2 log m m med log m bitar

43 Golombkoder, forts. Golombkoder är optimala för fördelningar av typen om man väljer m = 1 log p P(n) = p n (1 p) ; n = 0, 1, 2,... I praktiken begränsar man sig ofta till jämna tvåpotenser: m = 2 k Fördelen med golombkoder, jämfört med huffmankoder, är att sidoinformationen är mycket mindre. För en huffmankod måste man skicka hela kodträdet, men för en golombkod räcker det med att skicka parametern m. Man behöver inte heller hålla hela kodträdet i minnet, varken på kodar- eller avkodarsidan. Golombkoder används bl.a. i bildkodningsstandarden JPEG-LS.

44 Exempel, bildkodning Originalbild, bildpunkter, 8 bitar per bildpunkt

45 Huffmankodning Vi använder histogrammet som skattning av fördelningen av pixelvärden En huffmankod som optimeras till denna fördelning kodar bilden med bitar, plus 1280 bitar sidoinformation. Detta ger oss en datatakt på ungefär 7.51 bitar/bildpunkt.

46 Huffmankodning av skillnader För att utnyttja minnet tar vi skillnaden mellan en pixel och pixeln ovanför. 8 x En huffmankod som optimeras till denna fördelning kodar bilden med bitar, plus 2075 bitar sidoinformation. Detta ger oss en datatakt på ungefär 4.13 bitar/bildpunkt.

47 Golombkodning av skillnader I För att kunna göra golombkodning av skillnadsvärdena måste vi ha ett alfabet med ickenegativa värden. Till exempel kan man koda absolutvärdet med en golombkod och sen skicka en teckenbit för varje nollskilt värde. 10 x Den bästa golombkoden för denna fördelning är m = 3. Detta ger oss bitar, teckenbitar och 8 bitar sidoinformation. Datatakten blir ungefär 4.47 bitar/bildpunkt.

48 Golombkodning II En annan variant är att representera positiva värden med jämna tal och negativa värden med udda tal. 8 x Den bästa golombkoden för denna fördelning är m = 6. Detta ger oss bitar och 8 bitar sidoinformation. Datatakten blir ungefär 4.48 bitar/bildpunkt.

49 Information och entropi X diskret stokastisk variabel Fördelning Självinformation för utfallen p i = P(a i ) = Pr(X = a i ) i(a i ) = log p i Logaritmen kan tas i godtycklig bas, av praktiska skäl så använder man nästan alltid basen 2. Enheten för informationen kallas då bitar. Ju lägre sannolikheten för ett utfall är, desto större är informationen i det utfallet. p i = 1 = i(a i ) = 0

50 Entropi Medelvärdet av informationen kallas entropi H(X ) = N N p i i(a i ) = p i log p i i=1 Entropin kan ses som ett mått på medelinformationen i X, eller osäkerheten om X. i=1 0 H(X ) log N Entropin är maximal då alla utfall är lika sannolika. Om något av utfallen har sannolikheten 1 (och de andra utfallen alltså har sannolikheten 0) så är entropin 0, dvs det finns ingen osäkerhet.

51 Entropi, forts. Två stokastiska variabler X och Y med alfabeten A respektive B. P XY (a i, b j ) = P X (a i ) P Y X (b j a i ) = P Y (b j ) P X Y (a i b j ) Betingad entropi H(Y X ) = i,j P XY (a i, b j ) log P Y X (b j a i ) H(Y X ) H(Y ) med likhet om X och Y är oberoende Blockentropi H(X, Y ) = i,j P XY (a i, b j ) log P XY (a i, b j ) H(X, Y ) = H(X ) + H(Y X ) = H(Y ) + H(X Y )

52 Entropi för källor Källa X t (stationär stokastisk process) Första ordningens entropi för källan Betingad entropi H(X t ) = N N p i i(a i ) = p i log p i i=1 med likhet om X t är minnesfri. Andra ordningens entropi i=1 H(X t X t 1 ) H(X t ) H(X t 1, X t ) = H(X t 1 ) + H(X t X t 1 ) 2 H(X t ) n-te ordningens entropi H(X 1,..., X n ) = H(X 1 )+H(X 2 X 1 )+...+H(X n X 1... X n 1 ) n H(X t )

53 Entropi för källor, forts. Källans entropi (kallas även entropitakt) lim n 1 n H(X 1... X n ) = lim n H(X n X 1... X n 1 ) För en minnesfri källa är entropin lika med första ordningens entropi. För en markovkälla av ordning k är entropin lika med H(X t X t 1... X t k ) Entropin ger en teoretisk lägsta gräns för hur bra man kan koda källan.

54 Problem med huffmankodning Huffmankodning är teoretiskt optimalt, men kan vara opraktiskt för skeva fördelningar och/eller när man utvidgar källan. Ex: A = {a, b, c}, P(a) = 0.95, P(b) = 0.02, P(c) = 0.03 Entropin för källan är Kodordsmedellängden för en huffmankod är 1.05 bitar/symbol, dvs mer än 3 gånger så stor som entropin. Om vi vill att kodordsmedellängden inte ska ligga mer än 5% från entropin måste vi utvidga källen och koda 8 symboler i taget. Detta ger en huffmankod med 3 8 = 6561 kodord. Vi skulle vilja ha en kodningsmetod där vi direkt kan ta fram kodorden för en given sekvens utan att behöva räkna fram kodorden för alla möjliga sekvenser. Ett sätt att göra detta är aritmetisk kodning.

55 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 X (i). För att få en enklare beskrivning så antar vi, utan att förlora i generalitet, att alfabetet består av heltal. A = {1, 2,..., N} Pr(X = i) = P(i) F (i) = i P(k) k=1 F (0) = 0 Exempel: A = {1, 2, 3} P(1) = 0.5, P(2) = 0.3, P(3) = 0.2 F (0) = 0, F (1) = 0.5, F (2) = 0.8, F (3) = 1

56 Aritmetisk kodning, forts. Antag att vi vill koda en sekvens x = x 1, x 2,..., x n. Man börjar med hela sannolikhetsintervallet [0, 1). I varje steg delar man in sitt intervall proportionellt enligt fördelningsfunktionen F (i) och väljer just det delintervall som motsvarar den symbol som kodas. Varje symbolsekvens av längd n ger ett unikt 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.

57 Iterativ intervalluppdelning 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). Man kan då enkelt visa att l (n) = l (n 1) + (u (n 1) l (n 1) )F (x n 1) u (n) = l (n 1) + (u (n 1) l (n 1) )F (x n ) Startvärden är hela intervallet Mittpunkten i intervallet ges av l (0) = 0 u (0) = 1 T X (x) = l (n) + u (n) 2

58 Kodord Hur tar vi fram ett kodord b 1 b 2... b m för vårt intervall? Vi önskar förstås att koden är en prefixkod, dvs att kodordet entydigt pekar ut vårt intervall. Några alternativ: 1. Hitta det kortaste binära tal (0.b 1 b 2... b m ) 2 sådant att och (0.b 1 b 2... b m ) 2 l (n) (0.b 1 b 2... b m ) 2 = (0.b 1 b 2... b m ) m < u (n) För att detta ska vara möjligt krävs att m = log P(x), eller m = log P(x) + 1, beroende på intervallet. 2. Tag den binära representationen av T X (x) och trunkera den till m = log P(x) + 1 bitar.

59 Minneskällor Vid aritmetisk kodning av minneskällor låter man intervalluppdelningen bero av tidigare symboler, dvs man använder olika F i varje steg beroende på vad tidigare symboler varit. Exempelvis, om vi har en binär markovkälla X t av ordning 1 med alfabetet {1, 2} och övergångssannolikheterna P(x t+1 x t ) P(1 1) = 0.8, P(2 1) = 0.2, P(1 2) = 0.1, P(2 2) = 0.9 så kommer vi att använda två olika fördelningsfunktioner F 1 (0) = 0, F 1 (1) = 0.8, F 1 (2) = 1 F 2 (0) = 0, F 2 (1) = 0.1, F 2 (2) = 1 För den första symbolen i sekvensen kan man antingen välja någon av de två fördelningarna, eller så använder man en tredje fördelningsfunktion baserad på de stationära sannolikheterna.

60 Datatakt för aritmetisk kodning Datatakten blir generellt och för en minnesfri källa 1 n H(X 1... X n ) R 1 n H(X 1... X n ) + 2 n H(X ) R H(X ) + 2 n Teoretiskt sett lite sämre än huffmankodning. Eftersom komplexiteten för kodaren inte beror på antalet symboler n vi kodar i taget, är det mycket enklare att komma nära entropigränsen än med en huffmankod.

61 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 detta görs skala om intervallet, så att vi maximalt utnyttjar den tillgängliga precisionen. Om den första biten i både den lägre och den övre gränsen är den samma måste även den biten i kodordet vara densamma. Då kan man skicka den biten och därefter skifta gränserna en bit, dvs skala om intervallstorleken med en faktor 2.

62 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) = 0 och u (0) = 2 m 1.

63 Intervallskalning Fallen när vi ska göra intervallskalning blir: 1. Intervallet ligger helt inom [0, 2 m 1 1], dvs den mest signifikanta biten i både l (n) och u (n) är 0. Skifta ut mest signifikant bit ur l (n) och u (n) och skicka den. Skifta in 0 i l (n) och 1 i u (n). 2. Intervallet ligger helt inom [2 m 1, 2 m 1], dvs den mest signifikanta biten i både l (n) och u (n) är 1. Samma operationer som i fall 1. När vi har kodat våra n symboler avslutas kodordet genom att vi skickar alla m bitar i l (n). Koden kan visserligen bli en prefixkod även med färre bitar, men implementationen av avkodaren blir enklare om hela l skickas. För stora n blir de extra bitarna försumbara, dessutom måste man förmodligen ändå lagra bitarna i ett helt antal bytes.

64 Mer problem Tyvärr kan vi i vår algoritm hamna i problem, om den första biten i l hela tiden är 0 och den första biten i u är 1. I värsta fall hamnar vi i situationen att l = och u = Då kommer vår algoritm inte att fungera. Lyckligtvis kan vi komma runt detta problem. Om de två första bitarna i l blir 01 och de två första i u blir 10, kan vi göra ett bitskift, utan att skicka några bitar i kodordet. När sen de första bitarna i l och u blir detsamma kan vi förutom den biten även skicka en extra, inverterad bit, dvs vi är då säkra på om kodordet ska ha 01 eller 10.

65 Intervallskalning Vi får nu tre fall 1. Intervallet ligger helt inom [0, 2 m 1 1], dvs den mest signifikanta biten i både l (n) och u (n) är 0. Skifta ut mest signifikant bit ur l (n) och u (n) och skicka den. Skifta in 0 i l (n) och 1 i u (n). 2. Intervallet ligger helt inom [2 m 1, 2 m 1], dvs den mest signifikanta biten i både l (n) och u (n) är 1. Samma operationer som i fall Vi har inte fall 1 eller 2, men intervallet ligger helt inom [2 m 2, 2 m m 2 1], dvs de två mest signifikanta bitarna är 01 i l (n) och 10 i u (n). 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.

66 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 m 2 + 1, vilket till exempel händer när l (n) = 2 m 2 1 och u (n) = 2 m 1. För att algoritmen ska fungera får aldrig u (n) bli mindre än l (n) (samma värde är tillåtet, när man skiftar ut bitar skiftas ju nollor in i l och ettor in i u). För att detta ska gälla måste alltså alla intervall i fördelningsfunktionen uppfylla (med en lätt överskattning) F (i) F (i 1) 2 k m+2 ; i = 1,..., L Till exempel så måste m k + 2 om vi har något intervall av storlek 1.

67 Avkodning Starta avkodaren i samma tillstånd (dvs l = 0 och 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 skalar om l och u ska vi även uppdatera t på samma sätt (skifta ut den mest signifikanta biten, skifta in en ny bit från kodströmmen som minst signifikant bit samt, om det är en om skalning av typ 3, invertera den nya mest signifikanta biten.) 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.

68 Lempel-Zivkodning Koda symbolsekvenser genom referenser till vad som hänt tidigare i sekvensen. Två huvudtyper: Använd en historiebuffert, koda en delsekvens som en pekare till när sekvensen uppträdde senast (LZ77). Bygg upp en ordbok av alla unika delsekvenser som uppträder, koda referenser till tidigare ord (LZ78). Lempel-Zivkodning är mycket använd för filkomprimering, t.ex. zip, gzip, ARJ och compress. Lempel-Ziv används även i bildkomprimeringsstandarderna GIF och PNG, samt i modemstandarden V.42bis. Kodaren och avkodaren behöver inte känna till källans statistik. Prestanda kommer ändå asymptotiskt att gå mot entropigränsen. En sådan kodningsmetod kallas universell.

69 LZ77 Lempel och Ziv, Betrakta sekvensen som ska kodas genom ett glidande fönster. Fönstret delas i två delar, en del som innehåller redan kodade symboler (search buffer) och en del som innehåller symboler som ska kodas härnäst (look-ahead buffer). Hitta den längsta sekvens i search buffer som matchar den sekvens som börjar i look-ahead buffer. Skicka en trippel < o, l, c > där o är en pekare till hur långt in i search buffer sekvensen börjar, l är längden av sekvensen, och c är nästa symbol som inte matchade. Denna trippel kodas enklast med ett fixlängds kodord. Antalet bitar som krävs är log S + log W + log N där S är storleken på search buffer, W storleken på look-ahead buffer och N är alfabetets storlek.

70 Förbättringar av LZ77 Det är onödigt att skicka en pekare och en längd om vi inte hittade en matchande sekvens. Dessutom behöver vi bara skicka en ny symbol då vi inte hittade någon matchande sekvens. Inför istället en extra flaggbit som talar om om vi hittade en match eller inte. Antingen skickar vi alltså < 0, o, l > eller < 1, c >. Denna variant brukar kallas LZSS (Storer och Szymanski, 1982). Beroende på buffertstorlekarna kan det löna sig att koda korta matchningar som enstaka symboler istället. I början av kodningen, innan historiebufferten blivit fylld, kan man använda kortare kodord för o och l. Alla o, l och c är inte lika sannolika, så man kan få ytterligare kompression genom att koda dem med variabellängdskoder.

71 LZ78 Lempel och Ziv, En ordbok av unika sekvenser byggs upp. Storleken på ordboken S. I början är ordboken tom, sånär som på index 0 som betyder ingen match. Varje ny sekvens som kodas skickas som tupeln < i, c > där i är index i ordboken för den längsta matchande sekvens vi hittar och c är nästa tecken i indata som inte matchade. Antalet bitar som krävs är log S + log N Vid avkodningen kan avkodaren bygga en identisk ordbok, så man behöver inte skicka någon sidoinformation.

72 Vad gör man när ordboken blir full? Några olika alternativ finns: Släng bort ordboken och börja om. Fortsätt koda med ordboken, men skicka bara index och lägg inte till några nya ord. Som ovan, men bara så länge som kompressionen är bra. Om den blir för dålig, släng ordboken och börja om. I det tredje fallet brukar man lägga till en extra symbol i alfabetet som talar om för avkodaren att den ska slänga ordboken och börja om.

73 LZW Variant av LZ78 (Welch, 1984) Istället för att skicka en tupel < i, c > skickar man bara index i till ordboken. För att det ska fungera måste startordboken innehålla alla enstaka symboler i alfabetet. Hitta den längsta matchande sekvensen i ordboken och skicka indexet som ett kodord. Den matchande sekvensen plus nästa symbol läggs som ett nytt ord i ordboken.

74 Andra universella kodningsmetoder Adaptiv huffmankodning och adaptiv aritmetisk kodning. Vid adaptiv kodning startar man med en känd sannolikhetsmodell. Varje gång man kodar en symbol uppdaterar man sin sannolikhetsmodell. Avkodaren börjar med samma kända modell, och efter varje avkodad symbol uppdateras modellen. Man behöver inte skicka sidoinformation om sannolikheter eller kodträd, eftersom avkodaren kan återskapa samma information som kodaren har.

75 Lossless JPEG JPEG är normalt en kodningsmetod för bilder som ger distorsion, men det finns även distorsionsfri mod i standarden. Bildpunkterna kodas radvis uppifrån och ner. Bildpunkten värde I ij på position (i, j) predikteras från närliggande bildpunkters värde. Det finns 7 prediktorer att välja bland: 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

76 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 , 1 0, 1 2 3, 2, 2, 3 00, 01, 10, ,..., 4, 4,..., 7 000,..., 011, 100,...,

77 Testbild, gråskala Originalbild, bildpunkter, 8 bitar per bildpunkt

78 Testbild, färg Originalbild, bildpunkter, 24 bitar per bildpunkt

79 Kodning med lossless JPEG Antal bitar per bildpunkt vid kodning av de två testbilderna med de olika prediktorerna gråskala färg Prediktor Prediktor Prediktor Prediktor Prediktor Prediktor Prediktor

80 JPEG-LS Standard från 1997 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

81 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. De tre talen Q k används för att räkna fram ett tal q som ligger mellan 0 och 364. Detta tal är vår kontext. 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.

82 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 kq. 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 våra testbilder med JPEG-LS får vi en medeldatatakt på 3.54 bitar/bildpunkt för gråskalebilden och bitar/bildpunkt för färgbilden.

83 GIF (Graphics Interchange Format) Två standarder: GIF87a och GIF89a. Man specificerar en virtuell skärm. På denna skärm läggs mindre bilder in. För varje liten bild skickas position (i den virtuella skärmen) och storlek. I det enklaste fallet har man bara en bild som är lika stor som den virtuella skärmen. Man använder färgtabeller om maximalt 256 färger. Varje delbild kan ha sin egen färgtabell, men kan även använda en global färgtabell. Färgtabellsindex för pixlarna kodas med LZW. Två extra symboler används i alfabetet: ClearCode, som markerar att vi ska kasta ordboken och börja om, och EndOfInformation, som markerar att kodströmmen är slut. Interlace: Först skickar man linje 0, 8, 16,... sen linje 4, 12, 20,... sen linje 2, 6, 10,... och sist linje 1, 3, 5,... I GIF89a har man lagt till saker som animering och transparens.

84 GIF, ingen interlace En fjärdedel av informationen mottagen.

85 GIF, interlace En fjärdedel av informationen mottagen. För linjer som inte mottagits än kopierar man bildpunkter från linjen ovanför.

86 GIF, forts. För vår gråskaletestbild får vi en medeldatatakt om 7.07 bitar/bildpunkt (inte särskilt hög kompression). GIF passar bättre för syntetiska bilder med stora områden med samma färg. Vi kan inte göra en jämförelse med andra kodningsmetoder för färgbilden, eftersom vi måste reducera antalet färger till 256.

87 PNG (Portable Network Graphics) Togs fram som en ersättare till GIF, bland annat p.g.a. problem med patent. Använder en variant av LZ77 som kallas Deflate för att koda bilden. Det är samma metod som används i zip och gzip. Historiebufferten har storlek Matchlängderna kan vara mellan 3 och 258. Längder och enstaka symboler kodas med ett gemensamt alfabet, antingen med en fix huffmankod eller en dynamisk huffmankod. Även offset kodas med variabellängds kodord, med kortare kodord för lägre värden. Klarar färgupplösning upp till 48 bitar (16 bitar per färgkomponent). Alfakanal (generell transparens). Se även: ftp://ftp.uu.net/graphics/png/

88 PNG, forts. Stödjer 5 olika prediktorer (kallade filter): 0 Ingen prediktion 1 Îij = I i,j 1 2 Î ij = I i 1,j 3 Îij = (I i 1,j + I i,j 1 )/2 4 Paeth (välj den av I i 1,j, I i,j 1 och I i 1,j 1 som ligger närmast I i 1,j + I i,j 1 I i 1,j 1 ) Vilket filter som används kan väljas separat för varje linje i bilden. Kodar vi våra testbilder med PNG får vi en medeldatatakt på 3.97 bitar/bildpunkt för gråskalebilden och bitar/bildpunkt för färgbilden.

89 Sammanfattning Metod gråskala färg Huffman 7.51 Huffman, differensdata 4.13 Golomb, differensdata, var. I 4.47 Golomb, differensdata, var. II 4.48 Lossless JPEG JPEG-LS GIF 7.07 PNG OBS! Detta var bara två testbilder, för mer ingående jämförelser bör man pröva metoderna på ett stort antal bilder.

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

Kurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer. Khalid Sayood, Introduction to Data Compression TSBK35 fö 1 p.3 TSBK35 fö 1 p.4 Kurslitteratur Kompression av ljud och bild Harald Nautsch harna@isy.liu.se http://www.icg.isy.liu.se/courses/tsbk35/ ISY Bildkodning, Linköpings universitet Khalid Sayood,

Läs mer

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

Skurlängdskodning. aaaabbbbbbbccbbbbaaaa. Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga. 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

Läs mer

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

Kurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer TSBK35 källkodning p.3/89 TSBK35 källkodning p.4/89 Kurslitteratur Kompression av ljud och bild Harald Nautsch harna@isy.liu.se http://www.icg.isy.liu.se/courses/tsbk35/ ISY Informationskodning, Linköpings

Läs mer

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

Ordbokskodning. Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning) Datakompression fö 6 p.1 Ordbokskodning Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning) Man skapar en ordbok som innehåller 2 b olika sekvenser av symboler

Läs mer

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

Exempel, minnesfri binär källa. Ordbokskodning. Lempel-Zivkodning. Lempel-Zivkodning, forts. Datakompression fö 6 p.3 Datakompression fö 6 p.4 Ordbokskodning Exempel, minnesfri binär källa Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning) Man skapar

Läs mer

Shannon-Fano-Elias-kodning

Shannon-Fano-Elias-kodning Datakompression fö 5 p.1 Shannon-Fano-Elias-kodning Antag att vi har en minnesfri källa X i som tar värden i {1, 2,...,L}. Antag att sannolikheterna för alla symboler är strikt positiva: p(i) > 0, i. Fördelningsfunktionen

Läs mer

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

Datakompression. Harald Nautsch ISY Bildkodning, Linköpings universitet. Datakompression fö 1 p.1 Datakompression Harald Nautsch harna@isy.liu.se http://www.icg.isy.liu.se/courses/tsbk04/ ISY Bildkodning, Linköpings universitet Datakompression fö 1 p.2 Kursinnehåll Källmodellering:

Läs mer

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

Kursinnehåll. Datakompression. Föreläsningar, preliminärt program. Examination 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:

Läs mer

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

Aritmetisk kodning. F (0) = 0 Exempel: A = {1, 2, 3} k=1. Källkodning fö 5 p.1/12 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

Läs mer

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

Källkodning. Egenskaper hos koder. Några exempel Källkodning 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

Läs mer

FLAC (Free Lossless Audio Coding)

FLAC (Free Lossless Audio Coding) Datakompression fö 9 p.1 FLAC (Free Lossless Audio Coding) Distorsionsfri kodning av ljud Ljudsignalen delas in i block (typiskt några tusen sampel). Koda summa/skillnad av de två stereokanalerna om det

Läs mer

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. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or. Datakompression fö 3 p.1 Optimala koder En prefixkod kallas optimal om det inte existerar någon annan kod (för samma alfabet och sannolikhetsfördelning) som har lägre kodordsmedellängd. Det existerar förstås

Läs mer

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

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts. Datakompression fö 3 p.3 Datakompression fö 3 p.4 Optimala koder Övre gräns för optimala koder En prefixkod kallas optimal om det inte existerar någon annan kod (för samma alfabet och sannolikhetsfördelning)

Läs mer

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

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 fö 2 p.1 Krafts olikhet En momentant avkodbar kod (prefixkod) med kodordslängderna l 1,...,l N existerar om och endast om N 2 l i 1 Bevis: Antag att vi har en trädkod. Låt l max =max{l

Läs mer

TSBK04 Datakompression. Övningsuppgifter

TSBK04 Datakompression. Övningsuppgifter TSBK04 Datakompression Övningsuppgifter Innehåll 1 Informationsteoretiska begrepp........................ 1 2 Källkodning................................... 4 Copyright c 2004 Bildkodningsgruppen, Linköpings

Läs mer

TSBK04 Datakompression Övningsuppgifter

TSBK04 Datakompression Övningsuppgifter TSBK04 Datakompression Övningsuppgifter Innehåll 1 Informationsteoretiska begrepp........................ 1 2 Källkodning................................... 4 Copyright c 2004 Bildkodningsgruppen, Linköpings

Läs mer

Adaptiv aritmetisk kodning

Adaptiv aritmetisk kodning 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

Läs mer

Föreläsning 1: Bild- och ljudkodning

Föreläsning 1: Bild- och ljudkodning Föreläsning 1: Bild- och ljudkodning 1. Kursöversikt 2. Introduktion till bild- och ljudkodning - syfte - historik - antal bitar per bildpunkter/sampel 3. Två principiella klasser : distorsionsfri och

Läs mer

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

En generell prediktiv kodare utnyttjar signalens utseende N steg tillbaka i tiden för kodningen, dvs vi kodar efter den betingade fördelningen Prediktiv kodning Närliggande sampel i en signal är oftast starkt korrelerade med varandra, det kan därför vara en bra ide att försöka utnyttja denna korrelation (minnet) innan kvantiseringen för att få

Läs mer

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

Linjär prediktion. Prediktiv kodning. Linjär prediktion. Prediktiv kodare och avkodare Prediktiv kodning Linjär prediktion Närliggande sampel i en signal är oftast starkt korrelerade med varandra, det kan därför vara en bra ide att försöka utnyttja denna korrelation (minnet) innan kvantiseringen

Läs mer

TSBK35 Kompression av ljud och bild

TSBK35 Kompression av ljud och bild TSBK35 Kompression av ljud och bild Övningshäfte 0 februari 013 Innehåll I Problem 1 1 Informationsteori................................ 1 Källkodning................................... 3 3 Kvantisering...................................

Läs mer

Föreläsning 7: Bild- och videokodning

Föreläsning 7: Bild- och videokodning Föreläsning 7: Bild- och videokodning Inledning - varför bildkodning - tillämpningar - grundprinciper Förlustfri kodning - Variabellängdskodning - Skurländskodning - Huffmankodning Irreversibla kodningsmetoder

Läs mer

Burrows-Wheelers transform

Burrows-Wheelers transform 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

Läs mer

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

4/27/12. Fönstring i MDCT. Föreläsning 10: Ljudkodning ( Audio Coding ) 1. Inledning PCM, standardmetoder, MDCT, psykoakustik, ljudtryck Föreläsning 10: Ljudkodning ( Audio Coding ) 1. Inledning PCM, standardmetoder, MDCT, psykoakustik, ljudtryck 2. Hörselsinnet Hörnivåkurvor, hörseltröskel, maskeringseffekter, Barkskalan 3. Ljudkodning

Läs mer

Kodning med distorsion

Kodning med distorsion Kodning med distorsion Vi har en signal x n, n = 1... N som ska kodas. Alfabetet är en delmängd av de reella talen A R. Alfabetet kan vara kontinuerligt. Om vi inte har kravet att den avkodade signalen

Läs mer

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

Föreläsning 10: Ljudkodning ( Audio Coding ) Föreläsning 10: Ljudkodning ( Audio Coding ) 1. Inledning PCM, standardmetoder, MDCT, psykoakustik, ljudtryck 2. Hörselsinnet Hörnivåkurvor, hörseltröskel, maskeringseffekter, Barkskalan 1. Ljudkodning

Läs mer

SMS047 Mediakodning. Introduktion. Frank Sjöberg. Introduktion. Introduktion

SMS047 Mediakodning. Introduktion. Frank Sjöberg. Introduktion. Introduktion SMS047 Mediakodning Frank Sjöberg Email: frank@sm.luth.se Rum A3207 Kursen behandlar kodning av fyra olika typer av media Text & annan data Bild Ljud (ej tal) Video Vi kommer i första hand att studera

Läs mer

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

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 Transformkodning Idé:. Tag datasekvensen och dela in den i block av storlek N (eller N N om signalen är tvνadimensionell). Transformera dessa block med en lämplig, reversibel transform till en ny sekvens.

Läs mer

Analys/syntes-kodning

Analys/syntes-kodning Analys/syntes-kodning Många talkodare bygger på en princip som kallas analys/syntes-kodning. Istället för att koda en vågform, som man normalt gör i generella ljudkodare och i bildkodare, så har man parametrisk

Läs mer

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

Föreläsninsanteckningar till föreläsning 3: Entropi Föreläsninsanteckningar till föreläsning 3: Entropi Johan Håstad, transkriberat av Pehr Söderman 2006-01-20 1 Entropi Entropi är, inom kryptografin, ett mått på informationsinnehållet i en slumpvariabel.

Läs mer

Lab 3 Kodningsmetoder

Lab 3 Kodningsmetoder Lab 3. Kodningsmetoder 15 Lab 3 Kodningsmetoder Starta Matlab och ladda ner följande filer från kurswebben till er lab-katalog: lab3blocks.mdl okodat.mdl repetitionskod.mdl hammingkod.mdl planet.mat Denna

Läs mer

Föreläsning 17 - Komprimering

Föreläsning 17 - Komprimering DD1343 Datalogi och numeriska metoder del 1 Föreläsning 17 - Komprimering Komprimering Följdlängdskodning (run-length encoding) Huffmankodning Lempel-Ziv-kodning Entropi Komprimering av bilder Komprimering

Läs mer

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.

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. Psykoakustik Ljudtrycksnivå Människans hörsel är ganska väl studerad och det finns bra modeller för den. Detta kan utnyttjas vid ljudkodning för att placera distorsionen (kvantiseringsbruset) så att det

Läs mer

Träd och koder. Anders Björner KTH

Träd och koder. Anders Björner KTH 27 Träd och koder Anders Björner KTH 1. Inledning. Det är i flera sammanhang viktigt att representera information digitalt (d.v.s omvandla till sviter av nollor och ettor). Beroende på vilka villkor som

Läs mer

Övning 6 - Tillämpad datalogi 2012

Övning 6 - Tillämpad datalogi 2012 /home/lindahlm/activity-phd/teaching/12dd1320/exercise6/exercise6.py October 2, 20121 0 # coding : latin Övning 6 - Tillämpad datalogi 2012 Sammanfattning Idag gick vi igenom komprimering, kryptering och

Läs mer

Signaler och system, IT3

Signaler och system, IT3 Signaler och system, IT3 Vad är signalbehandling? 1 Detta dokument utgör introduktionsföreläsningen för kursen Signaler och system för IT3 period 2. Kursen utvecklades år 2002 av Mathias Johansson. 1 Vad

Läs mer

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

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken

Läs mer

Föreläsning 7. Felrättande koder

Föreläsning 7. Felrättande koder Föreläsning 7 Felrättande koder Antag att vi vill skicka ett meddelande som består av bokstäver a,b,c,d. Vi kan koda a,b,c,d. Antag att det finns en viss sannolikhet att en bit i ett meddelande som skickas

Läs mer

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

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation Innehåll Föreläsning 11 Trie Sökträd Trie och Sökträd 356 357 Trie Ytterligare en variant av träd. Vi har tidigare sett: Oordnat träd där barnen till en nod bildar en mängd Ordnat träd där barnen till

Läs mer

Lösningsförslag till övningsuppgifter, del V

Lösningsförslag till övningsuppgifter, del V Lösningsförslag till övningsuppgifter, del V Obs! Preliminär version! Ö.1. (a) Vi kan lösa uppgiften genom att helt enkelt räkna ut avståndet mellan vart och ett av de ( 7 ) = 1 paren. Först noterar vi

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Bilder... Dagens föreläsning. Objektgrafik. Objektgrafik. TNMK30, 2010 Föreläsning

Bilder... Dagens föreläsning. Objektgrafik. Objektgrafik. TNMK30, 2010 Föreläsning TNMK30, 2010 Föreläsning Bilder... Tobias Trofast, LiU 1 Dagens föreläsning Olika grafikformat Bitdjup Färglägen och kanaler Komprimering Filformat Bildkvalitet Upplösning & Interpolering Objektgrafik

Läs mer

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

Detta ger oss att kanalkapaciteten för den ursprungliga kanalen är C = q 1 C 1 + q 2 C C =1 h ( ) 0.30. Lösning på problem a) Kanalen är symmetrisk och vi gör nedanstående uppdelning av den. Vi får två starkt symmetriska kanaler vilkas kanalkapacitet ges av C och C 2. Kanalerna väljes med sannolikheterna

Läs mer

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

Informationsteori. Repetition Kanalkapaciteten C. Repetition Källkodhastigheten R 2. Repetition Kanalkodhastigheten R 1. Huffmans algoritm: D-när kod Informationsteori Repetition Kanalkapaciteten C Källkodare Kanalkodare X Kanal Mats Cedervall Mottagare vkodare Kanalavkodare Y Kanalkodningssatsen C =supi(x; Y ) p(x) Informationsteori, fl#7 1 Informationsteori,

Läs mer

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

Datastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd. Datastrukturer och algoritmer Föreläsning 13 rie och ökträd Innehåll rie rådar rie ökträd tterligare en variant av träd. Vi har tidigare sett: Oordnat träd där barnen till en nod bildar en mängd Ordnat

Läs mer

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

Videosignalen består av en sekvens av bilder, typiskt 24, 25 eller 30 bilder i sekunden. Videokodning Begrepp och beteckningar Videosignalen består av en sekvens av bilder, typiskt 24, 25 eller 30 bilder i sekunden. Bilderna skickas antingen progressivt (hela bilden på en gång) eller med interlace

Läs mer

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

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

Läs mer

4.1 Grundläggande sannolikhetslära

4.1 Grundläggande sannolikhetslära 4.1 Grundläggande sannolikhetslära När osäkerhet förekommer kan man aldrig uttala sig tvärsäkert. Istället använder vi sannolikheter, väntevärden, standardavvikelser osv. Sannolikhet är ett tal mellan

Läs mer

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

LARS ULVELAND HOPFIELDNÄTVERK FÖR IGENKÄNNING AV DEGRADERADE BILDER OCH HANDSKRIVNA TECKEN LARS ULVELAD HOPFIELDÄTVERK FÖR IGEKÄIG AV DEGRADERADE BILDER OCH HADSKRIVA TECKE E PROJEKTRAPPORT FÖR PROJEKTKURSE I BILDAALYS HT 02 Teori för Hopfieldnätverk Hopfieldmodellen är en typ av neuronnät,

Läs mer

Föreläsning i webbdesign. Bilder och färger. Rune Körnefors. Medieteknik. 2012 Rune Körnefors rune.kornefors@lnu.se

Föreläsning i webbdesign. Bilder och färger. Rune Körnefors. Medieteknik. 2012 Rune Körnefors rune.kornefors@lnu.se Föreläsning i webbdesign Bilder och färger Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se Exempel: Bilder på några webbsidor 2 Bildpunkt = pixel (picture element) Bilder (bitmap

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift

Läs mer

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

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013) Grafisk Teknik Rastrering Övningar med lösningar/svar Det här lilla häftet innehåller ett antal räkneuppgifter med svar och i vissa fall med fullständiga lösningar. Uppgifterna är för det mesta hämtade

Läs mer

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.

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. Psykoakustik TSBK35 fö 10 p.3 Ljudtrycksnivå TSBK35 fö 10 p.4 Människans hörsel är ganska väl studerad och det finns bra modeller för den. Detta kan utnyttjas vid ljudkodning för att placera distorsionen

Läs mer

Föreläsning 2. Transmissionslänk. Repetition: Internetprotokollens skikt. Mål

Föreläsning 2. Transmissionslänk. Repetition: Internetprotokollens skikt. Mål Föreläsning Mål Behandla utbredningsmedium Förstå störningar som kan påverka signalen Förstå hur man digitaliserar information Förse exempel av digitala dataformat Förstå varför källkodning är nyttigt

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #7 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Aritmetik i digitala system Speciella egenskaper: Systemet

Läs mer

Laboration 4: Digitala bilder

Laboration 4: Digitala bilder Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse

Läs mer

SF1905 Sannolikhetsteori och statistik: Lab 2 ht 2011

SF1905 Sannolikhetsteori och statistik: Lab 2 ht 2011 Avd. Matematisk statistik Tobias Rydén 2011-09-30 SF1905 Sannolikhetsteori och statistik: Lab 2 ht 2011 Förberedelser. Innan du går till laborationen, läs igenom den här handledningen. Repetera också i

Läs mer

Grundläggande matematisk statistik

Grundläggande matematisk statistik Grundläggande matematisk statistik Kontinuerliga fördelningar Uwe Menzel, 8 www.matstat.de Begrepp fördelning Hur beter sig en variabel slumpmässigt? En slumpvariabel (s.v.) har en viss fördelning, d.v.s.

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre

Läs mer

DIGITAL KOMMUNIKATION

DIGITAL KOMMUNIKATION EN KOR SAMMANFANING AV EORIN INOM DIGIAL KOMMUNIKAION Linjär kod En binär linjär kod kännetecknas av att summan av två kodord också är ett kodord. Ett specialfall är summan av ett kodord med sig själv

Läs mer

Tentamen i. TDDC67 Funktionell programmering och Lisp

Tentamen i. TDDC67 Funktionell programmering och Lisp 1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDC67 Funktionell programmering och Lisp och äldre kurser TDDC57 Programmering, Lisp och funktionell programmering

Läs mer

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

För logitmodellen ges G (=F) av den logistiska funktionen: (= exp(z)/(1+ exp(z)) Logitmodellen För logitmodellen ges G (=F) av den logistiska funktionen: F(z) = e z /(1 + e z ) (= exp(z)/(1+ exp(z)) Funktionen motsvarar den kumulativa fördelningsfunktionen för en standardiserad logistiskt

Läs mer

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK DATORLABORATION 4 MATEMATISK STATISTIK, FÖR I/PI, FMS 121/2, HT-3 Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Läs mer

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

x 23 + y 160 = 1, 2 23 = , Matematiska Institutionen KTH Lösningar till några övningar, inför tentan moment B, på de avsnitt som inte omfattats av lappskrivningarna, Diskret matematik för D2 och F, vt08.. Ett RSA-krypto har n =

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #7 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Speciella egenskaper: Systemet arbetar med kodord (s k

Läs mer

Ansiktsigenkänning med MATLAB

Ansiktsigenkänning med MATLAB Ansiktsigenkänning med MATLAB Avancerad bildbehandling Christoffer Dahl, Johannes Dahlgren, Semone Kallin Clarke, Michaela Ulvhammar 12/2/2012 Sammanfattning Uppgiften som gavs var att skapa ett system

Läs mer

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

F3 Datarepresentation teckenkodning och datakompression EDAA05 Datorer i system! Roger Henriksson! Teckenkodning historik F3 Datarepresentation teckenkodning och datakompression EDAA05 Roger Henriksson Baudotkod 5-bitars kod för fjärrskrivare (teletype tty). Baudot 1874, Murray 1901 2 EBCDIC ASCII Extended

Läs mer

F3 Datarepresentation teckenkodning och datakompression

F3 Datarepresentation teckenkodning och datakompression Teckenkodning historik F3 Datarepresentation teckenkodning och datakompression Baudotkod 5-bitars kod för fjärrskrivare (teletype tty). EDAA05 Roger Henriksson Jonas Wisbrant Baudot 1874, Murray 1901 2

Läs mer

Finansiell Statistik (GN, 7,5 hp,, VT 2009) Föreläsning 2. Diskreta Sannolikhetsfördelningar. (LLL Kap 6) Stokastisk Variabel

Finansiell Statistik (GN, 7,5 hp,, VT 2009) Föreläsning 2. Diskreta Sannolikhetsfördelningar. (LLL Kap 6) Stokastisk Variabel Finansiell Statistik (GN, 7,5 hp,, VT 009) Föreläsning Diskreta (LLL Kap 6) Department of Statistics (Gebrenegus Ghilagaber, PhD, Associate Professor) Financial Statistics (Basic-level course, 7,5 ECTS,

Läs mer

SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2

SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2 Matematisk Statistik SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2 1 Introduktion Denna laboration är inte poänggivande utan är till för den som vill bekanta sig med MATLAB. Fokusera

Läs mer

Människans hörsel är ganska väl studerad och det finns bra modeller för den.

Människans hörsel är ganska väl studerad och det finns bra modeller för den. Psykoakustik Människans hörsel är ganska väl studerad och det finns bra modeller för den. Detta kan utnyttjas vid ljudkodning för att placera distorsionen (kvantiseringsbruset) så att det ska märkas så

Läs mer

Föreläsning 5: Grafer Del 1

Föreläsning 5: Grafer Del 1 2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första

Läs mer

Data och Information. Dr. Johan Hagelbäck.

Data och Information. Dr. Johan Hagelbäck. Data och Information Dr. Johan Hagelbäck johan.hagelback@lnu.se http://aiguy.org Data eller information? I den verkliga världen har vi information, till exempel en bok eller ett stycke musik Denna information

Läs mer

Föreläsning 1. Repetition av sannolikhetsteori. Patrik Zetterberg. 6 december 2012

Föreläsning 1. Repetition av sannolikhetsteori. Patrik Zetterberg. 6 december 2012 Föreläsning 1 Repetition av sannolikhetsteori Patrik Zetterberg 6 december 2012 1 / 28 Viktiga statistiska begrepp För att kunna förstå mer avancerade koncept under kursens gång är det viktigt att vi förstår

Läs mer

Bildförbättring i spatial domänen (kap. 3) Bildförbättring (enhancement) Spatial domän. Operatorer. Tröskling (threshold) Gråskale-transformationer

Bildförbättring i spatial domänen (kap. 3) Bildförbättring (enhancement) Spatial domän. Operatorer. Tröskling (threshold) Gråskale-transformationer Bildförbättring i spatial domänen (kap. 3) Punktoperationer Gråskaletransformationer Logiska & aritmetiska operationer Filtrering Faltning Lågpassfilter Högpassfilter Bildförbättring (enhancement) Förbättra

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal

Läs mer

DIGITALA TAL OCH BOOLESK ALGEBRA

DIGITALA TAL OCH BOOLESK ALGEBRA DIGITALA TAL OCH BOOLESK ALGEBRA Innehåll Talsystem och koder Aritmetik för inära tal Grundläggande logiska operationer Logiska grindar Definitioner i Boolesk algera Räknelagar BINÄRA TALSYSTEMET Binärt

Läs mer

Tentamen, Programmeringsteknik för BME, F och N

Tentamen, Programmeringsteknik för BME, F och N LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, Programmeringsteknik för BME, F och N 2015 06 03, 14.00 19.00 Anvisningar: Preliminärt ger uppgifterna 7 + 11 + 16 + 11 = 45 poäng.

Läs mer

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

Introduktion till programmering SMD180. Föreläsning 9: Tupler Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]

Läs mer

Stokastiska processer

Stokastiska processer Stokastiska processer Fredrik Olsson, fredrik.olsson@iml.lth.se Avdelningen för produktionsekonomi Lunds tekniska högskola, Lunds universitet Dessa förläsningsanteckningar kommer att behandla diskreta

Läs mer

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

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik Digitalteknik 3p, vt 01 Struktur: Elektroteknik A Kurslitteratur: "A First Course in Digital Systems Design - An Integrated Approach" Antal föreläsningar: 11 (2h) Antal laborationer: 4 (4h) Examinationsform:

Läs mer

Datorsystemteknik DVG A03 Föreläsning 3

Datorsystemteknik DVG A03 Föreläsning 3 Datorsystemteknik DVG A03 Föreläsning 3 Datoraritmetik Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Hur stora tal kan vi få med N bitar? Största

Läs mer

Förlustfri datakompression

Förlustfri datakompression Förlustfri datakompression Patrik Lindberg Institutionen för informationsbehandling Åbo Akademi, 20520 Åbo, Finland E-Post: patlindb@abo.fi Abstrakt Detta papper ger en kort introduktion till förlustfri

Läs mer

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

Moment 2 - Digital elektronik. Föreläsning 1 Binära tal och logiska grindar Moment 2 - Digital elektronik Föreläsning 1 Binära tal och logiska grindar Jan Thim 1 F1: Binära tal och logiska grindar Innehåll: Introduktion Talsystem och koder Räkna binärt Logiska grindar Boolesk

Läs mer

Material till kursen SF1679, Diskret matematik: Lite om kedjebråk. 0. Inledning

Material till kursen SF1679, Diskret matematik: Lite om kedjebråk. 0. Inledning Matematik, KTH Bengt Ek november 207 Material till kursen SF679, Diskret matematik: Lite om kedjebråk 0 Inledning Talet π (kvoten mellan en cirkels omkrets och dess diameter) är inte ett rationellt tal

Läs mer

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

Tillämpad Programmering (ID1218) :00-13:00 ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.

Läs mer

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08 LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK Laboration 5: Regressionsanalys DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08 Syftet med den här laborationen är att du skall

Läs mer

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

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 Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Digital Aritmetik Unsigned Integers Signed Integers"

Digital Aritmetik Unsigned Integers Signed Integers Digital Aritmetik Unsigned Integers Signed Integers" Slides! Per Lindgren! EISLAB! Per.Lindgren@ltu.se! Original Slides! Ingo Sander! KTH/ICT/ES! ingo@kth.se! Talrepresentationer" Ett tal kan representeras

Läs mer

Kontinuitet och gränsvärden

Kontinuitet och gränsvärden Kapitel Kontinuitet och gränsvärden.1 Introduktion till kontinuerliga funktioner Kapitlet börjar med allmänna definitioner. Därefter utvidgar vi successivt familjen av kontinuerliga funktioner, genom specifika

Läs mer

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26 TAIU07 Matematiska beräkningar med MATLAB för MI Fredrik Berntsson, Linköpings Universitet 15 januari 2016 Sida 1 / 26 TAIU07 Kursmål och Innehåll Målet med kursen är att Ge grundläggande färdighet i att

Läs mer

Bildlagring och - komprimering

Bildlagring och - komprimering Bildlagring och - komprimering Staffan Romberger, srom@nada.kth.se Nada (numerisk analys och datalogi) Bildrepresentation Sändare (skapare) och mottagare (användare) måste vara överens om hur bildinformation

Läs mer

Tentamen MVE301 Sannolikhet, statistik och risk

Tentamen MVE301 Sannolikhet, statistik och risk Tentamen MVE301 Sannolikhet, statistik och risk 2017-08-15 kl. 8:30-13:30 Examinator: Johan Jonasson, Matematiska vetenskaper, Chalmers Telefonvakt: Olof Elias, telefon: 031-7725325 Hjälpmedel: Valfri

Läs mer

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

International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor Papegojor Yanee är fågelentusiast. Sedan hon läst om IP over Avian Carriers (IPoAC), har hon spenderat mycket tid med att träna en flock papegojor att leverera meddelanden över långa avstånd. Yanees dröm

Läs mer

TAMS79: Föreläsning 10 Markovkedjor

TAMS79: Föreläsning 10 Markovkedjor TAMS79: Föreläsning 0 Markovkedjor Johan Thim december 08 0. Markovkedjor Vi ska nu betrakta en speciell tidsdiskret diskret stokastisk process, nämligen Markovkedjan. Vi börjar med en definition Definition.

Läs mer

Grafer och grannmatriser

Grafer och grannmatriser Föreläsning 2, Linjär algebra IT VT2008 Som avslutning på kursen ska vi knyta samman linjär algebra med grafteori och sannolikhetsteori från första kursen. Resultatet blir så kallade slumpvandringar på

Läs mer

Monte Carlo-metoder. Bild från Monte Carlo

Monte Carlo-metoder. Bild från Monte Carlo Monte Carlo-metoder 0 Målen för föreläsningen På datorn Bild från Monte Carlo http://en.wikipedia.org/wiki/file:real_monte_carlo_casino.jpg 1 Begrepp En stokastisk metod ger olika resultat vid upprepning

Läs mer

-med fokus på robusthet

-med fokus på robusthet Datavetenskap Hannes Persson Redovisning av JPEG2000 -med fokus på robusthet Magisteruppsats 2001:05 Redovisning av JPEG2000 -med fokus på Robusthet Hannes Persson 2001 Hannes Persson och Karlstads universitet

Läs mer

7 MÖNSTERDETEKTERING

7 MÖNSTERDETEKTERING 7 MÖNSTERDETEKTERING 7.1 Korrelation Korrelation av två bilder f(x,y) och g(x,y) kan språkligt sett betyda att man gör just det som utsäges av (7.1). Bilderna läggs alltså på varandra med den ena bilden

Läs mer