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

50
Source Coding Prof. G. Masera Ing. M. Martina Ing. M. Nicola

Upload: others

Post on 09-Apr-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Source Coding

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

Page 2: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Codifica di sorgente

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

ImmaginiJPEGJPEG 2000…

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

Page 3: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Video

EncoderDigital video camera (produzione)Consumer…

DecoderTrans-codificatoriDecoder digitali (Set Top Box)…

Page 4: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

MPEG2 – Encoder - IDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

Page 5: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

MPEG2 – Encoder - IIDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

00

Page 6: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

MPEG2 – Encoder - IIIDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

11

Page 7: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Zoom - ME

Page 8: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

MPEG2 – Encoder - IVDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

11

Page 9: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Zoom - MC

Page 10: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

MPEG2 – Encoder - VDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

11

Page 11: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Zoom – Frame Buffer

++

Frame Frame bufferbuffer

VLCVLCMCMC

Page 12: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

MPEG2 – Encoder - VIDCTDCT++ QQ VLCVLC

QQ--11

II--DCTDCT

Frame Frame BufferBufferMEME

MCMC

Motion vectorMotion vector

--

++

Motion vectorMotion vector

22

Page 13: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 14: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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)…

Page 15: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 16: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 17: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 18: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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 !!!!

Page 19: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 20: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Ricerca Lossless - I

Esempio: Successive Elimination Algorithm (SEA)

Da cui si ha:

Page 21: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Ricerca Lossless - II

Scelgo un macroblocco iniziale su cui calcolare la SAD

Il macroblocco che stiamo cercando soddisfa

Per cui

Page 22: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Ricerca Lossless - III

Prima di valutare

Verifico se

Se è verificata l’ipotesi allora calcolo

Page 23: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di 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!

Page 24: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Precalcolare ? - I

SS11

SS22

NN

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

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

SS11 RegistriRegistri

Page 25: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 26: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 27: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 28: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 29: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 30: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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 !!

Page 31: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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)

Page 32: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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.

Page 33: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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…

Page 34: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

TSS

Page 35: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

TSS

Page 36: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

TSS

Page 37: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

TSS

Page 38: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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)

Page 39: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Partial Distortion Elimination

La funzione SAD è crescente (non strettamente)

Possiamo ridurre la complessità di qualunquealgoritmo block mathching

Page 40: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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 !!

Page 41: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

MPEG2 – Decoder - I

QQ--11 II--DCTDCTVLCVLC ++

BufferBufferMCMC

Page 42: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

MPEG2 – Decoder - II

QQ--11 II--DCTDCTVLCVLC ++

BufferBufferMCMC

VettoriVettori di di motomoto

Page 43: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 44: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

DCT - I

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

Analogamente la IDCT:

Page 45: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

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

Page 46: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

DCT - III

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

Page 47: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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

Page 48: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Idee

Riorganizzare la sequenza delle operazioniSpezzare il flusso:

1D-DCT orizzontale1D-DCT verticale

Sfruttare la simmetria della funzione cos(x)ChenLoeffler…

Page 49: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

Chenx0x1

x2x3x4

x5x6x7

y0y1y 2y 3y 4y 5y6y7

MoltiplicazioneMoltiplicazione SottrazioneSottrazione ShiftShift

Page 50: Source Coding - polito.itpersonal.delen.polito.it/maurizio.martina/TecnologieDei... · 2010-03-23 · MPEG2 – Encoder Profiling Qual è il blocco più oneroso (tempo di calcolo)

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