[Salta il menu][L'elefantino con la matita, logo del sito]

Diodati.org | Accessibilità e traduzioni dal W3C      Leggi Omega Centauri!

10 JPEG 2000, l'evoluzione della specie...

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:

  1. supporto per differenti modalità e spazi-colore (immagini a due toni, in scala di grigi, a 256 colori, a milioni di colori, in standard RGB, PhotoYCC, CIELAB, CMYK);
  2. supporto per differenti schemi di compressione, adattabili in base alle esigenze;
  3. standard aperto a successive implementazioni legate al sorgere di nuove necessità;
  4. supporto per l'inclusione di un'illimitata quantità di metadati nello spazio di intestazione del file, utilizzabili per fornire informazioni private o per interagire con applicazioni software (guidare, ad esempio, il browser allo scaricamento di appositi plug-in da Internet);
  5. stato dell'arte per la compressione distruttiva e non distruttiva delle immagini, con un risparmio di spazio a parità di qualità, rispetto allo standard JPEG, dell'ordine del 20-30 %;
  6. supporto per immagini più grandi di 64k x 64k pixel, ovvero maggiori di 4 Gb;
  7. singola architettura per la decompressione dei file, in luogo dei 44 modi codificati per il vecchio JPEG, molti dei quali legati a specifiche applicazioni e non utilizzati dalla maggior parte dei decompressori;
  8. supporto per la trasmissione dei dati in ambienti disturbati, per esempio attraverso la radiotelefonia mobile;
  9. capacità di maneggiare indifferentemente sia le immagini naturali sia la grafica generata al computer;
  10. supporto per la codifica di ROI (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 14:19