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

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

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

Kodning med distorsion

Föreläsning 7: Bild- och videokodning

TSBK35 Kompression av ljud och bild

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.

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

FLAC (Free Lossless Audio Coding)

Innehνall 1 Introduktion Processbeskrivning Inloggning och uppstart

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.

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

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

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

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

Uppgift 1.8p (a) Ange tre orsaker hur felaktigheter i en databas kan uppstνa. Till varje av dem, ange en lämplig metod som används som νatgärd mot des

Burrows-Wheelers transform

SF1624 Algebra och geometri Tentamen med lösningsförslag onsdag, 11 januari 2017

Adaptiv aritmetisk kodning

Originalbild Dilation Erosion Slutning Öppning R esultat av morfolo giska op er ationer til l upp gift 6(b). 2

Dilation Erosion. Slutning. Öppning

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

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

DIGITAL KOMMUNIKATION

Spektrala transformer Laboration: JPEG-kodning

Statisk olinjäritet. Linjärt dynamiskt system

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

Shannon-Fano-Elias-kodning

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Kompression av ljud och bild

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

Föreläsning 7. Felrättande koder

Kodning av ansiktstextur med oberoende komponenter

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.

DT1130 Spektrala transformer Tentamen

Självkoll: Ser du att de två uttrycken är ekvivalenta?

Analys/syntes-kodning

1 Linjära ekvationssystem. 2 Vektorer

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

MVE022 Urval av bevis (på svenska)

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Q, Sin, Xin=0 Q, S, X S, X. Volym V

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Stokastiska vektorer

3 1 = t 2 2 = ( 1) ( 2) 1 2 = A(t) = t 1 10 t

DT1130 Spektrala transformer Tentamen

SF1624 Algebra och geometri Tentamen Onsdagen 29 oktober, 2014

SKRIVNING I VEKTORGEOMETRI

Spektrala Transformer

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

Linjära ekvationssystem

Lösningsförslag till övningsuppgifter, del V

LINKÖPING LINKOPING LINKOPING

Detektion av SNP i DNA-sekvenser

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna

Föreläsning 1: Bild- och ljudkodning

Spektrala Transformer

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna 15-18, 30/11-12/

Föreläsning 5. Approximationsteori

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

Q, Sin, Xin=0 Q, S, X S, X. Volym V

1 Grundläggande kalkyler med vektorer och matriser

Determinanter, egenvectorer, egenvärden.

LINJÄRA AVBILDNINGAR

Linjära ekvationssystem

SF1624 Algebra och geometri

Dagens program. Linjära ekvationssystem och matriser

TSBK04 Datakompression. Övningsuppgifter

1 Duala problem vid linjär optimering

NADA, KTH, Henrik Eriksson och Erik Forslin 2D1343 Datalogi för E Ändrad: J 101 Belysning av klot Ett klot med centrum i origo och med radien

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

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

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

Tentamen i Beräkningsvetenskap II, 5.0 hp, Del A

ffl Utdrag ur kap 2 ur R. O. Duda and P. E. Hart, Pattern Classification", ffl Utdrag ur kap 8 ur R. A. Johnson and D. W. Wichern, Applied Multi

e 3 e 2 e 1 Kapitel 3 Vektorer i planet och i rummet precis ett sätt skrivas v = x 1 e 1 + x 2 e 2

TMV206: Linjär algebra

Konvergens för iterativa metoder

Spektrala Transformer

Spektrala Transformer

Enligt Hunds första regel är spin maximal. Med tvνa elektroner i fem orbitaler tillνater

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

Vi definierar addition av två vektorer och multiplikation med en reell skalär (tal) λλ enligt nedan

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

Grafer och grannmatriser

1 De fyra fundamentala underrummen till en matris

SF1624 Algebra och geometri Bedömningskriterier till tentamen Tisdagen den 15 december, 2009

TSBK04 Datakompression Övningsuppgifter

