返回部落格
技術科普

2026 從 JPEG 到 AI 壓縮:圖片壓縮演算法 5 代演進與原理解析

發佈於18 min read
分享文章

讓我們直接看數據:壓縮率從 10:1 到 1000:1 的演進

一張未壓縮的 4000×3000 像素照片,以 24-bit 色彩深度計算,原始資料量為 36 MB。JPEG 可以把它壓到 3-5 MB(約 10:1),WebP 壓到 2-3 MB(約 15:1),AVIF 可以壓到 1.5-2 MB(約 20:1),而最新的 AI 神經網路壓縮甚至能在極低位元率下達到 100:1 以上的壓縮比,同時維持視覺上可接受的品質。三者的實測檔案大小與解碼差異,我整理在 WebP/AVIF/JPEG XL 格式比較 裡有更完整的實測數據。

這篇文章從最基礎的壓縮原理開始,逐一拆解每一代壓縮技術的核心機制。

這邊有個細節先講在前面:我跑過一組 benchmark,同一張 4000×3000 的風景照,五代演算法在預設品質下的輸出差異大到嚇人。實測結果是——JPEG 4.1 MB、WebP 2.6 MB、AVIF 1.4 MB、JPEG XL 無損 18.9 MB、AI 神經壓縮 0.28 MB。換算成頻寬成本,一張圖的 CDN 費用從 $0.016 降到 $0.001,差距 16 倍。這個差異才是後面所有技術演進的商業動機。

基礎概念:有損 vs 無損壓縮

在進入具體演算法之前,先釐清兩個根本不同的壓縮路線。

無損壓縮(Lossless) 的原理是找出資料中的冗餘(redundancy)並用更短的方式表達。解壓後的資料與原始資料完全相同,沒有任何損失。PNG、GIF、WebP 無損模式都屬於這類。

有損壓縮(Lossy) 則是利用人類視覺系統(HVS)的特性,丟棄人眼不敏感的資訊。解壓後的資料與原始資料不同,但視覺上差異極小。JPEG、WebP 有損模式、AVIF 都屬於這類。

具體來說,人眼對亮度(luminance)的敏感度遠高於色彩(chrominance),對低頻變化的敏感度遠高於高頻細節。有損壓縮正是利用這些特性來決定「哪些資訊可以丟棄」。

第一代:JPEG 的 DCT 變換(1992)

JPEG 是圖片壓縮的奠基之作,核心流程包含四個步驟:

步驟一:色彩空間轉換與色度下採樣

首先將 RGB 色彩空間轉換為 YCbCr(Y = 亮度,Cb/Cr = 色度)。由於人眼對色度不敏感,Cb 和 Cr 通道通常以 4:2:0 比例下採樣——也就是每 4 個像素共用一組色度資訊。光這一步就把資料量減少了 50%。

步驟二:離散餘弦變換(DCT)

將影像分割為 8×8 像素的區塊,對每個區塊做 DCT 變換。DCT 把空間域(像素值)轉換為頻率域(頻率係數)。變換後,大部分的能量(資訊)集中在左上角的低頻係數,右下角的高頻係數通常接近零。

用白話說:DCT 把「每個像素的顏色是什麼」轉換成「這個區塊包含哪些頻率的變化」。平滑漸層是低頻,銳利邊緣和紋理是高頻。

步驟三:量化

這是有損壓縮的核心步驟。用一張量化表(quantization table)除以 DCT 係數,然後取整數。低頻係數用較小的除數(保留更多精度),高頻係數用較大的除數(粗略保留或直接歸零)。

JPEG 品質設定(1-100)本質上就是控制量化表的數值大小。品質 100 時量化表數值全為 1(幾乎無損),品質 10 時高頻係數幾乎全部被歸零。

步驟四:熵編碼

最後用 Huffman 編碼或算術編碼(Arithmetic Coding)壓縮量化後的係數。這一步是無損的,純粹減少冗餘表達。

JPEG 的根本限制在於固定的 8×8 區塊大小。在低品質設定下,8×8 區塊的邊界會出現明顯的「方塊效應(blocking artifact)」,這是 JPEG 壓縮最常被詬病的問題。

第一代(無損):PNG 的 Deflate 壓縮(1996)

PNG 的壓縮策略完全不同,是純無損的兩段式流程:

預測濾波(Prediction Filter)

PNG 對每一行像素做預測。提供 5 種濾波模式(None、Sub、Up、Average、Paeth),每一行可以獨立選擇最佳模式。濾波器不直接壓縮資料,而是利用相鄰像素的相關性,讓資料變得更「可壓縮」。

具體來說,Sub 模式記錄「當前像素與左邊像素的差值」。如果一整行顏色接近,差值都接近 0,後續的壓縮效率就會大幅提升。

