- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
无失真的信源编码
第八节 游程编码、算术编码、冗余编码 游程编码 游程长度至少是1,理论上,游程长度可以是无穷,但很长的游程实际出现的概率非常小。 同理可得“1”游程长度L(1)的概率为: P[L(1)]=p1L(1)-1p0 “0”游程长度的熵: 第八节 游程编码、算术编码、冗余编码 ③ 二元独立序列的平均游程长度 “0”游程序列的平均游程长度 同理可得“1”游程长度的熵和平均游程长度 游程编码 第八节 游程编码、算术编码、冗余编码 游程编码 ④ 二元独立序列的熵 “0”游程序列的熵与“1”游程长度的熵之和除以它们的平均游程长度之和,即为对应原二元序列的熵H(X) 游程变换后符号熵没有变。因为游程变换是一一对应的可逆变换,所以变换后熵值不变。 第八节 游程编码、算术编码、冗余编码 游程变换有较好的去相关效果,因而对游程序列进行哈夫曼编码可获得较高的编码效率。 假设“0”游程长度的哈夫曼编码效率为η0,“1”游程长度的哈夫曼编码效率为η1,由编码效率的定义和式(5.4.9)可得对应二元序列的编码效率(信源熵和信息率之比为编码效率η=H(X)/R) 当“0”游程和“1”游程的编码效率都很高时,采用游程编码的效率也很高,至少不会低于较小的那个效率。要想编码效率尽可能高,应尽可能提高熵值较大的游程编码效率。 游程编码 第八节 游程编码、算术编码、冗余编码 算术编码 算术编码不同于哈夫曼码,它是非分组(非块)码。它从全序列出发,考虑符号之间的关系来进行编码。 算术编码利用了累积概率的概念。 算术码主要的编码方法是计算输入信源符号序列所对应的区间。 因为在编码过程中,每输入一个符号要进行乘法和加法运算,所以称此编码方法为算术编码。 二元序列的算术编码可用于黑白图像的编码,例如传真。 第八节 游程编码、算术编码、冗余编码 算术编码 设信源符号集A={a1,a2,…,an},其相应概率分布为P (ai), P (ai) 0(i=1,2, …,n) 信源符号的累积分布函数为: 所得累积分布函数为每台级的下界值,则其区间为[0,1)左闭右开区间。 F (a1)=0 F (a2)=P (a1) F (a3)=P (a1)+P (a2) … 当A={0,1}二元信源时: F (0)= 0,F (1)=P (0) 第八节 游程编码、算术编码、冗余编码 算术编码 计算二元无记忆信源序列的累积分布函数 初始时:在[0,1)区间内由F (1)划分成二个子区间[0,F (1))和[F (1),1), F (1)= P (0)。 子区间[0,F (1))的宽度为A(0)= P (0),对应于信源符号“0”; 子区间[F (1),1)的宽度为A(1)= P (1),对应于信源符号“1”; 若输入符号序列的第一个符号为s=“0”,落入[0,F (1))区间,得累积分布函数F (s=“0”)= F (0)=0; 第八节 游程编码、算术编码、冗余编码 算术编码 输入第二个符号为“1”,s=“01” s=“01”所对应的区间是在区间[0,F (1))中进行分割; 符号序列“00”对应的区间宽度为: A(00)=A(0)P (0)=P (0)P (0)=P (00); 对应的区间为[0,F (s=“01”))。 符号序列“01”对应的区间宽度为 A(01)=A(0)P (1)=P (0)P (1)=P (01)= A(0)-A(00); 对应的区间为[F (s=“01”),F (1))。 累积分布函数F (s=“01”)=P (00)= P (0)P (0) 第八节 游程编码、算术编码、冗余编码 算术编码 第八节 游程编码、算术编码、冗余编码 算术编码 输入第三个符号为“1”: 输入序列可记做s1=“011”(若第三个符号输入为“0”,可记做s0=“010”); 现在,输入序列s1=“011”对应的区间是对区间[F(s),F(1))进行分割; 序列s0=“010”对应的区间宽度为 A(s=“010”)=A(s=“01”)?P(0)=A(s)?P(0) 其对应的区间为[F(s), F(s)+ A(s)?P(0)); 序列s1=“011”对应的区间宽度为 A(s=“011”)=A(s)?P(1)=A(s=“01”)-A(s=“010”)= A(s )-A(s0) 其对应的区间为[F(s)+A(s)?P(0),F(1)); 符号序列s1=“011”的累积分布函数为F(s1)=F(s)+A(s)?P(0); 若第三个符号输入为“0”,符号序
文档评论(0)