離散餘弦變換(Discrete Cosine Transform, DCT) 是 JPEG 影像壓縮技術的核心,也被譽為「數位多媒體的基礎」。簡單來說,它的任務是將影像從「空間域(Spatial Domain)」轉換到「頻率域(Frequency Domain)」。
如果不進行 DCT,影像檔案會非常龐大;透過 DCT,我們能精準地剔除人類眼睛看不出的細節,達成極高的壓縮比。一、 為什麼需要 DCT?(核心直覺)
想像一張照片(如您上傳的命盤):
- 空間域:我們看到的是一個個像素點(Pixel),記錄著顏色和亮度。
- 頻率域:影像可以被看作是各種「波動」的組合。
- 低頻:大面積顏色相近的區域(如命盤的淺藍色背景)。
- 高頻:顏色劇烈變動的邊緣或細節(如字體的邊緣、星曜名稱)。
人的眼睛對「低頻」非常敏感,但對「高頻」的細微變化反應遲鈍。 DCT 的目的就是把這些頻率分開,讓我們可以大刀闊斧地刪除高頻資訊。
二、 DCT 的運作流程
在 JPEG 壓縮中,DCT 的處理步驟如下:
1. 分塊(Tiling)
將整張圖片切成無數個 8x8 像素 的小方塊。這是因為 8x8 的矩陣在計算效率與壓縮效果之間取得了最佳平衡。
2. 數值偏移(Level Shifting)
將像素的亮度值(通常是 0~255)減去 128,使其範圍變成 -128 到 127。這有助於簡化後續的數學運算。
3. 執行 DCT 公式
對這 8x8 的像素矩陣進行餘弦函數變換。計算後會得到一個新的 8x8 矩陣,這個矩陣代表了不同頻率的分量:
- 左上角 (DC 係數):代表這塊 8x8 區域的平均亮度(直流分量)。
- 其餘位置 (AC 係數):代表從水平到垂直方向不同頻率的細節(交流分量)。越往右下角,頻率越高。
三、 為什麼這能壓縮檔案?
DCT 本身是不可逆失真(Lossy)的前奏,但它還沒開始刪除資料。真正的壓縮發生在下一步:量化(Quantization)。
- 分離精華:經過 DCT 後,影像能量會高度集中在左上角的幾個數字上。右下角的高頻數值通常非常小。
- 量化剔除:我們用一個「量化表」去除以這個矩陣。因為人眼看不出高頻細節,我們可以用較大的數字去除右下角的數值,讓它們通通變成 0。
- 高效編碼:大量的
0在最後的編碼階段(如 Huffman 編碼)可以被極度簡化,這就是為什麼 JPG 檔案可以比 BMP 小幾十倍的原因。
四、 生活中的實例
- JPEG 圖片:使用 二維 DCT。
- MP3 音樂:使用 改良式離散餘弦變換 (MDCT),將聲音信號分解為不同頻率。
- 影音串流 (Netflix/YouTube):H.264/H.265 編碼同樣深度依賴 DCT 的變體。
總結
DCT 就像是一位「整理大師」,它把影像中雜亂的像素資訊重新分類。把重要的(低頻)放在顯眼處,把不重要的(高頻)推到角落,讓後續的壓縮程序能輕易地把角落那些沒人察覺的垃圾丟掉,而不影響我們觀看這張命盤圖檔的視覺感受。





















