Precedente Principale Sommario Informazioni Redazione Browser Successivo

Rubrica Grafica Coordinamento di Luciano Giustini

Compressioni d'avanguardia

Wavelet e FC al microscopio

La compressione Wavelet e Frattale rappresentano l'ultimo grido in materia di compressione delle immagini. In questo articolo le affronteremo dal punto di vista dell'utilizzatore finale, con la speranza che queste due nuove tecnologie ricevano tutta l'attenzione che meritano.

di Cristiano Paris

State navigando il Web; sono le due di notte e, dopo un'estenuante ricerca, finalmente siete riusciti a trovare quel link che cercavate. Spostate trepidanti il puntatore sull'agognato collegamento, e il vostro browser lancia la richiesta al server... ecco, la pagina comincia a comparire ma... disgrazia ! Il sito è pieno zeppo di enormi immagini TRUE COLOR che il vostro misero modem comincia a caricare ad una velocità esasperante. Così, dopo qualche decina di minuti e con la pagina che ancora è lì che deve essere caricata, decidete, a malincuore, di abbattere la comunicazione e andarvene a dormire.

E purtroppo, nonostante questo sia l'incubo di quasi tutti i navigatori, pagine piene di grafica coloratissima continuano a spuntare come funghi. D'altro canto però, come sarebbe la nostra bella Home Page senza tutti quei fronzoli, o senza quello sfondo meraviglioso ? E allora ci si arrangia come meglio si può, cercando compromessi (come ha fatto ultimamente la Microsoft con la sua neonata rivista on-line Slate) che però non sempre riescono a soddisfarci. Certo, un sistema ci sarebbe : usare JPEG a tutto spiano; però non sempre forniscono un rapporto di compressione sufficientemente elevato e, molto spesso, degradano l'immagine in maniera insopportabile.
Oggi tuttavia vanno affermandosi due nuovi standard di compressione che ci promettono grandi cose : la Compressione Frattale (FC) e la compressione Wavelet.

IL PROBLEMA

Cominciamo dall'inizio. Un'immagine possiede alcune caratteristiche che influiscono direttamente sulla sua occupazione : esse sono la larghezza, l'altezza e la profondità. Non penso di dover spiegare cosa significhino le prime due, ma forse, per la terza, occorrono ulteriori spiegazioni. In pratica, la profondità indica la quantità di colori che un'immagine può contenere. Ad esempio, una tipica immagine larga 640 pixel, alta 400 e profonda 8, potrà contenere, al più, 256 colori (2^8 = 256). Attraverso queste tre caratteristiche è possibile stimare con precisione l'occupazione in byte di un'immagine : basterà infatti moltiplicare fra loro detti valori e dividere il tutto per otto. Ad esempio, l'immagine di cui sopra occuperà 640x400x8 / 8 = 256000 bytes (ovvero 250Kb).
Una tale occupazione è ovviamente inaccetabile per la maggior parte delle applicazioni, e quindi occorre cercare di ridurla con degli artifici più o meno efficaci. Vediamo quali possano essere considerando ad esempio questa immagine :


