一.香农-范诺编码
香农-范诺(Shannon-Fano)编码的目的是产生具有最小冗余的码词(code word)。其基本思想是产生编码长度可变的码词。码词长度可变指的是,被编码的一些消息的符号可以用比较短的码词来表示。估计码词长度的准则是符号出现的概率。符号出现的概率越大,其码词的长度越短。
香农-范诺编码算法需要用到下面两个基本概念:
(1)熵(Entropy)
某个事件的信息量(又称自信息)用
Ii = -log2pi
表示,其中pi为第i个事件的概率,0< pi ≤ 1。
信息量Ii的概率平均值叫做信息熵,或简称熵。
熵是信息量的度量方法,它表示某一事件出现的消息越多,事件发生的可能性就越小,数学上就是概率越小。
(2)信源的熵
按照香农的理论,信源S的熵定义为
H(x)=E[Ii ]=E[-log2(1/pi)]=-ξpilog2pi(i=1,2,..n)
其中pi是符号Si在S中出现的概率;log2(1/pi)表示包含在Si中的信息量,也就是编码Si所需要的位数。
按照香农的理论,熵是平稳信源的无损压缩效率的极限。例如,一幅用256级灰度表示的图像,如果每一个像素点灰度的概率均为 pi=1/256,编码每一个像素点就需要8位(比特,bit)。
香农-范诺编码算法步骤:
(1)按照符号出现的概率减少的顺序将待编码的符号排成序列。
(2)将符号分成两组,使这两组符号概率和相等或几乎相等。
(3)将第一组赋值为0,第二组赋值为1。