您的位置:首页 > 其它

转:分布式视频编码关键技术及其发展趋势

2012-11-28 14:42 183 查看
1引言

当今的视频压缩编码标准,如ISO与ITU-T分别领导制定的视频压缩国际标准MPEG-x系列与H.26x系列,已被广泛应用于图像视频的各个领域,取得了较大的成功。因编码器承担了运动估计、变换、量化、熵编码及相应解码等大量高复杂计算,使得编码复杂度是解码的5~10倍以上[1]。这种编码复杂解码简单的不对称编解码系统在以往的视频广播或VOD(videoondemand)流媒体点播等应用中显然是非常适合的,因为此类系统的视频信号是一次编码多次解码。

随着微电子、通信与计算机技术的迅猛发展,大数据量的图像视频类多媒体信号在无线网络上的实时传输,己经越来越成为一个令人瞩目的研究热点。特别是高速无线网络以及配备了摄像头的具有视频采集、编码、传输能力的无线手持设备的爆炸式发展,己经为大数据量的无线视频提供了必备的平台环境。目前,引起较多关注的无线视频传感网络(wirelessvideosensornetwork,WVSN)中,使用带摄像机的无线视频节点(wireless video node,WVN)来处理、存储及时拍摄到的视频,然后上传至网络某一固定的基站。以上介绍的应用场合,都需要满足以下要求:由于电池容量有限,要求无线视频编码器低功耗、低复杂度;由于传输速率的限制,要求编码器具有高压缩效率;由于采用无线接入与传输,要求视频信号传输具备强健壮性。上述应用领域的特点是编码设备较简单,解码设备因拥有较多资源可以进行高复杂计算,所以传统视频编码技术已不再适用于这些应用场合,须寻找新的编码压缩方法。

为此,一种全新的视频编码框架——分布式视频编码DVC实现系统开始受到关注,其理论基础是信息论中的Slepian-Wolf(SF)[2]和Wyner-Ziv(WZ)[3]两定理。虽然在20世纪70年代从理论上证明了多个相关信源独立编码联合解码同样可以达到联合编码联合解码的编码效率,但直至2002年才开始有学者进行分布式视频编码的实现算法研究,且取得了一定成果并逐渐引起关注。经前期的初步研究证明,这种全新框架的视频编码具有以下主要特点:低复杂度的编码,高复杂度的解码;对于容易产生误码的通信网络如无线通信),具有较好的健壮性;具有较高的压缩效率;易形成分级编码码流。分布式视频编码非常适合于便携式、耗电低、运算能力和带宽均受限的无线视频发送终端,可为未来无线视频信号编码与传输提供具有极大竞争力的解决方案。同时,随着研究的日益深入,分布式视频编码已被学者们用来解决更为广泛的问题,如低复杂度编码、多视角编码、信息安全、可伸缩编码、多描述编码、光场编码及抗误码传输等。

2分布式视频编码关键技术及其研究现状

目前,关于分布式视频编码的研究才刚刚起步,主要的编解码算法有:BerndGirod等提出的WZ视频编码[4];Ramchandran等提出的PRISM(power-efficient robust high- compression syndrome-base multimedia)视频编码[5];Xiong Zixiang提出的分级WZ视频编码[6];基于小波编码的分布式视频编码方案[7];Sehgal等提出的“state-free”分布式视频编码[8]。这些分布式视频编码都是在编码端把各帧图像看成“独立信源”,各帧之间进行独立编码,编码方式类似于传统的帧内编码。在解码端,利用时域相邻帧的高度相关性,通过对已解码重建帧运动估计进行时域内(外)差求取边信息(side information)。利用边信息和SF解码器联合迭代解码以重构当前待解码帧图像。由于在分布式视频编码系统中的解码端,需用运动估计抽取时域相邻帧的相关信息,所以此类系统中的编码器可以较为简单,从而把计算量较大的帧间预测(如运动估计)转移到解码端。由此可见,分布式视频编码与传统视频编码相比,其明显区别在于:基于运动估计的混合视频编码(如MPEG-x, H.26x),编码端各帧之间通过运动估计进行联合编码,解码端通过运动补偿来联合解码;基于SF与WZ理论的分布式视频编码,编码端每帧采用类似帧内编码的独立编码方式,解码端利用帧间时域相关性进行联合解码(注:也不同于基于JPEG的视频编码,如Motion-JPEG,每帧基本上都是各自独立地进行编码和解码)。