Come potete vedere essa contiene un gran numero di pixel bianchi e rossi consecutivi e questo ci suggerisce un'idea di come sia possibile ridurne l'occupazione. Se infatti cambiamo il modo di descrivere l'immagine e cominciamo a contare, preliminarmente, tutti i pixel consecutivi di uno stesso colore, possiamo descriverne un gruppo attraverso una coppia di byte che indichino, il primo il numero di pixel consecutivi e il secondo il colore di questi ultimi. Come potete ben immaginare, tale sistema introduce un gran bel risparmio in termini di byte, soprattutto quando sono molti i pixel consecutivi di uno stesso colore (come nel caso dell'immagine precedente). Tale sistema di compressione è chiamato Run-Length-Encoding [RLE] e viene impiegato in svariati formati, uno dei quali è proprio il BMP e il DIB di Windows.
Purtroppo però l'RLE risulta del tutto inefficiente in immagini che contengano numerose sfumature di colore e quindi, in definitiva, contenenti pixel contigui di colori differenti. In questo caso infatti, la compressione, non solo non riduce l'occupazione dell'immagine, ma addirittura la fà aumentare (infatti, per descrivere due pixel di colore differente occorrono quattro byte anzichè due).
L'RLE, tuttavia, non è che il capostipite di un gruppo di algoritmi che tentano di realizzare la compressione dei dati utilizzando un approccio "lossless" [senza perdita] al problema. Tale termine indica un algoritmo che conserva integralmente, attraverso le varie fasi di compressione/decompressione, tutte le informazioni originarie della fonte dei dati. Mi spiego meglio : ammettiamo per un momento che la nostra immagine sia composta da lettere dell'alfabeto, anzichè da byte, e ammettiamo pure che il suo inzio sia costituito dalla sequenza "ABAAABCDDD". Ebbene, un algoritmo di compressione "lossless" fà si che dopo le operazioni di compressione/decompressione la sequenza di lettere rimanga intatta, ovvero, dopo la decompressione, ritroveremo la stessa sequenza "ABAAABCDDD", come è indicato nella figura seguente :


Come vedete, la sequenza iniziale e quella finale risultano identiche.
Nonostante questa possa sembrare una caratteristica molto positiva di un sistema di compressione, vedremo in seguito che è possibile sacrificare parte dell'accuratezza di un'immagine, in favore di un più elelvato rapporto di compressione.
Gli algoritmi più famosi che fanno uso di tecniche "lossless" sono la codifica ottima di Huffman e l'algoritmo LZW (Lempel-Ziv-Welch). Nonostante l'ultimo dei due venga superato nella compressione di grandi immagini e suoni dalla "Dynamic Markov Compression" [DMC], esso risulta di gran lunga il migliore nel caso medio e viene per questo utilizzato nella codifica delle immagini del formato GIF che quindi le memorizza in maniera "lossless".
L'efficienza di questi algoritmi si aggira solitamente attorno a rapporti di compressione dell'ordine del 50-70% al massimo, ovvero i dati compressi occuperanno il 50-30% della lunghezza originale. La nostra immagine da 250Kb occuperà quindi solo 75Kb. Vedremo nel prossimo paragrafo come tale metodo di valutazione dell'efficienza di un algoritmo di compresione venga sostituito in favore di uno senz'altro più comodo.

COMPRESSIONE "LOSSY"

Gli algoritmi di compressione definiti "lossy", come abbiamo detto, sacrificano parte dei dettagli contenuti in un'immagine in favore di un più elevato rapporto di compressione. Ma è possibile sacrificare alcuni dettagli di un'immagine senza deteriorarla sensibilmente ? Secondo alcune osservazioni e studi sperimentali su come l'occhio umano reagisce all'esperienza visiva, questo è senz'altro possibile. Ovviamente, in questo articolo, citeremo solo i casi più importanti.
Cominciamo col dire che l'occhio umano non è assolutamente in grado di distinguere due immagini in bianco e nero che abbiano, la prima profondità 6 (64 grigi) e la seconda profondità 8 (256 grigi). Se vi trovate ad una risoluzione che permette il TRUE COLOR, provate a distinguere le sfumature in queste due immagini :

Immagine a profondità 8
Immagine a profondità 6

Se credete di aver trovato differenze, queste sono senz'altro imputabili a fattori esterni, come l'algoritmo usato per diminuire i colori, e comunque tenete presente che l'immagine di destra utilizza ben 192 colori in meno di quella sinistra.
Un altro tipo di anomalia riguarda la luminosità e il colore di un pixel.
Normalmente noi siamo soliti considerare un pixel secondo le sue componenti RGB (Red-Green-Blue). Tuttavia questo non è il solo modo in cui è possibile descriverlo ed in particolare ne esiste uno che ne considera la tinta (HUE), la luminosità (LIGHTNESS) e la saturazione (SATURATION). Ebbene, è stato dimostrato che l'occhio umano è molto più sensibile alla luminosità che non alla tinta. Guardate ad esempio le seguenti immagini :

Tinta (HUE) + 20
Immagine Originale
Luminosità (LIGHTNESS) +20

