[0005] 本发明的目的就是提出了一种基于人眼感知的立体视频B帧错误隐藏方法。本发明方法除了结合了新标准的特性并改进了已有错误隐藏方法之外,还考虑了人眼对于视频画面的失真度特性。
[0006] 本发明方法首先对立体视频中的丢失块类型进行划分,将丢失块划分为静止块和运动块,然后对不同的丢失块类型采用不同的恢复方式,静止块选择直接拷贝的方式,对运动块使用基于双目恰可察觉失真模型(Binocular Just Noticeable Difference,BJND)的立体视频错误隐藏算法进行恢复。其中BJND模型是Zhao等提出的成熟技术。
[0007] 1、对立体视频中的丢失块类型进行划分,就是将视频帧中的丢失块划分为静止块和运动块;具体步骤是:
[0008] (1)首先获取前向参考帧中的同位块B1;
[0009] (2)然后获取后向参考帧中的同位块B2;
[0010] (3)计算两个块的绝对差值ΔB:
[0011]
[0012] 其中,B1(x+i,y+j,t-n)表示前向参考帧中的同位块,B2(x+i,y+j,t+n)表示后向参考帧中的同位块,(x,y)表示丢失块的左上角坐标位置,M代表丢失块的尺寸大小,恒等于64,n表示是时间间隔,n=1~6,D表示静止块与运动块划分阈值,D=8~15;i,j分别代表块中像素点的横坐标和纵坐标;
[0013] (4)将绝对差值ΔB与阈值D比较,确定丢失块类型:
[0014]
[0015] 2、对不同的丢失块类型采用不同的恢复方式,就是对所述静止块和运动块采用不同的恢复方式,对于静止块使用直接拷贝的方式,对运动块使用基于BJND模型的立体视频错误隐藏算法进行恢复;其中:
[0016] 对于静止块使用直接拷贝的方式,是使用前向/后向参考帧中的同位块B1/B2的块直接拷贝填充到当前丢失块;
[0017] 对运动块使用基于BJND模型的立体视频错误隐藏算法进行恢复,实现步骤如下:
[0018] 1)自适应尺寸划分:
[0019] a.计算逐像素点BJND值,计算公式如下:
[0020]
[0021] 其中,d是在坐标(i,j)的水平视差值,BJNDl是左视点图像坐标为(i,j)的像素的BJND值,BJNDl值依赖于右视点图像帧在对应像素点位置的背景亮度水平bgr,边缘梯度值ehr,噪声幅值nr;TC为刚可察觉失真可见性阈值,0≤nr≤TC;λ为拟合参数,λ=1.25。视差d的求取方法采用全局视差求取方法,该方法是成熟的技术。需要注意的是,如果右视点没有噪声,nr=0,等式右边第二项值为1,则BJNDl值等于TC值,定义如下所示:
[0022] BJNDl(i,j,d)=TC(bg,eh)=Tlimit(bg)+K(bg)×eh;
[0023] 其中,bg是丢失块的亮度平均值,eh是通过5×5水平和垂直梯度模板计算的丢失块梯度值,定义如下所示:
[0024]
[0025]
[0026]
[0027] 其中,I(i,j)为像素点(i,j)的亮度值;H、V分别为水平、垂直方向下角标,GH、GV分别为5×5索贝尔算子的水平、垂直矩阵,h、v分别是矩阵内元素的横、纵坐标;EH和EV分别表示水平和垂直梯度值。Tlimit(bg),K(bg)分别定义如下所示:
[0028]
[0029] K(bg)=-10-6×(0.7×bg2+32×bg)+0.07;
[0030] b.计算BJND均值和标准差:首先逐像素计算丢失块的BJND值,然后计算每个8×8块的BJND均值和标准差,计算公式如下:
[0031]
[0032]
[0033] 其中,BJNDavg8x8表示8×8块的BJND均值,bjnd(i,j)表示8×8块中位于(i,j)位置的BJND值,BJNDvar表示8×8块的BJND标准差。根据平滑区域的BJND值相似且方差波动小,而纹理复杂区域的BJND值方差波动大的特点,将BJND方差值小于T的区域作为平滑区域,标记为1;将方差值大于T区域作为边界区域,并标记为0,通过实验测试,选用T=3~5;
[0034] c.判断边界点运动矢量:
[0035] S1.将步骤b中经过BJND模型划分成边界块和平滑块的标记图记为矩阵A,使用四连通域算法对矩阵A进行区域标记,区域标记结果记为矩阵B;
[0036] S2.对矩阵B沿边界进行判断并融和区域标记号。以上边界为例,对判断为边界块的相邻的左上8×8块与右上8×8块分别记为A1块和A2块,若A1,A2块的运动矢量值相等,则判断为具有相同运动特性的区域,并融和区域标记号;如果运动矢量不等,则判断为不同运动特性的区域,保留区域标记号;
[0037] S3.对矩阵B中为0的子块进行融合区域标记号,区域标记结果记为矩阵C;
[0038] d.递归遍历区域标记号实现自适应划分:按面向多视点视频的高性能视频编码标准(MV-HEVC)中编码端的递归遍历方式进行分割,当递归子块中所有8×8块只要存在不同区域标记号就进行递归划分,直到子区域中每个8×8块区域标记号相同,最后以划分的子块为单元重新计算BJND均值,作为后续匹配准则的阈值;
[0039] 2)建立候选运动/视差矢量集:
[0040] 将区域标记号的周围相邻块的不同运动/视差矢量加入到运动/视差矢量集中,并添加全局视差矢量,以及零运动矢量;
[0041] 该候选运动/视差矢量集在恢复子块过程中会进行更新。如果受损子块的相邻块为已恢复的子块并且属于不同运动区域时,那么已恢复子块中所使用的运动/视差矢量不添加到当前子块的候选运动/视差矢量集中;如果受损子块的相邻块为已恢复的子块为视点间视差搜索恢复的重建块,那么该视差矢量会加入到候选运动/视差矢量集;
[0042] 3)计算基于BJND模型匹配准则值DBJND:
[0043] DBJND=max(DVBS-BMA-BJNDaverage,0);
[0044] 其中,BJNDaverage为重建子块的BJND平均值,子块大小由32×32到4×4;DVBS-BMA为变尺寸块边界匹配算法(VBS-BMA)的计算值,它考虑了重建块内边界与丢失块外边界的匹配度,其计算式为:
[0045]
[0046] 其中, 分别代表周围块和重建块沿着上、下、左、右四个边界的绝对差值;所述重建块是通过运动/视差矢量集合中的第k个运动/视差矢量vk补偿后的重建块;wl为权重因子,下标l表示边界位置,l={T,B,L,R},即wT为上边界权重因子,wB为下边界权重因子,wL为左边界权重因子,wR为右边界权重因子,各分量的计算公式如下:
[0047]
[0048]
[0049]
[0050]
[0051]
[0052] 其中,N为隐藏块的大小,(x,y)为隐藏块的左上角像素点坐标,vk为运动/视差矢量集中第k个运动/视差矢量, fc(p,q,t)为当前帧t、像素坐标位置为(p,q)的像素值;fr(p,q,t±n)表示t±n时刻参考帧中,像素坐标位置为(p,q)的像素值。
[0053] 4)选择最优运动矢量恢复:
[0054] 通过步骤3)对运动矢量集中的每个运动/视差矢量计算DBJND,并将最小的DBJND与0比较,如果存在最小的DBJND≤0,则认为当前使得DBJND最小的运动/视差矢量恢复后的重建块与右视点的匹配块满足BJND模型,即人眼感受不到失真,使用该运动/视差矢量作为当前重建块的运动/视差矢量;否则,当所有的候选运动/视差矢量计算的DBJND都大于0时,相当于使用该运动/视差矢量集中的运动/视差矢量进行运动补偿所恢复的重建块与右视点的匹配块全不满足BJND模型,即人眼会感觉到失真,则使用视点间视差搜索重建该类丢失块,计算公式如下:
[0055]
[0056]
[0057] 其中,(DVx,DVy)为使得OBMA_HG值最小的视差补偿偏移值,OBMA_HG表示重建块与它四周解码块的外边界匹配度,OBMA_HGl,l={T,B,L,R},分别表示重建块上、下、左、右四条外边界的匹配度,W和Z为匹配块的宽和高,W=Z=4;SADl为受损块的某条外边界与视点间匹配块的对应外边界像素差异值,p1(i,j)表示为受损块的某外边界块的像素值,p2(i+dvx,j+dvy)表示为视点间匹配块对应外边界块的像素值;(dvx,dvy)为视点间视差搜索的偏移值,并且搜索范围为±32,权重因子ωl,l={T,B,L,R},其值具体设置如下:
[0058]
[0059] 选择使得OBMA_HG值最小时对应的视点间搜索匹配块,然后使用视点间搜索匹配块来代替受损块,并将搜索的位移值(DVx,DVy)作为当前受损块的视差矢量,作为后续子块恢复的候选运动/视差矢量。
[0060] 本发明提出一种基于人眼感知的立体视频B帧错误隐藏方法,能解决在新的立体视频扩展标准MV-HEVC下没有相应的立体视频错误隐藏恢复技术,以及先前H.264标准下的错误隐藏技术不能直接应用在HEVC标准中的不足。该方法结合了人眼感知特性,对立体视频在网络传输中发生的网络丢包现象有很好的恢复效果。