2.1分布式视频编码器

分布式视颇编码器实现方案的研究是从Puri[5]和Aaron[4]开始的。现有方案将视频序列分割成多个GOP(groupofpictures),每个GOP由一个K帧和多个WZ帧构成(目前大部分方案中,每个GOP仅由一个K帧和1个WZ帧组成)。其中,K帧图像采用传统的视频编码器进行编码,WZ帧的图像送入分布式编码器。对于被送入分布式编码器的图像,首先把视频帧划分成空间上互不重叠的块;然后,进行块变换,变换系数量化;最后,送入SF编码器中进行SF编码生成伴随式或校验式码流。分布式视频编码是通过发送校验码取代原始帧数据来获得压缩增益的,因为在一般情况下,当前帧所产生的校验比特比原始信息比特少很多。对于视频信源,参考文献[4]提出对帧图像进行分块变换,然后将各块的变换系数进行组合形成系数带,对每个系数带单独进行WZ编码。由于各系数带代表了不同的频率分量,因此在量化时可根据人眼的视觉特性采用不同的量化步长。量化之后各系数带形成比特平面进行编码。这种方法通过变换使编码器能利用图像的空间统计相关性,因此其率失真性能好于简单的像素域编码,可以取得高达2~2.5 dB的增益[9]。参考文献[10]提出了对帧图像进行分块变换后,将各系数块的低频部分进行WZ编码,而高频部分采用传统的熵编码。

2.1.1量化技术

通常情况下,认为WZ编码器是由一个量化器和一个SF编码器组成。对于传统的视频编码来说,量化器是非常关键的一个环节,因为图像的失真基本上是由量化器决定的。由于分布式编码中的解码器是整个编码系统结构的核心,因此分布式编码中的量化器无法直接继承传统图像视频编码技术中的量化器设计方法。参考文献[11]中使用的是一个基于Trellis编码的量化器;参考文献[12]提出了一种基于Lloyd算法的量化器。Zamir[13]证明了联合高斯分布情况下,线性编码和嵌套的格子结构可以逼近WZ率失真函数,构成了分布式编码中量化器设计的理论基础。

2.1.2变换

最简单的分布式视频编码是在像素域进行的,即直接对帧的像素数据进行WZ编码,但这种方法无法利用图像的空间统计相关性。参考文献[14]提出对像素域的帧差数据进行WZ编码,即在预处理中计算当前帧各像素与参考帧对应像素的差值,对该差值数据进行WZ编码。其代价是编码器中需有存储参考帧数据的帧存储器,另外还需要进行差值运算。Aaron和Puri各自独立提出了采用基于DCT变换的方法,即对于WZ帧首先进行DCT变换,然后把变换系数输出到量化器,这种方法在编码效果上要优于基于像素的方法。参考文献[7]提出了基于小波变换的WZ编码方案,即对帧图像进行三级离散小波变换,并将变换系数划分为8×8的系数块,然后根据当前系数块和前一帧对应系数块之间的均方误差将系数块分为跳跃块、帧内块和帧间块三种类型,只有帧间块的16个低频系数进行WZ编码。Gastpar在参考文献[15]中对分布式编解码下的Karhunen-Loeve(KL)变换做了分析。

2 .1.3SF编码

