网络多媒体技术(双语)课程报告.docVIP

网络多媒体技术(双语)课程报告.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

网络多媒体技术(双语)课程报告

题目:算术编码

姓名:xxx

学号:xxx

日期:2010-10-30

图像压缩编码---算术编码

一、图像压缩编码理论基础及分类

图像压缩编码与压从本质上说就是对要处理的图像源数据用一定的规则进行变换和组合,达到以尽可能少的代码来表示尽可能多的数据信息的目的。压缩的理论基础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,保留不确定的信息,去掉确定的信息,以一种更接近本质的描述来代替原有冗余的描述。这个本质的东西就是信息量。

压缩编码的方法有很多,主要分为4大类:像素编码,预测编码,变换编码和其他编码。高效编码的主要方法是尽可能的去除信源中的冗余成分,从而以最少的码率传递最大的信息。下面我就介绍一下熵编码中的算术编码。二、算术编码原理及算法.

算术编码是图像压缩的主要算法之一,是一种无损数据压缩方法。它和其它熵编码方法不同点式,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码没有对各输入符号的信息量为整数的限制,直接把整个输入的消息编码为一个数,一个满足(0.0?n1.0)的小数n。

它的基本思想是将信源输出序列的概率和实数段[0,1)中的一个浮点小数p联系起来,序列的概率刚好等于p所在区间的长度序列越长,p的区间长度越短。该浮点数p的二进制展开式即为原符号串的压缩编码结果。因为小数随位数的增加,它的精度也随之提高,从信息论的角度来说,它所包含的信息量也随之增加。

1、编码过程

算术编码是用符号的概率和它的编码间隔两个基本参数来描述的。算术编码的方法是将被编码的消息或者符号串表示成0和1之间的一个间隔,即将其编码成[0,1)之间的浮点小数。符号序列越长,编码表示它的间隔也就越小,表示这一间隔所需的位数也就越多。由于信源的符号序列需要根据某种编码模式生成概率的大小来减少间隔,出现概率大的符号F要比出现概率小的符号减少范围小,因此,只要增加减少的比特位就可以对新增加的信息进行编码。

在编码任何消息之前,符号串的完整范围被设定为[0,1)。当一个符号被处理时,这一范围就根据分配给这一符号的范围变窄。算术编码的过程,实际上就是根据信号源发生概率对区间[0,1)进行分割的过程。

现以二值信源的算术编码为例来说明编码过程,多值信源的编码方法可以类推。设信源有两种符号0和1,它们出现的概率分别是1/4和3/4。区间[0,1)被分割成两个概率范围[0,1/4)、[1/4,1),其中0是符号0的rangelow,1/4是符号0的

?1?

rangehigh,同时1/4还是符号一的rangelow,1是符号1的rangehigh。这时区间的范围(range)为1,范围的下限(low)为0,上限(high)为1。对于消息S的符号序列

}的算术编码过程可以概括成一下几步。{ak

(1)初始化时,low=0,high=1,被分割的范围range=high-low=1.

(2)下一个的范围的high和low可以根据输入的不同符号ak,有下式计算

Low=low+range*rangelow

High=low+range*rangehigh

(3)重复(2)的过程直到所有的符号都被编码为止。编码结果就是消息落在区间范围。

编码结果就是消息落在的区间范围。从上面的编码过程可知,对于不同的消息,编码过程是唯一的。所以选取区间中任何一点,都可以表示这个区间,也就是被编码的消息S,且不会有冲突。

然后选取这个点,令L=【log21/p(s)】

式中符号【Y】代表取大于或等于Y的整数,p(s)代表被编码消息出现的概率,可以由每个符号的概率p(ak)相乘得到:

p(s)=p(a1)*p(a2)*….*p(an-1)*p(an)

最后把得到编码结果的区间下限,也就是rangelow写成二进制的小数,取其前L位,如果后面尚有位数,就进位到第L位,这样得到一个数,,用,就可以作为消息,的算术编码码字。

2、译码过程

解码过程是编码的逆过程,理解了编码过程,解码过程的操作就容易多啦。由于编码的结果0.0000010是消息0010的唯一编码,因此在解码的时候只需要判断当前的解码值落在哪一个符号的概率范围,就能正确解出符号,进行输出。解码公式可以概括为:

(number-range)/range=number

三、算术编码的VisualC++实现

根据上述对算术编码原理的分析,下面我们就用VisualC++来实现将有限长的二进制数列进行算术编码的功能。在这里我们还需要添加一个名为“算术编码”的对话框,用来进行算术编码和译码。

1、对话框头文件以及源文件

代码如下:

classCDlgArith:publicCD

文档评论(0)

155****9885 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档