JPEG原理分析及JPEG解码器的调试
实验目的
掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。
实验原理
JPEG( Joint Photographic Experts Group)是用于连续色调静态图像压缩的一种标准,文件后缀名为.jpg或.jpeg,是最常用的图像文件格式。
主要采用预测编码(DPCM)、离散余弦变换(DCT)以及熵编码的联合编码方式,以去除冗余的图像和彩色数据,属于有损压缩格式。
所谓有损压缩,就是把原始数据中不重要的部分去掉,以便可以用更小的体积保存。
JPEG编解码原理![](https://i-blog.csdnimg.cn/blog_migrate/73559a4e05025321fd4008bce53facc1.png)
JPEG编码的过程如上图所示。解码是编码的逆过程。
JPEG压缩编码算法的主要计算步骤如下:
(1) level offset
将输入图片做一个零偏置电平下移,将原数值从无符号数转换为有符号数,将值域往下做搬移,从而提高编码效率。
对于n=8,即将0~255的值域,通过减去128转换为值域在-128~127之间的值
(2) 8*8 DCT
将原始图像分为8*8的小块, 对于图片宽高不为8的倍数的图片,进行边缘填充处理。
对每个8x8块的每行进行变换,然后每列进行变换。得到的是一个8x8的变换系数矩阵。其中(0,0)位置的元素就是直流分量,矩阵中的其他元素根据其位置表示不同频率的交流分量。
(3) 量化(quantization)。
量化就是用像素值÷量化表对应值所得的结果。
量化表左上角的值较小,右上角的值较大,这样就起到了保持低频分量,抑制高频分量的目的。由于人眼对低频分量的敏感程度远高于高频分量,因此我们需要对低频分量细量化,对高频部分粗量化。通过量化可以达到通低频减高频的效果
(4) 编码
编码信息分两类,一类是使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码。一类是使用行程长度编码(RLE)对交流系数(AC)进行编码。
使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码:
每个8 * 8格子F中的[0,0]位置上元素,代表8 * 8个子块的平均值,JPEG中对F[0,0]单独编码,由于两个相邻的8×8子块的DC系数相差很小,具有冗余。所以对它们采用差分编码DPCM,可以提高压缩比,也就是说对相邻的子块DC系数的差值进行编码。
使用行程长度编码(RLE)对交流系数(AC)进行编码:
另一类是8×8块的其它63个子块,即交流(AC)系数,采用行程编码(游程编码Run-length encode,RLE)。为了保