La compressione JPG miti e leggende

Mi è venuta voglia di scrivere quest’articolo dopo aver letto qualche giorno fa le 11 leggende metropolitane più diffuse sulla fotografia sul noto clickblog.it

Ebbene secondo me alcune argomentazioni a supporto o a sfavore delle leggende metropolitana sono molto deboli e facilmente attaccabili.

Quella che più mi è sembrata assurda è quella relativa all’algoritmo di compressione Jpg o Jpeg che dir si voglia. Dove viene riportato che salvare ripetutamente un’immagine in formato JPG non sia così dannoso. Come tutti sicuramente sapete l’acronimo JPG o JPEG sta per Joint Photographic Expert Group dal nome del team da cui venne inventato e poi migliorato, conoscerete anche che è un formato con perdita e quindi già questo da ragione alla leggenda metropolitana e non all’autore dell’articolo su clickblog.

Mi piacerebbe approfondire un po’ l’argomento analizzando quali passaggi vengono eseguiti durante il salvataggio in JPG o JPEG e in seguito vedere dove è indicato e dove no questo tipo di file.

Quando voi scegliete di salvare per prima cosa viene campionata l’immagine con quadrati da 8 px di lato, a questo punto viene applicata la funzione DCT, trasformazione discreta in coseno. Non impegniamoci in discorsi troppo complicati ma la funzione in questione assomiglia alla trasformata di Fourier per chi ne avesse mai sentito parlare. Tutte e due estraggono da un segnale un altro segnale che ne rappresenta lo spettro delle frequenze. Detto in parole semplici la funzione risultante non indica più quali colori sono presenti nel quadrato ma ci descrive come cambiano e con quale frequenza.

Ebbene qui entra in gioco la medicina che ci dice come l’occhio umano sia insensibile a variazioni di colore tra due punti se queste sono minori di una certa soglia. Questo ci permette di tagliare tutte le variazioni minori di una certa quantità (ciò corrisponde ad un appiattimento di colore che si suppone l’occhio non noti ed è a questo punto che si ha la perdita di qualità), infine utilizzando la codifica di Huffman viene memorizzato il colore di ogni singolo pixel utilizzando la minor quantità di memoria possibile. Se volessimo fare un esempio l’algoritmo JPG fa un po’ quello che fa un filtro audio con la musica che lascia passare oppure no determinate frequenze sonore.

Quando noi salviamo un’immagine in JPG ci viene infatti chiesto di quanto comprimere l’immagine su una scala che va da 0 a 100. Più impostiamo un valore grande meno verranno troncate le basse variazioni di colore.

Teniamo conto che l’algoritmo di salvataggio in JPG è studiato per dare i risultati migliori intorno al 80-90%. Usare valori superiori non ha senso in quanto si ha una bassa riduzione delle dimensioni del file e quindi i danni apportati dal JPG, che comunque viene eseguito, sono maggiori dei vantaggi, viceversa scendere sotto l’80% riduce di molto la dimensione del file ma cominciano a vedersi le quadrettature dovute all’algoritmo.

Dopo tutte queste parole avrete sicuramente capito che salvare ripetutamente un’immagine utilizzando questo metodo peggiora ad ogni salvataggio la qualità dell’immagine.

Il JPG è stato studiato per essere usato in immagini di tipo fotografico, utilizzarlo su immagini contenenti forme geometriche con contorni netti o testi non è la cosa migliore che possiamo fare proprio perchè ci sono cambi di colore troppo netti che venendo tagliati non risultano più precisi come in origine.

Ecco un esempio

Immagine originale

Immagine salvata in JPG compressione 40, a prima vista fa un buon lavoro.

Ma ingrandendo ecco che compaiono degli artefatti che peggiorano la qualità dell’immagine nei cambi di colore.

Questa invece è un’immagine mista bianco e nero colori salvata in JPG al 90 %

Questa la stessa dopo 20 salvataggi al 60%

A prima vista non si notano quasi differenze ma andando a ingrandire al 300% si notano artefatti nel cielo e perdita di colore dove il questo è uniforme (cerchio in alto). Inoltre si nota una riduzione di particolari dove si hanno cambiamenti di colori (cerchio in basso).

Originale

Dopo 20 salvataggi

Se non notate differenze provate a inclinare leggermente il monitor e guardarlo un po’ dal basso verso l’alto.

Per chi volesse approfondire l’argomento vi rimando a questi due link:
http://www.echoestech.net/wp/wp-content/uploads/2010/02/Tesina_JPEG.pdf
http://www.di.uniba.it/~laura/corsini/MAIN_JPG.HTML

Spero di esservi stato utile.

Claudio G.