Come funziona la compressione JPEG

Una spiegazione semplice dei passaggi alla base di una compressione immagini efficiente

24. January 2025 di Bianca Palmer

Come funziona la compressione JPEG

Ti sei mai chiesto come il tuo telefono o la tua fotocamera possano scattare una foto e, in pochi istanti, salvarla come JPEG, più piccola, veloce e comunque nitida? Dietro le quinte entra in gioco un potente processo, che riduce i file immagine di grandi dimensioni a una frazione della loro grandezza originale mantenendo alta la qualità. Ma come funziona davvero? In questa guida analizziamo nel dettaglio la La compressione JPEGe suddividiamo ogni fase in termini semplici, così puoi capire come funziona questo processo di compressione delle immagini.

Che cos'è JPEG?

JPEG (acronimo di Joint Photographic Experts Group) è uno dei formati di immagine più comuni. È la scelta preferita per l'archiviazione delle foto digitali. Il vantaggio principale di JPEG è la capacità di comprimere i file immagine, rendendoli molto più piccoli senza una perdita di qualità percepibile.

Per esempio, un'immagine non compressa di alta qualità può essere di 46 MB. Dopo la compressione in JPEG, la stessa immagine può ridursi a soli 4,1 MB. Ma come fa a farlo mantenendo l'immagine nitida?

La risposta sta nel compression process, processo di compressione, che sfrutta il modo in cui funzionano i nostri occhi ed elimina i dati non necessari.

Cosa fa JPEG?

In termini semplici, JPEG analizza l'immagine e rimuove gli elementi che i nostri occhi non vedono facilmente. Quando comprimere un'immagine con JPEG, puoi controllare quanto viene compressa. Regolando l'impostazione di "qualità", decidi quanto spazio vuoi risparmiare. Quando la qualità diminuisce da 100% a 0%, anche la dimensione del file diminuisce di conseguenza.

Aumentando la compressione, la risoluzione dell'immagine resta la stessa, ma potresti iniziare a vedere alcuni difetti o "artefatti" comparire. Questi difetti sembrano piccoli quadrati e spesso sono difficili da notare a meno che non si ingrandisca. L'obiettivo di JPEG è ridurre il più possibile le dimensioni del file senza rendere l'immagine sgradevole all'occhio umano.

Le fasi della compressione JPEG

La compressione JPEG non è un singolo processo, ma una serie di passaggi progettati per ridurre le dimensioni dell'immagine. Ecco i cinque passaggi chiave che rendono JPEG così efficiente.

Fase 1: Conversione dello spazio colore

Le immagini sono composte da pixel e ogni pixel ha componenti rosso, verde e blu (RGB) che si combinano per creare i colori. JPEG inizia convertendo questi valori RGB in un diverso spazio colore:

  • Luminanza (Luminosità): È la luminosità di un pixel ed è importante per definire il contrasto complessivo dell'immagine.
  • Crominanza (Colore): Contiene le informazioni di colore, inclusi tonalità e saturazione.

Questa conversione sfrutta il fatto che l'occhio umano è più sensibile alla luminosità (luminanza) che al colore (crominanza). Separando luminosità e colore, JPEG consente una riduzione mirata dei dati nelle fasi successive, mantenendo intatti i dettagli visivi più importanti.

In questa fase non si perde alcun dato, ma l'immagine viene preparata per una compressione efficiente.

Fase 2: Riduzione della crominanza/Chroma Subsampling

Chroma Subsampling è un è una tecnica applicata dopo la conversione dello spazio colore. Ricordi quando abbiamo detto che i nostri occhi non sono molto bravi a vedere i colori (crominanza) rispetto alla luminosità (luminanza)?

JPEG sfrutta questo fatto riducendo la quantità di dati di colore. Riduce le immagini di crominanza blu e rossa mediandole in blocchi di quattro pixel. In questo modo i dati di colore diventano molto più piccoli, mantenendo la luminanza (luminosità) invariata. A questo punto, l'immagine è già compressa in modo significativo.

Fase 3: Trasformata discreta del coseno (DCT)