Come potete vedere, le modificazioni nell'immagine sono molto più evidenti a destra che a sinistra, nonostante la differenza di componente sia la stessa.
Tutte queste considerazioni (unite ad altre, come, ad esempio la maggior sensibilità dell'occhio ai contorni ed ai constrasti) sono sfociate nel cosidetto approccio "lossy", che, attraverso un'analisi accurata di alcune componenti dell'immagine, ne trascura alcuni dettagli per ottenere un più elevato rapporto di compressione. Ma come si mettono in relazione le due cose ?
Immaginate allora che l'immagine sia composta da una serie di 1 e 0, e che, una sua parte sia composta dalla sequenza "0100111100001000". In questo caso un algoritmo di tipo "lossy" sacrificherebbe il primo e l'ultimo 1, ricostruendo la sequenza "0000111100000000", che, ad esempio, è molto più comprimibile con sistemi "lossless" che non la sequenza originale.
A causa del degrado introdotto nell'immagine, solitamente, alla stima dell'efficienza di un algoritmo "lossy" si associa anche una stima di questo degrado; ve ne potete accorgere quando salvate un'immagine JPEG e il programma vi chiede di inserire anche la qualità finale dell'immagine. Ed è proprio il JPEG il primo vero standard che ha introdotto un codifica "lossy" delle immagini. Vediamo allora in dettaglio come funziona.
L'immagine viene preliminarmente suddivisa in blocchi di 8x8 o 16x16. Su ciascun blocco poi viene applicata una particolare operazione matematica, che coinvolge la "trasformata di Fourier" e che trasforma il blocco in uno composto da molti valori prossimi allo zero. A questo punto, in base alla qualità che si è deciso di applicare durante la compressione, si approssimano alcuni di questi valori proprio a zero, generando così una sequenza composta da numerosi zeri. Su tale blocco viene poi applicata una particolare compressione a zig-zag di tipo RLE e poi una di tipo Huffman (entrambi compressioni "lossless"). A questro punto il file è pronto per essere registrato. Dall'altra parte, al momento della decompressione, si ripetono le fasi al contrario, solo che stavolta, a causa dell'approssimazione introdotta, la sequenza ottenuta è leggermente differente da quella originale.

CODIFICA WAVELET

E veniamo finalmente al primo dei due algoritmi di compressione esaminati in questo articolo. La codifica Wavelet sfrutta una filosofia simile al JPEG; infatti, anche durante la codifica Wavelet una particolare operazione matematica (la traformata Wavelet appunto) viene applicata all'immagine, generando grandi quantità di valori prossimi allo zero, che vengono poi approssimati e registrati con tecniche lossless. La differenza più grande rispetto al JPEG è che la trasformata Wavelet viene applicata sull'INTERA IMMAGINE, anzichè su sottoblocchi di quest'ultima.
Vediamo questo che cosa significa osservando queste immagini :
Immagine Bassa-Compressione
Immagine Elevata-Compressione
Particolare

Come vedete dal particolare in alto a destra, il degrado più grande nell'immagine è quello dovuto all'evidenziazione dei sottoblocchi di compressione. Infatti, quando un blocco viene compresso, non vengono tenuti in considerazione i pixel adiacenti a quelli dei bordi del blocco generando, a forti livelli di compressione, delle differenze molto marcate proprio in prossimità di questi ultimi.
La codifica Wavelet supera invece questo ostacolo, permettendo di applicare la trasformata Wavelet all'intera immagine. Ma vediamo più in dettaglio come funziona. In pratica si parte da un'immagine e applicando due diverse operazioni matematiche in quattro combinazioni diverse si generano quattro sottoimmagini grandi un quarto dell'originale che messe insieme hanno la stessa dimensione dell'immagine originale. Ogni applicazione di questi operatori matematici è volta a particolari scopi. Guardiamo queste due immagini :

Immagine Originale
Dopo la prima applicazione

Come vedete, il riquadro in alto a sinistra è l'immagine stessa a cui viene applicato una specie di media fra gruppi di quattro pixel (ovvero una sorta di resizing dell'immagine), mentre negli altri vengono messi in evidenza i dettagli relativi ai bordi orizzontali, verticali e diagonali. L'inseme di questi particolari, permette di ricostruire l'immagne originale. Come vedete, nei riquadri dei dettagli orizzontali, verticali e diagonali, abbiamo una gran quantità di pixel scuri, che in pratica rappresentano i pixel prossimi allo zero, che possono essere facilmente registrati. Ma la codifica Wavelet non si limita a questo. Infatti, la trasformata Wavelet viene riapplicata alla stessa immagine rimpicciolita, e così via finchè tale immagine non raggiunge le dimensioni di un pixel. A quel punto è presente una grossa quantità di pixel "quasi a zero" e l'immagine può essere efficacemente compressa.
Un'immagine in forma compressa assume così la tipica forma di quella che viene chiamata "piramide Wavelet" :

