第4章 无损数据压缩

合集下载

数字图像复习题整理

数字图像复习题整理

第一章1、数字图像处理的目的是什么?1.提升图像的视觉质量以提供人眼主观满意或较满意的效果。

2.提取图像中目标的某些特征,以便于计算机分析或机器人识别。

3.为了存储和传输庞大的图像和视频信息。

4.信息的可视化。

5.信息安全的需要。

2、试简述数字图像处理的特点。

1.处理精度高2.重现性能好3.灵活性高4.图像信号占用频带较宽5.处理费时3、习题1.3数字图像处理主要包括哪些研究内容?1.图像获取与数字化2.图像增强3.图像复原4.图像重建5.图像变换6.图像编码与压缩7.图像分割8.图像融合4、习题1.4图像、视频、图形及动画等视觉信息之间的联系和区别?图形和图像:图形和图像都是多媒体中的可视元素。

图形是指从点、线、面到三维空间的黑白或彩色几何图形,也称为矢量图形。

图像是由称为像素的点构成的矩阵图,也称为位图。

图像和视频:最大区别就是图像是静止的图像信号,而视频则是连续的。

视频和动画:最大区别就是视频是一组真实图像数据连续播放形成而动画则是由计算机模拟的连续图像播放而成。

第二章5、习题2.2色调、色饱和度、亮度的定义是?在表征图像中一点的颜色时,起什么作用?色调表示颜色的种类,用角度来标定,用-180~180或0 0~360度量。

色饱和度表示颜色的深浅,在径向方向上的用离开中心线的距离表示。

用百分比来度量,从0%到完全饱和的100%。

亮度表示颜色的明亮程度,用垂直轴表示。

也通常用百分比度量,从0%(黑)到100%(白)。

6、习题2.6常见的数字图像处理开发工具有哪些?各有什么特点?1.Visual C++2.MATLAB的图形处理工具箱VC++是一种具有高度综合性能的面向对象可视化集成工具,用它开发出来的Win 3 2 程序有着运行速度快、可移植能力强等优点。

VC++所提供的Micr osoft基础类库MFC对大部分与用户设计有关的Wi n 32应用程序接口API 进行了封装,提高了代码的可重用性,大大缩短了应用程序开发周期,降低了开发成本。

哈夫曼树编码译码实验报告

哈夫曼树编码译码实验报告

数据结构课程设计设计题目:哈夫曼树编码译码目录第一章需求分析1第二章设计要求1第三章概要设计2(1)其主要流程图如图1-1所示。

3(2)设计包含的几个方面4第四章详细设计4(1)①哈夫曼树的存储结构描述为:4(2)哈弗曼编码5(3)哈弗曼译码7(4)主函数8(5)显示部分源程序:8第五章调试结果10第六章心得体会12第七章12附录:12第一章需求分析在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。

哈夫曼编码是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。

哈弗曼编码使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。

这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。

哈夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。

树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个叶子对应的字符的编码,这就是哈夫曼编码。

哈弗曼译码输入字符串可以把它编译成二进制代码,输入二进制代码时可以编译成字符串。

第二章设计要求对输入的一串电文字符实现哈夫曼编码,再对哈夫曼编码生成的代码串进行译码,输出电文字符串。

通常我们把数据压缩的过程称为编码,解压缩的过程称为解码。

电报通信是传递文字的二进制码形式的字符串。

但在信息传递时,总希望总长度能尽可能短,即采用最短码。

假设每种字符在电文中出现的次数为Wi,编码长度为Li,电文中有n种字符,则电文编码总长度为∑WiLi。

若将此对应到二叉树上,Wi为叶结点的权,Li为根结点到叶结点的路径长度。

第三章 数据压缩的基本技术

第三章 数据压缩的基本技术

