1视频编码技术发展报告马思伟王诗淇张贤国张新峰余琴高文1引言数字图像/视频自上世纪50年代随着信息的数字化发展而出现并兴起,但随之而来的问题是数字化后的图像/视频其数据量急剧增加,远远超过了存储空间和传输带宽的承受能力,给数字视频应用带来了很大的限制。因此,视频压缩成为数字视频领域的核心问题之一,几十年来学术界和工业界都对其进行了长期而又深入的研究,并取得重要进展。数字视频由在空间和时间上连续采样的离散信号组成,由于采样数据存在着大量的冗余,为压缩提供了可能性。一般将这些冗余归纳为空域冗余、时域冗余和统计冗余三大类。早期的视频压缩技术由于在硬件上受到计算和存储资源的限制,主要是通过统计编码的办法降低数据的统计冗余,比如哈夫曼码、哥伦布码等编码方法。上世纪60年代后期,出现了变换编码技术,即通过将信号从空域变换到频域消除数据在空间上的相关性,从而降低冗余达到压缩的目的,如富立叶变换、哈达码变换等。对于时域冗余,一般使用基于预测的编码方法,亦即预测编码。最早的预测编码系统模型是1952年贝尔实验室Culter[Culter52]等人实现的差值脉冲编码调制DPCM(DifferentialPulseCodeModulation)系统,其基本思想是不直接对信号进行编码,而是用前一信号对当前信号做出预测,对当前信号与预测值的差值进行编码传送。同年Oliver[Oliver52]和Harrison[Harrison52]将DPCM技术应用到视频编码中进行空域的相邻像素预测编码。1969年,运动补偿预测技术使得预测编码性能获得极大的改进,至70年代中期,预测编码开始与变换编码结合起来使用,到80年代已形成了经典的预测/变换混合编码框架,这一编码框架后来广泛应用于MPEG和H.26x系列编码标准,直至今天的新一代HEVC/H.265国际标准也是基于这一框架。预测/变换编码技术主要是从信号处理的角度对视频信号进行去相关去冗余处理,以峰值信噪比和码率节省等客观指标衡量压缩效率,而人作为观看者会给出最直接也是最终的视频质量评价。在人观看视频的过程中,人眼的视觉特性是影响视频质量评价的决定性因素。基于这一点,研究者在进行信号处理压缩研究的同时提出了基于视觉特性的视频压缩方法,比如早在1959年,Schreiber等提2出一种称为“SyntheticHighs”的编码方法[Schreiber59],即在编码时将图像内容分为纹理和边缘两类,针对纹理采用统计的方法进行编码,而对边缘信息采用视觉模型编码方法。这方面的后续研究还有基于轮廓或分割的编码、基于对象的编码、纹理分析合成编码、视觉编码等等,一般可以统一归类为广义上的基于模型的编码。在本报告的第二节中我们将对以上两种类型编码技术的发展历程进行简单介绍,并针对预测/变换编码框架介绍国际/国内标准的情况,此外还对与应用密切相关的编码技术,如多视/立体视频编码、可伸缩编码、分布式编码、容错编码等,进行了简单介绍。本报告的第三节主要是对视频编码技术的近期进展进行介绍,包括以HEVC/H.265为代表的混合框架编码技术,3DV立体视频编码技术,基于视觉特性的编码,以及监控视频压缩、屏幕视频压缩等新兴应用相关的视频编码技术。2视频编码技术发展历程2.1.基于预测/变换框架的传统编码技术图1给出了视频编码关键技术出现的历史顺序,C.Reader在其论述“HistoryofMPEG”中对以往视频编码技术的发展历程进行了很好的归纳和总结[Reader02]。这些技术在发展过程中逐渐融合,形成了以块为单位的预测/变换的混合编码框架,成为当今国际、国内编码标准普遍采用的技术框架,主要包括预测、变换、熵编码等关键技术,下面简要介绍其发展历程。图1.视频编码技术发展时间轴[Reader02]2.1.1.预测编码预测编码即利用信号间的相关性,用前面一个或多个信号作为当前信号的预测值,对当前信号的实际值与预测值的差进行编码。预测技术在视频编码中有着3重要的应用,在现代视频编码中包括帧内预测技术和帧间预测技术两种,分别用于消除空域冗余及时域冗余。Harrison在1952年首先对帧内预测技术进行了研究,其方法是用已编码像素的加权和作为当前像素的预测值[Harrison52],研究中比较了一维(同一行内像素)DPCM技术及二维(多行内的相邻像素)DPCM技术的性能。在现代视频编码中,采用了基于块的帧内预测技术,这主要是考虑到与基于块的变换量化技术的统一以及实现代价。基于块的帧内预测技术在现代视频编码标准中的应用有MPEG-4标准中相邻块的频域系数预测,如DC预测及AC预测,H.264/AVC以及AVS标准中的多方向空间预测技术。Seyler在1962年发表的关于帧间预测编码的研究论文[Seyler62]奠定了现代帧间预测编码的基础。他提出视频序列相邻帧间存在很强的相关性,因此对视频序列编码只需编码相邻帧间的差异,并指出相邻帧间的差异是由于物体的移动、摄像机镜头的摇动及场景切换等造成的。在此之后,帧间预测技术的发展经历了条件更新(ConditionalReplenishment)[Mounts69]、3D-DPCM[Candy71]、基于像素的运动补偿[Netravali79]等几个阶段,最终从有效性及可实现性两方面综合考虑,确定了基于块的运动补偿[Koga81]方案。现代视频编码系统都采用了基于块运动补偿的帧间预测技术,用于消除时域冗余。为了提高帧间预测的精度,基于块的运动补偿方案又从多个方面进行了完善。在MPEG-1标准制定过程中发展出了双向预测技术[Thomas87],即当前帧的预测值可以同时从前向参考帧和后向参考帧获得。双向预测技术可以解决新出现区域的有效预测问题,并能够通过前后向预测值的平均来有效去除帧间噪声。在H.264/AVC标准中,可支持的帧间预测结构更加灵活,如层次B帧(HierarchicalB-picture)预测结构[Reichel04][Flierl03],在此结构下,可以根据参考帧的层级关系来进行更优的比特分配,从而提高整体编码效率。在预测精度上,从整像素预测到1/2像素预测以及1/4像素预测,编码效率分别提高了2dB以及1dB左右。在预测块尺寸及预测模式上,16×16块的整体预测演进为H.264/AVC标准中出现的最小块为4×4的可变块大小预测技术[Wiegand03],预测模式也更加多样来处理不同的帧间运动情况,如跳过模式(skipmode)[Wiegand03]、直接模式(directmode)[Tourapis05][Ji04a][Ji04b]和对称模式[Ji04b]等。在多参考方面,出现了4重叠块运动补偿(OverlappedBlockMotionCompensation,OBMC)技术[Orchard94],多参考帧预测技术[Wiegand03]以及更一般化的多假设预测技术[Flierl02],这些技术都进一步提高了预测效率。2.1.2.变换编码变换是图像或视频编码中最有效的技术之一,首先对图像进行正交变换以去除空间像素之间的相关性,也就是变换后的频域系数是图像信息更加紧凑的表示,这有利于编码压缩。另一方面,正交变换使得原先分布在每个像素上的能量集中到频域的少数几个低频系数上,这代表了图像的大部分信息,而高频系数值较小是与大多数图像的高频信息较少相一致的。根据变换的这一特点,有选择的编码部分显著的频域信号,丢弃不显著的频域信号,可以达到提高压缩效率的目的。能够满足以上两个特性的最佳变换是K-L变换,但最佳K-L变换的设计依赖输入信号的统计特性。针对特定的输入信号,得到其最佳K-L变换矩阵需要较高的计算量,这限制了其在实际编码系统中的应用。K-L变换的较好近似是DCT变换[Ahmed74]。DCT变换不依赖于输入信号的统计特性,且DCT变换有快速算法,因此DCT变换得到了广泛应用。考虑到实现的复杂性,不是对整幅图像直接进行DCT变换,而是把图像分成不重叠的固定大小块,对每个图像块进行DCT变换。MPEG-2、H.263以及MPEG-4都采用了8×8DCT变换。这些标准中的DCT变换技术采用了浮点DCT来实现,浮点计算会引入较高的运算量,同时如果浮点精度不作规定的话,解码器会出现“误差漂移”。Bjontegaard提出了用整数变换技术[Bjontegaard97]来解决这个问题,同时整数变换只需加法和移位操作即可实现,计算复杂度低。最新的H.264/AVC及AVS标准都采用了整数DCT变换技术[Malvar03][Ma06]。DCT变换技术的另一个重要进展是H.264/AVC标准制定过程中出现了自适应块大小变换技术(AdaptiveBlock-sizeTransforms,ABT)[Wien03]。ABT的主要思想是用与预测块相同尺寸的变换矩阵对预测残差去相关,这样不同块尺寸的预测残差系数的相关性都可以被充分地利用到。ABT技术可带来1dB的编码效率提高。变换技术的另一个重要进展是离散小波变换(DiscreteWaveletTransform,DWT)[Mallat89a][Mallat89b]技术,DWT具有多分辨率多频率时频分析的特性,信号经DWT分解为不同频率的子带后更易于编码,并且采用适当的熵编码技术编码码流自然地具有嵌入式特性。JPEG2000图像编码标准建立在DWT技术之上,MPEG-4标准也采用DWT技术对纹理信息进行5编码[Sodagar99]。此外,采用DWT技术的视频编码方案也进行了深入研究[Taubman94][Ohm94][Choi99][Chen02]。2.1.3.熵编码熵编码技术是视频编码系统中的基础性关键技术之一,熵编码的目标是去除信源符号在信息表达上的表示冗余,也称为信息熵冗余或者编码冗余。1971年,Tasto和Wintz首次将熵编码应用到图像编码中[Tasto71]。在他们的方案中,对量化后的每个系数进行变长编码。1976年,Tescher在他的自适应变换编码[Tescher76]方案中首次提出了DCT系数的高效组织方式即zig-zag扫描。Chen在1981年利用Huffman码构造了两个变长码表[Chen81],分别用于扫描产生的非零系数和连续零系数游程的编码。1986年Chen又采用变长码联合编码非零系数与零系数游程,这一方法被称为2D-VLC。这是利用联合熵提高熵编码效率的一个实例,这一技术被应用到H.261、MPEG-1及MPEG-2标准中。在H.263及MPEG-4标准中,采用了3D-VLC,联合编码非零系数、零系数游程以及是否是最后一个非零系数的信息。算术编码是另一类重要的熵编码方法。算术编码的思想在香农的信息论中就已经提出,1979年Rissanen和Langdon提出了可实际应用的算术编码方法[Rissanen76][Rissanen79]。算术编码在平均意义上可为单个符号分配码长小于1的码字,通常算术编码具有比变长编码更高的编码效率。为进一步提高熵编码效率,发展了基于上下文的熵编码。基于上下文的熵编码由上下文建模与编码两个技术模块构成。编码可通过变长编码或算术编码来实现。上下文建模挖掘了高阶条件熵,因此提高了编码效率。一些较典型的基于上下文的熵编码方法包括,无损图像编码中的LOCO-I[Weinberger00]与CALIC(Context-BasedAdaptiveLosslessImageCoding)[Wu97],JPEG2000标准中的EBCOT(EmbeddedBlockCodingwithOptimizedTruncation)[Taubman00],AVS视频编码标准中的C2DVLC(Context-basedTwoDimensionVariableLengthCoding)[Wang06]与CBAC(Context-basedBinaryArithmeticCoding)[Zhang07],H.264/AVC标准中的CAVLC(Context-basedAdaptiveVariableLengthCoding)[B