由于网络带宽的限制以及编码技术的制约,实时视频通信应用中存在视频质量差、图像延时大和抗分组丢失能力弱等问题,而在包括音频、视频和数据的视频会议呼叫中,视频部分通常会占用整个呼叫可用带宽的绝大部分。本文介绍的H.26L针对这种问题,能将带宽需求降低50%,因而可在低带宽网络上实现视频会议系统应用。
从固定和移动视频电话以及视频会议到DVD和数字电视,数字视频正被越来越多的应用采用。这一现象之所以出现归功于视频编码标准的发展,有了这些编码标准,系统和系统之间才能实现互通性。此外,这些标准也为降低整个网络结构中所需的带宽作出了贡献,并在位率不变时,让系统可以获得更好的视频质量,同时减小系统对视频存储的要求。几年以前,基于模块的压缩算法才趋于成熟,而如今出现的H.26L标准却已经在编码效率上实现了突破,它可以通过进一步扩展优先标准中的基本技术,将位率降低50%。
H.26L中包含帧内预测(intra prediction)功能、更灵活的运动补偿功能、新的4×4整型转换功能,还能实现功能更强大的熵编码,这些对于H.26L而言都很关键。H.26L中提供了多种编码工具,这就使系统开发商能够针对不同的终端系统应用来优化其算法,达到区分产品的目的。但在开始采用H.26L进行开发之前,我们必需了解它能够作些什么,以及如何完成其功能。只有这样,设计者才能很好的利用这项刚刚出台的视频编码标准所具备的优势进行设计。
H.26L概述
开发视频编码标准的正式组织有两个,其一是ITU-T,其二是ISO/IEC JTC1。ITU-T视频编码标准被称作建议,以H.26X的形式表示(例如,H.261、H.262、H.263和H.26L)。ISO/IEC标准则以MPEG-x的形式表示(例如,MPEG-1、MPEG-2和MPEG-4)。
ITU-T建议本来是为视频会议和视频电话等实时视频通信应用设计的,而MPEG标准主要则是为视频存储(DVD)、广播视频(广播TV)以及视频流(例如,网上视频、DSL上的视频以及无线视频应用)设计的。这两个标准委员会通常都独立工作,唯一的例外就是二者合作开发了H.262/MPEG-2标准。
最近,ITU-T和ISO/IEC已经达成协议,再次合作开发由ITU-T发起的H.26L标准。他们之所以能在开发H.26L上达成一致,原因在于,从性能的角度而言,H.26L超越了现有的所有视频编码标准。图1对ITU-T建议和ISO/IEC MPEG标准的发展演化过程进行了总结。
开发H.26L项目的目的,是为了通过采用“Back-To-Basics”方法,开发出一种基于通用模块的,简单直接的高性能视频编码标准。H.26L标准的开发工作是由ITU-T视频编码专家组(VCEG)发起的,开始于1997年。到2001年年底,他们发现,基于H.26L的软件所能提供的视频质量,就是现有的最好的基于MPEG-4的软件也无法与之媲美。于是,ISO/IEC MPEG与ITU-T VCEG结合起来组成了一个联合视频开发组(JVT),接管了H.26L项目。JVT希望建立一个唯一的视频编码标准,同时使其成为MPEG-4标准家族和ITU-T建议家族的新成员(比如,成为MPEG-4中的第10部分或ITU-T中的H.264)。
H.26L的开发目前正在进行中,其第一版有望在2003年年底前公布。
当前的H.26L标准中包含了一些能够使其区别于现有的一些其它标准的特性,如:
1. 对位率的节约高达50%。在大多数位率的情况下,当编码优化程度接近时,H.26L与H.263v2(H.263+)或MPEG-4简化版相比,H.26L可以允许位率的降低程度平均达到50%。2. 可提供高质量的视频信号。H.26L即使在位率很低的情况下也能提供质量稳定的视频信号。3. 对延时约束的适应性较强。当用于实时通信应用中(例如视频会议)时,H.26L可以以低延时模式工作,而应用于对延时没有要求的应用中(例如视频存储)时,H.26L又可以以较高的效率处理延时。4. 具有误差处理能力。在分组网络中出现分组丢失时或在较易出错的无线网络中出现误码时,H.26L能够提供处理这类问题所必需的工具。5. 网络非常友好。在H.26L中,有一个新的特性,那就是视频编码层和网络适配层从概念上分离开来。视频编码层用于对视频图像的内容进行高比压缩,而网络适配层用于根据用户所使用的网络类型的不同,将压缩后的信息打包。这使得分组过程变得更加灵活和简单,同时也改善了对信息优先权的控制情况。
综合以上这些特性,可以看出H.26L在视频应用方面具有相当的优势。在本文的结束部分,我们将讨论H.26L用于视频会议时所具备的优势。
H.26L是如何实现上述功能的呢?
开发H.26L的主要目的是希望找到一种方法来充分地实现更好的视频质量,这种视频质量是任何现有视频编码标准都无法达到的。但H.26L的实现方法和以前的那些标准(例如H.263和MPEG-4)中所用到的方法差别并不显著,它包含以下四个主要步骤:
1. 首先,将每个视频帧分成像素块,于是,对视频帧的处理可以建立在处理像素块的基础上。2. 其次,通过进行变换、量化和熵编码(或可变长度编码),对一些原始像素块编码,从而将视频帧中的空间冗余度利用起来。3. 然后,只对连续帧之间出现的变化进行编码,从而充分利用连续帧之间存在的时间冗余度。这个过程是通过运动估值和补偿来实现的。4. 最后,对余差模块编码,也就是说,通过变换、量化和熵编码对原始模块和相应的预测模块之间的差异进行编码,从而充分利用视频帧内剩余的空间冗余度。
从编码的角度来看,H.26L和其它编码标准的主要差别如图2中的编码模块框图所示。从运动估值和补偿的角度来看,H.26L采用了各种尺寸和形状的模块,子像素运动估值的分辨率更高,并且可以有多种参考帧选择方案。从所采用的变换方式来看,H.26L采用的基于整数的变换方式类似于早期那些标准中所采用的DCT变换,不同的是,采用这种变换方式进行反变换时,不存在失配问题。
在H.26L中,熵编码有两种实现方法,其一是利用一个通用的可变长度编码表来实现,此外,也可由基于上下文的自适应二进制算术编码实现。
如何组织位流
前面讲到,在H.26L中,我们会将一个给定的视频图像化分为许多小像素块,这些小像素块就叫做宏块(macroblock)。如图3所示,我们将一幅分辨率为QCIF(176×144像素)的图像划分为99个16×16的宏块。对其它帧所作的宏块分段处理与此类似。
我们以原图像的分辨率对该图像的亮度信息取样,而对图像的色差信息Cb和Cr,则从水平方向和垂直方向上进行下取样。此外还应注意的是,一幅图像只能被分割成整数片,因为如果该图像在传输过程中丢失了一些信息的话,那么整数片的分割方法会大大有助于信息的再同步。
帧内预测(intraprediction)编码
帧内编码是指只利用视频图像内的空间冗余度来优化编码。采用这种编码方式得到的图像帧被称作I-图。I-图通常是通过直接对一帧中的各宏块进行变换得到的,其文件很大,因为此时帧内还含有大量的信息,而且编码过程丝毫没有利用图像的时间信息。
要提高H.26L中帧内编码过程的编码效率,就必须将同一帧中相邻宏块之间的空间关联性利用起来。提出这一想法的依据是人们发现相邻的宏块常常具有类似的特性。因此,作为对某一给定宏块进行编码的第一步,我们可以根据周围的宏块来预测我们所感兴趣的宏块,通常我们会选择目标宏块左侧和上侧的宏块,因为这些宏块已经经过编码了。然后再对实际的宏块与预测宏块之间的差别进行编码。这样,要表达出我们所感兴趣的宏块时所需的位数就比直接对该宏块进行变换所需的位数少得多。
H.26L提供了6种模式用于实现4×4亮度块的预测,包括直流预测(模式0)和其它5种有方向的预测模式(模式1到模式5,如图4所示)。图中,像素A到像素I均经过编码,可将这些像素作为相邻模块,用于预测目标块。
例如,如果选择模式2进行预测,那么像素a、e、i和m在预测中被设置为与像素A相等,像素b、f、j和n在预测中被设置为与像素B相等。对于空间细节含量较少的区域(平坦区域),H.26L也支持16×16的帧内编码,此时可在4种预测模式中选用一种来对整个宏块进行预测。
最后,每个块在选择其预测模式时,它采用各种模式的可能性由其周围模块编码时所采用的预测模式来决定,分配给某模式的符号越短,采用这种模式的可能性就越大。
帧间预测和编码
在帧间预测和编码(interprediction and coding)中,运动估值和补偿在实现时必须利用连续帧之间存在的时间冗余度,因而这种方法可有效地实现视频序列的编码。如果运动估值所选定的参考帧是一个经过编码的帧,那么目标帧(被编码帧)就叫做P-图。如果已编码帧和未编码帧均被选作参考帧,那么目标帧就叫做B-图。
H.26L中的运动估值能够支持早期视频标准中的大多数重要特性,不同的是H.26L中的功能更多也更灵活,因而其效率得到了改善。除了支持P-图(既支持单参考帧也支持多参考帧)和B-图以外,H.26L还支持一种新的叫做SP-图的流间过渡图像。H.26L中采用的运动估值所具备的主要特性包括:块大小和形状多种多样,高精度的子像素运动向量,多参考帧以及预测环路中的消块滤波器。
1. 块大小:我们可以通过使用多个不同大小和不同形状的块来完成每个16×16宏块的运动补偿,见图5。即使只有4×4那么小的块,H.26L也可为其传送特有的运动向量,因此H.26L最多可以为每一个宏块传送16个运动向量。H.26L同时也支持大小为16×8、8×16、 8×8、8×4和4×8的块,如图5所示。H.26L这种能够对小尺寸块进行运动补偿的能力,从整体上改善了目标预测的性能。特别值得一提的是,这同时还改善了整个系统模型处理精细运动细节的能力,并使得主观视觉质量得到提高,因为这些小尺寸块不会生成大的块状马赛克。
2. 运动估值的精确性:如果不由现有标准能达到的空间精确度来决定运动向量,而由更高级的空间精确度来决定运动向量,那么H.26L中算法的预测能力又会得到进一步增强。H. 26L中,四分之一像素精确度(Quarter-pixel-accurate)是其最低运动补偿精度。而在高位率和高视频分辨率下,采用八分之一像素精确度(eighth-pixel accuracy)可能对提高编码效率很有帮助。
3. 可选择多个参考图像:H.26L标准提供了一个选项,在图像进行帧间互编码时可以选择多个参考帧,最多5个,这样,主观视频质量更好,对需要编码的视频帧进行编码的效率也更高。此外,采用多个参考帧也可以使H.26L位流具备更强的差错处理能力。
具备消块滤波器:H.26L定义了一种自适应消块滤波器,该滤波器位于预测环路内,可工作于水平块边缘和垂直块边缘,以去除由于块预测误差引起的干扰效应。这种滤波通常是基于大小为4×4的块边界进行的,边界的两端上均有两个像素通过三点式滤波得到更新。
H.26L中的整数转换
不论是帧内预测还是帧间预测,预测误差块中包含的信息最后都以变换系数的形式表达出来。H.26L采用了一种和浮点8×8 DCT相反的纯整数空间转换(类似于离散余弦变换,形状为4×4),这种转换方法由早期的标准中用过的舍入误差容限定义。4×4的小尺寸有助于降低块状和环状马赛克,而采用整数转换又消除了反变换过程中编码器和译码器之间的失配问题。
H.26L中的量化
量化是数据压缩中很重要的一步。在H.26L中,变换系数通过无扩展死区的分级量化量进行量化。在每个宏块的基础上可选择32种不同的量化步长,这与早前一些标准的量化能力(例如,H.263支持31种不同量化步长)类似。但在H.26L中,量化步长是以前次步长的12.5%的速率递增,而不象过去的标准中那样每次递增一个常量。有些时候,亮度系数的量化非常粗糙,而色差信号在量化时则采用了这种更精细的量化步长,因而色差信号的保真度较亮度系数大有改善。
量化后的变换系数对应于各种不同的频率。图6左上角的系数代表直流值,而其它部分的系数则代表各种非零的频率值。编码过程的下一步就是将量化后的系数排成一列,直流系数排在列首。
H.26L规定了两种不同的系数扫描方式,见图6。大多数情况下采用的都是简单的双扫描方式,这种方式和早期的视频编码标准中所采用的传统扫描方式相同,根据系数所对应的频率将他们以升序方式排列。要提高编码效率就得采用双扫描方式,这种扫描方式只适用于量化步长较小的块内扫描。
熵编码
熵编码是视频编码过程中的最后一步。至今为止,H.26L中只采用了两种熵编码方法。第一种方法的基础是对通用可变长度码(UVLC)的应用,第二种方法的基础是基于上下文的自适应二进制算术编码。人们已经为在熵编码中统一采用一种方法付出了实质性的努力,这种方法很可能是基于特殊VLC的自适应应用的一种方法。
在对量化后的变换系数、运动向量以及其它编码信息进行压缩的各种方法中,基于VLC的熵编码方法是使用最广泛的一种。VLC的基础就是为出现可能性较大的符号分配较短的码字,而为出现频率较低的符号分配较长的码字。各符号和相应的码字存储在一个叫做VLC表的查找表中,编码器和译码器中都存有该表。
在H.263之类视频编码标准中,根据感兴趣信息的类型(例如变换系数或运动向量)不同,需使用许多的VLC表。而在H.26L中,不论符号所代表的是什么数据类型,都可以用一个通用的VLC表来对编码器中所有的符号进行熵编码。
基于上下文的自适应二进制算数编码在编码器和译码器内都采用了一种概率模型,该模型适用于所有的语法元素(如变换系数、运动向量)。为了提高算术编码方式的编码效率,我们可以通过对上下文建模,将一个潜在的概率模型应用于视频帧的不断变化的统计量。这样,我们就能对编码符号进行有条件的概率估计。
如果我们采用了恰当的上下文模型,那么我们就可以根据当前符号周围的已编码符号的情况来决定如何在各种概率模型之间切换,从而达到利用符号间已有的冗余度的目的。每个语法元素都支持一个不同的模型,例如,运动向量和变换系数的模型就不相同。如果一个给定的符号具有非二进制的值,那么就将它映射为一个二进制序列,或者叫做“bins”。确切的二进制值转换是通过一个给定的二进制树实现的,在本文讨论的模型中采用的是UVLC二进制树。
接着,采用新的概率估计来对这个二进制结果进行算术运算,此处采用的概率估计系在前一次上下文建模阶段更新后的概率估计。在对每个二进制数值编码过后,这个概率估计的值又要根据刚刚编码之的二进制符号进行调整。
本文小结
在利用数字信号处理器实现H.26L的过程中,充分利用了各种新技术,使得实时视频通信应用的视频质量和图象延时都有所改善。一个实时视频会议应用最能说明H.26L的实现机理。视频会议一般都将稳定的视频质量、较低的延时和较强的抗分组丢失能力作为最主要的要求(即便在带宽有限的情况下也要求视频质量稳定)。而在一次涉及音频、视频和数据的视频会议呼叫中,视频部分通常会占用整个呼叫可用带宽的绝大部分。如果视频部分所需的带宽能够得到降低,那么将会有更多的低带宽网络接受视频会议系统这种应用。H.26L就针对这种需求,将带宽需求从H.26+所需的320kbps降低到160kbps。
此外,许多视频会议解决方案为了保证视频质量令人满意,仍在采用二次(two-pass)编码方式,但这种编码方法会为会议呼叫引入令人讨厌的延时。H.26L方案则保证了即使只采用一次性(one pass)编码仍能得到优秀的视频信号,这样做也就降低了二次编码方法中的处理延时。尽管在目前,大多数视频会议呼叫都发生在本地专用网上,但在分组传输中仍然会出现一定程度的分组丢失。H.26L具备的编码端的误差处理能力和在解码端的隐藏错误的能力使其即使在分组丢失率很高的情况下也能有效对抗这种分组丢失