HEVC技术

2024-05-30

HEVC技术(共7篇)

HEVC技术 篇1

摘要:新一代视频编码标准HEVC(High Efficiency Video Coding-高效率视频编码)目前采用基于DCT的插值滤波技术(DCT-Based Interpolation Filter(DCTIF)),与传统滤波器相比,在降低复杂度的同时,其压缩性能获得了较大提升。由于DCTIF技术提案理论部分论述较少,且没有与传统编码滤波技术作实验对比。为此,详细阐述了DCTIF滤波原理,分析了插值计算过程和滤波系数的计算。同时,对H.264/AVC传统滤波以及定向自适应插值滤波器(DAIF)和DCTIF作了对比试验。实验表明,对于各种分辨率的视频,比较H.264/AVC传统插值滤波和定向自适应插值滤波器(DAIF),码率分别平均降低了42.15%和35.47%。

关键词:高效率视频编码,DCT插值滤波,码率,定向自适应插值滤波器,H.264/AVC

0引言

新一代视频编码 标准HEVC(High Efficiency Video Coding)[1],其核心目标是在H.264/AVC high profile[2]的基础上,压缩效率提高一倍,即在保证相同视频图像质量的前提下,视频流的码率减少50%。在提高压缩效率的 同时,可以允许编码端适当提高复杂度。

HEVC根据高分辨率视 频的特点,同时兼顾 低分辨率视频,采用基于DCT的插值滤波器(DCT-IF)。该滤波器具有以下特性:1滤波器能够通过整数位置已重建像素直接通过差值准确地计算出任何分数位置的像素;2由于滤波器采用无级联方式,不仅简化了运动补偿过程,同时也降低了计算复杂度;3滤波器对于更精确分数位置的像素,如1/8,1/12等采用与半像素及1/4像素统一的滤波方式,算法具有较好的扩展性。

1DCT-IF插值滤波计算过程

1.1分数像素运动估计

目前,通过HEVC测试软件HM11.0[3],对于低复杂度和高效率两种编码模式采用统一的8抽头DCT-IF。 任意α∈ [- (M -1),M](M为整数),分数位置像素值P(α)为:

上式中,M为滤波器抽头数的一半,Refm为一维滤波的输 入,即整数位 置像素值 组成的向 量Ref-M+1, Ref-M+2,…,RefM,fm(α)表示位于Ref0和Ref1之间α 分数位置像素的滤波系数,Q为滤波系数所用的比特数。 增大Q的值可以更加精确地表示滤波系数,但同时也会增加所需的内存容量和传输带宽。

1.2插值计算过程

DCTIF是二维可分离滤 波器,图1为图像像 素亮度分量的四分之一像素运动估计,8抽头DCT-IF滤波示意图,深色部分为整数位置像素,Q=6。

具体步骤如下:

(1)水平分数位置像素a、b、c通过一维水平DCT-IF滤波器,由下式计算得到:

(2)垂直分数位置像素d(x)、h(x)、n(x)通过一维垂直DCT-IF滤波器,由下式计算得到:

(3)其它分数位置像素e、f、g、i、j、k、p、q、r,根据先前计算出的a、b、c、d(x)、h(x)、n(x),通过水平一维DCT -IF滤波器,由下式计算得到:

由上述插值计算过程可以看出,与AIF和DAIF对每个像素单独进行滤波计算不同,DCTIF对于任意分 数位置像素,均采用同样模式的一维滤波器进行插值计算,且整个滤波器为非级联方式,运算复杂度较小。

2DCT-IF滤波原理及其滤波系数

假设{pi},i=-(M-1),…,M为一平滑函数p(x) 整数点上的值,则可以通过DCT得到其变换系数Ck:

通过DCT反变换可以得到整数点位置x= -(M1),-(M-2),…,M的值:

分数位置点的位置可以根据公式19得到:

对于插值滤波具体分为两步:

(1)把输入向量Refm通过一变换核函数进行分解表示,其整数位置像素值pm为:

(2)对公式(20)作DCT反变换,进行尺度为α 的相移,即得到α分数位置像素的值pα:

因此,滤波系数为前向DCT变换矩阵D和DCT反变换矩阵wT(α)的乘积:

为整数位置的像素DCT变换矩阵,其矩阵中的元素由公式(23)得到:

其中,0≤i≤2 M -1,-M +1≤J ≤ M。

wT(α)为α分数位置的像素DCT反变换矩阵,其矩阵中的元素由公式(24)得到:

由公式(22)可以看出,DCTIF的滤波系数是固定的, 相比AIF和DAIF对于每个分数位置像素不断调整滤波系数,DCTIF运算量减少较多。从公式(22)看,系数计算复杂度较高,但由于在实际测试软件中,能够以无乘法运算实现[6],实际运算只包含位移和加法,所以DCTIF的运算复杂度与AIF和DAIF相比小很多。表1为8抽头滤波系数表,每个滤波系数用6bit表示。这里同时给出了计算滤波系数的运算次数。表中只列举了分数位置α≤1/2时的滤波系数,α>1/2时,根据镜像对称原理计算得到:

3实验结果及分析

由于测试软件存在整 体差异,很难精确 评估DCTIF与DAIF两者编码性能的差异。文献[4]说明了在HEVC测试软件中单独开启DCTIF时的编码效率,其结果对整体实验效果影响较小。

图2为WQVGA(416x240)和720p(1280x720)测试序列R-D的曲线图(QP=22,27,32,37)[5]。从图中可以看出,对于低分辨率格式的视频,在相同PSNR值下,DCTIF码率较DAIF和H.264/AVC最大分别降低了26% 和39%,平均分别降低了22.3%和31.8%;对于高分辨率视频,DCTIF码率较DAIF和H.264/AVC最大分别降低了48%和56%,平均降低了43%和52.5%。

表2为与DAIF比较各分辨率视频码率减小百分比情况。CS1、CS2为两种编码配置设置,分别对应随机访问点(random access)即增加I帧数目,和低延时 算法 (low delay)[6]。

表2中,在random access和low delay两种编码配置条件下,针对所有测试序列,其码率平均减小了43.72% 和35.47%;其中,B类(1080p)和C类(832x480)序列码率降低最 为明显,分别为48.17%、51.61% (CS1)和38.33%、34.45%(CS2);BQTerrace序列码率 降低最高, 达到了58.65%和54.25%;码率降低最少的为D类序列 (416x240),其中BQSquare序列码率降低最少,但也达到了40.93%和19.17%。通过表2可以看出,DCTIF对于各种分辨率视频,无论是在random access或low delay编码条件下,其编码效率都有较大提升。

4结语

比较AIF及DAIF,DCTIF采用固定系数进行插值运算,不需要针对每个子像素进行最佳滤波系数选择,再加上DCTIF在测试软件中实现了无乘法运算,只有位移和加法,并且对滤波系数进行了优化,减少了运算次数,降低了算法复杂度。实验证明,在random access或low delay编码条件下,其码率分别降低了43.72%和35.47%,对于高分辨 率视频编 码效率提 升尤为明 显。 对于4K (2560x1600)的超高分辨率视频,DCTIF编码效率有所降低。因此,进一步提高针对超高分辨率的视频编码效率是未来的研究方向。

参考文献

[1]WIEGAND T,OHM J,SULLIVAN G,et al.Special section on the joint call for proposals on high efficiency video coding(HEVC)standardization[J].IEEE Trans on Circuits and Systems for Video Technology,2010,20(12):1661.

[2]WIEGAND T,SULLIVAN G,BJOTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].Circuits and Systems for Video Technology,2003,13(7):560-567.

[3]Svn_HEVCSoftware-Revision 4529:/tags[EB/OL].https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/.

[4]HAN W J,MIN J,KIM I K,et al.Improved video compression efficiency through flexible unit representation and corresponding extension of coding tools[J].IEEE Trans on Circuits and Systems for Video Technology,2010,20(7):1709.

[5]BJONTEGAARD G.Calculation of average PSNR differences between RD curves[S].13th VCEG Meeting,Austin,2001,VCEGM33.

[6]ISO/IEC JTC1/SC29/WG11.Joint call for proposals on video compression technology[S].Proc 91st MPEG Meeting,2010.

HEVC并行解码器设计 篇2

2010年JCT正式发出提案征集[2],并在同年4月确定HEVC作为标准名称,公布测试软件HM( HEVC Model) 和标准草案文本。此后举行了多次JCT会议,对HEVC的技术内容进行不断改进、增删和完善。2013年1月完成了HEVC的FD( Final Draft) 版,并经表决通过成为正式国际标准。

1 HEVC 概述

HEVC采用与H. 264相同的混合编码框架[1],图像帧的编码模式主要有帧内和帧间两种方式。帧内编码包括预测、变换、量化和熵编码等,帧间编码包括运动估计、运动补偿、变换、量化和熵编码等。在此编码框架下,HEVC的创新主要有: 基于大尺寸四叉树块的编码结构,多角度帧内预测技术、自适应环路滤波技术等。

HEVC依然采用H. 264所采用的分块编码方式,定义了编码块( Coding Tree Blocks,CTB) 的概念,CTB的大小可以为16×16,32×32和64×64。CTB可以按照四叉树的形式进一步划分为编码单元CU( Coding Unit) 。CU又可以被进一步划分为预测单元PU( Prediction Unit) 和变换单元TU( Transform Unit) 。

HEVC的帧内预测技术和H. 264类似,采用多方向帧内预测方式消除图像的空间冗余。为了提高帧内预测的准确性,HEVC已将H. 264中的8种预测方向扩张到33种。HEVC中的去块效应滤波器( Deblocking Filter) 在H. 264的基础上增加了自适应采样点补偿滤波( Sample Adaptive Offset,SAO) 来减少重建图像的失真。

2 HEVC 中可并行解码模块

2. 1 Tile

