DCT 是一种将数据或信号从空间域(或时域)转换到频域的方法。
DCT 是一个可逆的变换,意味着存在一个逆离散余弦变换 (IDCT),可以利用频域系数完全重建原始数据。
DCT 最重要的特性是它的能量集中性,对于许多自然信号(例如图片和声音),经过 DCT 变换后,大部分重要的信息或能量会集中在少数几个低频的 DCT 系数中,高频系数(对应细节、噪声)的幅度往往很小,甚至可以被舍弃,对人眼或人耳的影响很小,正是利用这一特性,DCT 成为了高效数据压缩的基础。
DCT 的本质是 线性变换,它将 $N$ 个输入样本点 $x_n$ 转换为 $N$ 个输出频域系数 $X_k$。常用的 DCT 是指 前向离散余弦变换 (Forward DCT, DCT-II):
$$X_k = C(k) \sum_{n=0}^{N-1} x_n \cos \left[ \frac{\pi}{N} \left(n + \frac{1}{2}\right) k \right], \quad \text{for } k = 0, 1, \ldots, N-1$$其中:
- $x_n$: 原始信号序列中的第 $n$ 个数据点(例如,图像块中的像素值)。
- $X_k$: 变换后的第 $k$ 个频率系数。$k=0$ 对应最低频率(直流分量),$k$ 越大,频率越高。
- $N$: 序列中的总点数(例如,图像块的维度,通常 $N=8$)。
- $C(k)$: 归一化系数(Normalization Factor),用于确保变换的正交性。通常定义为: $$C(k) = \begin{cases} \sqrt{\frac{1}{N}} & \text{当 } k=0 \\ \sqrt{\frac{2}{N}} & \text{当 } k>0 \end{cases}$$