单击这里展开或折叠

  1.算术编码基本原理
  算术编码方法是将被编码的信息表示成实数0和1之间的一个间隔。信息越长编码表示它的间隙就越小,表示这一间隙所须二进位就越多,大概率符号出现的概率越大对应于区间愈宽,可用长度较短的码字表示;小概率符号出现概率越小层间愈窄,需要较长码字表示。
  信息源中连续的符号根据某一模式生成概率的大小来减少间隔。可能出现的符号要比不太可能出现的符号减少范围少,因此只增加了较少的比特位。

单击这里展开或折叠

  2.算术编码实现步骤
  设数据序列有两种符号组成,其概率各不相同(一大一小),称概率大的为大概率符号,以MPS(Most Probable Symbol)表示大概率符号,其概率用Pe代表;称概率小的为小概率符号,用LPS(Least Probable Symbol)表示小概率符号,其概率用Qe代表;

 
  3.算术编码算法的实现
单击这里展开或折叠

  设置两个专用寄存器,A寄存器和C寄存器,
单击这里展开或折叠

  初始化时:C=0,表示子区间[0,1]的起始点
  A=1。表示子区间的宽度
  当低概率符号LPS到来时
   
  当高概率符号MPS到来时
  

单击这里展开或折叠


  4.解码算法及举例
单击这里展开或折叠

  C'是已知的算术编码还原成小数的值,A=1
  当C'落在0~QeA子区间内,解码符号赋以"0"-LPS,
  
  当C'落在QeA~A子区间内,解码符号赋以"1"--MPS,
  

单击这里展开或折叠

  例题:已知算术编码结果为"011",对其解码,求原信源序列符号。
  解:由编码过程可知,"1"为大概率符号,"0"为小概率符号;
  大概率Pe=3/4,小概率Qe=1/4;
  C'=0.011;A=1
  (1)QeA=1/4=(0.01)b
  C'=(0.011)b 落在QeA~A(0.01~1)子区间,解码符号赋以MPS--"1"
  "1"就是解码所得的第一个符号。
  
  (2)QeA=0.01×0.11=(0.0010110)b
  C'=0.001 落在0~QeA(0~0.0010110)子区间,解码符号赋LPS以"0"
  
  (3)QeA=0.01×0.0011=(0.000011)b
  C'=0.001 落在QeA~A(0.000011~1)子区间,解码符号赋以MPS——“1”
  
  (4)QeA=0.01×0.11101=(0.00001)b
  C'=(0.000101)b 落在QeA~A(0.00001~1)子区间,解码符号赋以MPS——“1”
  

单击这里展开或折叠

  解码为:1011
单击这里展开或折叠