prediktiv kodning - icg.isy.liu.se · ra = p d ar r = 2 6 6 6 4 r xx(0) r ... givet en l ang...

29
Prediktiv kodning arliggande sampel i en signal ¨ ar oftast starkt korrelerade med varandra, det kan d¨ arf¨ or vara en bra ide att f¨ ors¨ oka utnyttja denna korrelation (minnet) innan kvantiseringen f¨ or att f˚ a en effektivare kodning. En generell prediktiv kodare utnyttjar signalens utseende N steg tillbaka i tiden f¨ or kodningen, dvs vi kodar efter den betingade f¨ ordelningen f (x n |x n-1 x n-2 ... x n-N ) Detta ¨ ar en markovmodell av ordning N . En kontinuerlig markovmodell ¨ ar komplicerad och ¨ ar ofta sv˚ ar att estimera f¨ or en given signal. Ist¨ allet ¨ ar det enklare att anv¨ anda en AR-modell f¨ or k¨ allan, och d˚ a f˚ ar vi en linj¨ ar prediktor.

Upload: hadat

Post on 13-May-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Prediktiv kodning

Narliggande sampel i en signal ar oftast starkt korrelerade med varandra,det kan darfor vara en bra ide att forsoka utnyttja denna korrelation(minnet) innan kvantiseringen for att fa en effektivare kodning.

En generell prediktiv kodare utnyttjar signalens utseende N steg tillbaka itiden for kodningen, dvs vi kodar efter den betingade fordelningen

f (xn|xn−1xn−2 . . . xn−N)

Detta ar en markovmodell av ordning N. En kontinuerlig markovmodellar komplicerad och ar ofta svar att estimera for en given signal. Istallet ardet enklare att anvanda en AR-modell for kallan, och da far vi en linjarprediktor.

Page 2: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Linjar prediktion

Ide: Vi gissar (predikterar) signalens varde i tidpunkten n som enlinjarkombination av de N senaste vardena.

pn = a1xn−1 + a2xn−2 + . . .+ aNxn−N =

=N∑i=1

aixn−i

Skillnaden mellan det riktiga vardet och det predikterade vardet,prediktionsfelet, dn = xn − pn kvantiseras och skickas till mottagaren.Mottagaren rekonstruerar dn, beraknar pn och kan sen aterskapa xn.

Detta fungerar inte i praktiken!

Problemet ar att mottagaren bara kan aterskapa en distorderad version dn

av prediktionsfelet och darfor bara en distorderad version xn av signalen.

Page 3: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Linjar prediktion

For att den prediktiva kodaren ska fungera, maste kodardelen gorasamma berakningar som avkodardelen kan gora.Prediktionen maste goras fran den rekonstruerade signalen xn istallet forfran originalsignalen.

pn = a1xn−1 + a2xn−2 + . . .+ aN xn−N =

=N∑i=1

ai xn−i

Prediktionsfelet dn kvantiseras och skickas. Bade kodaren och avkodarenaterskapar dn och xn = pn + dn.

Page 4: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Prediktiv kodare och avkodare

-����- Q -

?�����P

6

-

xn +

−+

+

dn dn

pn

xn

-����-

�P

6

dn +

+

xn

pn

Prediktiv kodare Prediktiv avkodare

Page 5: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Optimering av prediktorn

Hur ska man valja prediktorkoefficienterna ai?Givet en datatakt R sa vill vi minimera distorsionen

D = E{(xn − xn)2} = E{(dn − dn)2}

Kvantiseringen gor att det ar svart att berakna optimala ai exakt. Om viantar fin kvantisering, dvs att antalet kvantiseringsnivaer ar stort, kan vigora approximationen

xn ≈ xn

dvs vi raknar som om prediktionen gjordes pa originalsignalen.Med fin kvantisering far vi aven att

D ≈ c · σ2d · 2−2R

dar σ2d ar variansen hos prediktionsfelet och c beror av vilken typ av

kvantisering vi gor och vilken fordelning dn har. Vi kan alltsa minimeradistorsionen genom att minimera prediktionsfelets varians.

Page 6: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Optimering av prediktorn

Prediktionsfelets varians

σ2d = E{(xn − pn)2} =

= E{(xn −N∑i=1

ai xn−i )2} ≈

≈ E{(xn −N∑i=1

aixn−i )2}

Derivera m.a.p. aj och satt lika med 0, vilket ger oss N ekvationer

