# JPEG

JPEG è l'acronimo di Joint Photographic Experts Group, un comitato di esperti ISO/CCITT che ha definito il primo standard internazionale di compressione dell'immagine digitale a tono continuo, sia a livelli di grigio sia a colori.
La stessa combinazione di caratteri indica anche il diffusissimo algoritmo di compressione a perdita di informazioni, che è disponibile in formato aperto e a implementazione libera. Si noti tuttavia che parlare di "file in formato jpg" è concettualmente errato, in quanto non esiste un "formato di file jpg": il file contenitore può essere di vario tipo (exif, jfif, tiff), ed è solo l'immagine contenuta ad essere effettivamente in formato jpg. Si tratta dello stesso ordine di concetti relativo ad esempio ai file video avi o mkv, che possono contenere file compressi con una moltitudine di algoritmi estremamente vari.
JPEG è divenuto il più diffuso standard di compressione delle immagini fotografiche.

## Storia

La specifica JPEG originale pubblicata nel 1992 implementa i processi di vari precedenti documenti di ricerca e brevetti citati dal CCITT (ora ITU-T) e dal Joint Photographic Experts Group. La base principale per l'algoritmo di compressione con perdita di dati di JPEG è la trasformata discreta di coseno (DCT), proposta per la prima volta da Nasir Ahmed come tecnica di compressione delle immagini nel 1972. Ahmed ha sviluppato un algoritmo DCT pratico con T. Natarajan della Kansas State University e KR Rao della University of Texas nel 1973. Il loro documento fondamentale del 1974 è citato nelle specifiche JPEG, insieme a diversi articoli di ricerca successivi che hanno ulteriormente lavorato su DCT, tra cui un articolo del 1977 di Wen-Hsiung Chen, CH Smith e SC Fralick che descriveva un veloce algoritmo DCT, nonché un articolo del 1978 di NJ Narasinha e SC Fralick, e un articolo del 1984 di BG Lee. La specifica cita anche un articolo del 1984 di Wen-Hsiung Chen e WK Pratt come influenza sul suo algoritmo di quantizzazione, e l'articolo del 1952 di David A. Huffman per il suo algoritmo di codifica Huffman.
La specifica JPEG cita brevetti di diverse aziende. I seguenti brevetti hanno fornito le basi per il suo algoritmo di codifica aritmetica.
* IBM
** Brevetto USA 4.652.856 - 4 febbraio 1986 - Kottappuram MA Mohiuddin e Jorma J. Rissanen - Codice aritmetico multi-alfabeto senza moltiplicazione
** Brevetto USA 4.905.297 - 27 febbraio 1990 - G. Langdon, JL Mitchell, WB Pennebaker e Jorma J. Rissanen - Sistema di codifica e decodifica aritmetica
** Brevetto USA 4.935.882 - 19 giugno 1990 - WB Pennebaker e JL Mitchell - Adattamento della probabilità per programmatori aritmetici
* Mitsubishi Electric
** JP H02202267 ( 1021672 ) - 21 gennaio 1989 - Toshihiro Kimura, Shigenori Kino, Fumitaka Ono, Masayuki Yoshida - Sistema di codifica
** JP H03247123 ( 2-46275 ) - 26 febbraio 1990 - Fumitaka Ono, Tomohiro Kimura, Masayuki Yoshida e Shigenori Kino - Apparecchi di codifica e metodo di codifica
La specifica JPEG cita anche altri tre brevetti di IBM. Altre società citate come titolari di brevetti includono AT&T (due brevetti) e Canon Inc. Assente dall'elenco è il brevetto USA 4.698.672, depositato da Wen-Hsiung Chen e Daniel J. Klenke di Compression Labs nell'ottobre 1986. Il brevetto descrive un Algoritmo di compressione delle immagini basato su DCT, che sarebbe poi causa di polemiche nel 2002 (vedi polemiche sui brevetti di seguito). Tuttavia, la specifica JPEG citava due precedenti lavori di ricerca di Wen-Hsiung Chen, pubblicati nel 1977 e nel 1984.

## Descrizione
### Caratteristiche del formato jpeg