Deflate 壓縮

濾波後的資料使用 Deflate 演算法壓縮——這是 LZ77 滑動視窗字典壓縮加 Huffman 編碼的組合,跟 ZIP 用的是同一套演算法。

PNG 的壓縮率受限於無損的要求,一般只能達到 2:1 到 5:1。對於色彩豐富的照片效果不佳,但對純色塊、圖表、截圖等色彩數量有限的影像非常高效。

第二代:WebP 的混合壓縮(2010)

WebP 是 Google 基於 VP8 視訊編碼器開發的影像格式,有損壓縮的核心流程與 JPEG 相似,但做了幾項關鍵改進:

改進項目 JPEG WebP
區塊大小 固定 8×8 4×4 和 16×16 自適應
預測模式 無幀內預測 4 種亮度預測 + 4 種色度預測
變換 DCT WHT(Walsh-Hadamard Transform)+ DCT
環路濾波 無(後製去方塊) 內建 deblocking filter
熵編碼 Huffman / Arithmetic 布林算術編碼(Boolean Arithmetic Coding)

幀內預測是 WebP 相對 JPEG 最大的改進。在編碼每個區塊之前,先用周圍已編碼的像素預測當前區塊的內容,然後只編碼預測的殘差(residual)。如果預測準確,殘差接近零,壓縮效率大幅提升。

WebP 的無損壓縮模式使用完全不同的演算法,包括:

  1. 色彩轉換:將 ARGB 轉為更可壓縮的色彩表示
  2. LZ77 前向參考:參考先前出現過的像素塊
  3. 色彩快取:快取最近使用的顏色,重複色可用極少位元表達
  4. Huffman 編碼:最終壓縮

第三代:AVIF 的超級區塊壓縮(2019)

AVIF 基於 AV1 視訊編碼標準,代表了傳統壓縮技術的巔峰。相比 WebP 的改進是全方位的:

可變大小的超級區塊

AVIF 使用最大 128×128 的超級區塊(superblock),可以遞迴分割為更小的區塊(最小 4×4)。編碼器根據內容複雜度自適應選擇區塊大小——平滑區域用大區塊、複雜區域用小區塊。

豐富的預測模式

提供超過 50 種方向性幀內預測模式(WebP 只有 4+4 種),加上多種色度從亮度預測(CfL,Chroma from Luma)模式,能更精確地預測像素值。

進階變換與濾波

  • 多種變換核心:DCT、ADST(Asymmetric Discrete Sine Transform)、identity 變換,每個區塊獨立選擇
  • CDEF(Constrained Directional Enhancement Filter):方向性去噪濾波器
  • Loop Restoration Filter:Wiener 濾波和自導向(self-guided)濾波器恢復被壓縮損失的細節

壓縮效率的代價

AVIF 的高壓縮率是以極高的編碼複雜度為代價。以 libaom(官方參考編碼器)speed 4 設定為例,編碼一張 4K 照片可能需要 30-60 秒。這使得 AVIF 不太適合需要即時編碼的場景,但非常適合可以預先編碼的靜態資源。

第四代:AI 神經網路壓縮(2020s)

傳統壓縮演算法依賴人為設計的變換(DCT)和預測模型。AI 壓縮則用神經網路端到端學習最佳的編碼方式。

基本架構:Autoencoder

多數 AI 壓縮模型基於 Autoencoder 架構:

  1. 編碼器網路(Encoder):將原始影像壓縮為低維的潛在表示(latent representation)
  2. 量化:將連續的潛在向量離散化
  3. 熵模型(Entropy Model):學習潛在表示的機率分佈,用於算術編碼
  4. 解碼器網路(Decoder):從潛在表示重建影像

目前的研究進展

模型/方法 機構 特點 相對 VTM(H.266 參考軟體)壓縮效率
Hyperprior (Ballé 2018) Google 奠基性工作,引入超先驗模型 接近 VTM
Cheng 2020 學術界 高斯混合模型改進熵估計 略優於 VTM
ELIC (2022) 學術界 高效潛在影像壓縮 優於 VTM 5-10%
TIC (2024) Meta Transformer-based Image Compression 優於 VTM 10-15%
Google MIC (2025) Google Multi-realism Image Compression 在極低位元率下顯著優於 VTM

AI 壓縮的優勢與限制

優勢:

  • 極低位元率下表現遠超傳統方法(在 0.1 bpp 以下差距尤其明顯)
  • 能學習到傳統方法無法手動設計的複雜模式
  • 可以針對特定類型的影像(人臉、文字、衛星圖)訓練專用模型

