多媒体数据压缩实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

文档来源为

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

多媒体数据压缩实验报告

篇一:多媒体实验报告_文件压缩课程设计报告

实验题目:文件压缩程序

姓名:指导教师:学院: 计算机学院专业:计算机科学与技术学号:

提交报告时间:20年 月 日四川大学

一,需求分析:

有两种形式的重复存在于计算机数据中,文件压缩程序就是对这两种重复进行了压

缩。

一种是短语形式的重复,即三个字节以上的重复,对于这种重复,压缩程序用两个数字:1.重复位置距当前压缩位置的距离;2.重复的长度,来表示这个重复,假设这两个数字各占一个字节,于是数据便得到了压缩。

第二种重复为单字节的重复,一个字节只有256种可能

的取值,所以这种重复是必然的。给256种字节取值重新编码,使出现较多的字节使用较短的编码,出现较少的字节使用较长的编码,这样一来,变短的字节相对于变长的字节更多,文件的总长度就会减少,并且,字节使用比例越不均

匀,压缩比例就越大。

编码式压缩必须在短语式压缩之后进行,因为编码式压缩后,原先八位二进制值的字节就被破坏了,这样文件中短语式重复的倾向也会被破坏(除非先进行解码)。另外,短语式压缩后的结果:那些剩下的未被匹配的单、双字节和得到匹配的距离、长度值仍然具有取值分布不均匀性,因此,两种压缩方式的顺序不能变。

本程序设计只做了编码式压缩,采用Huffman编码进行压缩和解压缩。Huffman编码是一种可变长编码方式,是二叉树的一种特殊转化形式。编码的原理是:将使用次数多的代码转换成长度较短的代码,而使用次数少的可以使用较长的编码,并且保持编码的唯一可解性。根据ascii码文件中各ascii字符出现的频率情况创建Huffman树,再将各字符对应的哈夫曼编码写入文件中。同时,亦可根据对应的哈夫曼树,将哈夫曼编码文件解压成字符文件.

一、概要设计:压缩过程的实现:

压缩过程的流程是清晰而简单的:1.创建Huffman树2.打开需压缩文件

3.将需压缩文件中的每个ascii码对应的huffman编码按bit单位输出生成压缩文件压缩结束。

其中,步骤1和步骤3是压缩过程的关键。

?步骤1:这里所要做工作是得到Huffman数中各叶子结点字符出现的频率并进行创建.统计字符出现的频率可以有很多方法:如每次创建前扫描被创建的文件,“实时”的生成各字符的出现频率;或者是创建前即做好统计.这里采用的是前一种方法。

?步骤3:将需压缩文件中的每个ascii码对应的huffman编码按bit单位输出.这是本压缩程序中最关键的部分:这里涉及“转换”和“输出”两个关键步骤:“转换”部分大可不必去通过遍历Huffman树来找到每个字符对应的哈夫曼编码,可以将每个Huffman码值及其对应的ascii码存放于如下所示的结构体中:

解压缩过程的实现:

如果说,压缩的过程可以通过查找codeList来加速实现的话,而解压缩则必须通过查找huffman树才能加以实现.查找的过程是简单的,可以根据

huffman树的性质来做,当haffCode的当前bit位为

0时,则向左枝展开搜索;当前bit位为1时,则向右枝展开搜索,当遇到叶子结点时,则输出haffCode对应的asciiCode。

二、详细设计:

核心算法源程序:Huffman树建立源程序:

//-------------------------------------------------

------------//huffmantree.h//霍夫曼树#ifndefHUFFMANTREE#defineHUFFMANTREE#defineDefaultsize300

#include #includebintree.h#includeheap.hclassCode{

public:

intcode; Code*link;

Code(intc=0,Code*l=NULL):code(c),link(l){};};classCharNameNode{

public:

unsignedcharcharname; //要这样才行 Code*link;CharNameNode(unsigned char c=0,Code

*l=NULL):charname(c),link(l){};};template

classHuffmanTree:publicBinaryTree{public:

intkey;

HuffmanTree(){};

HuffmanTr

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档