Kodning med distorsion

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

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

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

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

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

TSBK35 Kompression av ljud och bild

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

Shannon-Fano-Elias-kodning

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

Analys/syntes-kodning

2.1 Mikromodul: stokastiska processer

Stokastiska vektorer

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

Finansiell Statistik (GN, 7,5 hp,, HT 2008) Föreläsning 3

Stokastiska processer med diskret tid

Adaptiv aritmetisk kodning

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

SF1901 Sannolikhetsteori och statistik I

Kap 2. Sannolikhetsteorins grunder

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

TSBK04 Datakompression. Övningsuppgifter

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

TSBK04 Datakompression Övningsuppgifter

Övning 1 Sannolikhetsteorins grunder

Stokastiska vektorer och multivariat normalfördelning

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

Tentamen i matematisk statistik (9MA241/9MA341, STN2) kl 08-12

FLAC (Free Lossless Audio Coding)

Exempel. Kontinuerliga stokastiska variabler. Integraler i stället för summor. Integraler i stället för summor

DIGITAL KOMMUNIKATION

TMS136. Föreläsning 4

Grundläggande matematisk statistik

Stokastiska processer med diskret tid

Föreläsning 7. Felrättande koder

Väntevärde och varians

SF1920/SF1921 Sannolikhetsteori och statistik 6,0 hp Föreläsning 6 Väntevärden Korrelation och kovarians Stora talens lag. Jörgen Säve-Söderbergh

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

SF1901: Sannolikhetslära och statistik

SF1901: Sannolikhetslära och statistik. Flera stokastiska variabler.

Spektrala Transformer

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.

Signaler och system, IT3

SF1901 Sannolikhetsteori och statistik I

SF1901: Sannolikhetslära och statistik

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

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

Stokastiska Processer och ARIMA. Patrik Zetterberg. 19 december 2012

Föreläsning 7: Punktskattningar

Föresläsningsanteckningar Sanno II

SF1901: Sannolikhetslära och statistik

MS-A0509 Grundkurs i sannolikhetskalkyl och statistik Sammanfattning, del I

MS-A0509 Grundkurs i sannolikhetskalkyl och statistik Sammanfattning, del I

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.

Föreläsning 7: Punktskattningar

Enklare matematiska uppgifter

x f (x) dx 1/8. Kan likhet gälla i sistnämnda relation. (Torgny Lindvall.) f är en kontinuerlig funktion på 1 x sådan att lim a

Demonstration av laboration 2, SF1901

Föreläsning 7: Stokastiska vektorer

Kodning av ansiktstextur med oberoende komponenter

Föreläsning 12: Repetition

Monte Carlo-metoder. Bild från Monte Carlo

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

SF1911: Statistik för bioteknik

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

Hur måttsätta osäkerheter?

Finns det över huvud taget anledning att förvänta sig något speciellt? Finns det en generell fördelning som beskriver en mätning?

Föreläsning 8 för TNIU23 Integraler och statistik

Flerdimensionella signaler och system

Tentamen MVE301 Sannolikhet, statistik och risk

Matematisk statistik 9 hp Föreläsning 6: Linjärkombinationer

Stokastiska signaler. Mediesignaler

Föreläsning 1: Bild- och ljudkodning

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

FACIT: Tentamen L9MA30, LGMA30

Ulrik Söderström 20 Jan Signaler & Signalanalys

TAMS79: Föreläsning 4 Flerdimensionella stokastiska variabler

Ulrik Söderström 19 Jan Signalanalys

Föreläsning 3. Kapitel 4, sid Sannolikhetsfördelningar

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Föreläsning 5, Matematisk statistik 7.5hp för E Linjärkombinationer

Matematisk statistik 9hp Föreläsning 7: Normalfördelning

1. (Dugga 1.1) (a) Bestäm v (3v 2u) om v = . (1p) and u =

Lösningsförslag till Problem i kapitel 7 i Mobil Radiokommunikation

Spektrala Transformer

Tentamen MVE301 Sannolikhet, statistik och risk