. b. x + 2 y 3 z = 1 3 x y + 2 z = a x 5 y + 8 z = 1 lösning?

Algoritmer, datastrukturer och komplexitet

Vinjetter TDDC91 Datastrukturer och algoritmer

kvoten mellan två på varandra följande tal i en talföljd är konstant alltid lika stor.

Signal- och bildbehandling TSEA70

SF1624 Algebra och geometri Lösningsförslag till tentamen Fredagen den 23 oktober, 2009 DEL A

SF1624 Algebra och geometri Lösningsförslag till tentamen Tisdagen den 15 december, 2009 DEL A

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Transkript:

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. 2. Kvantisera trasformkomponenterna. 3. Använd nνagon form av kodning pνa de kvantiserade transformkomponenterna (fixlängdskodning, huffman, aritmetisk kodning et.c.) Linjära transformer lock av N sampel frνan signalen fxng N n=0 transformeras till ett block f ng N n=0 n = N X a n;i x i Medan alla komponenter i x har samma karakteristik (varians et.c.) har komponenterna i oftast olika karakteristik beroende pνa positionen n. Inverstransformen, som νaterskapar fxng frνan f ng ges av xn = N X b n;i i Matrisbeskrivning Transformen och inverstransformen kan skrivas pνa matrisform som där μx = 0 @ μ = A μx ; μx = μ x 0 x. x N 0 A ; μ = @ 0. N A och matriselementen pνa position (i; j) ges av [A] i;j = a i;j ; [] i;j = b i;j Matriserna A och är varandras inverser, dvs = A. Vi intresserar oss bara för ortonormala transformer, dvs transformer där = A = A T. Ortonormala transformer är energibevarande, dvs summan av kvadraterna pνa den transformerade signalen är lika med summan av kvadraterna pνa originalsignalen N X 2 i = μ T μ = (Aμx) T Aμx = μx T A T Aμx = μx T μx = N X x 2 i Vi är intresserade av transformer som koncentrerar signalenergin i sνa fνa komponenter som möjligt. Ett sätt att mäta hur bra en viss transform är transformkodningsvinsten (transform coding gain). G T = N P N ff2 i ( Q N ff2 i )=N

Transformen som basbyte Transformen kan ses som att vi skriver signalen i en annan bas, dvs som en linjärkombination av nya basvektorer μx = A0 T μ a = 00 a N ;0 @..... = 0 0 @ a 0;N a N ;N a 00. a 0;N 0 A 0 A + :::+ N @ @ 0. N A a N ;0. a N ;N Raderna i transformmatrisen (kolumnerna i inverstransformmatrisen) kan ses som basvektorer i en ny bas. A Nνagra önskvärda egenskaper hos transformen ffl Den ska koncentrera signalenergin till sνa fνa komponenter som möjligt. ffl Den ska helst dekorrelera transformkomponenterna, dvs ta bort beroendet (minnet) mellan transformkomponenterna. ffl Den ska vara robust mot förändringar i källans statistik. ffl Den ska vara enkel att beräkna. Alla dessa egenskaper kan inte fνas i en och samma transform. Karhunen-Lo eve-transformen (KLT) KLT är den transform som helt dekorrelerar transformkomponenterna och ger maximal energikoncentrering. Korrelationsmatrisen R för en signal är en matris där element (i; j) ges av autokorrelationsfunktionen enligt [R] ij = EfXnX n+ji jj g = Rxx(ji jj) asvektorerna (raderna) i KLT-matrisen ges av de normerade egenvektorerna till R. Varianserna för transformkomponenterna kommer att vara lika med motsvarande egenvärden. Nackdelen med KLT är att den är signalberoende, och man mνaste därför skicka över transformmatrisen som sidoinformation. Man mνaste dessutom räkna ut nya basvektorer när källans statistik ändras. Diskret cosinustransform (DT) Transformmatrisen ges av 8 q N >< ; i = 0 [] ij = q >: 2N cos (2j+)iß 2N ; i = ;:::;N DT är nära besläktad med den diskreta fouriertransformen. Det finns snabba sätt att beräkna en DT, pνa samma sätt som det finns snabba fouriertransformer (FFT). DT har nästan samma energikoncentreringsegenskaper som KLT för källor med hög korrelation mellan närliggande sampel. DT är den i särklass mest använda transformen inom bildkodning, t.ex. inom standarderna JPEG och MPEG.

