APP下载

基于局部亮度直方图的自适应视频帧类型决策算法

2023-02-18刘鹏宇贾克斌崔腾鹤

电子与信息学报 2023年1期
关键词:直方图复杂度亮度

刘鹏宇 张 悦 贾克斌 段 堃 刘 畅 孙 萱 崔腾鹤

(北京工业大学信息学部 北京 100124)

(先进信息网络北京实验室 北京 100124)

(计算机智能与智能系统北京市重点实验室 北京 100124)

1 引言

随着多媒体技术的不断发展,视频源向着高分辨率、高帧率、多视点的方向迈进,视频数据量呈爆炸式增长。与先进视频编码(Advanced Video Coding, AVC)标准相比,由视频编码联合专家小组(Joint Collaborative Team on Video Coding,JCT-VC)正式发布的高效视频编码(High Efficiency Video Coding, HEVC)标准能在相同视频压缩质量下节省近50%的码率,获得了更高压缩性能[1-4]。基于HEVC标准的x265是一款面向实际业务场景的高效视频编码器,其极大提升了编码速度,成为业界关注的热点[5,6]。

视频编码器中涉及的技术主要分为标准技术与非标准技术两大类,视频编码标准所规定的编码技术即为标准技术,而根据不同视频编码业务需求衍生出的技术则为非标准技术,后者能够改善视频编码器的压缩性能[7]。在众多非标准技术中,帧类型决策技术着眼于最基本的视频帧类型,HEVC中根据对视频各帧采用的预测方式,将待编码帧分为帧内编码帧(Intra-coded picture, I帧)、前向预测编码帧(Predictive-coded picture, P帧)、双向预测编码帧(Bidirectionally predicted picture, B帧)和普通P和B帧(Generalized P and B picture,GPB帧),不同帧类型因采取的编码方式不同会影响视频压缩效率。因此,根据视频内容特性决策视频帧类型至关重要。

视频通常由具有不同内容的场景拼接而成,不同场景拼接处称为视频的场景切换,场景切换处伴随帧间内容的大幅变化。若使用前一场景帧的内容对当前帧预测编码,无疑会导致编码后的视频质量大幅下降。因此,在视频编码过程中,将场景切换帧定为I帧能够显著提高编码质量。目前,针对待编码视频的场景切换检测主要有基于率失真代价(Rate-Distortion Cost, RD Cost)的场景切换检测算法[6]和基于亮度直方图的场景切换检测算法[8-11]。x265采用基于RD Cost的场景切换检测算法,在检测场景切换帧时,比较当前帧的全帧内编码RD Cost和当前帧与参考帧之间的帧间编码RD Cost,当全帧内编码RD Cost大于帧间编码RD Cost时,则将当前帧设为场景切换帧,该算法虽性能优异计算复杂度较高。考虑到亮度直方图统计的图像中每个像素点的亮度信息在一定程度上能够反映图像内容,因此,帧间亮度直方图差异在一定程度上可以表示帧间场景差异。为克服上述方法的缺陷,文献[8-11]通过计算并比较视频前后两帧的全局直方图差异实现场景切换检测,虽显著提升了编码速度,但因为其并没有考虑到帧间的局部内容差异,使得本就不大的帧间亮度分布差异淹没在了巨量像素点中,存在阈值设置困难、检测精度较低的缺点。

非I帧的视频帧则需要通过决策图像组(Group Of Pictures, GOP)大小以确定为GPB帧或B帧,主要包括固定GPB帧和B帧决策算法及自适应GPB帧与B帧决策算法。其中,固定GPB帧和B帧决策算法采用可配置的单一帧结构确定整段视频序列的帧类型[12],算法简单且适合大多数视频序列,但无法根据视频时序特性进一步提高压缩性能。与固定GPB帧和B帧决策算法相比,自适应GPB帧和B帧决策算法能够根据视频时序特性自适应调整GOP大小,提升压缩效率。x265中引入了快速自适应GPB帧和B帧决策算法及基于Viterbi思想的自适应GPB帧与B帧决策算法[13,14]。前者通过比较不同大小GOP的RD Cost实现GPB帧和B帧决策,后者则基于Viterbi算法通过迭代实现GPB帧和B帧决策,与快速自适应GPB帧和B帧决策算法相比显著提升了压缩效率,但计算复杂度也大大增加。

