一种用于H.264视频容错转码的帧内宏块刷新算法
2012-06-06宋建新
龚 婷,宋建新
(南京邮电大学图像处理与图像通信实验室,江苏 南京 210003)
随着通信技术和计算机技术的飞速发展,视频信息在网络中的处理和传输变得越来越受关注。由于视频信息本身的特点是信息量大,冗余多,因此一系列的编码标准随之产生,主要目的是对视频信息进行压缩,提高编码效率。目前,主流的编码标准,比如 H.261,H.263,MPEG-1,MPEG-2,MPEG-4,H.264/AVC 都是利用运动估计、运动补偿技术作为基础进行压缩的。这些压缩过的视频码流最大的缺点就是对传输差错比较敏感,最经常出现的是差错传播。为了克服这些缺点,需要在视频流中加入容错信息。
不同的网络有不同的网络特性,特别是对于无线网络,误比特率丢包率的增加,信道特性的不稳定性,多径衰落等等,更需要容错信息的加入来增强码流的健壮性。狭义的视频转码[1]是指将已压缩的视频流从一种格式(如空间分辨力、帧率、码率等)转换为另一种格式的操作。广义的视频转码[1]则包括在已压缩视频流中嵌入信息(如数字水印、容错性工具等)的操作。容错性视频转码就是指在已压缩视频流中嵌入容错性工具的转码。
在现有研究的算法中,在文献[2]和[3]中对视频容错转码中的容错技术进行了概括性的分析和总结。各种容错技术概括起来分为4类:容错信息植入,数据分层细化,冗余编码和差错掩盖。容错信息的植入包括时域的帧内宏块刷新和空域的重同步信息的插入;数据分层细化是指根据码流不同的重要性而给予不同的保护策略;冗余编码包括多描述编码和可逆的变长度编码;差错掩盖是利用运动补偿恢复图像的方法,不同的视频编码标准中有不同的差错掩盖方法。对于无线信道中视频容错转码,文献[4]进行了具体研究,文中容错转码采用的是容错信息的植入,首先提出了如何在编码的比特流中植入空域和时域的容错信息,对于这个容错信息的量是多少则依据无线信道反馈的信道条件,比如误比特率BER;其次提出了如何利用编码部分的运动补偿来分析视频差错传播程度;最后由于容错信息的加入,比特率的增加需要采用率失真模型进行率失真优化,以达到输出比特率与输入比特率的平衡。对于GPRS和3G移动无线网络,文献[5]采用了视频代理(video proxy)来实现不同网络之间主要是Internet和GPRS移动网络之间的转码的功能。结合GPRS网络的结构特点,在已压缩的视频中加入容错信息,容错算法采用自适应帧内刷新(AIR)和反馈控制信号(FCS)。
应用比较广泛的容错技术是帧内宏块刷新算法,该算法是将一些对差错比较敏感的宏块由帧间编码模式刷新为帧内编码模式。由于帧内编码模式所需要的比特数大大增加,所以这种容错信息的加入势必引入了一定的冗余信息,从而影响到了编码效率。视频容错转码的关键也就变成了如何选择算法使得编码效率和容错能力都能达到最优。本文提出的自适应的帧内刷新算法,利用转码解码端提取出来的运动矢量信息,动态地计算出每一帧需要的帧内宏块刷新数目,并且结合了编码端的码率控制技术。通过和没有进行容错转码(NO_IR)以及采用固定宏块数随机帧内刷新(R_IR)这两种情况作对比,实验结果表明该算法在码率增加较少的情况下,有效地增加了视频在无线信道中的抗误码性能,解码出来的视频质量无论在客观上还是主观上都有了显著的提高。
1 总体架构
视频转码系统的种类很多,主要分为同构转码和异构转码,同构转码是指格式内的转码,而异构转码是指标准和格式之间的转码,比如MPEG-2到H.264的转码。根据转码实现的功能分为空域和时域的转码,空域是指空间分辨力转码,时域是指帧率以及码率的转码等等。根据结构又可以分为开环结构和闭环结构,开环结构构架简单,但是存在严重的误差漂移现象。针对这一缺点,闭环结构很好的解决了这一问题,结构就相对复杂。根据解码端的解码程度还可以分为像素域的转码和DCT域的转码。本文中的容错转码是以上述的转码结构为基础,功能上进行容错信息的加入,增强了视频码流的抗误码性能。
视频容错转码是视频流在高误码率的无线信道传输的一种关键技术,特别是在各种信道特性动态改变的网络条件下显得尤为重要。现今,手机,PDA等移动设备终端具备接收视频信息的能力,视频信息从有线网络传输到3G等移动无线网络,移动网络视频终端需要快速顺畅的接受到合适的格式码率分辨力的视频信息。为了适应网络之间的异构性,本文要做的工作就是在转码节点实现视频容错转码的功能,网络环境如图1所示。
图1 视频容错转码网络环境
具体实现过程如图2所示,其中包括以下功能模块。首先,最重要的是实现视频容错转码功能,这个过程基于的转码平台是H.264到H.264的转码,具体结构是p264解码端和JM86编码端级联的像素域转码。采用p264解码器主要是因为它是依据x264编码框架而编的解码器,具有和x264一样的优点,例如结构简单、实用性强,而且p264解码速度很快。这在一定程度上弥补了JM86编码端编码慢的缺点。采用JM86作为编码端是因为JM系列的测试代码具有很完善的功能,这为之后的码流可以选择更多的功能提供了很大的便利性。其次,对于已经经过容错转码的视频码流要在不同误码率或是丢包率的无线网络仿真环境进行处理,对于这一模块,根据已有的论文中提出的方法,选用ITU推荐的3G无线视频通用仿真测试环境[6],具体的代码采用N37。最后,要采用JM86解码器对有差错的已编码视频流进行解码,通过对比PSNR等参数进行各种算法性能的对比。
图2 视频容错转码系统功能模块
2 容错算法
容错算法有很多的经典算法,本文采用自适应帧内宏块刷新(AIR)算法。帧内宏块刷新算法首先要进行错误的估计和衡量,在这个步骤中有的算法是根据运动矢量来计算每帧所需要刷新的宏块数[7],有的是根据由量化误差和运动补偿所带来的端到端的Distortion[8],还有的是将帧内宏块刷新算法和率失真理论相结合[9]。采用端到端失真估计和率失真理论的算法虽然可以有效平衡编码效率和容错能力,但是失真估计本身算法复杂,需要考虑的因素很多,很多变量在具体的实现中并不能精确的得到。
本文采用的帧内宏块刷新算法,是利用解码端的运动矢量信息来确定每帧需要的帧内刷新宏块数,然后在编码端进行刷新。运动矢量信息从解码端直接提取出来,不需要复杂的计算,这是该算法最大的优点。具体的容错转码结构如图3所示。
图3 容错转码结构框图
该帧内宏块刷新算法简称MV_IR,其具体的计算流程如下所述:
1)视频信息中运动特性的计算。这里采用文献[7]中归一化运动信息的概念(Normalised Activity Index,NAI),这个函数代表每个宏块的运动信息在所有宏块中所占的比重,用于后面如何确定每帧最优的的帧内宏块刷新数目。函数输出值越高就表示这些宏块属于高运动场景,需要更多的帧内刷新宏块;反之亦然。NAI计算公式为
式中:i(j)表示第j帧的运动活跃的宏块数,mvj(n)为第j帧中第n个宏块的运动矢量,τ是指每一帧的宏块总数。通过计算得出的结果显示,NAI(j)能够有效地代表图像序列的运动特性。图4为H.264测试序列foreman_qcif的300帧的NAI值,可以明显地看出在第180帧到220进行帧场景变换,运动最为强烈。
图4 foreman序列计算出的NAI值
2)每帧帧内刷新宏块数目的确定。如下式
式中:IR(j)表示由运动信息决定的帧内宏块刷新速率,j代表第j帧。其中,δ(j)是调控参数,如果一幅图像大部分帧都是运动平缓只有少数帧是运动剧烈的,如果不加δ(j)这个调控参数,会得出较大的帧内刷新数目,这样浪费了资源,编码效率会大大降低。所以,δ(j)调控参数有归一化的作用。
δ(j)由公式(3)表示,其中α为系数,τ是指每一帧的宏块总数。α值由R(j)决定,表示式为
3 实验结果与分析
实验平台为H.264视频容错转码系统,本文选择foreman和carphone两种测试序列,大小为QCIF格式,分辨力为176×144,各为30帧。转码系统中编码端打开码率控制功能,每片两个宏块,输出码流为RTP打包模式。无线信道仿真环境选用ITU推荐的3G无线视频通用仿真测试环境[6],选择18681.3,18681.4 以及 wcdma_128kb_3kph_5e-04.bin三种差错图样文件,误比特率BER分别为10-2,10-3,10-4,在表1 和表2 中分别用e02,e03,e04来表示。
表1 foreman序列实验结果对比
表2 carphone序列实验结果对比
这里选择其他两种情况:一种是没有进行容错转码(NO_IR),另一种是采用固定宏块数的随机帧内刷新(R_IR),用这两种算法和上述帧内刷新算法(MV_IR)的容错效果作对比。并且,R_IR中的固定刷新宏块数由MV_IR计算出的所有帧的平均刷新宏块数决定,比如,R_IR算法中每帧刷新宏块数foreman序列定为40,carphone序列定为15。实验结果如表1和表2所示,表1是foreman序列第181帧到210帧的转码输出的比特率和解码端的SNRY,表2是carphone序列第201帧到230帧的转码输出的比特率和解码端的SNRY。
表1和表2的实验结果表明:对于foreman序列,MV_IR容错算法在解码端的图像质量比NO_IR提高了平均1.2 dB,比R_IR容错算法提高了平均0.1 dB,而且比特率和R_IR容错算法相比有了明显地降低,减少了约12%;同样,对于carphone序列,MV_IR容错算法在解码端的图像质量比NO_IR提高了平均2 dB,比R_IR提高了平均0.1 dB,比特率和R_IR相比也有了明显地降低,减少了约16%。
对于foreman序列,MV_IR容错算法计算出的帧内宏块刷新数目在40块左右,这对于R_IR容错算法来说意味着每帧都要刷新40个宏块,所以其转码输出的比特率会有很大幅度的增加。而MV_IR容错算法能够自适应地决定每帧的帧内刷新宏块数,并进行刷新,能够以较少的比特率为代价,有效地提升了解码端的SNRY。同时,解码端的主观质量也有了明显的改善,如图5所示,其中a图和b图分别表示NO_IR容错算法和MV_IR容错算法解码端输出的YUV序列。通过对比发现图5a中间信号塔和建筑交接的地方出现了很明显的失真,而图5b中没有很明显的失真,总体改善了很多。
图5 foreman第10帧主观质量对比
4 小结
本文所述的基于运动矢量信息的帧内宏块刷新算法有效地提高视频码流的抗误码性能。并且结合JM86中的码率控制,与其中自带的随机帧内宏块刷新相比,明显地降低了码率,提高了视频传输质量。这对视频在带宽有限的无线信道中传输有重要的意义,在移动娱乐、移动监控等领域也具有广泛的应用价值。
[1]余圣发,陈曾平,庄钊文.针对网络视频应用的视频转码技术综述[J]. 通信学报,2007,28(1):111-118.
[2]VETOR A,XIN J,SUN Huifang.Error resilience video transcoding for wireless communications[J].IEEE Wireless Communications,2005,12(4):14-21.
[3]ZHANG Xinchen,HUANG Mei.Error resilient transcoding for wireless video transmission[C]//Proc.2009 International Conference on Wireless Networks and Information Systems.[S.l.]:IEEE Press,2009:286-289.
[4]DE LOS REYES G,REIBMAN A R,CHANG S F,et al.Error-resilient transcoding for video over wireless channels[J].IEEE Journal on Selected Areas in Communications,2000,18(6):1063-1074.
[5]DOGAN S,CELLATOGLU A,UYGUROGLU M,et al.Error-resilient video transcoding for robust internetwork communications using GPRS[J].IEEE Trans.Circuits and Systems for Video Technology,2002,12(6):453-464.
[6]VARSA V,KARCZEWICZ M.ITU-T VCEG-M77,Common test conditions for RTP/IP over 3GPP/3GPP2[S].Santa Barbara,CA,USA:ITU,2001:21-24.
[7]EMINSOY S,DOGAN S,KONDOZ A M.Transcoding-based error-resilient video adaptation for 3G wireless networks[J/OL].EURASIP Journal on Advances in Signal Processing,2007[2011-02-01].http://downloads.hindawi.com/journals/asp/2007/039586.pdf.
[8]阮若林,胡瑞敏.基于感兴趣区域的率失真优化帧内刷新算法研究[J]. 计算机科学,2009,36(10):284-288.
[9]韩镇,陈皓.一种基于分层率失真优化的容错性视频转码算法[J].计算机学报,2009,32(6):1152-1161.