WZ编码实际上由一个SF编码器和一个前置量化器组成。对于SF编码,30年前人们就明白其非常接近于信道编码[2],即可使用系统信道编码来生成校验位。解码端联合校验位X和边信息Y,执行纠错解码。如果X与Y非常相似则只需要传输少许校验位和少量辅助信息,实现高效压缩。需要强调的是,这个方法并不执行前向纠错来保护信道传输的错误,而是使用一个虚拟的相关信道来获取X和边信息Y的统计相关。另一种编码实现方法即将序列X分为陪集,编码端发送X所属的陪集索引,接收端通过选择陪集中与边信息Y距离最短的码字。这两种解释在本质上是相同的。基于SF编码和信道编码之间的关系,理论上如果信道编码能够渐进地接近信道容量,那么把它应用于分布式信源编码就能渐进地接近SF理论极限。所以,早先研究分布式编码的工作主要体现在信道编码领域,如Turbo码、网格码、RS(reed-solomon)码等,且主要针对高斯信源进行研究。大体上说,得到的结果表明它们在性能上接近于SF和WZ的理论下限。这些方法大多采用迭代的解码器,如Bayesian网络、Viterbi解码器等,虽然极大地简化了编码器的工作,但对于需要负责信源统计特性的解码器来说,计算量太大。近年来,LDPC(low-densityparity-check)码[16]以其优异的性能、简洁的形式及良好的应用前景备受青睐。

2.2分布式视频解码器

分布式视频解码器主要由SF解码器、边信息生成模块及重建模块组成。解码器将接收到的经典视频码流送入传统视频解码器,而把伴随式码流送入WZ解码器。送入传统视频解码器的视频码流解码后重构出图像,这些重构得到的图像还将用于边信息的估算。另一方面,伴随式码流送入SF解码器,利用边信息,通过迭代译码就可以以较低的译码错误概率联合解码出原始信息X。

2.2.1运动估计和边信息估值

主信息(maininformation)是WZ编码的信息,但在解码端仅能接收到编码端传送的SF编码后的校验位流,所以是未知的,其对应估计值称为边信息。分布式视频解码的突出难点是如何准确估计边信息。从另一个角度可以说边信息是对当前帧的预测,相当于传统编码中对P帧或B帧的预测,只不过这个预测是在解码端进行的,即是在解码器端生成的对主信息的一个估计。估算精度越高,说明边信息与当前帧越接近,相当于虚拟信道的误码越少,经过信道解码后误码率就越低。因为信道解码后得到的只是当前帧的量化版本,所以还需经过重建过程才能得到帧图像。重建过程通常也要用到边信息,且边信息的预测精度越高,则重建后的效果越好。参考文献[17]的研究表明,在解码端采用运动搜索的边信息生成方法可以提高编码效率,这是因为使用运动搜索可以减少边信息中的相关错误,因而只需发送较少的校验比特就可实现当前帧的解码。在解码端因当前待解码帧是未知的,所以如何在当前帧未知的情况下做运动搜索以较准确地估算出边信息是分布式视频编码中的关键问题之一。

