[0081] 结合以下具体实施例和附图,对本发明进一步的详细说明。
[0082] 如图1,一种基于显著性的立体三维视频错误隐藏方法,具体如下:
[0083] 步骤(1).采用高效率视频编码HEVC默认的编码树单元CTU大小64×64,获得丢失帧中各区域的显著等级,具体如下:
[0084] (1‑1).对一个丢失块分别获取前向参考帧中同位置的像素块、后向参考帧中同位置的像素块,以及视点间当前参考帧中同位置的像素块;如图2,计算得到像素点(x0+i,y0+j)当前时刻的运动显著性图Sa的像素值Sa(x0+i,y0+j,t),Sa(x0+i,y0+j,t)反映视频序列中物体的运动特征;其中,视点间的参考视点为当前视点的水平相邻视点;所述的丢失块是指彩色图丢失,其对应深度图Sc并未丢失;
[0085] Sa(x0+i,y0+j,t)=||pn(x0+i,y0+j,t‑1)‑pn‑1(x0+i,y0+j,t)|‑|pn(x0+i,y0+j,t+1)‑pn‑1(x0+i,y0+j,t)||;其中,(x0,y0)是丢失块的左上角的像素坐标,(i,j)是相对于左上角像素坐标的偏移值,i,j∈Z,且i,j∈[0,63],Z表示整数,t表示当前帧所对应的时刻,t‑
1、t+1分别表示对应当前帧的前向参考帧和后向参考帧所对应的时刻;n、n‑1分别表示当前视点和视点间参考视点;pn(x,y,t‑1)表示当前视点前向参考帧中丢失块对应(x,y)位置的像素值,pn(x,y,t+1)表示当前视点后向参考帧中丢失块对应(x,y)位置的像素值,pn‑1(x,y,t)表示视点间参考视点当前参考帧中丢失块对应(x,y)位置的像素值。
[0086] (1‑2).由于整帧丢失只是彩色图丢失,其对应深度图Sc并未丢失,对彩色图丢失块所对应深度图的同位置像素块进行预处理,得到预处理后深度图Sb中像素点(x0+i,y0+j)的像素值Sb(x0+i,y0+j):
[0087]其中,(x0,y0)是丢失块的左上角的像素坐标,(i,j)是相对于左上角像素坐标的偏移值,i,j∈Z,且i,j∈[0,63];d(x0+i,y0+j)表示当前视点当前深度帧中对应(x0+i,y0+j)位置的像素值, 表示当前视点当前深度帧中第y0+j行像素点的平均像素值。
[0088] (1‑3).如图3,采用区域对比度提取得到深度显著性图Sd中像素点(x0+i,y0+j)的像素值Sd(x0+i,y0+j),Sd(x0+i,y0+j)反映人眼在远近方面上对图像中物体的关注程度,前景区域产生的视觉刺激大,背景区域产生的视觉刺激小:其中, k∈[0,255],C(k)表示当前视点当前深度帧中该64×64块内像素值为k
的像素点的平均出现频率,m表示该64×64块内像素值为k的像素点的个数,例如在该64×
64块内有5个像素点的像素值为3,那么
[0089] (1‑4).人眼更加关注的往往是边缘比较突出的区域,显著性等级高,因而用sobel算子提取深度图中的边缘信息。计算深度图Sc中像素点(x0+i,y0+j)的x方向梯度幅值Gx(x0+i,y0+j)和y方向梯度幅值Gy(x0+i,y0+j),得到(x0+i,y0+j)像素点的边缘梯度幅值G(x0+i,y0+j):
[0090]
[0091]
[0092] G(x0+i,y0+j)=|Gx(x0+i,y0+j)|+|Gy(x0+i,y0+j)|;
[0093] 其中,(x0,y0)是丢失块的左上角的像素坐标,(i,j)是相对于左上角像素坐标的偏移值,i,j∈Z,且i,j∈[0,63];d(x,y)表示深度帧中(x,y)位置像素点的像素值。
[0094] 如图4,将边缘梯度幅值大于120的深度像素点所对应的像素值设为255,其余深度像素点的像素值全部设为0,得到深度边缘显著性图Se中像素点(x0+i,y0+j)的像素值Se(x0+i,y0+j),即对深度图进行如上sobel算子和如下二值化处理,将深度图中的边缘信息提取出来作为深度边缘显著性图:
[0095]
[0096] (1‑5).采用乘法融合的方法,即同一像素点在不同显著性图中的值的乘积作为融合后的显著性值:首先将运动显著性图和深度显著性图融合,得到运动深度融合显著性图Sad中像素点(x0+i,y0+j)的像素值Sad(x0+i,y0+j):
[0097]
[0098] 然后将运动深度融合显著性图Sad进行块化处理,得到块化处理后运动深度融合显著性图Sad′中像素点(x0+i,y0+j)的像素值Sad′(x0+i,y0+j):对于Sad中每个编码树单元CTU尺寸为64×64,如果有超过6个像素值为128的像素点,则该CTU全部像素点的像素值都设为128;
[0099]
[0100] s.t.1:对于Sad中每个编码树单元CTU尺寸为64×64,存在超过6个像素值为128的像素点;
[0101] 将深度边缘显著性图Se块化处理,得到块化处理后深度边缘显著性图Se′中像素点(x0+i,y0+j)的像素值Se′(x0+i,y0+j):对于Se中每个CTU,如果有超过10个像素值为255的像素点,则该CTU全部像素点的像素值都设为255;
[0102]
[0103] s.t.2:对于Se中每个编码树单元CTU,存在超过10个像素值为255的像素点;
[0104] 丢失块的最终显著性图S中像素点(x0+i,y0+j)的像素值S(x0+i,y0+j)由Se′(x0+i,y0+j)和Sad′(x0+i,y0+j)合并而成,如图5:
[0105] &&表示并且;其中,(x0,y0)是丢失块的左上角的像素坐标,(i,j)是相对于左上角像素坐标的偏移值,i,j∈Z,且i,j∈[0,63];
[0106] S中所有像素值为255的像素点构成的区域的显著等级设为高,有像素值为0的像素点构成的区域的显著等级设为低,有像素值为128的像素点构成的区域的显著等级设为中,得到该丢失块各区域的显著等级。
[0107] 由于整帧丢失,所以丢失帧中的每个像素块都为丢失块。该方法所有步骤均需遍历每个像素块才能完成整帧恢复,以上是以其中任意一个像素块为例。对丢失帧中所有丢失块进行上述处理,得到丢失帧各区域的显著等级。
[0108] 步骤(2).不同显著等级的区域采用不同的恢复方式。
[0109] (2‑1).对于显著等级为低的区域,人眼不关注,采用时域拷贝的方法恢复,即用前向参考帧或者后向参考帧的同位置像素直接填补。
[0110] (2‑2).对于显著等级为中的区域,人眼较为关注,恢复方法采用时域搜索像素填补或视点间搜索像素填补:
[0111] 如图6,时域搜索像素填补:将当前64×64的丢失块划分为32×32的宏块pcCU,假设pcCU是线性运动的,则在前向和后向参考帧能通过搜索找到对应块,在搜索范围为[‑16,16]内搜索前向帧与后向帧的对应块;
[0112] 对搜索的前向块pcCU_forward和后向块pcCU_back做绝对差值Diff:
[0113]
[0114] 其中,(x0,y0)是丢失块的左上角的像素坐标,(i',j')是相对于左上角像素坐标的偏移值,i′,j′∈Z,且i′,j′∈[0,31];xs和ys分别为x方向和y方向的搜索值,xs,ys∈Z,xs,ys∈[‑16,16];pcCU_back(x0+i'‑xs,y0+j'‑ys)为搜索的后向块像素,即后向参考帧中对应(x0+i'‑xs,y0+j'‑ys)位置像素点的像素值;pcCU_forward(x0+i'+xs,y0+j'+ys)为搜索的前向块像素;即前向参考帧中对应(x0+i'+xs,y0+j'+ys)位置像素点的像素值。
[0115] 将最小绝对值差D所对应的xs和ys分别记为xs0和ys0,D=min{Diff(xs,ys)}:
[0116] 若D<2.5,则认为对应的pcCU_forward和pcCU_back与pcCU相似,采用时域搜索像素填补,即采用pcCU_forward与pcCU_back加权平均来恢复pcCU:
[0117]
[0118] 若D≥2.5,则pcCU是非线性运动,认为对应的pcCU_forward和pcCU_back与pcCU不相似,采用视点间搜索像素填补,如图7,具体如下:
[0119] 设定视点搜索值g_f和g_b,g_f,g_b∈[‑64,64],分别计算pcCU_forward与相邻视点前向帧块pcCU_forward_view的绝对差值GF、pcCU_back与相邻视点后向帧pcCU_back_view的绝对差值GB:
[0120]
[0121]
[0122] 得到最小GF值Gf和最小GB值Gb,Gf=min{GF(g_f)},Gb=min{GB(g_b)};
[0123] 其中,pcCU_forward_view(x0+i'+xs0+g_f,y0+j'+ys0)为搜索的相邻视点前向块像素,即相邻视点前向帧中(x0+i'+xs0+g_f,y0+j'+ys0)位置像素点的像素;
[0124] pcCU_back_view(x0+i'‑xs0+g_b,y0+j'‑ys0)为搜索的相邻视点后向块像素,即相邻视点后向帧中(x0+i'‑xs0+g_b,y0+j'‑ys0)位置像素点的像素;
[0125] pcCU_view(x,y)为相邻视点当前帧中(x,y)位置像素点的像素;
[0126] 计算出pcCU对应在相邻视点中的块,并用该块恢复pcCU:
[0127] pcCU(x0+i',y0+j')=pcCU_view(X0_view+i',y0+j'),X0_view=x0+g_f0;
[0128] g_f0为Gf所对应的视点搜索值g_f,g_b0为Gb所对应的视点搜索值g_b。
[0129] (2‑3).对于显著等级为高的区域,按照如下方式处理:
[0130] 若Gf和Gb均小于3,则认为视点间块相似,即pcCU_view与pcCU相似,采用所述的视点间搜索像素填补方法进行恢复:
[0131] pcCU(x0+i',y0+j')=pcCU_view(X0_view+i',y0+j'),X0_view=x0+g_f0;
[0132] 若Gf和Gb至少一个大于等于3,则认为视点间块不相似,即pcCU_view与pcCU不相似,通过估计得到相邻视点当前帧中与pcCU相似的像素块的左上角像素点,构建运动矢量集,并采用基于HEVC的MV运动补偿方法恢复(该方法为成熟现有技术,即HEVC中自带的运动补偿):
[0133] x0_forward_view=x0+g_f0+xs0;
[0134] x0_back_view=x0‑xs0+g_b0;
[0135]
[0136] 其中x0_forward_view为在相邻视点前向帧中搜索到的像素块的左上角像素点的x坐标,x0_back_view为在相邻视点后向帧中搜索到的像素块的左上角的像素点的x坐标,x0_view为在视点间块不相似时,通过估计得到的相邻视点当前帧中与pcCU相似的像素块的左上角像素点的x坐标。
[0137] 将(x0_view,y0)作为相邻视点当前帧中32×32的M宏块的左上角像素坐标,而M宏块必隶属于相邻视点当前帧中64×64的N宏块,设N宏块的左上角像素坐标为(xn,yn),存在y0=yn以及y0=yn+32两种情况,两种情况的处理方法相同。
[0138] 获得N宏块的运动矢量MV构建候选运动矢量集,运动矢量MV从HEVC中最小处理单元4×4获得,从编码中直接获取,标记为MV1,MV2,…,MV16,分别为N宏块中左上角16个像素坐标的4×4像素块运动矢量。
[0139] 如图8~11,对于y0=yn情况,MV1为N宏块中左上角像素坐标为(xn,yn+12)的4×4像素块的运动矢量,MV2为N宏块中左上角像素坐标为(xn+12,yn+12)的4×4像素块的运动矢量,MV3为N宏块中左上角像素坐标为(xn+16,yn+12)的4×4像素块的运动矢量,MV4为N宏块中左上角像素坐标为(xn+28,yn+12)的4×4像素块的运动矢量,MV5为N宏块中左上角像素坐标为(xn+32,yn+12)的4×4像素块的运动矢量,MV6为N宏块中左上角像素坐标为(xn+44,yn+12)的4×4像素块的运动矢量,MV7为N宏块中左上角像素坐标为(xn+48,yn+12)的4×4像素块的运动矢量,MV8为N宏块中左上角像素坐标为(xn+60,yn+12)的4×4像素块的运动矢量,MV9为N宏块中左上角像素坐标为(xn,yn+28)的4×4像素块的运动矢量,MV10为N宏块中左上角像素坐标为(xn+12,yn+28)的4×4像素块的运动矢量,MV11为N宏块中左上角像素坐标为(xn+16,yn+28)的4×4像素块的运动矢量,MV12为N宏块中左上角像素坐标为(xn+28,yn+28)的4×4像素块的运动矢量,MV13为N宏块中左上角像素坐标为(xn+32,yn+28)的4×4像素块的运动矢量,MV14为N宏块中左上角像素坐标为(xn+44,yn+28)的4×4像素块的运动矢量,MV15为N宏块中左上角像素坐标为(xn+48,yn+28)的4×4像素块的运动矢量,MV16为N宏块中左上角像素坐标为(xn+60,yn+28)的4×4像素块的运动矢量。
[0140] 对于y0=yn+32情况,即相对于y0=yn情况下移32个像素点,此时获取MV1~MV16的像素块也都同时下移32个像素点。MV1为N宏块中左上角像素坐标为(xn,yn+44)的4×4像素块的运动矢量,MV2为N宏块中左上角像素坐标为(xn+12,yn+44)的4×4像素块的运动矢量,MV3为N宏块中左上角像素坐标为(xn+16,yn+44)的4×4像素块的运动矢量,MV4为N宏块中左上角像素坐标为(xn+28,yn+44)的4×4像素块的运动矢量,MV5为N宏块中左上角像素坐标为(xn+32,yn+44)的4×4像素块的运动矢量,MV6为N宏块中左上角像素坐标为(xn+44,yn+44)的4×4像素块的运动矢量,MV7为N宏块中左上角像素坐标为(xn+48,yn+44)的4×4像素块的运动矢量,MV8为N宏块中左上角像素坐标为(xn+60,yn+44)的4×4像素块的运动矢量,MV9为N宏块中左上角像素坐标为(xn,yn+60)的4×4像素块的运动矢量,MV10为N宏块中左上角像素坐标为(xn+12,yn+60)的4×4像素块的运动矢量,MV11为N宏块中左上角像素坐标为(xn+16,yn+60)的4×4像素块的运动矢量,MV12为N宏块中左上角像素坐标为(xn+28,yn+60)的4×4像素块的运动矢量,MV13为N宏块中左上角像素坐标为(xn+32,yn+60)的4×4像素块的运动矢量,MV14为N宏块中左上角像素坐标为(xn+44,yn+60)的4×4像素块的运动矢量,MV15为N宏块中左上角像素坐标为(xn+48,yn+60)的4×4像素块的运动矢量,MV16为N宏块中左上角像素坐标为(xn+60,yn+60)的4×4像素块的运动矢量。
[0141] 将M宏块继续分为4个16×16的块,分别为左上块Ma、右上块Mb、左下块Mc、右下块Md;对各块通过运动矢量补偿进行恢复,以y0=yn情况举例如下:
[0142] ①.如图8,0≤x0_view‑xn<16时:左上块Ma选用MV2补偿恢复,右上块Mb选用MV5补偿恢复,左下块Mc选用MV10补偿恢复,右下块Md选用MV13补偿恢复;
[0143] ②.如图9,16≤x0_view‑xn<32时:左上块Ma选用MV4补偿恢复,右上块Mb选用MV7补偿恢复,左下块Mc选用MV12补偿恢复,右下块Md选用MV15补偿恢复;
[0144] ③.如图10,32≤x0_view‑xn<48时:左上块Ma选用MV6补偿恢复,右上块Mb选用MV1补偿恢复,左下块Mc选用MV14补偿恢复,右下块Md选用MV9补偿恢复;
[0145] ④.如图11,48≤x0_view‑xn<64时:左上块Ma选用MV8补偿恢复,右上块Mb选用MV3补偿恢复,左下块Mc选用MV16补偿恢复,右下块Md选用MV11补偿恢复。
[0146] 结合四种情况得到恢复的M宏块,用M宏块覆盖pcCU完成恢复。
[0147] 为了验证该方法对于立体视频传输丢包后的视频失真重建性能,实例中进行仿真实验得到图12的整帧丢失恢复图。
[0148] 本发明的保护内容不局限于以上实例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。