Diskret Walsh-Hadamard-transform (DWHT) En hadamardmatris H N ges av där H =. ψ! HN=2 H H N = N=2 H N=2 H N=2 av storlek N = 2 k Transformmatrisen i DWHT är en hadamardmatris, normerad med en faktor = p N. Eftersom transformmatrisen, bortsett frνan normeringsfaktorn, bara innehνaller ± är transformen väldigt enkel att räkna ut. Dock ger DWHT inte särskilt bra energikoncentrering, och eftersom basfunktionerna är väldigt kantiga" blir eventuella kvantiseringsfel väldigt synliga. Tvνadimensionella signaler I en tvνadimensionell signal (t.ex. en bild) tar man ut block av storlek N N som man transformerar. Generellt kan man se detta block som en vektor med N 2 sampel och använda en transformmatris av storlek N 2 N 2. Oftast använder man en separabel transform. Man betraktar dνa blocket som en matris X istället för en vektor. Man applicerar en endimensionell transform först pνa raderna i X och sedan pνa kolumnerna (eller tvärtom, ordningen spelar ingen roll). Resultatet är en matris av transformkomponenter = AXA T Inverstransformen ges av X = A T A Tvνadimensionella signaler, forts. asmatriser för en 8 8 DT Man kan se det som att vi skriver blocket X som en linjärkombination av nya basmatriser ff ij som ges av ff ij = μa T i μa j där μa i och μa j är den i:te respektive j:te raden i A. X = N X N X [ ] ij ff ij j=0 En separabel transform kan alltid skrivas om som en generell transform som appliceras pνa en vektor med N 2 element, men däremot gäller inte omvändningen.

Distorsion Val av blockstorlek N Stort N ger bättre koncentrering av energin, men transformen blir mer komplicerad att räkna ut. Dessutom blir det svνarare att anpassa kodaren om källan har olika källstatistik i olika delar (t.ex. för- och bakgrund i en bild, eller olika partier i en musiksignal.) För ortonormala transformer kommer distorsionen i transformplanet vara den samma som distorsionen i signalplanet. Antag att vi kvantiserar (och rekonstruerar) transformvektorn till ^ och inverstransformeras till det rekonstruerade blocket ^x. Distorsionen blir D = jjμx ^xjj 2 = (μx ^x) T (μx ^x) = (μ ^ ) T AA T (μ ^ ) = (μ ^ ) T (μ ^ ) = jj μ ^ jj 2 Vill vi minimera distorsionen kan vi alltsνa göra det direkt i transformplanet. Kvantisering och kodning av transformkomponenter, zonkodning. Transformkomponent k kvantiseras och kodas med R k bitar, med en resulterande distorsion D k. Distorsionen ges approximativt av D k = c k ff 2 k 2 2R k där c k är en konstant som beror av fördelningen och typen av kodning och kvantisering. Vi vill hitta den bittilldelning som minimerar den totala distorsionen D = N X k=0 D k = N X c k ffk 2 2 2R k k=0 under bivillkoret att medelantalet bitar per sampel är R = N N X R k Vi antar för enkelhets skull att alla transformkomponenter har samma typ av fördelning och att vi använder samma typ av kvantisering och kodning. Dνa är alla c k lika. Lagrangeoptimering ger att (se Sayood för detaljer) R k = R + 2 log ff k 2 2 ( Q N ff2 k )=N Notera att detta kan ge att vissa komponenter tilldelas ett negativt antal bitar. I sνadana fall sätts antal bitar till 0, och vi minskar bitantalet pνa övriga komponenter sνa att medeldatatakten fortfarande är R. För vissa typer av kvantisering och kodning (Lloyd- Max-kvantisering, kvantisering med efterföljande fixlängdskodning) har vi även bivillkoret att bitantalet mνaste vara ett heltal.