PROGRAMFÖRKLARING I. Statistik för modellval och prediktion. Ett exempel: vågriktning och våghöjd

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

Kompression av ljud och bild

SF1901: SANNOLIKHETSTEORI OCH MER ON VÄNTEVÄRDE OCH VARIANS. KOVARIANS OCH KORRELATION. STORA TALENS LAG. STATISTIK.

Vektorkvantisering för kodning och brusreducering

Matematisk statistik för B, K, N, BME och Kemister

4 Diskret stokastisk variabel

Grundläggande matematisk statistik

Stat. teori gk, ht 2006, JW F7 STOKASTISKA VARIABLER (NCT 5.7) Ordlista till NCT

TAMS79: Föreläsning 10 Markovkedjor

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

SF1901 Sannolikhetsteori och statistik I

Föreläsning 7: Punktskattningar

Transkript:

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 ska vara exakt densamma som originalsignalen kan vi få en lägre datatakt än om vi har distorsionsfri kodning. Typiskt så beskriver man signalen med ett mindre alfabet än vad originalsignalen har (kvantisering). I de fall man har ett kontinuerligt alfabet skulle det generellt krävas ett oändligt antal bitar för att beskriva signalen exakt. Ju fler bitar som kan användas, desto mer lik originalsignalen kommer den avkodade signalen ˆx n vara.

Distorsionsmått Vi behöver ett mått på hur mycket signalen har förstörts, den s.k. distorsionen. Det allra vanligaste är att man använder ett kvadratisk felmått och att man medelvärdesbildar över hela sekvensen D = 1 N N (x n ˆx n ) 2 n=1 Detta är medelkvadratfelet (mean square error) för sekvensen. I vissa sammanhang händer det att man istället använder absolutvärdet av felet istället för kvadraten.

SNR Ofta vill man betrakta distorsionen (bruseffekten) i förhållande till signaleffekten, det s.k. signal-brus-förhållandet (SNR) N σ 2 x = 1 N n=1 x 2 n SNR anges nästan alltid i db SNR = σ2 x D SNR = 10 log 10 σ 2 x D

PSNR Vid kodning av stillbilder och video används ofta peak-to-peak signal to noise ratio (PSNR) PSNR = 10 log 10 x 2 pp D där x pp är skillnaden mellan signalens största och minsta värde. Till exempel, om datat man kodar är en gråskalebild kvantiserad till 8 bitar innebär det att insignalen kan ta värden mellan 0 och 255. PSNR blir då PSNR = 10 log 10 255 2 D

Stokastiska signalmodeller En signal kan modelleras som en amplitudkontinuerlig stationär stokastisk process X n, med fördelningsfunktion F X (x) och täthetsfunktion f X (x). F X (x) = Pr(X x) f X (x) = d dx F X (x) f X (x) 0, x f X (x)dx = 1 Pr(a X b) = F X (b) F X (a) = b a f X (x)dx

Stokastiska signalmodeller, forts. Medelvärde Kvadratiskt medelvärde Varians m X = E{X n } = E{X 2 n } = x f X (x)dx x 2 f X (x)dx σ 2 X = E{(X n m x ) 2 } = E{X 2 n } m 2 x I de flesta fall kommer vi att använda signalmodeller med medelvärde 0, och då är variansen lika med det kvadratiska medelvärdet. Variansen (egentligen det kvadratiska medelvärdet) är ett mått på hur mycket signaleffekt det finns.

