![[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
Il successo dello standard di compressione JPEG si può desumere dalle cifre: è stato calcolato infatti che l'80 % circa delle immagini presenti su Internet siano file JPG. Tuttavia esiste già il successore designato di questo fortunato standard: si tratta di un algoritmo che va sotto il nome di JPEG 2000 e che si prevede sarà ufficializzato come standard ISO / ITU entro l'anno 2001. I soliti insonni che volessero leggersi la versione completa delle specifiche relative a questo formato possono scaricarla a partire dalla pagina http://www.jpeg.org/FCD15444-1.htm.
Ma come funziona precisamente JPEG 2000? Quali sono le principali differenze rispetto al fratello maggiore JPEG?
Le differenze sono numerose e la principale è
senz'altro il cambiamento dello strumento matematico alla base
dell'algoritmo di compressione. Mentre, infatti, JPEG usa la
trasformata chiamata DCT (Discrete Cosine Transform
, vedi
sopra), JPEG 2000 usa la cosiddetta DWT,
Discrete Wavelet Transform
.
La parola wavelet
, “piccola onda” in
italiano, identifica un sistema matematico che consente di
superare il difetto principale delle immagini trattate secondo il
normale standard JPEG, cioè la presenza di quei blocchi
quadrettati che sono il prezzo da pagare per la maggior
compressione ottenuta.
Con l'uso della DWT, il contenuto del file originale non viene più suddiviso in blocchi da 8 x 8 pixel, ma è l'immagine nella sua totalità ad essere analizzata e successivamente scomposta, per ottenere alla fine un file compresso dove l'eventuale degrado dell'immagine è significativamente inferiore a quello ottenibile, a parità di compressione, con il JPEG tradizionale: un degrado che si manifesta non più attraverso i famosi blocchi quadrettati, ma con un aspetto più o meno sfocato dei contorni degli oggetti presenti nell'immagine.
Ma vediamo in dettaglio quali sono le fasi della compressione eseguita con l'algoritmo JPEG 2000.
1) Preparazione dell'immagine – La
trasformazione wavelet agisce decorrelando i contenuti a bassa
frequenza - più importanti per la visione umana –
dai contenuti ad alta frequenza. Per far ciò è
necessario che l'immagine originale sia suddivisa in quattro
immagini più piccole, dotate ciascuna di un numero di
colonne e di righe uguale ad esattamente la metà del file
iniziale. La preparazione consiste dunque nel fornire alla DWT
una griglia di righe e colonne tale da consentire la
ripetizione
dell'operazione di suddivisione in quattro ad
ogni successivo stadio del ciclo di trasformazione operato con la
DWT.
2) Trasformazione – L'immagine viene trasformata dalla DWT e poi scalata, in modo da ottenere quattro immagini alte e larghe ciascuna esattamente la metà dell'originale. Nel quadrante superiore sinistro, grazie all'uso di un filtro passa-basso, sono salvate le basse frequenze presenti nel file di partenza. Negli altri tre quadranti, grazie all'uso di un filtro passa-alto, sono salvate le alte frequenze. Il risultato di quest'operazione è la decorrelazione tra le informazioni di bassa e alta frequenza contenute nell'immagine.
Il passaggio successivo consiste nella ripetizione del medesimo procedimento, applicato stavolta solo all'immagine del quadrante superiore sinistro, contenente le basse frequenze. Il risultato del secondo passaggio è rappresentato in fig. 9: l'immagine con le basse frequenze ha ormai altezza e larghezza pari a un quarto dell'originale, mentre tutto il resto è occupato dalle alte frequenze. Il procedimento poi continua per analisi e scalature successive, fino al limite minimo di un'immagine ridotta ad un solo pixel.
Il risultato finale di tutta l'operazione è che l'intero contenuto informativo dell'immagine originale è stato segmentato in una serie di trasformazioni successive, che potranno poi essere compresse in un minimo spazio ed utilizzate in modo reversibile in fase di decompressione, per generare un'immagine il più possibile simile all'originale non compresso.

