数据压缩实验五:JPEG原理分析及JPEG解码器的调试

一、实验原理

1.JPEG简介     

       JPEG( Joint Photographic Experts Group)即联合图像专家组,是用于连续色调静态图像压缩的一种标准,文件后缀名为.jpg或.jpeg,是最常用的图像文件格式。其主要是采用预测编码(DPCM)、离散余弦变换(DCT)以及熵编码的联合编码方式,以去除冗余的图像和彩色数据,属于有损压缩格式,它能够将图像压缩在很小的储存空间,一定程度上会造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量降低,如果追求高品质图像,则不宜采用过高的压缩比例。

2.JPEG编解码原理

①零偏置Level Offset

对于灰度级是 2 n 的像素,通过减去 2 n-1 ,将无符号的整数值变成有符号数
对于 n=8 ,即将 0~255 的值域,通过减去 128 , 转换为值域在-128~127 之间的值
目的:使像素的绝对值出现 3 10 进制的概率大大减少

DCT变换

      对每个单独的彩色图像分量,把整个分量图像分成8×8的图像块,并作为两维离散余弦变换DCT的输入,实现去相关和能量集中,去除冗余信息,提高编码效率。
      DCT变换使用下式计算:

 ③量化

       因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化值和色差量化值。
       根据人眼的视觉特性(对低频敏感,对高频不太敏感)对低频分量采取较细的量化,对高频分量采取较粗的量化。
       如果原始图象中细节丰富,则去掉的数据较多,反之,细节少的原始图象在压缩时去掉的数据少些。

DC系数的差分编码

       8× 8 图像块经过 DCT 变换之后得到的 DC 直流系数有两个特点:
  •  系数的数值比较大
  • 相邻 8 × 8 图像块的 DC 系数值变化不大:冗余
       根据这个特点,JPEG 算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化 DC 系数的差值DIFF进行编码。
        

AC系数的Z字扫描和游程编码

       由于经过DCT变换后,系数大多集中在左上角,即低频分量区,因此采用Z字形按频率的高低顺序读出,可以出现很多连零的机会,可以使用游程编码。尤其是在最后,如果都是零,给出EOB(End of Block)即可。
        JPEG中游程编码的规定为: (run, level)
  • 表示连续 run 0 ,后面跟值为 level 的系数
  • Run: 最多 15 个,用 4 位表示 RRRR
  • Level :类似DC, 分成 16 个类别,用 4位表示SSSS表示类别号,类内索引
  • 对(RRRR, SSSS)联合用Huffman编码,对类内索引用定长码编码

⑥Huffman编码

       对DC系数DPCM的结果和AC系数RLE的结果进行Huffman编码,分成类别,类似指数Golomb编码。
       类别ID采用一元码编码,类内索引采用定长码编码。
       共有亮度DC、亮度AC、色差DC、色差AC四张码表。

3.JPEG文件组织

Segment 的组织形式

JPEG 在文件中以 Segment 的形式组织,它具有以下特点:
  •  均以 0xFF 开始,后跟 1 byte Marker 2 byte Segment length(包含表示Length 本身所占用的 2 byte,不含“0xFF+ Marker” 所占用的 2 byte);
  • 采用 Motorola 序(相对于 Intel 序),即保存时高位在前,低位在后;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值