∂ajσ2d = −2 · E{(xn −

N∑i=1

aixn−i ) · xn−j} = 0

Page 7: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Matrisbeskrivning

Detta kan skrivas om som matrisekvationen

RA = P

dar

R =

Rxx(0) Rxx(1) · · · Rxx(N − 1)Rxx(1) Rxx(0) · · · Rxx(N − 2)

......

. . . · · ·Rxx(N − 1) Rxx(N − 2) · · · Rxx(0)

A =

a1a2...

aN

, P =

Rxx(1)Rxx(2)

...Rxx(N)

dar Rxx(k) = E{xn · xn+k} ar autokorrelationsfunktionen for xn.

Page 8: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Matrisbeskrivning

Losningen kan fas somA = R−1P

For den optimala prediktorn A far vi

σ2d = Rxx(0)− AtP

Page 9: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Prediktionsvinst

Vid fin kvantisering ges distorsionen och signal-brusforhallandetapproximativt av

Dp ≈ c · σ2d · 2−2R , SNRp = 10 · log10

σ2x

Dp

dar σ2x ar originalsignalens varians.

Om vi istallet kvantiserat originalsignalen direkt hade vi fatt

Do ≈ c · σ2x · 2−2R , SNRo = 10 · log10

σ2x

Do

Skillnaden brukar kallas prediktionsvinst (prediction gain)

SNRp − SNRo = 10 · log10

Do

Dp≈ 10 · log10

σ2x

σ2d

Page 10: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Skattning av autokorrelationer

Givet en lang sekvens x1, x2, . . . , xn av testdata kan man skattaautokorrelationsfunktionen enligt

Rxx(k) =1

n − k

n−k∑i=1

xi · xi+k

I Matlab kan det skrivas

mean(x(1:end-k).*x(k+1:end))

Page 11: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Signaler med medelvarde

Vad gor man om signalen har ett medelvarde m 6= 0?

1. Om signalens medelvarde ar litet i forhallande till variansen kan mananvanda linjar prediktion som vanligt.

2. Annars kan man skapa en ny signal yn = xn −m, konstruera en linjarprediktor for yn och skicka m som sidoinformation.

3. Alternativt kan man konstruera en affin prediktor

pn =N∑i=1

aixn−i + a0

Bortsett fran kvantiseringen sa ger detta samma resultat somalternativ 2.

Page 12: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Tvadimensionella prediktorer

Man kan naturligtvis generalisera prediktorbegreppet till att aven fungerafor tvadimensionella signaler, t.ex. bilder.Till exempel, om vi har en bildsignal xij och vi vill gora en prediktion franbildpunkten till vanster om och bildpunkten ovanfor den aktuella

pij = a1 · xi,j−1 + a2 · xi−1,j

Den optimala prediktorn ges da av losningen till ekvationssystemet[E{x2

i,j−1} E{xi,j−1 · xi−1,j}E{xi,j−1 · xi−1,j} E{x2

i−1,j}

] [a1a2

]=

[E{xi,j · xi,j−1}E{xij · xi−1,j}

]eller, uttryckt med autokorrelationsfunktionen[

Rxx(0, 0) Rxx(1,−1)Rxx(1,−1) Rxx(0, 0)

] [a1a2

]=

[Rxx(0, 1)Rxx(1, 0)

]

Page 13: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Exempel, prediktiv kodning av bild

768× 512 bildpunkter, 8 bitar/bildpunkt

Page 14: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Lloyd-Max-kvantisering, 8 nivaer

Datatakt: R = 3 bitar/bildpunktDistorsion: D ≈ 59.02PSNR: 30.42 dB

Page 15: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Prediktor

Skattad akf

Rxx(0, 0) = σ2 ≈ 2580.9

Rxx(1, 0) ≈ 0.9770 · σ2

Rxx(0, 1) ≈ 0.9863 · σ2

Rxx(1, 1) ≈ 0.9703 · σ2

Rxx(1,−1) ≈ 0.9665 · σ2

Prediktor

pij = 0.8008 · xi,j−1 + 0.6493 · xi−1,j − 0.4525 · xi−1,j−1

En attanivaers Lloyd-Max-kvantiserare optimeras pa prediktionsfelet.

Page 16: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Prediktionsfel, 8 nivaer

Page 17: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Kvantiserat prediktionsfel, 8 nivaer

