mercoledì 23 gennaio 2013

La compressione JPEG 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.

 I feel like I wrote this after reading a few days ago the 11 most popular urban legends about photography on the popular clickblog.itWell I think some of the arguments in support of or against the legends underground are very weak and easily attacked.What most struck me as absurd is that of compression algorithm Jpg Jpeg or, if you prefer. Where it is reported that repeatedly save an image as a JPG is not so harmful. As we all surely know the acronym JPG or JPEG stands for Joint Photographic Expert Group by the name of the team which was invented and then improved, you will also know that it is a lossy format and then from right to have this urban legend and not the author Article on clickblog.I'd like to delve a little 'argument analyzing what steps are performed when saving to JPG or JPEG and then see where indicated and where no such file.When you choose to save is first sampled the image with square from 8 px from the side, at this point the function is applied DCT discrete cosine transformation. Do not commit in speeches too complicated, but the function in question is similar to the Fourier transform for those who had never heard of. Both extract a signal from another signal which represents the frequency spectrum. Simply put the resulting function does not point out which colors are present in the square but it describes how they change and how often.Well here comes the medicine that tells us how the human eye is insensitive to variations in color between two points if they are less than a certain threshold. This allows us to cut all minor variations of a certain amount (this corresponds to a flattening of color that is supposed to the eye and is not known at this point that there is loss of quality), then using the Huffman coding is storing the color of each pixel using the least amount of memory as possible. If we wanted to make an example algorithm JPG is a little 'what makes an audio filter with the music that passes or not certain sound frequencies.When we save an image in JPG there is in fact required to compress the image on a scale from 0 to 100. More we set a large value will be truncated less the low color variations.We take into account that the algorithm Rescue JPG is designed to give the best results around 80-90%. Use higher values ​​does not make sense because you have a low reduction in the size of the file, and then the damage caused by the JPG, which still runs, are greater than the benefits, otherwise fall below 80% greatly reduces the file size but begin to see the blockiness due to the algorithm.After all these words you've probably realized that save an image repeatedly using this method gets worse every time you save the image quality.The JPG has been designed to be used in images such as photos, use of images containing geometric shapes with sharp edges or texts is not the best thing we can do just because there are color changes too the net being cut are no longer accurate as in origin.

Nessun commento:

Posta un commento