为降低边信息估算的复杂度,有些方案完全利用解码端数据来产生边信息;为了提高边信息估算的准确性,有些方法则从编码端传送一些辅助数据,以帮助解码端产生边信息。最简单的边信息产生方法是在解码端直接将当前帧的前一帧数据作为边信息。其好处是计算简单,但只单纯利用前一解码关键帧,当画面内容变化较大时,估算出的边信息与主信息相差也较大,因此编码效率较低。参考文献[18]提出在解码端利用平均值内插方法和运动补偿内插方法产生边信息。平均值内插是指将前后相邻两帧同位置处的像素值进行平均,作为该位置处的边信息值。运动补偿内插(motioncompensationbasedinterpolation,MC-I)是指将帧的前后两帧作为参考帧,进行运动补偿预测,得到边信息。实验结果表明,对于整帧高速运动的场景,运动补偿内插方法的率失真性能要比平均值内插方法高3~4 dB。MC-I方案由于当前帧的解码必须在后一帧解码完毕之后才能完成,因此会带来一帧的时延。此外,由于前一帧和后一帧的编解码都只能用帧内编码进行压缩,整体编码效率会因此降低。基于运动补偿的外推插值法(motion compensation based extrapolation,MC-E)可解决延时一帧问题。所谓帧间外插是指用前面已经解码的两帧图像进行运动估计,并假设两帧中的块做直线运动,这样可以外推出当前待解码帧中块的运动,进而利用前面已解码的帧得到当前待解码帧的近似。进一步研究表明,基于块运动估计的边信息生成方法所能带来的增益有限,需要更加有效的运动估计方法以估算更准确的边信息。为了得到预测精度高的边信息,可从编码端向解码端传送帧的某些信息,以辅助解码端完成帧的运动估计和运动补偿预测。参考文献[5]提出的PRISM系统中,编码端向解码端传送了WZ帧量化符号的CRC数据,用来帮助解码端完成运动估计和运动补偿预测。参考文献[19]提出了另一种方法,由编码端向解码端传送WZ帧的Hash码字。Hash码字的产生方法是将帧分成8×8的块,每一块分别进行采样和量化。解码端可根据Hash码字的匹配情况在参考帧中完成运动搜索(MC-H),从而产生边信息。MC-H算法的预测精度要高于MC-E和MC-I,提高了解码图像的客观质量,但是基于Hash的算法也并非尽善尽美。首先,如何选择合适的特征信息,使其既能很好地代表原始帧信息又不会占用过多的码率,仍是值得研究的课题;其次,将Hash信息采用VLC(variable length coding)编码严重地破坏了分布式编码的抗噪声健壮性,使高频DCT量化系数失去了信道纠错码的保护。MC-H算法与MC-E和MC-I算法的结合使用是一种有效途径。尤其是对MC-E算法,若在解码端能利用一些特征信息进行运动估计,则可大幅提高解码边信息的估计质量。

以上讨论充分说明,解码器边信息的寻找是WZ视频编解码技术所特有的,同时对编解码器的质量影响很大[20]。如何找到有效、准确的边信息是WZ视频编解码的重要研究方向。

2.2.2联合解码重建

联合解码重建算法是影响系统失真性能的另一主要因素。目前的WZ视频编解码器都是基于非对称的SF编码理论,也就是说边信息Y是用传统的编码器来进行压缩的,而X利用边信息来进行压缩编码和解码的。得到图像帧中待解码块的边信息后,把这个边信息送入WZ解码器,通过重建就可以得到该块,这时用重建的块做运动估计(单向或者双向都可以),找到一个跟WZ重建块最接近的预测块,然后把这个预测块作为WZ重建块的边信息,再次送入WZ解码器,迭代重建得到该块,迭代多次后就可以取得更好的性能。

Step1:对已解码的关键帧K之间进行运动估计(结合编码端的辅助信息,如Hash码,如有的话),得到运动矢量,进行时域插值,得到边信息Sside。

Step2:SF解码器利用边信息,Sside联合解码出Sq。

Step3:结合边信息的概率统计模型,Sside和Sq利用最大后验估计(maximumaposteriori,MAP)联合重构Wyner-Ziv帧。

Step4:迭代重建,直到解码误差达到规定的要求。

解码较为复杂,通过帧内解码、SF解码、运动估计、插值和最大后验估计等进行联合解码。

2.3分布式视频编码的码率控制技术