HEVC在slice的基础上引入Tile的概念[3]。Tile被定义为由图像中垂直和水平边界的交点所分割得到的矩形区域,如图1所示。1帧图像中的各个Tile在编码时共享头信息,每个Tile都是独立可解码的。在支持Tile的同时,HEVC同样支持Slice处理。在同1幅图像中,Slice和Tile可同时使用,且两者的分割互不干扰。1个Slice里可以有若干个Tile。

2. 2 波前并行处理(WPP)

在HEVC中,Tile的引入使并行处理得以实现。但是,这种机制的引入在一定程度上是以提高编码的计算复杂度为代价的。这是由于在Tile处理过程中,边界间的预测依赖性被破坏,同时熵编码中用到的上下文模型需在每个Tile中都进行初始化,这些都在一定程度上对码率造成影响。为了解决这些问题,波前并行处理( Wavefront Parallel Processing,WPP) 技术[3]被引入HEVC标准中。波前处理是一种在不需要破坏预测依赖性前提下实现并行编解码的技术。当采用波前并行处理时,1个slice被分成若干行CTB。第一行CTB按正常方式处理,当第一行中有2个CTB完成处理时,开始并行处理第二行中的CTB,当第二行中处理完2个CTB中时,再开始并行处理第三行中的CTB,以此类推,如图2所示。需要完成上一行的2个CTB处理是因为帧内预测和运动矢量预测是基于当前CTB的上侧和左侧CTB实现的。熵编码参数的初始化所需要的信息是从这两个完全编码的CTB中得到的。WPP技术比Tile技术能提供更好的压缩效率,并且可以避免由于Tile的引入而造成的人为视觉效果。

2. 3 去块效应滤波器(Deblocking Filter)

去块效应滤波的作用是,消除经反量化和反变化后重建图像中由于预测误差产生的块效应,从而一方面改善图像的主观质量,另一方面减少预测误差[4]。

HEVC中的去块效应滤波包含对垂直边界的水平滤波和对水平边界的垂直滤波两部分。与H. 264 /AVC中4×4大小的滤波块不同,HEVC中滤波块的大小为8×8。滤波步骤如下[5]。

1) 对垂直边界进行水平滤波。

( 1) 首先计算8×8滤波块中所有PU和TU的BS( Boundary Strength) ;

( 2) 如果BS >0,则对靠近边界的4个像素点判断其滤波模式,滤波模式[5]有weak filter,strong filter和no filter这3种,然后根据相应的滤波模式对其滤波。

2) 对水平边界 进行垂直 滤波,滤波过程 与水平滤 波类似[6]。

8×8单元及边界示意图如图3所示。

滤波过程最多能改变3个像素点的值,如图中的A55,A56,A57,A65,A66,A67,A75,A76,A77可能被修改。如图3所示滤波块的大小为8×8[7],因此在对垂直边界的水平滤波过程中,块与块之间并无数据重叠,即各个滤波块之间的数据没有依赖性,因此对各个滤波块的水平滤波可以并行进行。

对垂直边界的水平滤波有可能改变A55,A56,A57,A65,A66,A67,A75,A76,A77的值,而对水平边界的垂直滤波会用到这些数据,即垂直边界的水平滤波后的输出数据是水平边界的垂直滤波的输入数据,因此对水平边界的垂直滤波需在对垂直边界的水平滤波完成后进行[8]。

3 HEVC 并行解码器设计

此论文中将HEVC解码分为两部分,第一部分为pixel decoding,即从entropy decoding到Deblocking filter之前的解码过程。第二部分为Deblocking filter。解码流程如图4所示。本文分别对这两部分做了并行化设计。

3. 1 Pixel decoding 并行设计

因为WPP技术比Tile技术能提供更好的压缩效率,并且可以避免由于Tile的引入而造成的人为视觉效果的特点,本文利用HEVC中的WPP技术设计并行解码器结构。在多线程方面,本文采用线程池( Thread Pool) 技术[9]。利用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。并行解码示意图如图5所示。

每一行中,解码CTB的顺序为从左向右,第N行CTB进行解码的触发条件为第N-1行已经解码完2个CTB。然后该行CTB便进入任务队列,等待工作线程对其解码。由于数据依赖性的特点,线程解码第N行第M个CTB的触发条件为第N-1行第M + 2个CTB已经解码完毕。线程解码完一行CTB后,即转入任务队列中的其他行CTB进行解码。

3. 2 Deblocking Filter 并行设计

每一行CTB的Pixel Decoding过程结束后,即可进入Deblocking Filter阶段。根据图2所示数据依赖性的特点,第N-1行垂直边界的水平滤波输出数据会影响到第N行水平边界的垂直滤波输入数据,因此第N行水平边界的垂直滤波需在第N-1行垂直边界的水平滤波完成后进行。

线程执行步骤为: 每个线程首先对第N行CTB的垂直边界进行水平滤波,完成后线程进入等待状态,使线程结束等待状态的条件为第N-1行CTB的垂直边界水平滤波完成,进而触发线程对第N行CTB的水平边界做垂直滤波。DeblockingFilter的并行设计图如图6所示。

4 实验结果与分析

此论文中提出的HEVC并行解码器架构是在测试软件HM-9. 0的基础上改进得到的。实验测试了用HM进行解码的帧率( Frame Per Second,FPS) 以及本文中提出的并行解码器进行解码的帧率。

4. 1 测试环境

HEVC主要面向高清及超高清视频的编码,因此此次实验所用码流均为1 920×1 080和2 560×1 600超高清码流。测试软件为HM-9. 0和本文提出的基于HM-9. 0改进的并行解码器。编译环境为Visual Studio 2010,release模式。测试环境如表1所示。

本文中提出的并行解码器利用了HEVC中的WPP技术,因此实验所用码流必须支持WPP,此次实验所用码流均为用测试软件HM编码得到的。主要编码参数值如表2所示。

4. 2 测试结果

本文中定义了加速比来测试并行解码器性能

式中: FPSprposed为利用改进后的解码器解码所得的帧率; FPSorig为利用HM-9. 0解码所得的帧率。每次解码得到的帧率可能会稍有偏差,因此此次实验中对每个码流解码10次,取帧率的平均值来计算加速比。实验结果如表3所示。

5 结论

HEVC技术 篇3

和现有的视频编码标准类似[3],HEVC保留混合编码的基本体系结构[4,5]。一个显著 的区别在 于用类似 四叉树( quadtree) 的结构替代了传统的宏块( macroblock)[6]。HEVC编码流程可分解为预测、变换、量化和熵编码4部分[7]。预测部分将对编码器性能产生很大的影响[1]。预测分为帧间预测( inter prediction) ,和帧内预测( intra prediction)[1],帧内预测消除视频序列的空间相关性,用于编码I帧图像[8,9],帧间预测消除视频序列的时间相关性,用于编码P帧图像[8,10]。其中,帧间预测的大致流程为: 输入像素块与前一帧参考帧进行运动估计后[11,12],先进行整像素运动估计、分像素内插和分像素运动估计,产生运动矢量,之后对已获得的运动矢量进行运动补偿得到预测数据块[1,13]。所以相比帧内预测,帧间预测消除的时间相关性对视频压缩的压缩比有很大的关联[14]。本文主要对整像素运动估计所采用的算法进行优化。

1 整像素运动估计优化算法

HEVC中快速运动的估计首先进行整像素运动估计,运用搜索模板找到最佳匹配的整像素点; 之后进行分像素内插,再进行分像素运动估计,在整像素运动估计所找到的最佳匹配点的周围进行,检测其1 /2和1 /4像素点,找到最佳匹配的分像素点,主要通过调用底层的函数来实现[16]。整像素运动估计得到的是运动矢量的整像素值,决定了运动矢量的大致方向,因此,对其进行优化是十分必要的。

本文主要针对整像素运动估计采用的EPZS算法进行优化。HEVC沿用了H. 264 /AVC的EPZS作为默认的快速运动估计算法。该算法主要由运动矢量选择、提前终止策略、运动矢量提取3部分组成。文献中测试显示,EPZS算法比全搜索算法加速比最大达6倍[15],且能保证良好的压缩性能和图像质量。HEVC整像素运动估计中采用的EPZS算法可以简述为: 在大小为64×64的搜索框中,使用步长( l) 从1开始,以2的指数递增的8点菱形搜索,当SAD小于设定的阈值时停止搜索,得到运动矢量。在快速算法中,不同类型和尺寸的搜索模板一定程度上决定了搜索的效果。根据视频序列的中心偏移性( MVD) ,其运动矢量分布通常集中在搜索窗的中心位置附近,即大多数图像序列的运动都是平稳和缓慢的。8点菱形搜索适合搜索步长适中的点,对于搜索步长较小的点或较大的点,得到的搜索效果并不理想。因此,应该更改开始和提前终止的策略,优化搜索模板。

为此,在提出运动矢量搜索优化算法之前,需要统计现实序列运动矢量的分布,根据统计结果进行类型划分和调整搜索模板,减少搜索次数和运动估计计算量。由于搜索终止步长分布可以间接反映运动矢量分布情况,且数据易于得到、统计方便,本文模板优化的依据为搜索终止步长的统计分布。

通过测试得到176×144( qcif) 测试序列搜索终止步长的统计分布和176×144( qcif) 测试序列搜索终止步长的统计分布,如表1和表2所示。

%

%

根据以上分析,提出一种EPZS优化算法及搜索模板,搜索模板见图1。搜索框尺寸保持默认值64,调整的EPZS搜索点为3类: 4点的菱形搜索,8点的菱形搜索和16点的菱形搜索。当步长小于2时使用4点菱形搜索模板,如图1a所示;当步长在2 ~ 4时使用8点菱形搜索模板,如图1b所示; 当步长大于8时使用精度大的16点菱形搜索模板,如图1c所示。开始整像素运动估计算法之后,从距离为1开始对起始搜索点附近的点进行搜索,每次搜索步长以2的幂次增长,每次搜索根据步长选择对应的模板。即4点菱形搜索只是搜索距离为1时的搜索模板,8点菱形搜索是搜索距离为2,4,8的时的搜索模板,16点菱形搜索是搜索距离为16,32,64的时候的搜索模板。

