Il formato JPEG - Il degrado delle immagini

Premessa

Il formato JPEG e' utilizzatissimo in ambito multimediale, sia per il trasporto di immagini fisse che per immagini in movimento.Si tratta di un formato che permette di salvare in un file di dimensioni contenute immagini complesse e di grande risoluzione. Cio' non avviene con meccanismi che conservino la proprieta' originale delle immagini ma con tecniche (molto sofisticate, peraltro) che permettano di avere un grande risultato in termini di risparmi con un "accettabile degrado" della qualita' originale del file.
Naturalmente il formato JPEG ha grandissima valenza tecnologica e non e' certo da sottovalutare o da denigrare per questi difetti insiti nel processo di "risparmio". Obbiettivo di questo articolo e' quello di sottolineare un problema in modo che si sia consapevoli dei limiti dello stesso.

I formati grafici

Nei formati grafici "conservativi" un'immagine viene scomposta in una matrice di punti, ogni punto viene "misurato" secondo le sue caratteristiche ottiche, e infine viene effettuato un salvataggio su file della serie di misure ottenute. Facendo una banale semplificazione, se avessimo un'immagine composta da un reticolo di 100 x 100 punti, avremmo un totale di 10.000 punti misurati da scrivere su file, con un'occupazione adeguata di spazio fisico. Nei formati "piatti" tale procedimento viene effettuato pedissequamente per tutti i punti definiti nella matrice originale dell'immagine, col risultato (ad esempio il formato BMP) di avere un'occupazione consistente. Ogni punto dell'immagine viene inoltre descritto non solo come "acceso" o "spento" ma con la serie di informazioni relative ai colori fondamentali, eccetera. Il "costo" in bytes di ogni singolo punto, quindi, puo' essere consistente, maggiori sono le informazioni che sono necessarie per descriverlo. Ad esempio se la capacita' di discriminare l'intensita' di un singolo colore fondamentale e' di 256 livelli diversi (un byte), allora ci vorranno per i tre colori fondamentali un terzetto di bytes. L'immagine teorica di cui sopra da 100 x 100 richiederebbe quindi molto piu' spazio, pari a 30.000 "numeri" da registrare su file.

Ottimizzazione dei files grafici

