MPEG2

Transcript

MPEG2
La compressione del segnale video
Digital Video Broadcasting
1
Compressione del segnale video
• Le tecniche di compressione possono essere lossless (senza
perdita) o lossy (con perdita). Lo scopo delle tecniche
lossless è di ridurre il volume di dati senza perdere nulla
dell’informazione originale; nel caso dei dati video questo
significa che le immagini decodificate hanno la stessa qualità
di quelle originali.
• Al contrario le tecniche lossy, tra cui MPEG, cercano di
raggiungere un determinato bitrate, anche a costo di
eliminare parte dell’informazione contenuta nei dati originali
(generalmente quella a cui l’occhio umano è meno sensibile).
Gli algoritmi agiscono sulla ridondanza di informazione
all’interno di un frame (ridondanza spaziale) e quella tra
frame consecutivi (ridondanza temporale).
• Le tecniche per la riduzione della ridondanza spaziale
derivano da quelle adottate nella compressione delle
immagini fisse (es. JPEG).
2
1
DCT Transformation
Ogni frame viene suddiviso in blocchi da 8x8 pixels su cui viene
eseguita una DCT (Discret Cosine Trasform, trasformata coseno
discreta), un modo per decomporre il blocco dell’immagine in
una somma pesata di frequenze spaziali, similmente a quanto fa
la trasformata di Fourier per quelle temporali. Si ottiene così una
matrice di coefficienti che rappresentano il blocco (operazione
senza perdite e reversibile)
3
Quantization
Successivamente viene operato un processo detto
quantizzazione, attraverso cui sostanzialmente i dati
ricavati dalla DCT che definiscono ogni blocco vengono
discretizzati (quindi approssimati), in maniera più o meno
drastica a seconda della loro importanza percettiva
quantization).
Vengono
infatti
(visually-weighted
definite delle matrici di quantizzazione (8x8 come i
blocchi di pixels) in cui sono indicati i valori per cui i
coefficienti della matrice risultante dalla DCT andranno
quantizzati. Il risultato della quantizzazione di un
coefficiente della DCT è il valore intero più prossimo al
risultato della divisione del coefficiente per il fattore di
quantizzazione. L’approssimazione sarà tanto maggiore
quanto più grandi sono i valori di quantizzazione ma
all’occhio umano, alle alte frequenze spaziali questa
operazione è relativamente impercettibile
4
2
Codifiche Run-Leght (RL) e Variable
length coding (VLC)
Si riduce la ridondanza delle matrici dei
coefficienti quantizzati attraverso la loro
conversione
a
vettore
monodimensionale
mediante
lettura
zig-zag
e
successive
compressioni che sfruttano la ridondanza
statistica dei bit di tale vettore (ricerca di
pattern ripetuti) sostituendo a tali pattern delle
parole di lunghezza inferiore: viene eseguita
prima RL e poi VLC (che sfrutta Huffman
coding)
5
Riduzione della ridondanza temporale:
Differential coding
Si usa un sistema in cui si definiscono dei key frames e
delta frames per eliminare le informazioni ridondanti
fra i fotogrammi (interframe compression).
Ai key frame e ai delta frame, vengono poi applicate le
compressioni classiche (intraframe compression).
Gli standard MPEG prevedono la classificazione dei
frame in tre tipi: I, B, P .
•I frame: è un frame video completamente indipendente.
•P frame (predictive frame): si basa su un precedente I
frame.
•B frame (bi-directional frame): è costituito da
informazioni ricavate sia da I frame che P frame (anche
successivi).
6
3
Frame I, P e B
7
GOP
Una serie di I, B, P frames
(es: I,B,B,P) costituisce una
GOP (group of pictures). Più
lunga è la sequenza GOP
maggiore sarà la
compressione risultante ma
anche maggiore sarà il rischio
di corruzione dell'immagine se
si verifica qualche errore.
Ovviamente la sequenza di
creazione ed invio di questi
frame sarà I, P, B, mentre
quella di riproduzione I,B,P
perciò il decoder sarà
incaricato del riordino della
GOP, basandosi su
informazioni che dovranno
essere codificate insieme ai
frame (DTS e PTS
8
timestamps).
4
Motion estimation
Si valuta se tra i frame alcuni dei blocchi anziché scomparire
cambiano semplicemente di posizione. In questo caso si invia la
sola informazione su tale movimento (motion vectors) anziché il
contenuto del blocco
9
Il presente: il sistema DVB-T
Codificatore
e
Decodificatore
MPEG2
10
5
• Nel 1993, un consorzio europeo ha avviato un progetto basato sulla
codifica MPEG-2: il sistema di trasmissione digitale DVB (Digital Video
Broadcasing, www.dvb.org ) per la distribuzione dei segnali televisivi (e
non solo).
• Il DVB è noto per quanto riguarda la trasmissione televisiva satellitare
digitale (DVB-S), ma definisce in generale come i segnali MPEG-2 sono
trasmessi anche su cavo (DVB-C), o a frequenze televisive terrestri
(DVB-T) e anche come sono gestite le informazioni di servizio, le EPG
(guide programmi) e gli eventuali sistemi di crittografia, nonché il
trasporto di contenuti interattivi e multimediali avanzati e IP broadband,
il tutto grazie alla flessibilità dei pacchetti MPEG-2 utilizzati come data
container.
• MPEG2-TS è adatto al trasporto di datagrammi IP attraverso il
protocollo MPE (Multi Protocol Encapsulation). Esistono servizi IP quali ad
esempio, Opensky, Europe Online. Esistono tecniche per trasportare
pacchetti TS su reti IP (ad es. protocollo RTP) ed allo stesso modo, ma al
contrario, la possibilità di inviare datagrammi IP attraverso sistemi
(quali il DVB) che usano il Transport Stream come trasporto…
11
Transport Stream
• Il formato MPEG-2 alla base del DVB è il Transport Stream
(TS) che presenta le caratteristiche di robustezza agli
errori e gestione della multiplazione fondamentali per la
trasmissione satellitare. Al TS il DVB aggiunge tabelle e
descrittori ausiliari nonché tutte le specifiche per il
trasporto fisico dei dati.
• Il TS è così lo stream complessivo che trasporta tutti i dati
dei vari programmi trasmessi da un certo operatore. Per le
sua struttura rende comunque minimo il carico
computazionale necessario per:
-estrarre e decodificare anche solo parte dei dati dal flusso
complessivo.
-estrarre i pacchetti di uno o più programmi, anche da TS
differenti e reinserirli in un TS nuovo
12
6
Cosa contiene il TS?
E’ il risultato del multiplexing di pacchetti chiamati PES
(Packetized Elementary Stream) che sono ottenuti dai
flussi multimediali elementari detti ES (Elementary
Streams) contenenti i dati audio e video compressi e
altro (ad es. sottotitoli, o dati per servizi interattivi ed
anche datagrammi IP). Nello stesso multiplex sono
inviate anche le informazioni che servono per gestire le
associazioni fra tali dati e descriverli. Sono dette PSI
(Program Specific Informations). Lo standard DVB
integra le PSI dello standard MPEG-2 con ulteriori altre
descrizioni, nell’insieme dette SI (System Information).
13
ES (Elementary Stream) e PES
(Packetized Elementary Stream)
Gli ES sono gli stream dei dati video compressi (frame I, P, B, ecc.),
dell’audio, e di alcune altre informazioni come i sottotitoli. Ogni ES viene
suddiviso in pacchetti detti PES (Packetized Elementary Stream).
PES possono essere associati e
nell’insieme formare un programma
costituito ad esempio da più flussi
video (inquadrature multiple), più
tracce audio (audio multilingua) ed
infine dai sottotitoli. Non ci sono
specifiche sulla dimensione di tali
pacchetti che possono essere di taglia
variabile ad esempio per contenere
sempre un intero frame video, oppure
di grandezza fissata.
Gli header dei PES contengono la
descrizione del tipo di contenuto
nonché informazioni di controllo per la
sincronizzazione quali PTS e DTS. 14
7
Multiplexer
I PES e le PSI Sections attraverso multiplazione sono
raccolti in un unico stream.
•I PES e le PSI sections, per la multiplazione, vengono suddivisi in pacchetti
di 184 byte recanti 4 byte aggiuntivi di header. Sono i Transport Packets
(188 byte) che vanno a costituire il TS.
•E' specificato che un pacchetto PES deve sempre cominciare all'inizio del
payload di un transport packet e che ogni transport packet deve contenere
dati provenienti da un unico pacchetto PES. Per questo motivo eventuale
spazio rimanente in un transport packet che non è stato riempito deve
essere lasciato così e completato solo da stuffing bytes inseriti in uno
specifico campo detto Adaptation Field.
15
Pacchettizzazione del TS
16
8
Header di un Transport Packet
•Sync byte: 8 bit fissi all'esadecimale 47 (bin 1000 1111). Definisce l’inizio di un
transport packet e permette la sincronizzazione della trasmissione.
•Transport Error Indicator: indica che il pacchetto è danneggiato.
•Payload Unit Start Indicator: settato quando il pacchetto TS contiene l’inizio di un
PES.
•Transport Priority: indicatore di priorità per dare priorità a certi pacchetti di un
ES.
•Transport Scrambling Control: tipo di scrambling (cifratura)
•Adaptation Field Control: indica la presenza dell’campo opzionale “Adaptation Field”
17
Header di un Transport Packet
•Continuity Counter: contatore di continuità tra le sezioni PES. Questo contatore è
un campo di 4 bit che viene incrementato in maniera ciclica ogni volta che un nuovo
Transport Stream Packet dello stesso Elementary Stream viene generato; ciò dà al
decoder un modo per rilevare se sono stati persi dei Transport Stream Packet.
•PID (Packet Identifier): 13 bit. E' un sistema di mappatura che differenzia i
pacchetti e raggruppando quelli con lo stesso PID identifica quali trasportano un
determinato flusso di informazioni, ad esempio il video di un certo programma , o
l'audio in una certa lingua, o dati di servizio come le PSI tables.
•Adaptation field : E’ un’estensione dell’header non sempre presente in ogni
transport packet che contiene a sua volta diversi campi: tra cui l’indicatore di
temporizzazione PCR (vedi paragrafo), un indicatore di discontinuità, i byte di
riempimento (stuffing bytes) a volte necessari per completare i pacchetti ed altri
18
flag.
9
Indirizzamento nel TS
19
Program Specific Information (PSI)
Sono le informazioni che servono per descrivere e associare attraverso i
PID, i vari PES e di conseguenza i flussi elementari che vanno a costituire
un programma. Strutturalmente sono delle tabelle di associazione (PSI
Association Tables) che vengono inviate periodicamente dopo essere state
suddivide in sezioni (PSI Sections) e pacchettizzate nel TS allo stesso
modo dei PES. Per l’importanza dell’integrità delle informazioni delle
tabelle, spesso le PSI Sections sono protette da CRC.
•PAT: Program Association Table (è al livello più elevato nella gerarchia
delle tabelle)
Contiene la lista completa di tutti i programmi nel TS (identificati
attraverso un numero detto SID, Service IDentification) e i PID delle
rispettive PMT (Program Map Tables)
I pacchetti che la contengono sono identificati con il PID 0
Il programma numero 0 indica il PID del NIT
•PMT: Program Map Table
Contiene la lista dei PID (audio e video) associati a un certo programma e il
PID della PCR (può essere un PID video)
20
10
La PMT
21
PCR (Program Clock Reference)
Svolge la funzione di riferimento per la rigenerazione del clock di sistema
(System Time Clock a 27 Mhz) al ricevitore e per la decodifica e
sincronizzazione dei flussi elementari audio video, in modo da permettere la
ricostruzione di una base temporale coerente per i programmi. E’ un campo
di 42bit presente nell’Adaptation field di pacchetti TS dedicati, oppure in
quello di un PID video.
Al ricevitore un VCO (Voltage controlled oscillator) genera il clock locale a
27Mhz. Quando viene ricevuta la PCR, viene confrontata con un contatore
locale pilotato dal VCO e la differenza viene usata per correggere la
frequenza del VCO per ottenere il lock con la PCR e quindi con il 22
clock
remoto.
11
DTS (Decoding Time Stamps) e
PTS (Presentation Time Stamps)
Servono per stabilire l’esatto momento in cui un frame video I,B,P deve
essere rispettivamente decodificato o riprodotto. Sono inseriti negli
header di ogni PES. Se dovesse essere danneggiata e quindi inutilizzabile
l’informazione sul DTS e PTS di un PES, questo andrebbe scartato per
intero, cioè tutti i Transport packet che lo costituivano a partire da quello
che conteneva l’header danneggiato.
23
Riassunto dei passi per la ricerca e decodifica degli
ES associati a un programma
1-Vengono estratti dal TS i pacchetti che trasportano le
sezioni della PAT (sempre sul PID 0).
2-Una volta decodificata la PAT, si cerca al suo interno
il PID della PMT del programma di interesse.
3-La PMT del programma viene estratta dal TS e
decodificata. Ora si conoscono tutti gli ES che
costituiscono il programma.
4-Tra i PID elencati vi è anche quello dell’indicatore di
temporizzazione PCR necessaria per la decodifica.Se
non è uno dei video ES già individuati, ma un PID
autonomo, vanno estratti dal TS anche i pacchetti
identificati da tale valore.
5-Può partire il processo di decodifica, sincronizzata nel
rispetto delle sequenze indicate dai timestamps DTS
e PTS dei PES.
24
12
Analisi del
transport
Stream
TSReader
PMT
del
Program 1
13
• Analisi dello stream MPEG2
• Lo stream video viene gestito frame per
frame
• VirtualDUB (acquisisce in ingresso uno stream
MPEG2, lo visualizza e lo converte in AVI)
MPEG2
AVI
14
15
16
Valutazione della qualità di uno stream
decodificato: confronto tra le frames
decodificate con le originali
Originale
Co-decodificato
(a bassa velocità)
Valutazione della differenza
(tra lo stesso frame di due stream codificati a
differente bit rate) con Matlab
RGB1 = imread(‘ICE_1_5.JPG');
I1 = rgb2gray(RGB1);
RGB2 = imread(‘ICE_4.JPG');
I2 = rgb2gray(RGB2);
Z = imabsdiff(I1,I2);
imshow(Z)
M = mean(mean(Z));
disp('mean=')
disp(M)
mean = 5.7182
17
Trasformata Coseno Dscreta
Effetto della DCT
RGB = imread('strisce2.jpg');
I = rgb2gray(RGB);
II = double(I);
imshow(I), figure
J = dct2(II);
imshow(log(abs(J))), colormap(jet), colorbar, figure
%
% The commands below set values less than magnitude 10 in the
% DCT matrix to zero, then reconstruct the image using the
% inverse DCT function IDCT2.
%
JJ=J;
JJ(abs(JJ)<10) = 0;
imshow(log(abs(JJ))), colormap(jet), colorbar, figure
K = idct2(JJ);
imshow(K,[0 255]), figure
Z = imabsdiff(II,K);
imshow(Z), colormap bone, colorbar, figure
T = mean(mean(Z));
disp(T)
18
Effetto della DCT
Originale
Trasformata
Trasformata+soglia
Soglia = 200 (alta!!)
Mean = 3,37
Ricostruita
Differenza
Confronto tra le matrici
delle trasformate prima e
dopo l’introduzione della
soglia
19
Effetto della DCT
Soglia = 10
Mean = 1,67
MaxDiff = 43
Confronto tra le
matrici delle
trasformate prima e
dopo l’introduzione
della soglia
20
Effetto della DCT
Soglia = 200
Mean = 14
MaxDiff = 130
Soglia = 10
21
Soglia = 100
22