《36学时计算机网络及多媒体技术》实验指导书 联系客服

发布时间 : 星期日 文章《36学时计算机网络及多媒体技术》实验指导书更新完毕开始阅读5a0b740fcc175527072208fb

《计算机网络及多媒体技术》实验指导书

在VC中,这个结构定义为:

typedef struct{ FOURCC ckid; DWORD cksize; FOURCC fccType; DWORD dwDataOffset; DWORD dwFlags; } MMCKINFO

(2) 用“录音机”录制一段音频文件。

保存此音频文件。

(3)运行gwave音频编辑软件,打开(1)中制作的文件。

(4)查看抽样频率是多少,量化参数配置,和其他编辑音频文件的参数设置。进行格式转换,例如由wav转换成mp3格式等。(注意:也可以利用gwave的红色按钮来录制音频文件)

33

《计算机网络及多媒体技术》实验指导书

(5)裁剪音频文件为适当大小(或长度)并保存,加深理解音频文件的数据处理过程。 更多内容可参考软件的帮助。 5.【思考题】

(1)在计算机中如何得到一个音频文件的,其数据处理过程如何? (2)Wave文件的采样频率是多少?

34

《计算机网络及多媒体技术》实验指导书

实验十:JPEG静止图像压缩实验

1.【实验目的】

(1)了解数字图像压缩的一类方法;

(2)掌握2D快速DCT变换的算法。 2.【实验原理】

JPEG标准是面向连续色调静止图像的图像压缩标准。它定义了多种类型的工作模式,其中最基本的是基于8×8块的DCT变换的顺序编码。就是将一帧图像分为8×8的数据块单元,按照从左至右、自上而下的顺序对“块流”编码,其编码,解码的框图如下:

8×8

DCT变换 量化 熵编码 码字数据 8×8 原始图像数据 反量化 IDCT变换 码字数据 熵解码 恢复图像数据 基于DCT的编码、解码框图 3.【实验任务】

按照如上框图实现一帧图像的压缩编码和解码。 4.【实验指导】 (1)DCT变换:

数学表达式:

?771(2x?1)u?(2y?1)v??F(u,v)?C(u)C(v)???f(x,y)?coscos?

41616?x?0y?0?1?77(2x?1)u?(2y?1)v??cos f(x,y)????C(u)C(v)F(u,v)?cos ?4?u?0v?01616?其中:

1, u,v = 0; 2C(u),C(v)?1, 其他; C(u),C(v)? 二维DCT变换从表达式看具有可分离性,即可以分解为行和列的一维DCT变换的组合运算。另一种2D快速余弦变换是把8×8的块分成更小的子块,直接对二维数据块操作。实验2D快速余弦变换的正变换和反变换,并将它分解为行和列的一维运算的算法进行比较。

35

《计算机网络及多媒体技术》实验指导书

(2)量化

量化的表达式为: F(u,v)?QF(u,v)?8

g_scale?Q(u,v)其中g_scal是量化因子,对DC系统,g_scale恒为8;对AC系数,它可以是1~30的整数。是上式四舍五入取整的结果,称为量化系数。Q(U,V)是量化矩阵。

按照表1所给的量化矩阵对DCT系统进行量化(所有的表在附录四“JPEG数字图像压缩方法”中)。

(3)熵编码

A.DC系统的编码。

DC系统编码的基本步骤为:

1) 以初始值为128,对相邻块的DC系统作差分:DIFFj=DCj-DCj-1; 2) 将差分值改写为(size,value)((尺寸,幅值))的符号对。 0 value=0 Size= Log(|value|)+1 value≠0 3)按照表2,3对该符号对编码。 B.AC系数的编码。

AC系数编码的基本步骤为:

1)以块为单位,从AC01开始,对块内的量化数据进行Z字形行程扫描。记下两T非零值的大小和其间连续零的个数。

2)扫描结果改写为(runlength,level)((行程长,幅值))的符号对;其中runlength表示该非零值和它前一个值之间零的个数,以EOB标识一个块的扫描结果。

3)按照表3对上面的符号对编码。若符号对在表中查不到对应码字时,以ESC码表示,然后按表4,5对runlength 和level编码。

(4)对编码后的图像数据进行解码。 5、【实验要求】

请按照实验内容部分的要求完成自己的编码程序(可以利用模板程序中的辅助程序进行检查)。以下是模板程序介绍。

1、 模板程序的JPEG图像编码过程

输入源图像 输出图像

8*8二维DCT变换 8*8二维IDCT变换

量化 量化表 逆量化

直流分量预测编码 直流分量预测编码

2.熵编码 1.表说明 熵解码 JPEG编码及解码原理图

36

《计算机网络及多媒体技术》实验指导书

2、 模板文件介绍

实验室给出以下用VC开发的程序(JPEG目录下,包括原代码): (1)JPEG压缩程序gendat.exe;

(2)为压缩后的数据加上JPEG文件头的程序genjpg.exe; (3)解JPEG压缩程序extrdat.exe。

其中(1)的输入参数是需要生成的压缩文件的名字,主程序流程为:

a. 程序初始化,读取文件名称、原始图像等基本数据;

b. 从AC.TAB和DC.TAB两个文件生成AC表和DC表,存入数组; c.以8×8为样本单位进行DCT变换; d. 以8×8为样本单位进行量化; e. 以8×8为样本单位进行Z型扫描; f. 以8×8为样本单位进行编码; g. 以8×8为样本单位进行解量化; h. 以8×8为样本单位进行IDCT变换;

请同学们在参考上述程序的基础上,编制自己的JPEG压缩程序,然后利用2和3检查自己的程序是否正确运行(注意:*.JPG文件可以用浏览器IE查看)。

6、【思考题】

(1)计算图像的压缩比,并比较原图像的效果。

(2)改变g_scale和量化矩阵中的元素,比较压缩比和恢复图像的效果。

(3)DCT变换,量化后,数据的值域是多少?有没有可能超出码表所给幅值的范围?

37