Vanliga fördelningar Likformig fördelning f X (x) = { 1 b a a x b 0 annars Medelvärde m = a+b 2, varians σ2 = (b a)2 12 Gaussisk fördelning (normalfördelning) f X (x) = 1 e (x m)2 2σ 2 2πσ Laplacefördelning f X (x) = 1 e 2 x m σ 2σ

Stokastiska signalmodeller, forts. Beroendet mellan signalens värde i två olika tidpunkter n och m ges av den tvådimensionella täthetsfunktionen f XnX m (x n, x m ). Om man kan skriva den som en produkt f X (x n ) f X (x m ) säger vi att signalen i de två tidpunkterna är oberoende. En signal där alla tidpunkter är oberoende av varandra är en minnesfri signal eller en vit signal. I de flesta fall beskriver man istället beroendet med hjälp av korrelationen E{X n X m }. Om E{X n X m } = E{X n } E{X m } säger vi att signalen i de två tidpunkterna är okorrelerade. Oberoende signaler är okorrelerade, men omvändningen är inte nödvändigtvis sann.

Minneskällor Markovkälla av ordning k f (x n x n 1 x n 2...) = f (x n x n 1... x n k ) Linjära modeller, ɛ n vitt (minnesfritt) brus. AR(N) N x n = a i x n i + ɛ n MA(M) M x n = b i ɛ n j + ɛ n j=1 ARMA(N, M) N M x n = a i x n i + b i ɛ n j + ɛ n i=1 i=1 j=1

Stokastiska signalmodeller, forts. Signalens korrelationsegenskaper uttrycks normalt med hjälp av autokorrelationsfunktionen, som för en stationär process ges av R XX (k) = E{X n X n+k } Autokorrelationsfunktionen är symmetrisk: R XX ( k) = R XX (k). Det gäller även att: R XX (k) R XX (0). För en minnesfri (vit) process är För en AR(1)-process är R XX (k) = σ 2 X δ(k) = { σ 2 X k = 0 0 annars R XX (k) = a k σ 2 X ( a < 1)

Flerdimensionella signaler Autokorrelationsfunktionen kan förstås också definieras för flerdimensionella signaler. Till exempel, för en tvådimensionell stationär stokastisk process X i,j ges autokorrelationsfunktionen av R XX (k, l) = E{X i,j X i+k,j+l } Autokorrelationsfunktionen är symmetrisk: R XX ( k, l) = R XX (k, l) Vi har även: R XX (k, l) R XX (0, 0) = E{X 2 i,j }

Stokastiska signalmodeller, forts. För en stokastisk signal X n som kodas och avkodas till ˆX n ges distorsionen av D = E{(X ˆX ) 2 } = Signaleffekten är (givet medelvärde noll) (x ˆx) 2 f X (x)dx och SNR ges som tidigare av E{X 2 } = σ 2 X (E{X }) 2 = σ 2 X SNR = 10 log 10 σ 2 x D

Teoretisk gräns Rate-distortion-funktionen R(D) för en källa ger den teoretiskt lägsta datatakt R vi kan använda för att koda källan, givet att den maximalt tillåtna distorsionen är D. Jämför med entropigränsen vid källkodning. Exempel: Vit gaussprocess med varians σ 2 R(D) = { 1 2 log σ2 D 0 < D σ 2 0 annars Dvs, om vi tillåter en distorsion som är större än processens varians, behöver vi inte överföra några bitar alls. Avkodaren kan sätta den avkodade signalen lika med medelvärdet i varje tidpunkt, vilket ger en distorsion som är lika med signalens varians. Vi ser också att R då D 0

Kvantisering Avbildning från ett kontinuerligt alfabet till ett diskret (även avbildning från ett stort diskret alfabet till ett mindre). Efter kvantisering har vi en diskret signal, som vi kan använda våra källkodningsmetoder på (huffman, aritmetisk kodning, et c.) En generell M-nivåers kvantiserare specificeras av M + 1 stycken beslutsgränser b i ; i = 0... M och M stycken rekonstruktionsnivåer (eller -punkter) y i ; i = 1... M. Kvantiseringsoperatorn Q(x) ges av Q(x) = y i om b i 1 < x b i och den rekonstruerade signalen är alltså ˆx n = Q(x n )

Kvantisering Ibland kan det vara praktiskt att se kvantisering och rekonstruktion som två separata operationer istället för en enda. Kvantisering: x j så att y j är den rekonstruktionspunkt som ligger närmast x. Rekonstruktion: ˆx = y j En sekvens av x ger alltså en sekvens av index j som till exempel kodas med en källkodare. Avkodaren avkodar indexsekvensen och avbildar sen index på de motsvarande rekonstruktionspunkterna.

Kvantisering, forts. Givet en stokastisk signalmodell blir distorsionen D = E{(X ˆX ) 2 } = = = bi M i=1 (x Q(x)) 2 f X (x)dx = b i 1 (x y i ) 2 f X (x)dx Om ingen källkodning används, dvs om vi använder ett kodord av fix längd för varje kvantiseringsnivå, så blir datatakten R = log 2 M

Likformig kvantisering Avståndet mellan två rekonstruktionspunkter är konstant y j y j 1 = kallas för kvantiserarens steglängd. Rekonstruktionspunkterna ligger i mitten av sina intervall, vilket innebär att även alla beslutsområden (eventuellt förutom ändintervallen) är lika stora b i b i 1 =

Likformig kvantisering, forts. För enkelhets skull antar vi att antalet rekonstruktionspunkter ges av M = 2 R för att förenkla beräkningarna. Följande resultat kan dock enkelt generaliseras för godtyckligt M. Antag även att kvantiseraren ligger symmetriskt kring origo. Rekonstruktionspunkten som hör till intervallet [(j 1), j ] är då y j = 2j 1 2 Det enklaste fallet får vi om fördelningen är likformig på intervallet [ A, A]: = 2A M

Likformig kvantisering, forts. Distorsion för likformig kvantisering av en likformig fördelning: D = M/2 i= M/2+1 i (i 1) (x 2i 1 ) 2 1 2 2A dx = M 1 2A 3 12 = 2 12 σ 2 X = (2A)2 12 = 2 M 2 12 SNR = σx 2 10 log 10 D = 10 log 10 M 2 = = 10 log 10 2 2R = 20 R log 10 2 6.02 R Varje extra bit vi använder i kvantiseringen ger alltså cirka 6 db högre SNR.

Likformig kvantisering, forts. För obegränsade fördelningar (t.ex. gauss) blir de två yttersta beslutsområdena oändligt stora (i beräkningarna nedan antas att M är jämn och att kvantiseraren är placerad symmetriskt kring origo). D = + + M/2 i= M/2+1 (M/2) (M/2) i (i 1) (x 2i 1 ) 2 f X (x)dx + 2 (x M 1 ) 2 f X (x)dx + 2 (x M + 1 ) 2 f X (x)dx 2 De två sista termerna brukar kallas för kvantiserarens överstyrningsdistorsion.

Likformig kvantisering, forts. För att hitta det som minimerar distorsionen måste vi lösa D = 0 vilket generellt sett är svårt. Normalt får man hitta en numerisk lösning. Om antalet kvantiseringsnivåer är stort och väljs så att överstyrningsdistorsionen är tillräckligt liten i förhållande till den totala distorsionen, så blir distorsionen approximativt D 2 12

Midrise vs midtread ˆx ˆx x x När man kodar bild- och ljuddata vill man oftast ha en kvantiserare som har en rekonstruktionsnivå i 0.

Likformig kvantisering, exempel Likformig kvantisering (midtread) av en talsignal 0.6 0.6 0.5 0.5 0.4 0.4 0.3 0.3 0.2 0.2 0.1 0.1 0 0 0.1 0.1 0.2 0.2 0.3 0.3 0.4 0 10 20 30 40 50 60 70 80 90 100 0.4 0 10 20 30 40 50 60 70 80 90 100 Originalsignal Kvantiserad med = 0.1 Uppmätt distorsion: D 0.0008517 (Jämför med 2 /12 0.0008333)

Lloyd-Max-kvantisering Hur ska beslutsgränser och rekonstruktionspunkter väljas för att distorsionen ska bli så liten som möjligt? Detta kommer naturligtvis bero av signalens utseende. För en generell kvantiserare har vi D = M i=1 bi b i 1 (x y i ) 2 f X (x)dx Vi vill hitta den kvantiserare som minimerar distorsionen D. bj b D = 0 y j = j 1 x f X (x)dx y bj j b j 1 f X (x)dx Den optimala placeringen av rekonstruktionspunkterna är alltså i sannolikhetsmassans tyngdpunkt i varje intervall.

Lloyd-Max-kvantisering, forts. D = 0 b j = y j+1 + y j b j 2 Den optimala placeringen av beslutsgränserna är mitt emellan rekonstruktionspunkterna, vilket innebär att man ska kvantisera till den närmaste rekonstruktionspunkten. Notera att dessa krav är nödvändiga men ej tillräckliga. Notera också att y j beror av b j 1 och b j och att b j beror av y j+1 och y j. Normalt är det bara möjligt att hitta slutna lösningar för ganska enkla fördelningar (t.ex. likformig fördelning eller laplacefördelning) och när man har få rekonstruktionspunkter. För övriga fördelningar får man hitta lösningen numeriskt. Ett sätt att göra detta är Lloyds algoritm.

Lloyds algoritm 1. Börja med en startuppsättning rekonstruktionspunkter y (0) i, i = 1... M. Sätt k = 0, D ( 1) = och välj en tröskel ɛ. 2. Beräkna optimala beslutsgränser b (k) j 3. Beräkna distorsionen D (k) = M i=1 b (k) i b (k) i 1 4. Om D (k 1) D (k) < ɛ sluta, annars fortsätt = y (k) j+1 + y (k) j 2 (x y (k) i ) 2 f (x)dx 5. k = k + 1. Beräkna nya optimala rekonstruktionspunkter y (k) j = b (k 1) j b (k 1) j 1 b (k 1) j b (k 1) j 1 6. Repetera från 2 x f (x)dx f (x)dx

Exempel 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0-4 -3-2 -1 0 1 2 3 4 Lloyd-Max-kvantiserare för en gaussisk fördelning. R = 3, d.v.s. M = 2 3 = 8.

Kvantisering med kompander Kompressorfunktion: c(x) Expanderfunktion: c 1 (x) Kvantisera c(x) istället för x. Kvantiseringen är likformig. Mottagaren applicerar expanderfunktionen på mottagna data. c(x) väljs så att kvantiseringen blir finare för små värden på x. Exempel på kompander: µ-law ln(1 + µ x x c(x) = x max ) max sgn(x) ln(1 + µ) c 1 (x) = x x max ((1 + µ) xmax 1) sgn(x) µ Används i det amerikanska telenätet för kodning av talsignaler med µ = 255. För det europeiska telenätet finns en motsvarande standard specificerad som kallas A-law.

Kvantisering med källkodning Sannolikheten P(j) att hamna i intervall j är P(j) = bj b j 1 f X (x)dx Typiskt så är dessa sannolikheter olika för olika intervall. Vi skulle alltså kunna få en lägre datatakt än log M genom någon form av källkodning. Att hitta en optimal kvantiserare givet en tillåten datatakt R efter källkodning är ett svårt problem. Det går dock att visa att för tillräckligt stora R (fin kvantisering) så är den optimala kvantiseringen en likformig kvantisering. Om vi ändå ska göra källkodning räcker det alltså med den enklaste formen av kvantisering.

Fin kvantisering Om man har fin kvantisering, dvs om antalet kvantiseringsnivåer är stort, så ges distorsionen approximativt av D c σ 2 X 2 2R där σx 2 är signalens varians, R är datatakten och c är en konstant som beror av typen av kvantisering och signalens fördelning. Gaussfördelning, Lloyd-Max-kvantisering: c = π 3 2 Gaussfördelning, likformig kvantisering, perfekt entropikodning (R = H( ˆX )): c = πe 6

Fin kvantisering För fin kvantisering har vi approximationerna D 1 12 2 (x)f (x)dx M 1 (x) dx där (x) är en funktion som beskriver storleken av kvantiseringsintervallet vid x och M är det resulterande antalet rekonstruktionspunkter. För fin Lloyd-Max-kvantisering ska man välja (x) = k (f (x)) 1 3 och den resulterande datatakten blir R = log 2 M.

Approximation vs riktiga värden 25 20 15 SNR [db] 10 5 0 Real Approximation -5 0 0.5 1 1.5 2 2.5 3 3.5 4 Rate [bits/sample] Likformig kvantisering av gaussisk signal, följt av perfekt källkodning (R = H( ˆX )). Riktiga värden jämfört med approximationen D πe 6 σ2 X 2 2R.

Approximation vs riktiga värden 35 30 25 SNR [db] 20 15 10 5 Real Approximation 0 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 Rate [bits/sample] Lloyd-Max-kvantisering av gaussisk signal. Riktiga värden jämfört med approximationen D π 3 2 σ 2 X 2 2R.

Exempel Musiken i heyhey.wav kodas med likformig kvantisering (midtread), följt av huffmankodning. Datatakten varieras genom att kvantiserarens steglängd varieras. Ingen begränsning av antalet nivåer görs. Som jämförelse har även den kvantiserade signalens entropi mätts. 40 35 Huffman entropy 30 25 SNR [db] 20 15 10 5 0 0 1 2 3 4 5 6 R [bits/sample]

Vektorkvantisering Närliggande sampel i en signal är oftast starkt korrelerade. Exempel: 4000 sampel från en talsignal, plotta [x i, x i+1 ] 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1

Vektorkvantisering, forts. För att utnyttja beroendet mellan sampel kan vi använda någon form av källkodning som tar hänsyn till flera sampel i taget, t.ex. utvidgad huffmankodning, eller aritmetisk kodning där intervalluppdelningen är beroende av föregående symbol(er). Man kan även utnyttja korrelationen mellan sampel direkt vid kvantiseringen, genom att kvantisera flera sampel i taget, vektorkvantisering. Betrakta L sampel från källan som en L-dimensionell vektor. x 1 x 2 x =. x L

Vektorkvantisering, forts. Kvantiseraren bestäms av sina rekonstruktionsvektorer y i och beslutsområden V i Exempel: I två dimensioner kan det se ut som 4 3 2 1 0 0 1 2 3 4

Vektorkvantisering, forts. Mängden av rekonstruktionspunkter {y i }, i = 1... M brukar kallas för kodbok. Distorsion D = 1 L M i=1 V i x y i 2 f (x) dx Jämför med distorsionen vid skalär kvantisering D = M i=1 bi b i 1 (x y i ) 2 f (x)dx En skalär kvantiserare är en endimensionell vektorkvantiserare.

Datatakt För att koda de M nivåerna med en fixlängds kod krävs log M bitar, och eftersom vi kodar L sampel i taget, blir datatakten R = log M L [bitar/sampel] Alternativt, givet dimension L och datatakt R M = 2 RL Man kan förstås även använda någon källkodningsmetod även vid vektorkvantisering, men det görs oftast inte.

Minnes- och tidsåtgång Både på kodar- och avkodarsidan måste vi lagra kodboken. Den kan även behöva överföras som sidoinformation. Om vi använder L dimensioner, har en datatakt på R bitar per sampel och de enskilda elementen i vektorerna lagras med b bitar, så krävs det alltså 2 RL L b bitar för att lagra hela kodboken. Minnesåtgången växer alltså väldigt snabbt när vi går upp i dimension. Om det inte finns någon struktur i kodboken måste vi jämföra vektorn som ska kvantiseras med alla vektorer i kodboken för att hitta den närmaste. Detta kommer att ta mycket tid för stora dimensioner L.

Lloyd-Max i flera dimensioner Vi vill hitta en kvantiserare som minimerar distorsionen Nödvändiga villkoren för minimal distorsion: Gränserna mellan beslutsområdena ska ligga mitt mellan rekonstruktionspunkterna, dvs vi ska kvantisera till den rekonstruktionspunkt som ligger närmast. Rekonstruktionspunkterna ska ligga i beslutsområdenas tyngdpunkter, de s.k. centroiderna V y i = i x f (x)dx V i f (x)dx Jämför med Lloyd-Max-kvantisering i en dimension

Lloyds generaliserade algoritm 1. Börja med en startkodbok y (0) i, i = 1... M. Sätt k = 0, D ( 1) = och välj en tröskel ɛ. 2. Beräkna optimala beslutsområden 3. Beräkna distorsionen V (k) i = {x : x y i 2 < x y j 2 j i} D (k) = M i=1 V (k) i x y (k) i 2 f (x)dx 4. Om D (k 1) D (k) < ɛ sluta, annars fortsätt 5. k = k + 1. Beräkna nya optimala rekonstruktionspunkter som är centroiderna i varje V (k 1) i. 6. Repetera från 2

Träningsdata Oftast vet man inte källans täthetsfunktion f (x). Man skulle då kunna skatta täthetsfunktionen från en lång sekvens från källan (träningsdata). Istället för att göra det kan man modifera Lloyds algoritm, så att man använder träningsdatat direkt i algoritmen Algoritmen brukar då kallas LBG-algoritmen eller K-means.

LBG-algoritmen 1. Börja med en startkodbok y (0) i, i = 1... M och en uppsättning träningsvektorer x n, n = 1... N. Sätt k = 0, D ( 1) = och välj en tröskel ɛ. 2. Beräkna optimala beslutsområden V (k) i = {x n : x n y i 2 < x n y j 2 j i} 3. Beräkna distorsionen D (k) = M i=1 x n V (k) i 4. Om D (k 1) D (k) < ɛ sluta, annars fortsätt x n y (k) i 2 5. k = k + 1. Beräkna nya optimala rekonstruktionspunkter som är medelvärdet av vektorerna i varje V (k 1) i. 6. Repetera från 2

Hur välja startkodboken i LBG? Beroende på hur startkodboken väljs kan man få olika resulterande kodböcker. Några varianter: Välj M stycken godtyckliga vektorer. Välj M stycken vektorer slumpmässigt ur träningsmängden. Generera flera startkodböcker slumpmässigt och välj den som ger lägst distorsion. PNN (Pairwise Nearest Neighbour). Starta med att varje träningsvektor är en rekonstruktionspunkt. Slå i varje steg ihop de två vektorer som är närmast varandra och ersätt dem med medelvärdet av de två vektorerna. Repetera tills bara M vektorer återstår.

Variant av LBG: Splitting 1. Börja med bara en rekonstruktionspunkt som är medelvärdet av all träningsvektorer. 2. Skapa ny kodbok genom att till varje vektor i kodboken addera en liten förskjutningsvektor δ. 3. Optimera kodboken med LBG-algoritmen. 4. Om vi har M vektorer i kodboken är vi klara, annars går vi till steg 2.

Tomma områden Vad gör man om något område blir tomt under ett steg i LBG-algoritmen? Ersätt den rekonstruktionsvektor som har ett tomt beslutsområde med en ny vektor. Några varianter: 1. Välj den nya rekonstruktionspunkten slumpmässigt från det område som har flest träningsdata. 2. Välj den nya rekonstruktionspunkten slumpmässigt från det område som har störst distorsion. 3. Optimera en tvåpunkters kvantiserare i det område som har störst distorsion. Metod 3 är mer beräkningsintensiv, men har inte visat sig ge några speciella fördelar gentemot metod 1 eller 2.

För- och nackdelar För- och nackdelar med vektorkvantisering jämfört med skalär kvantisering. + Kan utnyttja eventuellt minne i källan + Distorsionen vid en given datatakt kommer alltid att minska när vi ökar antalet dimensioner i kvantiseringen, även för minnesfria källor. Både det minnesutrymme som krävs för att lagra kodboken och den tid det tar att genomföra kvantiseringen växer exponentiellt med antalet dimensioner. Eftersom det inte finns någon struktur i kodboken, så måste vi vid kvantiseringen jämföra vår vektor med alla rekonstruktionspunkter för att hitta den närmaste.

LBG, exempel Vi optimerar en skalär kvantiserare med datatakten 2 bitar/sampel (dvs 2 2 = 4 nivåer) för vår talsignal. Om vi betraktar denna kvantiserare i två dimensioner, där vi kvantiserar varje dimension separat, så ser beslutsgränser och rekonstruktionspunkter ut som nedan 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 SNR är ungefär 8.6 db.

LBG, exempel Om vi istället optimerar en tvådimensionell vektorkvantiserare för vår talsignal med datatakten 2 bitar/sampel (dvs 2 2 2 = 16 vektorer i kodboken), så ser beslutsområden och rekonstruktionspunkter ut som nedan 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 SNR är ungefär 14.4 db.

LBG, exempel Vi vill koda denna bild (256 256 bildpunkter, 8 bitar/bildpunkt). Träningsdata: 10000 bildpunkter som 5000 2-dimensionella vektorer Önskad datatakt är 2 bitar/bildpunkt, vilket ger att att vi ska ha M = 2 RL = 2 2 2 = 16 rekonstruktionspunkter.

LBG, exempel Figurerna visar träningsdata i grönt, samt rekonstruktionspunkter med tillhörande beslutsområden. 250 250 250 200 200 200 150 150 150 100 100 100 50 50 50 0 0 50 100 150 200 250 0 0 50 100 150 200 250 0 0 50 100 150 200 250 Startkodbok 1 iteration 10 iterationer

LBG, exempel Kodas bilden med den erhållna kvantiseraren blir resultatet Original Kvantiserad Det resulterande signal-brusförhållandet är 19.25 db. Sidoinformationen (kodboken) kräver 16 2 8 bitar.

Tree-Structured Vector Quantization Placera rekonstruktionsvektorerna som löv i ett binärt träd. I varje inre nod i trädet lagrar vi två testvektorer. När man ska kvantisera en vektor, börjar man med att jämföra den med de två testvektorerna i trädets rot. Beroende på vilken testvektor som är närmast så går vi ner i den ena eller andra grenen. Fortsätt så i varje nod tills vi når ett löv, dvs en rekonstruktionspunkt. Fördelarna är att vi bara behöver göra 2 log 2 M istället för M jämförelser. Nackdelarna är att vi inte kan garantera att vi väljer den rekonstruktionspunkt som ligger närmast, dvs distorsionen blir lite större än vid fullständig sökning. Minnesåtgången ökar också eftersom vi även måste lagra testvektorerna. En TSVQ kan designas med en variant av splitting-algoritmen

Gain-shape VQ En vektor x kan beskrivas som x = x x x Vi konstruerar en skalär kvantiserare för längden ( gain ) av vektorn x och en vektorkvantiserare för den normerade vektorn ( shape ) Lägre komplexitet jämfört med en full vektorkvantiserare, men distorsionen kan bli lite högre. x x.

Multistage VQ Istället för att ha en enda L-dimensionell kvantiserare med datatakten R bitar/sampel, så har man k stycken L-dimensionella kvantiserare med datatakterna R 1, R 2,..., R k, så att R = R 1 + R 2 +... + R k. Man kvantiserar först x med kvantiserare 1. Kvantiseringsfelet x 1 = x Q 1 (x) kvantiseras sedan med kvantiserare 2. Kvantiseringsfelet x 2 = x 1 Q 2 (x 1 ) kvantiseras sedan med kvantiserare 3, och så vidare. Man får en kvantiserare med lägre komplexitet (mindre kodbok och färre jämförelser) till priset av att distorsionen blir högre.

Gitterkvantisering (Lattice VQ) Generalisering av likformig kvantisering till flera dimensioner. Rekonstruktionspunkterna placeras ut i den L-dimensionella rymden i ett regelbundet mönster. Komplexiteten låg, eftersom man inte behöver lagra alla rekonstruktionspunkter utan bara en beskrivning av hur mönstret ser ut. Snabba metoder finns för att hitta den närmaste rekonstruktionspunkten, så man behöver inte heller göra en fullständig sökning när man kvantiserar. Ger bättre prestanda än en skalär kvantiserare, men sämre än en generell vektorkvantiserare.

Gitterkvantisering, forts. Exempel på gitterkvantiserare i två dimensioner: Hexagonalt gitter. 4 3.5 3 2.5 2 1.5 1 0.5 0 0 0.5 1 1.5 2 2.5 3 3.5 4 Vid fin kvantisering ger det hexagonala gittret en vinst på cirka 0.17 db, jämfört med likformig skalär kvantisering. Det bästa kända gittret är ett 24-dimensionellt gitter som ger en vinst på 1.03 db.