在分布式视频编码中,X和Y之间的统计特性在编码端是未知的。用分布式信源编码技术实现的低编码复杂度的视频编码把一帧视频图像当作X来对待,把该帧图像在解码端的预测值当作边信息Y。由于视频信号是非各态历经的,所以可以达到的最佳压缩比例是变化的,而且不能由编码器预先得到。在分布式视频编码中,有3个方面的因素会影响到压缩信号的码率。首先是K帧与WZ帧的比例,相当于传统编码中I帧与P帧或B帧的比例。由于K帧采用传统的帧内编码,因此K帧比例大会导致被压缩信号码率高,虽然K帧比例大有利于在解码端产生预测精度高的边信息。第二个因素是K帧的码率,这取决于帧量化步长的选择,与传统视频编码情况完全相同。第三个因素是WZ帧的码率,这取决于WZ帧的量化步长及传输的校验位数量。WZ帧的量化步长会影响信道编码产生的校验位总数,同时也会影响解码端重建图像的质量。当量化步长确定后,校验位总数也随之确定,此时,传输的校验位数量将取决于虚拟相关信道的统计特性,即帧和边信息之间的统计相关性。但由于边信息是在解码端得到的,因此在编码端很难确定要传输多少校验位才能在解码端成功地完成信道解码(以下称校验位数问题)。在上述3个因素中,对帧与帧的比例可借鉴或使用传统视频编码中的方法,但对帧码率的控制则是一个新的课题,也是分布式视频编码中的一个研究重点。

带反馈的帧码率控制是解决校验位数问题的一个好方案。编码器传递一个较短的伴随式,解码器试着解码。如果解码器顺利解码,解码器反馈这个信息给编码器,然后编码器再对下一个图像块的数据进行压缩。如果解码器解码失败,那么就反馈通知编码器,编码器给较短的伴随式加上一定数量的比特数,构成一个较长的伴随式。这个过程一直循环,直到伴随式足以顺利解码。参考文献[21]提出一种在解码端实现帧码率控制的方案,即在帧量化步长确定的情况下,由解码端利用已收到的校验位进行解码,当无法成功解码时,则通过回传通道请求编码端传送更多的校验位。这种方法在保持编码器不变的情况下,只需改变解码器的设置就可改善整个系统的压缩性能,这与传统视频编解码系统的情况正好相反。这种方法的缺点是需要回传通道,而且解码端请求传送更多校验位的过程需在线完成,即在编码器工作的时候完成。显而易见,这种方法只有在存在反馈信道并且这个循环过程不是非常复杂的情况下才具有实际应用价值,因此不适合存储设备的应用。参考文献[5]提出了另一种帧码率控制方法,即在编码端做一些简单的时域相关性估计,以便确定编码码率。该方法需要编码端存储前一帧的数据,并将当前的帧分成大小相同的像素块。根据各块与前一帧对应块的帧差能量大小将其划分为不同的类型,对不同类型的像素块采用不同码率的编码。这种方法不需要回传通道,与解码端使用运动补偿预测技术产生边信息相比,这种估计就会很不精确,即相当于编码端粗糙的相关性估计会造成码率控制不准确。截取过的LDPC码虽也可进行一定程度的码率控制,但截取过的LDPC码在信源压缩上的性能却很差,哪怕只是采用了很轻微的码字截取操作。

3分布式视频编码需要进一步研究的关键问题

目前分布式视频编码的研究已经获得到了很多较有意义的成果,然而距离实际应用还有不小的差距。前人探索性的研究,提供了许多富有挑战性的研究课题。

3.1编码复杂度与压缩效率的权衡

分布式视频编码是由于无线视频通信的需求而被提出的,并因此逐渐引起关注。但应用于无线环境下的分布式视频编码系统对编码器的要求较为苛刻,尤其是要求低编码复杂度和高压缩效率,然而要做到二者均达到最佳效果在实际系统中是非常困难的。如何权衡编码复杂度和编码的压缩性能是设计实用视频编码系统的一个重要课题。PRISM方案的研究结果显示,将运动估计的复杂度在编码器和解码器之间任意分担,不会造成率失真性能上限的损失。但此时的运动估计的匹配标准和方法与经典视频压缩不同的。经典视频编码的运动估计目标是使编码该图像块的目标码率最低,而分布式视频编码运动估计追求的是找到最相似的目标块,即二者运动估计的模型不同。分布式视频编码对运动估计模型的准确性要求更高,因而复杂度也更高。且压缩效率与该模型的准确度密切相关。如果将帧间相关估计全部移至解码端,则编码端的码率估计与码率控制必须通过反馈信道即依赖于解码端。

