Lo Standard JPEG per la Compressione di Immagini Fisse - InfoCom

Lo Standard JPEG per la Compressione di Immagini Fisse - InfoCom Lo Standard JPEG per la Compressione di Immagini Fisse - InfoCom

infocom.uniroma1.it
from infocom.uniroma1.it More from this publisher
03.08.2013 Views

3.2. MODALITÀ SEQUENZIALE 55 RUNLENGTH/SIZE 0 1 2 ... 10 11 0 EOB ... 1 X ... . X valori legali di SIZE . X ... 15 ZRL ... Tabella 3.3: Struttura del Simbolo-1 con i simboli speciali di fine blocchetto (EOB) ed estensione di corsa (ZRL). Secondo passo: codifica a lunghezza di parola variabile Una volta creata la sequenza intermedia, a essa vengono associate le effettive parole di codice. Ogni Simbolo-1 è codificato mediante una parola di codice a lunghezza variabile (Variable Length Code, VLC) ottenuta mediante codifica di Huffman. Il relativo Simbolo-2 è codificato mediante un cosiddetto intero di lunghezza variabile (Variable Length Integer, VLI) la cui lunghezza è specificata dal campo SIZE del Simbolo-1. La parola VLI si ottiene come segue: per ogni “piano” individuato dal valore di SIZE, si effettua una translitterazione con parole di codice di lughezza pari proprio a SIZE. Un esempio relativo a SIZE=3 é riportato in Tab.3.4. AMPLITUDE -7 -6 -5 -4 4 5 6 7 Parola di Codice 000 001 010 011 100 101 110 111 Tabella 3.4: Translitterazione del campo AMPLITUDE (SIZE=3). Sia i VLC che i VLI sono codici a lunghezza di parola variabile, ma solo i VLC sono codici di Huffman. Un fatto notevole è che la lunghezza di un VLC non è nota finchè la parola non è stata decodificata, mentre la lunghezza di un VLI è contenuta nel VLC precedente: la coppia VLC e VLI costituisce una parola di un codice concatenato. 3.2.4 Decodificatore Il decodificatore, come mostrato nello schema qui di seguito riportato, è cosituito da blocchi analoghi a quelli del codificatore. Dati Immagine Compressa Decodificatore Entropico Tavole ( DCT) X [ k , k ] 1 2 De-Quantizzatore Tavole ( DCT) X [ k , k ] 1 2 IDCT Figura 3.9: Schema del Decodificatore JPEG xn [ 1, n2] Immagine Ricostruita Il decodificatore entropico rimappa, mediante le tavole comunicate con i dati, lo stream di cifre binarie in simboli intermedi e da questi in valori quantizzati. Dopo aver calcolato i coefficienti DC, i.e. DCi = DCi−1 + ∆DCi

56 CAPITOLO 3. LO STANDARD JPEG PER LA COMPRESSIONE DI IMMAGINI FISSE il de-quantizzatore ripristina la dinamica moltiplicando ciascun coefficiente DCT per il relativo coefficiente di quantizzazione, comunicato con i dati, i.e. ˆX (DCT) [k1,k2] = ˙X (DCT) [k1,k2] · Q[k1,k2] La trasformazione IDCT opera il calcolo della Trasformata Coseno Discreta Inversa, ottenendo i campioni del blocchetto ˆx[n1,n2], affetti dalla distorsione introdotta nella codifica. Infine, l’immagine completa si ottiene posizionando correttamente, secondo un ordine lessicografico, tutti i blocchetti 8x8. 3.3 Modalità Progressiva Tale modalità è impiegata quando si voglia trasferire una immagine codificata su un canale a basso bit-rate, in quanto consente di trasferire rapidamente una versione a bassa qualità dell’immagine, e.g. per renderla subito visibile all’utente, e di raffinarla per passi successivi. Sostanzialmente, in fase di codifica, i coefficienti DCT vengono codificati in gruppi successivi, e tali gruppi sono poi inviati in successione attraverso il canale; tipicamente i gruppi di coefficienti sono selezionati in base alla loro importanza psicovisiva, e dunque il primo gruppo comprende il coefficiente DC (livello medio di grigio del blocchetto) e alcuni coefficienti AC. L’immagine decodificata dalla ricezione di (solo) tale gruppo si presenterà come un insieme di blocchi uniformi; aggiungendo un secondo gruppo di coefficienti AC, il dettaglio dell’immagine aumenterà, e così via fino a raggiungere il livello corrispondente a quello ottenibile mediante la modalità sequenziale. La modalità progressiva si articola in due metodi complementari: • selezione spettrale; • approssimazioni successive. DCT 0 1 2 62 63 MSB BLOCCHI LSB Figura 3.10: Rappresentazione numerica dei coefficienti DCT per i vari blocchetti di un’immagine. Con riferimento alla Fig.3.10, dove la rappresentazione numerica dei coefficienti DCT dei vari blocchetti è illustrata in modo tridimensionale, i metodi di selezione spettrale e approssimazioni successive sono illustrati in Fig.3.11.

