比較研究

WebP、JPEG 和 JPEG 2000 比較研究,2010 年 9 月

注意:我們曾以第一個 WebP 版本 (使用 libvpx 程式庫) 進行這項初步研究。此外,來源圖片是我們從網路上檢索到的 JPEG 圖片。根據社群的意見回饋,我們現在已展開新研究,使用 libwebp 0.1.2 版,並以無損圖片 (PNG) 做為來源。新研究取代了這項研究。

WebP 團隊針對 100 萬張隨機圖片,比較了三種圖片壓縮方法。這項研究的目標是評估這些方法的壓縮效果,並分析圖片大小和壓縮之間的取捨。

我們將三種壓縮方法 (WebP、JPEG 2000 和 Re-JPEG) 套用至資料集中的 900,000 張 JPEG 圖片。我們使用 Re-JPEG 重新壓縮 JPEG 圖片,讓每張圖片盡可能接近目標峰值訊噪比 (PSNR) 值。團隊在圖片經過壓縮後進行分析。

除了大規模研究外,研究團隊也手動檢查了 100 張隨機圖片,發現在大多數情況下,WebP 都能提供可接受的視覺品質。

結論

WebP 的整體壓縮效果優於 JPEG 或 JPEG 2000。對於網站上最常見的小型圖片,檔案大小縮減的效果特別顯著。

資料集

這項研究使用的資料集,是從從網路爬取的圖像存放區隨機抽樣的 100 萬張圖片。下表顯示資料集中不同類型圖片的分布情形。

類型 數量
JPEG ~900K
PNG 約 47 公斤
GIF 約 47 公斤
其他 約 6,000 美元

實驗設計

實驗分為兩個階段進行:

  1. 團隊在圖片上執行 WebP,目標 PSNR 為 42。他們調整 WebP 編碼器的品質參數 (QP),直到所得結果與特定圖片的 42 值盡可能接近為止。因此,每張圖片實際達到的 PSNR 不一定會精確到 42。

  2. 團隊使用 WebP 壓縮圖片的 PSNR 值,做為 JPEG 2000 和 Re-JPEG 圖片的目標 PSNR。他們也針對 JPEG 2000 和 JPEG 圖片的品質參數執行了線搜尋,以便盡可能接近目標 PSNR。

實際壓縮結果是以百分比計算,公式如下:

compression_percentage = 100 * (original_image.length - compressed_image.length) / original_image.length

結果

在負壓縮增益和非負壓縮增益的情況下,測試產生了以下結果:

非負數壓縮增益

如果某種方法在壓縮後增加圖片大小,團隊就不會對該方法處罰。也就是說,當 compressed_image.length 大於 original_image.length 時,compression_percentage 會視為 0。

負壓縮增益

團隊允許負壓縮百分比結果,以便進一步瞭解各種壓縮器的原始效能。

以下是三種方法各自達到的平均壓縮百分比。

類型 平均 PSNR 值 平均壓縮率 (%)
(非負壓縮增益)
平均壓縮率 (%)
(負壓縮增益)
WebP 39.38 41.30 39.80
JPEG 2000 39.49 27.67 9.71
Re-JPEG 39.36 22.37 14.62

允許負壓縮增益時,JPEG 2000 的平均效能低於 JPEG。這可能是因為 JPEG 圖片中出現高頻率的假影,而這些假影可能會導致壓縮效果不如預期。

實驗中用於轉換為 JPEG 2000 的 Kakadu 實作項目無法轉換約 240,000 張圖片。

JPEG 2000 的壓縮百分比低於 Re-JPEG,主要是因為 JPEG 2000 的結果對許多圖片來說是負壓縮。因此,JPEG 圖片的整體壓縮分數較低。

以下圖表顯示這三種方法的分布圖:

圖 1:圖片大小人口分布

圖表顯示大部分圖片都很小。大小超過 500 KB 的圖片頻率通常低於 100。

圖 2:WebP、JPEG 和 JPEG 2000 圖片的壓縮百分比

這張圖表顯示,使用 WebP 壓縮的圖片主體,其壓縮效果優於 re-jpeg 和 JPEG 2000。此外,使用 WebP 壓縮的圖片比其他圖片的壓縮效果更好。

圖 3:圖片大小和壓縮百分比比較

這張圖表顯示 WebP 的壓縮效果比其他格式更好,尤其是較小的圖片。