離散餘弦轉換(Discrete Cosine Transform,DCT)是一種將訊號或影像從空間域(或時間域)轉換到頻率域的工具。在影像處理中,DCT常用來壓縮圖像資料,因為它可以集中能量,使得大多數重要訊息集中在較少的係數上。

簡單解釋

假設我們有一個影像,這個影像由許多像素組成,每個像素都有一個亮度值(灰階值)。這些亮度值可以看作是在空間域上的數據。DCT可以將這些亮度值轉換成頻率域上的數據。換句話說,DCT將影像中的變化轉換成一組頻率的疊加。

在頻率域中,數據的主要部分(大多數能量)通常集中在較低頻率的係數上,而高頻率的係數大多為零或接近零。這意味著我們可以只保留低頻的係數來達到壓縮資料的效果,而不會對影像的質量造成太大的影響。

具體例子

假設我們有一個非常簡單的 8x8 灰階影像如下:

[52, 55, 61, 66, 70, 61, 64, 73]
[63, 59, 55, 90, 109, 85, 69, 72]
[62, 59, 68, 113, 144, 104, 66, 73]
[63, 58, 71, 122, 154, 106, 70, 69]
[67, 61, 68, 104, 126, 88, 68, 70]
[79, 65, 60, 70, 77, 68, 58, 75]
[85, 71, 64, 59, 55, 61, 65, 83]
[87, 79, 69, 68, 65, 76, 78, 94]

我們可以對這個 8x8 的影像進行 DCT 轉換,得到頻率域的係數矩陣:

[776, -50, -29, -10, 4, -1, -3, 0]
[-47, -17, -6, 2, 0, 0, 0, 0]
[-30, -10, 4, -1, 0, 0, 0, 0]
[-15, 3, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0]
[-2, 0, 0, 0, 0, 0, 0, 0]
[-3, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0]

可以看到,左上角的值(低頻係數)比較大,這代表了影像中的主要信息,而右下角的值(高頻係數)多數為零或接近零,這表示影像中的細微變化。

應用

在JPEG影像壓縮中,DCT是核心技術之一。JPEG壓縮流程大致如下:

  1. 將影像分成8x8的區塊。
  2. 對每個區塊進行DCT轉換。
  3. 將頻率域中的高頻係數量化(即去除或減少它們)。
  4. 將量化後的係數壓縮儲存。

這樣可以大幅減少影像的資料量,同時保持較高的影像品質。

結論

離散餘弦轉換通過將影像資料從空間域轉換到頻率域,集中能量並減少不重要的高頻信息,達到了壓縮資料的效果。在影像處理中,這是一種非常有效的方法,用於減少儲存空間並提高傳輸效率。