综上分析,为解决全局直方图不能很好地反映视频时序特性、现有GPB帧和B帧决策算法复杂度较高的问题,受视频内容与其亮度直方图具有强相关性,且统计亮度直方图的计算复杂度较低的启发,本文提出基于局部亮度直方图的自适应视频帧类型决策算法,以视频帧间局部亮度直方图差异作为决策视频帧类型的依据,分为I帧决策和GPB帧与B帧决策两个部分,从而高效决策视频帧类型,降低视频编码的算法复杂度。

2 视频编码中的帧类型和GOP

2.1 视频编码中的帧类型

如前所述,编码视频的帧类型包括I帧、P帧、B帧和GPB帧。I帧采用全帧内编码方式,所占数据量较大。P帧和B帧通过运动补偿得到当前帧与参考帧之间的差值及运动矢量并进行传送。其中,P帧只参考最靠近它的前向I帧或P帧,压缩效率较高,B帧的参考帧为前向I帧或P帧和后向P帧,压缩效率最高。GPB帧是P帧和普通B帧的统称,普通B帧将在低时延应用场景中取代P帧,采用类似B帧的双向预测方式,但其参考帧均为当前帧之前的帧,增加了运动估计的准确度。x265中通过外部配置实现将GPB帧选择为P帧还是普通B帧。

2.2 视频编码中的GOP

GOP是视频编、解码器对视频进行处理的基本单元,一段GOP的第1帧为I帧,其余帧为B帧或P帧,如图1所示,其中箭头方向表示帧间参考关系。在码率不变的前提下,GOP大小将影响视频质量,GOP越大,视频中的B帧和P帧的数量越多,平均每帧所占用的字节数就越多,就能得到更高的视频质量。因此,在编码复杂度可控的前提下,根据视频特性决策视频的各帧类型能够有效提升视频编码效率。

图1 GOP示意图

3 自适应视频帧类型决策

图像的空间信息是反映图像内容的关键。针对全局亮度直方图无法反映图像空间信息的问题,本文提出基于局部亮度直方图的自适应视频帧类型决策算法,流程图如图2所示。

图2 基于局部亮度直方图的自适应视频帧类型决策算法流程图

3.1 提出局部亮度直方图的动机

为与x265编码框架耦合,避免引入额外的计算负担,本文以64×64大小的CTU为单位获取视频各帧局部亮度直方图以弥补全局亮度直方图空间信息的缺失,如式(1)和式(2)

其中,Hn表 示第n帧中所有CTU的局部亮度直方图集合,Hn,i,j表 示第n帧 中第i行 第j列CTU的局部亮度直方图,Hn,i,j[k]表 示Hn,i,j中第k个亮度值出现的次数。

图3为视频《送你一朵小红花》[15]中一处明显的场景切换前后两帧的全局亮度直方图和相同位置CTU的局部亮度直方图。可以看出当发生场景切换但亮度变化不大时,除个别亮度等级的像素点数量有些许不同外,两帧的全局亮度直方图分布几乎没有差异,而局部亮度直方图在亮度分布和亮度频次上的差异明显。

图3 某场景切换处前后两帧全局亮度直方图和CTU局部亮度直方图

本文比较了存在场景切换且具有不同运动特性的4段视频中场景切换处前后两帧的帧间全局亮度直方图差异Dhist和局部亮度直方图差异Dlocal_hist,见表1,Dhist和Dlocal_hist表达式如式(3)和式(4)。其中,Kimono运动平缓且仅存在一处场景切换,《送你一朵小红花》运动平缓且存在多处场景切换,《战狼2》[16]运动剧烈且存在多处场景切换,《F1赛车越野》[17]高速运动且存在多处场景切换。

表 1 全局亮度直方图差异D hist 与 局部亮度直方图差异D local_hist比较

3.2 帧间场景变换程度的度量

进一步,如何利用局部亮度直方图客观度量帧间场景变换程度是帧类型决策的关键问题,步骤为:

