基于H.264/SVC的率失真优化算法的改进
2011-08-14王艳营
王艳营
(黑龙江科技学院 电气与信息工程学院,黑龙江 哈尔滨 150027)
随着计算机网络和数字视频通信技术的不断发展,面向网络的视频编码技术成为了研究热点,SVC(可伸缩视频编码)作为H.264/AVC视频编码标准的可伸缩扩展[1],成为研究这一问题的有利工具。
SVC可以实现视频流空间、时间和信噪比的完全伸缩,但是信道误码在时域和空域会有扩散,导致传输过程中宏块数据丢失,出现丢包现象,严重影响重建视频的质量[2]。在丢包信道中,误差扩散对重建视频质量的影响最为严重,为此,在分析空域和时域可伸缩视频流率失真的基础上,针对时域的误差扩散失真进行了改进,改进后的算法具有较好的灵活性和鲁棒性。
1 H.264/SVC的编码原理
H.264/SVC使用了位平面编码技术和分层编码技术来支持时间、空间和SNR的可伸缩性,空间可伸缩是利用分层来实现的,采用多层的编码结构,在每一分层中,帧间预测和帧内预测单独编码,并可以跨空间层进行,即预测参考值可以是低空间层,也就是层间预测,具体包括层间帧内预测、层间运动预测和层间残差预测[3]。
时间可伸缩利用分级的B帧结构来实现,以三级时间分解为例,其编码结构如图1所示。
{T0,T1,T2}是三级的时间级,T0是时间级的基本层,由帧内预测的 I帧或帧间前向预测的 P帧构成,T1、T2是时间级的增强层,由双向预测的B帧构成。GOP是图像组,它由两个连续T0层之间的所有增强层图像帧加上后一个T0图像帧组成。以图1中的第1个GOP为例,首先编码时间级T0的第 5帧(关键帧),然后编码时间级 T1的第3帧,最后编码时间级T2的第2帧和第4帧。
在H.264/SVC的每一个空间分层中,SNR可伸缩分为CGS和FGS。CGS通过反复减小量化步长来形成CGS的码流,但它的质量分级和抗误码率不高。FGS通过位平面编码方法来实现,将视频码流压缩成基本层码流和嵌入式增强层码流,适应网络带宽波动变化的情况[4]。
2 H.264/SVC的率失真优化算法
2.1空间域分层编码的率失真
空间域分层编码包含空间基本层编码和空间增强层编码增强层。编码不仅使用了空间基本层编码时的帧内预测、单向帧间预测和双向帧间预测,还使用了层间预测模式。
H.264/SVC的率失真最优宏块编码模式为:
其中:o为可选择的宏块编码选项,λ是拉格朗日参数;J(n,m,o)表示在模式o下第n帧的第m个宏块编码时的率失真;D(n,m,o)表示在模式(1)下,重建视频的端到端失真,若不考虑信道传输的影响,它等于信源编码的量化失真;R(n,m,o)表示在模式o下的视频流码率。
在丢包信道下,当宏块丢失时,第n帧的第m个宏块的编码选项o的重建视频的端到端的率失真为:
其中:pl是丢包率,Ds(n,m,o)是信源编码的量化失真,Dep_ref(n,m,o)是误差扩散失真,Dec(n,m)是空间差错隐藏失真,它的值与宏块的编码模式无关。
误差扩散Dep_ref(n,m,o)的计算方法为:
根据编码帧的不同,Dep(n,m,k,o)的计算方法也不同。若编码帧为I帧和P帧,误差扩散失真为:
其中:Dep_ref(n,m,k,o*)表示预测参考值的扩散误差失真,Dec(n,m,k,o*)表示丢包后的差错隐藏失真。对于I帧的第1帧的第1个块来说,Dep_ref(1,1,k,o*)=0,则:
若编码帧为B帧,误差扩散失真为:
其中:Dep_ref_r0(n,k,m,o*)和 Dep_ref_r1(n,k,m,o*)是双向预测的两个参考帧,wr0和wr1是计算预测参考值的加权系数。
空间差错隐藏失真Dec(n,m,k,o*)的计算方法为:
其中:Dec_rec(n,m,k,o*)是当前像素值与重构像素值的误差失真,Dec_ep(n,m,k)是当前像素值的累积误差扩散失真[5]。
对于拉格朗日参数λ的计算方法为:
其中:λef为无损传输中的拉格朗日参数值。
2.2时域分层编码的率失真
在时域分层编码中,高时间级的图像以低时间级的图像作为预测参考帧,如果低时间级的图像存在误差就会传到高时间级的图像中,由此可见,误差扩散失真对编码图像的影响与时间级位置有关,时间级越低,误差扩散的影响越大,因此,时域分层编码的率失真表示为:
其中:α(t)是时间级 t的函数,pl是丢包率,Ds(n,m,o)是信源编码的量化失真,Dep_ref(n,m,o)是误差扩散失真,Dec(n,m)是时间差错隐藏失真。
3改进的H.264/SVC率失真优化算法
本文主要针对时域分层编码率失真中的码率分配和时间级函数的设定来进行改进。
在码率分配方面,采用非均匀分配的方法,即对低时间级的图像帧多分配一些码率,对高时间级的图像帧少分配一些码率。
时间级函数是影响误差扩散失真的因子,因此,时间级函数的取值分配很重要。以GOP=8的等级B图像误差扩散影响为例来说明时间函数的设定,误差扩散区域如图2所示。
图2中的图像组的大小为8,时间级为3,因为log28=3,所以若图像组的大小为 N,则时间级 T=log2N。图2中时间级3包含4个图像,时间级2包含2个图像,时间级1包含1个图像,由此看出,时间级包含的图像数与时间级是以2为底数的指数关系,所以若时间级为 t,则图像数 n=2t-1。
从图2中看出,时间级越高包含的图像数越多,但是误差扩散的影响越小,这样,时间级与图像数的幂指数关系,时间级t的时间级函数为:
式中:pi(i)(i=1,2,3,…,t)为各时域分层图像的丢包率,C1为尺度因子。
从图2中看出,当时间级t=T时,误差扩散影响最小,不会继续传播,所以率失真中不存在误差扩散,时间级函数为:
从图2中看出,当时间级t=0时,误差扩散影响最大,影响了整个图像组,所以率失真中误差扩散最大,时间级函数为:
由以上对时间级函数的确定,率失真函数分别为:
4测试结果分析与仿真
为了验证该改进算法,采用了参考软件 JSVM[6],对QCIF格式的Foreman视频序列进行测试,其中图像组的大小为8,第 1帧为I帧,空间基本层的帧率为 15 f/s,空间增强层的帧率为 30 f/s,丢包率为 3%、5%和 10%,量化参数分别为 20、24、28、32、36和 40。 分别对不使用率失真优化(NO-RDO)、传统的IP丢包率的率失真优化(TP-RDO)和改进的算法(IP-RDO)进行了测试验证,测试所得数据如表1、表2和表3所示。
从表中看出,丢包率为 3%时,与 NO-RDO相比,TPRDO的码率平均增加了333.76%,IP-RDO的码率平均增加了8.04%;丢包率为5%时,与NO-RDO相比,TPRDO的码率平均增加了41.29%,IP-RDO的码率平均增加了10.01%;丢包率为 10%时,与NO-RDO相比,TPRDO的码率平均增加了50.65%,IP-RDO的码率平均增加了11.25%。由此看出,与NO-RDO相比,TP-RDO的码率增加得快,而IP-RDO的码率增加得不是很快。
表1丢包率为3%的比特率和PSNR值
表2丢包率为5%的比特率和PSNR值
表3丢包率为10%的比特率和PSNR值
为了更好地说明测试结果,对 NO-RDO、TP-RDO和IP-RDO的RD曲线进行了仿真,仿真图如图3所示。
从图3可以看出,在丢包率为3%时,TP-RDO的率失真性能比NO-RDO差,而丢包率为5%和10%时,TPRDO的率失真性能比NO-RDO好。由此说明,TP-RDO在低丢包率时率失真性能下降,而IP-RDO在丢包率为3%、5%和10%时,率失真性能均比NO-RDO和 TPRDO的好。
该改进算法充分考虑了码率的分配和时间级函数对时域分层编码中误差扩散的影响,改进后的算法有效地抑制了误差扩散的影响,提高了视频流的鲁棒性,特别适用于IP网络的视频流传输。
[1]SHCHWARZ H,MARPE D,WIEGAND T.Overview of the scalable video coding extension of the H.274/AVC standard[J].IEEE Trans On Circuits System Video Technology,2007,17(9):1103-1120.
[2]唐浩漾,史浩山,赵洪钢.基于可伸缩视频编码的率失真优化编码算法[J].计算机应用研究,2009,26(9):3584-3586.
[3]邓兵.可伸缩性视频编码中的码率控制算法研究[D].杭州:浙江大学,2010.
[4]程宏,杨先一.一种基于漏预测技术的FGS视频编码框架[J].计算机应用研究,2009,26(7):2484-2486.
[5]郭宜.可伸缩视频编码的差错控制方法研究[D].合肥:中国科学技术大学,2009.
[6]REICHEL J,SCHWARD H,WIENT M.JVT-T202 joint scalable video model JSVM-7[S].2006.