3.2.2信源的相关性与序列熵的关系 平稳序列:序列中的各符号有相同的概率分布; 无记忆序列:序列中的各符号间为统计独立; 联合熵:又称序列熵,随机序列中包含两个符号X、Y, X、Y取自各自的离散信源,则新序列的平均信息量为
独立熵:离散信源X、Y如果统计独立,则H(X)、 H(Y)称为独立熵。 此时有:
逆DCT变换来重构原图像,不会引起明显误差,从而实 现数据压缩。
二维DCT变换
原图像 将基系数绝对值<10的分量置零 (DCT截断量化) 二维逆DCT变换 重构图像
图像清晰 (截断量化误差较小)
(数据压缩程度较小)
对DCT数据的截断量化示意图1
二维DCT变换
原图像 将基系数绝对值<100的分量置零 (DCT截断量化) 二维逆DCT变换 重构图像
•均匀量化(量化步长均匀);
•最小均方误差量化(非均匀量化,可使均方误差量化最
小);
•最小熵量化(使输出熵为最小值); •自适应量化(自动动态选择切换到步长不同的某一组均 匀量化器);
模数转换
模数转换,又称ADC(Analog-to-Digital Converter), 是将连续变化的、平滑的模拟量转化成采用二进制(0,1) 编码的数字量的过程。
i m i a 2 i n 1
其中 ai-取值只有两个数码:0和1 2i-为二进制的权,基数为2 n 为整数位的个数、m 为小数位的个数 如(11011.101)2=1×24 +1×23 +0×22 +1×21 +1×20
+1×2-1+0×2-2 +1×2-3 =(27.625)10
i m i a 10 i n 1
其中: ai-称为数制的系数,表示第i位的数码,十进制 数码为0 ~ 9 十个数; 10 i-表示第i位的权值,10为基数,即采用数码的 个数; n 为整数位的个数、m 为小数位的个数;

教学媒体的理论与实践_0

教学媒体的理论与实践_0

---------------------------------------------------------------最新资料推荐------------------------------------------------------教学媒体的理论与实践第一章 1, 多媒体是什么多媒体是融合两种或两种以上媒体的人-机互动的信息交流和传播媒体。

(包含的定义:信息交流和传播媒体,人-交互媒体,多媒体信息是数字化的,种类繁多:文字,声音,图像,动画,图形,电视图像。

)压缩:取消或减少冗余数据的过程。

编码:用代码替换文字,符号或数据的过程。

两种编码类型:1 )有损压缩:用压缩后的数据进行重构,重构后的数据与原来的有所不同,但不影响人对原始资料表达信息造成误解的数据压缩技术。

2)无损压缩:压缩后的数据进行重构,重构后的数据与原来的完全相同的数据压缩技术。

(例如:磁盘文件压缩。

特点:1 / 15把普通文件压缩到数据原来的 1/2-1/4。

常用的无损压缩算法:哈夫曼编码, LZW 算法。

)编码:1)熵编码:不考虑数据源的无损数据压缩技术。

(其核心思想按照符号出现的概率大小给符号分配长度合适的代码,常用的分配较短,不常用的分配较长。

最常见的是霍夫曼编码和算术编码。

) 2) 源编码:考虑数据特性的编码的数据压缩技术。

编码时考虑信号源的特性和信号内容,也称基于语义的编码。

3) 混合编码:组合源编码和熵编码的数据有损压缩技术。

影视,图像,声音几乎都采用这种编码方式。

压缩与编码:压缩不一定都用编码,编码可以压缩数据(也不一定可以都压缩数据)第二章算法理解居多,名词解释较少。

你是否同意某个事件的信息量就是某个事件的熵的看法?不同意。

信息量是具有确定概率事件的信息的定量度量,熵定义为信息量的平均值,也称平均信息量。

---------------------------------------------------------------最新资料推荐------------------------------------------------------ 编码:香农-范诺编码。

《大学计算机基础》(第三版)上海交通大学出版社 课后习题答案

《大学计算机基础》(第三版)上海交通大学出版社 课后习题答案

