离散余弦变换

离散余弦变换（英语：discrete cosine transform, DCT）是与傅里叶变换相关的一种变换，类似于离散傅里叶变换，但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换，这个离散傅里叶变换是对一个实偶函数进行的（因为一个实偶函数的傅里叶变换仍然是一个实偶函数），在有些变形里面需要将输入或者输出的位置移动半个单位（DCT有8种标准类型，其中4种是常见的）。
最常用的一种离散余弦变换的类型是下面给出的第二种类型，通常我们所说的离散余弦变换指的就是这种。它的逆，也就是下面给出的第三种类型，通常相应的被称为"反离散余弦变换"，"逆离散余弦变换"或者"IDCT"。
有两个相关的变换，一个是离散正弦变换，它相当于一个长度大概是它两倍的实奇函数的离散傅里叶变换；另一个是改进的离散余弦变换，它相当于对交叠的数据进行离散余弦变换。

应用

离散余弦变换，尤其是它的第二种类型，经常被信号处理和图像处理使用，用于对信号和图像（包括静止图像和运动图像）进行有损数据压缩。这是由于离散余弦变换具有很强的"能量集中"特性：大多数的自然信号（包括声音和图像）的能量都集中在离散余弦变换后的低频部分，而且当信号具有接近马尔可夫过程的统计特性时，离散余弦变换的去相关性接近于K-L变换（Karhunen-Loève变换——它具有最优的去相关性）的性能。
例如，在静止图像编码标准JPEG中，在运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换，并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8，并用该公式对每个8x8块的每行进行变换，然后每列进行变换。得到的是一个8x8的变换系数矩阵。其中（0,0）位置的元素就是直流分量，矩阵中的其他元素根据其位置表示不同频率的交流分量。
一个类似的变换, 改进的离散余弦变换被用在高级音频编码，Vorbis和MP3音频压缩当中。
离散余弦变换也经常被用来使用谱方法来解偏微分方程，这时候离散余弦变换的不同的变量对应着数组两端不同的奇/偶边界条件。

形式化定义

形式上来看，离散余弦变换是一个线性的可逆函数其中R是实数集，或者等价的说一个的方阵。离散余弦变换有几种变形的形式， 它们都是根据下面的某一个公式把个实数变换到另外个实数的操作。

DCT V~VIII

上面提到的DCT I~IV是和偶数阶的实偶DFT对应的。原则上，还有四种DCT变换（Martucci, 1994）是和奇数阶的实偶DFT对应的，它们在分母中都有一个的系数。但是在实际应用中，这几种变型很少被用到。
最平凡的和奇数阶的实偶DFT对应的DCT是1阶的DCT（1也是奇数），可以说变换只是乘上一个系数而已，对应于DCT-V的长度为1的状况。

反变换

DCT-I的反变换是把DCT-I乘以系数。
DCT-IV的反变换是把DCT-IV乘以系数。
DCT-II的反变换是把DCT-III乘以系数，反之亦然。
和离散傅里叶变换类似，变化前面的归一化系数仅仅是常规而已，改变这个系数并不改变变换的性质。例如，有些人喜欢在DCT-II变换的前面乘以，这样反变换从形式上就和变换更相似，而不需要另外的归一化系数。

计算

尽管直接使用公式进行变换需要进行次操作，但是和快速傅里叶变换类似，我们有复杂度为的快速算法，这就是常常被称做蝶形变换的一种分解算法。另外一种方法是通过快速傅里叶变换来计算DCT，这时候需要的预操作和后操作。