多媒体原理与应用_第1页
多媒体原理与应用_第2页
多媒体原理与应用_第3页
多媒体原理与应用_第4页
免费预览已结束,剩余23页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、“多媒体原理与应用A”实验指导书(一)一、实验课程编码: 103008二、实验课程名称:多媒体原理与应用A三、实验项目名称: 彩色空间转换四、实验目的1进一步理解彩色空间的概念并掌握不同彩色空间转换的基本方程。2通过逐步运行程序,掌握编程细节:如查找表的设计,内存分配,对U和V信号进行下采样,文件读写过程等。五、主要设备安装 Windows 和 Visual C+软件的个人计算机六、实验内容1 YUV与RGB空间的相互转换由电视原理可知,亮度和色差信号的构成如下:Y0.2990R+0.5870G+0.1140BR-Y0.7010R-0.5870G-0.1140BB-Y-0.2990R-0.58

2、70G+0.8860B为了使色差信号的动态范围控制在0.5之间,需要进行归一化, 对色差信号引入压缩系数。归一化后的色差信号为:U-0.1684R-0.3316G+0.5BV0.5R-0.4187G-0.0813B2. 码电平分配及数字表达式(1)亮电平信号量化后码电平分配在对分量信号进行 8比特均匀量化时,共分为256个等间隔的量化级。为了防止信号变动造成过载,在256级上端留 20级,下端留 16级作为信号超越动态范围的保护带。(2)色差信号量化后码电平分配色差信号经过归一化处理后,动态范围为-0.50.5,让色差零电平对应码电平 128,色差信号总共占 225个量化级。在 256级上端留