La piramide Wavelet

Abbiamo parlato di trasformata Wavelet, ma in realtà sarebbe stato più corretto parlare di "famiglie" di trasformate, in quanto ne esistono numerosi tipi che rispondono a precise caratteristiche come la continuità, la smussatezza, la discretizzazione etc. La Wavelet primaria (la cosidetta "madre di tutte le Wavelet") è la Haar Wavelet, che però produce risultati scadenti con insiemi smussati come le immagini. Tutte le trasformate però hanno in comune una caratteristica : l'analisi multirisoluzione. Ma di questo parleremo nel prossimo paragrafo.

COMPRESSIONE FRATTALE

Il secondo degli algoritmi che andremo ad esaminare in questo articolo riguarda un campo che ha sempre suscitato notevole interesse fra gli informatici : i frattali. E' noto che oltre ad essere belli da guardare sono estremamente interessanti sotto numerosi punti di vista. Ad esempio essi vengono impiegati in Computer Grafica per creare oggetti molto complicati come gli alberi, oppure per simulare cose come il fumo o il fuoco. Ma la caratteristica che più ci interessa in questo articolo è l'autosimilarità. In pratica, se guardate un frattale, noterete che alcuni dettagli nascondono una forma che è estremamente simile a quella dell'intero frattale. Guardate ad esempio questo che è il frattale per eccellenza, il frattale di Mandelbrot :

Il frattale di Mandelbrot

Come potete vedere, la forma della zona ingrandita è estremamente simile al riquadro bianco. Ma se potessimo continuare ad ingrandire, anche all'infinito, potremmo sempre trovare particolari che assomigliano al totale dell'immagine. In questo caso si parla di somiglianza a diverse risoluzioni, ed in effetti, questa caratteristica ha molto a che vedere con l'analisi multirisoluzione della compressione Wavelet. Vediamo di spiegare cosa significa.
Innanzitutto bisogna dire che questi sistemi di compressione si applicano principalmente ad immagini digitalizzate. Ma cosa significa veramente digitalizzare ? Quando noi osserviamo la realtà, i nostri occhi sono liberi di muoversi o di avvicinarsi a ciò che stiamo osservando. In quest'ultimo caso, altri particolari si aggiungono alla nostra vista. Questo significa che tra due punti molto vicini tra loro, esisteranno molti altri particolari che aspettano solo di essere messi in evidenza. In altri termini, diciamo che il fenomeno visivo è un fenomeno continuo. Quando catturiamo un'immagine all'interno del nostro computer (o del nostro cervello, se volete), non è possibile cogliere interamente tutti i particolari della realtà che stiamo osservando, ma dobbiamo trascurarne alcuni: Ebbene, noi trascuriamo proprio quei particolari che risultano indistinguibili (come ad esempio, due punti troppo vicini). Questo processo è detto discretizzazione o digitalizzazione.
Ora, la compressione Wavelet e la compressione Frattale operano teoricamente su ogni particolare dell'immagine per dedurne un'analisi che verrà in seguito utilizzata per la memorizzazione. Praticamente però questo non è possibile, perchè i dettagli si fermano alla risoluzione a cui noi abbiamo digitalizzato l'immagine; ciononostante possiamo applicare questa analisi su risoluzioni minori di quella data, attraverso cui effettuare approssimazioni delle risoluzioni più elevate.
Ed è proprio questo il punto di forza e il punto debole dei due algoritmi di compressione. Punto di forza perchè si tengono conto di particolari che prima non venivano assolutamente considerati (vedi codifica JPEG), mentre ne è il punto debole, perchè non è possibile analizzare la realtà in tutti i suoi dettagli, facendo si che le approssimazioni introducano il famoso degrado nelle immagini.
Chiusa questa parentesi, torniamo alla compressione Frattale. Dicevamo dell'autosimilarità. Questa caratteristica fece venire in mente ad un matematico di nome M. Barnsley e ad un suo studente di dottorato, A. Jaquin, che i frattali potevano venir sfruttati per comprimere le immagini. Nel 1989 Barnsley infatti stava conducendo ricerche sui cosidetti IFS (Iterated Function System) che rappresentavano il sistema per standardizzare virtualmente qualsiasi tipo di frattale. Per capire cosa sia un IFS, utilizziamo l'analogia della macchina fotocopiatrice.
Ammettete allora di disporre di una fotocopiatrice molto speciale che, dato il foglio da fotocopiare, produce un'altro foglio su cui l'immagine originale è stata rimpicciolita e posizionate in tre posizioni differenti, come nella prossima figura :