2 测试结果

根据优化算法,对测试模型HM进行优化,并使用不同格式的视频序列对优化后的编码器进行了测试,下面给出了尺寸为176×144( qcif) 和1 920×1 080( class E) 的几个视频序列的测试结果。

测试视频序列配置如下: 测试序列尺 寸为176×144( qcif) ,编码帧数为60帧,帧率为155 f/s( 帧/秒) ,序列比特深度为8; 测试视频序列尺寸为1 920×1 080( class E) ,编码帧数为5,帧率为25 f/s,序列比特深度为8。

表3显示了尺寸176×144( qcif) 测试视频序列优化前后比较结果,其中编码帧数60,帧率5 f/s,序列比特深度为8。

%

表4显示了尺寸1 920×1 080( class E) 测试视频序列优化前后比较结果,其中编码帧数60,帧率5 f/s,序列比特深度为8。

%

3 结束语

根据表3和表4,可以得到结论如下:

对于尺寸为176×144测试视频序列,优化后,对于视频质量的客观值,亮度分量Y平均下降0. 005 0 d B,色度分量U平均下降0. 043 4 d B,色度分量V平均下降0. 072 6 d B,编码后码流比特率最多上升2. 21% ,耗时最少下降3. 03% 。

对于尺寸为1 920×1 080测试视频序列,优化后,对于视频质量的客观值,亮度分量Y平均上升0. 008 1 d B,色度分量U平均下降0. 014 9 d B,色度分量V平均下降0. 047 7 d B,编码后码流比特率最多上升0. 40% ,耗时最少下降1. 25% 。

HEVC技术 篇4

随着存储数据海量化、存储方式多元化以及计算机网络通信软硬件水平提升,超高清、超高分辨率视频已经成为用户的强烈需求。H.265/HEVC视频压缩编码标准由ISO移动图像专家组(MPEG)和ITU视频专家组(VCEG)的优秀学者历经3年时间不断优化创新,继承上一代H.264/AVC标准优势,编码效率提高近50%,尤其表现在8K×4K、1080p等高分辨率视频中,吸引全球范围科研机构和Microsoft、Polycom等视频领域跨国公司的广泛关注。

HEVC依然使用H.264的混合编码框架[1,2],包含预测、变换、量化、熵编码等模块,框架中每个模块为提高压缩性能加入更加高效的算法策略而相应带来计算复杂度,如帧内预测支持35种模式、帧间预测引入Merge模式、变换量化支持高达32×32变换单元、熵编码放弃了低效的CAVLC而仅采用CABAC算法等。用户在视觉上对视频的主观评价为主观质量评价,而高清视频图像展现出的纹理细节极易引起评价者的注意,尤其是物体边缘和文字内容对主观评价起着至关重要的作用。为进一步提升视频的主观质量,HEVC环路滤波技术不仅沿用H.264标准中的去块滤波器,而且加入样点自适应补偿滤波,减少由运动估计和变换量化所产生振铃效应带来的视频主观质量损失。

在历次视频编码联合开发组织会议征集草案中,草案JCTVC-A124[3]在HEVC的初始版本中使用边带修正(BDC)和极值修正(EXC),消除重建帧与原始帧之间的失真;草案JCTVC-D122[4]提出样点自适应补偿(SAO),吸收BDC、EXC技术,改进为边带补偿(BO)和边缘补偿(EO),选取最小失真模式进行样点补偿;草案JCTVC-E049[5]设定树形编码单元为补偿单元,其中包括一个亮度树形编码块(CTB)和两个色度CTB,并且提取邻近CTB信息应用Merge模式快速算法。

在环路滤波器中,HEVC融合BO和EO算法进行SAO滤波[6,7],旨在消除从4×4到64×64大小CTB块变换量化和运动估计8抽头亮度滤波和4抽头色度滤波后引起的吉布斯效应。如图1所示,无论量化步长(QP)变化,在视频序列图像边缘处重建帧像素点与原始帧相比均会产生明显的正负差值,出现振铃效果。本文针对此问题,利用视频序列原始图像直方图统计和帧内预测判别过程的自适应纹理信息,分析原始图像CTU像素值分布和边缘特性,改进BO算法使BO编码效率显著提升。

2样点自适应补偿滤波器设计

振铃效应是图像中物体边缘位置产生连续失真现象,很大程度影响图片主观质量。SAO滤波是为提升经过预测、变换、量化、去块滤波后重建帧质量,降低与原始帧之间的失真程度,主要采用BO和EO算法。

2.1 边带补偿

BO将图像灰度值分成若干个边带,如8比特深度视频格式以0~255值表征亮度和颜色分量,每个边带包含8个像素值共32个边带,即用[8,8k+7]表示第k个边带,k∈[0,31]。每个边带根据自身像素特点进行补偿,且同一边带使用相同补偿值。HEVC考虑到CTB的像素值大多分布在连续4个边带中,因此,仅对4个连续边带的像素值进行补偿,如图2所示。通过率失真计算最优补偿值,最终将起始边带位置和4个带符号的补偿值传至解码端。

2.2 边缘补偿

EO是基于边缘像素值检测的滤波过程,设定图3a中0°,45°,90°,135°这4种边缘检测方向,将当前像素值c与邻近像素值a、b对比,并设定图3b中4种边缘补偿分类条件:比两侧邻近值小;等于一侧邻近值且比另一侧邻近值小;等于一侧邻近值且比另一侧值大;比两侧邻近值大。最后,按照不同边缘补偿类型分别计算出重建帧像素与原始帧像素差值均值作为补偿值,HEVC将补偿类型以及补偿值绝对值传至解码端。

2.3 SAO优化算法设计

2.3.1 提取邻近SAO参数的参数融合模式

SAO使用参数融合模式(Merge模式),提取邻近CTB的SAO参数,仅需要传递融合标志位至解码端,从而进一步提高传递效率。因此,SAO传输补偿类型为BO模式、EO_0、EO_45、EO_90、EO_135和MERGE_UP、MERGE_LEFT,还有不补偿。其中MERGE模式中,MERGE_UP是提取CTB上侧SAO补偿参数,而MERGE_LEFT左侧的SAO补偿参数。

2.3.2 SAO率失真优化算法

HEVC采用SAO率失真优化算法,避免多次重复计算重建帧与原始帧之间的失真,大幅度提升了SAO率失真算法效率。

设(x,y)为像素位置,s(x,y)为原始帧像素值,u(x,y)为重建帧像素值(SAO补偿前),C为像素范围,m为补偿值。

原始帧与重建帧之间的失真为

原始帧与重建帧(SAO补偿后)之间的失真为

因此,SAO补偿前后Dpre与Dpost的差值为

式中:N是帧像素个数;E是原始帧与SAO补偿前重建帧之间的差值和。

在决策SAO最优模式时,利用相对率失真函数ΔJ=ΔD+λR快速计算失真,其中λ为拉格朗日因子,R为编码SAO参数信息所需的比特数。

3边带分布直方图分析

直方图是表征图像像素分布特征的结构图,SAO以边带为单位将像素值进行分类对重建帧进行补偿,因此本文利用直方图进一步观察序列的边带分布特征。根据视频图像特性,边带分布较复杂,平滑块集中在较窄的边带,含有尖锐边缘的区域集中在跨度较大的两个边带,而大块区域含有更多像素点,边带分布比较分散。本文针对较大和较小的CTB分别进行如下分析。

3.1 针对较大CTB直方图分析

对64×64,32×32和16×16的较大CTB包含内容丰富,边带分布复杂,不仅含有4个连续边带分布的情况,而且出现边带分布较集中或较分散的情况。截取32×32大小CTB分析边带观察直方图分布,图4a显示复杂的纹理区域边带分布较分散,边带分布跨度大于4个边带,而图4b显示平滑的纹理区域边带分布较为集中,边带分布跨度小于4个边带。

因此,本文以较大原始帧CTB为单元,对像素值边带分布统计分析。以JCT-VC测试条件[8]指定的Class A至Class F中21个8 bit测试序列为统计样本,0~255像素值分成32个边带,每个边带含有8个灰度值,测试视频出现4个连续边带的CTB作为正常分布块,而出现少于4个连续补偿边带的CTB作为窄边带分布块,出现大于4个连续边带的CTB为宽边带分布块。

根据统计分析结果表明,如表1所示,对于较大CTB的正常分布块占52%,而宽边带和窄边带分布块分别占8%和40%。

3.2 针对较小CTB直方图统计

对8×8,4×4大小则包含像素点较少,与较大块CTB相比所含内容较少,边带分布不仅含有4个连续边带分布的情况,而且出现HEVC无法解决的两个或多个边带分布跨度较大的情况。截取8×8大小CTB分析观察边带直方图分布,图5a显示边带分布较分散,集中出现在两个边带,且边带分布跨度大于4个边带,而图5b显示边带分布较分散,边带集中出现在多个边带,边带分布间跨度大于4个边带。

因此,与较大块CTB相同,本文选取JCT-VC测试条件指定视频序列样本,将边带分布集中在1个波峰情况作为单波峰分布块,而边带分布形成2个波峰(跨度大于4个边带)作为双波峰分布块,大于2个波峰(波峰间跨度大于4个边带)作为多波峰分布块。

根据统计分析结果表明,如表2所示,对于单波峰补偿块出现概率为71%,而双波峰和多波峰出现概率分别为25%和4%。

4 帧内预测模式信息提取纹理

HEVC帧内预测是利用预测单元邻近像素点信息,消除图像的空间冗余性。HEVC提供35种预测模式,其中包含33种方向预测模式,DC、Planar两种平滑区域预测模式。为降低帧内预测复杂度,HEVC利用哈达玛变换残差计算的粗略模式选择(RMD)和邻近信息可能最优模式(MPM),提取帧内预测最优模式集计算率失真代价(RDO),得到帧内预测最优模式。

