source coding - polito.itpersonal.delen.polito.it/maurizio.martina/tecnologiedei... ·...

Post on 09-Apr-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Source Coding

Prof. G. MaseraIng. M. MartinaIng. M. Nicola

Codifica di sorgente

AudioMPEG-Audio level I, II, III, MPEG4-Advanced Audio Coding (AAC)…

ImmaginiJPEGJPEG 2000…

VideoMPEG2MPEG4 (H.264/AVC – MPEG4-part 10)...

Video

EncoderDigital video camera (produzione)Consumer…

DecoderTrans-codificatoriDecoder digitali (Set Top Box)…

MPEG2 – Encoder - IDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

MPEG2 – Encoder - IIDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

00

MPEG2 – Encoder - IIIDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

11

Zoom - ME

MPEG2 – Encoder - IVDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

11

Zoom - MC

MPEG2 – Encoder - VDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

11

Zoom – Frame Buffer

++

Frame Frame bufferbuffer

VLCVLCMCMC

MPEG2 – Encoder - VIDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

22

MPEG2 – Encoder Profiling

Qual è il blocco più oneroso (tempo di calcolo) ?

750750--MHz MHz IntelIntelMobile Mobile PentiumPentium III.III.

PowerPCPowerPC 970970

This table is taken from G. Kuzmanov, G. Gaydadjiev and S. Vassiliadis, “The MOLEN Processor Prototype”, in the Proceedings of the IEEE Symposium on Field-Programmable 2004

Stima del moto

Classificazione:Dominio di ricerca

Immagine (block matching)Trasformato (PPC, …)

Tipo di ricercaLossless (ricerca ottima)

Full SearchSuccessive Elimination Algorithm (SEA)…

Lossy (ricerca sub-ottima)3-step-search (TSS)…

Stima del moto

Block Based Motion Estimation Algorithms

Time-domain Algorithms Frequency-domain Algorithms

Matching Algorithms Gradient Based Algorithms

Block-matching

Feature-matching

Pel-recursive

Block-recursive

Phase-correlation

Matching in (DCT) domain

Matching in wavelet domain

Mesh Based Motion Estimation Algorithms

pp

Block matching

p+vp+v

tt t + t + ττ

vv

NN

NN

N(N N(N sottrazionisottrazioni + (N+ (N--1) 1) sommesomme) + (N) + (N--1)somme 1)somme ≈≈ 2N2N22 sommesomme

SS11

SS22

FinestraFinestra didi ricercaricerca

Esempio: Full Search - IPAL (W=720, H=576)Macroblocco 16×16 (N×N) → 45×36 MBsFinestra di ricerca 31×31 (S1×S2) pixel (d=7)

(S(S11--N+1) (SN+1) (S22--N+1)N+1)256 SAD 256 SAD

256 256 ×× 45 45 ×× 36 = 36 = 414720 SAD per frame !!414720 SAD per frame !!

pixelpixel

MPEG2MPEG2

Esempio: Full Search - IIA 25 frame al secondo

1 SAD = N2 sub + (N2 – 1) add ≈ 2N2 = 512

414720 414720 ×× 25 = ~10.4 25 = ~10.4 MilioniMilioni di di SAD al SAD al secondosecondo !!!!

~ 5.4 ~ 5.4 Gsub/sGsub/s5.4 5.4 MiliardiMiliardi di di sottrazionisottrazioni al al secondosecondo !!!!

Altri domini

La stima del moto può essere effettuata in altri dominiEs. in frequenza:

y0 = FFT(frame0) → φ(y0)y1 = FFT(frame1) → φ(y1)d = IFFT(φ(y0)-φ(y1))

Funziona bene se il moto è traslatorioUtilizzata per frame-rate-up-conversion

Ricerca Lossless - I

Esempio: Successive Elimination Algorithm (SEA)

Da cui si ha:

Ricerca Lossless - II

Scelgo un macroblocco iniziale su cui calcolare la SAD

Il macroblocco che stiamo cercando soddisfa

Per cui

Ricerca Lossless - III

Prima di valutare

Verifico se

Se è verificata l’ipotesi allora calcolo

Ricerca Lossless - IV

Posso organizzare i calcoli in modo efficiente:

pp

NN

NN

Calcolo R(p)Calcolo SAD(p,v0)Calcolo di M(p,v)(=SNi,j)

Bisogna ottimizzarlo!

Precalcolare ? - I

SS11

SS22

NN

CC1,11,1CC1,21,2 CC1,S1,S11

SS11(N(N--1) Somme1) Somme

SS11 RegistriRegistri

Precalcolare ? - II

SS11

SS22

NN SNSN1,11,1 = = ∑∑ii CC1,i1,i

SNSN1,21,2 = SN= SN1,11,1 –– CC1,11,1+C+C1,N+11,N+1

•• SS11 RegistriRegistri

•• SS11(N(N--1) Somme1) Somme

Precalcolare ? - III

SS11

SS22

NN

•• SS11 RegistriRegistri

•• SS11(N(N--1) Somme1) Somme

SNSN1,11,1 = = ∑∑ii CC1,i1,i

NN--1 Somme1 Somme

SNSN1,x1,x = SN= SN1,x1,x--11 –– CC1, x1, x--11 + C+ C1,N+x1,N+x--11

22××(S(S11--N) SommeN) Somme

Precalcolare ? - IV

SS11

SS22

NN

•• SS11 RegistriRegistri