Particolari tecniche di ottimizzazione possono ovviare alle enormi dimensioni di un file grafico.
Supponiamo ad esempio che la nostra immagine contenuta nella matrice 100x100 sopra citata sia in realta' estremamente ridotta. A livello di un ipotetico formato di trasporto di questa immagine, potrei prevedere di trasmettere solo la parte di immagine che contiene effettivamente qualcosa. Se il mio oggetto visualizzato e' grande 5 x 5, potrei "indicare" sul file che la mia zona utile e' solo quella e risparmiarmi quindi il salvataggio di una buona parte dei 30.000 punti.
Un altro sistema potrebbe essere quello di trattare l'immagine interamente ma di "zippare" il file conclusivo, ottenendo un risparmio di spazio senza alcun "trattamento particolare" dell'immagine.
Un'altra tecnica potrebbe essere quella di cercare "somiglianze tra i punti (pixel) e aggregarle in "pacchetti" di descrizione. Ad esempio una fotografia dove pezzi contigui dell'immagine sono uguali, potrebbe permettere di convertire la serie di punti uguali e vicini in una descrizione sintetica del tipo "disegna 30 punti uguali uno dopo l'altro", con un potenziale risparmio anche consistente (ovviamente per immagini che abbiano queste caratteristiche. Questa codifica si chiama ad esempio RLE (run length encoding, cioe' codifica della lunghezza) ma, come potete immaginare, su un'immagine con tantissimi dettagli ben difficilmente permette di risparmiare, dato che la codifica richiede due informazioni diverse per ogni punto (il colore del punto e quanto lungo va tracciato), tant'e' che a volte per immagini particolarmente complesse e' addirittura peggiore del metodo di descrizione "punto per punto".
In pratica un metodo che ottimizza lo spazio occupato su file da un'immagine attraverso i meccanismi sopra esposti, deve per forza di cose essere adeguato alle caratteristiche dell'immagine stessa, altrimenti potrebbe non portare a vantaggi apprezzabili.
Ora, senza entrare in dettagli particolari, per cercare di permettere un trasporto "leggero" delle immagini, e' stato studiato un insieme di tecniche che, attraverso sofisticati meccanismi di approssimazione, permettesse di ottenere un vantaggio apprezzabile nella dimensione finale senza degradare troppo l'immagine. Volendo dare un'idea di massima avulsa da dettagli tecnici, si potrebbe dire che si chiede al formato grafico di fare "un riassunto" dell'immagine stessa, "sorvolando su alcuni dettagli", semplificando la descrizione di altri, omettendo informazioni non indispensabili, etc. Tecnicamente l'operazione richiede quindi una analisi dell'immagine originale e il trasferimento di una "sintesi" di essa sul file. Come ogni buon riassunto, piu' esso e' accurato, migliore e' l'accuratezza di cio' che descrive ma maggiore e' la sua dimensione. Viceversa piu' sintetico e' il riassunto, minore e' la sua dimensione e peraltro minore e' la sua capacita di descrivere efficacemente le informazioni.
L'utilizzo di formati grafici e' stato poi esteso dalle immagini fisse a quelle in movimento, sempre con logica simile e con meccanismi di ottimizzazione analoghi. Non solo meccanismi che semplifichino le singole immagini del filmato secondo modelli visti precedentemente, ma anche con tecniche che entrino nel merito del filmato nel suo complesso.
Un filmato classicamente trasmesso al cinema con 24 fotogrammi al secondo puo' quindi essere "semplificato" in vario modo. Ad esempio se le immagini in un dato momento sono fisse, si potrebbe "risparmiare" il flusso di 24 fotogrammi al secondo per la maggior parte "inutili", visto che sono tutti uguali. Ovviamente cio' non e' possibile ne' ipotizzabile con un proiettore a pellicola ma, con gli strumenti digitali, cio' e' non solo possibile ma molto conveniente, dato che ogni immagine (per quanto abbiamo esposto prima) ha una dimensione assolutamente consistente (un filmato DVD ha una risoluzione di 720 x 576 punti, cioe' 414.720 punti ognuno composto di varie informazioni relative al colore, luminosita', etc...) per cui ogni fotogramma risparmiato rappresenta un risparmio notevole. Pure e' anche possibile effettuare un'ottimizzazione "tra fotogrammi", ad esempio in alcuni casi puo' essere conveniente registrare le variazioni tra un'immagine e l'altra piuttosto che le due immagini nella loro interezza.
Spero di aver reso l'idea.
Non per invadere altri standard ma il discorso relativo alla gestione "approssimata" dei files grafici e' del tutto analogo a quello effettuato per i formati audio (Mp3, tanto per citarne uno). Del resto il gruppo MPEG ("Motion Picture Entertainment Group") e' lo stesso che ha elaborato i due standard JPG e MP3 !

Il caso specifico - un'immagine campione

Ho preso un'immagine campione. La seguente.
E' un dettaglio di una immagine piu' grande.
Come vedete il campionamento della stessa ha gia' introdotto una serie di piccole perturbazioni (il reticolo di quadratini). Si tratta di perturbazioni che, viste nel complesso dell'immagine originale, non sono molto visibili.

Ho quindi convertito l'immagine in formato JPEG, ottenendo la seguente:


Provate ad aprire le due immagini su finestre diverse e perfettamente sovrapposte, passando dall'una all'altra per verificare le differenze ad occhio. E' un esercizio semplicissimo ma molto istruttivo.
E' evidente una serie di distorsioni e di effetti indesiderati, tra i quali ad esempio:
1) strani aloni e "ondine" nei pressi dei bordi di alcuni oggetti, ad esempio nei pressi della zona d'ombra sulla sponda, come pure nei contorni delle palle, della stecca e del gessetto
2) la "semplificazione" che viene fatta delle zone "omogenee" (la quadrettatura originale e' stata sostituita con zone di "tinta unita")
3) il leggero alone nei pressi della macchia bianca (riflesso della luce) delle due palle bianca (sotto la macchia) e nera (sopra la macchia)
Ovviamente ingrandendo i particolari i difetti si notano fortemente, mentre osservando "normalmente" le immagini la differenza non si nota che impercettibilmente, come si vede da questo "slalom parallelo" effettuato con le due immagini in formato 200 x 150 affiancate:

Immagine originale
Immagine dopo conversione JPG

Per la cronaca il file originale (in formato BMP) occupa 921.654 bytes mentre il file convertito in formato JPG occupa la bellezza di 27.341 bytes, cioe' circa il 3% del file originale!!
Pertanto dal punto di vista del risparmio dell'occupazione di risorse sicuramente il formato JPG e' assolutamente conveniente. Non da quello qualitativo, sicuramente.


Conclusioni

Abbiamo dato un'occhiata al formato JPEG e discusso di qualche elemento inerente la grafica.
Sicuramente e' un tema particolarmente complesso e la breve e sintetica chiacchierata non poteva certo entrare molto nel dettaglio. Spero di aver comunque reso l'idea delle problematiche dell'argomento.

Come valuti questo documento?

Il documento che hai letto ha scopo didattico/informativo/divulgativo ed e' redatto da professionisti che operano in questo ed in tanti altri settori.

Ci interessa avere un tuo giudizio,
capire quali sono i tuoi interessi e le tue esigenze.

Ogni tua necessita' puo' trovare risposta nei professionisti di Digital Expert. Scrivici!
byartaigiechina