大学计算机基础课后题答案第1章计算机基础知识一、选择题1.B2.B3.B4.B5.B6.B7.C8.D 9.B 10.D 11.C 12.A 13.B 14.D二、填空题1、1946 美国ENIAC2、4 电子管晶体管集成电路超大规模集成电路3、超导计算机量子计算机光子计算机生物计算机神经计算机4、专用计算机通用计算机5、信息基础技术信息系统技术信息应用技术6、运算器控制器存储器输入设备输出设备7、7445 682 3755 30088、0292 1717 A2FC B1B1 B7D9 E4AE9、500010、72 128三、问答题1、运算速度快计算精度高具有记忆和逻辑判断能力具有自动运行能力可靠性高2、巨型机大型机小型机微型机服务器工作站3、数据计算信息处理实时控制计算机辅助设计人工智能办公自动化通信与网络电子商务家庭生活娱乐4、计算机的工作过程就是执行程序的过程,而执行程序又归结为逐条执行指令:(1)取出指令:从存储器中取出要执行的指令送到CPU内部的指令寄存器暂存;(2)分析指令:把保存在指令寄存器中的指令送到指令译码器,译出该指令对应的操作;(3)执行指令:根据指令译码器向各个部件发出相应控制信号,完成指令规定的操作;(4)一条指令执行完成后,程序计数器加1或将转移地址码送入程序计数器,然后回到(1)。

为执行下一条指令做好准备,即形成下一条指令地址。

5、计算机自身电器的特性,电子元件一般有两个稳定状态,且二进制规则简单,运算方便。

四、操作题1、(111011)2=(59)10=(73)8=(3B)16(11001011)2=(203)10=(313)8=(CB)16(11010.1101)2=(26.8125)10=(32.64)16=(1A.D)162、(176)8=(1111110)2(51.32)8=(101001.011010)2(0.23)8=(0.010011)23、(85E)16=(100001011110)2(387.15)16=(001110000111.00010101)24、(79)=(01001111)原码=(01001111)反码=(01001111)补码(-43)=(10101011)原码=(11010100)反码=(11010101)补码第2章计算机硬件及软件系统一、选择题1.A2.D3.D4.C5.B6.C7.C8.A9.D 10.B 11.D 12.C 13.C 14.B 15.D 16.A 17.C 18.D 19.D 20.D二、填空题1、系统应用2、运算控制单元存储器输出/输入设备3、数据库管理系统4、1000赫兹5、ROM RAM Cache6.、RAM 数据丢失7、U盘的文件管理系统中密码8、同一部件内部连接同一台计算机各个部件主机与外设9、数据总线地址总线控制总线10、32 6411、图形加速接口12、CPU与内存内存13、控制器运算器14、CPU与内存15、指令数据16、CPU与内存及显存间数据的交换第3章操作系统基础一、选择题1.C2.B3.A4.D5.A6.D7.B8.B 9.B 10.A 11.B 12.B 13.A 14.B二、填充题1、文件管理2、并发性3、EXIT4、Am*.wav5、开始6、Alt+PrintScreen7、PrintScreen8、Ctrl+Z9、全选10、添加/删除程序11、输入法三、问答题1、管理和协调计算机各部件之间的资源分配与运行,它是计算机所有硬件的大管家,是用户与计算机的接口。

2-1 数据压缩编码基本理论

2-1 数据压缩编码基本理论

3、算术编码
原理:根据信源不同符号概率的不同,分别 对应[0,1)中不同的区间,每个符号用对 应区间内的任意一个实数表示,这个实数 就是该符号对应的码字。 特点:只有算术运算,无论原数据位多长, 每次编码算法只处理一个数据符号,因此 编码效率高。
符号
00
01
10
11
例1
概率
初始区间
0.1
[0, 0.1)
3、算术编码
二、无损编码(统计编码、熵编码)
1、行程编码(run length code,RLC也叫游程编码) 压缩原始数据中相同的字节序列
例:原始字符串RTTTTTTTTABBBCDIU
行程编码将字符串变换为: R#8TABBBCDIU
将原来17个字符压缩为12个字符。
2、霍夫曼(Huffman)编码
自适应算术编码特点
自适应算术编码可以在编码过程中根据符 号出现的频繁程度,动态地修改分布概率, 因此不需要在编码前求出信源概率,但要 求编码器和解码器使用的概率模型一致。
三、有损编码
1、预测编码 2、子带编码
3、变换编码
4、矢量量化编码
5、其它编码
三、有损编码
1、预测编码
脉冲编码调制(pulse code modulation,PCM)
率;
(3)重复(1)和(2),直到概率和达到1为止; (4)将最后合并的元素作为树根,每个原始信 源作为树叶,构成一个编码二叉树;从树根到 树叶,对合并的两个分支分别赋予1和0;
(5)对每一符号写出从树根到信源点1、0序列
即为该符号的编码。
复习
数据可压缩的原因 数据压缩的种类 数据压缩的技术指标 无损压缩的常见技术:行程编码、霍夫曼 编码、算术编码