本文前期的大量工作[9,10]得出结论,RMD最优模式与RDO最优模式在表征预测块纹理上具有相关性,尤其是针对较小的CTB单元。若RMD最优模式与RDO最优模式均为方向预测模式且方向性一致或相邻,可准确表征预测块纹理方向,从而提取图像的边缘方向;若RMD最优模式与RDO最优模式均为DC或Planar模式,可准确表征预测块为平滑区域。因此,通过预测编码过程中每次帧内预测模式判别,利用RMD最优模式与RDO最优模式之间的相关性,可快速提取CTB纹理特点。

5 边带补偿改进方法设计

本文基于直方图观察分析CTB边带分布,分别针对64×64,32×32,16×16的较大CTB和8×8,4×4的较小CTB的复杂的边带分布情况,自适应地提取帧内预测模式的信息判别CTB纹理特征,对HEVC中的BO算法进行优化,图6a和图6b分别为应用于较小和较大CTB的BO改进方法流程图。

5.1 自适应判定纹理特征

为准确判断图像波峰特征,在计算8×8和4×4较小CTB边带补偿模式前,提取帧内预测中RMD最优模式和RDO最优模式,利用两种模式图像纹理相关性进行“图像纹理判别”,如图6a所示。

如果RMD最优模式与RDO最优模式均为DC或者Planar模式时,该CTB则为平滑区域;如果RMD最优模式与RDO最优模式的同为角度模式,且方向相邻(模式相差小于或等于2),该CTB则为图像纹理规则区域,即含边缘区域;如果RMD最优模式与RDO最优模式的同为角度模式,且方向不相邻(模式大于2),该CTB则为图像纹理非规则区域,即无边缘区域。

5.2 边带补偿新增模式

根据图像直方图分析过程得到结论,针对较小与较大CTB边带分布特点不同,分别采用不同补偿模式。

对于8×8和4×4较小CTB,如图6a所示,图像纹理判别后,若为平滑区域,则该区域判定为单波峰分布,以传统BO为标志位,传递4个连续的边带补偿值;若为含边缘区域,判定边界特征像素点对边带间隔Y,如图7a和图7b分别表示8×8和4×4的边界特征像素点位置,以帧内预测过程提取的CTB纹理方向为参考对称轴,判定图7中具有相同数值位置的特征像素点,如果特征像素点所在边带间隔Y<4则该区域依然判定为单波峰分布,以传统BO为标志位,如果Y≥4则该区域依然判定为双波峰分布,以BO_D为标志位,传递2个非连续边带补偿值;若为无边缘区域,则提取波峰边带值后,以BO_M为标志位,识别含像素较多的波峰边带,传递3~4个非连续边带补偿值。

对于64×64,32×32,16×16较大CTB,如图6b所示,统计图像像素边带分布,判定图像属于正常边带分布、窄边带分布或宽边带分布。正常边带分布依然保留BO模式,以传统BO为标志位,传递4个连续的边带补偿值;窄边带分布设置BO_N为标志位,传递2个连续边带补偿值;宽边带分布设置BO_B为标志位,传递5~8个连续边带补偿值。

6实验结果

本实验测试环境使用HEVC标准参考代码HM10.0在Windows 8系统VS2012编译运行,按照HEVC测试标准[8]规定,对Class A-Class F所有测试序列进行统计和测试。以全I帧(AI)、随机存取(RA)、低延迟-P帧(LP)、低延迟-B帧(LB)为编码环境,设置22,27,32,37作为QP值,利用Bjontegaard-Delta比特率[11](BD-rate)将提出的边带补偿优化改进方法与HEVC原始BO方法进行对比,并统计编解码时间,结果如表所示。

客观评价上,表3展示了4种编码条件下大量样本的测试结果,y,Cb,Cr这3个分量的比特率获得增益平均值为-0.42%,-2.34%,-2.72%。该方法在色度分量上编码效率,尤其是在静态背景特征的Class E的测试序列、LP测试环境下可达到-7.53%。表中的编码时间和解码时间变化显示,编解码复杂度上的提升可忽略不计。主观评价上,将改进方法与HEVC原始BO方法解码后的图像与原始帧对比,图8a~图8c左图显示边缘部分像素点得到较好补偿,而且图8a~图8c右图显示改进算法一定程度上避免了不适用SAO补偿情况出现。

7 结论

本文利用图像直方图观察序列原始帧边带分布,分析较大和较小CTB边带分布特征,新增BO_B,BO_N,BO_D,BO_M这4种边带补偿模式,弥补HEVC边带补偿算法的不足,并自适应提取帧内预测模式判别中RMD最优模式与RDO最优模式相关性表征纹理特征,辅助较小CTB边带补偿模式选择。实验结果表明,与HM10.0相比,本文提出SAO改进方法提高了编码性能,尤其在色度上比特率增益可达到-7.53%,并且图像边缘部分主观评价质量提升效果明显。

摘要:新一代视频编码标准HEVC在环路滤波技术中采用样点自适应补偿算法解决变换量化引起的振铃效应,包括边带补偿和边缘补偿,但是边带补偿算法没有完全考虑边带分布情况,仅传递4个连续的边带。利用图像直方图充分分析了边带分布情况,白适应地提取了帧内预测模式纹理信息,针对不同大小的树形编码块提出了一种样点自适应补偿改进方法。实验结果表明,与HM10.0相比,该方法提高了编码性能,尤其在色度上比特率增益可达到-7.53%,图像边缘部分主观评价质量提升效果明显。

关键词:HEVC,样点自适应补偿,边带补偿,直方图分析,纹理特性

参考文献

[1]SULLIVAN G,OHM J,WOO-JIN H,et al.Overview of the highefficiency video coding(HEVC)standard[J].IEEE Trans.Circuits System Video Technology,2012,22(12):1649-1668.

[2]BOSSEN F,BROSS B,SUHRING K,et al.HEVC complexity and implementation analysis[J].IEEE Trans.Circuits System Video Technology,2012,22(12):1685-1696.

[3]KEN M,WOO-JIN H.IL-KOO K.Document JCTVC-A124,Samsung's response to the call for proposals on video compression technology[S].2010.

[4]FU C,CHEN C,HUANG Y,et al.Document JCTVC-D122,Picture quadtreeadaptive offset[S].2011.

[5]FU C.CHEN C,TASI C,et al.Document JCTVC-E049,Sample adaptive offset with LCU-Independent decoding[S].2011.

[6]FU C.ALSHINA E.ALSHIN A,et al.Sample adaptive offset in the HEVC standard[J].IEEE Trans.Circuits System Video Technology,2012,22(12):1755-1764.

[7]唐华敏,杜建超,王庆雷.视频编码标准HEVC中的环路滤波技术分析[J].电视技术,2014,38(11):1-4.

[8]BOSSEN F.Document JCTVC-J1100,Common HM test conditions and software reference configurations[S].2012.

[9]ZHANG M,ZHAO C,XU J.An adaptive fast intra mode decision in HEVC[C]//Proc.IEEE International Conference on Image Processing(ICIP).Orlando:IEEE Press,2012,221-224.

[10]ZHANG M,ZHAO C,XU J,et al.A fast depth-map wedgelet partitioning scheme for intra prediction in 3D video coding[C]//Proc.IEEE International Symposium on Circuits and Systems(ISCAS).Beijing:IEEE Press,2013,2852-2855.

HEVC技术 篇5

关键词:HEVC,编码块,错误隐藏

随着高清电视、多媒体应用技术的快速发展,原先的视频压缩标准已不能满足用户对高清晰度视频的要求。为此,ITU-T VCEG和ISO/IEC MPEG共同成立了一个工作小组JCT-VC,提出了新一代视频编码标准HEVC(High Efficiency Video Coding)[1],与H.264/AVC相比,旨在保证相同解码质量的情况下压缩效率提高一倍。传统的H.264/AVC最大支持16×16宏块,HEVC测试模型(HM)仍沿用H.264/AVC的混合编码框架,但其块尺寸可以从8×8扩展到64×64的编码块(Code Unit,CU)。HEVC采用四叉树编码结构,并且支持灵活的块分割,进而实现了对不同尺寸CU的编码,不再局限于H.264/AVC的16×16宏块范围内。然而,由于干扰、噪声和信道拥塞等原因导致信道不可避免会有误码或丢包等现象发生,使得视频码流受损。而且,由于HEVC支持多种不同尺寸块,其码流在网络传输中遭遇信道错误会导致视频序列出现各种不同尺寸的错误块,因此,有必要研究如何对这些不同尺寸错误块进行有效的隐藏。

1 编码块的特性分析

对于高清视频而言,如果仍然利用H.264/AVC进行16×16宏块分割,则会影响压缩效率,因此HEVC通过灵活的块分割能够有效地改善编码效率。对于平坦区域(纹理简单、静止区域)可以进行较大块分割,而对于纹理复杂区域(比如边界区域)可以进行小尺寸分割。在高清视频中,较大的运动变换块能够更高效地去除空间上的冗余,这样就突破了H.264/AVC固定尺寸分割的束缚,进而大大提高了压缩效率。

HEVC的编码特性决定了不同尺寸块在不同区域的分布情况呈现一定的规律性,一般情况下,对于一些静止的后景区域或者一些纹理较简单的运动物体,直接采用64×64块编码,无需进一步分割,同样这些区域也可采用32×32编码块;对于8×8块以及16×16块而言,其在图像边缘处(包括前景、背景交界处)或者纹理很复杂的区域出现的概率较大。因此,在有误网络传输中,受损的较大尺寸编码块(64×64,32×32)一般出现在纹理简单处,多为后景区域;而小尺寸编码块(16×16,8×8)的丢失主要集中在边界区域附近。

