多媒体技术项目实践项目实践一Huffman编码一、实验目的与要求1、实验目的(1)掌握哈夫曼编码原理。(2)理解数据压缩的实现过程。2、实验要求根据哈夫曼编码算法,对下列信源实现哈夫曼编码。求出编码后的平均码长。05.0,10.0,15.0,20.0,25.0,25.06,5,4,3,2,1XXXXXXX二、实验内容与步骤1、实验内容对上面信源进行哈夫曼编码。显示出每个符号的分配代码及平均码长。2、实验步骤(1)初始化,根据符号概率的大小按由大到小顺序对符号进行排序。(2)把概率最小的两个符号组成一个节点。(3)重复步骤(1)(2),直到概率和为1(4)从根节点开始到相应于每个符号的“树叶”,概率大的标“0”,概率小的标“1”(5)从根节点开始,对符号进行编码。三、实验成果1、哈夫曼编码程序。2、实验报告。项目实践二DCT变换编码一、实验目的与要求1、实验目的(1)掌握DCT变换编码原理。(2)理解DCT变换的实现过程。2、实验要求现有一张320×240的图像一张,要求对其进行DCT变换。二、实验内容与步骤1、实验内容对320×240的图像进行DCT变换2、实验步骤步骤一、分块将每个分量图像分成许多8×8=64个样点组成的像块,并对其采样,得到在空域中的8×8的样值矩阵。步骤二、变换利用FDCT公式,将空域中的8×8样值矩阵,正向变换(FDCT)为频域中的8×8DCT系数矩阵。步骤三、关于FDCT变换的几点说明(1)f(x,y)为空域中位置为(x,y)点的样值函数(x,y=0,1,…,7)。(2)F(u,v)为频率域中频率位置为(u,v)点的DCT系数(u,v=0,1,…,7)。(3)沿u,v方向频率增加,但是0~7并不特指某一频率(可视为小的频率域)。(4)F(0,0)对应直流分量,称为DC系数,其它63个对应交流分量的系数,称为AC系数。(5)两个空间的同位置系数无对应关系。(6)在频域中的右下角对应高频部分,而在左上角对应低频部分(特点,相关性)。步骤四、讨论(1)DC系数的构成:当u,v=0时,C(U)=C(V)=1/√2,有:可见DC系数为空域中64个样值的平均值(对8的)。(2)AC系数的构成:77001(21)(21),(,)coscos]41616ijiujvuvuvfijF()=C()C()[当u,v≠0时,C(U)=C(V)=1每个AC系数为空域中64个样值分别乘以对应的余弦量后求和,再取平均。(3)DCT系数的取值范围:在视频数字化中,由于采用8位量化,在空域中的样值的最大值应为256,所以F(0,0)MAX=DCMAX=256×64/8=2048故:0≤DC≤2047-1024≤AC≤1023(4)DCT系数规律:低频系数值大,高频系数值小。步骤五、DCT系数量化(1)量化的原因:DCT之后其系数矩阵中相关性不够明显,为进一步降低DCT系数矩阵中非零系数的幅值,增加零系数的个数,使相关性表现的更明显,需要进一步量化。(2)量化的依据对失真的要求:量化是图像质量下降的重要原因,DCT系数量化是基于限失真编码理论进行的,容许有失真,但应在视觉容许的容限内。对视觉的要求:亮度信号与色度信号的分辨能力不同;对低频图像信号和高频图像信号的分辨能力不同。(3)量化的方法区域滤波法:采用对DCT系数矩阵中的每一个值逐一量化。三、实验成果1、写好实验报告。项目实践三词典编码一、实验环境TurboC二、实验目的与要求1.实验目的(1)理解词典编码的思想。(2)了解LZ77算法。(3)掌握LZW算法。2.实验要求根据LZW算法原理对一段具体的字符进行编译。要求在编码过程中写出流程图,以便充分理解LZW算法原理,最终达到熟练应用。三、实验内容与步骤1.实验内容任意输入一段字符进行编码。依据字典算法的步骤,写出字符编码的流程图。2.实验步骤进入TuborC编译环境。在编译环境下输入词典的编码算法。(参考程序)#includestring.hvoidcopy1(char*prefix,char*s,inti,intj)/*拷贝字符串*/{intk;for(k=0;k20;k++)/*将前缀字符串清空*/prefix[k]='';for(k=i;ki+j;k++){prefix[k-i]=s[k];/*printf(aplghtis:%d---%c\n,k-i,prefix[k-i]);*/}}main(){chars[30],prefix[30],dic[20][30]={A,B,C},c[20];inti,j,k,n,t,m;/*k指字典中的编号,m指匹配号码,j指截取字母的长度*/k=3;m=0;j=1;i=0;printf(pleaseinputstring:\n);gets(s);while(istrlen(s)){copy1(prefix,s,i,j);/*读取字符的长度*/for(n=0;nk;n++)/*查找字典中的编号*/{/*printf(prefix=%s,prefix);printf(dic[3]=%s,dic[n]);*/if(strcmp(prefix,dic[n])==0){j=j+1;m=n;if((i+j)=strlen(s))copy1(prefix,s,i,j);elsestrcpy(prefix,);}}printf(%d,m);if(strlen(prefix)!=0){strcpy(dic[k],prefix);/*写入字典*/printf(%s\n,dic[k]);}k=k+1;i=i+j-1;j=1;}}运行该程序,根据其要求输入要编译的字符串“ABBABABAC”。调试、观察运行结果,并与自己画的编译流程图相比较。四、实验思考题1.字符流的输入如表3-1所示,使用LZW算法计算输出的码字流。请核对计算的输出码字流是否为:(1)(2)(4)(3)(5)(8)(1)(10)(11)…并将码字流中的码字填入练习表3-2对应的位置。表3-1输入字符流输入位置123456789101112131415……输入字符流ABABCBABABAAAAA……输出码子表3-2编码表步骤位置词典输出码子(1)a(2)b(3)c112…9…项目实践四声音录制、编辑和合成一、实验目的(1)通过实验学习声音的数字化过程,了解计算机如何处理和存储声音。(2)掌握声音处理工具软件CoolEdit的用法,能够用CoolEdit进行录音并根据需要编辑声音。(3)了解用Cakewalk音乐大师制作MIDI音乐。二、实验内容(1)用CoolEdit录音并去除声音文件中的噪音、添加混响效果、制作渐弱效果和自制卡拉OK伴奏带。(2)*Cakewalk音乐大师制作MIDI音乐三、实验要求(1)提交用CoolEdit录制的原文件。(2)提交用CoolEdit处理噪音、添加混向效果以及制作渐弱效果的最终作品。(3)尝试用Cakewalk音乐大师制作MIDI音乐。四、实验操作用CoolEdit录音并去除声音文件中的噪音、添加混响效果、制作渐弱效果和自制卡拉OK伴奏带。1、录制背景音乐背景音乐可由录音机、CD唱机等输出的模拟音频获取。首先保证外界音源设备与声卡的LineIn接口正确相连。步骤1:选择【开始】/【程序】/【CoolEdit2000】/【CoolEdit2000】,打开CoolEdit2000;步骤2:单击工具栏的【Record】按钮.出现【NewWaveform】对话框,分别选择【SampleRate】为44100,【Channels】为【Stereo】,【Resolution】为【16-bits】,单击【OK】按钮开始录音。步骤3:录音结束,单击工具栏的【Stop】按钮完成录音。步骤4:执行【File】/【SaveAs…】,打开保存对话框。选择好路径,文件名存为【背景音乐】,保存类型选【WindowsPCM(*.Wav)】,单击【保存】完成对音乐文件的录制。2、去除声音文件中的噪音步骤1:打开我们上面录制的【背景音乐】,执行【Effects】/【NoiseReduction】命令,打开【NoiseReduction…】对话框(1)在NoiseReductionSettings框中,【FFTSize】取值在4096~20000之间,在这里把它设为8192。其他各项就取CEPro设好的默认值。(2)在Profiles框中,单击【GetProfilefromSelection】按钮,CEPro就会把噪音轮廓记录在原先为灰色的“NoiseProfile”框中,水平方向表示频率,竖直方向表示噪音的量。(3)按下【NoiseReduction…】对话框中的【Close】按钮关闭对话框,注意不要按下【Cancel】按钮来关闭对话框。回到CEPro的工作界面后,使用水平缩放工具使整个声音波形都显示在波形显示区中,双击波形显示区选取整个波形,然后再次打开【NoiseReduction…】对话框,会看到噪音轮廓还在那里,这时按下【OK】按钮,CEPro就开始自动清除环境噪音了。步骤2:处理结束后,打开【File】/【SaveAs…】,选择好路径,文件名存为【无噪音背景音乐】单击【保存】,完成去除声音文件中的噪音处理。3、用CoolEditPro进行混音处理步骤1:打开另一个我们录制的【伴奏带】,执行【Edit】/【Mixpaste…】命令,打开【Mixpaste】对话框(1)在Volume框中,【VolumeL,R】代表左右声道音量,若为单声道文件,则只有一个声道音量调节,若选中【Invert】,则文件在被粘贴前声音数据将会颠倒。当【Lockleft/Right】被选中时,左右声道调节钮将被锁定,调节时将一齐变化。(2)在合成方式框中,选定【Insert】,则被粘贴的文件插入当前文件之中。选定【Overlap】时,则被粘贴的文件不会取代当前文件中的选定部分,而是以选定的部分与当前文件叠加。若被粘贴的文件比当前文件的选定部分长,则超出范围的部分将继续被粘贴。选定【Replace】,则被粘贴的声音文件将覆盖源文件。选定【Modulate】则被粘贴的声音文件与当前文件一起调制,即将每采样点的幅值相乘混合后输出。激活【Crossfade】,输入时间(ms),则在粘贴前后粘贴的文件有一定的淡入淡出。(3)在选择被粘贴的文件来源框中,选中【FromClipboard】表示被粘贴的文件来源于剪贴板。【FromwindowsClipboard】表示被粘贴的文件来源于Windows剪贴板。【FromFile】表示被粘贴的文件来源于新文件,单击【SelectFile…】按钮可选择文件。(4)【Looppast】指粘贴文件的次数。在本实验中设置【VolumeL,R】为90,选中【Overlap】,设置【Crossfade】值为50,选中【FromFile】,单击【SelectFile…】选择作为背景音乐的文件【无噪音背景音乐】,【Looppast】为1,单击【OK】完成设置。步骤2:处理结束后,打开【File】/【SaveAs…】,选择好路径,文件名存为【混合音乐】单击【保存】,完成混音处理。4、制作渐弱效果步骤1:打开我们上面编辑的【混合音乐】,执行【Effects】/【Amplitude】命令,打开【Amplify…】对话框,在该对话框中选中【Fade】对话框。(1)在InitialAmplification框中的上下两个滑块分别控制左右声道最初音量放大的倍数,FianlAmplification框中的上下两个滑块则分别控制左右声道最终音量放大的倍数。100%相当于音量没有改变,0%相当于音量被减小至无声。在此,我们选中【混合音乐】中需要制作渐弱效果的一段音频,在【InitialAmplification】中左右声道放大倍数为100%,在【FianlAmplification】中左右声道放大倍数为50%。(2)【LinearFade】单选框是将最初和最终音量放大的倍数呈线性变化,而选中【Log