Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
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