2 基于前、后景的错误隐藏

由于不同尺寸的编码块的特性的不同,其所适用的错 误隐藏的具体方法也是不同的。而且编码块尺寸的大小与前、后景区域有关,因此,本文首先对当前图像的前景区域和背景区域进行了判别[2],然后对前景区域、背景区域以及边界区域的错误块分别进行隐藏,其中着重研究分析了边界处错误块的隐藏。

2.1 判别前后景区域

对于一般的视频序列而言,后景区域是保持静止的,而属于前景区域(包括边界处)的宏块之间变化较大、时域活跃性较强。本文利用错误块周围正确接收块的时域活跃性来判断错误块属于前景还是后景。

错误块可能会是各种不同尺寸的CU。由于错误块周围同样会出现不同尺寸的CU,而这些邻近块也有可能正确或错误。因此,确定邻近正确块和邻近错误块的分布情况是不易的。为了充分利用周围块信息,本文对错误块周围所有不同尺寸的CU进行8×8块分割,然后对每个8×8块是否正确进行标记,如果该8×8块为错误块,则舍弃不用,这样可以最大程度上利用周围块的正确信息。图1是以64×64块为例说明了其周围的邻近块的分布情况,其中灰色区域代表该64×64块错误块。

时域活跃性主要是利用错误块周围的正确块在空间上最邻近错误块的2行及2列的像素进行判断,如图2所示。具体的时域活跃性TAVG可以根据式(1)~式(5)计算得到。式(1)~式(4)分别求得上、左、下、右4个方向的邻近SAD(Sum of Absolute Difference)。其中,Bt(x,y)表示当前帧中的错误块,Bt-1(x,y)表示参考帧中对应位置块,(x,y)表示错误块左上角的空间像素坐标,M表示用于匹配的行数或者列数,考虑到相邻像素的强相关性以及算法本身的复杂度,这里M取值为2,N表示周围块的实际可用像素宽度(错误像素不参与运算),T,L,B,R代表上、左、下、右4个方向。公式如下

SADL=j=0Μ-1i=0Ν-1|Bt(x-Μ+j,y+i)-Bt-1(x-Μ+j,y+i)|(2)

SADB=j=0Μ-1i=0Ν-1|Bt(x+i,y+Ν+j)-Bt-1(x+i,y+Ν+j)|(3)

SADR=j=0Μ-1i=0Ν-1|Bt(x+Ν+j,y+i)-Bt-1(x+Ν+j,y+i)|(4)

错误块的时域活跃性与邻近4个SADi密切相关,同时也要考虑到错误块周围参与计算的8×8块(邻近正确块)的个数Num8×8Block,因此,时域活跃性TAVG可由式(5)求得

ΤAVG=i={Τ,L,B,R}SADiΝum8×8Block(5)

如果TAVG< T1,那么认为错误块属于后景区域,这里T1作为一个后景判断的阈值,其值接近于零。通过对不同尺寸CU自身特性统计分析得出,当TAVG较大且大于某一阈值T2时,当前错误块出现在边界处的概率较大。当T1<TAVG<T2时,错误块一般出现在运动的前景区域。

2.2 后景区域错误隐藏

通常情况下后景区域都是静止的,属于该区域的编码块的运动矢量(Motion Vector,MV)基本为零。如果当前帧中的错误块处于后景区域,且HEVC对其通常采用较大块编码,错误块的尺寸基本集中为64×64,只要利用参考帧中对应位置上的块进行时域替代即可。这种隐藏方法简单、快速。

2.3 前景区域错误隐藏

对于前景区域而言,由于其保持了良好的运动一致性,因此前后帧具有较强的时域相关性。运动物体的部分纹理信息(平坦区域)较为简单,一般采用64×64或32×32编码块,对于较复杂的纹理信息(如边缘处),需要进行更小尺寸的分割,因此,前景区域可能会出现各种不同尺寸的错误块。但是由于前景区域保持了运动一致性,可以通过利用周围像素块的运动矢量即可在参考帧中找到最佳匹配块,然后进行时域替代。本文首先通过候选运动矢量获得匹配块,然后利用外边界匹配算法(Outer Boundary Matching Algorithm,OBMA)算法[3]计算SADAVG,如果SADAVG小于给定阈值T3,直接选取使得SADAVG最小的运动矢量进行错误隐藏,否则对当前CU进行分割,分成4个小块,然后对每个小块重复上述操作,最后达到隐藏的目的。这种隐藏算法过程也比较简单。

2.4 边界区域错误隐藏

图像自身的纹理特性决定了出现在边界区域的错误块尺寸主要集中在8×8块或16×16块。通过式(5)可以判决出出现在前景与后景的交界处附近的错误块(即边界块)。更进一步,错误的边界块可能会出现在不同区域内:1) 错误块出现在背景区域,但在参考帧中并未出现,即为新出现的信息,那么认为该错误块为I(Intra)块,不宜采用时域法进行隐藏,本文主要利用周围像素的信息进行空域插值计算得出;2) 错误块刚好出现在边界处,既包含前景又包含背景,这属于较复杂的情况。针对以上两种情况,本文主要通过以下步骤进行处理:

1) 首先通过OBMA算法利用周围块的多个候选运动矢量计算SAD

2) SAD小于预定义的阈值T4,直接选取使得SAD最小的运动矢量进行错误隐藏,否则跳到步骤3)。

3) 对当前CU进行分割,分成4个小块,对每个分割块重复步骤1)和2),此时若SAD值仍然较大,则认为当前块为帧内块,采用双线性插值法进行错误隐藏。

3 算法的实现

根据上述的分析与探究,本文提出的算法流程图如图3所示。

3.1 OBMA算法

本文主要采用OBMA算法计算错误块的匹配代价,如图3所示,图中斜线块代表邻近错误块,在计算SAD时舍弃不算。根据运动一致性原理,利用式(6)~式(10)计算错误块外边界的2行(或2列)像素与参考帧中对应候选块外边界的2行(或2列)像素的SAD

SADn0ΟBΜA=j=0Μ-1i=0Ν-1|Bt(x+i,y-Μ+j)-Bt-1(x+i+ΜVx,y-Μ+j+ΜVy)|(6)SADn1ΟBΜA=j=0Μ-1i=0Ν-1|Bt(x-Μ+j,y+i)-Bt-1(x-Μ+j+ΜVx,y+i+ΜVy)|(7)SADn2ΟBΜA=j=0Μ-1i=0Ν-1|Bt(x+i,y+Ν+j)-Bt-1(x+i+ΜVx,y+Ν+j+ΜVy)|(8)SADn3ΟBΜA=j=0Μ-1i=0Ν-1|Bt(x+Ν+j,y+i)-Bt-1(x+Ν+j+ΜVx,y+i+ΜVy)|(9)

式中:Bt(x,y)表示当前帧中的错误块;Bt-1(x,y)表示参考帧中对应的运动补偿块;MVxMVy分别表示候选运动矢量的水平分量和垂直分量,类似于式(5),可以得到

SADAVG=i={0,1,2,3}SADniΟBΜAΝum8×8Block(10)

本文通过计算SADAVG的相对大小来判断当前错误块是否需要进行进一步的分割。

3.2 双线性插值法

本算法中同时提到有关帧内插值的方法,为减少计算复杂度,本文对于帧内错误块主要采用JM代码中常用的双线性插值法[4],该算法对于受损区域利用水平方向和垂直方向相邻像素进行插值,其权值与受损像素到正确图像边界的距离成反比。

3.3 候选运动矢量集

对于需要进行时域隐藏的错误块,关键是要获取当前错误块的最佳运动矢量MV。如图4所示,本文首先确定分别与错误块4个顶角最邻近的2个CU,然后将其正确的运动矢量(MV0~MV7,周围错误块的MV不参与计算)以及参考帧中对应位置块的运动矢量和零运动矢量作为错误块的候选运动矢量集,通过SADAVG计算来确定最佳MV进行时域恢复。

4 实验结果分析

4.1 阈值分析

本实验是在HEVC测试模型HM3.3环境下实现的,算法所涉及到的4个阈值T1~ T4,其中,T1主要用于背景和前景区域判断,由于背景区域的时域活跃度基本接近于0,在本实验中取值为5;T2主要用于判断边界处的错误块,对于此类错误块,前后帧中相同位置块的差异较大,因此其SAD值也相对较大,实验中T2取值为850;T3主要是对前景区域的判断,从邻近块的运动矢量集中寻求参考帧中的最佳匹配块,计算出的SAD值也应较小,这里取值为120;T4是对分割块进行匹配精度判断,对于一些只属于前景或者背景的分割块匹配精度较高,SAD值很小,T4取值为50。本文设定的这些阈值是经过对不同序列大量测试统计后综合得出的。

4.2 实验结果

本实验分别对Cafe序列、Dog序列和Breakdancers序列进行了测试。为了体现本文方法的优越性,在相同的实验条件下,还对各种不同尺寸块采用同一种隐藏方法:直接从候选运动矢量集中获取使得SAD最小的MV进行时域隐藏,即OBMA算法。表1列出了Dog序列在不同丢包率下采用两种不同方法的实验结果。从表1中可以看出,与简单的OBMA算法相比,本文方法能够提高2 dB左右的PSNR。表2列出了不同尺寸序列(均选取57帧进行实验)在同一丢包率下采用本文方法和OBMA算法的PSNR以及相对整个解码时间的隐藏错误块所占用时间的百分比,可以看到,本文算法在保持较高PSNR的情况下,其耗时只占正确解码时的2%左右,基本能保证实时重建高清视频。结合表1、表2可以得出,本文方法在保证了较低复杂度的同时获得了较高的重构质量。

