算术编码在视频压缩中的应用摘要:算术编码是一种高效的视频编码方法,有着广阔的应用前景。在视频编码基本思想基础上,概述算术编码的原理和发展过程,重点分析H.264中基于上下文的自适应二进制算术编码的特点,最后对算术缩码的最新发展作介绍。关键词:视频压缩:算术编码;H.264Abstact:Arithmetic coding is an efficient video coding method,which have a broad application prospect.In videccoding based on the basic thought, the principle and development process of arithmetic coding,focusing on thecharacteristics of adaptivebinary arithmetic coding context based on H.264, Finally the latest development ofarithmeticcoding is introduced..Keywords: Video compression; Arithmetic coding, H.2641.视频压缩的基本思想众所周知,图像信号的数字化在图像处理中有一系列的优点,然而数字化后的图像数据却相当庞大。不进行图像压缩会给存储器及计算机的处理速度等方面增加极大的压力。数字化的图像信号之所以能进行压缩主要依赖于下面两个基本条件[1]:第一,图像信号上存在大量的穴余并且这种余在编解码后可以无失真的恢复。第二,可以利用人眼的视觉特性,在图像变化不被觉察的条件下以一定的客观失真换取数据压缩。摘编码就是根据信源的随机过程统计特性,利用码字间的余进行压缩的编码方法。而算术编码是编码中一种高效的无损压缩方法,其特别之处在于,其他的编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个[0,1]间的小数。2.算术编码2.1信息论基础数据压缩技术的理论基础是信息论[2]。信息论把每个事件所携带的信息量定义为:I (x;)=-1ogPi其中p;为每个事件发生的概率,I(xi)为信源X发出事件Xi时所携带的信息量,信源X发出的Xi(i=1,2,.N),共N个随机事件的自信息统计平均(求数学期望)为:H(X)=-Z=1P;log2PiH(X)称为信源X的摘,它的含义是信源X发出任意一个随机变量的平均信息量。摘的大小与信源的概率模型有着密切的关系,各个符号出现的概率不同,信源的摘也不同。当信源中各事件是等概率分布时,熵具有极大值。信源的摘与其可能达到的最大值之间的差值反映了该信源所含有的穴余度。信源的穴余度越小,即每个符号所独立携带的信息量越大,那么传送相同的信息量所需要的序列长度就越短,符号位也越少。香农信息论指出,信源熵是进行无失真编码的理论极限。由于算术编码能够使用分数比特,可以最大限度的减少信息间的余,用最少量的符号表示原始信息量,因而可以最大限
算术编码在视频压缩中的应用 摘要: 算术编码是一种高效的视频编码方法,有着广阔的应用前景。在视频编码基本思想基础上,概述算 术编码的原理和发展过程,重点分析 H.264 中基于上下文的自适应二进制算术编码的特点,最后对算术编 码的最新发展作介绍。 关键词:视频压缩;算术编码;H.264 Abstact: Arithmetic coding is an efficient video coding method,which have a broad application prospect. In video coding based on the basic thought, the principle and development process of arithmetic coding, focusing on the characteristics of adaptive binary arithmetic coding context based on H.264, Finally the latest development of arithmetic coding is introduced. Keywords: Video compression; Arithmetic coding; H.264 1.视频压缩的基本思想 众所周知,图像信号的数字化在图像处理中有一系列的优点,然而数字化后的图像数据 却相当庞大。不进行图像压缩会给存储器及计算机的处理速度等方面增加极大的压力。数字 化的图像信号之所以能进行压缩主要依赖于下面两个基本条件[1]: 第一,图像信号上存在大量的冗余并且这种冗余在编解码后可以无失真的恢复。 第二,可以利用人眼的视觉特性,在图像变化不被觉察的条件下以一定的客观失真换取 数据压缩。 熵编码就是根据信源的随机过程统计特性,利用码字间的冗余进行压缩的编码方法。而 算术编码是熵编码中一种高效的无损压缩方法,其特别之处在于,其他的熵编码方法通常是 把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息 编码为一个[0,l]间的小数。 2.算术编码 2.1信息论基础 数据压缩技术的理论基础是信息论[2]。信息论把每个事件所携带的信息量定义为: I(xi)=-logpi 其中pi为每个事件发生的概率,I(xi) 为信源X发出事件Xi时所携带的信息量,信源X发出的 Xi(i=1,2,.N),共N个随机事件的自信息统计平均(求数学期望)为: H(X)=-∑ pi N i=1 log2pi H(X)称为信源X的熵,它的含义是信源X发出任意一个随机变量的平均信息量。熵的大 小与信源的概率模型有着密切的关系,各个符号出现的概率不同,信源的熵也不同。当信源 中各事件是等概率分布时,熵具有极大值。信源的熵与其可能达到的最大值之间的差值反映 了该信源所含有的冗余度。信源的冗余度越小,即每个符号所独立携带的信息量越大,那么 传送相同的信息量所需要的序列长度就越短,符号位也越少。 香农信息论指出,信源熵是进行无失真编码的理论极限。由于算术编码能够使用分数比 特,可以最大限度的减少信息间的冗余,用最少量的符号表示原始信息量,因而可以最大限
度的逼近信源摘,达到极高的压缩比。2.2算术编码及其发展算术编码[3]将输入符号序列映射为[0,1]区间内的一个小区间,区间的宽度等于该序列的概率值,之后在此区间内任意挑选一个有效的二进制小数作为整个符号序列的编码码字。算术编码是对整个输入符号序列进行操作,而非单个符号,因此平均意义上每个符号所对应的码长可以用分数表示。由于对每一个符号的编码都与以前编码的结果有关,所以它考虑的是信源符号序列整体的概率特性,而不是单个符号的概率特性,因而它能够更大程度地降低码率。自上世纪五十年代算术编码思想形成以来,针对不同的应用方向,不断有人对传统算术编码进行改进,这些早期的编码方法确实可以取得一定的压缩效果,但由于其高度复杂的计算量以及实现技术的限制,并没有得到广泛应用。直到19871视频压缩基本思想年,威腾(itten)等人发表了一个实用的算术编码程序,这一技术才遂渐引起越来越多的关注。在基于块的混合视频编码中,最早提出算术编码的是AnnexE,并应用于H.263标准中,使用算术编码代替变长编码,在不损失信噪比和重建图象质量的情况下,可以大量减少数据量。但它存在三点不足[4]:1)H.263中的算术编码采用了与变长编码相同的句法元素,算术编码可分配分数比特的优点得不到发挥。2)采用固定的概率模型,每个编码符号的概率值被假定为静态的,不能反映编码符号的实际概率统计特性。3)运算复杂度太高,不利于实现。针对上述缺点,在视频编码标准H.264/AVC中,提出了一种新的算术编码方法:基于上下文的自适应二进制算术编码(ContextAdaptiveBinaryArithmeticCoding,CABAC)。CABAC充分利用了上下文内容的相关性,自适应的为每个编码符号选择合适的概率值,更好的去除相关性,极大的提高了压缩效率。3.基于上下文的自适应二进制算术编码基于上下文的自适应二进制算术编码(CABAC)继承了先前的视频编码标准的工作,绕过了已知的基于块的混合视频编码中熵编码方案的缺点,并且将自适应二进制算术编码技术与一系列经过精心设计的上下文模型相结合,在字符简化的原则下,所有非二进制符号都经过了二进制化。在提高H.264/AVC编码效率方面发挥了重要作用。CABAC的编码框架如图1所示,编码过程主要分为三步[4]:
度的逼近信源熵,达到极高的压缩比。 2.2算术编码及其发展 算术编码[3]将输入符号序列映射为[0,l]区间内的一个小区间,区间的宽度等于该序 列的概率值,之后在此区间内任意挑选一个有效的二进制小数作为整个符号序列的编码码字。 算术编码是对整个输入符号序列进行操作,而非单个符号,因此平均意义上每个符号所对应 的码长可以用分数表示。由于对每一个符号的编码都与以前编码的结果有关,所以它考虑的 是信源符号序列整体的概率特性,而不是单个符号的概率特性,因而它能够更大程度地降低 码率。 自上世纪五十年代算术编码思想形成以来,针对不同的应用方向,不断有人对传统算术 编码进行改进,这些早期的编码方法确实可以取得一定的压缩效果,但由于其高度复杂的计 算量以及实现技术的限制,并没有得到广泛应用。直到19871 视频压缩基本思想 年,威腾 (Witten)等人发表了一个实用的算术编码程序,这一技术才逐渐引起越来越多的关注。 在基于块的混合视频编码中,最早提出算术编码的是AnnexE,并应用于H.263标准中, 使用算术编码代替变长编码,在不损失信噪比和重建图象质量的情况下,可以大量减少数据 量。但它存在三点不足[4]:1)H.263中的算术编码采用了与变长编码相同的句法元素,算 术编码可分配分数比特的优点得不到发挥。2)采用固定的概率模型,每个编码符号的概率 值被假定为静态的,不能反映编码符号的实际概率统计特性。3)运算复杂度太高,不利于 实现。 针对上述缺点,在视频编码标准H.264/AVC中,提出了一种新的算术编码方法:基于上 下文的自适应二进制算术编码(Context Adaptive Binary Arithmetic Coding,CABAC)。 CABAC充分利用了上下文内容的相关性,自适应的为每个编码符号选择合适的概率值,更好 的去除相关性,极大的提高了压缩效率。 3.基于上下文的自适应二进制算术编码 基于上下文的自适应二进制算术编码(CABAC)继承了先前的视频编码标准的工作,绕 过了已知的基于块的混合视频编码中熵编码方案的缺点,并且将自适应二进制算术编码技术 与一系列经过精心设计的上下文模型相结合,在字符简化的原则下,所有非二进制符号都经 过了二进制化。在提高H.264/AVC编码效率方面发挥了重要作用。CABAC的编码框架如图1所 示,编码过程主要分为三步[4]:
4loopbinahDVbinanyvalaRegularContextcontegCodingBinarizerModelerEnginecoded bitregwlarlmtaCeMbitstreMbvpasbypasbinaryvaluecoded binBypasssunta etctesCoding Enginebin salueBinary Arithmetic Coder图1CABAC编码框架第一步,二进制化。CABAC针对不同语法元素的概率分布特点,设计了不同的二进制化方案。二进制化方法使得上下文建模可以在子符号级上进行,更重要的是,CABAC将编码符号分为大概率符号MPS和小概率符号LPS,由于算术编码是基于区间递归的编码方法,编码区间越大,表示这个区间所需的二进制串长度越短。当当前处理的字符为MPS时,只会影响编码区间的长度,作为实际影响输出值的编码区间下限L却没有变化。这意味着若输入流中连续出现大量MPS,就可以达到极高的压缩比。语法元素经二进制化后,使得符号1出现的概率远远大于符号0,输出的是大概率符号MPS概率极高的比特流。符号1为绝对的大概率符号,大概率事件使得编码区间变化缓慢,可有效减少二进制字符串的长度。第二步,上下文建模。根据相邻已编码符号的信息,为当前待编码符号选择合适的上下文模型。视频流无论在时间上还是空间上都存在着很大的相关性,相邻的符号能够为当前待编码符号提供一定的信息量。CABAC合理利用了这些信息量,极大的降低了符号间的余度,从而进一步提高了编码的效率。第三步,二进制算术编码。将bin的值与其概率模型输入算术编码器,并在编完该比特符号后,自适应的更新概率模型,不需要信源统计特性的先验知识,提供了处理大量视频内容的灵活性。且其概率更新过程不是去计算,而是按某种法则查表,有效降低了计算量。除这种常规编码器外,CABAC还有一个旁路编码器。旁路编码器以固定的概率进行编码,概率状态不需要更新,编码效率低,主要用于编码符号概率为0.5的元素。两种编码方式相结合加快了整个编码过程的速度。CABAC以slice作为算术编码的生命周期,每个slice开始时,都要重新进行初始化,当某一个slice不能正常解码时,并不会影响其后slice的解码正确性,降低了错误发生时的空间视觉影响,极大的提高了系统抵抗错误的能力,且slice还提供了重同步点。CABAC也有其局限性:概率模型过多,需要配置大量的高速存储器,给硬件实现带来困难:计算复杂度较高,不太适用于硬件简单,实时性要求高的场合:且由于CABAC编码的自适应性,编码过程存在严格的数据相关性,整个编码流程具有较强的连续性,因此,为提高编解码效率,CABAC编码器不得不在极高的频率下运行,这不但会造成大量功耗,而且在某些情况下是不可行的。目前许多算术编码的研究正是致力于解决这些问题
图1 CABAC编码框架 第一步,二进制化。CABAC针对不同语法元素的概率分布特点,设计了不同的二进制化 方案。二进制化方法使得上下文建模可以在子符号级上进行,更重要的是,CABAC将编码符 号分为大概率符号MPS和小概率符号LPS,由于算术编码是基于区间递归的编码方法,编码区 间越大,表示这个区间所需的二进制串长度越短。当当前处理的字符为MPS时,只会影响编 码区间的长度,作为实际影响输出值的编码区间下限L却没有变化。这意味着若输入流中连 续出现大量MPS,就可以达到极高的压缩比。语法元素经二进制化后,使得符号1出现的概率 远远大于符号0,输出的是大概率符号MPS概率极高的比特流。符号1为绝对的大概率符号, 大概率事件使得编码区间变化缓慢,可有效减少二进制字符串的长度。 第二步,上下文建模。根据相邻已编码符号的信息,为当前待编码符号选择合适的上下 文模型。视频流无论在时间上还是空间上都存在着很大的相关性,相邻的符号能够为当前待 编码符号提供一定的信息量。CABAC合理利用了这些信息量,极大的降低了符号间的冗余度, 从而进一步提高了编码的效率。 第三步,二进制算术编码。将bin的值与其概率模型输入算术编码器,并在编完该比特 符号后,自适应的更新概率模型,不需要信源统计特性的先验知识,提供了处理大量视频内 容的灵活性。且其概率更新过程不是去计算,而是按某种法则查表,有效降低了计算量。除 这种常规编码器外,CABAC还有一个旁路编码器。旁路编码器以固定的概率进行编码,概率 状态不需要更新,编码效率低,主要用于编码符号概率为0.5的元素。两种编码方式相结合, 加快了整个编码过程的速度。 CABAC以slice作为算术编码的生命周期,每个slice开始时,都要重新进行初始化,当 某一个slice不能正常解码时,并不会影响其后slice的解码正确性,降低了错误发生时的空 间视觉影响,极大的提高了系统抵抗错误的能力,且slice还提供了重同步点。 CABAC也有其局限性:概率模型过多,需要配置大量的高速存储器,给硬件实现带来困 难;计算复杂度较高,不太适用于硬件简单,实时性要求高的场合;且由于CABAC熵编码的 自适应性,编码过程存在严格的数据相关性,整个编码流程具有较强的连续性,因此,为提 高编解码效率,CABAC编码器不得不在极高的频率下运行,这不但会造成大量功耗,而且在 某些情况下是不可行的。目前许多算术编码的研究正是致力于解决这些问题
4.算术编码的最新发展随着3D资源的兴起以及高清、移动无线等技术的发展,目前广泛使用的MPEG-2,MPEG-4,H.264/AVC等已不能满足人们对视频质量的要求。2010年4月在德国德累斯顿召开了JCT-VT(JointCollaborativeTeamonVideoCoding)第一次会议,确定新一代视频编码标准名称:HEVC(HighEfficiencyVideoCoding)。新一代视频压缩标准的核心目标是在H.264/AVCHighProfile的基础上,进一步提高压缩效率、提高鲁棒性和错误恢复能力、减小实时的时延等。HEVC依然沿用H.263就开始采用的混合编码框架,并着力研究新的编码工具或技术,用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。其中,对CABAC的研究集中在并行化设计上,如AndrewSegall等人提出了摘slice的概念,MadhukarBudagavi等人重新定义了句法元素的分组方法,并提出了交错摘slice编码方法,Bin_level并行的概念及并行上下文处理技术,DakeHe等人提出通过改变重要图的编码顺序来提高吞叶量。并行CABAC的编码框架如图2所示。encodedsyntax4Entropybitstreamoelementencoder0binarizerencoded2Entropycontextbitstream1encodedencoderMUXmodelerbitstream..encodedNEntropybitstreamNencoderH图2并行CABAC框架图HEVC对CABAC的研究可概括为如下几个方面:(1)Bin_level:bin级并行化。目前的提案主要从两个方面进行考虑。(2)Syntaxelement-level:句法元素级的并行化。(3)Slice-level:slice级并行化。可以灵活的应用于多个处理平台,且通过定义一个熔slice中最大bins数,以及一顿中的最大bins数,可以清晰的指定编解码器的平行度(4)Parallelcontextprocessing:上下文模型并行化。解决了上下文处理过程中连续性太强,并行化处理无法实现的问题,极大的提高了硬件电路的整体吞吐率。5.总结算术编码是一种高效的视频编码方法,由于可以按分数比特最大限度的逼近信源摘,算术编码可达到极高的压缩比,这不但有助于节省庞大开支,还可以提高资源的使用效率。目前,算术编码已广泛应用在计算机、数字电视、光盘技术等领域的视频数据的压缩技术中。算术编码以其高效的压缩性能逐渐成为当前重要的应用技术之一,在未来的3D,高清,移动视频通信等领域具有阔的应用前景和发展潜力
4.算术编码的最新发展 随着3D资源的兴起以及高清、移动无线等技术的发展,目前广泛使用的MPEG-2,MPEG-4, H.264/AVC等已不能满足人们对视频质量的要求。2010年4月在德国德累斯顿召开了JCT-VT (Joint Collaborative Team on Video Coding)第一次会议,确定新一代视频编码标准名 称:HEVC(High Efficiency Video Coding)。新一代视频压缩标准的核心目标是在H.264/AVC High Profile的基础上,进一步提高压缩效率、提高鲁棒性和错误恢复能力、减小实时的时 延等。 HEVC依然沿用H.263就开始采用的混合编码框架,并着力研究新的编码工具或技术,用 以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。其中,对CABAC 的研究集中在并行化设计上,如Andrew Segall等人提出了熵slice的概念,Madhukar Budagavi等人重新定义了句法元素的分组方法,并提出了交错熵slice编码方法,Bin_level 并行的概念及并行上下文处理技术,DakeHe等人提出通过改变重要图的编码顺序来提高吞吐 量。并行CABAC的编码框架如图2所示。 图2 并行CABAC框架图 HEVC对CABAC的研究可概括为如下几个方面: (1)Bin_level:bin级并行化。目前的提案主要从两个方面进行考虑。 (2)Syntax element-level:句法元素级的并行化。 (3)Slice-level:slice级并行化。可以灵活的应用于多个处理平台,且通过定义一个熵 slice中最大bins数,以及一帧中的最大bins数,可以清晰的指定编解码器的平行度。 (4)Parallel context processing:上下文模型并行化。解决了上下文处理过程中连续性 太强,并行化处理无法实现的问题,极大的提高了硬件电路的整体吞吐率。 5.总结 算术编码是一种高效的视频编码方法,由于可以按分数比特最大限度的逼近信源熵,算 术编码可达到极高的压缩比,这不但有助于节省庞大开支,还可以提高资源的使用效率。目 前,算术编码已广泛应用在计算机、数字电视、光盘技术等领域的视频数据的压缩技术中。 算术编码以其高效的压缩性能逐渐成为当前重要的应用技术之一,在未来的3D,高清,移动 视频通信等领域具有广阔的应用前景和发展潜力
参考文献[1JWiegand T,Sullivan G J,Bjontegaard G."Overview of the H.264 /AVC video coding standard"[J]. IEEETransactionson Circuits and SystemsforVideoTechnology,2003,13(7):560-576[2]A.Norman,“Information theory and coding",New York McGraw-Hill, 1963.[3]Jlan H,Witten,Radford,M.Neal,John G.Cleary"Arithmetic Coding for Data Compression",CommunicationsoftheACM,1987,30:520-540[4]Detlev Marpe,"Adaptive Context-Based and Tree-Based Algorithms for Image Coding and Denoising",2006
参考文献 [1]Wiegand T, Sullivan G J, Bjontegaard G. “Overview of the H. 264 /AVC video coding standard ” [J]. IEEE Transactions on Circuits and Systems for Video Technology, 2003, 13 (7):560-576. [2]A.Norman, “Information theory and coding”, New York McGraw-Hill,1963. [3]Ian H, Witten, Radford, M.Neal, John G.Cleary“Arithmetic Coding for Data Compression”, Communications of the ACM, 1987, 30:520-540. [4]Detlev Marpe, “Adaptive Context-Based and Tree-Based Algorithms for Image Coding and Denoising”, 2006