La fotocopiatrice frattale

Ovviamente voi potete scegliere dove posizionare le copie rimpicciolite dell'immagine. Se però ora noi rifotocopiassimo il foglio appena ottenuto, e poi lo rifotocopiassimo etc. etc. alla fine otterremmo un'immagine totalmente diversa, frutto della posizione assunta da ciascuna delle copie rimpicciolite. Vediamo :


La fotocopiatrice frattale dopo alcune applicazioni


Ecco, la fotocopiatrice e l'insieme delle posizioni assunte dalle immagini da fotocopiare (le cosidette "trasformazioni affini") rappresentano un IFS. Come potete vedere l'IFS possiede alcune caratteristiche molto positive : esso genera dettagli a tutte le risoluzioni, virtualmente anche ad una risoluzione infinita, poichè il procedimento può essere ripetuto infinite volte ed ogni volta l'immagine più grande arricchisce di particolari anche i più piccoli dettagli. Praticamente ogni volta che si applica l'IFS la risoluzione raddoppia, quindi è possibile raggiungere risoluzioni stratosferiche (dell'ordine del miliardo di pixel) in poche decine di applicazioni; la seconda caratteristica è quella di essere in grado di partire da qualsiasi immagine iniziale, con l'ovvio vantaggio di non doverla di volta in volta memorizzare. L'immagine finale quindi può essere descritta in termini di se stessa, memorizzando solo le trasformazioni che sono necessarie per giungervi. Se credete che tale metodo possa risultare poco flessibile, osservate che grado di complessità si raggiunge con poche trasformazioni :

Il fatto di dover registrare poche trasformazioni per memorizzare un'intera immagine è estremamente proficuo, se solo si pensa che una trasformazione occupa poche decine di byte e che per realizzare la felce di cui sopra bastano quattro trasformazioni; questo fa balzare il rapporto di compressione, raggiungendo vette insperate (dell'ordine di 10000:1 ed oltre). A questo punto però vi chiederete come sia possibile applicare l'IFS alle immagini che vediamo tutti i giorni sul Web.
Innanzitutto occore dire che per tali immagini viene utilizzata una variante dell'IFS, ovvero il PIFS (Partitioned-IFS), in cui si preferisce descrivere singole porzioni dell'immagine in termini di porzioni dell'immagine totale. Infatti è estremamente raro che un'immagine "naturale" assomigli nei particolari al totale dell'immagine, anche perchè questa può essere ripresa da diverse angolazioni e punti di vista. Tuttavia, all'interno dell'immagine, esistono numerosi particolari che potremmo considerare simili, a meno di trasformazioni di grandezza, di luminosità, di contrasto o di colore. Guardate per esempio la seguente immagine :

