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
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
50 CAPITOLO 3. LO STANDARD <strong>JPEG</strong> PER LA COMPRESSIONE DI IMMAGINI FISSE<br />
3.2 Modalità Sequenziale<br />
blocco 8x8<br />
Immagine<br />
Originale<br />
xn [ , n ]<br />
DCT<br />
1 2 X k1 k2<br />
DCT<br />
( ) [ , ]<br />
Quantizzatore<br />
( DCT)<br />
X [ k , k ]<br />
1 2<br />
Co<strong>di</strong>ficatore<br />
Entropico<br />
Tavole Tavole<br />
Figura 3.2: Schema del Co<strong>di</strong>ficatore <strong>JPEG</strong><br />
Dati Immagine<br />
Compressa<br />
La struttura essenziale <strong>di</strong> un co<strong>di</strong>ficatore <strong>JPEG</strong> è mostrata nel<strong>la</strong> Fig.3.2. Ogni componente dell’immagine da co<strong>di</strong>ficare<br />
è sud<strong>di</strong>visa in blocchetti da 8x8 pixel. Secondo una scansione lessicografica, ciascuno <strong>di</strong> questi blocchetti è e<strong>la</strong>borato<br />
dal<strong>la</strong> trasformazioni in<strong>di</strong>cate come DCT, Quantizzatore, Co<strong>di</strong>ficatore Entropico.<br />
3.2.1 Trasformata Dicreta del Coseno (DCT)<br />
Questa trasformazione o<strong>per</strong>a il calcolo del<strong>la</strong> DCT. <strong>Lo</strong> standard non specifica un partico<strong>la</strong>re algoritmo <strong>di</strong> calcolo,<br />
<strong>la</strong>sciando così a chi sviluppa il co<strong>di</strong>ficatore <strong>la</strong> libertà <strong>di</strong> implementare un partico<strong>la</strong>re proce<strong>di</strong>mento. Ciò <strong>di</strong>pende dal<br />
fatto che <strong>di</strong>verse applicazioni possono richiedere <strong>di</strong>fferenti realizzazioni del calco<strong>la</strong>tore <strong>di</strong> DCT, e.g. realizzazioni<br />
hardware VLSI rispetto a realizzazioni software o ibride come un DSP de<strong>di</strong>cato, implementazioni in artimetica a<br />
virgo<strong>la</strong> fissa o mobile, etc., ciascuna con <strong>di</strong>fferenti compromessi fra velocità e precisione.<br />
Tale flessibilità può <strong>per</strong>ò presentare qualche svantaggio. In effetti, idealmente, <strong>la</strong> cascata <strong>di</strong> una trasformazione<br />
DCT e <strong>di</strong> una trasformazione DCT inversa (IDCT) non comporta alcuna <strong>per</strong><strong>di</strong>ta <strong>di</strong> informazione. In realtà, <strong>la</strong><br />
presenza <strong>di</strong> funzioni sinusoidali nell’espressione del<strong>la</strong> trasformata, rende impossibile <strong>di</strong> fatto realizzare i calcoli con<br />
accuratezza <strong>per</strong>fetta. Dunque potremmo trovarci <strong>di</strong> fronte al problema che co<strong>di</strong>ficatori e deco<strong>di</strong>ficatori <strong>di</strong>versi, in<br />
linea <strong>di</strong> principio, potrebbero produrre risultati anche abbastanza <strong>di</strong>versi fra loro. Per evitare tale problema, nello<br />
standard <strong>JPEG</strong> sono specificati dei test <strong>di</strong> conformità rispetto all’accuratezza cui si devono adeguare il co<strong>di</strong>ficatore<br />
e il deco<strong>di</strong>ficatore.<br />
In ogni caso, ricor<strong>di</strong>amo le definizioni del<strong>la</strong> DCT <strong>di</strong> un’immagine x[n1,n2] <strong>di</strong> <strong>di</strong>mensioni N ×N.<br />
• Trasformata DCT (analisi):<br />
X DCT N−1 X<br />
[k1,k2] =α(k1)α(k2)<br />
con α(0) def<br />
q<br />
1 = N e α(k) =<br />
• Trasformata IDCT (sintesi):<br />
x[n1,n2] =<br />
N−1 X<br />
N−1 X<br />
k1=0 k2=0<br />
N−1 X<br />
n1=0 n2=0<br />
q<br />
2<br />
N<br />
µ µ <br />
π(2n1 +1)k1 π(2n2 +1)k2<br />
x[n1,n2]cos<br />
cos<br />
2N<br />
2N<br />
<strong>per</strong> 1 ≤ k ≥ N − 1;<br />
α(k1)α(k2)X (DCT) µ µ <br />
π(2n1 +1)k1 π(2n2 +1)k2<br />
[k1,k2]cos<br />
cos<br />
2N<br />
2N<br />
0 ≤ k1,k2 ≤ N − 1<br />
0 ≤ n1,n2 ≤ N − 1<br />
Dalle Figg. 3.3, 3.4, e 3.5 è possibile apprezzare come <strong>la</strong> DCT compatti l’energia me<strong>di</strong>a nelle componenti a bassa<br />
frequenza. In tali figure, l’ampiezza dei coefficienti DCT é rappresentato come livelli <strong>di</strong> grigio, dal nero verso il<br />
bianco.<br />
Tale compattazione è ancora più evidente <strong>per</strong> blocchetti <strong>di</strong> <strong>di</strong>mensione contenuta (ve<strong>di</strong> Figg. 3.4 e 3.5), dove<br />
<strong>la</strong> corre<strong>la</strong>zione tra i pixel cresce, e l’approssimazione DCT → KLT è sufficientemente accurata. Si osservi come,<br />
bastano pochissimi coefficienti DCT <strong>per</strong> “spiegare” blocchetti con scarse variazioni del livello <strong>di</strong> grigio.