跳轉到

第五篇 · 第12章

第12.1節 離散餘弦變換(DCT)晶片:將影像從「空間域」轉為「頻率域」的硬體運算#

從傅立葉到 Ahmed 的洞察#

1974 年,在堪薩斯州立大學任職的印度裔學者納西爾·艾哈邁德(Nasir Ahmed)發表了離散餘弦變換(Discrete Cosine Transform, DCT)。他的想法源自一個樸素的觀察:影像中的相鄰像素高度相關,而 DCT 恰好能將這種相關性「化為己用」——它等價於 DFT 的實部再加上邊界鏡射延拓,因此能量集中能力超過任何已知實數變換,被文獻稱為「接近 K-L 變換」(Karhunen-Loève Transform,統計上最佳但無法算的變換)。艾哈邁德當年並未申請專利,他說:「我只是想讓它被廣泛使用。」這個決定成就了人類史上被使用次數最多的影像數學。

為什麼影像可以被「壓縮」?#

人眼對低頻亮度變化敏感、對高頻紋理與色度細節不敏感(對比敏感度函數 CSF 的生理事實)。一張 8×8 的自然影像區塊中,絕大多數能量集中在左上角的低頻係數;DCT 把空間域的 64 個相關像素,變換為頻率域的 64 個大多接近零的係數——「壓縮」不是刪掉資料,而是在感知不敏感處粗略量化。

DCT-II 的正向變換(以 8×8 區塊為單位)為:

\[ F(u,v) = \frac{1}{4} C(u) C(v) \sum_{x=0}^{7}\sum_{y=0}^{7} f(x,y)\cos\frac{(2x+1)u\pi}{16}\cos\frac{(2y+1)v\pi}{16} \]

其中 \(C(0) = \frac{1}{\sqrt{2}}\),\(C(k)=1\)(\(k>0\))。反變換形式對稱。這 64 個餘弦基底函數(從全平面的直流到對角高頻條紋)是固定的,因此 64 個係數的乘法可以預先排列成常數矩陣乘法,硬體只需乘法器陣列與加法樹,不必任何通用運算。

JPEG 編碼管線#

JPEG 於 1992 年由 ISO/IEC JTC1 與 ITU-T(原 CCITT)共同制定為 ISO/IEC 10918-1 / ITU-T T.81。標準的誕生是一場「最佳提案競賽」:1987 年 ISO 徵集演算法,比較了 DCT、DPCM、自適應變換與向量量化後,DCT 勝出。整個編碼管線如下:

三個關鍵硬體設計:

  1. 8×8 區塊:區塊太小(如 4×4)則區塊效應明顯,太大(如 16×16)則記憶體與延遲暴增,8×8 是 1990 年代 SRAM 面積的甜蜜點;
  2. 量化表:\(Q_{uv}\) 由心理視覺實驗訂出(亮度表與色度表各一張,存於晶片 ROM),例如亮度表中低頻量化步長 16、最高頻可達 121。量化是 JPEG 唯一有損的步驟,除法以移位與乘法近似實現;
  3. 之字形掃描(zigzag):把 8×8 係數矩陣按對角線順序展平成一維,使量化後的長串零落在序列尾端,後續行程編碼只需記錄「跳過幾個零」。

專用晶片的年代:DCT 有了自己的積體電路#

1990 年前後,富士通、LSI Logic、C-Cube(後來的 MPEG 晶片先驅)都推出單功能 DCT 晶片:輸入 8×8 像素,輸出 64 個係數,時脈約 30–80 MHz。由於二維 DCT 可拆成兩次一維 DCT(行變換→轉置 RAM→列變換),硬體上常見「行變換器+轉置記憶體+列變換器」的三段架構,一維部分再以 Loeffler-Ligtenberg-Moshovitz 的蝶形快速演算法實現,把每區塊運算量從 1,024 次乘法降到 144 次。這是「演算法—架構共同設計」的教科書範例:演算法的規整性直接轉化為矽面的規整性。

前因後果:從 JPEG 到 MPEG 的家譜#

JPEG 的成功讓 MPEG(ISO/IEC JTC1 SC29 WG11,1988 年成立)直接繼承了整套工具箱:MPEG-1(1993)的幀內編碼就是 JPEG 的 DCT+量化+霍夫曼;MPEG-2(1995)成為 DVD 與數位電視的底層;MPEG-4 Part 2(1999)引入物件編碼;H.264/AVC(2003,ITU-T VCEG 與 ISO MPEG 聯合組 JVT 制定)以整數變換取代浮點 DCT、加入 CABAC 熵編碼,但「區塊變換+量化+熵編碼」的骨架不變。標準組織的 FRAND(合理且無歧視)授權制度讓數百家專利權人共享授權金池,也讓 H.264 的專利地圖成為後來 Google 推動免權利金 VP8/WebM、開放媒體聯盟 AV1 的直接動因——壓縮數學的「公共財」與「專利池」之間的張力延續至今。

標準 年份 變換 典型位元率 主要應用
JPEG 1992 8×8 DCT 0.25–1 bpp 靜態影像
MPEG-1 1993 8×8 DCT 1.5 Mbps VCD
MPEG-2 1995 8×8 DCT 4–10 Mbps DVD、數位電視
MPEG-4 Part 2 1999 8×8 DCT 1–4 Mbps 網路視訊
H.264/AVC 2003 整數 4×4/8×8 0.5–4 Mbps 藍光、串流

延伸思考#

  1. JPEG 的 8×8 區塊在低碼率下產生「馬賽克」偽影;若當年選 16×16,今日的手機記憶體與 CPU 快取設計會有何不同?
  2. 艾哈邁德未申請專利的選擇,對照 H.264 專利池每年數億美元的授權金——基礎數學的公共性該如何界定?
  3. 神經網路取代 DCT 的呼聲不斷,但 JPEG 至今仍是網路上 70% 的影像格式;一個變換能活過 50 年的條件是什麼?