Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Proposte di tesina Mario Toma
2
Algoritmo MPEG - YUV Trasformata coseno discreta
FDCT Quant. RLE-VLC - Trasformata coseno discreta (decorrelazione) Quantizzazione (molti campioni troncati a zero) Frame (luminanza + crominanza) Predizione Quant. Inv. Codifica entropica + run-length (riduzione ridondanza) Stream MPEG IDCT Stima di Moto
3
Algoritmi per la tesina
FDCT/IDCT trasformazione di un segnale in due dimensioni nel dominio della frequenza energia concentrata in pochi campioni concettualmente simile a trasformata di Fourier discreta Codifica entropica/run-length forte compressione grazie all’eliminazione della ridondanza Bitstream in ingresso ha molti zeri → codifica run-length Codifica entropica simile ad Huffman
4
Trasformata Coseno Discreta
fj= xk cos[(/n) j (k+1/2)] Complessità O(n 2) i fattori cjk = cos[(/n) j (k+1/2)] sono costanti per n fissato (MPEG n = 8) per n costante la DCT si riduce ad una sommatoria di prodotti per costante: fj= xk cjk k=0 n-1 k=0
5
fpq= xij cos[(/N) p(i+1/2)] cos[(/M) q(j+1/2)]
2D-DCT N-1 M-1 fpq= xij cos[(/N) p(i+1/2)] cos[(/M) q(j+1/2)] Trasformazione della matrice di pixel xij nella matrice fpq la doppia sommatoria si può separare nel prodotto di due 1D-DCT (caso precedente) si computa prima la 1D-DCT sulle M colonne, e sul risultato si computa la 1D-DCT sulle N righe i=0 j=0
6
DCT: Calcolo ottimizzato
I termini moltiplicativi costanti: cjk = cos[(/n) j (k+1/2)] presentano delle proprietà di simmetria che permettono di semplificare i calcoli. Esempio per n=8: Implementazione diretta: 64 moltiplicazioni, 56 addizioni Algoritmo di Loeffler: 11 moltiplicazioni e 29 addizioni
7
Calcolo della DCT sul PiCoGA
La DCT si riduce ad un calcolo di somme e moltiplicazioni per costante. Problema: il PiCoGA non implementa le moltiplicazioni in modo efficiente Soluzioni: sviluppare il prodotto per costante attraverso operazioni di somma e shift sfruttare l’aritmetica distribuita
8
Aritmetica Distribuita (DA)
Utilizzata nel calcolo di espressioni del tipo: y= Ak xk dove le grandezze Ak sono costanti. Se xk è rappresentato in complemento a due, e nell’ipotesi che | xk | < 1 xk = -bk0 + bkn 2-n y= Ak [-bk0 + bkn 2-n ] y = [ Ak bkn ] 2-n + Ak (-bk0) K k=1 N-1 n=1 K N-1 k=1 n=1 N-1 K K n=1 k=1 k=1
9
Aritmetica Distribuita
Il termine individuato precedentemente: Cn = Ak bkn può assumere solo 2K possibili valori in quanto bkn sono K variabili binarie. L’espressione sopra riportata può essere quindi pre-calcolata e memorizzata in una ROM, indirizzata dal vettore di K bit bkn. Cn = R(bkn) K k=1
10
Aritmetica Distribuita
Quindi, utilizzando le ROM: y = R1(bkn) 2-n + R2 (bk0) Rimangono da eseguire N accumulazioni e shift. Tale approccio può essere sviluppato ulteriormente al fine di aumentare lo speed-up e ridurre le risorse hardware Nell’ MPEG, con N=8 (pixel rappresentati con 8 bit), sono necessarie delle ROM con 256 locazioni da 8 bit ed un accumulatore Implementabile sul PiCoGA N-1 n=1
11
Attività Tesina Studiare il materiale a disposizione riguardante una implementazione ottimizzata della DCT Assimilare le basi dell’aritmetica distribuita Ideare uno schema che sfrutta l’aritmetica distribuita per il calcolo della DCT, mappabile su PiCoGA Implementazione in Griffy-C e simulazione dello schema ideato
12
Codifica entropica + run-length (MPEG)
A valle della quantizzazione i simboli presentano le seguenti caratteristiche: lunghe sequenze di zeri (termini di minore energia troncati a zero) Vantaggi da codici run-length distribuzione delle frequenze di occorrenza dei simboli non uniforme Vantaggi da codifica a lunghezza variabile tipo Huffman L’MPEG prevede una codifica a lunghezza variabile che contiene entrambe le caratteristiche
13
Variable Length Coding (VLC)
Si considerano le coppie (symb_in,run-length), dove run-length è il numero di zeri che precede il simbolo in ingresso symb_in. Ad ogni coppia si associa un simbolo in uscita, symb_out avente un numero di bit variabile Il numero di bit di symb_out dipende dalla probabilità di occorrenza della coppia (symb_in,run-length). Una tabella associativa permette di ottenere symb_out dalla coppia (symb_in,run-length). Non tutte le possibili coppie (symb_in,run-length) hanno delle entry nella tabella associativa. In caso di entry assente, symb_out coincide con la coppia (symb_in,run-length) preceduta da una opportuna sequenza di escape (per evitare confusioni con altri simboli del codice) La tabella associativa è stabilita dal trasmettitore (può essere predefinita o variabile dinamicamente) e viene trasmessa al ricevitore insieme al bitstream.
14
VLC: Implementazione su DSP
La tabella associativa è implementata attraverso una matrice indirizzata dalla coppia (symb_in,run-length) Matrice suddivisa in varie sottomatrici → solo alcune coppie (symb_in,run-length) sono indirizzi validi La matrice contiene le coppie (symb_out,nbit), dove nbit è il numero di bit del simbolo in uscita symb_out. Una procedura provvede a scrivere gli nbit di symb_out sul bitstream in uscita
15
VLC: Implementazione su XiRisc
La tabella associativa può essere implementata attraverso le LUT del PiCoGA Svantaggio: occorre un meccanismo per modificare a run-time il contenuto delle LUT Vantaggio: il PiCoGA funge da “cache dedicata” con un risparmio nel consumo di potenza
16
VLC: implementazione su XiRisc
La procedura per scrivere nbit sul bitstream è molto inefficiente (operazioni bit-level) PiCoGA utilizzabile per implementare queste operazioni bit-level Possibilità di integrare in un’unica pga-op sia l’accesso in tabella che la generazione del bitstrea, im uscita
17
Proposta di tesina Implementazione della tabella associativa sul PiCoGA con meccanismo per la programmazione run-time delle LUT Definizione della pga-op per la gestione del bitstream in uscita Versione duale delle due tesine anche per il decoder VLC
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.