基于字典编码的数据压缩算法的设计与实现.pptVIP

基于字典编码的数据压缩算法的设计与实现.ppt

  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文档。上传文档
查看更多
基于字典编码的数据压缩算法的设计与实现 答辩人: 指导教师: 数据压缩的提出 信息的时代 解决方法 提高硬件的制造工艺 数据压缩 数据压缩 在一定的数据存储空间要求下,将相对庞大的原始数据,重组为满足前述空间要求的数据集合,使得从该数据集合中恢复出来的信息,能够与原始数据相一致,或者能够获得与原始数据一样的使用品质。 数据压缩理论基础 信息论 熵的提出 一条信息中真正需要编码的信息量 用 0 和 1 组成的二进制数码为含有 n 个符号的某条信息编码,假设符号 Fn 在整条信息中重复出现的概率为 Pn,则该符号的熵也即表示该符号所需的二进制位数为: En = - log2( Pn ) 整条信息的熵也即表示整条信息所需的二进制位数为: E = ∑knEn 信息压缩的极限 数据压缩基本原理 信息存在冗余 用较少的位数表示较频繁出现的符号 技术构成 模型 得到字符或单词在信息中出现的概率 编码 精确地用模型计算出来的位数表示某个符号 压缩 = 模型 + 编码 字典编码基本思想 数据本身包含有重复代码 根据字典创建方式不同分为两类: 隐式字典 查找正在压缩的字符序列是否在以前输入的数据中出现过,然后用已经出现过的字符串替代重复的部分,它的输出仅仅是指向早期出现过的字符串的“指针” 显式字典 从输入的数据中创建一个“短语字典”,编码数据过程中当遇到已经在字典中出现的“短语”时,编码器就输出这个字典中的短语的“索引号” 基于字典压缩算法简介 隐式字典 LZ77 LZSS 显示字典 LZ78 LZW 算法实现与改进 借鉴LZW for GIF 实现起来较容易 实现方法的改进 使用面向对象编程技术 技术的“改进” 零搜索 动态编码长度 实现技术的选择 Delphi Object Pascal语言 面向对象的开发工具,完全可视化 方便快捷RAD工具 实现简介 以类的形式实现 编码类 解码类 使用 生成对象 主要流程 GetBegin Execute GetEnd 类的定义 TLZWEncode = class(TObject) private EncodeTable: array [0..LZWTABLESIZE - 1] of Word; // 编码表 EncodePointer: array [0..LZWMAXCODES - 1] of LongWord; // 经过编码的缓存 ExportBlock: Pointer; // 存放编码后的数据指针(输出缓存块指针) ExportBlockPtr: array of Byte; // 该指针指向 ExportBlock ,用于访问数组 InitBits: Integer; // 压缩数据的起始位数 ClearCode: Integer; // 清除码 EofCode: Integer; // 结束码 PrefixCode: Integer; // 字头码 SuffixCode: Integer; // 字尾码 Encode: Integer; // 压缩编码 RunBits: Integer; // 当前处理位 MaxCodeSize: Integer; // 当前处理最大编码 FBegin: Boolean; // 开始处理标志 FExportSize: Integer; // 输出数据块大小 FExportIndex: Integer; // 输出数据块索引 FExportTotalSize: Integer; // 记录输出缓存块大小 ShiftBits: Integer; // 用于位处理,作临时位 ShiftCode: Integer; // 用于位处理,作临时代码 protected procedure ExportData(AData: Integer); virtual; // 输出数据(虚方法) public function GetExportPointer: Pointer; // 返回输出指针 function GetExportSize: Integer; // 返回输出大小 procedure GetBegin; // 置开始编码标志 procedure GetEnd; // 置结束编码标志 procedure Execute(Data: array of Byte

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档