收藏 分享(赏)

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

上传人:HR专家 文档编号:6860144 上传时间:2019-04-25 格式:PPT 页数:15 大小:187.50KB
下载 相关 举报
基于字典编码的数据压缩算法的设计与实现.ppt_第1页
第1页 / 共15页
基于字典编码的数据压缩算法的设计与实现.ppt_第2页
第2页 / 共15页
基于字典编码的数据压缩算法的设计与实现.ppt_第3页
第3页 / 共15页
基于字典编码的数据压缩算法的设计与实现.ppt_第4页
第4页 / 共15页
基于字典编码的数据压缩算法的设计与实现.ppt_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、2019/4/25,1,基于字典编码的数据压缩算法的设计与实现,答辩人:指导教师:,2019/4/25,2,数据压缩的提出,信息的时代 解决方法 提高硬件的制造工艺 数据压缩 数据压缩在一定的数据存储空间要求下,将相对庞大的原始数据,重组为满足前述空间要求的数据集合,使得从该数据集合中恢复出来的信息,能够与原始数据相一致,或者能够获得与原始数据一样的使用品质。,2019/4/25,3,数据压缩理论基础,信息论 熵的提出一条信息中真正需要编码的信息量用 0 和 1 组成的二进制数码为含有 n 个符号的某条信息编码,假设符号 Fn 在整条信息中重复出现的概率为 Pn,则该符号的熵也即表示该符号所需

2、的二进制位数为:En = - log2( Pn )整条信息的熵也即表示整条信息所需的二进制位数为: E = knEn 信息压缩的极限,2019/4/25,4,数据压缩基本原理,信息存在冗余 用较少的位数表示较频繁出现的符号技术构成 模型 得到字符或单词在信息中出现的概率 编码 精确地用模型计算出来的位数表示某个符号压缩 = 模型 + 编码,2019/4/25,5,字典编码基本思想,数据本身包含有重复代码 根据字典创建方式不同分为两类: 隐式字典查找正在压缩的字符序列是否在以前输入的数据中出现过,然后用已经出现过的字符串替代重复的部分,它的输出仅仅是指向早期出现过的字符串的“指针” 显式字典从输

3、入的数据中创建一个“短语字典”,编码数据过程中当遇到已经在字典中出现的“短语”时,编码器就输出这个字典中的短语的“索引号”,2019/4/25,6,基于字典压缩算法简介,隐式字典 显示字典 ,2019/4/25,7,算法实现与改进,借鉴LZW for GIF 实现起来较容易实现方法的改进 使用面向对象编程技术技术的“改进” 零搜索动态编码长度,2019/4/25,8,实现技术的选择,Delphi Object Pascal语言面向对象的开发工具,完全可视化方便快捷RAD工具,2019/4/25,9,实现简介,以类的形式实现 编码类 解码类 使用 生成对象 主要流程 GetBegin Execu

4、te GetEnd,2019/4/25,10,类的定义,TLZWEncode = class(TObject)privateEncodeTable: array 0LZWTABLESIZE - 1 of Word; / 编码表EncodePointer: array 0LZWMAXCODES - 1 of LongWord; / 经过编码的缓存ExportBlock: Pointer; / 存放编码后的数据指针(输出缓存块指针)ExportBlockPtr: array of Byte; / 该指针指向 ExportBlock ,用于访问数组InitBits: Integer; / 压缩数据的

5、起始位数ClearCode: Integer; / 清除码EofCode: Integer; / 结束码PrefixCode: Integer; / 字头码SuffixCode: Integer; / 字尾码Encode: Integer; / 压缩编码RunBits: Integer; / 当前处理位MaxCodeSize: Integer; / 当前处理最大编码FBegin: Boolean; / 开始处理标志FExportSize: Integer; / 输出数据块大小FExportIndex: Integer; / 输出数据块索引FExportTotalSize: Integer; /

6、 记录输出缓存块大小ShiftBits: Integer; / 用于位处理,作临时位ShiftCode: Integer; / 用于位处理,作临时代码protectedprocedure ExportData(AData: Integer); virtual; / 输出数据(虚方法)publicfunction GetExportPointer: Pointer; / 返回输出指针function GetExportSize: Integer; / 返回输出大小procedure GetBegin; / 置开始编码标志procedure GetEnd; / 置结束编码标志procedure E

7、xecute(Data: array of Byte; DataSize: Integer); virtual; / 执行编码过程(虚方法)constructor Create;destructor Destroy; override;end;,2019/4/25,11,类的定义,TLZWUnencode = class(TObject)privateInitBits: Integer; / 压缩数据的起始位数ClearCode: Integer; / 清除码EofCode: Integer; / 结束码PrefixCode: Integer; / 字头码SuffixCode: Integer

8、; / 字尾码Encode: Integer; / 压缩编码RunBits: Integer; / 当前处理位MaxCodeSize: Integer; / 当前处理最大编码ExportBlock: Pointer; / 存放编码后的数据指针(输出缓存块指针)ExportBlockPtr: array of Byte; / 该指针指向 ExportBlock ,用于访问数组StackIndex: Integer; / 栈索引StackTable: array 0LZWSTACKBUFFERSIZE - 1 of Byte; / 栈表PrefixTable: array 0LZWMAXCODES

9、 - 1 of Word; / 字头表SuffixTable: array 0LZWMAXCODES - 1 of Byte; / 字尾表FExportSize: Integer; / 输出数据块大小FExportIndex: Integer; / 输出数据块索引FExportTotalSize: Integer; / 记录输出缓存块大小ShiftBits: Integer; / 用于位处理,作临时位ShiftCode: Integer; / 用于位处理,作临时代码protectedprocedure ExportData(AData: Integer); virtual; / 输出数据(虚方

10、法)publicfunction GetExportPointer: Pointer; / 返回输出指针function GetExportSize: Integer; / 返回输出大小procedure GetBegin; / 开始解码(分配输出内存空间)procedure GetEnd; / 结束解码(释放输出内存空间)procedure Execute(Data: array of Byte; DataSize: Integer); virtual; / 执行解码过程(虚方法)constructor Create;destructor Destroy; override;end;,2019/4/25,12,编码流程,2019/4/25,13,解码流程:,2019/4/25,14,收获与体会,数据压缩基本知识 字典编码原理与技术 PASCAL语言的学习 基本掌握elphi开发工具,2019/4/25,15,感谢指导老师的悉心指导 请各位老师批评指正,答辩人:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报