La Transformata discreta del coseno (DCT) è una tecnica matematica utilizzata per convertire i dati dell'immagine dal dominio spaziale (in cui l'immagine è una griglia di pixel) al dominio delle frequenze. Questo processo aiuta a identificare quali parti dell'immagine contengono le informazioni visive più importanti e quali parti possono essere scartate.

La DCT suddivide l'immagine in blocchi 8x8 e converte ogni blocco in una raccolta di valori di frequenza. Le frequenze più alte, che rappresentano cambiamenti rapidi nei valori dei pixel, come bordi o rumore, sono spesso meno percepibili all'occhio umano e possono essere semplificate o rimosse.

Passaggio 4: Quantizzazione

Una volta applicata la DCT, i dati di frequenza risultanti passano attraverso la quantizzazione. In questo passaggio, l' intervallo dei valori di frequenza viene ridotto dividendoli per un insieme di costanti chiamato tabella di quantizzazione. Il processo sostanzialmente arrotonda i valori di frequenza per semplificarli.

I valori di frequenza più alti sono quantizzati in modo più intenso, il che significa che perdono più precisione perché sono meno importanti per la qualità complessiva dell'immagine. Questo quarto passaggio riduce la quantità di dati necessaria a rappresentare l'immagine, rendendo il file più piccolo. Tuttavia, una quantizzazione eccessiva può causare artefatti visibili, come effetto blocco o sfocature, soprattutto a livelli di compressione più alti.

Passaggio 5: Codifica Run Length e Huffman

Dopo la quantizzazione, i dati non sono ancora abbastanza compatti per un'archiviazione efficiente. Qui entrano in gioco la Run Length Encoding (RLE) e Codifica Huffman vengono utilizzate.

Per prima cosa, la RLE viene utilizzata per semplificare lunghe sequenze di dati ripetuti (come gli zeri) memorizzando il numero di ripetizioni anziché ogni singolo valore. Successivamente viene applicata la Codifica Huffman, una tecnica che sostituisce i valori che si verificano più spesso con codici di bit più brevi, rendendo il file ancora più piccolo.

These two metodi di codifica lavorano insieme per ridurre drasticamente le dimensioni del file senza sacrificare troppa qualità dell'immagine.

Note aggiuntive

Sebbene JPEG sia un formato molto efficiente, ci sono alcuni aspetti importanti da considerare:

  • Livello di compressione: JPEG consente agli utenti di selezionare il livello di compressione, ma una compressione maggiore riduce le dimensioni del file e può introdurre artefatti visibili come bordi sfocati o pixelizzazione. Questo accade quando i valori della tabella di quantizzazione sono troppo alti, il che porta ad aggiungere più zeri, rendendo il file più piccolo ma a scapito della qualità dell'immagine.
  • Perdita di dati ad alta frequenza: la quantizzazione riduce la precisione dei dati ad alta frequenza (dettagli come bordi netti), motivo per cui JPEG è ideale per trame uniformi ma può avere difficoltà con linee nette e grafica vettoriale.
  • Non ideale per la grafica vettoriale: JPEG non è la scelta migliore per comprimere la grafica vettoriale, poiché può causare artefatti evidenti ai bordi di forme o linee.

Nonostante questi limiti, JPEG rimane il formato di immagine più diffuso, in parte perché è vecchio, ben compreso e privo di royalty. Tuttavia, formati più recenti come WebP oppure HEIF offrono tassi di compressione ancora migliori senza compromettere la qualità, rendendoli alternative interessanti in determinati contesti.

In conclusione

L'algoritmo di compressione JPEG è un notevole traguardo nella gestione dei dati delle immagini. Suddividendo le immagini in blocchi più piccoli, applicando trasformazioni matematiche e utilizzando tecniche di codifica efficienti come Run Length e Codifica Huffman, consente di archiviare immagini di alta qualità in file di dimensioni molto più ridotte.

Sebbene JPEG presenti alcune limitazioni, soprattutto con alti livelli di compressione o con la grafica vettoriale, il suo ampio utilizzo e la capacità di offrire buoni risultati per le immagini fotografiche lo rendono uno standard duraturo.