Fig. 9 – Applicazione progressiva della DWT su un'immagine compressa con JPEG 2000
3) Quantizzazione e codifica – La
quantizzazione è un'operazione in genere "distruttiva"
(lossy
), che divide per specifici coefficienti i valori
trovati dalla DWT e arrotonda poi i risultati all'intero
più vicino. Le fasi di quantizzazione e di codifica hanno
lo scopo di selezionare per cicli successivi i dati da comprimere
e disporli poi in un ordine preciso all'interno del flusso dei
dati. Possono essere implementate come stadi separati,
così come avviene nel JPEG standard, con la fase di
quantizzazione che elimina la parte meno rilevante
dell'informazione e passa il resto all'encoder
per la fase
di codifica. Ma combinando quantizzazione e codifica in un
singolo stadio si ottiene la possibilità di controllare
esattamente l'entità della compressione (qualità
dell'immagine contro coefficiente di compressione). La dimensione
del flusso di dati compresso può essere predefinita con
esattezza. In questo caso la quantizzazione dei coefficienti
trasformati ha luogo durante la fase di codifica.
Il primo ciclo di quantizzazione ha per così dire una “grana grossa”, nel senso che solo i coefficienti maggiori sono presi in considerazione e codificati. Al ciclo successivo gli intervalli di quantizzazione vengono dimezzati, sicché divengono significativi coefficienti più piccoli. Ciò significa che i valori dei coefficienti selezionati nel primo ciclo sono specificati in modo sempre più preciso dalle informazioni aggiunte ad ogni successivo ciclo di quantizzazione e codifica. I cicli continuano finché il flusso dei dati non ha raggiunto la sua lunghezza predefinita oppure finché tutta l'informazione presente nell'immagine non viene codificata. Questo modo di incorporare nella sequenza finale di dati strutture via via più raffinate consente di ricostruire l'immagine iniziale a partire da qualsiasi blocco di dati contenuto nel file compresso, con la limitazione che la qualità dell'immagine ricostruita sarà tanto migliore quanto minore sarà la parte di dati non utilizzata dell'intero flusso.
Una simile caratteristica è importantissima per i
futuri usi di questo formato su Internet. I file compressi con
JPEG 2000 racchiudono infatti al loro interno più
risoluzioni differenti della stessa immagine. I
produttori di software potranno implementare perciò dei
comandi in grado di consentire all'utente collegato via Internet
di decidere, in base al tempo stimato per il download
,
quale risoluzione dell'immagine visualizzare nel proprio browser.
I file JP2 (è questa l'estensione
proposta per identificare lo standard JPEG 2000) consentiranno
insomma di racchiudere in un unico documento l'anteprima –
il cosiddetto thumbnail
– la bassa, la media e
l'alta risoluzione di una stessa immagine, senza però
moltiplicare proporzionalmente il peso del file.
Ecco per concludere un elenco delle principali, innovative caratteristiche previste dalle specifiche JPEG 2000:
Region Of Interest), cioè di zone ritenute più importanti e perciò salvate con una risoluzione maggiore di quella usata per il resto dell'immagine.
Abbiamo detto che JPEG 2000 non è ancora uno standard a
tutti gli effetti. Ma come fare per vedere in anteprima i
risultati della compressione wavelet? Semplice! Basta scaricare
LuraWave, un programma sviluppato da
LuraTech
(http://www.luratech.com),
società specializzata nella ricerca e produzione di
software per la compressione dei dati. Con LuraWave è
possibile salvare immagini in LWF, un formato che usa appunto le
tecniche di compressione qui sopra descritte. Nella
Fig.10 qui sotto riportata, si può vedere
la differenza tra due immagini fortemente compresse, l'una con
LuraWave l'altra con il normale JPEG, differenza che appare a
tutto vantaggio della compressione di tipo wavelet.

Fig. 10 – L'immagine prodotta con LuraWave (1:150 rispetto all'originale) mostra, a paragone con JPEG e a parità di peso, un degrado molto minore rispetto all'originale
Leggi:
Tutto gratis e senza perdite? Ecco allora il formato PNG
Vai a:
Diodati.org
> Guide, articoli, scritti
> Algoritmi di compressione...
Scrivi: info@diodati.org
Ultima modifica: 15/7/2004 ore 15:19