然而,本算法仍需改善的是对帧内丢失块的错误隐藏,图5为Cafe序列在10%丢包率情况下第26帧出错图像中的某一区域,图6为恢复后的图像。从图中可以直观地看出,如果错误块出现在纹理复杂区域,只采用简单的双线性插值效果并不好,因此如何进行更高效的帧内插值也是今后研究的主要问题。笔者希望通过最邻近边界块的预测模式作为当前错误块的一种预测模式进行错误隐藏。

5 结束语

本文主要是针对HEVC码流在传输过程中可能出现的各种不同尺寸的错误块,给出了一种基于前后景的差错隐藏算法。本文利用边界分割以及阈值判断的思想对错误块进行了有效的恢复,实验数据表明采用本文方法能够获得较好的隐藏效果。

参考文献

[1]High efficiency video coding[EB/OL].[2011-11-20].http://en.wikipedia.org/wiki/High_Efficiency_Video_Coding.

[2]JUNG B,JEON B,KIM M D,et al.Selective temporal error concealment algorithm for H.264/AVC[C]//Proc.2004IEEE International Confer-ence on Multimedia and Expo.Taipei:IEEE Press,2004:411-414.

[3] THAIPANICH T,WU P H,KUO C C J. Video error concealment with outer and inner boundary matching algorithms[C]//Proc.SPIE Optics and Photonics Conference on Applications of Digital Image Processing.San Diego,CA,USA:[s.n.],2007:26-30.

HEVC技术 篇6

关键词:HEVC,运动补偿,带宽减少,插值计算,高速缓存

HEVC是由JCT-VC组织研发的最新一代视频压缩标准[1], 和上一代H.264/AVC标准[2]相比, HEVC在保证视频质量的同时可以带来两倍的视频编码压缩量。现在电视广播以及家庭影音中的主流视频格式是1 080p和720p, 新一代高端影音产品将目标锁定在更高分辨率的视频格式, 比如QFHD (4K×2K) 。HEVC的高视频压缩率将会更好地满足超高清分辨率视频对于海量数据吞吐的需求, 也被业界公认为下一代最为普遍应用的标准。新标准中采用了很多先进视频压缩技术, 比如说在运动补偿模块亮度插值中使用8抽头滤波器来预测1/4分数精度像素值, 同时在色度差值中使用4抽头滤波器来预测1/8分数精度像素值。与之前的视频压缩标准相比, 更高精度的插值预测能够带来更好的视频压缩效果, 与此同时视频编解码的过程对于带宽的需求就更高。

运动补偿插值模块是视频解码器中计算需求最大的模块之一, 插值预测的过程中需要大量读取外设存储器中的参考帧信息, 占用了约70%的解码带宽。实时解码3 840×2 160@60 f/s (帧/秒) 格式视频, 数据吞吐量会达到500 Mpixel/s[3]。假如使用H.264/AVC解码, 带宽的需求将会是1 080p的4.3倍, 即7 Gbit/s。HEVC标准的插值部分因为应用了抽头数更多的8抽头滤波器, 相比H.264标准需要更多的参考帧信息, 因此会带来更大的带宽消耗。所以, 运动补偿模块会是HEVC标准进行超高清视频实时解码过程中的瓶颈。

通过利用2D Cache结构和插值顺序重排, 本文提出了一种有效合理的运动补偿带宽优化设计。首先, 并行化插值结构设计可以保证3 840×2 160@60 f/s的视频实时解码时的数据吞吐量需求。其次, 利用在插值计算处理器与主存储器中间使用2D Cache结构进行高速缓冲存储, 从而达到数据快速读取以及大量减少带宽的目的。然后, 在保证Cache读取命中率的前提下, 利用插值顺序重排方案提高每次所读取参考帧数据之间的时/空相关性, 从而减少Cache面积, 减少片内硬件开销。

1 HEVC运动补偿系统框架

图1为所设计的运动补偿模块系统框架, 主要由亮度插值计算模块、色度插值计算模块、Cache高速缓冲存储模块以及外设主存储器组成。

1.1 运动补偿插值模块

在许多基于H.264/AVC标准所设计的运动补偿结构中, 一个宏块往往被拆分成16个4×4模块然后进行插值计算, 一个4×4亮度模块需要最多读取9×9参考帧像素信息[4,5]。在HEVC中, 3种不同系数的8抽头滤波器的应用使得插值一个4×4亮度模块需要读取最多11×11参考帧像素信息。

本文运动补偿模块基于作者先前的研究成果[6], 利用亮度插值中3种系数结构中的相同项, 将3种不同系数的滤波器整合设计成为一个具有复用结构的8抽头滤波器, 减少了计算模块的硬件开销。插值计算模块采用流水线设计, 1/4精度亮度插值首先由8抽头滤波器进行水平方向插值, 得到半像素值或者1/4像素精度中间值。在8个时钟周期之后, 寄存器阵列中的8个中间值被传送至垂直方向8抽头滤波器进行插值计算, 最后得到所求像素预测值。对于N个像素并行插值计算, 整个HEVC亮度插值模块需要由2N个8抽头滤波器 (N个水平方向, N个垂直方向) 和N×8个15 bit寄存器组成。而在H.264/AVC中, 亮度插值模需要 (3N+1) 个6抽头滤波器 (N个水平方向, 2N+1个垂直方向) , (2N+1) ×6个8 bit寄存器和N个2抽头滤波器[7,8]。和H.264/AVC相比, HEVC所需的滤波器数量和寄存器队列减少了, 但是滤波器的面积、寄存器的位宽以及寄存器队列的长度增加了。同时因为插值所需参考帧像素信息的增加, HEVC运动补偿对于带宽需求也更大了。本文中的亮度插值结构为8个像素并行预测。色度模块与亮度模块结构相似。

1.2 Cache模块

运动补偿插值模块计算时所用到的参考帧信息由于数据量巨大, 存储在片外的主存储器中。为了减少从数据片内外数据交互带宽, 计算模块与片外主存储器之间引入Cache[9]。首先, 用来描述插值位置和参考块大小的插值指令会被发送到判断模块中, 判断模块通过访问标志存储器判断得出所需数据是否命中。若命中, 则将插值指令发送至任务队列;若没有命中, 则将数据读取请求发送给片外主存储器, 主存储器确认请求后会将被请求数据传送写入片内数据存储器中。当所有所需参考帧数据都已经被写入数据存储器中并且插值模块已经准备就绪时, 参考帧数据和插值指令随后被发送至插值模块中进行插值计算。

2 Cache优化设计

Cache设计中的三个主要问题为高速缓存映射机制, 内部存储器结构以及Cache缓存区面积优化。高速缓存映射机制[10,11]在许多研究者的文章中都被讨论过, 而内部存储器结构和缓存区面积优化问题却很少被研究。

2.1 内部存储结构设计

本文的内部存储器结构设计主要为了优化存储器面积和功耗问题。首先, 和标清视频图像解码相比, 在超高清视频图像解码的过程中, 插值模块往往采用并行化流水线结构来增加数据吞吐量, 导致内部存储器的宽度也会成比例增加。其次, 内存访问过程中的数据对齐问题也会导致存储器宽度的增加。如图2a所示, RAM中数据通常是一列中多个像素在一起存储和读取, 被称为存储单元。图2a中以4个像素为基本存储单元, 假设内存输出宽度为2个存储单元即8个像素, 以读取8个像素值为例说明RAM数据访问对齐问题。图2a (1) 中所示情况为数据对齐访问, 即所需8个数据正好完全包含2个存储单元内数据, 因此只要一个时钟周期便可以读取所需数据。图2a (2) 中所示情况为数据未对齐访问, 即只需要3个存储单元内的部分数据, 因为RAM一次只能输出2个存储单元的数据, 因此需要2个时钟周期来读取所需数据。为了保证数据读取速度满足一个时钟周期内读取所有所需值, 就需要增加RAM宽度。内存输出宽度的增加虽然不会影响内存缓存区的大小, 但是会导致功耗增加。

一个解码单元通常会被拆分成多个4×4或者8×4小模块来进行插值计算。插值一个8×4模块, 在H.264中需要参考帧模块大小为12×9, 而在HEVC中需要大小为15×11的参考帧模块。文献[3]使用4片宽度为32 bit (4个像素) 的RAM结构来输出数据, 称之为4S×4结构。这种4S×4结构保证了12个参考帧像素值能在1个时钟周期内从RAM中被读取出来, 但是无法满足HEVC亮度插值时一个时钟周期读取15个像素值的需求。有两种方法可以增加RAM输出, 保证HEVC的快速数据读取需求。第一种方法是增加1片宽度为32 bit的RAM, 即4S×5结构如图2c所示。但是这种结构虽然保证了数据输出速度, 却也增加了RAM宽度, 为原先的1.25倍。本文提出了另一种2S×8结构, 即使用8片RAM, 每片RAM宽度为16 bit (2个像素) 。这种2S×8结构使得15个参考帧像素能在1个时钟周期内被全部读取, 从而有效地保证了亮度插值模块的并行计算速度, 并且没有增加内存宽度。

2.2 Cache缓存区面积优化

运动补偿插值计算过程中所需要的参考帧模块数据之间事实上是有相关性的[9]。图3展示了当前帧解码单元P0, P1, P2, P3在进行运动补偿时所需参考帧模块大小的例子。从图3可以发现, 参考帧模块之间互相有重叠。即在当前插值模块Pk所需的参考帧模块中, 有部分信息有很大概率仍然会被下一个插值模块Pk+1所需要, 此为数据的时域相关性。另一种数据相关性是由存储器中数据的存放格式所引起的。在外部存储器中, 多个像素通常被组合在一起当作一个访问单元来存放和读取。比如在本文设计的Cache中, 一个访问单元由8 byte (64 bit) 组成。当这个访问单元中的部分数据需要被读取时, 整个访问单元都会从存储器中读取出来, 包括单元中剩下的不需要数据。而那些当前模块插值过程中所不需要的数据信息有很大概率在下一个模块插值的过程中被请求读取。因此, 同一个访问单元可能被连续多次地反复读取, 此为数据的空域相关性。在2D Cache结构中, 这些数据相关性直接影响了Cache高速缓冲区的大小。合理高效地运用这些数据相关性来进行数据读取, 可以在保证带宽减少的同时, 优化Cache缓冲区的大小和减少硬件开销。