Come vedete un gran numero di dettagli si ripetono all'interno dell'immagine, persino a scale differenti. Un algoritmo di compressione frattale non fà altro quindi che determinare le parti autosimili all'interno di una immagine, memorizzando ogni zona possibile in termini dell'immagine stessa e attraverso trasformazioni "contrattive" (che, come nell'analogia della fotocopiatrice, riducono qualcosa dell'immagine, siano queste le dimensioni, o lo spazio dei colori etc.). Poi, al momento della decompressione, partendo da una qualsiasi immagine, si applicano le trasformazioni registrate numerose volte e si ricostruisce l'immagine finale. Una cosa molto interessante è che è possibile utilizzare questa descrizione frattale dell'immagine per ottenere uno zoom molto accurato dell'immagine stessa, poichè, come abbiamo visto, gli IFS generano dettagli a tutte le risoluzioni. Tuttavia, anche in questo non si potrà procedere all'infinito, visto che ogni zoomata rappresenta comunque un'approssimazione dell'immagine dipendente dalla particolare serie di trasformazioni utilizzate. Tale limitazione è dovuta, come abbiamo detto, al fatto che l'immagine viene digitalizzata ad una data risoluzione che limita l'analisi multirisoluzione dell'algoritmo.

EFFICIENZA

Tutti gli algoritmi qui presentati surclassano considerevolmente il JPEG. Attualmente la compressione Wavelet sembra godere del primato di miglior algoritmo di compressione, con rapporti cha vanno dai 50:1 a 150:1, mentre le versioni più comuni della compressione frattale raggiungono solitamente vette di 78-80:1. La perdita di dettagli è in entrambi i casi comunque minima rispetto ad una eventuale perdita di dettagli del JPEG a rapporti di compressione simili. Tuttavia, anche questi due algoritmi presentano degli inconvenienti.
Il primo fra questi è senz'altro la grandezza dell'immagine iniziale che deve essere compressa. Proprio a causa dell'analisi multirisoluzione, questa deve essere preferibilmente molto alta, così da permettere un'analisi più accurata dell'immagine.
Inoltre, come per il JPEG, sia la codifica Wavelet che quella Frattale, deludono ogni aspettativa se applicate ad immagini pittoriche o comunque ad immagini in cui siano presenti forti contrasti nei bordi, soprattutto se poco frastagliati. In alcuni casi poi, la codifica frattale tende ad evidenziare rettangoli più o meno grandi tra i quali la luminosità è leggermente diversa (un problema simile quindi al JPEG); questo però dipende dal tipo di algoritmo di compressione utilizzato. Infatti è possibile superare questo problema utilizzando zone rettangolari sfumate, in cui ogni rettangolo sfuma nell'altro, oppure utilizzando forme diverse dai rettangoli, come i triangoli. Purtroppo questi metodi sono ancora in fase di sperimentazione o di pura congettura, quindi non se ne trovano esempi concreti. La codifica frattale migliore è comunque considerata quella HV, in cui vengono utilizzati rettangoli di varia grandezza.
La codifica Wavelet invece presenta a volte l'inconveniente di ammorbidire troppo le linee dei contorni o di approssimare eccessivamente le zone a tinta unita dell'immagine riducendone il numero di sfumature. Questo fà si che ad elevati rapporti di compressione, l'immagine risulti molto simile ad un disegno, più che ad una vera e propria digitalizzazione. In ogni caso, l'effetto è piuttosto gradevole e non compaiono quasi mai dettagli inesistenti o bordi poco accurati.
Altro problema della codifica frattale è la lentezza del procedimento di compressione. Trovare infatti le zone autosimili di un'immagine, richiede l'utilizzo di algoritmi non-lineari, in cui il programma spesso procede per tentativi, analizzando quasi ogni combinazione possibile. Si stà cercando di risolvere il problema applicando teorie che rigurdano l'ottimizzazione, problema tipicamente di Intelligenza Artificiale, applicando tecnologie d'avanguardia come gli algoritmi genetici o addirittura le reti neurali. Sembra comunque che i migliori risultati si siano avuti da algoritmi piuttosto stupidi, ma questo molto probabilmente deriva dal fatto che l'uso di queste tecnologie è estremamente recente e dovrà passare ancora un pò di tempo prima che possano essere applicate al meglio.