3.2当前解码帧和边信息的概率统计模型

边信息可以看成是当前待解码帧的加性噪声版本,因此当前帧和边信息之间的残差可以看成是统计相关信道引入的错误,而这些错误可以用编码端发送的校验码纠正过来。即分布式视频编码把每帧图像都看成彼此相关的信源,通常认为边信息和当前解码帧的概率分布近似满足Laplacian分布,而这一概率模型并不能精确地描述所有视频运动模式的可能性。实验表明,当前解码帧和边信息的概率模型对解码重建的健壮性有非常重要的影响,有参考文献如PRISM方案对其概率模型做了初步的探索,同时指出需要研究更为精确的数学模型解决该问题。

3.3K帧选择与辅助信息的质量

类似于传统视频编码中变换I、P、B帧的比例来获取不同的编码效果一样,在WZ编码中,可以通过变化K帧之间WZ帧的数量来获得各种要求的编码效果。如果在视频序列中,抽取高质量的K帧的比例增高,则WZ帧的辅助信息就会随之丰富,因此得到的重构和解码质量也相对较高,但是由于对K帧的编码方式是帧内编码,其码率远远高于WZ帧。且随着K帧比例的增高,整个系统码率也必然会逐步上升。K帧数量和辅助信息质量之间的权衡,对于整个系统的编码效率和最终的解码质量都是至关重要的。

3.4更有效的基于运动估计的边信息估值和联合解码重构算法

WZ帧的压缩效率主要来自于解码端对边信息的估计和联合解码重建。目前的直接把基于块的运动估计的方法加入分布式视频解码器的方法所能带来的增益有限,需要更加有效的运动估计方法。在WZ视频编码中运动估计和传统的视频编码中的运动估计有两个主要的区别。

第一,运动估计在整个视频系统中的位置不同。传统视频编码中,运动估计在编码端进行,在当前帧(原始数据)和已解码重建帧之间计算运动矢量;而在WZ视频编码中的运动估计是在解码端进行的,在解码的重建帧之间计算估计运动矢量。

第二,运动估计的计算准则不同。在传统的视频编码中,基于块的运动估计的主要计算准则是寻找最小MAD(meanabsolutedifference),以至于达到最佳的压缩效果,所以计算出的运动矢量和真实的运动矢量不一定相同。在WZ视频编码中,估计的运动矢量通过时域内插得到边信息,如果所估计的运动矢量和真实的运动矢量有较大差距,内插出的图像会出现方块效应,造成当前的解码图像质量下降,所以在WZ视频编码中,估计的运动矢量需要尽可能地和真实运动矢量相一致。

基于Affine或Huber-Markov随机场或者光流的运动模型,或许可以进行更有效的边信息生成。由于考虑到编码复杂度和压缩效率,编码端不可能提供太多的比特负载,这就需要在解码端通过对已解码的重建帧做运动估计,利用先验概率模型进行边信息估值。同时在解码重建函数中,需要考虑在发生误码的情况下(如边信息估值错误或当前帧传输出错),如何实现解码的最佳重建。对于采用什么方式的运动估计算法得出更为精确的边信息,如何构建更佳的解码重建函数,目前只有一些具体改进的算法提出,然而这些算法缺乏较为详细的实验数据和理论分析。

4结束语

对于视频压缩,DVC是一种全新的框架。该框架虽包括一些传统信源信道编码中常用的环节,如变换、量化、纠错编码、运动估计、码率控制等,但这些环节需要在新的框架下重新设计和优化。另外,DVC中还有一些特有的环节,如边信息的产生、虚拟信道统计相关性的估算、联合解码算法等,需要进一步地深入研究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: