APP下载

HEVC中基于前后景区域的错误隐藏

2012-03-15刘德阳张兆杨

电视技术 2012年15期
关键词:时域矢量边界

刘 畅,马 然,刘德阳,张兆杨

(1.上海大学通信与信息工程学院,上海200072;2.新型显示技术及应用集成教育部重点实验室,上海200072)

随着高清电视、多媒体应用技术的快速发展,原先的视频压缩标准已不能满足用户对高清晰度视频的要求。为此,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块错误块。

图1 错误块周围不同尺寸的CU

时域活跃性主要是利用错误块周围的正确块在空间上最邻近错误块的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个方向。公式如下

图2 前景、后景判别方法

错误块的时域活跃性与邻近4个SADi密切相关,同时也要考虑到错误块周围参与计算的8×8块(邻近正确块)的个数Num8×8Block,因此,时域活跃性TAVG可由式(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值

图3 算法流程图

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

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

3.2 双线性插值法

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

3.3 候选运动矢量集

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

图4 运动矢量候选集

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可以得出,本文方法在保证了较低复杂度的同时获得了较高的重构质量。

表1 Dog序列不同丢包率下PSNR比较

表2 不同序列10%丢包率下PSNR以及复杂度的比较

然而,本算法仍需改善的是对帧内丢失块的错误隐藏,图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.[1]

[2]JUNG B,JEON B,KIM M D,et al.Selective temporal error concealment algorithm for H.264/AVC[C]//Proc.2004 IEEE International Conference 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.

[4]SALAMA P,SHROFF N B,DELP E J.Error concealment in encoded video streams[EB/OL].[2011-11-20].http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.159.866.

猜你喜欢

时域矢量边界
拓展阅读的边界
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
意大利边界穿越之家
基于时域信号的三电平逆变器复合故障诊断
论中立的帮助行为之可罚边界
基于极大似然准则与滚动时域估计的自适应UKF算法
基于矢量最优估计的稳健测向方法
三角形法则在动态平衡问题中的应用
基于时域逆滤波的宽带脉冲声生成技术