文献[12]使用了4×64×64大小的Cache缓冲区来减少带宽, 是H.264中32×32大小的Cache设计[10]的16倍。虽然带宽减少了, 但是也为解码芯片带来了巨大的片内硬件开销。图4a为HEVC中最大解码单元 (64×64) 的原始运动补偿插值顺序, 基于HM 9.0。由图可知, 各个模块的原始插值计算顺序与预测单元的存放结构有关。但是, 按照这种树状存放结构读取的参考帧模块, 其数据相关性的利用率很低。因此, 本文提出3种插值顺序重排方法, 目的是为了提高参考帧数据相关性的利用率来减少Cache大小, 从而减少片内硬件开销。如图4b~4d所示, 分别为垂直读取、水平读取和混合读取 (将解码单元分成上下两块进行垂直读取) 。

3 实验结果及分析

图5为部分插值顺序重排实验结果, 所使用的视频来自HEVC标准测试序列集, 为IPPPP编码模式, 测试工具为HM 9.0。

以图5a为例, 测试了3种插值顺序重排在不同的缓冲区大小情况下的带宽优化结果, 其中横坐标表示Cache缓冲区大小 (高×宽字节) , 纵坐标表示带宽减少率。从此图中可以看出, 在原始插值顺序的情况下, 带宽优化曲线 (此处称之为Rc曲线) 在128×128处收敛, 即在这个缓冲区大小下带宽优化效果最佳。另外三种插值顺序使得曲线提前收敛, 其中混合顺序重排使得带宽优化效果在Cache缓冲区大小为32×64时就已经接近于最佳。其他视频序列的测试结果也均表明利用混合插值顺序重排, 在保证带宽优化效果的同时, 可以将片内Cache硬件开销减少为原来的 (32×64) / (128×128) =1/8。使用插值顺序重排的方法也会带来一些额外的硬件开销, 那就是需要在外部存储器中利用一块64×64 byte大小的存储空间来存储整个最大解码单元内的参考帧数据信息。片外存储器原先存储空间远大于64×64 byte, 而且流水线设计有效地解决了数据等待时间问题, 因此这点额外的硬件开销是可接受的。图5d为混合插值顺序重排下的带宽减少率, 从图中可以看出带宽优化率达到80%~90%, 合理有效地优化了超高清视频编解码过程中带宽过大的问题。

4 结论

本文提出了一种基于Cache的HEVC运动补偿带宽优化设计。主要贡献有:1) 提出了内部存储器低功耗结构设计, 保证HEVC标准下超高清视频解码数据吞吐量需求, 同时降低RAM功耗。2) 提出了Cache大小优化设计, 通过插值顺序重排的方法高效地利用了参考帧数据间的相关性, 将片内Cache硬件开销减少了87.5%。

HEVC视频测试集的实验结果表明, 本文Cache设计用与H.264有可比性的32×64 byte内存就可以减少HEVC运动补偿插值计算过程中的80%以上的带宽。本文为HEVC解码器芯片的实际生产和未来针对超高清视频实时解码应用提出了合理的解决方案, 同时比较了HEVC和H.264运动补偿模块在硬件实现和开销上的异同。

参考文献

[1]Working draft 5 of high-efficiency video coding, joint collaborative team on video coding (JCT-VC) [S].2011.

[2]Draft ITU-T recommenda-tion and final draft international standard of joint video specification[S].2003.

[3]ZHOU J, ZHOU D, HE G, et al.Cache based motion compen-sation architecture for quad-HD H.264/AVC video decoder[J].IEICE Trans.Electron., 2011 (4) :439-447.

[4]GUO Zhengyan, ZHOU Dajiang, GOTO S.An optimized mcinterpolation architecture for HEVC[C]//Proc.IEEE Int.Conf.on Acoustics, Speech, and Signal Processing.[S.l.]:IEEE Press, 2012:1117-1120.

[5]刘立峰, 方向忠.低运算复杂度的H.264解码器运动补偿模块[J].电视技术, 2011, 35 (9) :23-26.

[6]SZE V, FINCHELSTEIN D, SINANGIL M, et al.Chandrakasan.A 0.7-V 1.8-mW H.264/AVC 720 p video decoder[C]//Proc.IEEE J.Solid-State Circuits.[S.l.]:IEEE Press, 2009:2943-2956.

[7]WANG S, LIN T, LIU T, et al.A new motion compensation designfor H.264/AVC decoder[C]//Proc.IEEE Int.Symp.Circuits Syst.[S.l.]:IEEE Press, 2005:4558-4561.

[8]ZHOU D, LIU P.A hardware-efficient dual-standard VLSI archi-tecture for MC interpolation in AVS and H.264[C]//Proc.IEEE Int.Symp.Circuits and Syst..[S.l.]:IEEE Press, 2007:2910-2913.

[9]CHEN X, LIU P, ZHOU D, et al.A high performance and low bandwidth multi-standard motion compensation design for HD video decoder[J].IEICE Trans.Electronics., 2010 (3) :253-260.

[10]CHUANG T, CHANG L, CHIU T, et al.Bandwidth-efficient Cachebased motion compensation architecture with DRAM-friendly data access control[C]//Proc.IEEE Acoust., Speech and Signal Process..[S.l.]:IEEE Press, 2009:200-2012.

[11]MEHENDALE M, DAS S, SHARMA M, et al.A true multistandard, programmable, low-power, full HD video-codec engine for smartphone SoC[C]//Proc.IEEE Solid-State Circuits Conf.[S.l.]:IEEE Press, 2012:226-228.

HEVC技术 篇7

关键词:视频编码,HEVC,帧内预测,复杂度控制

1 HEVC视频标准编码

随着视频技术的发展,特别是高清(HD)、超高清(UHD)、3D和多视点(multi-view)视频技术的兴起,各种视频信息已普及和深入到人们生产和生活的各个方面。基于互联网的网络视频实时通信己经成为当前通信领域的热点,并在视频会议、视频监控、远程教育、视频点播等方面得到广泛的应用,视频压缩技术受到巨大的挑战。视频应用的多样化和高清化趋势对视频压缩性能提出了更高的要求。为此,2010年4月VCEG和MPEG再次组建视频编码联合组(Joint Collaborative Team On Video Coding,JCT-VC),联手制定新一代视频编码标准———HEVC(High Efficiency Video Coding)[1]。相比以往的视频编码标准,HEVC沿用了传统视频编码标准的混合视频编码基本框架,并在各个编码模块上进行了改进和革新。其核心模块包括:预测、变换和量化、熵编码、环内滤波等。与先前的H.264/AVC标准相比,在相同应用条件和视频质量的前提下HEVC的编码效率要提高一倍。随着HEVC的发展,基于HEVC的应用级编码器也随之出现,目前可以直接使用的有两个:x265,Div X265。类似于以往的国际标准,HEVC采用混合编码框架,如图1所示[2],主要包括变换、量化、熵编码、帧内预测、帧间预测以及环路滤波等模块[3]。

2 复杂度控制研究现状

目前HEVC快速帧内模式选择算法,一般都只考虑在尽量少损失客观质量的情况下对模式进行选择。一般的论文中,都只考虑3%以内的质量损失(采用BDBR或者BD-PSNR的指标)。在某些场合,仅仅采用这些保守的模式选择算法,是达不到实际应用需求的。由于HEVC的复杂程度很大,有时候需要通过相对比较大的质量损失,以达到实时性[4],在这方面,复杂度控制算法可以作为参考。针对H.264,已经有很多复杂度控制方面的研究[5,6,7]。然而,由于HEVC与H.264的编码结构大不相同,因此其复杂度控制算法也需要重新设计。比如,在文献[8]中,G.Correa通过同位区域中的纹理关系对编码单元的深度进行调整。如果纹理关系相近,那么当前编码CU也将采用这个深度。并且通过总的时间关系,对需要做算法的帧数进行提前计算,从而控制编码的复杂度。

文献[9]中,A.Ukhanova通过率失真和复杂度的关系来选择量化和深度参数,使用预测和博弈论作为基础,对于某一些帧的最大CU深度进行限制,从而控制编码复杂度。

文献[10]中,M.Grellert提出了负载管理的方案。该方案的基本思路就是估算每一帧的复杂度预算,动态地控制每一帧的复杂度。比如通过限制最大CU深度的预测和运动搜索范围等,并通过反馈的环路控制最大限度地减少RD损失。

文献[11]中,J.Leng对相邻和同位的编码深度进行分析,通过阈值来避免一些无必要的编码深度。控制需要进行优化的最大CU数量来调整编码的复杂度。

文献[12]中,X.Shen利用了贝叶斯的方法来对深度进行选择。这个算法是基于离线的机器学习方法,使用贝叶斯决策的规则,对编码单元是否需要划分进行判断。

综上所述,已经提出的方法一般针对编码单元的深度进行调控,或者对模式数量进行调控,没有把这两者结合起来分析考虑。并且以前的工作都是针对帧间预测进行的复杂度控制,而在帧内预测方面还没有相关工作。本文将针对帧内预测的复杂度控制进行研究。

3 帧内预测复杂度分析

帧内预测主要用于去除图像的空间相关性。通过编码后的重构块信息来预测当前像素块以去除空间冗余信息,提高图像的压缩效率。帧间预测模块主要用于去除图像时间相关性。HEVC采用了编码单元、预测单元、变换单元代替H.264宏块的概念[13]。由于最大编码单元比宏块要大很多,而且编码单元和变换单元都可以采用树形分块,预测单元采用了更多的分割模式,因此,HEVC复杂度比H.264要高很多。另外,对帧内预测,HEVC的预测方向要比H.264多好几倍[14,15],如图2所示。

