03.08.2013 Views

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

SHOW MORE
SHOW LESS

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.

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

Saved successfully!

Ooh no, something went wrong!