现代教育技术基础 第四章 数字化教学资源的获取与利用

现代教育技术基础 第四章  数字化教学资源的获取与利用
1.灰度模式
灰度模式的图像没有彩色的信息只有灰度信息,此种模式的图像 是由256级的灰度来表示的,灰度模式的取值范围为0—250像素。 任何一种彩色模式的图像在转换成为灰度模式时都将失去所有的 彩色信息。
2.位图模式
位图模式是由白色和黑色两种颜色组成的,所以也被称为黑白图 像,位图图像由1位像素组成,所以其文件最小,所占的磁盘空 间也最少。只有灰度模式的图像才可以直接和位图模式的图像相 互转换。
(6)使用数码相机拍摄 (7)视频帧捕获
利用超级解霸等软件可以将视频图像进行单帧捕获,以静止图像 形式保存起来。
(8)利用电视机、摄像机捕获图像
4.2 数字图像的获取与利用
四、图像格式转换
不同软件支持的文件格式不同,有时就要进行文件格式 之间的转换,可以使用Windows自带的“画图”工具实 现一些常用的图像文件格式间的转换,具体步骤如下:
二、数字图像的类型
图形图像是教学信息中最常见的信息表达形式之一,数 字图像分为两种类型:位图和矢量图。
位图是以点或像素的方式来记录图像的,像素是构成
位图图像的基本元素,由这些单个像素相结合就形成 了图像。
矢量图是用一组绘图指令来描述图形的要素,以数学
方式来记录图像,在数学定义为一系列由线连接的点.
矢量文件中的图形元素称为对象。
二、数字化教学资源管理
2.数字化教学资源的管理形式
对于每一个素材,都具备相关素材的显示功能 评论录入及显示功能 支持多文件压缩下载功能 提供内容传输管理 支持基于标准互换格式的资源导入导出功能 提供与第三方应用程序的接口
4.2 数字图像的获取与利用
一、像素和分辨率
1.像素 像素是组成图像的最小单位,位图图像是由许多点组 成的,每一个点就是一个像素,而且每一个点只显示 一种颜色。

基于多线程的文件压缩与解压作业指导书

基于多线程的文件压缩与解压作业指导书