•• SS11(N(N--1) Somme1) Somme

•• NN--1 Somme1 Somme

•• 2(S2(S11--N) SommeN) Somme

CC2,12,1= C= C1,11,1 -- f(1,1) + f(N+1,1)f(1,1) + f(N+1,1)

2 Somme2 SommeCC2,12,1= C= C1,11,1 -- f(1,1) + f(N+1,1)f(1,1) + f(N+1,1)

2 Somme2 Somme

2S2S11 SommeSomme

Precalcolare ? - V

SS11

SS22

NN

•• SS11 RegistriRegistri

•• SS11(N(N--1) Somme1) Somme

•• NN--1 Somme1 Somme

•• 2(S2(S11--N) SommeN) Somme

SS22--N N Strisce Strisce ×× 2S2S11 SommeSomme

Precalcolare ? - VI

SS11

SS22

NN

•• SS11 RegistriRegistri

•• SS11(N(N--1) Somme1) Somme

•• NN--1 Somme1 Somme

•• 2(S2(S11--N) SommeN) Somme

SS22--N N Strisce Strisce ×× (N(N--1 + 2(S1 + 2(S11--N)) SommeN)) Somme

TotaleR(p) → N2 SommeSAD(p,v0) → 2N2 SommeM(p,v) = SNi,j

S1(N-1) + N-1 + 2(S1-N) + (S2-N)[2S1 + (N-1) + 2(S1-N)]

N = 16, S1=31, S2=31W = 720 → 45 H = 576 → 3625 frame/s

TotTotminmin = ~117 = ~117 MilioniMilioni di di sommesomme al al secondosecondo !!

Complessità

Dipende molto dalla scelta di v0Dati:

Macroblocco di riferimento (frame t) → pMacroblocco candidato (frame t+τ) → v*

Se

Allora valuto SAD(p,v*)Si arriva a risparmiare ~85% delle operazioni(~800 Msub/s)

Scelta di v0La distribuzione dei vettori di moto è centrataintorno al macroblocco in esame*

These results are taken from Chun-Ho Cheung and Lai-Man Po, “Novel Cross-Diamond-Hexagonal Search Algorithms for Fast Block Motion Estimation”, IEEE Trans. On Multimedia, Feb. 2005.

Ricerca Lossy - I

Si basano sull’ipotesi che nelle sequenzenaturali:

il moto è prevalentemente lentola distribuzione dei vettori di moto è centrata

intorno al macroblocco in esameEsempi:

Three Step Search (TSS)Four Step Search (4SS)Diamond Search…

TSS

TSS

TSS

TSS

Complessità

TSS valuta 25 SAD per ogni macroblocco25×45×36=40.5 kSAD (PAL)

Su 25 frame/s 40.5×25 =~1MSAD/s

~512 Msub/s (TSS)~800 Msub/s (SEA)~ 5.4 Gsub/s (FS)

Partial Distortion Elimination

La funzione SAD è crescente (non strettamente)

Possiamo ridurre la complessità di qualunquealgoritmo block mathching

Esempio: SEA + PDE

Scelta di SAD(p,v0)Se troviamo v*

Non siamo sicuri che

Se mentre valutiamo SAD(p,v*) otteniamo un valore > min(SAD(p,v)) interrompiamo la SAD → risparmiamo somme !!

MPEG2 – Decoder - I

QQ--11 II--DCTDCTVLCVLC ++

BufferBufferMCMC

MPEG2 – Decoder - II

QQ--11 II--DCTDCTVLCVLC ++

BufferBufferMCMC

VettoriVettori di di motomoto

MPEG2 – Decoder Profiling

Qual è il blocco più oneroso (tempo di calcolo) ?

PowerPCPowerPC 970970

This table is taken from G. Kuzmanov, G. Gaydadjiev and S. Vassiliadis, “The MOLEN Processor Prototype”, in the Proceedings of the IEEE Symposium on Field-Programmable 2004

DCT - I

La Discrete Cosine Transform (DCT) 8×8 è:

Analogamente la IDCT:

DCT - IIf(x,yf(x,y)) F(u,vF(u,v))

88××88××complessitcomplessitàà di di F(u,vF(u,v))

DCT - III

22××88××8 8 MulMul + 7+ 7××8+7 Add8+7 Add

Complessità

La complessità della forma diretta di 2D-DCT è:

8×8 ×(2×8×8 Mul + 7×8+7 Add)8192 Mul + 4032 Add

per ogni blocco 2D-DCT 8×8Per un PAL (720×576 @ 25 frame/s)

90×72×25×(8192 Mul + 4032 Add)~1.3 GMul/s + ~650 MAdd/s

Idee

Riorganizzare la sequenza delle operazioniSpezzare il flusso:

1D-DCT orizzontale1D-DCT verticale

Sfruttare la simmetria della funzione cos(x)ChenLoeffler…

Chenx0x1

x2x3x4

x5x6x7

y0y1y 2y 3y 4y 5y6y7

MoltiplicazioneMoltiplicazione SottrazioneSottrazione ShiftShift

Complessità

La DCT di Chen richiede:16 Mul + 26 Add ogni 8 punti

2D-DCT:2×8 ×(16 Mul + 26 Add) = 256 Mul + 416 AddPAL (720×576 @ 25 frame/s)

90×72×25×(256 Mul + 416 Add)Chen: ~41.5MMul/s + ~67.4MAdd/sDirect: ~1.3 GMul/s + ~650 MAdd/s

top related