Exempel, koda hey04.wav frνan projektlaborationen. En annan variant är att iterativt dela ut en bit i taget till den komponent som har högst distorsion (och beräkna nya distorsioner) tills vi nνar den önskade medeldatatakten. Dessa typer av bittilldelningar kallas för zonkodning. Antalet bitar som varje transformkomponent är fixt för alla block. Komponenter med hög varians tilldelas ett större antal bitar, komponenter med liten varians kanske inte kodas alls. Zonkodning är enkel, men fungerar mindre bra om statistiken varierar väldigt mycket mellan blocken. Signalen har en varians ff 2 ß 0:04379 Om vi konstruerar en 4-bitars skalär kvantiserare för signalen med hjälp av LG-algoritmen fνar vi en distorsion D ß 0:000356 och ett SNR pνa 20.9 d. Vi kodar nu signalen med en 4-punkters DT. Varianserna för de fyra transformkomponenterna är ff 2 ß 0:705 ff2 2 ß 0:00365 ff3 2 ß 0:00383 ff4 2 ß 0:000226 Kontroll: medelvärdet av varianserna ska vara lika med signalens varians. Exempel, forts. Vi vill fortfarande ha en medeldatatakt pνa R = 4 bitar/sampel. Vi använder formeln R k = R + 2 log ff k 2 2 ( Q N ff2 k )=N för att bestämma hur mνanga bitar varje komponent ska kvantiseras med. R ß 6:89 ß 7 R 2 ß 4:0 ß 4 R 3 ß 3:42 ß 3 R 4 ß :67 ß 2 Vi konstruerar Lloyd-Max-kvantiserare för varje transformkomponent med givet antal bitar och fνar resulterande distorsioner D ß 0:0000640 D 2 ß 0:00007375 D 3 ß 0:000250 D 4 ß 0:00003283 Exempel, forts. Medeldistorsionen blir D = 4X D 4 i ß 0:0000739 i= Vilket ger ett SNR pνa 27.7 d. Genom att använda transformen har vi alltsνa tjänat 6.8 d.

Zigzag-scanning för 8 8 transform. Dnivνan i det övre vänstra hörnet kodas normalt separat. Tröskelkodning För varje transformblock talar man om vilka transformkomponenter vars magnitud ligger över ett visst tröskelvärde. ara dessa komponenter kvantiseras och kodas, övriga komponenter sätts till 0. Vilka komponenter som ligger över tröskeln skickas som sidoinformation för varje block. För tvνadimensionella transformer är zigzagscanning med skurlängdskodning av nollor ett effektivt sätt att koda vilka komponenter som ligger över tröskeln. JPEG ISO-standard (990) för kodning av bilder. Använder DT pνa block av storlek 8 8 bildpunkter. Kombinerad likformig kvantisering och tröskelkodning. Steglängden kan väljas fritt för varje transformkomponent. Typiskt kvantiseras högfrekvenskomponenterna mycket hνardare än lνagfrekvenskomponenterna. Källkodningen är antingen huffmankodning eller aritmetiskt kodning. Eftersom den aritmetiska kodaren som används skyddas av ett flertal patent som företag kräver licenspengar för, sνa används i praktiken bara huffmankodning. JPEG, forts. Kvaliteten styrs av hur man väljer steglängderna i de 64 kvantiserarna. Eftersom de kan väljas fritt och oberoende av varandra kan det vara svνart att hitta det bästa valet av steglängder. För att förenkla lνater de flesta JPEG-kodare därför användaren bara välja en kvalitetsparameter, som sen används för att skala om en standardmatris av kvantiseringssteg.

