实验5:JPEG原理分析及JPEG解码器的调试

一. 总结JPEG编解码原理

1.JPEG编解码原理

实验5:JPEG原理分析及JPEG解码器的调试
(1)零电平偏置:输入图像所有像素点的值-128,范围由0~255变为-128~127。
(2)88DCT变换:将零电平偏置之后的图像分成88像素的块做DCT变换。
(3)量化:用根据人眼视觉特性设计的量化矩阵对DCT变换之后的结果进行量化。
(4)之字形扫描:用之字形扫描读取量化后数据来提高游程编码效率。
(5)DC 系数编码: 直流系数 F(0,0)反映了该子图像中包含的直流成分,两个相邻的子图像的直流系数通常具有较大的相关性,所以对本像素块直流系数与前一像素块直流系数的差值进行无损编码。
(6)AC 系数编码: 游程编码,并在最后加上块结束码,系数序列分组,将非零系数和它前面的相邻的全部零系数分在一组。
(7)可变长熵编码:为了消除其码字中的统计冗余,对编码为码字后的系数进行Huffman编码。

2.JPEG文件格式

实验5:JPEG原理分析及JPEG解码器的调试

二. 编程实现的算法

1.逐步调试JPEG解码器程序。将输入的JPG文件进行解码,将输出文件保存为可供YUVViewer观看的YUV文件。

2.程序调试过程中,应做到:理解程序设计的整体框架;
理解三个结构体的设计目的
struct huffman_table;struct component;struct jdec_private
理解在视音频编解码调试中TRACE的目的和含义
会打开和关闭TRACE;会根据自己的要求修改TRACE

3.以txt文件输出所有的量化矩阵和所有的HUFFMAN码表。

4.输出DC图像并统计其概率分布。

5.输出某一个AC值图像并统计其概率分布。