3、 15级,下端留 16级作为信号超越动态范围的保护带。3色度格式4:2:0格式是指色差信号 U, V的取样频率为亮度信号取样频率的四分之一,在水平方向和垂直方向上的取样点数均为Y的一半。4部分查表法的基本思路根据 RGB到YUV的转换公式,可用查表替代转换算法中的乘法运算。即定义 7个1维数组作为查找表(下标从 0开始到 255,数组元素为转换系数与 256个整数的乘积。void InitLookupTable( )int i;for (i = 0; i < 256; i+)for (i = 0; i < 256; i+)for (i = 0; i < 256; i+)for

4、 (i = 0; i < 256; i+)for (i = 0; i < 256; i+)for (i = 0; i < 256; i+)for (i = 0; i < 256; i+)RGBYUV02990i = (float)0.2990 * i;RGBYUV05870i = (float)0.5870 * i;RGBYUV01140i = (float)0.1140 * i;RGBYUV01684i = (float)0.1684 * i;RGBYUV03316i = (float)0.3316 * i;RGBYUV04187i = (float)0.4187 *

5、 i;RGBYUV00813i = (float)0.0813 * i;在对视频序列中的每一帧或单帧图像进行彩色空间转换时,只需查找对应的表项即可。因此可以节省运算的时间。七、实验步骤1调试 RGB转化为 YUV程序,重点掌握函数定义,部分查找表的初始化和调用,缓冲区分配。将 RGB至YUV转换部分的代码填充完整。2编写对 UV信号进行下采样的代码,填充输出YUV文件的代码。3对整个程序进行调试, 并将给出的 RGB文件转换为 YUV文件,用YUV Viewer播放器观看,验证是否正确。八、实验结果总结 RGB到 YUV 的转换公式及编程实现的算法并写成实验报告。实验报告以电子版形式撰写,程序

6、代码作为报告的附件,实验后一周内提交。执笔人:张远实验室主任:系主任:杨磊“多媒体原理与应用A”实验指导书(二)一、实验课程编码: 103008二、实验课程名称:多媒体原理与应用A三、实验项目名称: 图像文件的读写和转换(综合性实验)四、实验目的1掌握图像文件的构成原理,学会根据文档或规范解析一个图像文件(如BMP)。2掌握图像文件的相互转换原理。五、主要设备安装 Windows 和 Visual C+软件的个人计算机六、实验内容1 BMP文件的解析位图文件 (Bitmap-File,BMP)格式是 Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格

7、式。BMP位图文件默认的文件扩展名是 bmp 或者 dib。BMP文件大体上分为四个部分:位图文件头 BITMAPFILEHEADER位图信息头 BITMAPINFOHEADER调色板 Palette实际的位图数据 ImageData位图文件头主要包括:typedef struct tagBITMAPFILEHEADER WORDbfType;/* 说明文件的类型 */DWORDbfSize;/*说明文件的大小,用字节为单位*/WORDbfReserved1;/*保留,设置为 0 */WORDbfReserved2;/*保留,设置为 0 */DWORDbfOffBits;/*说明从 BITMA

8、PFILEHEADER结构开始到实际的图像数据之间的字节偏移量*/ BITMAPFILEHEADER;位图信息头主要包括:typedef struct tagBITMAPINFOHEADER DWORDbiSize;/*说明结构体所需字节数 */LONGbiWidth;/*以像素为单位说明图像的宽度*/LONGbiHeight;/*以像素为单位说明图像的高速*/WORDbiPlanes;/*说明位面数,必须为 1 */WORDbiBitCount;/*说明位数 / 像素, 1、2、4、8、24 */DWORDbiCompression;/*说明图像是否压缩及压缩类型BI_RGB, BI_RLE

9、8,BI_RLE4, BI_BITFIELDS */DWORDbiSizeImage;/*以字节为单位说明图像大小,必须是4的整数倍 */LONGbiXPelsPerMeter;/* 目标设备的水平分辨率,像素 / 米 */LONGbiYPelsPerMeter;/* 目标设备的垂直分辨率,像素 / 米 */DWORDbiClrUsed;/*说明图像实际用到的颜色数, 如果为 0,则颜色数为 2的biBitCount次方 */DWORDbiClrImportant;/* 说明对图像显示有重要影响的颜色索引的数目,如果是 0,表示都重要。 */ BITMAPINFOHEADER;调色板实际上是一

10、个数组,它所包含的元素与位图所具有的颜色数相同, 决定 于 biClrUsed和 biBitCount 字段。数组中每个元素的类型是一个RGBQUAD结构。真彩色无调色板部分。typedef struct tagRGBQUAD BYTErgbBlue;/* 指定蓝色分量*/BYTErgbGreen;/* 指定绿色分量*/BYTErgbRed;/*指定红色分量*/BYTErgbReserved;/* 保留,指定为0*/ RGBQUAD;紧跟在调色板之后的是图像数据字节阵列。对于用到调色板的位图,图像数据就是该像素颜色在调色板中的索引值(逻辑色)。对于真彩色图,图像数据就是实际的 R、G、B值。图

11、像的每一扫描行由表示图像像素的连续的字节组成,每一行的字节数取决于图像的颜色数目和用像素表示的图像宽度。规定每一扫描行的字节数必需是4的整倍数,也就是 DWORD对齐的。扫描行是由底向上存储的,这就是说,阵列中的第一个字节表示位图左下角的像素,而最后一个字节表示位图右上角的像素。2 BMP文件到 YUV文件的转换需要根据 BMP文件中图像的像素深度,决定转换到YUV文件的过程和方法。例如,真彩色数据可直接取出并调用实验1的程序进行转换。如果使用调色板,需要通过查阅调色板得到对应的像素数据再进行转换。七、实验步骤1首先调试 BMP的解析程序,根据 BMP文件的规范读出位图文件头和位图信息头并输出

12、主要的位图信息。2. 编写程序代码,使得能够根据 BMP文件中图像的像素深度,读出每个像素的 RGB数据并写入 RGB文件,同时转换为相应的 YUV文件。3. 调试程序完毕后, 用YUV Viewer播放器观看转换后的 YUV文件,验证是否正确。八、实验结果总结图像文件的解析过程及编程实现 BMP到YUV文件的算法并写成实验报告。实验报告中应回答下述问题: (1)对 2位, 4位, 8位彩色,一个字节各表示多少个像素?( 2)2位, 4位, 8位,16位(r5g5b5,r5g6b5) 转24位位图如何操作?( 3)假设取得某526色BMP位图数据和调色板,如何显示?实验报告以电子版形式撰写,程

13、序代码作为报告的附件,实验后一周内提交。执笔人:张远实验室主任:系主任:杨磊“多媒体原理与应用A”实验指导书(三)一、实验课程编码: 103008二、实验课程名称:多媒体原理与应用A三、实验项目名称: LZW 编解码算法实现与分析四、实验目的掌握词典编码的基本原理,用C语言编程实现 LZW编码器并分析解码算法。五、主要设备安装 Windows 和 Visual C+软件的个人计算机六、实验内容1 LZW编码原理和实现算法LZW的编码思想是不断地从字符流中提取新的字符串,通俗地理解为新“词条 ”,然后用 “代号 ”也就是码字表示这个 “词条 ”。这样一来,对字符流的编码就变成了用码字去替换字符流

14、, 生成码字流,从而达到压缩数据的目的。LZW编码是围绕称为词典的转换表来完成的。 LZW编码器通过管理这个词典完成输入与输出之间的转换。 LZW编码器的输入是字符流, 字符流可以是用 8位ASCII字符组成的字符串,而输出是用 n位(例如 12位 )表示的码字流。 LZW编码算法的步骤如下:步骤 1:将词典初始化为包含所有可能的单字符,当前前缀 P初始化为空。步骤 2:当前字符 C=字符流中的下一个字符。步骤 3:判断 PC是否在词典中( 1)如果 “是”,则用 C扩展 P,即让 P=P C,返回到步骤 2。( 2)如果 “否”,则输出与当前前缀 P相对应的码字 W;将PC添加到词典中;令P

15、=C,并返回到步骤 2LZW编码算法可用下述函数实现。首先初始化词典,然后顺序从待压缩文件中读入字符并按照上述算法执行编码。最后将编得的码字流输出至文件中。void LZWEncode( FILE *fp, BITFILE *bf)int character;int string_code;int index;unsigned long file_length;fseek( fp, 0, SEEK_END);file_length = ftell( fp);fseek( fp, 0, SEEK_SET);BitsOutput( bf, file_length, 4*8);InitDiction

16、ary();string_code = -1;while( EOF!=(character=fgetc( fp)index = InDictionary( character, string_code);if( 0<=index)/ string+character in dictionarystring_code = index;else/ string+character not in dictionaryoutput( bf, string_code);if( MAX_CODE > next_code)/ free space in dictionary/ add strin

17、g+character to dictionary AddToDictionary( character, string_code);string_code = character;output( bf, string_code);2 LZW解码原理和实现算法LZW解码算法开始时,译码词典和编码词典相同,包含所有可能的前缀根。具体解码算法如下:步骤 1:在开始译码时词典包含所有可能的前缀根。步骤 2:令 CW:=码字流中的第一个码字。步骤 3:输出当前缀 -符串 string.CW到码字流。步骤 4:先前码字 PW:=当前码字 CW。步骤 5:当前码字 CW:=码字流的下一个码字。步骤 6:判

18、断当前缀 -符串 string.CW 是否在词典中。( 1)如果 ”是”,则把当前缀 -符串 string.CW输出到字符流。当前前缀 P:=先前缀 -符串 string.PW。当前字符 C:=当前前缀 -符串 string.CW的第一个字符。把缀 -符串 P+C添加到词典。( 2)如果 ”否”,则当前前缀 P:=先前缀 -符串 string.PW。当前字符 C:=当前缀 -符串 string.CW的第一个字符。输出缀 -符串 P+C到字符流 ,然后把它添加到词典中。步骤 7:判断码字流中是否还有码字要译。( 1)如果 ”是”,就返回步骤 4。( 2)如果 ”否”,结束。LZW解码算法可用下述

19、函数实现。首先初始化词典,然后顺序从压缩文件中读入码字并按照上述算法执行解码。最后将解得的字符串输出至文件中。void LZWDecode( BITFILE *bf, FILE *fp)int character;int new_code, last_code;int phrase_length;unsigned long file_length;file_length = BitsInput( bf, 4*8);if( -1 = file_length) file_length = 0;InitDictionary();last_code = -1;while( 0<file_leng

20、th)new_code = input( bf);if( new_code >= next_code) / this is the case CSCSC( not in dict)d_stack0 = character;phrase_length = DecodeString( 1, last_code);elsephrase_length = DecodeString( 0, new_code);character = d_stackphrase_length-1;while( 0<phrase_length)phrase_length -;fputc( d_stack phr

21、ase_length, fp);file_length-;if( MAX_CODE>next_code) / add the new phrase to dictionary AddToDictionary( character, last_code);last_code = new_code;七、实验步骤1首先调试 LZW的编码程序, 对照编码算法步骤对关键语句加上注释,并说明进行何操作。以一个文本文件作为输入,得到输出的LZW编码文件。2.以实验步骤一得到的编码文件作为输入,调试LZW的解码程序。对照解码算法步骤对关键语句加上注释,并说明进行何操作。重点说明当前码字在词典中不存在时应

22、如何处理并解释原因。3.调试程序完毕后,用文本编辑器或UltraEDIT软件比较源文本文件和经LZW编码和解码后的文本文件,验证两者是否相同。八、实验结果总结 LZW编解码原理及编程实现的算法并写成实验报告。实验报告中应说明主要函数中的关键语句并加以注释。实验报告以电子版形式撰写,程序代码作为报告的附件,实验后一周内提交。执笔人:张远实验室主任:系主任:杨磊“多媒体原理与应用A”实验指导书(四)一、实验课程编码: 103008二、实验课程名称:多媒体原理与应用A三、实验项目名称: 小波变换的分析和实现四、实验目的进一步理解小波变换的基本原理和在图像处理中的应用。五、主要设备安装 Windows

23、 和 MATLAB软件的个人计算机六、实验内容为进一步理解小波变换的基本原理和在图像处理中的应用,可使用MATLAB软件中的小波变换工具箱编写小波变换程序,对原始图像进行分解。用小波 对图 像进 行变 换有两 种方 法, 一种 叫做标 准分 解 (standard decomposition),另一种叫做非标准分解 (nonstandard decomposition)。标准分解方法是指首先使用一维小波对图像每一行的像素值进行变换, 产生每一行像素的平均值和细节系数,然后使用一维小波对这个经过行变换的图像的列进行变换,产生这个图像的平均值和细节系数。标准分解的过程如下:procedureSta

24、ndardDecomposition(C: array 1. . . h, 1. . . w of reals)for row 1 to h doDecomposition(C row, 1 . . . w)end forfor col 1 to w doDecomposition(C 1 . . . h, col)end forEndprocedure非标准分解是指使用一维小波交替地对每一行和每一列像素值进行变换。首先对图像的每一行计算像素对的均值和差值,然后对每一列计算像素对的均值和差值。这样得到的变换结果只有1/4的像素包含均值,再对这1/4的均值重复计算行和列的均值和差值,依此类推。非

25、标准分解的过程如下:procedureNonstandardDecomposition (C: arrayof reals)(normalize input coefficients)while h > 1 dofor row 1 to h doDecompositionStep(C row, 1 . . . h)end forfor col 1 to h doDecompositionStep(C 1 . . .h, col)end forend whileend procedure标准分解方法和非标准分解方法相比, 它们得到的变换结果是完全相同的,只是非标准算法的计算量可以少一些。图

26、 1和图 2分别表示使用标准分解方法和非标准分解方法所分解得到的图像。图1 图像的标准分解方法图2图像的非标准分解方法七、实验步骤1使用 MATLAB编写程序读入一幅给定的图像,使用标准分解方法对图像进行分解并分别得到 1/4,1/16和1/64分辨率的图像。2. 使用 MATLAB编写程序读入一幅给定的图像, 使用非标准分解方法对图像进行分解并分别得到 1/4,1/16和1/64分辨率的图像。八、实验结果总结小波变换的两种分解方法并写成实验报告。实验报告中应给出图像的分解过程及结果。实验报告以电子版形式撰写,程序代码作为报告的附件,实验后一周内提交。执笔人:张远实验室主任:系主任:杨磊“多媒

27、体原理与应用A”实验指导书(五)一、实验课程编码: 103008二、实验课程名称:多媒体原理与应用A三、实验项目名称: MP3 音频编码器 / 解码器设计(设计性实验)四、实验目的掌握感知音频编码的基本原理,基于所给出的MP3编解码器核实现一个基本的可视化 MP3音频编码器 / 解码器。掌握设计静态链接库及界面设计的基本方法。本实验两人一组,分别完成编码器和解码器的设计。五、主要设备安装 Windows 和 Visual C+软件的个人计算机六、实验内容1 MP3编码原理感知编码是利用人耳听觉的心理声学特性,通过建立相应的心理声学模型以消除一定的冗余数据。 MPEG-1 Audio、MPEG-

28、2 Audio和Dolby AC-3等音频压缩编码标准中都大量地使用了感知编码技术。MP3是MPEG-1 Audio Layer 3的简称,其编码框图如下所示:码流滤波器组MDCT失真控制环Huffman格式32 个子带编码非均匀量化CRC码率控制环边信号校验编码FFT1024 点声学模型外部控制铺助数据首先,输入的 PCM音频数据按帧 (Frame)处理,每 1152个PCM样值划分为一帧,而每帧又分为两个组, 即 576样值 / 组。对每组的 576个 PCM样值作时域-频域变换,经子带滤波后划分为 32个子带信号。然后分别对各子带作 MDCT,从而得到 576个等间距的频域样值。心理声学

29、模型在对当前音频信号的频域特性进行分析的基础上, 依据预先建立起来的统计模型数据求出各个比例因子带的信号掩蔽比,并以此指导频域样值量化的进行。编码过程的最后一个环节是比特流打包。其任务是按照 MP3标准所规定的码流格式,把帧头、纠错码、编码数据、附加数据等有关信息组合成适用于解码的帧,称为帧生成过程。2可视化的 MP3编码器 / 解码器设计首先进行基本的需求分析。 MP3编码器设置参数包含编码方式、码率、心理声学模型等, 解码器设置参数包含输出格式、 文件名、相关信息显示等。其次构建 MP3编码器 / 解码器的整体框架,定义和分析静态链接库的共用接口和函数结构。在此基础上分别进行基于参考软件

30、MP3 编码静态链接库和解码静态链接库的改造。 最后完成界面控制与解码器静态库和编码器静态库的链接。例如, MP3编码器的整体设计框图如下所示。界面控制打 开文件MP3编码数 据缓冲码 流输出写 入文件控制信息数据流七、实验步骤1首先调试 MP3编码器 / 解码器的源程序,定义静态链接库的公用接口和函数结构。将所给出的 MP3编码器 / 解码器根据所定义的共用接口及函数包装为一个静态链接库。 使用一个基于控制台的测试程序验证静态链接库是否正确运行。2使用 MFC编写界面,每组两人分别将 MP3编码器和解码器静态链接库添加到项目中并进行联调。要求界面中应有相关的编码和解码参数设置,并有基本的信息

31、显示。3在所设计的 MP3编码器中,输入多个WAV文件或 PCM文件进行编码,用Windows Media Player或其它多媒体播放器播放编码生成的MP3文件。验证编码器的正确性。4在所设计的 MP3解码器中,输入多个 MP3文件进行解码输出得到 WAV文件,用Windows Media Player或其它多媒体播放器播放 WAV文件。验证解码器的正确性。八、实验结果总结 MP3编解码原理静态链接库的设计及调试过程并写成实验报告。实验报告中应说明主要的共用接口和函数结构。实验报告以电子版形式撰写,程序代码作为报告的附件, 实验后一周内提交。 如不能在规定的时间内完成,可在实验课后利用业余时

32、间继续。执笔人:张远实验室主任:系主任:杨磊“多媒体原理与应用A”实验指导书(六)一、实验课程编码: 103008二、实验课程名称:多媒体原理与应用A三、实验项目名称: 多媒体网页的制作四、实验目的掌握多媒体网页设计与制作的基本思想,使用 Dreamweaver工具软件制作多媒体网页,需要包括图、文、声等多媒体元素。五、主要设备安装 Windows 和 Dreamweaver 软件的个人计算机六、实验内容设计个人主页,必须达到下述要求:1 具有文档内部的链接。2 可链接电子邮件程序。3 文本和图像显示于同一网页。4 用图像作超链接,用图像作网页的背景。5 可链接外联图像。6 在文档中链接和嵌入

33、声音文件。7 在文档中链接和嵌入视频文件。8 支持简单的交互功能。七、实验步骤个人主页的设计可遵从如下步骤,即整体构架、页面建构和内容填充。首先需建立明晰的网页结构,便于查询需要的信息。随后进行页面建构和内容填充,页面主要包含页面题头部分(包括文件标题、网站LOGO)、页面的主体部分(包括小标题和文本内容) 、页脚部分(包括作者信息、单位信息、版权信息)等。最后进行功能测试。八、实验结果将制作好的网页打包并在实验后一周内提交。执笔人:张远实验室主任:系主任:杨磊“多媒体原理与应用A”实验指导书(七)一、实验课程编码: 103008二、实验课程名称:多媒体原理与应用A三、实验项目名称: java

34、script 和 xml 结合的网络应用(综合性实验)四、实验目的掌握 XML语言的基本原理,学习用JavaScript操作 XML文件的基本方法及相应的网络应用。五、主要设备安装 Windows 和 Internet Explorer 软件的个人计算机六、实验内容1用 JavaScript显示 XML文档数据Internet Explorer 5.0以上版本可以显示原始 XML文档,如果要像 HTML格式那样显示 XML文档中的数据,需要用其他代码(如JavaScript)输入 XML文档的数据才能显示。以下为一个XML文档:<?xml version =”1.0”encoding =

35、 “ISO8859-1”><note><to>Lucy</to><from>Lin</from><heading>Reminder</heading><body>Dontforget me this weekend!</body></note>下述的 HTML文档示例说明如何用 JavaScript输入 XML文档数据。<html><head><script language =“JavaScript”for = “window ”even

36、t = “onload”>var xmlDoc = new ActiveXObject(“Microsoft.XMLDOM”)/ 建立对象xmlDoc.async =“false”xmlDoc.load(“note.xml”)/ 加载 XML文件to.innerText = nodes.item(0).textfrom.innerText = nodes.item(1).textheader.innerText = nodes.item(2).textbody. innerText = nodes.item(3).text</script><title>Displaying XML data in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论