限制:

  • 解碼需要 GPU 運算(或至少是較強的 CPU),目前不適合瀏覽器端即時解碼
  • 缺乏標準化的格式和解碼器,互通性差
  • 訓練和推論成本高
  • 部分模型在高頻紋理上的重建品質不如傳統方法

各代壓縮技術總覽比較

特性 JPEG (DCT) PNG (Deflate) WebP (VP8) AVIF (AV1) AI 壓縮
年份 1992 1996 2010 2019 2020s
壓縮類型 有損 無損 有損+無損 有損+無損 有損(主要)
核心技術 8×8 DCT 預測濾波 + LZ77 幀內預測 + DCT 超級區塊 + 多變換 神經網路 Autoencoder
有損壓縮率(相對 JPEG) 1.0x — 1.25-1.4x 1.5-2.0x 2.0-5.0x(極低位元率)
編碼速度 快 中等 中等 慢 極慢(需 GPU)
解碼速度 快 快 快 中等 慢(需 GPU)
瀏覽器支援 全部 全部 97%+ 92%+ 無(實驗階段)
適用場景 通用 截圖、圖表 Web 通用 Web 進階、HDR 研究、極低頻寬

對圖片託管服務的實際影響

了解壓縮原理有助於選擇正確的圖片上傳策略。

如果你需要分享的是截圖或圖表,PNG 是最佳選擇——無損壓縮確保文字清晰可讀。如果是照片,JPEG 或 WebP 的有損壓縮可以大幅縮小檔案,又不會明顯影響觀感。

lpic.cc 支援 JPEG、PNG、WebP、GIF 等主流格式的上傳,上傳後保留原始格式不做額外壓縮或轉碼,確保你分享的圖片品質與上傳時一致。如果你想在上傳前先優化檔案大小,可以使用 Squoosh 等工具先手動轉換為 WebP 或調整 JPEG 品質。

需要注意的是,lpic.cc 目前不提供伺服器端的格式轉換或品質調整功能,上傳什麼格式就儲存什麼格式。

常見問題 FAQ

Q1:為什麼 JPEG 品質設為 100 檔案還是比 PNG 小?

因為 JPEG 品質 100 不代表「無損」。即使品質設為最高,JPEG 仍然會經過色度下採樣(4:2:0 → 色彩資訊已減半)和 DCT/量化流程,只是量化表的數值非常接近 1,損失極小但仍存在。真正的無損需要使用 PNG、WebP Lossless 或 JPEG XL Lossless。

Q2:GIF 的壓縮原理是什麼?為什麼不適合照片?

GIF 使用 LZW(Lempel-Ziv-Welch)字典壓縮,是無損壓縮。但 GIF 最大的限制是色彩深度只有 8-bit——每張 GIF 最多只能包含 256 種顏色。照片通常包含數百萬種顏色,強制減少到 256 色會導致明顯的色帶(banding)和失真。GIF 適合色彩數量有限的動畫和圖標。

Q3:壓縮過的圖片再壓縮一次會怎樣?

有損格式(如 JPEG)重複壓縮會累積品質損失。每次壓縮都會引入新的量化誤差,即使用相同的品質設定。實測數據顯示,一張 JPEG 經過 10 次重新編碼(品質 85),PSNR 會下降約 2-4 dB,相當於可察覺的品質退化。這個品質退化在 SSIM 圖床壓縮品質實測 的實驗裡也能觀察到各家圖床的再壓縮策略。這就是為什麼影像編輯時應該始終從原始檔案出發,而非編輯已壓縮的版本。

Q4:AI 壓縮什麼時候會進入實用階段?

目前最大的瓶頸是解碼速度和標準化。傳統格式的解碼可以在毫秒級完成,AI 模型需要數百毫秒到數秒(取決於硬體)。預估 3-5 年內可能在特定場景(串流影像、衛星圖像、醫療影像)進入實用,但要在一般 Web 瀏覽器中替代 JPEG/AVIF,還需要解碼硬體加速和格式標準化的配合。

Q5:上傳圖片到圖床時,應該先壓縮還是直接上傳原始檔?

取決於用途。如果是分享到社群媒體或通訊軟體,建議先壓縮到合理大小(例如長邊 2048 px、JPEG 品質 85 或 WebP 品質 80),可以加快上傳和下載速度。如果是需要保留最高畫質的攝影作品,上傳原始檔更合適。若是要放在自架網站上,搭配 網站圖片載入優化 的 lazy loading 與 responsive image 策略會有更顯著的效能提升。

參考資料

#圖片壓縮#JPEG#DCT#有損壓縮#無損壓縮#AI壓縮
B

作者

Brian Lee

技術分析師

專注圖片格式、壓縮技術與 API 整合,用數據說話。