![[L'elefantino con la matita, logo del sito]](/img/ele.png)
seminario accessibilità | libro accessibilità | scritti | traduzioni w3c | forum | autore | mappa | tasti rapidi | cronologia | presentazione | il pesa-nervi
La sigla JPEG identifica una commissione di esperti denominata
Joint Photographic Expert Group
, formata nel 1986 con lo
scopo di stabilire uno standard di compressione per le immagini a
tono continuo – cioè di tipo fotografico – sia
a colori sia in bianco e nero. Il lavoro di questa commissione ha
portato alla definizione di una complessa serie di algoritmi,
approvata come standard ISO nell'agosto del 1990 e
successivamente divenuta la raccomandazione T.81 (9/92) dell'ITU,
International Telecommunication Union
. Chi la sera a letto
ha difficoltà ad addormentarsi, può leggerne la
versione integrale, scaricabile in formato PDF dal sito del W3C.
L'indirizzo è http://www.w3.org/Graphics/JPEG/itu-t81.pdf:
sono 186 pagine fitte di definizioni, procedure, grafici,
immagini esemplificative e formule matematiche. Auguri di buona
lettura!
Il JPEG è dunque uno standard industriale e non va
confuso con il formato di file JPG, che rappresenta di volta in
volta, a seconda della software house
che lo implementa,
un sottoinsieme variabile e non sempre universalmente compatibile
dello standard di riferimento. Pochi ad esempio sanno che le
specifiche JPEG descrivono anche un formato di compressione non
distruttivo, basato su tecniche differenti da quelle che
descriveremo qui di seguito, del quale si è ormai persa
traccia, non usando gli sviluppatori di programmi di grafica - a
causa delle sue non straordinarie prestazioni - inserirlo tra le
varie opzioni di salvataggio dei normali file JPG.

Fig. 6 – Schematizzazione semplificata del processo di compressione JPEG
Ecco in dettaglio la sequenza di operazioni che da un'immagine originale non compressa porta ad un'immagine compressa con JPEG.
1) Trasformazione dello spazio colore – A causa delle particolari caratteristiche dell'occhio umano, molto più sensibile alle variazioni di luminosità che alle variazioni cromatiche, è opportuno innanzitutto trasformare la modalità RGB in modalità YUV. E' questo lo spazio-colore definito per il sistema televisivo PAL. Tra i suoi equivalenti nel campo della computergrafica c'è il metodo L*a*b presente in Adobe Photoshop.
Il sistema YUV scompone l'informazione relativa a ciascun
pixel in due componenti: la luminanza, che definisce il
grado di luminosità nella scala da nero a bianco (la
lettera Y
della sigla YUV), e la crominanza, che
definisce il colore in base al rapporto tra due assi, uno che va
da blu a giallo (la lettera U
) e l'altro che va da rosso a
verde (la lettera V
).
Eseguire la trasformazione dallo spazio-colore RGB allo spazio-colore YUV non è indispensabile, ma il farlo consente di ottenere una maggiore compressione JPEG. Quando, infatti, le successive trasformazioni matematiche che si applicano all'immagine trovano l'informazione nettamente suddivisa nelle due componenti di luminosità e di colore, possono procedere all'eliminazione di molte informazioni relative al colore senza intaccare quelle relative alla luminosità, più importanti per la visione umana, e senza causare, in tal modo, danni visibili al contenuto dell'immagine. Ciò non è possibile invece nella stessa misura quando gli algoritmi di compressione si applicano a valori RGB, che presentano l'informazione relativa al colore e quella relativa alla luminosità fuse insieme (per le immagini in scala di grigio la conversione non ha senso, in quanto l'informazione sulla luminosità è già disponibile in partenza).
2) Riduzione, in base alla componente, di gruppi di pixel a valori medi – E' un'operazione opzionale, di cui alcuni software di grafica consentono l'impostazione. La componente che esprime la luminanza è lasciata invariata, mentre la componente cromatica viene dimezzata in orizzontale e in verticale, oppure soltanto in orizzontale. Ciò si esprime con il rapporto 2:1 per indicare il dimezzamento e con il rapporto 1:1 per indicare che la componente è lasciata invariata. Alcuni programmi di grafica, tra le opzioni di salvataggio in JPG, mostrano stringhe esoteriche come 4-1-1 e 4-2-2, che esprimono appunto il coefficiente di riduzione che viene applicato alle componenti cromatiche dell'immagine. Tale operazione, che fa parte degli algoritmi distruttivi dello standard JPEG, riduce in partenza il file di una metà o di un terzo della sua grandezza originale. Non si applica alle immagini a toni di grigio e ciò spiega perché queste siano meno comprimibili in generale delle immagini a colori.
3) DCT applicata a blocchi di 8 x 8 pixel suddivisi in
base alla componente – La sigla DCT sta per
Discrete Cosine Transform
: si tratta di una serie di
operazioni matematiche che trasformano i valori di
luminosità e colore di ciascuno dei 64 pixel di ogni
blocco preso in esame in altrettanti valori di frequenza. In
particolare, mentre i valori dei pixel contenuti nei blocchi di 8
x 8 tratti dall'immagine originale variano da 0 a 255, dopo
l'esecuzione della DCT essi, trasformati in frequenze, variano da
–721 a 721. Dov'è allora il guadagno? In una sottile
combinazione di quantizzazione e codifica
entropica. In termini più semplici, la trasformazione
dei valori in frequenze consentirà nei passaggi successivi
di tagliare più informazioni senza apparente perdita
visiva di quante se ne potrebbero tagliare lavorando sui valori
naturali
dei pixel. Inoltre la sequenza a zig zag in cui i
nuovi valori vengono scritti consente di applicare ad essi una
compressione (Huffman o aritmetica) più efficace.

