视音频信号处理实验1

上传人:子 文档编号:42773381 上传时间:2018-06-03 格式:DOC 页数:5 大小:222.50KB
返回 下载 相关 举报
视音频信号处理实验1_第1页
第1页 / 共5页
视音频信号处理实验1_第2页
第2页 / 共5页
视音频信号处理实验1_第3页
第3页 / 共5页
视音频信号处理实验1_第4页
第4页 / 共5页
视音频信号处理实验1_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《视音频信号处理实验1》由会员分享,可在线阅读,更多相关《视音频信号处理实验1(5页珍藏版)》请在金锄头文库上搜索。

1、任课教师:马文娟视音频信号处理视音频信号处理(实验名称:(实验名称:多媒体数据的压缩)实实验验报报告告学号:学号:E10700104姓名:黄芳姓名:黄芳班级:班级:10 数媒(数媒(1)班)班一、一、 实验目的实验目的学习熵编码的编码原理,测试三种熵编码的编码效率,比较三种编码算法 的压缩比二、二、 实验内容实验内容1. 研究和分析“熵编码源程序” ,用“哈夫曼编码” 、 “算术编码” 、 “游程 编码”此程序对“lena256.raw”(图像文件)进行压缩处理,并比较三种编码算法 的压缩比。 2. 设计和编写游程编码算法对黑白 bmp 图像文件进行游程编码,并给出 游程编码的压缩比。黑白 b

2、mp 图像文件中要包括自己的名字、学号等图案。 3. 根据教材多媒体技术基础中的 2.2.3 部分算术编码算法的原理,编 写算术编码程序,并给出对序列 a,c,b,d 进行编码后的概率区间。符号a,b,c,d对 应的概率分布为0.1,0.4,0.3,0.2。三、三、 实验原理实验原理多媒体具有数据量大和传输速率高的特点,使用压缩技术可有效降低对存 储器和传输带宽的要求。数据压缩是取消或减少冗余数据的过程,而编码是用 代码替换文字、符号或数据的过程。 数据可被压缩的依据是数据本身存在冗余。所有无损压缩算法的共同点都 是利用数据本身的冗余性,其差别主要体现在压缩比上,压缩比越高表示冗余 数据消除得

3、越多,压缩比的上限值有数据集的熵限定。四、四、 实验步骤实验步骤1. 运行熵编码源程序,并用“哈夫曼编码” 、 “算术编码” 、 “游程编码”3 种编码算法分别对“lena256.raw”(图像文件)进行压缩处理,得到这三种编码算 法的压缩比如下: 哈夫曼编码:64/49=1.31 算术编码:64/45=1.42 游程编码:64/102=0.63 从游程编码的压缩比可以看出,图像数据经压缩算法处理后并不一定都比 原来的数据量小,反而可能使原来的图像数据变得更大。 2. 设计和编写游程编码算法对黑白 bmp 图像文件进行游程编码: unsigned char image256256; unsig

4、ned char buf65535; int width=256,height=256; void runlength_en(FILE *ifile,FILE *ofile) int i,j,k,sign; int tmp,num; for(i=0;iheight;i+) fread( fclose(ifile); sign=0;k=0;for(i=0;iheight;i+) for(j=0;jwidth;j+) if(sign=0) tmp=imageij; sign=1; num=1; else if(tmp=imageij) if(num256) num+; else bufk=tmp;

5、 bufk+1=num; k=k+2; tmp=imageij; sign=1; num=1; else bufk=tmp; bufk+1=num; k=k+2; tmp=imageij; sign=1; num=1; fwrite( fwrite( fputc(256,ofile); fwrite( fwrite(buf,sizeof(unsigned char),k,ofile); fclose(ofile); 编码后,所得图像的大小为 117KB,所以游程编码的压缩比为 256/117=2.19 所使用的 BMP 图像为:3. 算术编码: void ac_encoder() char t

6、emp4; int i=0; float c=0,a=1.0,end; for(i=0;i4;i+) scanf(“%c“, getchar(); switch(tempi) case a: end=c+a; c+=a*(0.0); a=a*(0.1); break; case b: end=c+a; c+=a*(0.1); a=a*(0.4); break; case c: end=c+a; c+=a*(0.5); a=a*(0.3); break; case d: end=c+a; c+=a*(0.8); a=a*(0.2); break; default: break; printf(“序列%c,%c,%c,%c的概率区间为%f,%f)n“,temp0, temp1,temp2,temp3,c,end); 结果截图:五、五、 实验心得实验心得这次的实验,看似很简单,其实里面涉及的内容还是很多的,虽然要完成实验报告很简单,但要完全看懂程序代码我还是很吃力。但不管怎么说,我还是掌握了熵编码的编 码原理,同时对哈夫曼、算术和游程三种熵编码的核心思想和编码效率也有了 更进一步的认识。可能是有关 MFC 框架编程方面的知识还比较欠缺,所以上 实验课时没有完成实验题目,而是自己下课后在寝室做完的,所以深感 MFC 编程还有待提高。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号