I PRODOTTI DISPONIBILI

Vediamo allora quali sono i prodotti commerciali disponibili per chi volesse intraprendere la strada della compressione Frattale o della compressione Wavelet. Per quest'ultima, una società americana, produce una gamma di prodotti, indirizzati all'utente medio. Essa è la Summus Ltd. che ha introdotto sul mercato un nuovo tipo di formato, il WI (Wavelet Image), che racchiude in se la codifica Wavelet delle immagini.
In particolare, fra i prodotti che la Summus distribuisce, troviamo un Plug-In per Netscape di dimensioni molto ridotte (dai 115Kb ai 248Kb) che permette la visione in-line (cioè nel testo) delle immagini WI. Attualmente, tale Plug-In è disponibile per piattaforme Windows (16 e 32 bit) e Macintosh (68k e PowerPC). Purtroppo la Summus non distribuisce via Internet un compressore di immagini Wavelet, il cui prezzo non è ancora stato definito, ma che sarà al più presto disponibile a chiunque ne faccia richiesta. Tale prodotto è chiamato "WI Desktop Utility" ed è, per ora, disponibile solo per Windows (16 e 32-bit). Le richieste in termini di hardware sono comunque molto contenute (un processore mediamente potente e appena 8MB di RAM), e le caratteristiche di questo prodotto sono molteplici :

  • Controllo del fattore di compressione (incide sulla qualità)
  • Attivazione della visualizzazione progressiva
  • Possibilità di definire aree di interesse che verranno compresse con un dettaglio maggiore
  • Zoom Wavelet (simile allo zoom frattale)
  • 12 metodi di compressione (credo riguardino le varie trasformate Wavelet utilizzate)
  • Compressione batch (per molte immagini)
