[数据压缩作业7]JPEG原理分析及JPEG解码器的调试

本文详述了JPEG编解码的原理,包括零偏置、8*8DCT变换、量化、DC系数编码等步骤,以及JPEG文件格式的Segment结构。同时,介绍了JPEG解码器的调试过程,包括量化矩阵和HUFFMAN码表的输出,以及DC和AC图像的概率分布分析。
摘要由CSDN通过智能技术生成

目录

(一)实验名称

(二)实验目的

(三)主要设备

(四)实验内容

一、JPEG编解码原理

 框图

1. 零偏置

2. 8*8DCT变换

3. 量化

4. DC系数差分编码

5. AC系数Z字扫描及游程编码

6. Huffman编码

二、JPEG文件格式

1. Segment的组织形式

2. JPEG 的 Segment Marker

3. 用测试图片理解jpeg格式

(五)代码分析

一. JPEG解码流程

二、 三个结构体

1. huffman_table

2. component

3. jdec_private

三、TRACE的目的和含义

1. 目的

2. 含义

(六)实验步骤

一. 调试JPEG解码器

二、以txt文件输出所有的量化矩阵和所有的HUFFMAN码表

1. 量化矩阵

三、输出DC图像和某一个AC值图像并统计其概率分布

1. 补充代码

2. DC图像

3. AC图像

 4. 概率分布


(一)实验名称

JPEG原理分析及JPEG解码器的调试

(二)实验目的

掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。

(三)主要设备

安装Windows和Visual Studio软件的个人计算机

(四)实验内容

一、JPEG编解码原理

 框图

JPEG编码的过程如下图所示。解码是编码的逆过程。

 各环节的作用分别是:

1. 零偏置

对于灰度级为2n 的像素,通过减去2(n-1),将无符号整数变为有符号数,以将绝对值大的数出现的概率大大减小,提高编码效率。

2. 8*8DCT变换

对每个单独的彩色图像分量,把整个分量图像分成8*8的图像块,作为二维离散余弦变换DCT的输入,并进行DCT变换。以实现能量集中和去相关,便于去除空间冗余,提高编码效率。(若图像的宽或高不是8的整数倍的图像,使用图像边缘像素填充,以不改变频谱分布。)DCT是一种无损变换,也无法对图像进行压缩,这样做的目的是在为下一步的量化做准备。

3. 量化

量化是编码流程中唯一会引入误差也是唯一会带来压缩效果的步骤。 由于人眼对亮度信号比对色差信号更敏感,因此JPEG使用了两种量化表:亮度量化值和色差量化值。根据人眼对低频敏感,对高频不太敏感的视觉特性,对低频部分采取较细的量化,对高频部分采取较粗的量化,减少了视觉冗余。量化矩阵并不是固定的,可以根据要求的质量的不同而进行调整。但经过量化,子块中的大多数高频区域的系数的量化结果都为0。

4. DC系数差分编码

经过8*8DCT变换后,DC直流系数的数值都比较大,且相邻图像块之间的DC系数变化不大(容易造成冗余),因此JPEG算法使用了差分脉冲调制编码DPCM技术对相邻图像块之间的量化DC系数的差值DIFF进行编码。

5. AC系数Z字扫描及游程编码

经过DCT变换后,AC系数大多集中在左上角的低频分量区,因此采用Z字形按频率的高低顺序读出可以出现很多连零的情况,便于使用游程编码,若最后的数据均为0,则直接给出EOB。

6. Huffman编码

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

二、JPEG文件格式

1. Segment的组织形式

JPEG 在文件中以 Segment 的形式组织,它具有以下特点:
(1)均以 0xFF 开始,后跟1byte的Marker和2byte的Segment length(包含表示 Length 本身所占用的 2 byte,不含“0xFF”+“Marker”所占用的2byte);
(2)采用 Motorola 序(相对于Intel 序),即保存时高位在前,低位在后;
(3) Data 部分中,0xFF 后若为 0x00,则跳过此字节不予处理。

2. JPEG 的 Segment Marker

 

 

 

3. 用测试图片理解jpeg格式

测试图像test.jpg图像如下:

 用VS2019以二进制形式打开这张图片

(1)图像开始SOI标记(0xFFD8)和图像结束EOI标记(0xFFD9)

 

 (2)APP0 segment(0xFFE0)

 APP0块的长度:16字节(不含0xFFE0)
“JFIF”+“0”:共5字节。
Major version和Minor version:各1字节。
X和Y方向密度单位:1字节,此例为0,表示无单位。
水平方向和垂直方向像素密度:各2字节,此例值为1。
缩略图水平和垂直像素数目:各1字节。

(3)量化表DQT(0xFFDB)——亮度、色度各一张

 两张量化表长度:67字节(不含0xFFDB)。
量化表信息:1字节。低四位表示QT号,只能取0~3;高四位表示QT精度,0为8比特,否则为16比特。此例为8比特。
实际数据:共64字节。

(4)帧图像开始SOF0(0xFFC0)

SOF长度:17字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值