离散余弦变换(Discrete Cosine Transform)

本文介绍了离散余弦变换(DCT)的概念,它作为变换压缩方法,优于FFT。DCT仅使用余弦函数,常用于图像处理中的JPEG压缩。通过DCT变换,图像数据可以被有效地压缩,丢弃部分高频信息对图像质量影响较小。JPEG压缩流程包括图像切块、DCT变换、量化、游程编码和Huffman编码,通过调整量化表实现不同压缩率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DCT变换和FFT变换都属于变换压缩方法(TransformCompression),变换压缩的一个特点是将从前密度均匀的信息分布变换为密度不同的信息分布。在图像中,低频部分的信息量要大于高频部分的信息量,尽管低频部分的数据量比高频部分的数据量要小的多。例如删除掉占50%存储空间的高频部分,信息量的损失可能还不到5%

变换编码有很多种。K–L变换的压缩效率很高,但算法实现困难;FFT变换算法实现简单,但压缩效率不是很理想。经过多方面的比较,最终胜出的算法是DCT,一种源自FFT的变换编码。

FFT变换同时使用正弦和余弦函数来表达信号不同,DCT只使用余弦函数来表达信号。DCT变换有多个版本,有一种常用的DCT实现过程是这样的:对一个长度为1290128)的信号进行DCT变换。首先,复制点127到点1,使整个信号变为:

0, 1, 2, .., 127, 128, 127, …, 2, 1

     这串长度为256的时间域信号经过FFT变换后会生成一个长度为129的信号。因为时间域的信号对称,根据二元性(duality),对应的频率域信号的虚数部分全部为0。也就是说,我们输入的长度为129的时间域信号经过DCT变换后,产生一个长度为129的频率域信号,并且频率域完全由余弦函数组成。
     在图像处理中,每副图像都会被切成8×8的小块,块的大小可以是任意,只是因为历史原因人们习惯于切为8×8的块。二维的图像处理与一维的信号处理原理是一致的,只是一些计算公式不一样,在二维图像中,基函数的公式如下:
 
公式中 xy指像素在空间域(对应一维的时间域)的坐标, uv指基函数频率域中的坐标。这个基函数公式基于 8× 8的块, x,y, u, v的取值范围都是 0–7。 图像经 DCT变换后,低频信息集中在矩阵的左上角,高频信息则向右下角集中。直流分量在 [0,0]处, [0,1]处的基函数在一个方向上是一个半周期的余弦函数,在另一个方向上是一个常数。 [1,0]处的基函数与 [0,1]类似,只不过方向旋转了 90度。
 

3-1 DCT变换中使用的基函数

3-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值