Purtroppo non abbiamo avuto la possibilità di provare il WIDU (sto comunque contattando la Summus per riceverne una copia omaggio di prova e non escludo che nei prossimi mesi faremo un flash), quindi un'analisi dell'accuratezza dell'algoritmo può venire solo dall'uso di immagini pre-compresse e messe a disposizione dalla stessa Summus (attenzione, il sito utilizza i frames). Un'immagine è comunque disponibile anche in questo articolo : ovviamente dovrete prima scaricare il Plug-In. Cliccandoci sopra con il tasto destro, potrete dare un'occhiata alle caratteristiche dell'immagine, come la dimensione originale, l'occupazione in byte del file e il rapporto di compressione. L'immagine presente in questo articolo ha una dimensione di 850x850 in True Color, ed occupa appena 21Kb. Quindi, il suo rapporto di compressione è di circa 100:1. Ovviamente potete raggiungere lo stesso rapporto con il JPEG, ma con risultati letteralmente raccapriccianti (io ci sono riuscito settando una qualità di 12 su una scala da 1 a 100). Vi stupirete invece del formato WI e della qualità con la quale l'immagine è stata compressa. Tanto per darvi un'idea, vi dico che COREL ha recentemente deciso di includere nelle prossime versioni del suo Corel Draw la tecnologia Wavelet messa a disposizione da Summus. Un ultima cosa degna di nota : la Summus si stà impegnando anche nella compressione Wavelet delle animazioni.
Per quanto riguarda invece la compressione Frattale, la società che opera nel settore è la Iterated Systems inc. dello stesso M. Barnsley. Anche questa società produce un Plug-in per Netscape (anche se sarà a breve disponibile un Plug-in anche per Microsoft Internet Explorer) per le piattaforme Windows e Macintosh (beta). ATTENZIONE ! Il Plug-in è abbastanza corposo (720Kb per la versione Windows, e 671Kb per quella Mac), e il sito è piuttosto lento. Il formato introdotto è il FIF (Fractal Image Format), impiegato, pensate un pò, persino dal browser proprietario di Video On Line, sin dalle primissime versioni.
Come la Summus, anche la Iterated Systems fornisce una galleria di immagini FIF precompresse che possono essere visualizzate tramite il Plug-In. A dispetto della Summus però, la Iterated Systems fornisce un programma, il Fractal Imager, in versione Shareware, che permette di creare immagini FIF. Il prezzo di registrazione di questo programma è di appena $39 (60 con i manuali stampati), ma è disponibile, in ogni suo funzionalità, per ben 30 giorni.
Dopo una mattinata di prove con Fractal Imager, posso affermare che si tratta di un buon programma per la compressione di immagini in maniera frattale. Vengono accettati tutti i formati grafici più comuni, e al momento della compressione è possibile scegliere la qualità finale dell'immagine, che, tra le altre cose, influenzerà anche il tempo di compressione, che, come abbiamo detto precedentemente, è molto alto. Per comprimere un'immagine di 860x1024 in TRUE COLOR con qualità "excellent" sono occorsi circa 7 minuti su un 486 a 100Mhz. L'efficienza della compressione non è comunque comparabile con il rispettivo della Summus, e in particolare, il Fractal Imager archivia immagini solitamente con rapporti di compressione che sono circa la metà del rispettivo Wavelet.
Per quanto riguarda il Plug-In invece, esso permette una manipolazione on-line delle immagini molto più complessa del Plug-In della Summus, oltre a visualizzare le immagini in maniera più veloce. Sulla stessa pagina Web è possibile infatti zoomare, ruotare, cambiare colori, rendere a tonalità di grigi etc. Inoltre, i parametri di Embed (ovvero del tag HTML che permette di includere le immagini all'interno della pagina) sono molto più numerosi e flessibili, ed è possibile determinare sotto-aree che possono essere visualizzate separatamente all'interno di una stessa pagina. Questa flessibilità è espressamente orientata verso il Web.
Potete fare delle prove su un'immagine frattale allegata a questo articolo, ovviamente solo dopo aver scaricato il Plug-In.

GETTING IN TOUCH

Le due tecnologie di compressione sono ovviamente in continua evoluzione, soprattutto per quel che riguarda la compressione Frattale. Se volete avere maggiori informazioni su quest'ultimo tipo di compressione, potete visitare il sito di un giovane professore dell'università di San Diego, Yuval Fisher, amico di Barnsley, co-autore del libro "Fractals Everywhere" e autore del libro "Fractal Image Compression". Qui potrete trovare moltissime informazioni : articoli, relazioni in formato PS, programmi d'avanguardia (molti solo per ambiente UNIX), reportage da conferenze etc. Oppure potete visitare il sito francese di Groupe Fractales, molto simile al sito di Yuval Fisher. In ultimo, date un'occhiata al sito del Dr. Dobb's Journal, sul cui numero di Gennaio 96 è stato pubblicato un articolo di D.R McGregor, R.J. Fryer, P. Cocksmith e P. Murray sulla "Fast Fractal Transform", un algoritmo di compressione che sfrutta tecniche associative, riuscendo ad incrementare drammaticamente il tempo di compressione.
Se invece volete avere maggiori informazioni sulla compressione Wavelet, potete visitare il sito di Geoffrey Davis, dove troverete anche un'interessante discussione su un nuovo tipo di protocollo per trasmettere immagini via Internet seza ritrasmissione di pacchetto. Geoffrey Davis è anche l'autore di un brillante paper sulle connessioni (per la verità moltissime) sulla compressione Fratale e quella Wavelet, proponendo un nuovo schema di compressione che migliora moltissimo la qualità delle immagini. Attenzione però, l'articolo non è alla portata di tutti, e potrete trovarlo alquanto ostico.
Altro sito molto interessante sulla compressione Wavelet è quello degli "Wavelet Warriors", di cui, ovviamente, anche Geoff Davis fà parte. Se invece volete cominciare a capire la teoria della trasformata Wavelet, potete recarvi al sito di Armara, oppure, per argomenti vari ed anche molto avanzati, potete provare il sito sulle Wavelet Resource.
Infine, se volete, potete scrivermi un commento su questo articolo, o una vostra congettura su queste due tecniche estremamente interessanti. Sarà tutto ben accetto! Alla prossima !


Copyright © 1996 Beta. Tutti i diritti riservati.
Precedente Principale Sommario Informazioni Redazione Browser Successivo