3.2. MODALITÀ SEQUENZIALE 55<br />

RUNLENGTH/SIZE 0 1 2 ... 10 11<br />

0 EOB ...<br />

1 X ...<br />

. X valori legali <strong>di</strong> SIZE<br />

. X ...<br />

15 ZRL ...<br />

Tabel<strong>la</strong> 3.3: Struttura del Simbolo-1 con i simboli speciali <strong>di</strong> fine blocchetto (EOB) ed estensione <strong>di</strong> corsa (ZRL).<br />

Secondo passo: co<strong>di</strong>fica a lunghezza <strong>di</strong> paro<strong>la</strong> variabile<br />

Una volta creata <strong>la</strong> sequenza interme<strong>di</strong>a, a essa vengono associate le effettive parole <strong>di</strong> co<strong>di</strong>ce.<br />

Ogni Simbolo-1 è co<strong>di</strong>ficato me<strong>di</strong>ante una paro<strong>la</strong> <strong>di</strong> co<strong>di</strong>ce a lunghezza variabile (Variable Length Code, VLC)<br />

ottenuta me<strong>di</strong>ante co<strong>di</strong>fica <strong>di</strong> Huffman. Il re<strong>la</strong>tivo Simbolo-2 è co<strong>di</strong>ficato me<strong>di</strong>ante un cosiddetto intero <strong>di</strong> lunghezza<br />

variabile (Variable Length Integer, VLI) <strong>la</strong> cui lunghezza è specificata dal campo SIZE del Simbolo-1. La paro<strong>la</strong> VLI<br />

si ottiene come segue: <strong>per</strong> ogni “piano” in<strong>di</strong>viduato dal valore <strong>di</strong> SIZE, si effettua una translitterazione con parole <strong>di</strong><br />

co<strong>di</strong>ce <strong>di</strong> lughezza pari proprio a SIZE. Un esempio re<strong>la</strong>tivo a SIZE=3 é riportato in Tab.3.4.<br />

AMPLITUDE -7 -6 -5 -4 4 5 6 7<br />

Paro<strong>la</strong> <strong>di</strong> Co<strong>di</strong>ce 000 001 010 011 100 101 110 111<br />

Tabel<strong>la</strong> 3.4: Translitterazione del campo AMPLITUDE (SIZE=3).<br />

Sia i VLC che i VLI sono co<strong>di</strong>ci a lunghezza <strong>di</strong> paro<strong>la</strong> variabile, ma solo i VLC sono co<strong>di</strong>ci <strong>di</strong> Huffman. Un fatto<br />

notevole è che <strong>la</strong> lunghezza <strong>di</strong> un VLC non è nota finchè <strong>la</strong> paro<strong>la</strong> non è stata deco<strong>di</strong>ficata, mentre <strong>la</strong> lunghezza <strong>di</strong><br />

un VLI è contenuta nel VLC precedente: <strong>la</strong> coppia VLC e VLI costituisce una paro<strong>la</strong> <strong>di</strong> un co<strong>di</strong>ce concatenato.<br />

3.2.4 Deco<strong>di</strong>ficatore<br />

Il deco<strong>di</strong>ficatore, come mostrato nello schema qui <strong>di</strong> seguito riportato, è cosituito da blocchi analoghi a quelli del<br />

co<strong>di</strong>ficatore.<br />

Dati Immagine<br />

Compressa<br />

Deco<strong>di</strong>ficatore<br />

Entropico<br />

Tavole<br />

( DCT)<br />

X [ k , k ]<br />

1 2<br />

De-Quantizzatore<br />

Tavole<br />

( DCT)<br />

X [ k , k ]<br />

1 2<br />

IDCT<br />

Figura 3.9: Schema del Deco<strong>di</strong>ficatore <strong>JPEG</strong><br />

xn [ 1, n2]<br />

Immagine<br />

Ricostruita<br />

Il deco<strong>di</strong>ficatore entropico rimappa, me<strong>di</strong>ante le tavole comunicate con i dati, lo stream <strong>di</strong> cifre binarie in simboli<br />

interme<strong>di</strong> e da questi in valori quantizzati.<br />

Dopo aver calco<strong>la</strong>to i coefficienti DC, i.e.<br />

DCi = DCi−1 + ∆DCi

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!