文档库 最新最全的文档下载
当前位置:文档库 › 算术编码

算术编码

算术编码
算术编码

实现算术编码及其译码

一、实验内容

借助C++ 编程来实现对算术编码的编码及其译码算法的实现

二、实验环境

1. 计算机

2. VC++6.0

三、实验目的

1. 进一步熟悉算术编码的原理,及其基本的算法;

2. 通过编译,充分对于算术编码有进一步的了解和掌握;

3. 掌握C++ 语言编程(尤其是数值的进制转换,数值与字符串之间的转

换等)

四、实验原理

算术编码

算术编码的基本原理是将编码的消息表示成实数0 和1 之间的一个间隔,消息越长,编码表示它的间隔就越小,表示这一间隔所需的二进制位就越多。算术编码用到两个基本的参数:符号的概率和它的编码间隔。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0 到1 之间。编码过程中的间隔决定了符号压缩后的输出。

给定事件序列的算术编码步骤如下:

(1) 编码器在开始时将“当前间隔”设置为[0,1)

(2) 对每一事件,编码器按步骤(&)和(b )进行处理

(a)编码器将“当前间隔”分为子间隔,每一个事件一个

(b) —个子间隔的大小与下一个将出现的事件的概率成比例,编码器选择

子间隔对应于下一个确切发生的事件相对应,并使它成为新的“当前间

隔”。

(3) 最后输出的“当前间隔”的下边界就是该给定事件序列的算术编码

编码过程

假设信源符号为{A,B,C,D},这些符号的概率分别为{ 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],其中[x,y]表示半开放间隔,即包含x不包含y。上

面的信息可综合在表03-04-1中。

F表为信源符号,概率和初始编码间隔

如果二进制消息序列的输入为:CADAC D B。编码时首先输入的符号是C,找到它的编码范围是[0.5, 0.7]。由于消息中第二个符号A的编码范围是[0,0.1],

相关文档