文档介绍:实验三算术编码
一、 实验目的
进一步学****C++语言概念和熟悉/C编程环境。
学****算术编码基本流程学会调试算术编码程序。
根据给出资料,自学自适应阶算术编、解码方法。
二、 实验内容与原理
(一)实验原理:
算术编码基本原理
,甚至连一个十进 制位都没有确定,也就是说,整个信息根本用不了一个十进制位。
(2) 自适应模型既然使用静态模型可以很好地接近熵偷什么还要采用自适应模型呢?要知
道,静态模型无法适应信息多样性,例如,上面得出的概率分布没法在所有待压缩信息上使用,为 了能正确解压缩,我们必须再消耗一定的空间保存静态模型统计出的概率分布,保存模型所用的空 间将使我们重新远离熵值。其次,静态模型需要在压缩前对信息内字符的分布进行统计,这一统计 过程将消耗大量的时间,使得本来就比较慢的算术编码压缩更加缓慢。另外还有最重要的一点,对 较长的信息,静态模型统计出的符号概率是该符号在整个信息中的出现概率,而自适应模型可以统 计出某个符号在某一局部的出现概率或某个符号相对于某一上下文的出现概率,换句话说,自适应 模型得到的概率分布将有利于对信息的压缩(可以说结合上下文的自适应模型的信息熵建立在更高 的概率层次上其总熵值更小)好的基于上下文的自适应模型得到的压缩结果将远远超过静态模型。
(3) 自适应模型的阶通常用“阶” (order这一术语区分不同的自适应模型前面例子中采用的 是0阶自适应模型该例子中统计的是符号在已输入信息中的出现概率有考虑任何上下文信息。 如果我将模型变成统计符号在某个特定符号后的出现概那么,模型就成为了 1阶上下文自适应 模型。举个例子要对一篇英文文本进行编硬经编码了 10000个英文字符,刚刚编码的字符是, 下一个要编码的字符晶。我们在前面的编码过程中已经统计出前000个字符中出现了 113次 字母t,其中有47个t后面跟着字母h。我们得出字符h在字符t后的出现频率是47/113我 们使用这一频率对字符 进行编码,需要-log2(47/113) = bi对比0阶自适应模型,如果前 10000个字符中h的出现次数为82次,则字符h的概率是82/10000我们用此概率对h进行 编码,需要-log2(82/10000) = b考虑上下文因素的优势显而易见还可以进一步扩大这一优 势,例如要编码字符1的前两个字符是^,而在已经编码的文本中gt后面出现h的概率是80%, bit就可以编码输出字符1。此时,使用的模型叫做2阶上下文自适应模型。 最理想的情况是采用 阶自适应模型。此时,如果结合算术编码对信息的压缩效果将达到惊人的 程度。采用更高阶的模型需要消耗的系统空间和时间至少在目前还无法让人接受,使用算术压缩的 应用程序大多数采用2阶或3阶的自适应模型。
(二)实验内容
复****C+玳码基本语法(类和虚函数等面向对象数据结构定义)
根据实验提供的源代码,学****算术编码实现流程,培养实际动手调试能力和 相应的编程技巧。
三、 实验仪器、设备
计算机一系统最低配置56M内存、P4 CPU
C++ 编程软件一Visual C++ (Microsoft Visual Studio 2003 Visual C++ (Microsoft Visual Studio 20