JPEG specifica solamente come una immagine possa essere trasformata in una sequenza di byte, ma non come questa possa essere incapsulata in un formato di file. I due aspetti sono spesso confusi ed il termine "jpeg" viene utilizzato come sinonimo di "file contenente un'immagine compressa con jpeg".
Lo standard JPEG definisce due metodi di compressione di base, uno basato sull'uso della trasformata discreta del coseno (DCT-Discrete Cosine Transformì) con "compressione di tipo lossy" cioè con perdita di informazione, l'altro sull'uso di un metodo predittivo con compressione di tipo "lossless" cioè senza perdita di informazione.
L'algoritmo base del JPEG di tipo "lossy" viene detto "baseline"; inoltre sono state definite delle estensioni opzionali del metodo "lossy" per la compressione di tipo gerarchico e progressivo.
Le estensioni di file più comuni per i file che utilizzano la compressione JPEG sono .jpge .jpeg, tuttavia sono utilizzate anche .jpe, .jfife .jif. È anche possibile che i dati JPEG vengano incorporati in altri tipi di file: i file codificati TIFF spesso incorporano un'immagine JPEG come anteprima dell'immagine principale o contengono direttamente immagini compresse con JPEG; i file MP3 possono contenere nel tag ID3v2 un'immagine compressa tramite JPEG, copertina del brano / album.

### Conversione immagine da bitmap a JPEG

Essenzialmente il JPEG opera in 4 passi fondamentali per trasformare un'immagine bitmap in una JPEG e viceversa.
Tali passi sono:
L'immagine, vista come matrice di dimensioni NxN generiche, viene suddivisa in blocchetti di 8x8 pixel (se i blocchi di dati fossero di dimensioni più grandi, l'elaborazione risulterebbe troppo pesante e lenta; se più piccoli, non conterrebbero sufficiente informazione). Per ogni blocchetto si hanno le seguenti elaborazioni in sequenza:
* Rappresentazione in ambito frequenziale tramite DCT (trasformata discreta del coseno) se opera in modalità lossy, uso dei predittori in modalità lossless.
* Quantizzazione effettuata tramite opportune matrici, che, di solito, danno maggior peso ai coefficienti di ordine più basso (che rappresentano le basse frequenze spaziali), in quanto, per le proprietà della DCT, sono più importanti ai fini della sintesi dell'immagine, in quanto il sistema visivo umano percepisce meglio le basse frequenze spaziali rispetto alle alte frequenze.
* Codifica entropica ed eliminazione delle ridondanze di tipo statistico tramite codifica RLE e codici di Huffman; la componente continua della DCT, invece, è codificata in DPCM (Differential pulse-code modulation).
Il fattore di compressione che si può raggiungere è determinato essenzialmente da un parametro di scalature per le matrici di quantizzazione. Tanto più piccolo è questo parametro, tanto peggiore è la qualità. Si può ottenere un fattore di compressione 15:1 senza alterare visibilmente la qualità dell'immagine.
Esempio di immagine compressa con l'algoritmo standard a diverse qualità:
| JPEG qualità 10% - 3,2 KB | JPEG qualità 50% - 6,7 KB |
| JPEG qualità 90% - 30,2 KB | JPEG qualità 100% - 87,7 KB |
Come si può notare, il miglior rapporto qualità/dimensione si ha con valore intorno al 90%. È inoltre immediatamente osservabile come, all'aumentare del livello di compressione, compaiano artefatti sempre più evidenti dal punto di vista visivo. Tra questi, il più tipico per il formato JPEG (come per tutti i formati che si basano sulla DCT) è la quadrettatura, o "blocking"; oltre ad esso si verificano fenomeni di "ringing" (fenomeno di Gibbs) e "blurring", o "blur" (sfocatura).

### Utilizzo

JPEG è l'algoritmo più diffuso per la memorizzazione di fotografie. È inoltre molto comune su World Wide Web.
Non è invece adatto per disegni geometrici, immagini al tratto e a colori uniformi, testo o icone, impieghi per i quali sono di impiego più comune i formati Portable Network Graphics (PNG) e Graphics Interchange Format (GIF).
Non possiede la possibilità di generare immagini animate

### Altri formati di compressione "lossy"

Nuovi metodi lossy, in particolare quelli basati sulle DWT (Discrete Wavelet Transform), garantiscono migliori risultati in alcuni casi.
Il comitato JPEG ha creato un nuovo standard basato su wavelet, JPEG 2000, con la prospettiva di sostituire nel tempo lo standard JPEG.