一种基于深度信息的多视点立体视频错误隐藏方法
技术领域
本发明属于视频图像处理领域,具体涉及一种基于深度信息的多视点立体视频错误隐藏方法。
背景技术
传统的单视点二维视频不能真实再现自然场景,而多视点视频能够提供给观看者身临其境的感受,其相关技术近年来受到越来越多的关注,成为视频技术中的一个热点。多视点立体视频是由多个摄像机同时对同一场景进行拍摄,得到多个视点的原始视频数据,观看者可以选择视角来收看视频信息。多视点视频广泛应用于3D电视、全景视频、交互式多视点视频、虚拟现实、远程医疗、教育、观光等多个领域的多媒体业务。和单视点视频相比,多视点立体视频数据量成倍增加。如果不能有效地压缩多视点视频,则会增加视频数据的存储和传输的困难,制约其广泛应用。
为了以较低码传输高质量的立体视频流,多视点视频一般采用双视加深度的格式(左右两视点的彩***图和对应的深度图),通常将彩***图和深度图各自压缩编码。在解码端采用基于深度的虚拟视点合成技术(DIBR Depth Image Based Rendering),用左右两视点和对应的深度图生成多视点视频,可根据用户的需求(立体视频或任意视点视频)重建一个或多个角度的立体视频。
立体视频当前编码帧除了利用自身视点中已编码帧做参考帧外,还可用其它视点中的已编码帧作为参考图像进行视差估计预测。目前,主流的立体视频编码方法是基于H.264/AVC的,不但要消减以往单视点视频信息中时间、空间冗余信息,还要考虑立体的特性去除视点间的冗余信息。图1是文献(“S. Li,M.Yu,G.Jiang,et al.Approaches to H.264-basedStereoscopic Video Coding”)提出的双目视差编码结构,是目前应用最多的立体视频编码结构。左视点采用基于H.264/AVC的IPPP编码结构,右视点的各图像块采用两种预测方式:一种是基于右视点本身先前时刻帧的运动补偿预测(MCP Motion Compensation Prediction)方式;另一种是基于左视点同一时刻帧的视差补偿预测(DCP Disparity CompensationPrediction)方式。从中选择预测误差较小的一种作为该图像块的编码方式。这种编码结构兼顾了视点间和视点内的相关性,能够得到比较高的压缩效率。
传输视频数据给视频终端用户的过程中可能会面临严重的网络挑战,包括网络协议、服务质量(QoS Quality of Service)、信道延迟等问题。解码端接收到的视频数据往往发生丢包与误码,这会导致解码图像出现不同程度的失真。视频压缩方法中大多采用了预测编码和变长编码,这使得视频数据对传输错误更加敏感,一个比特的错误可能导致解码图像中一条带区域的失真,甚至失真会扩散到后续帧。立体视频数据量巨大,相比单视点视频对信道错误更加敏感,一个视点图像的小区域失真还会严重影响视频的立体成像效果。为了解决这一问题,即在立体视频流丢包或误码的情况下仍能得到较高质量的立体视频,采用错误隐藏(ECError concealment)技术对丢失帧恢复。错误隐藏的基本思想是在解码端利用图像的时间域、空间域或视间域的冗余信息恢复受损区域,掩盖和减少出现的错误,使其视觉效果接近于原来的效果。
进行错误隐藏的前提是错误检测,只有对视频信号在传输过程中发生的错误正确检测才能进行下一步的有效处理。目前针对多视点视频错误检测的研究很少,尚没有一种单独针对多视点视频的错误检测方法被提出。传统单视点视频的错误检测方法分为两大类:基于语法的错误检测和基于相关性的错误检测。基于语法的错误检测通过检查码流中语法元素是否符合相应视频压缩标准规定的语法结构判断是否有错。这种错误检测方法由于不增加额外的传输开销以及其实现方法简单而得到非常广泛的应用,但错误定位的精度较差。基于相关性的错误检测利用自然图像各像素值的空间相关性,若解码图像某区域中的像素值与周围像素值的差值较大,即图像中某区域的像素值发生突变,则认为码流中与该区域对应的数据在传输过程中发生错误。
大多数对于错误隐藏技术的研究是针对传统的单视点视频,立体视频错误隐藏技术是目前的研究热点。在文献(“C. Bilen,A.Aksay,and G.B.Akar.Two novel methods for fullframe loss concealment in stereo video”)中,作者提出了以图像块和以像素为单位两种隐藏算法,利用前一时刻正确解码帧的视差矢量和运动矢量来恢复当前丢失帧。在文献(“S.Liu,Y.Chen,Y.K.Wang,M.Gabbouj,M.M.Hannuksela,H.Q.Li.Frame loss errorconcealment for multiview video coding”)中,作者提出了利用其它视点的运动信息隐藏丢失图像的多视点视频的错误隐藏算法。在文献(“TY.Chung,S Sull,C.S.Kim.Frame LossConcealment for Stereoscopic Video Based on Inter-view Simi larity of Motion andIntensity Difference”)中,作者提出了利用视点间运动和强度变化相似性的立体视频整帧错误隐藏方法。该方法的错误隐藏效果相比上述方法有一定提高,但重建图像的背景和物体边缘处易出现噪声。以上是针对于立体视频右图像整帧丢失的错误隐藏方法,适用于低码率下整帧图像打为一包的情况。若仅部分宏块丢失,则需抛弃整帧图像以采用整帧错误隐藏的方法,视频的隐藏效果不佳。
下面是针对于立体视频宏块级的错误隐藏方法。文献(“S.Knorr,C.Clemens,M.Kunterand T.Sikora.Robust Concealment for Erroneous Block Bursts in Stereoscopic Images”)中,作者提出了一种投影变换模型的差错掩盖算法,首先通过Harris角点检测找到丢失块周围区域的特征点,根据极线几何关系在右图像中找到对应的特征点,再利用投影映射填补丢失块。但该方法复杂度较大,不适用于实时应用。在文献(“X.Xiang,D.Zhao,Q.Wang,etal.A Novel Error Concealment Method for Stereoscopic Video Coding”)中,作者提出了一种基于视间相关性和重叠块运动视差补偿的多视点视频编码错误隐藏技术。首先应用块匹配准则选取周围块的运动矢量(Motion Vector,MV)或视差矢量(Disparity Vector,DV)中的最优矢量构建最优候选块,分配最大权值;然后将侯选替代块的每个像素值进行加权平均得到一个新的替代块。用该错误隐藏方法恢复的图像主客观效果有待于提高。在文献(“C.T.E.R.Hewage,S.Worrall,S.Dogan,and A.M.Kondoz.Frame Concealment Algorithmfor Stereoscopic Video Using Motion Vector Sharing”)中,作者针对于双视加深度结构的错误隐藏方法采用深度图中对应宏块的MV来修复。实际上深度图的MV和彩***图只是近似相等有偏差,该方法并没有深入挖掘彩***图和深度图的联系。
综上所述,如何针对双视加深度格式立体视频的结构特点,利用深度图和彩***图像的联系对解码端接收数据中的传输错误进行处理是一个非常具有研究价值的问题。由于立体视频的特殊性,不能照搬传统单通道视频传输抗差错技术。重建图像中错误区域的像素值需要利用空间相关性、时间相关性和视点间相关性。如何确定错误区域中哪种相关性占主导地位,如何利用这种相关性恢复视频图像是立体视频错误隐藏技术的难点。因此,需要一种对复杂度较低的立体视频宏块级的错误隐藏算法。
发明内容
针对现有技术中存在的问题,本发明提出一种基于深度信息的多视点立体视频错误隐藏方法,针对双视加深度格式立体视频的右视点视频序列,提供一种的差错控制方法。左视点是独立编码视点,编码结构和单视点相同;所以立体视频的左视点发生误码时可以采用单视点的错误隐藏方法,本发明针对的是立体视频的右视点。结合误码宏块对应的深度图对发生错误的宏块的编码模式进行估计,选择邻近宏块中深度与待重建的错误宏块深度最为接近的宏块的编码模式。然后,根据编码模式选择用视点内或视点间的相关性信息重建错误宏块,提高立体视频的质量。
本发明提出一种基于深度信息的多视点立体视频错误隐藏方法,包括以下几个步骤:
步骤一:采用语法检测和相关性检测的两步错误检测法检测发生错误宏块的位置:
1.1:语法检测过程:
1.1.1:判断解码器检测视频码流是否满足视频编码压缩标准H.264的视频码流条件,当前条带中所有的宏块的码流全部满足视频码流条件,则当前条带中所有的宏块均正确,不存在错误宏块;当解码器检测视频码流不满足视频码流条件中任意一个条件时,多视点立体视频码流中发生语法错误,将当前检测到的错误宏块的错误标志位ei_flag由0设置为1,完成当前条带中错误宏块的查找,终止当前条带中宏块的解码;
1.1.2:判断是否完成一帧图像的中所有条带的解码,如果完成,则进入步骤1.2,如果未完成,返回步骤1.1.1,从下一个条带的第一个宏块继续解码,直至完成对整帧图像的所有条带的解码,找到所有条带中存在的错误宏块;
1.2:相关性检测过程:
对步骤1.1中检测到的所有错误宏块所在的条带依次进行相关性检测,从其中的第一个条带的第一个宏块开始进行相关性检测确定初始错误宏块:相关性检测包括两种边界相关性检测方法和帧间相关性检测方法,对I帧的条带中的宏块和右视点第一个P帧的条带中的宏块采用边界相关性检测,对其余P帧采用帧间相关性检测;
1.2.1:边界相关性检测方法:
边界相关性为宏块内像素与其外部像素的相关性,通过边界平均样本差AIDB表示,M×M大小宏块的边界平均样本差AIDB为:
其中k为当前待检测宏块的上下左右四个相邻宏块中可用的个数,M×M表示待检测宏块大小;
和
分别表示当前待检测宏块内外部对应位置像素值,i为整数,取值范围是[1,M×k];
选定亮度分量的边界相关性门限thresholdAIDB_Y和色度分量的边界相关性门限thresholdAIDB_U分别对像素的亮度分量和色度分量进行检测,亮度分量Y的边界相关性为AIDB_Y,门限为thresholdAIDB_Y,色度分量U的边界相关性为AIDB_U,门限为thresholdAIDB_U,当AIDB_Y>thresholdAIDB_Y或AIDB_U>thresholdAIDB_U时,该宏块是初始错误宏块,否则该宏块为正确宏块;
1.2.2:帧间相关性检测方法:
帧间相关性为指时间域上或空间域上相邻两帧图像相同位置像素的相关性,通过帧间平均样本差AIDF表示,帧间相关性检测分两种:一种为左视点的帧间相关性,是当前宏块与前一时刻相同位置宏块各像素的平均绝对差值,另一种为右视点的帧间相关性,是当前宏块与左视点同一时刻相同位置宏块各像素的平均绝对差值;
M×M大小宏块的帧间平均样本差AIDF为
其中,Icur_mb(x,y)是当前宏块内(x,y)位置处像素值,Ipre_mb(x,y)是相邻帧中对应宏块内(x,y)位置处像素值;
选定亮度分量Y的帧间相关性门限thresholdAIDF_Y和色度分量U的帧间相关性门限thresholdAIDF_U分别对像素的亮度分量和色度分量进行检测,亮度分量Y的帧间相关性为AIDF_Y,门限为thresholdAIDF_Y,色度分量U的帧间相关性为AIDF_U,门限为thresholdAIDF_U;当AIDF_Y>thresholdAIDF_Y或AIDF_U>thresholdAIDF_U时认为该宏块是初始错误宏块,否则该宏块为正确宏块;
用相关性检测法检测到一个条带中发生错误的初始错误宏块的位置后,将宏块所在条带中错误宏块后面的宏块也标记为错误宏块;若步骤1.2的相关性检测在各条带中没有找到初始错误宏块,则步骤1.1中得到的错误宏块为初始错误宏块,将该初始错误宏块后面的宏块也标记为错误宏块,完成一帧图像所有错误宏块的错误检测;
步骤二:结合深度信息来估计发生错误宏块的编码模式,选择邻近宏块中深度与待重建的错误宏块深度最为接近的宏块的编码模式:
双视加深度格式的立体视频右视点中的宏块采用三种模式编码:帧内预测编码模式、运动预测编码模式和视差预测编码模式,将右视点中的错误宏块进行拆分,拆分得到多个错误子块分别重建,拆分方法为4个8×8块错误子块或16个4×4块错误子块分别重建或以整宏块不拆分形式进行重建,将与待重建错误子块相邻的正确宏块进行拆分,得到16个4×4块正确子块,待重建错误子块与错误子块相邻的所有4×4块正确子块的编码模式、参考帧、运动矢量或视差矢量相同或不相同;
若待重建错误子块相邻的各个4×4块正确子块的编码模式相同,则此错误子块的编码模式与相邻的4×4块正确子块的编码模式相同,若与待重建错误子块相邻的各个4×4块正确子块的编码模式不完全相同,借助深度信息得到待重建错误子块的编码模式,在立体视频当前解码的彩***图的对应深度图中找到待重建错误子块及其相邻各个4×4块正确子块的相同坐标位置的对应块,分别计算深度图中各个错误子块的对应块的灰度平均值以及深度图中各个4×4块正确子块的对应块的灰度平均值,然后在与待重建错误子块所相邻的正确子块中,找到与待重建错误子块对应块灰度值最为接近的4×4块正确子块,将该4×4块正确子块的编码模式作为待重建错误子块的估计编码模式;
步骤三:重建错误宏块:
得到错误宏块的各错误子块的编码模式后,利用相应错误隐藏方法对各错误子块分别进行重建,如果待重建错误子块为帧内编码模式,则此错误子块由周围正确宏块加权插值重建;如果待重建错误子块为运动预测模式,则以相邻4×4块正确子块的运动矢量MV为候选运动矢量,通过边界匹配算法;如果待重建错误子块估计为视差预测模式,采用类似边界匹配算法的方式重建,设置运动矢量为视差矢量,设置候选视差矢量为周围临近4×4块正确子块的视差矢量DV。
本发明的优点在于:
(1)本发明提供一种基于深度信息的多视点立体视频错误隐藏方法,错误检测的定位准确度较高;
(2)本发明提供一种基于深度信息的多视点立体视频错误隐藏方法,计算复杂度较低;
(3)本发明提供一种基于深度信息的多视点立体视频错误隐藏方法,估计错误宏块的编码模式,以不同方法隐藏图像,具有广泛的适用性;
(4)本发明提供一种基于深度信息的多视点立体视频错误隐藏方法,对图像的纹理处也有较好的隐藏效果。
附图说明
图1:本发明所涉及的立体视频双目视差预测编码结构的示意图。
图2:本发明中宏块边界相关性示意图;
图3:本发明中错误宏块位置关系示意图;
图4:本发明中8×8块与相邻4×4块的位置关系示意图;
图5-A:本发明中基于深度信息的错误隐藏示意图的周围相邻宏块的编码模式;
图5-B:本发明中基于深度信息的错误隐藏示意图的深度图中对应宏块;
图5-C:本发明中基于深度信息的错误隐藏示意图的待重建错误宏块重建后效果图
图6-A:“Breakdancers”序列无误码的原码流解码图像;
图6-B:“Breakdancers”序列误码后未经错误隐藏的错误解码图像;
图6-C:“Breakdancers”序列采用JM17.2边界匹配BMA的错误隐藏方法的解码图像;
图6-D:“Breakdancers”序列采用OBMDC错误隐藏方法的解码图像;
图6-E:“Breakdancers”序列采用本发明的错误隐藏方法解码图像;
图7-A:“Ballet”序列无误码的原码流解码图像;
图7-B:“Ballet”序列误码后未经错误隐藏的错误解码图像;
图7-C:“Ballet”序列采用JM17.2边界匹配BMA的错误隐藏方法的解码图像;
图7-D:“Ballet”序列采用OBMDC错误隐藏方法的解码图像;
图7-E:“Ballet”序列采用本发明的错误隐藏方法解码图像。
具体实施方式
下面将结合附图对本发明作进一步的详细说明。
本发明提供一种基于深度信息的多视点立体视频错误隐藏方法,包括以下几个步骤:
步骤一:采用语法检测和相关性检测的两步错误检测法检测发生错误宏块的位置:
在对多视点立体视频进行错误隐藏前,先要检测发生错误的宏块位置。采用语法检测与相关性检测的两步错误检测方法来定位错误宏块的位置。
1.1:语法检测过程:
在解码的过程中根据高级视频编码压缩标准H.264的语法检测判断多视点立体视频图像的码流中是否有语法错误。
1.1.1:视频编码压缩标准H.264对码流结构做了详细规定,码流中的比特错误会导致语法错误,因此可以通过检测码流是否符合标准的语法规定来判断多视点立体视频码流中是否有错误,并初步定位错误位置。遵循视频编码压缩标准H.264的语法,视频码流应满足下述条件:
a:码值有效(码字能查表译码);
b:码值不超出规定的语法范围(例如:I条带中的宏块类型mb_type的范围是[0,25],P条带中的宏块类型mb_type的取值范围是[0,30],在宏块层中量化参数的偏移量mb_qp_delta的范围是[-26,25]);
c:DCT系数个数不超过64;
d:运动矢量指向图像内;
e:条带(Slice)中宏块个数与编码参数slice_argument相符;
f:译码过程与条带类型(I、P、B)相符。
判断解码器检测视频码流是否满足上述的条件,当前条带中所有的宏块的码流全部满足上述条件,则当前条带中所有的宏块均正确,不存在错误宏块;解码器检测视频码流不满足上述条件中任一条件时,多视点立体视频码流中发生语法错误,语法错误会导致解码中断,将当前检测到的错误宏块的错误标志位ei_flag由0设置为1(正确解码宏块的错误标志位ei_flag为0),完成当前条带中错误宏块的查找,终止当前条带中宏块的解码;
1.1.2:判断是否完成一帧图像的中所有条带的解码,如果完成,则进入步骤1.2,如果未完成,寻找到下一个同步(条带头),返回步骤1.1.1,从下一个条带的第一个宏块继续解码,直至完成对整帧图像的所有条带的解码,找到所有条带中可能存在的错误宏块。
1.2:相关性检测过程:
由于视频编码压缩标准H.264采用变长编码会导致错误传递,实际上宏块中的错误可能已经发生只是尚未超出解码器的承受范围,语法检测确定的错误宏块的位置很有可能不是错误最初发生的位置,如图3所示。为了进一步确定错误宏块发生的位置,当语法检测发现一条带(Slice)中的一个宏块有语法错误时,在完成一帧图像的解码输出该帧图像之前采用相关性检测确定初始错误宏块的位置。对步骤11中检测到的所有错误宏块所在的条带依次进行相关性检测,从其中的第一个条带的第一个宏块开始进行相关性检测(边界相关性或帧间相关性)确定初始错误宏块。
图像内部的相关性表现在相邻像素或相邻帧同一位置像素的亮度和色度相似甚至是相等的,可以利用这种性质检测出初始错误宏块的位置。立体视频图像的相关性检测包括两种,边界相关性检测方法和帧间相关性检测方法,对I帧的条带中的宏块和右视点第一个P帧的条带中的宏块采用边界相关性检测,对其余P帧采用帧间相关性检测。
1.2.1:边界相关性检测方法:
文献(“E.Khan,S.Lehmann,H.Gunji,et al.Iterative error detection andcorrection of H.263 coded video for wireless networks”)中边界相关性的定义为宏块内像素与其外部像素的相关性,通过边界平均样本差(AIDB Average Intersample Differenceacross the block Boundary)来表示,M×M大小宏块的边界平均样本差AIDB为:
其中k为当前待检测宏块的上下左右四个相邻宏块中“可用”的个数,M×M表示宏块(待检测宏块)大小。“可用”是指与待检测宏块的相邻的宏块是正确宏块并且未超出当前解码图像范围。
和
分别表示当前待检测宏块内外部对应位置像素值,i为整数,取值范围是[1,M×k],如图2所示。
边界平均样本差AIDB的值越大,表示边界相关性越差。选定亮度分量的边界相关性门限thresholdAIDB_Y和色度分量的边界相关性门限thresholdAIDB_U分别对像素的亮度分量和色度分量进行检测。亮度分量Y的边界相关性为AIDB_Y,门限为thresholdAIDB_Y,色度分量U的边界相关性为AIDB_U,门限为thresholdAIDB_U。当AIDB_Y>thresholdAIDB_Y或AIDB_U>thresholdAIDB_U时认为该宏块是初始错误宏块,否则该宏块为正确宏块。门限thresholdAIDB_Y和thresholdAIDB_U根据当前帧图像正确解码宏块的边界平均样本差AIDB的统计均值自适应调整取值,以适应不同立体视频序列和场景切换。
thresholdAIDB_Y=ω1+c1,thresholdAIDB_U=ω2+c2
其中,门限thresholdAIDB_Y由自适应取值分量ω1和常数分量c1组成,c1的取值范围是[3,10]。门限thresholdAIDB_U由自适应取值分量ω2和常数分量c2组成,c2的取值范围是[1,5]。常数分量c1取5时具有较好的检测效果,常数分量c2取1时具有较好的检测效果。N表示立体视频当前帧正确解码的宏块个数,αj表示立体视频中第j个正确解码宏块亮度分量Y的边界平均样本差,βj表示立体视频中第j个正确解码宏块色度分量U的边界平均样本差。
1.2.2:帧间相关性检测方法:
帧间相关性是指时间域上或空间域上相邻两帧图像相同位置像素的相关性,通过帧间平均样本差(AIDF Average Intersample Difference across Frames)来表示。帧间相关性检测分两种:一种为左视点的帧间相关性,是当前宏块与前一时刻相同位置宏块各像素的平均绝对差值,另一种为右视点的帧间相关性,是当前宏块与左视点同一时刻相同位置宏块各像素的平均绝对差值。
M×M大小宏块的帧间平均样本差AIDF为
其中,Icur_mb(x,y)是当前宏块内(x,y)位置处像素值,Ipre_mb(x,y)是相邻帧中对应宏块内(x,y)位置处像素值。
选定亮度分量Y的帧间相关性门限thresholdAIDF_Y和色度分量U的帧间相关性门限thresholdAIDF_U分别对像素的亮度分量和色度分量进行检测。亮度分量Y的帧间相关性为AIDF_Y,门限为thresholdAIDF_Y,色度分量U的帧间相关性为AIDF_U,门限为thresholdAIDF_U。当AIDF_Y>thresholdAIDF_Y或AIDF_U>thresholdAIDF_U时认为该宏块是初始错误宏块,否则该宏块为正确宏块。门限thresholdAIDF_Y和hresholdAIDF_U根据当前帧图像正确解码宏块的帧间平均样本差AIDF的统计均值自适应调整取值,以适应不同立体视频序列和场景切换。
thresholdAIDF_Y=ω3+c3,thresholdAIDF_U=ω4+c4
其中,门限thresholdAIDF_Y由自适应取值分量ω3和常数分量c3组成,常数分量c3的取值范围是[2,10]。门限thresholdAIDF_U由自适应取值分量ω4和常数分量c4组成,常数分量c4的取值范围是[1,5]。亮度分量常数分量c3取3时有较好的检测效果,常数分量c4取1时具有较好的检测效果。N表示立体视频当前帧正确解码的宏块个数,γj是第j个正确解码宏块亮度分量Y的AIDF,ηj是第j个正确解码宏块色度分量U的AIDF。
用相关性检测法检测到一个条带中发生错误的第一个宏块(即初始错误宏块)的位置后,将宏块所在条带中错误宏块后面的宏块也标记为错误宏块(错误标志位ei_flag置为1)。
若步骤1.2的相关性检测在各条带中没有找到初始错误宏块,则步骤1.1中得到的错误宏块为初始错误宏块,将该初始错误宏块后面的宏块也标记为错误宏块,以下统称为错误宏块。
按照上述方法完成一帧图像所有错误宏块(包括初始错误宏块和位于初始错误宏块后标记的所有错误宏块)的错误检测,并对错误宏块做标记,在步骤二中对得到的错误宏块的编码模式进行估计。
步骤二:结合深度信息来估计发生错误宏块的编码模式,选择邻近宏块中深度与待重建的错误宏块深度最为接近的宏块的编码模式:
检测到错误宏块位置后对这些错误宏块的编码模式进行估计。双视加深度格式的立体视频右视点中的宏块可以采用三种模式编码:帧内预测编码模式、运动预测编码模式和视差预测编码模式。在错误宏块周围的相邻宏块编码模式不一致时,结合深度信息对发生错误宏块的编码模式进行估计,是本发明提出的错误隐藏方法的关键思想。
立体视频彩色图中属于同一物体的像素在深度图中他们对应的深度值也是相近的。处于同一深度位置相邻的宏块,它们的运动情况总是相似或是相同的。因此在错误宏块周围的相邻宏块的编码模式不一致时,可以借助深度信息,选择相邻宏块中深度与待重建的错误宏块最为接近的宏块的编码模式作为该错误宏块编码模式。
将右视点中的错误宏块进行拆分,拆分得到多个错误子块分别重建。拆分方法为4个8×8块错误子块(如图4所示)或16个4×4块错误子块分别重建或以整宏块不拆分形式进行重建。将与待重建错误子块相邻的正确宏块进行拆分,得到16个4×4块正确子块,其中与错误子块相邻的所有4×4块正确子块(位置关系如图4所示)的编码模式、参考帧、运动矢量(MV Motion Vector)或视差矢量(DV Disparity Vector)有可能存在不同的,统计与待重建错误子块相邻的“可用”4×4块正确子块的编码模式。“可用”是指该相邻子块存在(在图像范围内)并且正确解码。
若待重建错误子块相邻的各个4×4块正确子块的编码模式相同,则此错误子块的编码模式与相邻的4×4块正确子块的编码模式相同。若与待重建错误子块相邻的各个4×4块正确子块的编码模式不完全相同,则需借助深度信息对待重建错误子块的编码模式进行估计。在立体视频当前解码的彩***图的对应深度图中找到待重建错误子块及其相邻各个4×4块正确子块的相同坐标位置的对应块,分别计算深度图中各个错误子块的对应块的灰度平均值以及深度图中各个4×4块正确子块的对应块的灰度平均值。然后在与待重建错误子块所相邻的正确子块中,找到与待重建错误子块对应块灰度值最为接近的4×4块正确子块,将该4×4块正确子块的编码模式作为待重建错误子块的估计编码模式。得到待重建8×8块错误子块或4×4块错误子块的编码模式后,在步骤三中根据该编码模式重建错误宏块。所述的最为接近是指深度图中待重建错误子块对应块灰度值与深度图中相邻的4×4块正确子块对应块灰度值之差的绝对值最小。
步骤三:根据步骤二中预测的编码模式重建错误宏块:
正确估计出错误宏块的各错误子块的编码模式后,则可以对其利用相应错误隐藏方法对各错误子块分别进行重建。
如果待重建错误子块为帧内编码模式,则此错误子块由周围正确宏块加权插值重建(“S.Aign,K.Fazel.Temporal and Spatial Error Concealment Techniques for HierarchicalMPEG-2Video Codec”);如果待重建错误子块为运动预测模式,则以相邻4×4块正确子块的运动矢量MV为候选运动矢量,通过边界匹配算法(BMA Boundary Matching Approach)重建(“W.M.Lam,A.R.Reilbman and B.Liu.Recovery of Lost or Erroneously ReceivedMotion Vectors”);如果待重建错误子块估计为视差预测模式,采用类似边界匹配算法的方式重建,将算法中的运动矢量换成视差矢量,候选视差矢量为周围临近4×4块正确子块的视差矢量DV。
如图5所示,以16×16大小的宏块为例说明基于深度信息进行编码模式估计和错误隐藏方法。图5-A中中央宏块为待重建宏块,其周围的8个相邻宏块的编码模式不完全相同。图5-B为深度图中对应位置的各个宏块,可以看出待重建宏块对应宏块的平均灰度值与其右边的宏块更为接近,因此待重建错误宏块的编码模式为运动预测模式,图5-C为错误宏块进行重建后的效果。
对本发明提出的基于深度信息的多视点立体视频错误隐藏方法进行仿真测试。选择“Breakdancers”和“Ballet”作为测试序列。这两个序列的大小都是512×384像素(1024*768经下采样得到的)。采用H.264的测试模型JM17.2(“JVT reference software[CP/OL].2010[2010-8-17].http://iphome.hhi.de/suehring/tml/download/jml7.2.zip”)的立体档次双目视差结构对两个视频的前30帧进行编码,其中左视点1个I帧后接9个P帧,参考帧数为5,帧率为15帧/秒,量化参数QP选择28、32、36、40。向待解码码流中除序列参数集、图像参数集和条带头的部分随机加入比特错误,误码率BER为10-5量级,宏块丢失率(Macroblock Loss Rate,MLR)约为5%。
图6为“Breakdancers”序列在QP=32条件下右视点主观质量比较结果,图7为“Ballet”序列在QP=28条件下右视点主观质量比较结果。图6-A为“Breakdancers”序列无误码的原码流解码图像,图6-B为“Breakdancers”序列误码后未经错误隐藏的错误解码图像,图6-C为“Breakdancers”序列采用JM17.2边界匹配BMA的错误隐藏方法的解码图像,图6-D为“Breakdancers”序列采用文献(“X.Xiang,D.Zhao,Q.Wang,et al.A Novel ErrorConcealment Method for Stereoscopic Video Coding”)OBMDC方法的解码图像,图6-E为“Breakdancers”序列采用本发明的错误隐藏方法解码图像。图7-A为“Ballet”序列无误码的原码流解码图像,图7-B为“Ballet”序列误码后未经错误隐藏的错误解码图像,图7-C为“Ballet”序列采用JM17.2边界匹配BMA的错误隐藏方法的解码图像,图7-D为“Ballet”序列采用文献(“X.Xiang,D.Zhao,Q.Wang,et al.A Novel Error Concealment Methodfor Stereoscopic Video Coding”)OBMDC的解码图像,图7-E为“Ballet”序列采用本发明的错误隐藏方法解码图像。
图6-E(利用本发明的错误隐藏方法解码图像)相比图6-C(BMA的错误隐藏方法的解码图像)对墙面有很好恢复效果,墙面图案的颜色交界处轮廓清晰。图6-E(利用本发明的错误隐藏方法解码图像)相比图6-D(OBMDC方法的解码图像)对跳舞的运动主体有很好恢复效果,从人的手臂和运动鞋能看出明显效果差距。图7-E(利用本发明的错误隐藏方法解码图像)相比图7-C(BMA的错误隐藏方法的解码图像)对墙面、栏杆、窗帘有很好恢复效果,墙与地面交界处轮廓清晰。图7-E(利用本发明的错误隐藏方法解码图像)相比图7-D(OBMDC方法的解码图像)对芭蕾舞者有很好恢复效果,从人的手臂能看出明显效果差距。无论是运动剧烈区域还是运动平缓区域,利用深度信息估计错误宏块的编码模式得到的重建图像主客观质量比采用JM17.2(双线性内插算法和BMA算法)和OBMDC方法更优。其主要原因是利用了立体视频彩***图和深度图的联系,能够正确的估计出错误宏块的编码模式,进而采用相应的错误隐藏方法,获得较好的重建图像。因此,该方法可以在立体视频、多视点视频和自由视点视频应用中发挥重要的容错作用。