基于多线程的文件压缩与解压作业指导书第1章引言 (3)1.1 文件压缩与解压概述 (3)1.2 多线程技术基础 (3)1.3 压缩与解压算法简介 (4)第2章环境准备 (4)2.1 开发工具与库 (4)2.1.1 开发工具 (4)2.1.2 开发库 (4)2.2 硬件与操作系统要求 (5)2.2.1 硬件要求 (5)2.2.2 操作系统要求 (5)2.3 多线程编程基础环境搭建 (5)2.3.1 Windows环境 (5)2.3.2 Linux环境 (5)2.3.3 Mac OS环境 (5)第3章文件压缩算法 (6)3.1 常用压缩算法原理 (6)3.1.1 Huffman编码 (6)3.1.2 LempelZivWelch(LZW)编码 (6)3.1.3 Deflate压缩算法 (6)3.1.4 BWT(BurrowsWheeler Transform)算法 (6)3.2 压缩算法的选择与实现 (6)3.2.1 压缩算法的选择 (6)3.2.2 压缩算法的实现 (7)3.3 多线程压缩策略 (7)3.3.1 并行处理 (7)3.3.2 线程池 (7)3.3.3 任务分解 (7)3.3.4 同步与通信 (7)第4章文件解压算法 (7)4.1 常用解压算法原理 (7)4.1.1 DEFLATE算法 (7)4.1.2 LZ77算法 (8)4.1.3 LZMA算法 (8)4.2 解压算法的选择与实现 (8)4.2.1 压缩率和解压速度 (8)4.2.2 系统资源占用 (8)4.2.3 兼容性 (8)4.3 多线程解压策略 (8)4.3.1 任务划分 (9)4.3.2 线程创建与管理 (9)4.3.4 功能优化 (9)第5章多线程编程基础 (9)5.1 线程的创建与管理 (9)5.1.1 线程的概念 (9)5.1.2 线程的创建 (9)5.1.3 线程的生命周期 (9)5.1.4 线程的管理 (10)5.2 线程同步机制 (10)5.2.1 线程同步的概念 (10)5.2.2 同步机制 (10)5.2.3 死锁与饥饿 (10)5.3 线程池的使用与优化 (10)5.3.1 线程池的概念 (10)5.3.2 线程池的创建与使用 (10)5.3.3 线程池的优化 (11)第6章文件压缩实现 (11)6.1 压缩模块设计 (11)6.1.1 模块概述 (11)6.1.2 压缩算法 (11)6.1.3 压缩流程 (11)6.2 多线程压缩实现 (11)6.2.1 多线程概述 (11)6.2.2 线程管理 (12)6.2.3 压缩任务分配 (12)6.3 功能优化与测试 (12)6.3.1 功能优化 (12)6.3.2 测试 (12)第7章文件解压实现 (13)7.1 解压模块设计 (13)7.1.1 解压算法选择 (13)7.1.2 模块结构设计 (13)7.2 多线程解压实现 (13)7.2.1 线程划分 (13)7.2.2 线程同步 (13)7.3 功能优化与测试 (13)7.3.1 功能优化 (14)7.3.2 测试 (14)第8章文件压缩与解压功能分析 (14)8.1 功能评价指标 (14)8.1.1 压缩率 (14)8.1.2 压缩速度 (14)8.1.3 解压速度 (15)8.1.4 CPU占用率 (15)8.1.6 稳定性 (15)8.2 压缩与解压功能测试 (15)8.2.1 测试环境 (15)8.2.2 测试数据集 (15)8.2.3 测试方法 (15)8.3 功能瓶颈分析与优化 (15)8.3.1 功能瓶颈分析 (15)8.3.2 功能优化策略 (16)第9章容错处理与异常处理 (16)9.1 压缩与解压过程中的异常处理 (16)9.1.1 异常类型 (16)9.1.2 异常处理方法 (16)9.2 容错机制的实现 (17)9.2.1 检查点机制 (17)9.2.2 重试机制 (17)9.2.3 数据备份与恢复 (17)9.3 多线程环境下的异常处理策略 (17)9.3.1 线程独立异常处理 (17)9.3.2 使用线程池管理线程 (17)9.3.3 使用共享资源锁 (17)9.3.4 监控线程状态 (17)9.3.5 使用信号量控制线程同步 (17)第10章项目总结与展望 (18)10.1 项目总结 (18)10.2 未来发展方向 (18)10.3 拓展阅读与参考文献 (18)第1章引言1.1 文件压缩与解压概述信息技术的飞速发展,数据存储和传输的需求日益增长。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章 无损数据压缩 数据压缩可分成两种类型,一种叫做无损压缩,另一种叫做有损压缩。 无损压缩是指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据完全相同;无损压缩用于要求重构的信号与原始信号完全一致的场合。一个很常见的例子是磁盘文件的压缩。根据目前的技术水平,无损压缩算法一般可以把普通文件的数据压缩到原来的1/2~1/4。一些常用的无损压缩算法有霍夫曼(Huffman)算法和LZW(Lenpel-Ziv & Welch)压缩算法。

有损压缩是指使用压缩后的数据进行重构,重构后的数据与原来的数据有所不同,但不影响人对原始资料表达的信息造成误解。有损压缩适用于重构信号不一定非要和原始信号完全相同的场合。例如,图像和声音的压缩就可以采用有损压缩,因为其中包含的数据往往多于我们的视觉系统和听觉系统所能接收的信息,丢掉一些数据而不至于对声音或者图像所表达的意思产生误解,但可大大提高压缩比。

本章主要介绍目前用得最多和技术最成熟的无损压缩编码技术,包括包含霍夫曼编码、算术编码、RLE编码和词典编码。对于不打算开发压缩技术和编写压缩程序的读者可不必深究编译码的详细过程。

4.1 香农-范诺与霍夫曼编码

香农-范诺编码算法需要用到下面两个基本概念: 1. Entropy(熵)的概念 1. 熵是信息量的度量方法,它表示某一事件出现的消息越多,事件发生的可能性就越小,数学上就是概率越小。

