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