虽然一般来说帧间预测的复杂度高于帧内预测,但是在实际视频编码中,帧间预测经常会采用Merge甚至Skip模式[16],可以大大节省计算量。而HEVC帧内编码可选择编码单元大小和预测方向都比较多,因此计算复杂度高,在实时性要求较高的场合(比如视频聊天、直播)可能会引起卡帧现象[17,18]。本文主要对帧内模式进行分析,找出最优的编码单元大小和预测方向组合,为具体应用提供参考。

3.1 编码单元深度的复杂度分析

在HEVC中,视频编码时采用树型结构编码单元(Coding Unit,CU),对于亮度像素CU,其尺寸可以从64×64一直递归划分至8×8,CU的递归划分过程如图3所示。较大块的CU可以被划分成较小的CU,例如对于depth=n的CU,若划分标志位(splitflag)为1,则继续划分为depth=n+1的4个小CU,每个较小CU的尺寸是上一深度CU的1/2。

从图3中可以得到,编码单元CU的深度一共可分为0,1,2,3,分别对应编码单元的大小为64×64,32×32,16×16,8×8。在递归划分的过程中需要进行大量的RDO计算,LCU的递归划分过程也占到了编码时间的90%,因此通过提前终止CU的划分,减少CU深度大小能够有效减少视频编码复杂度,达到缩短视频编码时间的目的[19]。

HEVC帧内预测复杂度可以通过不同的编码参数对其进行评估,比如说编码的总时间。在本文中,在不需要考虑操作系统的其他性能时,可以通过软件分析器来获得编码时间,统计3个1 280×720分辨率的视频测试序列(Four People,Johnny和Kristen and Sara)的每个CU深度的编码时间。其中每个序列的帧数均为150帧,因此总的编码时间基本上也都很相似。

图3显示了每一个CU深度层的平均编码时间比。CDN代表不同深度的时间比,N从0到3。从图中可以看出,深度越大,计算所占的时间比重越大。因此,对复杂度的控制可以转化为对深度进行优化,从而大大减少编码时间。

3.2 帧内预测中候选预测方向个数复杂度分析

帧内预测是视频编码过程中的一个重要组成部分,它充分利用图像的空间相关性,来提高压缩效率。然而帧内预测具有极高的算法复杂度,实时性要求高的场合使用起来效果往往不是很好,特别是在出现场景切换时,编码器会进行大量的帧内预测。因此在实际应用中需要加快帧内预测过程,使得编码过程更加流畅,减少卡帧现象。

对于不同尺度大小PU,最佳的候选预测方向个数也不同,大小为16×16,32×32,64×64的PU只有3个预测方向,大小为4×4和8×8的PU有8个预测方向。因此在保证图像损失很小的情况下,可以减少候选预测方向个数来减少编码时间。本文对不同大小的PU的候选预测方向个数进行调整,通过实验定义了4种不同的候选预测方向个数组合CP1,CP2,CP3,CP4,如表1所示。

测试在定义的4种不同的候选预测方向个数组合下,记录对应的视频编码过程中的时间减少(ΔTime/%)和峰值性噪比的减少(ΔY-PSNR/d B),变化趋势如图4所示。其中参与测试的视频序列有Basketball Pass,BQSquare,Basketball Drill,BQMall和FourPeople,编码帧数为150帧。由图4分析可得,随着候选预测方向的减少,编码时间会随之减少,CP1组合有将近10%的时间减少,Y-PSNR的损失在0.01 d B以内,而CP4组合有将近20%的时间减少,但是图像质量损失较大,已经超过了0.1 d B。

综合分析这4种组合的ΔTime和ΔY-PSNR可得:本文选择CP1组合作为候选预测方向的最佳组合,此时时间下降明显,同时视频质量没有损失太多。此时,对复杂度的控制可以解释为:先设定一个需要减少的目标时间,把候选预测方向的个数组合设定为CP1来达到复杂度控制的目的。

4 算法描述

为了更好地适应视频播放时出现场景切换的情况,并加快帧内预测编码时间来减少复杂度,本文提出了两种解决方案:

1)对帧内预测中编码单元CU深度大小范围进行调整,节省编码时间;

2)对帧内预测中的最佳候选模式数量进行调整。根据不同的情况,结合以上两种方案,对编码复杂度进行联合控制。

在整个视频序列中,分为需要做优化算法的编码帧Scn和不需要做优化正常编码的普通帧Su。如图5所示,通常第一帧是不需要做优化的普通帧,然而接下来的帧需要对其进行时间上的预测和控制,如果需要对其进行复杂度控制,则加入优化算法,否则依然不需要进行优化。

为了控制编码复杂度,在CU深度方面对当前编码帧的每一个64×64的CU块进行统计,对其中的深度大小进行范围统计,得到当前CU的深度范围区间[Min Depth,Max Depth]和深度范围大小Num Depth,可以用来限制下一帧的同位CU的编码深度的选择。当需要进行优化算法的编码帧Scn进行编码时,可以使用前一帧的深度信息去限制当前编码块的最大和最小深度,这样就不需要做所有的RDO计算,从而节省了编码时间。由于视频存在时间相关性,前一帧与当前编码帧存在一定的相似性,所以同位的CU区域也会拥有一个相似的深度范围,在不影响编码效率的情况下,可以对当前同位的CU使用前一帧的编码深度范围。

而在候选预测方向个数方面,通过前文分析可以得到,在使用CP1的候选预测组合时,时间减少了近10%,而图片的质量损失可以忽略不计。在本文中,主要考虑时间复杂度,定义视频的编码总时间复杂度为Tt,目标时间复杂度为Td,已编码帧的时间复杂度为Tp。对当前帧进行编码时,若已编码的平均时间复杂度TYave比未编码的平均时间复杂度TNave大,则加入优化算法;若已编码的平均复杂度TYave比未编码的平均时间复杂度TNave小,则不加入优化算法,正常编码。TYave和TNave的计算公式如式(1)和式(2)所示

式中:n代表已经编码的帧数;N代表总编码帧数。

总体的算法流程框图如图6所示。

具体的复杂度控制度算法如下:

1)第一帧正常编码,记录每个CU块中的深度范围[Min Depth,Max Depth]和深度的范围大小Num Depth。

2)通过式(1)和(2)得到TYave与TNave,如果TYave大于等于TNave的1.1倍,转向步骤3);若小于TNave的1.1倍并且大于等于TNave,则转向步骤4),其他情况转向步骤5)。同时记录当前帧的编码深度信息。

3)当TYave大于等于TNave的1.1倍,表示当前需要减少的编码时间较多,则直接利用深度优化算法。如果前一帧同位CU的Num Depth大于0时,则表示前一帧同位CU中有不同的深度,那么当前编码CU只需要遍历[Min Depth,Max Depth]。否则,表示前一帧同位CU深度都一样,那么当前编码CU需要编码[0,MaxDepth]。同时记录下当前帧的序号,如果连续超过4帧图像使用深度优化算法,为了保证视频图像的质量,则从第5帧开始,对每个当前编码块的同位CU的MaxDepth减1。

4)当TYave小于TNave的1.1倍并且大于等于TNave,表示当前需要减少的编码时间较少,为了保证视频图像质量,则不使用深度优化,直接调整模式候选个数,将候选模式预测组合切换到CP1。

5)当TYave小于TNave时,表示前面已编码帧数的平均时间已经小于目标时间下的剩余编码平均时间,如果标记为优化帧Scn,那么编码总时间会达不到目标时间,所以直接标记为Su即可。

6)重复到步骤2),直到编码结束为止。

5 实验分析

为了验证本文算法的有效性,本文在HEVC参考软件HM-15.0上进行仿真实验。实验平台的硬件配置为Iter(R)-Core(TM)i7-4790CPU,主频为3.60 GHz,内存为8 Gbyte,操作系统为64位Windows7,开发工具为VS2013。实验中,配置文件是“encoder_intra_main.cfg”。全I帧,原始的深度范围是0~3(即[0,1,2,3]),其他参数均采用HM默认配置。

设定不同的目标复杂度,记为TC(%)={90,80,70,60},在不同的目标复杂度的情况下,使用本文提出的复杂度控制算法。使用比特率的变化幅度百分比ΔBR、峰值性噪比(PSNR)的差值ΔPSNR和编码时间减少TS来衡量编码性能,TS计算方法如下[16]

实验结果如表2所示,其中在不同的目标时间复杂度下,对表中19组不同的视频测试序列使用不同量化参数QP进行测试,计算了QP分别为22,27,32,37时的ΔBR,ΔPSNR和TS的平均值。根据表2数据,分析3个视频序列(Basketball Pass,Party Scene,Four People)的目标复杂度和实际复杂度的对比图如图7所示,可以明显得出实际测得的复杂度和目标复杂度相差不多。从所有视频序列的平均情况来看,目标时间复杂度TS从90%到60%,ΔPSNR平均值从0.01 d B到0.08 d B,其中效果最差的是序列BQSquare,在目标时间复杂度是60%的时候,PSNR下降了0.31 d B,总体上来说图像的质量损失不大,可以忽略不计。ΔBR平均值从0.02到2.32,其中效果最差的是序列BQSquare和Basketball Drill。除此之外,总体上比特率的变化不大。图8给出了序列Johnny在不同QP下达到不同的目标复杂度时的PSNR和比特率,可以看出视频图像的质量损失可以忽略不计。

为了能更好地看到每一帧时间复杂度的变化,图9统计了目标复杂度为70%时,编码100帧的时间折线图。从图中可以看到,实际每一帧的编码时间在平均每一帧的编码时间线的上下波动。更加明显地体现了复杂度控制的作用性。综上所述:本文提出的算法基本能达到目标的时间,从而对编码过程进行复杂度的控制,同时编码性能基本不变,保证了视频图像的质量。

6 结论

上一篇:《乌鸦》下一篇:客观评估