WebP影像格式的原理 與影像壓縮的關係

浪矢-CL發表於2024-05-21

目錄
  • WebP簡介
  • 原理
    • 為什麼對預測資料做殘差就可以提高壓縮率呢?
    • 為什麼使用算術編碼壓縮率高於哈夫曼編碼?

WebP簡介

\(\quad\)目前在網際網路上,圖片流量仍佔據較大的一部分。因此,在保證圖片質量不變的情況下,節省流量頻寬是大家一直需要去解決的問題。傳統的圖片格式,如 JPEG,PNG,GIF 等格式圖片已經沒有太多的最佳化空間(某些研究在搞二次壓縮)。因此 Google 於 2010 年提出了一種新的圖片壓縮格式 — WebP,給圖片的最佳化提供了新的可能。
\(\quad\)WebP 圖片格式來源於 VP8 影片編解碼器,VP8 編解碼器的一個強大功能就是能夠進行幀內壓縮,或者更確切地說,能將影片的每個幀都被壓縮,再壓縮幀與幀之間的差異。
更具體的描述可以關注官方文件https://developers.google.com/speed/webp/docs/webp_study
WebP格式在相同影像質量條件下壓縮率高於JPEG。
image

原理

與JPEG演算法相比WebP多了黃色部分的操作,即:

  • 對影像資料生成預測塊,並與原始資料做差,殘差資料進行DCT變換
  • WebP使用的統計壓縮器是算術壓縮器,替換 JPEG使用的霍夫曼編碼器。
    image
    進一步解釋以上兩條原因:
為什麼對預測資料做殘差就可以提高壓縮率呢?

殘差塊通常包含了較小的數值範圍,同時資料分佈更加集中(如下圖所示),熵值更低。
透過結合預測和做殘差,殘差通常包含許多零值,可以更有效地壓縮。
image

為什麼使用算術編碼壓縮率高於哈夫曼編碼?

算術編碼:算術編碼通常比哈夫曼編碼更加高效。算術編碼將整個資料流對映到一個單一的數值範圍內,而哈夫曼編碼則是將資料對映到變長的編碼字串。由於算術編碼對整個資料流進行編碼,因此它可以更好地利用資料中的統計特性,達到更高的壓縮率。
哈夫曼編碼:哈夫曼編碼透過根據字元出現頻率來分配變長的編碼字串,出現頻率高的字元使用較短的編碼,出現頻率低的字元使用較長的編碼。雖然哈夫曼編碼在理論上可以達到資訊理論的熵下限,但它需要構建編碼樹,這可能會導致一些額外的編碼開銷。

相關文章