基于场景切换的B帧量化参数分配方法
2015-03-11符茂胜刘仁金
金 星,符茂胜,刘仁金
(皖西学院 信息工程学院,安徽 六安 237012)
基于场景切换的B帧量化参数分配方法
金星,符茂胜,刘仁金
(皖西学院 信息工程学院,安徽 六安 237012)
摘要:H.264/SVC实现了对基本层码率控制,但对于视频序列中场景切换并没有有效的检测,也没有考虑到场景切换对视频编码质量的影响。本文结合H.264/SVC特有的分层B帧预测金子塔编码结构,首先提出一种改进的基于图像复杂度的实时场景切换检测算法,结合场景切换的类型,再对存在场景切换的GOP编码单元中时间分级的高层B帧量化参数进行修改。实验结果表明在不产生信道码率突变的前提下,明显改善了场景切换处的视频质量。
关键词:H.264/SVC;场景切换;图像复杂度;JSVM
H.264/SVC(可伸缩视频编码)是H.264/AVC标准的扩展,该标准以H.264/AVC视频编码器为基础,利用AVC编码器的高效算法工具,对视频进行一次编码,使得编码后的码流能呈现出时间域、空间域和质量的分级特性以适应不同的终端需求[1-2]。在视频码率控制方面,H.264/SVC继承了H.264/AVC码率控制G012标准,实现了基本层的码流控制,基于JSVM平台实现了视频编解码和码率控制算法。大量视频序列的统计、分析结果显示视频序列中普遍存在着场景切换现象,视频序列中场景切换处前后帧之间的相关性明显降低,如果在码率控制时不考虑这一因素,则会导致码率控制失效,从而造成视频质量下降。因此,如何有效地检测和处理场景切换是码率控制算法要解决的关键问题之一。
近年来,为了有效地检测视频序列中的场景切换,研究者们提出了多种有效算法。文献[3]和文献[4]都提出了利用视频序列中YUV的变化情况来检测场景切换,前一个算法是利用YUV分量的均值绝对差值作为判定依据,后一个算法是计算前后帧亮度分量平均差值作为判定依据。文献[5]针对视频场景中运动场景切换,提出了基于每帧DCT系数绝对值之和检测的场景切换方法,文献[6]则从运动补偿图像的一阶与二阶差值信号统计特性的角度出发,提出了一种实时多测度联合突变场景切换算法。文献[7]提出基于非连接点的场景切换算法,文献[8]使用了基于灰度分割的场景切换算法,文献[9]提出基于块亮度直方图的差异来检测场景切换检测的算法。这些算法的检测效果较好,然而,以上算法的计算复杂度高或时间延迟长等问题存在,不宜应用于实时性要求极高的视频通信中。结合H.264/SVC的分层B帧预测金子塔编码结构,本文提出了一种改进的基于图像复杂度的实时场景切换检测。
针对场景切换的优化问题,史九根在文献[4]和[10]中,针对场景切换的情况,根据P帧图像复杂度进行比特数的分配,通常情况下编码P帧所需的比特数是B帧的数倍,因此修改P帧的量化参数容易引起当前编码GOP的比特数突变。结合H.264/SVC特有的分级B帧预测编码结构,在文献[11]和[12]中,就提出了基于低码率下B帧量化参数分配方法和基于B帧的自适应码率控制算法。在前一个算法中,根据分级B帧编码效率高的特点,高时间级的B帧可以用邻近的低时间级的B帧做参考,且B帧的宏块编码模式大部分采用skip模式,通过增大高时间级B帧的量化参数,减小低时间级B帧量化参数来平衡整个GOP码率变化,提高低码率下整体视频质量。后一个算法综合考虑实际编码消耗的比特和目标码率之间的误差,同样是根据B帧的时间级来分配比特数,B帧的量化参数随着时间层的增加而增大。以上两种基于B帧的码率控制算法在没有场景切换的视频序列编码过程中有很好的效果,但是在有场景切换时,为了保证视频播放的质量和连续性,就不能一直增大高时间级B帧的量化参数,而是要结合B帧的播放顺序和时间级来综合考虑其量化参数。对GOP单元中的B帧的量化参数进行修改,可以有效的提高视频质量,但是考虑到场景切换对视频编码质量和效率的影响,本文同时利用H.264/SVC独特的时间分级特性,对于检测到发生场景切换时,根据场景切换的类型修改当前GOP编码单元中时间增强层B帧的量化参数,并结合B帧的编码顺序和播放顺序,在不明显增加信道码率的前提下,提高场景切换处视频编码的质量。
1场景切换的检测
视频场景切换包含如下几种类型:突变场景切换、消融和淡入淡出等。目前,已有的场景切换检测算法主要有以下几种:基于灰度值检测、基于运动搜索检测和基于边缘轮廓检测。虽然后两种检测算法具有比较好的性能,但是算法的高复杂度极大地限制了它们的应用,尤其是在对于实时性要求比较高的视频通信码率控制算法中。
1.1 基于MAD的场景切换检测算法
视频通信中的码率控制技术,通常包括量化级控制、帧率控制、图像帧及宏块编码类型控制、运动矢量精度控制等,但最常用和方便的办法是控制量化级。因此通常的码率控制算法均把上述率失真模型转化成比特率同量化级的关系R-D和失真同量化级的关系D-Q模型,再次用率失真优化的求解方法,最终确定图像及宏块的量化级QP。在H.264中把量化参数同时用于码率控制和率失真优化,导致了蛋鸡悖论,为解决这一问题,提出了线性预测模型,根据前一帧相应位置的MAD来预测当前帧或者宏块的MAD。计算公式
MADc=a1MADP+a2
(1)
其中a1和a2为一元线性回归系数,初值设为1和0,在每帧编码完成后,需在后编码阶段进行刷新。
根据虚拟缓冲区的充盈度和目标码率进行帧级比特分配,并根据预测的MAD值利用二项式码率控制模型进行量化计算,再用这个量化级进行率失真优化宏块模式,计算公式如下
(2)
SDMAD=MAD(n)-MAD(n-1)
(3)
其中,MAD(n)和MAD(n-1)分别为当前帧图像和前一帧图像的MAD值。当SDMAD(n)大于设定的阈值K时,就可以判断有场景切换。
1.2 基于MAD的场景切换检测算法的改进
H.264/SVC的分级编码采用时间分级B帧的金字塔编码结构,编码时以GOP(Groupofpictures)为基本编码单元,每一个GOP中至少有一个关键帧,GOP的大小通常情况为2的倍数,倍数的大小表示编码的时间分级数。当n等于4时,编码结构图如1所示,其中Displayerorder为视频帧的播放顺序,Codingorder为视频各帧编码顺序,TLID为时间分级的顺序。通常情况下关键帧分布在T0时间分级层,第一个编码的GOP单元第一帧为I帧也是当前编码单元的关键帧,以后的关键帧为I/P帧,GOP的划分是可以用两个关键帧位置来确定的,其他类型帧的数目可以变化[15]。
图1 HierarchicalB预测编码结构
采用MAD进行场景切换检测时,除了要考虑MAD的值能否反映场景的切换外,还必须考虑场景切换的方向性,场景切换可以由简单的场景切换到更加复杂的场景,也可以从复杂的场景切换到简单的场景;此外,还要考虑到视频序列中场景变化缓慢时,相邻GOP关键帧的MAD增加较缓慢。式(1)只能检测场景突变的情况,不能计算几个GOP之间关键帧的MAD差值的累加和,当几个GOP之间MAD差值的累加和达到一定的值时,就会产生渐变的场景切换。因此,本文对基于MAD的场景切换检测算法进行了改进,提出了一种改进的基于MAD的场景切换检测算法,
MAD(scene)=min[MAD(n),MAD(n+1)]
(4)
ΔMAD(n)=|MAD(n+1)-MAD(n)|
(5)
(6)
(7)
其中,选取场景切换的起点为MAD(scene),n为H.264/SVC的T0时间层I/P帧的序号,n≥1,即从第2个P帧开始检测;△MAD(n)为相邻GOP关键帧MAD的绝对差,考虑了场景切换时的方向性;F(n,i)为第i个GOP关键帧到第n个GOP关键帧的MAD绝对差的累加和。
当△MAD(n)大于设定的阈值K1时,就可以判断有突变的场景切换;当F(n,i)大于设定的阈值K2并且RMAD(n)大于设定的阈值K3时,就可以判断有渐变的场景切换,检测有场景切换时,更新MAD(scene)的数值,重新确定场景切换的起点。
为确定K1,K2和K3的值,利用本文提出的算法与参考文献[4],[14]和[16]场景切换算法进行对比实验。本次实验选取JSVM9.19测试平台,截取4:2:0的CIF序列foreman共有88帧,GOP大小为8,基本层帧率设定为15,阈值设定K1=0.8*MAD(scene),K2=0.6*MAD(scene),K3=0.5,如果能检测到场景切换,则输出相应的比值,其他情况下输出实际数值。实验结果如下。
表1 4种算法的场景切换检测参数
改进算法对GOP间场景的突变和场景的缓慢变化均能正确的检测,克服了原算法不能检测出GOP间渐变场景切换的问题,有效地提高了场景切换的检测精度。由于在视频编码时就涉及图像复杂度MAD的预测、更新和计算,所以改进的场景切换算法实时性明显提高,相对于其他的场景算法,计算的复杂度很低。
(a)RΔD(b)ΔD (c)SDMAD(d)RMAD
图24种算法的场景切换曲线
2时间增强层B帧量化参数的优化
码率优化控制在视频编码中一直起着关键作用,GO12帧层码率控制分为预编码和后编码两个阶段,在预编码阶段主要是计算当前编码帧的量化参数,而后编码阶段主要是对相关的模型参数进行修改更新,如码率、编码缓冲区的情况、MAD窗口大小、线性预测系数、二次失真模型系数等。
GO12算法中时间层B帧的量化参数由前面GOP编码单元中P帧的量化参数以及B帧在当前GOP分层结构中的位置确定。
首先,根据前面GOP编码单元中P帧的量化参数来预测初始的B帧量化参数PrevQPB:
PrevQPB=max(PrevLastQPP,CurrLastQPP)
(8)
其中,PrevLastQPp和CurrLastQPp为前面GOP编码单元中P帧的量化参数。
然后,再根据分层的结构以及当前B帧在GOP中的位置来确定基本层B帧的量化参数QPB:
QPB=PrevQPB+Hierarchicallevels-
CurrGOPLevel+1
(9)
其中,HierarchicalLevels为当前GOP的分层数,CurrGOPLevel为当前B帧在GOP中的位置。
式(8)计算B帧的量化参数时,没有考虑场景切换对视频编码质量的影响。随着时间分层的增加,B帧的量化参数增大,当有场景切换时,会导致视频质量的下降。
综上所述,对于B帧量化参数的分配算法如下:
步骤1利用基于图像复杂度场景切换算法,对编码过程中GOP单元的关键帧的图像复杂度进行计算,分布计算相邻两个和多个关键帧的MAD的绝对差值和比值,确定场景切换的有无和类型,如果有场景切换,对时间层的B帧量化参数进行修改。
步骤2在分级的B帧金字塔编码结构中,一个GOP中只有一个P帧作为关键帧,如果修改P帧的量化参数,可以增加图像的质量,但是所带来的码率增加过快;而时间增强层的B帧是双向预测的,其本身的数据量相对P帧较少,修改其量化参数所带来的信道码率压力较小,对场景切换处视频质量的缓冲有较好的效果。同时要结合视频编码的顺序和播放顺序,从图1中可以得到,当前一个GOP编码结束后,首先编码下个GOP的关键帧,而在播放视频时,关键帧位置是在当前GOP的最后一帧。因此,本文对式(9)进行了改进,提出一种基于场景切换的时间增强层B帧量化参数分配方法,其基本思想是:如果没有场景切换,则按式(9)计算B帧的量化参数;如果发生场景切换,则在式(9)中加入场景切换修正因子λ,在时间增强层修改B帧的量化参数,随着时间分级的增加,编码B帧所需的比特数也相应的减少,即编码T1层的B帧的比特数比T2层的B帧要多,所以在修改高时间层B帧量化参数时要考虑B帧所处的时间层,同时在显示顺序上当B帧靠近存在场景切换关键帧P帧时,减小量化参数,对于距离场景切换关键帧P帧较远的B帧则增大量化参数,这样可使整个GOP的码率量保持基本稳定,也可以提高切换处视频的连续性,同时针对不同的场景切换类型,B帧量化参数的修改幅度不一样。场景切换修正因子的计算如下
(10)
(11)
Ci,j=(-1)i×Pi-1-(j-1)×[(-1)j×j×P+1]
(12)
其中,i为时间层,i∈{1,2},在T1和T2这两个时间增强层修改量化参数;j为GOP中第i个时间层编码出现的顺序,第一次编码,j=1,第二次编码,j=2,依次类推;P为场景切换类型,对于渐变的场景切换,P=2,对于突变的场景切换,P=3。
3实验结果与分析
为了验证本文算法的有效性,在JSVM9.19测试平台上进行了实验,测试序列为4:2:0的CIF序列foreman(截取90帧,其中存在一个缓慢和一个突变的场景切换)和bus(截取90帧,其中存在两个缓慢的场景切换),GOP的大小为8,帧率大小为15,设定突变的场景切换和缓慢场景切换的阈值。
实验在测试序列foreman的第5和第7个GOP单元检测到了2个场景切换,第7个GOP为突变的场景切换。在测试序列bus的第4和第6个GOP也检测到了2个场景切换(均为缓慢的场景切换)。由式(10)~(12)可知,发生场景切换时,在时间增强层T1和T2修改B帧的量化参数。量化参数的改变将导致对应帧的信噪比发生变化,减小量化参数将使对应帧所用的比特数增加,其信噪比也随之增加;反之,增大量化参数将使对应帧所用的比特数减少,其信噪比也随之减小,本次实验结果如图3和表2,表3所示。
由图1可得出foreman的第36帧和第52帧属于T1时间层,34,38,50,54帧属于T2时间层,bus中的第28和第44帧属于T1时间层,26,30,42,46属于T2时间层,在修改量化参数时对于T1时间层帧修改的幅度要小于T2时间层,从表2可以得出foreman序列中的第5个GOP中T1时间层的量化参数减小后,和JSVM算法相比其信噪比提高为0.403 8 dB和0.188 7 dB,而T2时间层中B帧的量化参数的修改中,靠近关键帧的B帧量化参数增大,远离关键帧的量化参数减小,34帧和50帧远离关键帧,增大量化参数后导致信噪比和JSVM算法相比降低分别为0.459 5 dB和0.398 2 dB,第34帧距离关键帧第40帧最远,其量化参数增大的幅度较大;而38帧和54帧靠近关键帧,减小量化参数后信噪比的提高分别为1.045 1 dB和0.875 1 dB,综合来说平均每帧的量化参数提高了0.332 1 dB,而对于foreman中的突变场景切换的GOP单元,平均信噪比提高为0.221 8 dB。在bus序列中,由于检测的两个都是缓慢的场景切换,通过修改T1和T2时间层B帧的量化参数,使得两个GOP单元平均量化参数的提高为0.309 4 dB和0.313 5 dB。
由于修改高时间层B帧的量化参数有增加也减少,在一定程度上缓冲了码率增加,通过以上实验,foreman序列中两个GOP单元T1和T2时间层的码率于JSVM原算法相比增加量分别为8.4%和6.9%,对于bus序列两个缓慢场景切换的GOP单元T1和T2时间层的码率于JSVM原算法相比增加量分别为6.0%和8.8%,而这些增加的码率只是在时间高层,从整个GOP单元的码率来看,关键帧P的数据量远大于B帧,所以通过以上修改时间层B帧的量化参数对码率增加的影响很小。
表2 foreman序列场景切换各帧码率和亮度信噪比
表3 bus序列场景切换各帧码率和信噪比
本文算法和参考文献[10]算法对比。
在JSVM9.19测试平台上进行了实验,测试序列为4:2:0的CIF序列foreman(截取90帧,其中存在一个缓慢和一个突变的场景切换)GOP的大小为8,帧率大小为15,设定突变的场景切换和缓慢场景切换的阈值。在参考文献[10]中,对于检测到的场景切换时,重新组合GOP大小,对于第一个P帧的量化参数增加2。
从表4的结果,如果仅仅增加关键帧的量化参数,可以减小关键帧的视频质量,同时可以节省一定数目的比特数,这样对于当前GOP其他帧的编码,按照G012码率控制标准,多出的比特数可以分给剩下的编码帧,在一定程度上可以提高视频的整体质量,但是P帧量化参数的修改容易引起码率变化较快,同时没有考虑场景切换的类型和视频编码、播放顺序等。采用本文算法,对于不同时间层的B帧量化参数进行修改,可以提高靠近场景切换处视频质量,而对于没有场景切换处B帧量化参数的提高,平衡整个GOP单元的码率,也不需要对关键帧量化参数进行修改,在保证视频质量的同时也提高了播放顺序上视频连续性。
表4 foreman序列场景切换各帧码率和亮度信噪比
4结束语
基于JSVM平台的H.264/SVC码率控制算法继承了G012标准,没有引入场景切换检测算法,同时对由于场景切换引起的视频质量下降没有改进,传统的场景切换算法的由于计算复杂,场景切换检测的实时性较差,本文提出了一种基于改进的基于图像复杂度场实时景切换检测算法,在计算复杂度和实时性方面有很好的效果。对有场景切换的GOP编码单元中高时间层的B帧量化参数进行重新分配,实验结果表明能很好的提高场景切换处相关帧的信噪比,而场景切换处GOP单元整体码率变化的幅度很小。
参考文献:
[1] H.Schwarz, D.Marpe, T.Wiegand. Overview of scalable video coding extension of the H.264/AVC standard[J].IEEE Transactions Circuits and Systems for video Technology, 2007, 17(9): 1103-1120.
[2] 毕厚杰. 新一代视频压缩编码标准-H.264/AVC[M]. 北京: 人民邮电出版社, 2005.
[3] 余成伟, 陆建华, 郑君里. 基于场景切换的H.264码率控制技术[J]. 清华大学学报, 2007, 7(47): 1131-1136.
[4] 史久根, 许林, 张超. 一种场景自适应的H.264帧层码率控制算法[J]. 计算机应用研究, 2010, 27(5): 1968- 1970.
[5] 戴宁赟, 朱光喜. 一种场景切换的码流控制算法[J], 计算机应用, 2007, (27): 369-371.
[6] 马彦卓, 常义林. 应用于视频编码的实时多测度联合突变场景切换检测算法[J]. 光子学报, 2010, 39(6): 1058-1031.
[7] 志军, 高永彬, 舒雷, 等. 场景切换视频自适应帧间码率控制[J]. 中国图象图形学报, 2013, 18(6): 692-696.
[8] 熊蓉. 一种H.264码率控制算法及其在场景切换中的应用与研究[D]. 成都: 电子科技大学, 2010.
[9] 兰天, 顾学迈, 郭庆, 等. 视频通信中基于场景检测H.264帧层码率控制[J]. 科学技术与工程, 2008, 8(21): 5817-5821.
[10] 王悦, 薛永林. 基于场景切换的码率控制方法[J]. 电视技术, 2009, 33(12): 17-20.
[11] 韩公海, 万帅, 公衍超. 一种低码率下视频分级B帧量化参数的分配方法[J]. 电视技术, 2011, 35(17): 27-29.
[12] 付鋆, 张萍, 于鸿洋. H.264/SVC比特自适应分配的级B帧码率控制算法[J]. 计算机应用研究, 2012, 29(9): 3575-3577.
[13] 袁武, 林守勋, 牛阵东, 等. H.264/AVC码率控制优化算法[J]. 计算机学报, 2008, 31(2): 329-339.
[14] S.Park, Y.Lee, H.Chang. A new MPEG-2 rate control scheme using scene change detection[J]. ETRI Journal,1996, 18(2): 61-74.
[15] L.Xu, W.Gao, X.Y.Ji, et al. Rate control for hierarchical B picture coding with scaling factors[C]. Proc of IEEE. International Symposium on Circuits and systems. New York: IEEE, 2007: 49-52.
[16] 南哲万, 阮秋琦. 一种新的H.264视频场景切换检测算法[J]. 计算机工程与应用, 2011, 47(8): 1-3.
New Method for Quantization Parameter Assignment for Hierarchical B Pictures Based on Scene Change
JIN Xing, FU Mao-sheng, LIU Ren-jin
(School of Information and Engineering, West Anhui University, Lu’an 237012, China)
Abstract:H.264/SVC realizes the basic level rate control, but does not detect scene change in video sequences effectively and consider the influence of the scene change on the coding quality. This article combines hierarchical B frames forecasting pyramid coding structure of H.264/SVC, presents an improved real-time algorithm of scene change detection based on image complexity, and modify quantization parameters of different temporal B frames when GOP encoding unit exists scene change. Experimental results show that does not produce mutation of channel bit rate and significantly improves video quality at the scene change.
Key words:H.264/SVC, scene change, image complexity, JSVM
文章编号:1007-4260(2015)03-0048-06
中图分类号:TP391
文献标识码:A
DOI:10.13757/j.cnki.cn34-1150/n.2015.03.014
作者简介:金星,男,安徽枞阳人,硕士,皖西学院信息工程学院教师,研究方向为数字图像和视频处理;
基金项目:安徽省科技厅自然科学基金面上项目(1308085MF97),皖西学院优秀青年人才基金项目(WXYQ1302)。
收稿日期:2014-11-09
符茂胜,男,安徽六安人,博士,皖西学院信息工程学院教授,研究方向为模式识别、视频分析;
刘仁金,男,安徽六安人,博士,皖西学院信息工程学院教授,研究方向为信号处理。
网络出版时间:2015-8-25 15:40网络出版地址:http://www.cnki.net/kcms/detail/34.1150.N.20150825.1540.014.html