其中, CTUi-1,j-1, C TUi-1,j, C TUi-1,j+1,CTUi,j-1, C TUi,j+1, C TUi+1,j-1, C TUi+1,j和CTUi+1,j+1为 C TUi,j的8个相邻CTU。

(3)基于得到的场景切换块计算当前帧cur与参考帧ref的帧间场景变换程度 inter_diff,如式(7)

3.3 I帧决策

根据经验将I帧检测窗的大小和滑动步长均设为5,以检测窗为基本单位遍历整段视频序列检测I帧,具体步骤如下:

(1)如图4所示,将视频帧显示顺序(Picture Order Count, POC)中的第2帧(POC=1)作为检测窗的起始位置,以当前帧n的 前一帧n-1和检测窗外前一帧 W为参考帧,从左到右依次遍历检测窗内的5帧,分别计算帧间场景变换程度i nter_diffn-1和inter_diffW。若i nter_diffn-1和 i nter_diffW均大于所设阈值,则判断当前帧为关键帧k ey_frame。

图4 I帧检测过程

(2)对检测窗内的5帧依次检测后,关键帧数量nkey_frame 存在0帧、1帧和多帧3种情况。关键帧数量为1时,该帧即为I帧;关键帧数量为多帧时,可能存在画面抖动,计算所有关键帧的平均帧间场景变换程度a vg_diff,并选择满足式(9)的第1帧作为最终的场景切换帧,即为I帧。a vg_diff的表达式如式(8)

其中,参数α会影响决策场景切换帧的准确性,本文通过统计大量视频中存在多帧关键帧时正确场景切换帧的 inter_diffW与a vg_diff的大小关系,取参数α=1.1。

(3)考虑到频繁插入I帧将导致码率激增的问题,本文引入窗间标志位Flag平滑I帧的密度,窗间标志位默认为复位状态(即Flag=0)。当检测窗内检测到I帧且Flag=0时,将窗间标志位置位(Flag=1),否则清除当前检测窗内的I帧,并移动检测窗进行下一轮检测,当检测窗内不再检测到I帧时将Flag复位。

3.4 GPB帧和B帧决策

分析视频的运动特性可知,运动剧烈的视频连续两帧内容变化较大,GPB帧和B帧的压缩效率较低;而运动平缓的视频连续两帧内容基本一致,GPB帧和B帧的压缩效率较高。若对具有不同运动特性的视频采用相同大小的GOP进行编码,必然会导致两段视频的编码效率差异过大。因此,本文以MiniGOP为基本单元,考虑通过调整GPB帧的密度以改善视频编码效率差异。一段MiniGOP从上一I帧或GPB帧之后开始,至下一个GPB帧为止,如图5所示。

图5 MiniGOP示意图

遍历已确定I帧的序列,通过确定MiniGOP大小将视频划分为若干段完整的MiniGOP,具体步骤为:

(1)以当前帧的前8帧为参考帧,计算当前帧与参考帧的平均帧间局部亮度直方图差异和a vg_Dlocal_hist,其表达式如式(10)所示

(2)以x265中基于Viterbi思想的决策算法得到的MiniGOP大小为MiniGOP真值,通过分析真值与avg_Dlocal_hist的关系可知,视频中MiniGOP大小与a vg_Dlocal_hist存在较强相关性,故本算法由此判断每个MiniGOP大小,并将视频划分为一段段完整的MiniGOP,将MiniGOP中最后一帧设置为GPB帧,其余帧设置为B帧。

4 实验结果和分析

为验证本文提出的基于局部亮度直方图的自适应视频帧类型决策算法的性能,将本算法嵌入x265 3.0中,在硬件配置为AMD Ryzen 7 4800H with Radeon Graphics,主频为2.90GHz,内存为16.0GB;软件配置为Microsoft Visual Studio 2019的实验平台进行测试实验。