2. 某个事件的信息量用表示 , 其中为第个事件的概率,

2. 信源S的熵的定义 按照仙农(Shannon)的理论,信源S的熵定义为

其中是符号在S中出现的概率;表示包含在中的信息量,也就是编码所需要的位数。例如,一幅用256级灰度表示的图像,如果每一个象素点灰度的概率均为

,编码每一个象素点就需要8位。 [例4.1] 有一幅40个象素组成的灰度图像,灰度共有5级,分别用符号A、B、C、D和E表示,40个象素中出现灰度A的象素数有15个,出现灰度B的象素数有7个,出现灰度C的象素数有7个等等,如表4-01所示。如果用3个位表示5个等级的灰度值,也就是每个象素用3位表示,编码这幅图像总共需要120位。

表4-01 符号在图像中出现的数目 符 号 出现的次数 15 7 7 6 5 按照仙农理论,这幅图像的熵为

H(S) = (15/40)  (40/15) + (7/40)  (40/7) +    + (5/40)  (40/5)

=2.196

这就是说每个符号用2.196位表示,40个象素需用87.84位。 最早阐述和实现这种编码的是Shannon(1948年)和Fano(1949年),因此被称为仙农-范诺(Shannon- Fano)算法。这种方法采用从上到下的方法进行编码。首先按照符号出现的频度

或概率排序,例如,,,,和,如表4-02所示。然后使用递归方法分成两个部分,每一部分具有近似相同的次数,如图4-01所示。按照这种方法进行编码得到的总位数为91。压缩比约为1.3 : 1。 表4-02 Shannon-Fano算法举例表

符号 出现的次数() 分配的代码 需要的位数

A 15 (0.375) 1.4150 00 30

B 7 (0.175) 2.5145 01 14

C 7 (0.175) 2.5145 10 14

D 6 (0.150) 2.7369 110 18

E 5 (0.125) 3.0000 111 15

图4-01 香农-范诺算法编码举例 4.1.2 霍夫曼编码 霍夫曼(Huffman)在1952年提出了另一种编码方法,即从下到上的编码方法。现仍以一个具体的例子说明它的编码步骤: 1. 初始化,根据符号概率的大小按由大到小顺序对符号进行排序,如表4-03和图4-02所示。 2. 把概率最小的两个符号组成一个节点,如图4-02中的D和E组成节点P1。 3. 重复步骤2,得到节点P2、P3和P4,形成一棵“树”,其中的P4称为根节点。 4. 从根节点P4开始到相应于每个符号的“树叶”,从上到下标上“0”(上枝)或者“1”(下枝),至于哪个为“1”哪个为“0”则无关紧要,最后的结果仅仅是分配的代码不同,而代码的平均长度是相同的。 5. 从根节点P4开始顺着树枝到每个叶子分别写出每个符号的代码,如表4-03所示。 6. 按照仙农理论,这幅图像的熵为

H(S) = (15/39)  (39/15) + (7/39)  (39/7) +    + (5/39)  (39/5)

= 2.1859

压缩比1.37:1。 表4-03 霍夫曼编码举例

符号 出现的次数 log2(1/pi) 分配的代码 需要的位数 A 15(0.3846) 1.38 0 15

B 7(0.1795) 2.48 100 21

C 6(0.1538) 2.70 101 18

D 6(0.1538) 2.70 110 18

E 5(0.1282) 2.96 111 15

图4-02 霍夫曼编码方法 霍夫曼码的码长虽然是可变的,但却不需要另外附加同步代码。例如,码串中的第1位为0,那末肯定是符号A,因为表示其他符号的代码没有一个是以0开始的,因此下一位就表示下一个符号代码的第1位。同样,如果出现“110”,那么它就代表符号D。如果事先编写出一本解释各种代码意义的“词典”,即码簿,那么就可以根据码簿一个码一个码地依次进行译码。 采用霍夫曼编码时有两个问题值得注意:①霍夫曼码没有错误保护功能,在译码时,如果码串中没有错误,那么就能一个接一个地正确译出代码。但如果码串中有错误,哪仅是1位出现错误,不但这个码本身译错,更糟糕的是一错一大串,全乱了套,这种现象称为错误传播(error propagation)。计算机对这种错误也无能为力,说不出错在哪里,更谈不上去纠正它。②霍夫曼码是可变长度码,因此很难随意查找或调用压缩文件中间的内容,然后再译码,这就需要在存储代码之前加以考虑。尽管如此,霍夫曼码还是得到广泛应用。 与仙农-范诺编码相比,这两种方法都自含同步码,在编码之后的码串中都不须要另外添加标记符号,即在译码时分割符号的特殊代码。此外,霍夫曼编码方法的编码效率比仙农-范诺编码效率高一些。请读者自行验证。 4.2 算术编码

