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
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.
- Page 1 and 2: Capitolo 3 Lo Standard JPEG per la
- Page 3 and 4: 50 CAPITOLO 3. LO STANDARD JPEG PER
- Page 5 and 6: 52 CAPITOLO 3. LO STANDARD JPEG PER
- Page 7: 54 CAPITOLO 3. LO STANDARD JPEG PER
- Page 11 and 12: 58 CAPITOLO 3. LO STANDARD JPEG PER
- Page 13 and 14: Capitolo 4 Elementi di Codifica Vid
- Page 15 and 16: 62 CAPITOLO 4. ELEMENTI DI CODIFICA
- Page 17 and 18: 64 CAPITOLO 4. ELEMENTI DI CODIFICA
- Page 19 and 20: 66 CAPITOLO 4. ELEMENTI DI CODIFICA
- Page 21 and 22: 68 CAPITOLO 4. ELEMENTI DI CODIFICA
- Page 23 and 24: 70 CAPITOLO 4. ELEMENTI DI CODIFICA
- Page 25: Indice Analitico Symbols YCRCB ....
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