L. A. Grieco
DEE – Telematics Lab. 1
MPEG-4
Sistemi per la Codifica e la Trasmissione di Segnali Multimediali
Laurea Spec. Ing. TLC (INF)
2
MPEG-4: Obiettivi
• Interattività basata sui contenuti
– Accesso ed organizzazione dei dati
– Manipolazione ed editing
– Gestione di scene ibride Naturali e Sintetizzate
– Accesso random con risoluzione temporale fine
• Efficienza di Compressione
• Accesso Universale
– Robustezza agli errori per abilitare la trasmissione su
reti ad affidabilità limitata
– Codifica a qualità adattativa con granularità fine
3
MPEG-4: Applicazioni
• Multimedia Streaming over the Internet
• Mobile communications
• Digital multimedia broadcast
• Content-based storage & retrival
• Interactive media distributed on optical storage
• Real-time communications
• Studio & television post-production
• Surveillance
• Virtual meetings
• Infotainment
4
MPEG-4: composizione della scena
Scene
Definition
audio
Precoded
objects
Video
Foregroud
Video
Background
La scena è creata integrando
opportunamente oggetti tra
loro legati da correlazioni
spazio-temporali
Composition
Encoder
Obj 1
Encoder
Obj 2
Encoder
Obj N
Encoder
La composizione della scena
ed i singoli oggetti sono
codificati indipendentemente
l’uno dall’altro
Multiplexing
&
Syncronization
Output
Stream
5
MPEG 4: Riproduzione della scena
Demultiplexing
Composition
Decoder
Obj 1
Decoder
Obj 2
Decoder
Obj N
Decoder
Co
mp
osit
or
audio
video
6
Architettura di un terminale MPEG-4
Transmission/Storage Medium
Delivery Layer
Multiplexed Stream
Sync Layer
SL-Packetized Stream
Compression Layer
Elementary Stream
Composition & Rendering
Objects & Scene Description
User Interaction
7
Architettura di un terminale MPEG-4: i layer
• Transmission/Storage Medium: dispositivi di
memorizzazione di massa o rete di TLC da cui i
contenuti multimediali sono letti
• Delivery Layer: stack protocollare impiegato per
accedere al Transmission/Storage Medium
• Sync Layer: Sincronizza e frammenta in
pacchetti gli stream elementari
• Compression Layer: Decodifica gli stream
• Composition & Rendering: Sintetizza la scena
8
Architettura di un terminale MPEG-4: gli stream
• Multiplexed stream: per ogni stack protocollare
impiegato dal delivery layer esiste un
multiplexed stream
• Elementary Stream: per ogni oggetto della
scena è presente un elementary stream
• SL-Packetized Stream: si ottengono
sincronizzando e frammentando in pacchetti gli
elementary stream
9
MPEG-4: Descrizione degli Oggetti e
Sincronizzazione
• Una presentazione MPEG-4 consta di molteplici oggetti
audio/video trasportati attraverso un certo numero di
stream audio/video
• Tutti i componenti di una presentazione sono accessibili
tramite per mezzo di Object Descriptor (OD)
• Gli OD specificano come porre in relazione stream e
oggetti multimediali
• Gli OD sono tra loro posti in relazione mutua tramite una
scene description (rappresentata tramite Binary Format for
MPEG-4 Scenes, BIFS)
• La scene description trasporta informazioni circa la
dislocazione spazio-temporale dei singoli oggetti
10
OD e Scene Description: Esempio
Audio
Source Object
DescriptorScene
Description
11
Scene Description
• E’ una descrizione gerarchica della scena (scene tree)
• Le foglie rappresentano gli oggetti visibili/udibili
• La composizione dei vari oggetti nella scena avviene
mediante opportune diramazioni (grouping node)
• Le proprietà di ciascuna foglia si ottengono accumulando
le proprietà dei nodi di livello più elevato attraversati nel
percorso dal root ad essa
12
Scene Description: esempio
Group (root)
MovieSound Transform
Text
Tipici Nodi di Raggruppamento
• Group: e’ un semplice
contenitore
• Transform(2D): Definisce un
sistema di coordinate 3D(2D) per
i nodi figli, relativo al sistema di
coordinate ereditato dal nodo
padre
• OrderedGroup: Stabilisce
l’ordine di rappresentazione dei
nodi figli, prescindendo dalla loro
posizione nella scena
13
MPEG-J: MPEG-4 & Java
• I terminali adibiti alla rappresentazione di scene MPEG-4
possono avere risorse molto differenti in termini di banda
e capacità computazionale
• MPEG-J ha come paradigma di riferimento il create once
run everywhere
• Con MPEG-J è possibile modificare la presentazione in
funzione delle risorse computazionali disponibili del
client
• MPEG-J fornisce un application engine che affianca il
presentation engine
14
Terminale MPEG-J
MPEG-J Application
java.lang java.io java.util MPEG-J APIs
JVM
Presentation Engine
Execution Engine
Application Engine
BIFS, audio, visual …
15
MPEG-J
• Presentation Engine: interpreta la BIFS e compone la presentazione
• Execution Engine: decomprime gli stream audio/video
• Application Engine: consente all’applicazione MPEG-J di controllare presentation e execution engine, es. in caso di risorse insufficienti: – si possono rappresentare gli oggetti meno importanti
con una descrizione testuale;
– Si possono riprodurre con più bassa qualità alcuni oggetti;
– Nel caso di applicazioni multimediali di e-learning, la presentazione si adatterà alle risposte fornite dall’utente
16
MPEG-4 Delivery Framework
• Modello che nasconde ai livelli superiori i dettagli della tecnologia utilizzata per accedere ai contenuti multimediali
• Gioca il ruolo di livello di sessione nel modello ISO/OSI (Delivery Multimedia Integration Framework, DMIF Layer)
• DMIF Layer – gestisce sia la sessione associata alla presentazione
sia i canali associati ad ogni singolo stream
– Abilita la trasmissione di dati e/o comandi
17
User Plane in un terminale MPEG-4
SL SL SL SL SL
FlexMux FlexMux
Elementary Streams
SL-Packetized Streams
Sync Layer
FlexMux Streams
TCP
IP
UDP
IP
AAL5
ATM
DMIF-Application
Interface (DAI)
18
DMIF Network Interface
Originating
Application
DAI
DMIF
Filter
Originating
DMIF for
Broadcast
Originating
DMIF for
Local Files
Originating
DMIF for
Remote Srv
Target
DMIF
Target
DMIF
Sig
Map
DNI
Target
App
Target
App
Broadcast
Source
Local
Storage
Network
Sig
Map
Target
DMIF
DAI
Target
App
DNI
19
FlexMux Tool
• Abilità il multiplexing di molteplici stream
elementari in un unico bitstream
• Soddisfa i seguenti requisiti:
– Basso overhead di multiplexing necessario per non
vanificare gli algoritmi ad alta efficienza di
compressione adottati in MPEG4
– Basso delay di multiplexing per supportare
applicazioni real-time
– Gestione di pacchetti a dimensione variabile
20
FlexMux Packet: simple mode
Index Length Payload
1 Byte 1 Byte Fino a 253 Byte • In questa modalità, il
pacchetto FlexMux incapsula
un singolo pacchetto
• Index identifica lo stream a
cui appartiene il pacchetto0 -- 237
21
FlexMux Packet: MuxCode
Index Length Slot 1
1 Byte 1 Byte
• In questa modalità, il pacchetto FlexMux incapsula molteplici pacchetti
• Index identifica gli stream da cui hanno origine i pacchetti concatenati nel
pacchetto FlexMux punta alla MuxCodeTable, in cui sono memorizzati,
in una struttura indicizzata, i dettagli relativi agli stream multiplexati
• Version indica quale MuxCodeTable utilizzare tra quelle definite
• Lo standard MPEG4 non specifica come le MuxCodeTabledevono
essere scambiate tra sender e receiver
240 -- 255
Version
1 Byte
Slot 2 Slot N
22
FlexMux Tool: temporizzazione
• Le due modalità di funzionamento (simple e mux)
possono essere impiegate in modo congiunto per
multiplexare ulteriormente gli stream
• Il valore di index 239 è utilizzato per inserire byte di
stuffing per ottenere stream a bit rate costante
più semplice gestione degli istanti di trasmissione
• Il valore di index 238 è utilizzato per inserire
informazioni utili alla temporizzazione: reference
clock e bit rate dello strem info utili a stabilire
degli istanti di trasmissione
23
MPEG-4: Natural Video Coding
• Codifica di sequenze video: motion compensated DCT coding scheme
• Codifica di immagini singole: wavelet transform & zero-tree coding
• Codifica di oggetti di sagoma arbitraria
• Scalable video coding
• Error-resilience coding tools
25
MPEG-4: Bitstream Gerarchico
Visual Object
Sequence (VS)VS1 VS2 VS2-VSN
Visual Object
(VO)VO1 VO2 VO2-VON
Visual Object
Layer (VOL)VOL1 VOL2 VOL2-VOLN
GOV1 GOV
2
Group Of VOPs
(GOV)
VOP1Visual Object
Plane (VOP) VOP1
26
MPEG-4: Codifica di Oggetti Rettangolari
• Ogni immagine di una sequenza video è considerata come un singolo VOP rettangolare
• Ogni VOP è codificato con un approccio block-based mediante approcci inter e intra frame
• Motion modes:– 1MV Mode: un vettore di moto per ogni macroblocco 16x16 è
trasmesso;
– 4MV mode: il macroblocco è suddiviso in 4 blocchi 8x8, un vettore di moto per ogni blocco è trasmesso
• New Motion-compensation Tools:– Quarter-pel motion compensation si ottiene inserendo
campioni virtuali interpolati nell’immagine di riferimento
– Global Motion Compensation
– Direct mode in bidirectional prediction un numero minore di bit è necessario per codificare i vettori di moto dei frame B essi sono codificati con riferimento ai vettori di moto dei frame P
27
Direct Mode in bidirectional motion compensation
P0 B1 B2 P3
Position of the current
MB in B-VOP
Position of the
colocated MB in
backward reference
Forward
Reference VOP
for B1
Backward
Reference VOP
for B1
MVf
MVb
MV
MVf e MVb sono
espressi in funzione di
MV
Riduzione del numero
di bit necessari a
codificare i vettori di
moto
28
New Texture Coding Tools
DCT Quant.AC/DC
PredictionScan
VLC
f(x,y) F(u,v) QF(u,v) PQF(u,v)
QFS(n)
Quantizzazione
MPEG o H263 Predizione termini
AC e DC dai
macroblocchi
limitrofi
Sono definiti 3 algoritmi di
scansione della matrice
dei coefficienti PQF
29
MPEG-4 Video Objects: Example
Transparent
MB
Opaque
MB
Boundary
MB
VOP
Boundig Box
30
Codifica di Oggetti di Sagoma Arbitraria
• Nel caso di VOP non rettangolari è necessario rappresentare la sagoma dell’oggetto
• A tal fine sono utilizzate le alpha mask
• Un’alpha mask definisce il livello di trasparenza di un VOP
• La trasparenza è rappresentata con un 8 bit ed assume valori da 0 (pixel completamente trasparente) a 255 (pixel completamente opaco)
• Per la maschere binare sono ammessi solo i valori 0 e 255 (sono codificate macroblocco per macroblocco)
• Le maschere non binarie sono codificate mediante una maschera binaria e algoritmi di texture encoding
31
MPEG-4: Scalable Video Coding
• MPEG-4 consente di perseguire due tipi di scalabilità
– Spatial/Temporal/SNR: consente di ottenere un bitrate
inferiore a scapito della risoluzione spazio-temporale o
dell’SNR. La scena è codificata tramite un base layer ed
uno o più enhancement layer il base layer può essere
reso più robusto ad eventuali errori di trasmissione rispetto
all’enhancement layer
– Object-based: la riduzione del bitrate è ottenuta
decodificando solo un sottoinsieme di tutti i possibili
oggetti
32
MPEG-4: Spatial Scalability
Base Layer DecoderBase Layer
Upsampler
Previous Reconstr.
Enh. Layer VOPs
Vector
Decoding
Enhancement
Layer Motion Comp.
Prediction
Combine
Predictions
Spatial
PredictionTemporal
Prediction
Texture
Decoding+
Reconstructed
Base Layer VOP
Reconstructed
Enhancement Layer
VOP
33
MPEG-4 Spatial Scalability: relazioni possibili tra
frame dell’enhancement e base layer
I P B B EL
I P P P BL
Temporal Prediction
Spatial Prediction
34
MPEG-4: Temporal Scalability
VOP number
VOP number0 3 6 9 12
1 2 4 5 7 8 10 11
I P B P I BL
ELI P P B B B B P
35
(8,1)(5,0)
(0,0)
(2,1)
(0,1)
SNR Fine Granularity Scalability (FGS): (codifica
dei coefficienti DCT dell’enhancement layer)
10 0 6 0 0 3 0 2 2 0 0 2 0 0 1 0
0 X 1 X X 1 X 0 0 X X 1 X X 0 X
Abs. Value
Sign
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0
MSB
LSB
MSB
LSB
(1,0) (2,0) (1,0) (0,0) (2,1)
36
MPEG-4: Error-Resilient Coding
• Packet-based periodic resynchronization
• Data Partitioning (DP)
• Reversible variable-length codes (RVLCs)
• Header extension code (HEC)
• New Prediction (NEWPRED)
37
MPEG-4: Packet-Based Resynchronization (1)
• Ristabilisce la sincronizzazione tra decoder e bitstream
dopo aver rivelato un errore
• Si basa su resynchronization marker
• L’encoder inserisce i marker nel bitstream prima della
trasmissione
• Una volta rivelato un errore, il decoder cerca il
successivo marker per ristabilire la sincronizzazione
• Usualmente è inserito un marker per ogni video packet
(N macroblocchi di un VOP)
38
MPEG-4: Packet-Based Resynchronization (2)
Resync
pointError
location
Error is
detected
Lost
sync
Resync point
found
Regained
sync
Decode1
2 4
Search
resync point3 Decode 5
Video Bitstream
Discarded Data
39
MPEG-4: Data Partitioning (DP)
• Organizza il bitstream in gruppi omogenei per
sensibilità agli errori di trasmissione
• Le informazioni contenute nei macroblocchi
sono classificate in due categorie
– High-priority: se corrotte, producono significativa
perdita di qualità nel macroblocco ricostruito
– Low-priority
40
DP: Bitstream for I-VOP e P-VOP video packet
Resync
Marker
Video Packet
Header
1-st MB
Mode Info6 DC
N-th MB
Mode Info6 DC DCM AC
Resync
Marker
Video Packet
Header
1-st MB
Mode InfoMVs
N-th MB
Mode InfoMVs MM DCT
Nel caso di errori nel bitstream i marker DCM e MM
consentono di non perdere tutta l’informazione contenuta del
video packet
I-VOP video packet
P-VOP video packet
41
MPEG-4: Reversible variable-length codes
(RVLCs)
• RVLC sono particolari VLC che possono essere
decodificati univocamente sia in direzione
forward sia in direzione backward
• Dopo aver ristabilito la sincronizzazione,
consentono di isolare con maggiore precisione
l’errore con conseguenti ripercussioni sulla
quantità di dati scartati
42
RLVC: esempio
Resync
pointError
location
Error is
detected
Lost
sync
Resync point
found
Regained
sync
Decode
Forward1
2 4
Search
resync point3Decode
Forward 6
Video Bitstream
5
Decode
Backward
43
MPEG-4: Header extension code (HEC)
• Duplica porzioni di dati all’interno del bitstream
• E’ molto utile per preservare informazioni vitali
(es. VOP header)
44
MPEG-4: New Prediction (NEWPRED)
• E’ utilizzata per applicazioni basate su real-time coding
• Riduce gli effetti della propagazione degli errori nel
tempo causata dalla compensazione del moto
• Utilizza un canale in upstream dal decoder all’encoder
(back channell)
• In funzione delle informazioni trasmesse sul back
channell, l’encoder può cambiare il riferimento utilizzato
nell’inter VOP coding
45
MPEG-4 Visual Texture Coding (still image)
Wavelet
Transform
Quantization &
Zero-tree coding
Entropy
Coding
Input Image
Output
bitstream
46
Scomposizione in sottobande
LPF
HPF
x
2
2
LPF
HPF
2
2
LPF
HPF
2
2Filtraggio e
sottocampionamento righe
Filtraggio e
sottocampionamento colonne
M
N
M
N/2
M/2
N/2
M
N/2
M/2
N/2
M/2
N/2
M/2
N/2
47
Alberi di coefficienti
a a1
a2 a3
a11 a12
a13 a14
a111 a112
a113 a114
a121a122
a123 a124
a131a132
a133 a134
a141a142
a143 a144
a31 a32
a33 a34
a21 a22
a23 a24
a311 a312
a313 a314
a321a322
a323 a324
a331a332
a333 a334
a341a342
a343 a344
a211 a212
a213 a214
a221a222
a223 a224
a231a232
a233 a234
a241a242
a243 a244
48
Embedded Zerotree Wavelet (EZW)
• Con riferimento ad una soglia T, ciascun coefficiente è classificato come:– Significant : se ha modulo maggiore di T
• Significant positive (sp)
• Significant negative (sn)
– Insignificant: se ha modulo minore di T• Zerotree root: se tutti i coefficienti dell’albero da esso generato hanno modulo minore di T (zr)
• Isolated zero: se almeno uno dei coefficienti dell’albero da esso generato ha modulo maggiore di T (iz)
• Sia M il modulo del coefficiente di valore assoluto più elevato, il valore di soglia iniziale è il coefficiente con modulo più elevato sarà contenuto nell’intervallo [T0,2T0)
• E’ un algoritmo che opera in più passi Ad ogni passo la soglia è dimezzata
• Ogni passo consiste di due fasi– Significance map encoding:
• i coefficienti che al passo precedente non sono risultati significativi vengono classificati
• viene aggiornata la lista dei coefficienti significativi
• Ciascun coefficiente significativo è quantizzato con il valore ±1.5T
– Refinement: si calcola la differenza tra i valori reali e quantizzati di ciascun coefficiente della lista e si aggiunge un valore correttivo pari a ±T/4 a seconda che la differenza sia positiva o negativa
• La procedura si ripete sino a quando il massimo numero di bit utilizzabili per la codifica del segnale è stato raggiunto
MT 2log
0 2
49
EZW: Esempio
26 6 13 10
-7 7 6 4
4 -4 4 -3
2 -2 -2 0
• M=26 T0=16
• 26 sp; 6 zr; -7 zr; 7 zr (8 bit=2 bit/label * 4 label)
• Ls={26} lista dei coefficienti significativi
• Quantizzando 26 si ottiene 24 = 1.5*16
• 26 – 24 >0 si corregge la quantizzazione sommando 4=16/4 il valore quantizzato è
28 (1 bit per segnalare la correzione)
• T1 = 8
• 6 iz; -7 zr; 7 zr; 13 sp; 10 sp; 6 iz; 4 iz (14 bit)
• Ls = {26,13,10}
• I rispettivi valori quantizzati sono {28, 12, 12}
• 26 – 28 <0; 13 – 12 >0; 10 – 12 <0 (3 bit)
• Correggendo le quantizzazioni si ottiene {26, 14, 10} ………
50
Set Partitioning In Hirarchical Trees (SPIHT)
• SPIHT è un’ottimizzazione dell’algoritmo EZW
• L’ottimizzazione mira a raggruppare i coefficienti
non significativi in misura maggiore rispetto ad
EZW maggiore compressione
52
JPEG 2000: un po’ di storia ….
• 1986: nascita del il comitato JPEG
• 1993: pubblicazione del primo standard per la compressione di immagini
• 1996: il comitato JPEG avvia lo studio di un nuovo standard per la codifica delle immagini in grado di supportare applicazioni innovative
• 2000: pubblicazione del “core coding system” (Part 1) dello standard JPEG 2000
• 2001: standardizzazione Part 2/3/5
• 2002: standardizzazione Part 4/6
Part 1 Core coding systems Copertura dell’80% delle applicazioni con
algoritmi a minima complessità
Part 2 Extensions Funzionalità avanzate a maggiore
complessità
Part 3 Motion Codifica di sequenze di frame (no motion
estimation)
Part 4 Conformance Testing Test di conformità per i codec
Part 5 Reference SW Implementazione di riferimento
Part 6 Compound image file format File format per document scanning e fax
53
JPEG 2000 Part 1: Caratteristiche Principali
• Maggiore efficienza di compressione rispetto allo standard JPEG
• Compressione lossy e lossless
• Rappresentazione a molteplici risoluzioni
• Embedded bitstream a supporto di decodifica progressiva e scalabilità SNR
• Tiling: la picture è suddivisa in parti (tile) che vengono elaborate indipendentemente
• Region Of Interest (ROI) coding
• Robustezza agli errori
• Robustezza a molteplici cicli di compressione e decompressione
• Accesso e processing random dello stream dati
• Formato del file più flessibile
54
Schema di codifica
• Pre-processing
– Partizionamento dell’immagine in tile
– trasformazione (R,G,B) (Y, Cb, Cr): ciascuna componente viene processata indipendentemente
• DWT: trasformata wavelet bidimensionale di tipo integer-to-integer gli errori di arrotondamento non sono ammessi nella codifica lossless
• Quantization: uniforme con dead-zone intorno allo zero di ampiezza doppia
• Codifica Entropica
– ogni sottobanda è suddivisa in codeblock
– Ciascun codeblock è codificato indipendentemente (a spese dell’impossibilità di eliminare ridondanze tra sottobande) ottenendo
• Maggiore robustezza agli errori
• Accesso random
• Rate control
• Maggiore flessibilità nella rappresentazione dei dati
• Bitplane encoding
– i coefficienti quantizzati di ogni codeblock sono organizzati in bitplane scalabilità SNR
– Ciascun bitplane è codificato mediante codifica aritmetica in 3 fasi (Significant propagation, Refinement e Cleanup) creando 3 sub-bitplane scalabilità fine del rate
Pre-processing DWT QuantizationCodifica
Aritmetica
Bit-stream
Organization
Image
Compressed
Image
55
Sottobande, codeblock e bitplane: un esempio
M. Rabbani and R. Joshi “An Overview of the JPEG 2000 still image compression
standard,” Signal Processing: Image Communication, 17 (2002) 3-48.
56
Bit-stream
• Ogni immagine è partizionata in– Componenti (una per ciascun colore)
– Tile
– Livelli di risoluzione
– Sottobande
– Layer
– Codeblock
– Precint: insieme di codeblock contigui presi da sottobande alla medesima risoluzione
• Ogni pacchetto contiene i dati relativi ad una specifica partizione dei dati, individuata univocamente dalla quintupletta– # Precint
– # Layer
– # Livello di risoluzione
– # Tile
– # Componente