Kodning av D-nivνan. Man kodar skillnanden d frνan D-nivνan i föregνaende block. Huffmankodning sker inte direkt pνa skillnadsvärdena. Istället bildar man en kategori k = dlog(jdj + )e Man beräknar statistik och bygger ett huffmanträd för signalen k. Kodordet för en skillnad d bestνar av huffmankodordet för k plus k stycken extra bitar för att exakt specificera d. k d extra bitar 0 0 ; 0; 2 3; 2; 2; 3 00; 0; 0; 3 7;:::; 4; 4;:::; 7 000;:::; 0; 00;:::;... Kodning av övriga transformkomponenter Komponenterna ordnas i zigzag-ordning. Alla skurar av nollor ersätts med längden av skuren (min 0, max 5). Ett nytt symbolalfabet bildas som bestνar av en skurlängd och en nollskild komponent. Pνa motsvarande sätt som för D-nivνan bildar man kategorin för varje nollskild komponent l som k = dlog(jlj + )e Man beräknar statistik för paren (skurlängd, kategori) och bygger en huffmankod för detta alfabet. Pνa samma sätt som för D-nivνan följs huffmankodordet av k stycken bitar som talar om exakt vilket värde den nollskilda komponenten har. I huffmankoden ingνar även tvνa speciella symboler, nämligen EO (End Of lock) som används när de resterande komponenter i ett block alla är 0, och ZRL (Zero Run Length) som används om man mνaste koda en skur av nollor som är längre än 5. ZRL betyder 6 nollor, sνa till exempel kodas en skur av 9 nollor följt av komponenten 5 som (ZRL)(3,5). Exempel, ett block frνan Lenna-bilden 86 85 75 37 90 8 89 98 83 76 24 88 92 00 03 2 67 83 83 97 07 5 2 95 80 83 85 99 03 2 74 92 98 94 96 99 03 5 76 85 90 88 89 88 07 02 77 76 77 82 82 83 93 88 72 72 65 57 62 63 68 67 Efter DT (avrundat till heltal) 794 40 63 2 0 2 5 5 99 50 4 2 5 3 6 93 4 3 0 0 2 3 38 20 27 45 4 3 2 5 3 23 28 2 2 6 3 2 6 3 2 5 5 0 4 7 3 3 7 7 3 3 5 5 2 3

Efter kvantisering med steglängd 30 för alla komponenter 26 2 0 0 0 0 0 5 3 2 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ordna i zizgzagordning (D-komponenten borttagen) 5 0 3 2 0 2 3-0 0 0 0 0 0-0 0 0 0 - - 0 0 0 0 0 0 0-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Koda som par (skurlängd, nollskild komponent) (0,) (0,5) (,3) (0,2) (,2) (0,3) (0,) (0,- ) (0,) (6,-) (4,-) (0,-) (7,-) (ZRL) (2,) (EO) Koda nollskild komponent som kategori plus extra bitar (0,) (0,3) 0 (,2) (0,2) 0 (,2) 0 (0,2) (0,) (0,) 0 (0,) (6,) 0 (4,) 0 (0,) 0 (7,) 0 (ZRL) (2,) (EO) Gör samma sak för alla block i bilden, samla statistik över fördelningen för paren (skurlängd, kategori) och konstruera en huffmankod för dem. Avkodaren νaterskapar följande transformblock 780 30 60 0 0 0 0 0 50 90 60 0 0 0 0 0 0 90 0 0 0 0 0 0 30 30 30 30 0 0 0 0 30 0 30 30 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 vilket inverstransformeras till följande block 83 73 6 32 9 77 86 9 82 65 20 9 98 02 02 8 53 20 88 76 87 0 25 27 95 82 85 87 82 97 9 20 63 86 92 90 96 93 96 7 8 87 89 90 93 95 97 03 86 70 75 82 75 84 92 78 57 64 62 62 7 68 60 64