Page 18: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Avkodad bild, 8 nivaer

Datatakt: R = 3 bitar/bildpunktDistorsion: D ≈ 5.62PSNR: 40.63 dB (Prediktionsvinst 10.21 dB)

Page 19: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Lloyd-Max-kvantisering, 2 nivaer

Datatakt: R = 1 bit/bildpunktDistorsion: D ≈ 735.77PSNR: 19.46 dB

Page 20: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Prediktionsfel, 2 nivaer

Page 21: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Kvantiserat prediktionsfel, 2 nivaer

Page 22: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Avkodad bild, 2 nivaer

Datatakt: R = 1 bit/bildpunktDistorsion: D ≈ 84.81PSNR: 28.85 dB (Prediktionsvinst 9.39 dB)

Page 23: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Exempel: hey04.wav

Filen hey04.wav fran lab 2 kodas med olika ordning pa prediktorn.Likformig kvantisering med 256 nivaer.Diagrammet visar SNR som funktion av antalet prediktorkoefficienter.

0 1 2 3 4 5 6 7 842

43

44

45

46

47

48

49

Page 24: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Exempel: hey04.wav

Filen hey04.wav fran lab 2 kodas med olika ordning pa prediktorn.Likformig kvantisering med 32 nivaer.Diagrammet visar SNR som funktion av antalet prediktorkoefficienter.

0 1 2 3 4 5 6 7 825

26

27

28

29

30

31

32

33

34

Page 25: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Exempel: hey04.wav

Filen hey04.wav fran lab 2 kodas med olika ordning pa prediktorn.Likformig kvantisering med 4 nivaer.Diagrammet visar SNR som funktion av antalet prediktorkoefficienter.

0 1 2 3 4 5 6 7 88

10

12

14

16

18

20

22

Page 26: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Distorsionsfri kodning

Linjar prediktiv kodning kan ocksa anvandas vid distorsionsfri kodning.Om vi antar att insignalen bestar av heltal, sa maste vi se till att varprediktor ocksa producerar heltal.Som exempel har vi bland annat lossless JPEG, som kan anvandaprediktorerna

1. pij = Ii−1,j

2. pij = Ii,j−1

3. pij = Ii−1,j−1

4. pij = Ii,j−1 + Ii−1,j − Ii−1,j−1

5. pij = bIi,j−1 + (Ii−1,j − Ii−1,j−1)/2c6. pij = bIi−1,j + (Ii,j−1 − Ii−1,j−1)/2c7. pij = b(Ii,j−1 + Ii−1,j)/2c

Page 27: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Distorsionsfri kodning

Vi kodar var papegojbild med prediktorn

pij = Ii,j−1 + Ii−1,j − Ii−1,j−1

och huffmankodar sen prediktionsfelet. Datatakten blir da 4.18bitar/bildpunkt.

Om vi istallet anvander prediktorn

pij = b0.8008 · Ii,j−1 + 0.6493 · Ii−1,j − 0.4525 · Ii−1,j−1c

foljt av huffmankodning blir datatakten 3.93 bitar/bildpunkt.

Page 28: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

Ljudsignalerna i lab 1

Prediktorer av ordning 1 och 2.hey04_8bit.wav

pn = 0.9820 · xn−1

pn = 1.2970 · xn−1 − 0.3207 · xn−2

nuit04_8bit.wav

pn = 0.9981 · xn−1

pn = 1.8434 · xn−1 − 0.8468 · xn−2

speech.wav

pn = 0.9507 · xn−1

pn = 1.7719 · xn−1 − 0.8639 · xn−2

Page 29: Prediktiv kodning - icg.isy.liu.se · RA = P d ar R = 2 6 6 6 4 R xx(0) R ... Givet en l ang sekvens x 1;x 2;:::;x n av testdata kan man skatta ... n = 0:9507 x n 1 p n = 1:7719 x

FLAC (Free Lossless Audio Coding)

Distorsionsfri kodning av ljud

Ljudsignalen delas in i block (typiskt nagra tusen sampel).

Koda summa/skillnad av de tva stereokanalerna om det ger hogrekompression.

Linjara prediktorer optimeras inom blocket. Det finns aven mojlighet attanvanda fixa prediktorer (jamfor med lossless JPEG).

Prediktionsfelet kodas med Ricekoder (ungefar samma sak somGolombkoder).

https://xiph.org/flac/