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 al
sommario
Scrivi a
info@diodati.org
Aggiornato Tuesday, 30-Jul-2002 18:14:08 CEST