Fig. 7 – Scrittura a zig
zag dei valori ottenuti con la DCT, a partire dall'angolo
superiore sinistro del blocco di 8 x 8 pixel (schemi tratti dalle
specifiche ufficiali JPEG ITU.T81
)
4) Divisione e arrotondamento all'intero dei 64 valori ottenuti con la DCT – Ciascuno dei 64 valori di frequenza viene diviso per uno specifico coefficiente di quantizzazione, codificato in apposite tavole di riferimento. Il risultato della divisione viene arrotondato all'intero più vicino. L'eliminazione dei decimali è la principale operazione di compressione distruttiva dello standard JPEG. Il tutto è studiato in modo che le frequenze più importanti per l'occhio umano, cioè le più basse, memorizzate nell'angolo superiore sinistro del blocco di 8 x 8, siano preservate, mentre le più alte, la cui perdita è relativamente ininfluente, vengano eliminate.
5) Compressione non distruttiva dei coefficienti quantizzati – Ai valori risultanti dalla divisione e dall'arrotondamento sopra descritti viene applicata una compressione non distruttiva, per la quale può essere utilizzato l'algoritmo Huffman o una codifica aritmetica chiamata Q-coding. Quest'ultima è di circa il 5-10 % più efficace della Huffman, ma è protetta da brevetto, per cui il suo uso non è gratuito. Per tale motivo i software che realizzano la compressione JPG implementano solo l'algoritmo Huffman.
6) Inserimento nel file compresso di intestazioni e parametri per la decompressione – Affinché il file possa essere in seguito decompresso e possa generare un'immagine il più possibile somigliante all'originale non compresso, occorre che nel file JPG siano inserite le tabelle contenenti i coefficienti di quantizzazione e i valori di trasformazione della codifica Huffman.
Due precisazioni in conclusione di paragrafo. La prima riguarda il noto fenomeno dei blocchi quadrettati, che sono spesso chiaramente visibili nelle immagini JPG molto compresse e rappresentano un forte elemento di degrado della qualità. Essi sono la conseguenza diretta dell'algoritmo che suddivide l'immagine di partenza in blocchi da 8 x 8 pixel. Le varie trasformazioni applicate ai valori dei pixel di ciascun blocco sono del tutto indipendenti dalle trasformazioni applicate ai pixel dei blocchi adiacenti. Ciò causa talvolta transizioni brusche tra pixel adiacenti appartenenti a blocchi differenti. Il fenomeno è tanto più appariscente quanto più l'immagine contiene aree di colore uniforme e linee sottili ben separate dallo sfondo.

Fig. 8 – A destra un particolare molto ingrandito della foto di sinistra, che mostra in modo inequivocabile la quadrettatura tipica risultante dalla compressione JPEG
La seconda precisazione riguarda il significato
dell'espressione codifica entropica
,
utilizzata al precedente punto 3). Questa locuzione traduce
l'inglese entropy coding
(o encoding
) ed esprime un
tipo di compressione non distruttiva – quale ad esempio
l'algoritmo Huffman – che, data una serie qualsiasi di
simboli, è in grado di codificarli utilizzando il minor
numero possibile di bit.
Leggi:
JPEG 2000, l'evoluzione della specie...
Vai a:
Diodati.org
> Guide, articoli, scritti
> Algoritmi di compressione...
Scrivi: info@diodati.org
Ultima modifica: 15/7/2004 ore 15:19