基于DCT的JPEG图像编解码概述共26页文档
- 格式:ppt
- 大小:3.60 MB
- 文档页数:26


jpeg编码原理JPEG编码原理JPEG是一种常用的图像压缩格式,它可以将图像压缩至原始大小的1/10或更小,而且不会影响图像的质量。
JPEG编码原理是基于离散余弦变换(DCT)和量化技术。
1. 离散余弦变换(DCT)在JPEG编码中,图像被分成8x8个像素块,每个块都被视为一个矩阵。
通过对这些矩阵进行离散余弦变换(DCT),可以将每个块转换为一组频率系数。
离散余弦变换是一种将时域信号转换为频域信号的方法。
在JPEG中,每个块都被视为一个时域信号,并通过离散余弦变换将其转换为频域信号。
这些频率系数表示了该块中各种不同频率的分量。
2. 量化在经过DCT后,得到了每个块的频率系数。
但是由于人眼对于高频细节的感知能力较差,因此在JPEG编码中采用了量化技术来减少高频分量化就是将每个频率系数除以一个固定值,并四舍五入取整。
由于高频分量较大,因此它们被量化后会变得更小,从而减少了数据量。
3. 压缩在经过DCT和量化后,每个块都被转换为一组频率系数,并且高频分量已经被减少。
这些频率系数可以被进一步压缩,从而减少文件大小。
JPEG编码使用了霍夫曼编码技术来压缩这些频率系数。
霍夫曼编码是一种无损压缩技术,它可以将出现频率较高的符号用较短的编码表示,从而减少数据量。
4. 解压在解压JPEG图像时,首先需要将霍夫曼编码还原为频率系数。
然后对这些频率系数进行逆量化和逆离散余弦变换(IDCT),从而恢复原始图像。
逆量化是将每个频率系数乘以一个固定值,并四舍五入取整。
逆离散余弦变换是将每个块的频率系数转换回时域信号,从而恢复原始图像。
JPEG编码原理是基于离散余弦变换和量化技术的。
通过DCT将图像分解为一组频率系数,并采用量化技术减少高频分量,然后使用霍夫曼编码压缩这些频率系数。
在解压时,需要将霍夫曼编码还原为频率系数,并进行逆量化和逆离散余弦变换来恢复原始图像。
JPEG编码原理概述本⽂简要概述 JPEG 基本系统的编码流程。
编码需要经过 DCT、量化、Z 序列化、系数编码(DC 差分脉冲调制编码、DC 系数中间格式计算、AC 差分脉冲调制编码、AC 系数中间格式计算)、熵编码五个步骤,最后按指定格式进⾏封装,成为⼀张 JPEG 图⽚。
图⽚被分割为若⼲ 8×8 块后,每个块进⾏离散余弦变换(DCT),其⽬的是将图像块按频率分解,得到其频谱。
类似傅⾥叶变换,DCT 的⽬的是将图像分解为不同频率的基本分量的线性组合。
事实上,DCT 是 DFT 抹去虚(奇)部的特殊形式。
由于实偶函数的 DFT 仍然是实偶函数,我们将时域函数倍增延拓成偶函数,于是频域也成为实偶函数。
当然在存储时可以折半以消除冗余。
为何要求 DCT?对每⼀个图像块,如果⼀定要舍弃,我们会尽可能多保留其低频分量,⽽降低⾼频分量的分辨率。
同时,⾼频分量通常也的确是较少的,⽽直流分量,虽然数值⼤,但相邻块的直流分量差别较⼩。
因此我们对低频分量取较低的量化系数,⽽对⾼频分量取较⾼的量化系数。
所谓量化,就是将浮点(实现上可能只是以更⾼精度的整数表⽰形式存在)值 x 转化为阶跃的整数值 y 表⽰的过程,⽽ y=round(x/q) 中的 q 就是量化系数。
随后我们进⾏ Z 序列化,将⼆维矩阵按 Z 形拍扁成向量。
考虑到相邻块 DC 分量差异⼩,我们⾸先将 DC 分量与上⼀个块做差。
这个过程称为差分脉冲调制编码。
如今,向量中存在⼤量的 0,⽽绝对值⼩的数字出现的概率也远⼤于绝对值⼤者。
我们采⽤⾏程编码(RLE),将序列切成形如 0,0,…,0,x 的若⼲段,每段由 y(≥0) 个 0 和⼀个 x(>0) 组成,记作 (y,len(x),x),其中 len(x) 是 x 在反码⼆进制表⽰下的长度。
这种三元组表⽰形式称为中间格式。
(注:这⾥图上将 DC 分量也⼀把揉进去了,严格来说是分开的,RLE 只考虑 AC 分量)现在考虑 (y,l,x) 三元组的编码。
DCT 与JPEG 编码JPEG 是用于灰度图与真彩图的静态图像压缩的国际标准,JPEG 主要采用了以DCT (Discrete Cosine Transform ,离散余弦变换)为基础的有损压缩算法,在本章中会作较为详细的介绍。
JPEG 2000则是用于二值图、灰度图、伪彩图和真彩图的静态图像压缩的新标准,它采用的是性能更优秀的DWT (Discrete Wavelet Transform ,离散小波变换),将在下一章介绍。
因为视频的帧内编码就是静态图像编码,所以JPEG 和JPEG 2000的编码算法也用于MPEG 的视频编码标准中。
8.1 DCT与上一章所讲的几种熵编码不同,DCT (Discrete Cosine Transform 离散余弦变换)是一种变换型的源编码,使用十分广泛,也是JPEG 编码的一种基础算法。
DCT 将时间或空间数据变成频率数据,利用人的听觉和视觉对高频信号(的变化)不敏感和对不同频带数据的感知特征不一样等特点,可以对多媒体数据进行压缩。
8.1.1 余弦变换DCT 是计算(Fourier 级数的特例)余弦级数之系数的变换。
若函数f (x ) 以2 l 为周期,在[-l , l ]上绝对可积,则f (x )可展开成Fourier 级数:∑∞=⎪⎭⎫⎝⎛++=10sin cos 2)(n n n l x n b l x n a a x f ππ其中正弦变换余弦变换sin )(1 cos )(1⎰⎰--==l l n l l n dx lx n x f l b dx lx n x f l a ππ若f (x )为奇或偶函数,有 a n ≡0或b n ≡0,则f (x )可展开为正弦或余弦级数:∑∑∞=∞=+==101cos2)( sin )(n n n n l xn a a x f l x n b x f ππ或任给f (x ),x ∈[0, l ],总可以将其偶延拓到[-l , l ]:⎩⎨⎧-∈-∈=]0,[),(],0[ ),()(l x x f l x x f x f 然后再以2l 为周期进行周期延拓,使其成为以2l 为周期的偶函数。
jpeg编解码原理JPEG编解码原理JPEG是一种常用的图像压缩格式,它的编解码原理是基于离散余弦变换(Discrete Cosine Transform,DCT)和量化。
在JPEG编码过程中,图像首先被分割成8x8的小块,每个小块进行DCT变换,将空间域的数据转换为频域的数据。
这个过程可以看作是将图像分解为一系列频率成分,每个小块的DCT系数表示该频率成分的强度和位置。
接下来,对DCT系数进行量化。
量化是指将连续的数值变为离散的数值,以减少需要存储或传输的数据量。
量化过程中,需要使用一个量化矩阵,它是由JPEG标准规定的。
量化后的结果是一个系数矩阵,其中大部分系数都为0,只有少量的系数保留,这些系数通常是在高频区域,因为人眼对高频信息不太敏感。
量化后的系数矩阵被编码为比特流,这个过程称为熵编码。
熵编码使用的是一种自适应的算法,它可以根据数据的统计特征来选择不同的编码方式,以达到更好的压缩效果。
在JPEG解码过程中,先将比特流解码为系数矩阵,然后将系数矩阵进行反量化和反DCT变换,得到恢复后的图像。
解码过程中也需要使用相同的量化矩阵和熵编码算法来还原原始的系数矩阵。
总结一下,JPEG编解码原理可以分为以下几个步骤:1.将图像分割成8x8的小块;2.对每个小块进行DCT变换,得到系数矩阵;3.对系数矩阵进行量化,得到量化后的系数矩阵;4.将量化后的系数矩阵编码为比特流,使用熵编码算法;5.解码时,将比特流解码为系数矩阵;6.对系数矩阵进行反量化和反DCT变换,得到恢复后的图像。
JPEG编解码原理的核心是DCT和量化。
DCT可以将空间域的数据转换为频域的数据,量化可以将连续的数值变为离散的数值,以减少需要存储或传输的数据量。
这两个过程的相互作用,使得JPEG 可以在保持图像质量的前提下,大大减少图像的存储和传输开销。