首先,为评估本文提出的场景切换检测算法的性能,选取10段具有不同场景切换情况、不同运动特点和不同分辨率的视频:Traffic(2560×1600)、FourPeople(1280×720)和RaceHorses(416×240)运动平缓且不存在场景切换,BQMall(832×480)运动平缓且存在镜头平移,Kimono(1920×1080)运动平缓且仅存在一处场景切换,《送你一朵小红花》(1920×1056)运动平缓且存在场景切换,《战狼2》、《红海行动》[18]和《变形金刚5》[19](1280×720)运动剧烈且存在场景切换,《F1赛车越野》(960×540)运动快速且存在场景切换。通过比较x265、参考文献[11]和本文算法检测场景切换帧的准确率P和召回率R衡量场景切换检测的准确性,实验结果如表2所示。准确率P和召回率R计算公式如式(11)和式(12)

表2 本场景切换检测算法与x265和参考文献[11]的检测准确度对比

其中,nT,nF和nM分别表示正确检测、错误检测和未检测到的场景切换数。

由表2可以看出,本文算法的检测召回率R均在80%以上,准确率P均在95%以上,最高可达100%。对于具有多种运动特性和复杂场景切换的视频(《送你一朵小红花》、《战狼2》、《红海行动》、《变形金刚5》和《F1赛车越野》),本文算法的检测准确度大幅领先于另外两种算法。

通过比较本文算法与x265中场景切换检测算法的运行时间来衡量算法复杂度,实验结果如表3所示,可以看出本文算法的运行时间仅为x265中场景切换检测算法的千分之一。从整体上看,本文算法能在大大降低算法复杂度的前提下,大幅提升场景切换检测性能。

表3 本场景切换检测与x265算法运行耗时对比(μs)

其次,选取HEVC标准测试序列中不同类别的12段测试序列,将本文算法与x265中的快速自适应GPB帧和B帧决策算法、基于Viterbi思想的自适应GPB帧和B帧决策算法及参考文献[13]的算法进行比较。以x265中固定GPB帧和B帧决策算法为基准,用峰值信噪比的减少量BDPSNR[20]衡量算法的客观压缩性能,用时间节省百分比 ΔT衡量算法的编码复杂度,实验结果见表4。ΔT的计算公式如式(13)

由表4可以看出,在客观压缩性能方面,本文算法整体上领先于另外3种算法,但对于具有不同运动特征的视频,本文算法存在一定差异:对具有不规则运动(如旋转、缩放等)的视频(Cactus,BasketballPass与PartyScene),本文算法的客观压缩性能明显下降,对运动平缓或静止的视频(Kimono,FourPeople, SlideEditing等),本文算法的客观压缩性能有很好的提升。另外,本文算法的编码复杂度最低,且与具有相近客观压缩性能的x265中基于Viterbi思想的决策算法相比,平均减少了5.463%的编码时间。

表4 本文算法与x265中两种算法和参考文献[13]的算法性能比较

5 结论

针对全局直方图不能很好地反映视频时序特性且现有帧类型决策算法计算复杂度较高的问题,本文以CTU为基本单位对视频各帧分块并统计局部亮度直方图,提出基于局部亮度直方图的自适应视频帧类型决策算法。主要贡献为利用视频帧的局部亮度直方图差异表征各帧内容,从而通过帧间局部亮度直方图差异度量帧间场景变换程度,实现I帧、GPB帧和B帧的自适应决策。同时,引入窗间标志位Flag,有效避免因频繁插入I帧而导致的码率激增问题。实验结果表明,本文提出的基于局部亮度直方图的视频帧类型决策算法与x265中的相关算法相比能够减少5.463%编码时间。通过与其他算法进行比较,验证了本文算法的检测准确度和客观压缩效率。本文算法能实现视频帧类型的高效决策,且适合于具有不同运动特性的视频序列,鲁棒性较强。

猜你喜欢

直方图复杂度亮度
符合差分隐私的流数据统计直方图发布
远不止DCI色域,轻量级机身中更蕴含强悍的亮度表现 光峰(Appptronics)C800
基于FPGA的直方图均衡图像增强算法设计及实现
亮度调色多面手
一种低复杂度的惯性/GNSS矢量深组合方法
用直方图控制画面影调
求图上广探树的时间复杂度
亮度一样吗?
中考频数分布直方图题型展示
某雷达导51 头中心控制软件圈复杂度分析与改进