算术编码在图像数据压缩标准(如JPEG,JBIG)中扮演了重要的角色。在算术编码中,消息用0到1之间的实数进行编码,算术编码用到两个基本的参数:符号的概率和它的编码间隔。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间。编码过程中的间隔决定了符号压缩后的输出。算术编码器的编码过程可用下面的例子加以解释。

[例4.2] 假设信源符号为{00, 01, 10, 11},这些符号的概率分别为{ 0.1, 0.4, 0.2, 0.3 },根据这些概率可把间隔[0, 1)分成4个子间隔:[0, 0.1), [0.1, 0.5), [0.5, 0.7), [0.7,

1),其中表示半开放间隔,即包含不包含。上面的信息可综合在表4-04中。

表4-04 信源符号,概率和初始编码间隔 符号 00 01 10 11 概率 0.1 0.4 0.2 0.3 初始编码间隔 [0, 0.1) [0.1, 0.5) [0.5, 0.7) [0.7, 1)

如果二进制消息序列的输入为:10 00 11 00 10 11 01。编码时首先输入的符号是10,找到它的编码范围是[0.5, 0.7)。由于消息中第二个符号00的编码范围是[0, 0.1),因此它的间隔就取[0.5, 0.7)的第一个十分之一作为新间隔[0.5, 0.52)。依此类推,编码第3个符号11时取新间隔为[0.514, 0.52),编码第4个符号00时,取新间隔为[0.514, 0.5146),„ 。消息的编码输出可以是最后一个间隔中的任意数。整个编码过程如图4-03所示。 图4-03 算术编码过程举例 这个例子的编码和译码的全过程分别表示在表4-05和表4-06中。根据上面所举的例子,可把计算过程总结如下。

考虑一个有M个符号的字符表集,假设概率,而。输入符号用表示,第个子间隔的范围用表示。其中,和,表示间隔左边界的值, 表示间隔右边界的值,表示间隔长度。编码步骤如下: 步骤1:首先在1和0之间给每个符号分配一个初始子间隔,子间隔的长度等于它的概率,

初始子间隔的范围用[,)表示。令,和。 步骤2:L和R的二进制表达式分别表示为:

和 其中和等于“1”或者“0”。 比较和:①如果,不发送任何数据,转到步骤3;②如果,就发送二进制符号。

比较和:①如果,不发送任何数据,转到步骤3;②如果,就发送二进制符号。 „ 这种比较一直进行到两个符号不相同为止,然后进入步骤3,

步骤3:加1,读下一个符号。假设第个输入符号为,按照以前的步骤把这个间隔分成如下所示的子间隔:

令,和,然后转到步骤2。 表4-05 编码过程 步骤 输入 符号 编码间隔 编码判决 1 10 [0.5, 0.7) 符号的间隔范围[0.5, 0.7) 2 00 [0.5, 0.52) [0.5, 0.7)间隔的第一个1/10 3 11 [0.514, 0.52) [0.5, 0.52)间隔的最后一个1/10 4 00 [0.514, 0.5146) [0.514, 0.52)间隔的第一个1/10 5 10 [0.5143, 0.51442) [0.514, 0.5146)间隔的第五个1/10开始,二个1/10

6 11 [0.514384, 0.51442) [0.5143, 0.51442)间隔的最后3个1/10

7 01 [0.5143836, 0.514402) [0.514384, 0.51442)间隔的4个1/10,从第1个1/10开始

8 从[0.5143876, 0.514402中选择一个数作为输出:0.5143876

表4-06 译码过程

相关文档
最新文档