Capitolo 4 Codifica di Immagini - InfoCom
Capitolo 4 Codifica di Immagini - InfoCom
Capitolo 4 Codifica di Immagini - InfoCom
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Capitolo</strong> 4<br />
<strong>Co<strong>di</strong>fica</strong> <strong>di</strong> <strong>Immagini</strong><br />
Contenuto<br />
4.1 Principi <strong>di</strong> co<strong>di</strong>fica <strong>di</strong> immagini fisse<br />
Questo capitolo richiama brevemente alcuni concetti esposti in dettaglio in [1], qui riportati per facilitare l’accesso<br />
al lettore.<br />
Un’immagine <strong>di</strong>gitale é una particolare sequenza bi<strong>di</strong>mensionale x[n1,n2] definita su un supporto finito n1 =<br />
0, ···N − 1,n2 =0, ···N − 1. Poiché un colore puoéssere percettivamente riprodotto miscelando opportunamente<br />
tre sorgenti, é usuale rappresentare un’immagine a colori me<strong>di</strong>ante tre sequenze bi<strong>di</strong>mensionali, che in ogni punto<br />
rappresentano il peso relativo <strong>di</strong> ciascuna delle tre sorgenti ”primarie“. Una terna <strong>di</strong> sorgenti <strong>di</strong> riferimento nelle<br />
applicazioni <strong>di</strong> elaborazione, co<strong>di</strong>fica e trasmissione delle immagini corrispondenti tipicamente alle componenti rossa<br />
verde e blu é quella definita dal Comitée International de l’Eclairage (CIE) (1920), RCIE = 700 nm, GCIE =<br />
746.1 nm, BCIE = 435.8 nm4.1 . Una terna alternativa, comunemente utilizzata nella rappresentazione <strong>di</strong> immagini<br />
in forma <strong>di</strong>gitale é costituita dalla luminanza (Y ), rappresentativa del livello <strong>di</strong> luminositá espresso in scala <strong>di</strong> grigio,<br />
e da due componenti <strong>di</strong> crominanza che rappresentative <strong>di</strong> <strong>di</strong>fferenze <strong>di</strong> colore (CR,CB), definite come:<br />
Y def<br />
= αRR + αGG + αBB, αR + αG + αB =1; αG >αR,αG >αB<br />
CB(U) ∝ B − Y<br />
CR(V ) ∝ R − Y<br />
4.2 Un’immagine rappresentata in forma <strong>di</strong>gitale é definita su un supporto <strong>di</strong>screto e finito; anche le informazioni<br />
<strong>di</strong> colore sono rappresentate in forma numerica me<strong>di</strong>ante un numero finito <strong>di</strong> bit per campione, con un livello <strong>di</strong><br />
qualitá visuale <strong>di</strong>pendente dal numero <strong>di</strong> bit prescelto. Quando un’immagine é rappresentata nella forma luminanzacrominanze,<br />
é possibile sfruttare la circostanza che l’apparato visivo umano é meno sensibile ai dettagli dell’informazione<br />
<strong>di</strong> crominanza rispetto a quanto lo sia ai dettagli dell’informazione <strong>di</strong> luminanza. Pertanto la frequenza <strong>di</strong><br />
4.1 Molto utilizzata é anche la definizione <strong>di</strong> sorgenti (RN,GN ,BN) definita dal National Television Systems Committee (NTSC) (1950).<br />
4.2 La definizione piú comune (NTSC, ITU-R BT.601, ITU-R BT.709, JFIF, SMPTE) <strong>di</strong> luminanza pone αR =0.299,αG =0.587,αB =<br />
0.114.<br />
29
30 CAPITOLO 4. CODIFICA DI IMMAGINI<br />
campionamento spaziale puó essere <strong>di</strong>versa per le <strong>di</strong>verse componenti, ed in particolare ridotta per le componenti <strong>di</strong><br />
crominanza.<br />
I principali standard internazionali che definiscono le modalitá <strong>di</strong> rappresentazione delle immagini sono le Raccomandazioni<br />
ITU-R BT 601 (anche nota come CCIR 601) e ITU-R BT 609. Tali raccomandazioni definiscono<br />
alcune modalitá <strong>di</strong> rappresentazione <strong>di</strong> immagini a colori su un dominio <strong>di</strong>screto, che tipicamente prevedono un<br />
sottocampionamento per la componenti <strong>di</strong> crominanza e <strong>di</strong>fferiscono per le posizioni relative delle griglie <strong>di</strong> campionamento<br />
delle <strong>di</strong>verse componenti. Le piú <strong>di</strong>ffuse modalitá <strong>di</strong> sottocampionamento sono riportate in Tab. 4.1. Nella<br />
rappresentazione luminanza/crominanze, inoltre, é usuale quantizzare con un numero maggiore <strong>di</strong> bit i campioni <strong>di</strong><br />
luminanza (ad es. 8 bit) e con un numero minore i campioni delle crominanze (ad es. 4 bit).<br />
Nome Caratteristiche<br />
Modalitá <strong>di</strong> sottocampionamento<br />
4:4:4 Ognuno dei tre canali presenta lo stesso sampling rate, ovvero a 4 campioni<br />
<strong>di</strong> luminanza corrispondono 4+4=8 campioni <strong>di</strong> crominanza<br />
4:2:2 I canali <strong>di</strong> crominanza sono sottocampionati <strong>di</strong> un fattore 2 nella <strong>di</strong>rezione<br />
orizzontale, ovvero a 4 campioni <strong>di</strong> luminanza corrispondono 2+2=4<br />
campioni <strong>di</strong> crominanza<br />
4:2:0 I canali <strong>di</strong> crominanza sono sottocampionati <strong>di</strong> un fattore 2 sia nella <strong>di</strong>rezione<br />
orizzontale che nella <strong>di</strong>rezione verticale, ovvero a 4 campioni <strong>di</strong> luminanza<br />
corrispondono 2 campioni <strong>di</strong> crominanza<br />
Tabella 4.1: Modalitá <strong>di</strong> sottocampionamento piú <strong>di</strong>ffuse nell’elaborazione <strong>di</strong> immagini e sequenze video.
4.1. PRINCIPI DI CODIFICA DI IMMAGINI FISSE 31<br />
Trasformata Coseno Discreta (DCT) <strong>di</strong> sequenze <strong>di</strong> lunghezza finita<br />
La Trasformata Coseno Discreta <strong>di</strong> una sequenza xn <strong>di</strong> lunghezza finita N consiste nella rappresentazione della<br />
sequenza come sovrapposizione <strong>di</strong> N sequenze b (k)<br />
n <strong>di</strong> lunghezza finita N, che costituiscono una base ortonormale:<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
b (0)<br />
n<br />
b (k)<br />
n =<br />
= 1<br />
√ N ,n=0, ···N − 1<br />
<br />
2<br />
N cos<br />
<br />
2π k<br />
<br />
(n +1/2) ,n=0, ···N − 1; k =1, ···N − 1<br />
2N<br />
I coefficienti DCT sono calcolati come prodotto scalare della sequenza con i vettori della base, ovvero<br />
<br />
X0 = 1<br />
N−1<br />
√ xn<br />
N<br />
Xk =<br />
n=0<br />
N−1<br />
2 <br />
N<br />
n=0<br />
La trasformata é invertita dalla equazione <strong>di</strong> sintesi<br />
xn =<br />
<br />
xn cos 2π k<br />
<br />
(n +1/2) , k =0, ···N − 1<br />
2N<br />
<br />
1<br />
N X0<br />
N−1<br />
2 <br />
<br />
+ Xk cos 2π<br />
N<br />
k<br />
<br />
(n +1/2) , n =0, ···N − 1<br />
2N<br />
k=1<br />
Grazie alla ortogonalitá degli elementi della base, la migliore approssimazione (nel senso quadratico me<strong>di</strong>o) <strong>di</strong> xn<br />
nel sottospazio generato da un sottoinsieme <strong>di</strong> sequenze della base, si ottiene troncando la sommatoria agli elementi<br />
<strong>di</strong> tale sottoinsieme, e conservando i coefficienti Xk relativi a tali elementi. Inoltre, poiché le sequenze {b (k)<br />
n } sono<br />
a norma unitaria, la trasformazione conserva l’energia della sequenza nel dominio trasformato.<br />
La DCT coincide con la trasformata <strong>di</strong> Karhounen Loeve a per processi <strong>di</strong> Markov <strong>di</strong> or<strong>di</strong>ne 1.<br />
aLa trasformazione KLT <strong>di</strong> un insieme <strong>di</strong> sequenze aleatorie x <strong>di</strong> lunghezza finita N utilizza la base ortonormale <strong>di</strong> rappresentazione<br />
φi,i=1, ···N che minimizza l’errore quadratico me<strong>di</strong>o commesso rappresentando in modo approssimato la sequenza x = N i=0 xiφi con<br />
una sequenza ˆx = M i=0 xiφi + N i=M+1 ciφi, ovvero la sequenza ottenuta conservando un numero fissato M < N <strong>di</strong> coefficienti e<br />
sosituendo i rimanenti con opportuni valori costanti. Si puó <strong>di</strong>mostrare che i vettori della base ortonormale (φi H · φh = δij) e i valori dei<br />
coefficienti ci,i =1, ···N che minimizzano l’errore quadratico me<strong>di</strong>o E ||x − ˆx|| 2 N =E i=M+1 (xi − ci) 2<br />
<br />
risolvono l’equazione<br />
E (x − E {x}) · (x − E {x}) H φi = λiφi, ovvero sono gli autovettori della matrice <strong>di</strong> covarianza delle sequenze in questione, e i valori<br />
costanti sono pari a ci =E{xi} =E{x} H φi,i =1, ···N. Per processi <strong>di</strong> Markov <strong>di</strong> or<strong>di</strong>ne 1 gli autovettori della matrice <strong>di</strong> covarianza,<br />
ovvero i vettori della base KLT, concidono con i vettori della base DCT.<br />
A titolo puramente esemplificativo, la figura rappresenta la trasformata ottima <strong>di</strong> una v.a. Gaussiana bi<strong>di</strong>mensionale x =[x1,x2] T <strong>di</strong> valor<br />
me<strong>di</strong>o nullo mx =[0, 0] T <br />
<br />
2 1<br />
1<br />
e matrice <strong>di</strong> covarianza Kx =<br />
. La ddp risulta px =<br />
exp −<br />
1 2<br />
2π det(Kx) 1/2 1<br />
2 xT K −1<br />
<br />
x x . Gli<br />
√<br />
1/ 2<br />
autovettori sono b1 =<br />
1/ √ <br />
√<br />
−1/ 2<br />
, relativo all’autovalore λ1 =3,eb2 =<br />
2<br />
1/ √ <br />
, relativo all’autovalore λ2 =1. Le componenti<br />
2<br />
Xi = xT bi, i=1, 2 sono incorrelate (E {X1 X2} =0) ed hanno rispettivamente varianza E X2 <br />
1 =3, E X2 2 =1.<br />
.
32 CAPITOLO 4. CODIFICA DI IMMAGINI<br />
Figura 4.1: Esempio <strong>di</strong> trasformata ottima: x =[x1,x2] T v.a. Gaussiana bi<strong>di</strong>mensionale <strong>di</strong> valor me<strong>di</strong>o nullo e matrice <strong>di</strong><br />
covarianza K x.<br />
4.2 Rappresentazione dell’immagine nel dominio DCT<br />
Il principio fondamentale su cui si basa la co<strong>di</strong>fica <strong>di</strong> immagini fisse é la rappresentazione dell’immagine o <strong>di</strong> sue<br />
parti in un dominio trasformato, che goda <strong>di</strong> alcune caratteristiche fondamentali:<br />
• la trasformazione operi la compattazione dell’energia in pochi coefficienti;<br />
• i coefficienti che rappresentano l’immagine nel dominio trasformato abbiano <strong>di</strong>fferente rilevanza soggettiva,<br />
cos´ che su <strong>di</strong> essi possa essere operata una quantizzazione mirata a ridurre i bit assegnati ai coefficienti meno<br />
significativi;<br />
Poiché pressoché tutti i principali standard <strong>di</strong> co<strong>di</strong>fica <strong>di</strong> immagine operano la trasformazione su blocchi quadrati<br />
NxN, assumeremo subito questo come caso <strong>di</strong> riferimento. Consideriamo il blocco NxN come elemento <strong>di</strong> uno<br />
spazio vettoriale. La trasformazione del blocco puó essere interpretata come rappresentazione del blocco stesso in<br />
una opportuna base dello spazio vettoriale. Gli elementi della base sono a loro volta particolari blocchi NxN. La base<br />
piú utilizzata é quella relativa alla Trasformata Coseno Discreta (DCT), i cui elementi sono NxN blocchi, ciascuno<br />
<strong>di</strong> <strong>di</strong>mensione NxN:<br />
b (k1,k2)<br />
<br />
def<br />
2πk1(n1 +1/2) 2πk2(n2 +1/2)<br />
DCT [n1,n2] = α(k1)α(k2)cos<br />
cos<br />
,<br />
2N<br />
2N<br />
n1,n2 =0, ···N − 1, k1,k2 =0, ···N − 1
4.2. RAPPRESENTAZIONE DELL’IMMAGINE NEL DOMINIO DCT 33<br />
con α(0) def<br />
<br />
1 = N<br />
e α(k) =<br />
2<br />
N<br />
per 1 ≤ k ≤ N − 1.<br />
Come si vede il singolo elemento della base DCT é una funzione separabile, costituita dal prodotto <strong>di</strong> funzioni<br />
sinusoidali, con una perio<strong>di</strong>citá variabile con l’in<strong>di</strong>ce k. I fattori α(k) assicurano l’ortonormalitá della base.<br />
Figura 4.2: <strong>Immagini</strong> della base DCT.<br />
I coefficienti dello sviluppo del blocco <strong>di</strong> <strong>di</strong>mensione NxN x[n1,n2] si determinano calcolando il prodotto scalare<br />
con le relative funzioni della base:<br />
X DCT [k1,k2] = def<br />
N−1 <br />
=<br />
e a partire da essi é possibile sintetizzare il blocco originario<br />
N−1 <br />
x[n1,n2]b<br />
n1=0 n2=0<br />
(k1,k2)<br />
DCT [n1,n2]
34 CAPITOLO 4. CODIFICA DI IMMAGINI<br />
x[n1,n2] =<br />
N−1 <br />
N−1 <br />
X<br />
k1=0 k2=0<br />
(DCT) [k1,k2]b (k1,k2)<br />
DCT [n1,n2]<br />
La trasformata DCT offre interessanti proprietá <strong>di</strong> compattazione dell’energia nelle componenti a bassa frequenza,<br />
ovvero nei coefficienti XDCT [k1,k2] <strong>di</strong> basso in<strong>di</strong>ce.<br />
La trasformazione ottima dal punto <strong>di</strong> vista della capacitá <strong>di</strong> compattare l’energia <strong>di</strong> immagini aleatorie é nota<br />
come trasformata <strong>di</strong> Karhounen Loeve (KLT) e <strong>di</strong>pende dalle caratteristiche statistiche <strong>di</strong> autocorrelazione esibite dalle<br />
immagini stesse. Per particolari classi <strong>di</strong> immagini stocastiche (campi <strong>di</strong> Markov <strong>di</strong> or<strong>di</strong>ne 1), la KLT coincide con la<br />
DCT. Poiché una vasta classe <strong>di</strong> immagini naturali é ben approssimata da tale modello stocastico, si deduce che per tali<br />
immagini la DCT é una buona approssimazione della trasformazione ottima. La compattazione dell’energia operata<br />
dall’applicazione della DCT a blocchi 8x8 <strong>di</strong> immagini naturali é stata la tecnologia abilitante per la compressione<br />
<strong>di</strong> imagini fisse ed anche in larga misura per la compressione <strong>di</strong> sequenze video. Tale approccio é stato affiancato<br />
da approcci <strong>di</strong>fferenti solo nei piú recenti standard <strong>di</strong> co<strong>di</strong>fica (JPEG2000 per immagini fisse e H.264 per sequenze<br />
video).<br />
Dal punto <strong>di</strong> vista operativo osserviamo che la Trasformata DCT puó essere calcolata me<strong>di</strong>ante strutture computazionali<br />
estremamente efficienti. Poiché utilizza funzioni cosinusoidali, cioé a valori reali, le <strong>di</strong>verse implementazioni<br />
presenteranno <strong>di</strong>fferenze numeriche che rendono la trasformazione non perfettamente invertibile se operata con calcolatori<br />
con <strong>di</strong>fferente precisione e struttura <strong>di</strong> calcolo. Pertanto, gli standard che utilizzano tale trasformata specificano<br />
i limiti <strong>di</strong> accuratezza numerica che devono essere rispettati al fine <strong>di</strong> garantire l’interoperabilitá fra sistemi dotati <strong>di</strong><br />
realizzazioni numeriche <strong>di</strong>fferenti.<br />
4.2.1 Riduzione <strong>di</strong> ridondanza psicovisuale me<strong>di</strong>ante quantizzazione<br />
Le immagini naturali hanno un contenuto energetico prevalentemente rappresentato da basse frequenze. Pertanto, non<br />
tutti i coefficienti relativi alle alte frequenze sono <strong>di</strong>versi da zero. Inoltre, il sistema visivo umano è meno sensibile<br />
alle alte frequenze, che contengono l’informazione relativa ai dettagli fini, alla tessitura, piuttosto che alle basse.<br />
Pertanto, i coefficienti alle alte frequenze possono essere quantizzati con un limitato numero <strong>di</strong> bit, senza introdurre<br />
una <strong>di</strong>storsione sensibile dal punto <strong>di</strong> vista psicovisuale. Al limite, alcuni coefficienti possono essere scartati, senza<br />
che l’errore <strong>di</strong> ricostruzione sia soggettivamente percepibile.<br />
Al contrario, i coefficienti alle basse frequenze necessitano <strong>di</strong> una migliore rappresentazione; fra questi, il coefficiente<br />
X (DCT) [0, 0], che rappresenta il valore me<strong>di</strong>o della componente nel blocco osservato (coefficiente DC) riveste<br />
la maggiore importanza visuale e necessita della quantizzazione piú fine.<br />
4.3 Lo standard JPEG<br />
La struttura essenziale <strong>di</strong> un co<strong>di</strong>ficatore JPEG è mostrata nella Fig.4.3, che rappresenta la modalitá <strong>di</strong> co<strong>di</strong>fica <strong>di</strong><br />
base, detta modalitá sequenziale, e che consta <strong>di</strong> tre passi fondamentali, ovvero<br />
• rappresentazione dei dati in un dominio trasformato<br />
• quantizzazione<br />
• co<strong>di</strong>fica entropica
4.3. LO STANDARD JPEG 35<br />
Figura 4.3: Schema del <strong>Co<strong>di</strong>fica</strong>tore JPEG<br />
Ogni componente (luminanza, crominanze) dell’immagine da co<strong>di</strong>ficare è sud<strong>di</strong>visa in blocchetti da 8x8 pixel4.3 .<br />
Ciascuno <strong>di</strong> questi blocchetti è trasformato me<strong>di</strong>ante DCT, senza per<strong>di</strong>ta <strong>di</strong> informazione. I 64 coefficienti DCT sono<br />
applicati all’ingresso del quantizzatore. Tipicamente, tra i 64 coefficienti DCT assumono valore significativamente<br />
<strong>di</strong>verso da zero solo quelli relativi alle frequenze spaziali piú basse.<br />
Figura 4.4: Sud<strong>di</strong>visione dell’immagine in blocchi 8x8 e relativa DCT<br />
A ciascun coefficiente DCT X (DCT) [k1,k2] é associato uno specifico passo <strong>di</strong> quantizzazione Q[k1,k2], che<br />
rappresenta l’ampiezza dell’intervallo <strong>di</strong> quantizzazione adottato nella quantizzazione uniforme del coefficiente <strong>di</strong><br />
4.3La <strong>di</strong>mensione 8x8 dell’elemento <strong>di</strong> immagine da trasformare é la stessa per tutte le componenti anche quando le crominanze siano<br />
sottocampionate rispetto all’immagine originale.
36 CAPITOLO 4. CODIFICA DI IMMAGINI<br />
in<strong>di</strong>ci [k1,k2]. Tale passo é inversamente crescente con l’importanza visuale. I livelli <strong>di</strong> quantizzazione dei coefficienti<br />
corrispondenti alle alte frequenze spaziali sono tipicamente relativamente gran<strong>di</strong>. Per ogni coefficiente é operata una<br />
quantizzazione uniforme con intervalli <strong>di</strong> quantizzazione pari Q[k1,k2]: :<br />
˜X (DCT) <br />
(DCT) X [k1,k2]<br />
[k1,k2] =round<br />
, k1,k2 =0, ···, 7<br />
Q[k1,k2]<br />
Si osservi che quando un coefficiente DCT assume valori minori del relativo passo <strong>di</strong> quantizzazione, a valle della<br />
quantizzazione esso é rappresentato da un valore nullo.<br />
Lo standard consente la scelta degli 8x8 valori dei passi <strong>di</strong> quantizzazione, che sono inseriti nei dati co<strong>di</strong>ficati.<br />
A titolo esemplificativo, nello standard sono inseriti i valori riportati in Tabella 4.3; tali valori possono essere scalati<br />
tramite un fattore moltiplicativo scalare, al fine <strong>di</strong> bilanciare le prestazioni del co<strong>di</strong>ficatore in termini <strong>di</strong> efficienza <strong>di</strong><br />
compressione e <strong>di</strong> qualitá.<br />
Luminanza (Y )<br />
16 11 10 16 24 40 51 61<br />
12 12 14 19 26 58 60 55<br />
14 13 16 24 40 57 69 56<br />
14 17 22 29 51 87 80 62<br />
18 22 37 56 68 109 103 77<br />
24 35 55 64 81 104 113 92<br />
49 64 78 87 103 121 120 101<br />
72 92 95 98 112 100 103 99<br />
Crominanza (CRCB)<br />
17 18 24 47 66 99 99 99<br />
18 21 26 66 99 99 99 99<br />
24 26 56 99 99 99 99 99<br />
47 66 99 99 99 99 99 99<br />
66 99 99 99 99 99 99 99<br />
99 99 99 99 99 99 99 99<br />
99 99 99 99 99 99 99 99<br />
99 99 99 99 99 99 99 99<br />
Tabella 4.2: Tabelle dei passi <strong>di</strong> quantizzazione Q[k 1,k2] suggerite nello standard JPEG.<br />
A valle della quantizzazione, ciascun blocco 8x8 ´dell’immagine originale é rappresentato da un blocchetto DCT<br />
i cui coefficienti sono stati quantizzati in base a criteri <strong>di</strong> rilevanza psicovisuale. La Trasformata DCT ha operato un<br />
compattamento dell’energia e la quantizzazione adattativa ha rimosso le componenti ad alta frequenza percettivamente<br />
irrilevanti. Pertanto, ciascun blocco presenta una struttura tipica in cui la grande maggioranza dei coefficienti sono<br />
nulli, e i pochi coefficienti non nulli sono concentrati alle basse frequenze. Inoltre, esiste una correlazione residua fra<br />
trasformate <strong>di</strong> blocchi spazialmente a<strong>di</strong>acenti. In particolare, i coefficienti ˜X (DCT) [0, 0], valutati su blocchi a<strong>di</strong>acenti,<br />
sono molto correlati, dal momento che rappresentano il valor me<strong>di</strong>o <strong>di</strong> luminanza <strong>di</strong> regioni a<strong>di</strong>acenti <strong>di</strong> un immagine<br />
naturale. La struttura dei blocchi DCT e la correlazione fra blocchi a<strong>di</strong>acenti é sfruttata al fine <strong>di</strong> compattare<br />
l’informazione trasmessa.<br />
Per ciøche concerne i coefficienti ˜X (DCT) [0, 0] <strong>di</strong> ciascun blocco 8x8, é co<strong>di</strong>ficata e trasmessa la <strong>di</strong>fferenza fra<br />
il coefficiente quantizzato DC del blocco corrente e il coefficiente quantizzato del blocco precedente. Tale valore<br />
ha una <strong>di</strong>namica nominalmente maggiore, ma tipicamente piú piccola del coefficiente originale, e pertanto richiede<br />
meno bit per essere trasmessa con la stessa <strong>di</strong>storsione me<strong>di</strong>a sul valore ricostruito.<br />
I coefficienti ˜X (DCT) [k1,k2], (k1,k2) = (0, 0) (coefficienti AC) sono scan<strong>di</strong>ti in un or<strong>di</strong>ne tale da esplorare prima<br />
le basse frequenze orizzontali e verticali e successivamente le alte frequenze.<br />
Adottando questa scansione, l’informazione si presenta come alternanza <strong>di</strong> coefficienti <strong>di</strong>versi da zero e <strong>di</strong> successione<br />
<strong>di</strong> coefficienti nulli (corse <strong>di</strong> zeri). I coefficienti tipicamente <strong>di</strong>versi da zero si addensano all’inizio della<br />
scansione, successivamente i coefficienti non nulli tendono ad essere separati da corse <strong>di</strong> zeri via via piú lunghe, ed
4.3. LO STANDARD JPEG 37<br />
Figura 4.5: Coefficienti DC ed AC, preparazione alla co<strong>di</strong>fica<br />
alla fine della scansione pressoché tutti i coefficienti risultano nulli. Pertanto, l’informazione puó essere co<strong>di</strong>ficata<br />
trasmettendo i valori dei coefficienti nel caso che questi siano <strong>di</strong>versi da zero, e la lunghezza delle corse nel caso <strong>di</strong><br />
coefficienti nulli. In particolare, il blocco é descritto co<strong>di</strong>ficando l’ampiezza (AMPLITUDE) <strong>di</strong> ciascun coefficiente<br />
AC non nullo congiuntamente alla lunghezza della corsa <strong>di</strong> coefficienti nulli (RUNLENGTH) che lo precedono nella<br />
sequenza. In linea <strong>di</strong> principio, i coefficienti DCT presentano una <strong>di</strong>namica piú elevata rispetto ai coefficienti dell’immagine<br />
<strong>di</strong> partenza4.4 e co<strong>di</strong>ficare l’ampiezza <strong>di</strong> ciascun ˜X (DCT) [k1,k2] con il massimo numero <strong>di</strong> bit richiesto dalla<br />
<strong>di</strong>namica sarebbe <strong>di</strong>spen<strong>di</strong>oso. Pertanto, al fine <strong>di</strong> limitare al minimo il numero <strong>di</strong> bit utilizzato per rappresentare<br />
ciascun coefficiente il campo AMPLITUDE presenta lunghezza variabile; tale informazione (SIZE) deve essere anch’essa<br />
co<strong>di</strong>ficata e trasmessa al deco<strong>di</strong>ficatore. In definitiva, una corsa <strong>di</strong> zeri terminata da un coefficiente non nullo<br />
é descritta dai tre parametri (RUNLENGTH, SIZE, AMPLITUDE). Per i motivi sovra esposti, il valore <strong>di</strong>fferenziale<br />
del coefficiente DC é descritto dai due parametri (SIZE, AMPLITUDE).<br />
La coppia (RUNLENGTH, SIZE) é rappresentata tramite una parola <strong>di</strong> co<strong>di</strong>ce a lunghezza variabile (Variable<br />
Length Code, VLC). Il co<strong>di</strong>ce é costruito me<strong>di</strong>ante co<strong>di</strong>fica <strong>di</strong> Huffmann, rappresentando cioé con un minor numero<br />
<strong>di</strong> bit i simboli (RUNLENGTH, SIZE) piú frequenti e con un maggior numero <strong>di</strong> bit i simboli meno frequenti. Le<br />
tavole della co<strong>di</strong>fica <strong>di</strong> Huffmann sono co<strong>di</strong>ficate e comunicate al deco<strong>di</strong>ficatore. L’intero che rappresenta il valore<br />
del campo AMPLITUDE é rappresentato ancora da un co<strong>di</strong>ce a lunghezza variabile (Variable Length Integer, VLI).<br />
Il co<strong>di</strong>ce VLI non é realizzato me<strong>di</strong>ante co<strong>di</strong>fica <strong>di</strong> Huffmann, ma assegna parole piú lunghe ai valori <strong>di</strong> ampiezza<br />
piú elevati, in<strong>di</strong>pendentemente dalla frequenza <strong>di</strong> occorrenza relativa.<br />
Il deco<strong>di</strong>ficatore sulla base delle tavole della co<strong>di</strong>fica <strong>di</strong> Huffmann opera la deco<strong>di</strong>fica dell’ampiezza dei livelli<br />
quantizzati dei coefficienti DCT. I coefficienti ˜ X (DCT) [0, 0] sono ricostruiti a partire dalle <strong>di</strong>fferenze. Quin<strong>di</strong>, sulla<br />
base dei passi Q[k1,k2] nelle matrici <strong>di</strong> quantizzazione, ciascun livello quantizzato ˜X (DCT) [k1,k2] é riportato alla<br />
4.4I coefficienti DCT sono calcolati come X (DCT) [k1,k2] ∝ (1/ √ N) × (1/ √ N) × N−1 N−1 n1=0 n2=0 (···) N × (···). Per N =8=23 ,<br />
se i valori dell’immagine sono rappresentati in virgola fissa a 8 bit/pixel, la rappresentazione <strong>di</strong> ciascun coefficiente DCT richiede 11 bit. Per<br />
immagini ad alta qualitá a 12 bit/pixel (ad es. immagini me<strong>di</strong>che, ad elevato contenuto <strong>di</strong>agnostico), ciascun coefficiente DCT richiede 15 bit.
38 CAPITOLO 4. CODIFICA DI IMMAGINI<br />
<strong>di</strong>namica originale ˜X (DCT) [k1,k2] · Q[k1,k2]. La trasformazione IDCT opera il calcolo della Trasformata Coseno<br />
Discreta Inversa. I blocchi 8x8 ricostruiti sono giustapposti spazialmente generando l’immagine deco<strong>di</strong>ficata.<br />
L’algoritmo <strong>di</strong> co<strong>di</strong>fica sovraesposto, detto JPEG in modalitá sequenziale, prevede delle varianti che sono utili<br />
in tutte le applicazioni in cui si voglia trasferire rapidamente una versione a bassa qualità dell’immagine, e.g. per<br />
renderla subito visibile all’utente, raffinandola poi in passi successivi.<br />
Modalitá Progressiva.<br />
Per ciascun blocco 8x8 non sono trasmessi in un colpo solo tutti i coefficienti quantizzati, e per ciascun coefficiente<br />
tutti i bit, ma l’immagine é trasmessa in modo progressivo. Alla prima iterazione puøessere trasmesso solo un sottoinsieme<br />
dei coefficienti AC per ciascun blocco; tale approccio prende il nome <strong>di</strong> selezione spettrale. In contemporanea<br />
o in alternativa alla selezione spettrale, é possibile trasmettere solo i bit piú significativi <strong>di</strong> ciascun coefficiente;<br />
tale approccio é detto ad approssimazioni successive. Ricevuta questa descrizione sommaria <strong>di</strong> tutti i blocchetti, il<br />
deco<strong>di</strong>ficatore puó deco<strong>di</strong>ficare una versione grossolana dell’immagine co<strong>di</strong>ficata, raffinandola successivamente mano<br />
mano che informazioni <strong>di</strong> maggiore dettaglio sono ricevute. La scelta del numero dei coefficienti DCT e dei bit da<br />
considerare nelle scansioni progressive é lasciato all’implementazione.<br />
Figura 4.6: Selezione spettrale (caso <strong>di</strong> co<strong>di</strong>fica senza per<strong>di</strong>te): prima scansione (sinistra), seconda scansione(centro), ultima<br />
scansione (destra).<br />
Figura 4.7: Approssimazioni successive (caso <strong>di</strong> co<strong>di</strong>fica senza per<strong>di</strong>te): prima scansione (sinistra), seconda scansione(centro),<br />
ultima scansione (destra).
4.4. LO STANDARD JPEG 2000 39<br />
Modalitá Gerarchica<br />
Nella modalitá gerarchica l’immagine non é trasmessa <strong>di</strong>rettamente alla massima risoluzione; al contrario, sono<br />
co<strong>di</strong>ficate e trasmesse versioni dell’immagine caratterizzate da risoluzione ridotta ma via via crescente, fino alla risoluzione<br />
desiderata. Tali versioni sono ottenute filtrando passabasso (cioé sfocando) e sottocampionando 4.5 l’immagine<br />
originale.<br />
Quando riceve le versioni meno risolute, il deco<strong>di</strong>ficatore le deco<strong>di</strong>fica e le interpola per riportarle alle <strong>di</strong>mensioni<br />
originali. In tal modo, é subito <strong>di</strong>sponibile al deco<strong>di</strong>ficatore una versione sfocata, e compressa, dell’immagine<br />
originale. Via via che le nuove versioni sono rese <strong>di</strong>sponibili al deco<strong>di</strong>ficatore, é ricostruita un’immagine piú<br />
risoluta e piú focalizzata, fino all’ultima versione che é alla risoluzione dell’immagine originale. Per ovvie questioni<br />
<strong>di</strong> efficienza, una volta co<strong>di</strong>ficata la prima versione sottocampionata (sfocata) dell’immagine, il co<strong>di</strong>ficatore non<br />
co<strong>di</strong>ficherá <strong>di</strong>rettamente la versione piú risoluta (focalizzata), ma solamente la <strong>di</strong>fferenza residua tra le due. Si noti<br />
che se il residuo finale é co<strong>di</strong>ficato senza per<strong>di</strong>te, anche lo schema complessivo risulta senza per<strong>di</strong>te.<br />
Figura 4.8: Aumento <strong>di</strong> risoluzione (caso <strong>di</strong> co<strong>di</strong>fica senza per<strong>di</strong>te): risoluzione 1/4 (sinistra), risoluzione 1/2 (centro), risoluzione<br />
1/1 (destra).<br />
Modalità Senza Per<strong>di</strong>ta<br />
Tale modalitá non prevede quantizzazione ma solo opportuna co<strong>di</strong>fica senza per<strong>di</strong>ta dei coefficienti DCT, basata<br />
su una tecnica <strong>di</strong> co<strong>di</strong>fica pre<strong>di</strong>ttiva. É utilizzata in particolari applicazioni in cui non é tollerabile alcun tipo <strong>di</strong><br />
degradazione dell’immagine (immagini me<strong>di</strong>che, telesorveglianza).<br />
4.4 Lo standard JPEG 2000<br />
Lo standard JPEG 2000 si basa su<br />
• rappresentazione dell’immagine in un dominio trasformato (dominio wavelet)<br />
• quantizzazione dei coefficienti<br />
• opportuno or<strong>di</strong>namento e co<strong>di</strong>fica entropica dei coefficienti stessi ai fini della trasmissione<br />
4.5 Il filtraggio è necessario per evitare l’introduzione <strong>di</strong> <strong>di</strong>storsione da aliasing, visibile come una seghettatura dei bor<strong>di</strong>, nella successiva<br />
operazione <strong>di</strong> decimazione.
40 CAPITOLO 4. CODIFICA DI IMMAGINI<br />
Al fine <strong>di</strong> rendere l’algoritmo adattabile a immagini <strong>di</strong> <strong>di</strong>mensione <strong>di</strong>fferente, contenendo la complessitá del<br />
calcolo, il JPEG2000 prevede la partizione dell’immagine in rettangoli non sovrapposti (Tiles), co<strong>di</strong>ficati in<strong>di</strong>pendentemente<br />
e accessibili separatamente a livello <strong>di</strong> bitstream co<strong>di</strong>ficato. Nel caso <strong>di</strong> immagini multi componente<br />
campionate a risoluzione <strong>di</strong>versa per ciascuna componente, i tile hanno <strong>di</strong>mensioni <strong>di</strong>fferenti sulle <strong>di</strong>verse componenti4.6<br />
. Nel seguito, supporremo che l’immagine sia descritta da un solo Tile; in presenza <strong>di</strong> piú Tiles, quanto descritto<br />
in seguito é ripetuto per ogni Tile.<br />
Rappresentazione dell’immagine nel dominio wavelet<br />
Il dominio trasformato é generato me<strong>di</strong>ante applicazione ricorsiva all’immagine originale I <strong>di</strong> <strong>di</strong>mensione NxN, <strong>di</strong><br />
quattro filtri. Ciascun filtro realizza un filtraggio in <strong>di</strong>rezione orizzontale (passabasso o passaalto) e un filtraggio in<br />
<strong>di</strong>rezione verticale (passabasso o passaalto). Si generano cos´ quattro versioni dell’immagine, a seconda del filtraggio<br />
applicato. I filtraggi sono seguiti da un sottocampionamento <strong>di</strong> un fattore due in <strong>di</strong>rezione orizzontale e <strong>di</strong> un<br />
fattore due in <strong>di</strong>rezione verticale. A valle del filtraggio e del sottocampionamento, sono <strong>di</strong>sponibili quattro versioni<br />
<strong>di</strong> <strong>di</strong>mensioni N/2 × N/2 =N 2 /4 dell’immagine applicata all’ingresso del filtro, che <strong>di</strong>fferiscono a seconda dei<br />
filtraggi applicati: ILH ,LV , ILH ,HV , IHH ,LV , IHH ,HV . Ciascuna <strong>di</strong> queste versioni, a causa del sottocampionamento,<br />
ha <strong>di</strong>mensioni ridotte <strong>di</strong> un fattore 1 1 1<br />
× = rispetto all’immagine d’ingresso. Il numero complessivo <strong>di</strong> punti é pari<br />
2 2 4<br />
a quello dell’immagine <strong>di</strong> ingresso. Le componenti in alta frequenza rappresentano dettagli spazialmente meno visibili<br />
<strong>di</strong> quelli in bassa frequenza. Pertanto questa rappresentazione consente <strong>di</strong> evidenziare componenti visualmente piú<br />
rilevanti. La domanda che si pone é: l’immagine <strong>di</strong> partenza puó essere ricostruita a partire dagli NxN coefficienti cos´<br />
ottenuti? In effetti é possibile scegliere i filtri <strong>di</strong> analisi hLL,hLH,hHL,hHH in modo che l’immagine originaria sia<br />
ricostruita interpolando opportunamente e sovrapponendo i contributi delle <strong>di</strong>verse sottobande. Lo standard prevede<br />
due possibili implementazioni dei filtri, con <strong>di</strong>versi coefficienti; in particolare il filtraggio puó essere a coefficienti<br />
interi e frazionari, e pertanto perfettamente reversibile, oppure a coefficienti reali, e pertanto irreversibile a causa <strong>di</strong><br />
<strong>di</strong>fferenze <strong>di</strong> implementazione numerica (ovvero reversibile nei limiti dell’approssimazione numerica uilizzata).<br />
Operata questa rappresentazione dell’immagine originale, é possibile applicare nuovamente la procedura <strong>di</strong> filtraggio<br />
e sottocampionamento all’immagine ILH ,LV , che altro non rappresenta se non una versione a minore risoluzione<br />
(<strong>di</strong> un fattore 1/2 × 1/2) dell’immagine originale. Applicando i filtraggi passabasso e passaalto orizzontale<br />
e verticale a ILH ,LV e sottocampionando, essa sará a sua volta ripartita in quattro rappresentazioni <strong>di</strong> <strong>di</strong>mensione<br />
N/4 × N/4 =N 2 /16. Anche a questo livello della decomposizione, l’immagine ottenuta me<strong>di</strong>ante filtraggio<br />
passabasso alle basse frequenze orizzontali e verticali rappresenta una versione a risoluzione ridotta (<strong>di</strong> un fattore<br />
1/4 × 1/4) dell’immagine originale. Il filtraggio e il sottocampionamento sono applicati iterativamente all’immagine,<br />
e possono essere interpretati come un’operazione <strong>di</strong> trasformazione4.7che conduce ad un dominio in cui i coefficienti<br />
hanno <strong>di</strong>versa importanza visuale.<br />
Quantizzazione<br />
Dopo la trasformazione, i coefficienti sono quantizzati uniformemente. Lo standard prevede un <strong>di</strong>fferente passo <strong>di</strong><br />
quantizzazione per ogni sottobanda. La quantizzazione puó essere reversibile, se il passo é scelto pari ad uno. Tuttavia,<br />
pure operando la scelta del passo <strong>di</strong> quantizzazione pari ad uno, la co<strong>di</strong>fica puó essere con per<strong>di</strong>ta. Infatti mentre<br />
4.6La <strong>di</strong>mensione del Tile sulle <strong>di</strong>verse componenti é adattata in modo da mantenere la corrispondenza spaziale fra le rappresentazioni in<br />
sottobande delle <strong>di</strong>verse componenti.<br />
4.7E’ possibile <strong>di</strong>mostrare che tale rappresentazione costituisce una Discret Wavelet Transform dell’immagine originale.
4.4. LO STANDARD JPEG 2000 41<br />
Figura 4.9: Filtri passa-basso e passa alto irreversibili (9/7 Daubechies a coefficienti reali) utilizzati per il filtraggio ricorsivo<br />
lungo le righe e colonne dell’immagine originale e delle componenti in banda base.<br />
nel JPEG l’unico elemento <strong>di</strong> per<strong>di</strong>ta nello schema <strong>di</strong> co<strong>di</strong>fica é la quantizzazione, nel JPEG 2000 la compressione<br />
con per<strong>di</strong>ta puó avvenire approssimando o scartando completamente alcuni coefficienti nella fase <strong>di</strong> trasmissione.<br />
Formazione del bitstream<br />
Per ciascuna risoluzione, a valle della quantizzazione, le sottobande sono <strong>di</strong>vise in blocchi (co<strong>di</strong>ng block) <strong>di</strong><br />
<strong>di</strong>mensione tipica 64x64 o 32x32.<br />
Per ciascun blocco, i coefficienti sono scan<strong>di</strong>ti per strisce <strong>di</strong> altezza 4 e rappresentati per piani <strong>di</strong> bit, partendo<br />
dai bit piú significativi ai meno significativi. Preliminarmente ha luogo la co<strong>di</strong>fica del piano del bit piú significativo;<br />
la co<strong>di</strong>fica prosegue per ciascuno dei piani successivi, articolandosi in tre passi (significance propagation, magnitude<br />
refinement, clean-up).<br />
Per ciascun piano, sono co<strong>di</strong>ficati nell’or<strong>di</strong>ne<br />
• i bit dei coefficienti vicini a coefficienti risultati significativi nel piano precedente (fase <strong>di</strong> significance<br />
propagation )<br />
• i bit dei coefficienti risultati significativi nel piano precedente (fase <strong>di</strong> magnitude refinement )<br />
• i rimanenti bit (fase <strong>di</strong> clean-up)<br />
I bit sono co<strong>di</strong>ficati ricorrendo a tecniche piuttosto sofisticate <strong>di</strong> co<strong>di</strong>fica aritmetica basata sul contesto spaziale4.8 e<br />
runlength co<strong>di</strong>ng, che prevedono la trasmissione <strong>di</strong> apposite tavole al deco<strong>di</strong>ficatore.<br />
Il particolare or<strong>di</strong>namento dei bit co<strong>di</strong>ficati e trasmessi rispecchia un or<strong>di</strong>namento decrescente <strong>di</strong> importanza<br />
visuale. Pertanto, la co<strong>di</strong>fica con per<strong>di</strong>ta puó essere realizzata interrompendo la trasmissione ad un dato livello<br />
<strong>di</strong> risoluzione o in una data sottobanda, scartando i bit successivi. La natura dell’or<strong>di</strong>namento garantisce una<br />
quasi-ottimalitá <strong>di</strong> questa scelta, nel senso che per un’assegnata lunghezza in bit dell’informazione da trasmettere la<br />
<strong>di</strong>storsione visuale risultante sull’immagine ricostruita é ridotta al minimo.<br />
Caratteristiche innovative del JPEG 2000<br />
4.8Nella modalitá detta lazy co<strong>di</strong>ng, la co<strong>di</strong>fica aritmetica é <strong>di</strong>sabilitata sui piani <strong>di</strong> bit meno significativi, al fine <strong>di</strong> ridurre sia il costo<br />
computazionale che la sensibilitá agli errori.
42 CAPITOLO 4. CODIFICA DI IMMAGINI<br />
• Lo standard JPEG 2000 offre una maggiore efficienza <strong>di</strong> compressione rispetto al JPEG nel senso che a paritá<br />
<strong>di</strong> bit/pixel ricostruisce l’immagine con una minore <strong>di</strong>storsione rispetto all’originale. Oltre a questo aspetto,<br />
presenta alcune pecularitá migliorative che lo rendono preferibile da un punto <strong>di</strong> vista <strong>di</strong> sistema, che saranno<br />
qui <strong>di</strong> seguito accennate.<br />
• Al fine <strong>di</strong> co<strong>di</strong>ficare un’immagine assegnando al bitstream un fissato numero <strong>di</strong> bit, é sufficiente, dopo aver<br />
fissato il parametro <strong>di</strong> quantizzazione, procedere nella co<strong>di</strong>fica troncando la trasmissione quando sia stato<br />
raggiunto la <strong>di</strong>mensione prefissata del bitstream. Nel JPEG, invece, la generazione <strong>di</strong> un co<strong>di</strong>ce <strong>di</strong> lunghezza<br />
assegnata puó essere ottenuto solo iterativamente, assegnando <strong>di</strong>versi valori del parametro <strong>di</strong> quantizzazione e<br />
verificando la lunghezza in bit ottenuta.<br />
• Il co<strong>di</strong>ce JPEG 2000, grazie alla particolare struttura a livelli successivi (embedded), gode della proprietá <strong>di</strong><br />
scalabilitá. Un co<strong>di</strong>ce é scalabile quando consente l’accesso e la deco<strong>di</strong>fica parziale del bitstream a deco<strong>di</strong>ficatori<br />
<strong>di</strong> <strong>di</strong>fferente complessitá. All’interno del co<strong>di</strong>ce JPEG 2000 é imme<strong>di</strong>ato separare i dati relativi alle<br />
<strong>di</strong>verse risoluzioni, e per una fissata risoluzione, a <strong>di</strong>versi livelli <strong>di</strong> qualitá <strong>di</strong> riproduzione. La sintassi del Code<br />
Stream prevede a questo scopo l’unitá sintattica Layer, che rappresenta i dati relativi ad un fissato livello <strong>di</strong><br />
risoluzione. All’interno <strong>di</strong> un Layer, informazioni relative alla stessa zona spaziale sono raggruppate in apposite<br />
unitá sintattiche (Packet). In particolare, un pacchetto contiene i dati co<strong>di</strong>ficati relativi a gruppi <strong>di</strong> blocchi<br />
che occupano posizioni corrispondenti nelle tre sottobande(LH,HV ), (HH,LV ) e (HH,HV ). L’insieme dei<br />
gruppi <strong>di</strong> blocchi prende il nome <strong>di</strong> precinto. Le informazioni co<strong>di</strong>ficate relative ai blocchi <strong>di</strong> un precinto<br />
cosituiscono un pacchetto all’interno dei dati co<strong>di</strong>ficati.<br />
• Lo standard JPEG 2000 abilita la co<strong>di</strong>fica <strong>di</strong>fferenziata <strong>di</strong> <strong>di</strong>fferenti regioni spaziali dell’immagine (Region<br />
Of Interest , ROI). A valle della trasformazione wavelet, tutti i coefficienti pertinenti alla ROI ad una fissata<br />
risoluzione sono moltiplicati per un fattore 2 MAX SHIFT , dove il parametro MAX SHIFT é scelto in modo<br />
che tutti i coefficienti della ROI siano al <strong>di</strong>sopra dei valori piú gran<strong>di</strong> dei coefficienti del background; in altre<br />
parole, il background é descritto sui MAX SHIFT piani <strong>di</strong> bit meno significativi e la ROI sui rimanenti piani.<br />
Quin<strong>di</strong> i coefficienti wavelet sono co<strong>di</strong>ficati insieme al valore <strong>di</strong> MAX SHIFT. Quando il deco<strong>di</strong>ficatore<br />
ricostruisce valori dei coefficienti, attribuisce alla ROI tutti quelli che superano la soglia MAX SHIFT, e<br />
pertanto dopo averli ricostruiti li scala <strong>di</strong> 2 −MAX SHIFT riconducendoli alla <strong>di</strong>namica originale. Il vantaggio<br />
<strong>di</strong> questo meccanismo <strong>di</strong> separazione dei piani <strong>di</strong> bit sta nel fatto che il deco<strong>di</strong>ficatore non necessita <strong>di</strong> una<br />
co<strong>di</strong>fica esplicita della locazione spaziale della ROI ai fini <strong>di</strong> una corretta ricostruzione.<br />
4.5 Trasmissione <strong>di</strong> immagini su canali affetti da errori<br />
Le tecniche <strong>di</strong> co<strong>di</strong>fica <strong>di</strong> immagini fisse utilizzano co<strong>di</strong>ci a lunghezza variabile, che sono intrinsecamente sensibili<br />
ad errori <strong>di</strong> trasmissione. Infatti, non essendo definita a priori la lunghezza della parola, puó accadere che un errore<br />
su un bit trasformi una parola <strong>di</strong> co<strong>di</strong>ce in un’altra parola <strong>di</strong> co<strong>di</strong>ce, <strong>di</strong> lunghezza <strong>di</strong>fferente. Il deco<strong>di</strong>ficatore,<br />
pertanto, non solo legge una parola <strong>di</strong> co<strong>di</strong>ce errata, ma riprende la deco<strong>di</strong>fica del bitstream da una posizione<br />
errata. Ció compromette la deco<strong>di</strong>fica dei dati successivi. Inoltre, succede sovente che nel leggere il bitstream a<br />
partire dalla locazione errata, il deco<strong>di</strong>ficatore incontri sequenze <strong>di</strong> bit corrispondenti a parole <strong>di</strong> co<strong>di</strong>ce ammissibili,<br />
e pertanto l’errore <strong>di</strong> deco<strong>di</strong>fica non sia rivelato imme<strong>di</strong>atamente, ma solo dopo un intervallo <strong>di</strong> latenza causato
4.5. TRASMISSIONE DI IMMAGINI SU CANALI AFFETTI DA ERRORI 43<br />
dall’errata deco<strong>di</strong>fica <strong>di</strong> alcune parole consecutive. Questo meccanismo é in<strong>di</strong>cato come per<strong>di</strong>ta <strong>di</strong> sincronismo fra<br />
il deco<strong>di</strong>ficatore e il bitstream. Le tecniche <strong>di</strong> robustezza agli errori (error resilience) mirano in primo luogo a<br />
limitare al minimo numero <strong>di</strong> bit l’effetto <strong>di</strong> per<strong>di</strong>ta del sincronismo con il bitstream. La tecnica piú comunemente<br />
usata consiste nell’inserimento <strong>di</strong> resynchronization markers (RM), cioé <strong>di</strong> parole <strong>di</strong> co<strong>di</strong>ce <strong>di</strong> lunghezza fissata, non<br />
emulabili da combinazioni <strong>di</strong> altre parole <strong>di</strong> co<strong>di</strong>ce. I RM consentono al deco<strong>di</strong>ficatore <strong>di</strong> identificare all’interno del<br />
bitstream le locazioni corrette <strong>di</strong> accesso ai dati, e pertanto abilitano il recupero del sincronismo in presenza <strong>di</strong> errori<br />
<strong>di</strong> trasmissione. Tanto il JPEG che il JPEG 2000 prevedono la possibilitá <strong>di</strong> inserire marker <strong>di</strong> risincronizzazione nei<br />
dati co<strong>di</strong>ficati.<br />
Le tecniche <strong>di</strong> co<strong>di</strong>fica <strong>di</strong> immagini fisse fanno un uso intensivo <strong>di</strong> meccanismi <strong>di</strong> pre<strong>di</strong>zione spaziale, sia nella<br />
forma <strong>di</strong> pre<strong>di</strong>zione <strong>di</strong>retta dei coefficienti, sia nella costruzione <strong>di</strong> co<strong>di</strong>ficatori con memoria, le cui tavole <strong>di</strong> co<strong>di</strong>ce<br />
cioé sono scelte in funzione dei bit giá trasmessi. La presenza <strong>di</strong> un errore pertanto compromette la deco<strong>di</strong>fica dei<br />
dati <strong>di</strong>pendenti dal dato danneggiato. Questo meccanismo <strong>di</strong> pre<strong>di</strong>zione é particolarmente rilevante nel JPEG 2000,<br />
che pertanto consente <strong>di</strong> <strong>di</strong>sabilitare almeno parzialmente la <strong>di</strong>pendenza dei co<strong>di</strong>ci aritmetici utilizzati dal contesto,<br />
migliorando la robustezza del co<strong>di</strong>ce a detrimento dell’efficienza <strong>di</strong> compressione.<br />
Lo standard JPEG 2000 prevede un’estensione del profilo base (baseline) dotato <strong>di</strong> apposite funzionalitá <strong>di</strong>error<br />
resilience, detto Wireless JPEG 2000, o JPWL. Il co<strong>di</strong>ficatore JPWL arricchisce il co<strong>di</strong>ficatore JPEG 2000 <strong>di</strong> due<br />
tipi <strong>di</strong> funzionalitá:<br />
• descrizione della sensibilitá agli errori delle <strong>di</strong>verse porzioni del bitstream<br />
• protezione dagli errori delle <strong>di</strong>verse porzioni del bitstream me<strong>di</strong>ante tecniche FEC,<br />
Il deco<strong>di</strong>ficatore JPWL arricchisce il deco<strong>di</strong>ficatore JPEG 2000 <strong>di</strong> due tipi <strong>di</strong> funzionalitá:<br />
• correzione degli errori del bitstream<br />
• descrizione degli errori residui nel bitstream stesso<br />
La normativa specifica la sintassi da utilizzare per descrivere gli strumenti, me<strong>di</strong>ante l’introduzione <strong>di</strong> quattro<br />
nuove unitá sintattiche <strong>di</strong> lunghezza variabile (Error Protection Capability, che descrive quali strumenti <strong>di</strong> protezione<br />
sono utilizzati, Error Protection Block, che costituisce il co<strong>di</strong>ce <strong>di</strong> canale effettivamente utilizzato, Error Sensitivity<br />
Descriptor, che descrive la sensibilitá dei dati co<strong>di</strong>ficati ad eventuali errori <strong>di</strong> trasmissione e pertanto consente <strong>di</strong><br />
attuare tecniche <strong>di</strong> protezione <strong>di</strong>fferenziata dei dati, Residual Error Descriptor, che descrive gli errori residui dopo<br />
la deco<strong>di</strong>fica <strong>di</strong> canale). Tali unitá sono pacchetti dati costituiti da un header, da un campo in<strong>di</strong>cante la lunghezza<br />
del pacchetto, da un campo che specifica l’uso del successivo campo dati, ed il campo dati vero e proprio. A titolo<br />
<strong>di</strong> esempio, osserviamo che l’EPB puó utilizzare qualsiasi co<strong>di</strong>ce a correzione <strong>di</strong> errore che sia stato registrato presso<br />
la JPWL Registration Authority (RA); il pacchetto EPB contiene sia un identificativo univoco del particolare co<strong>di</strong>ce<br />
sia i dati ridondanti prodotti dal co<strong>di</strong>ce stesso.<br />
La <strong>di</strong>stinzione funzionale dei meccanismi <strong>di</strong> descrizione delle caratteristiche <strong>di</strong> sensibilitá agli errori e dei meccanismi<br />
<strong>di</strong> protezione consente, in linea <strong>di</strong> principio, <strong>di</strong> implementare tali funzionalitá in sistemi <strong>di</strong>fferenti dell’architettura<br />
<strong>di</strong> rete. Ad esempio, in un sistema <strong>di</strong> <strong>di</strong>stribuzione <strong>di</strong> immagini su reti eterogenee la descrizione dei dati potrebbe<br />
essere implementata a bordo del server <strong>di</strong> <strong>di</strong>stribuzione delle immagini, mentre la funzionalitá <strong>di</strong> protezione potrebbe<br />
essere realizzata all’interfaccia con la sottorete wireless <strong>di</strong> interesse, sia me<strong>di</strong>ante introduzione <strong>di</strong> co<strong>di</strong>ci FEC, sia<br />
me<strong>di</strong>ante tecniche <strong>di</strong> ritrasmissione selettiva dei dati piú importanti.
44 CAPITOLO 4. CODIFICA DI IMMAGINI<br />
Figura 4.10: Schema <strong>di</strong> principio della co<strong>di</strong>fica JPEG 2000.
4.5. TRASMISSIONE DI IMMAGINI SU CANALI AFFETTI DA ERRORI 45<br />
Figura 4.11: Esempio <strong>di</strong> co<strong>di</strong>fica per piani <strong>di</strong> bit.
Bibliografia<br />
[1] G. Scarano, “Dispense <strong>di</strong> elaborazione delle immagini”, http:<br />
infocom.uniroma1.it/gscarano.<br />
[2] B. G. Haskell, P. G. Howard, Y. A. LeCun, A. Puri, J. Ostermann, M.R. Civanlar, L. R. Rabiner, L. Bottou, and P. Haffner, “Image<br />
and Video Co<strong>di</strong>ng-Emerging Standards and Beyond”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 8, No. 7, pp.<br />
814-837, November 1998<br />
[3] A. Skodras, C. Christopoulos, and T. Ebrahimi, “The JPEG 2000 Still Image Compression Standards and Beyond”, IEEE Transactions<br />
on Circuits and Systems for Video Technology, Vol. 8, No. 7, pp. 814-837, November 1998<br />
46