Studio sulla compressione WebP

Introduzione

Eseguiamo una valutazione comparativa della compressione delle immagini WebP e JPEG in base al nuovo codificatore rilasciato in libwebp. L'obiettivo è eseguire una serie di esperimenti facilmente ripetibili utilizzando strumenti disponibili pubblicamente e confrontare la compressione delle immagini ottenuta da WebP e JPEG.

Il nostro precedente studio comparativo di WebP si è concentrato sulla valutazione di un gran numero di immagini ed è stato condotto su origini JPEG che venivano sottoposte a scansione dal web. JPEG è un formato di compressione con perdita di dati che introduce artefatti di compressione nell'origine. Inoltre, abbiamo utilizzato inizialmente il rapporto segnale/rumore massimo o PSNR come metrica di qualità. PSNR presenta alcuni svantaggi quando viene utilizzato come metrica di qualità delle immagini. In base al feedback della community, conduciamo gli esperimenti sulle immagini PNG, comprese le immagini disponibili in alcuni gruppi di test standard. In questo studio utilizziamo Structural Similarity o SSIM come metrica di qualità per lo studio. La SSIM è considerata una metrica di qualità visiva migliore.

Metodologia

Descriviamo due tipi di valutazioni. Nel primo caso, studiamo la compressione aggiuntiva raggiunta da WebP allo stesso livello qualitativo di JPEG. In particolare, generiamo immagini WebP della stessa qualità (secondo l'indice SSIM) delle immagini JPEG, quindi confrontiamo le dimensioni dei file delle immagini WebP e JPEG. Nel secondo caso, analizziamo i grafici SSIM e bit per pixel (bpp) per WebP e JPEG. Questi grafici mostrano il compromesso tra la distorsione della frequenza e WebP e JPEG.

I set di dati per gli esperimenti sono costituiti da immagini PNG. Queste immagini sono state ottenute da suite di immagini di test standard accessibili pubblicamente, nonché da un'ampia raccolta di immagini PNG sottoposte a scansione dal web.

Ogni esperimento consiste nell'eseguire un insieme di comandi. Vengono utilizzati solo gli strumenti a riga di comando disponibili pubblicamente per mantenere gli esperimenti ragionevolmente riproduttivi per altri. Gli strumenti a riga di comando utilizzati per questo esperimento sono:

  • identify e convert sono strumenti a riga di comando che fanno parte di ImageMagick. Per questa analisi abbiamo utilizzato la versione 6.5.7. Abbiamo utilizzato convert per effettuare la conversione tra i formati PNG e PPM. Abbiamo utilizzato identify per estrarre le informazioni relative a larghezza e altezza di un'immagine.

  • cwebp e dwebp sono strumenti a riga di comando che fanno parte della libreria libwebp che abbiamo rilasciato nel primo trimestre del 2011. Abbiamo usato la versione 0.1.2 della libreria. Abbiamo usato cwebp e dwebp per codificare e decodificare le immagini WebP. Abbiamo utilizzato i parametri predefiniti di codifica e decodifica di questi strumenti.

  • cjpeg e djpeg sono strumenti a riga di comando che fanno parte della libreria libjpeg. Abbiamo utilizzato la versione 6b della libreria. Abbiamo usato cjpeg e djpeg per codificare e decodificare un'immagine JPEG. Abbiamo usato cjpeg con il flag -optimize per ottimizzare le dimensioni del file. Impostiamo i valori predefiniti di tutti gli altri parametri.

La qualità di un'immagine è stata misurata utilizzando SSIM. Come indicato in precedenza, la metrica SSIM è generalmente accettata come metrica di qualità migliore rispetto a PSNR. Per il calcolo dell'indice SSIM, abbiamo utilizzato un'implementazione disponibile pubblicamente in C++. Il lettore può scaricare gli script Python che abbiamo utilizzato negli esperimenti dal repository del codice come riferimento.

Set di dati immagine

Abbiamo scelto i set di dati per valutare le raccolte di immagini di test standard e su un gran numero di immagini. Di seguito è riportato l'elenco dei set di dati utilizzati negli esperimenti.

  1. Lenna: immagine Lenna molto utilizzata (512 x 512 pixel).

  2. Kodak: 24 immagini dalla suite di immagini a colori reali di Kodak.

  3. Tecnick: 100 immagini della collezione disponibili su Tecnick.com. Abbiamo utilizzato le 100 immagini a colori RGB nelle dimensioni originali.

  4. Image_crawl: per testare un numero elevato di immagini, abbiamo raccolto un campione casuale di immagini PNG dal database di scansione web di Google Immagini. La maggior parte delle immagini PNG sottoposte a scansione è rappresentata da icone, grafica, grafici, documenti scansionati e così via. Tuttavia, la maggior parte delle immagini nelle raccolte di prova standard sono come fotografie, piuttosto che immagini generate dal computer. Per rendere questo set di dati simile per natura alle suite di test standard, abbiamo eseguito un algoritmo di rilevamento dei volti su queste immagini PNG e abbiamo preso in considerazione solo le immagini (circa 11.000) per questo esperimento che hanno superato questo test di rilevamento.

Esperimento 1: WebP e JPEG con indice SSIM uguale

In questo esperimento generiamo immagini JPEG e WebP con valori SSIM comparabili e misuriamo il rapporto tra le dimensioni dei file. Ecco i passaggi dell'esperimento:

  1. Comprimi l'immagine PNG di origine in JPEG con un parametro di qualità fisso Q e registra la SSIM tra l'immagine PNG di origine e l'immagine JPEG compressa.

  2. Comprimi la stessa immagine di origine in WebP con un parametro di qualità che raggiunga il più vicino possibile la SSIM registrata sopra.

Abbiamo eseguito i due passaggi precedenti su tutte le immagini in un set di dati e poi misurato la dimensione media del file e la SSIM per le immagini JPEG e WebP.

Le seguenti tabelle mostrano i risultati di questo esperimento per tre diversi valori (50, 75 e 95) del parametro di qualità JPEG Q. I parametri di qualità 50 e 95 rappresentano la compressione delle immagini rispettivamente a velocità in bit bassa e alta. Abbiamo incluso anche il parametro di qualità JPEG 75, che è il livello di qualità generalmente consigliato per le immagini JPEG.

Tabella 1: dimensioni di file medie per WebP e JPEG per lo stesso indice SSIM corrispondente a JPEG Q=50

Lenna Kodak Tecnik Image_crawl
WebP: dimensioni medie file
(SSIM medie)
17,4 kB
(0,841)
31,0 kB
(0,898)
92,4 kB
(0,917)
6,5 kB
(0,901)
JPEG: dimensioni medie file
(SSIM media)
23,5 kB
(0,840)
42,7 kB
(0,897)
124,6 kB
(0,916)
9,9 kB
(0,899)
Rapporto tra dimensioni dei file WebP e JPEG 0.74 0,72 0.74 0.66

Tabella 2: dimensioni di file medie per WebP e JPEG per lo stesso indice SSIM corrispondente a JPEG Q=75

Lenna Kodak Tecnik Image_crawl
WebP: dimensioni medie file
(SSIM medie)
26,7 kB
(0,864)
46,5 kB
(0,932)
139,0 kB
(0,939)
9,9 kB
(0,930)
JPEG: dimensioni medie file
(SSIM media)
37,0 kB
(0,863)
66,0 kB
(0,931)
191,0 kB
(0,938)
14,4 kB
(0,929)
Rapporto tra dimensioni dei file WebP e JPEG 0,72 0,70 0.73 0,69

Tabella 3: dimensioni di file medie per WebP e JPEG per lo stesso indice SSIM corrispondente a JPEG Q=95

Lenna Kodak Tecnik Image_crawl
WebP: dimensioni medie file
(SSIM medie)
74,3 kB
(0,910)
118,0 kB
(0,978)
356,0 kB
(0,970)
23,4 kB
(0,969)
JPEG: dimensioni medie file
(SSIM media)
104 kB
(0,907)
162 kB
(0,976)
492 kB
(0,970)
31,3 kB
(0,968)
Rapporto tra dimensioni dei file WebP e JPEG 0.71 0.73 0,72 0,75

Dalle tabelle precedenti, possiamo osservare che WebP offre ulteriori guadagni di compressione del 25-34% rispetto al formato JPEG con un indice SSIM uguale o leggermente migliore.

Esperimento 2: traccia SSIM e BPP per WebP e JPEG

Studiamo il compromesso tra velocità e distorsione tra JPEG e WebP. In particolare, studiamo il confronto tra i grafici SSIM e bit per pixel (bpp) per JPEG e WebP. Prendiamo l'immagine PNG di origine, la comprimiamo in JPEG e WebP utilizzando tutti i possibili valori di qualità (0-100). Per ogni valore di qualità vengono indicati SSIM e bpp ottenuti per JPEG e WebP. Le figure seguenti mostrano i grafici SSIM e bpp per le 3 immagini scelte dai 3 set di dati pubblici che abbiamo utilizzato.

Figura 1: SSIM e BPP per Lenna

ssim contro bpp per Lenna

Figura 2: SSIM e BPP per kodim19.png del set di dati Kodak

ssim contro bpp per Kodim19

Figura 3: SSIM e BPP per RGB_OR_1200x1200_061.png dal set di dati Tecnick

ssim e bpp per RGB_OR_1200x1200

Inoltre, abbiamo studiato il comportamento medio del grafico SSIM rispetto al grafico bpp per i set di dati di Kodak e Tecnick. Per tracciare il comportamento medio, comprimiamo tutte le immagini in un set di dati utilizzando WebP e JPEG con 100 valori di qualità diversi. Successivamente, viene tracciata la media di SSIM e bpp per ogni valore di qualità. Il set di dati di scansione delle immagini è costituito da immagini eterogenee che non si prestano a questa aggregazione dei dati. I grafici seguenti mostrano il comportamento medio di SSIM e bpp rispettivamente per i set di dati Kodak e Tecnick.

Figura 4: SSIM e BPP per il set di dati Kodak

ssim contro bpp per Kodak

Figura 5: SSIM e BPP per il set di dati Tecnick

ssim e bpp per set di dati Tecnick

Nel complesso, dai grafici sopra riportati possiamo osservare che WebP richiede costantemente meno bit per pixel rispetto a JPEG per ottenere lo stesso indice SSIM.

Conclusione

Lo studio ha valutato la compressione WebP rispetto a JPEG. Abbiamo osservato che le dimensioni medie dei file WebP sono inferiori del 25-34% rispetto alle dimensioni del file JPEG nell'indice SSIM equivalente. I grafici SSIM e bpp hanno mostrato che WebP richiedeva costantemente un numero inferiore di bit per pixel rispetto a JPEG per lo stesso indice SSIM. Questi risultati indicano che WebP può fornire miglioramenti significativi della compressione rispetto a JPEG.


1 Huynh-Thu, D.; Ghanbari, M. (2008). "Ambito di validità della PSNR nella valutazione della qualità delle immagini/video". Electronics Lettere 44: 800-801.doi:10.1049/el:20080522.

2 Z. Wang, A. C. Bovik, H. R. Sheikh ed E. P. Simoncelli, "Image Quality assessment: From error quantity to structural somiglianza", Image Processing, IEEE Transactions, Volume 13, Issue 4, pp. 600-612, 2004.