现代图像分析知识点 (34).pdf
Modern Image Analysis算术编码是采用一种比特数目可变的方法来进行编码的,它和霍夫曼编码类似,都属于变长编码。但算术编码可以分配带有小数的比特数目信符。例如,当概率为0.3的符号,它的理想码字应该为,那么霍夫曼编码只能给该信符分配1或2比特,算术编码则克服了这一问题。算术编码更接近于最优熵编码,压缩性能优于霍夫曼编码。6.5 算术编码 算术编码2log 0.31.737Modern Image Analysis6.5 算术编码算术编码的基本原理是将被编码的信息流(称为消息)表示成实数0和1之间的一个区间。消息越长,编码表示它的区间就越小,表示这一小区间所需的二进制位数就越多。算术编码用到两个基本参数:符号的概率和它的编码区间。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号在0到1之间的区间,编码过程中的区间决定了符号压缩后的输出。Modern Image Analysis6.5 算术编码算术编码步骤如下:下面结合一个实例来说明算术编码的具体算法。(1)“当前区间”初始化为0,1)。(2)对于输入信息流中的每个信符,编码器执行如下两个步骤:将“当前区间”分成子区间,该子区间的长度正比于符号的概率;(3)将整个消息处理后,在“当前区间”中任取一个数,该数就是输入信息流的算术编码。选择下一个信符对应的子区间,并使它成为新的“当前区间”、Modern Image Analysis6.5 算术编码设要编码的信息流(即信源)为“bcadc”,信源中各符号出现的概率分别为,()0.2P a()0.3P b()0.4P c()0.1P d 首先,设定各符号在区间0,1)内的初始区间l,h)表6.3-2 信源符号出现概率和初始编码区间分配表信源符号abcd出现概率P0.20.30.40.1初始区间0,0.2)0.2,0.5)0.5,0.9)0.9,1.0)Modern Image Analysis定义“当前区间”为,当前编码符号的初始区间为l,h).则“当前区间”的起始值和结束值 为为(),()L iH i()L i()H i第一个编码符号为“b”,其初始区间为,则“当前区间“为,)0.2,0.5)l h (1),(1)LH6.5 算术编码()(1)(1)()(1)(1)L iL iR ilH iL iR ih(1)(0)(0)(1)(0)(0)LLRlHLRhModern Image Analysis6.5 算术编码其中“当前区间”的初始化值为,则(0),(0)0,1)LH(0)(0)(0)101RHL 代入后可得(1),(1)0.2,0.5),)LHl h(1)(1)(1)0.50.20.3RHL,)0.5,0.9)l h 第二个编码符号为“c”,则其同理“当前区间”为(2)(1)(1)0.20.3 0.50.35(2)(1)(1)0.20.3 0.90.47LLRlHLRh Modern Image Analysis即“bc”的编码区间为(2),(2)0.35,0.47)LH,)0,0.2)l h 第三个被编码的符号为“a”,其初始区间为0.35,0.374)即“bca”的编码区间为第四个被编码的符号为“d”,其初始区间为,)0.9,1.0)l h 6.5 算术编码(3)(2)(2)0.35(0.470.35)00.35(3)(2)(2)0.35(0.470.35)0.20.374LLRlHLRh 同理可得“当前区间”为Modern Image Analysis6.5 算术编码(4)(3)(3)0.35(0.3740.35)0.90.3716(4)(3)(3)0.35(0.3740.35)1.00.374LLRlHLRh(5)(4)(4)0.3716(0.3740.3716)0.50.3728(5)(4)(4)0.3716(0.3740.3716)0.90.37376LLRlHLRh 第五个被编码符号为“c”,同理可得0.3728,0.37376)则“当前区间”为至此,输入信息流被描述为一个实数区间,或者说在此区间内的任一实数值都唯一对应该信息流。0.3728,0.37376)Modern Image Analysis6.5 算术编码将该区间用二进制形式可表示为0.3728,0.37376)0.01011111011,0.01011111101)取这个区间位数最少的一个数0.010111111作为信息流“bcadc”的编码输出,同时“0.”也可忽略。因此,信息流“bcadc”的编码值为010111111,平均码字长bit 951.8avgLModern Image Analysis6.5 算术编码图6.5-1描述了以上算术编码过程。图6.5-1 算术编码过程示意图算术解码是编码的逆过程,根据编码时的符号出现概率的初始编码区间分配表和压缩后数据编码所在的范围,确定所对应信息流的每一个符号。算术编码的实现方法要比霍夫曼编码复杂一些,但其编码效率一般高于霍夫曼编码。a ab bc cd d0 01 1b b0.50.5c c0.470.47a a0.3740.374d d0.37160.3716c c0.373760.373760.20.350.350.3740.0.20.350.350.3740.3 3728728