视讯系统中的错误掩盖方法

文档序号:7689066阅读:257来源:国知局
专利名称:视讯系统中的错误掩盖方法
技术领域
本发明属于视讯领域,尤其是一种在视讯系统中当图像传输发生错误时,能实时、高质量地恢复图像传输质量的错误掩盖方法。
然而,在实际的传输信道中,错误的发生是不可避免的。因此,当视频编码流在传输过程中丢失或受到破坏时,为了将图象恢复到可以接受的程度,必须采取合适的错误恢复技术。
首先,由于H.263中采用了可变长编码、运动预测和运动补偿的技术,因此如果在解码过程中发现错误就会导致同步的丢失,必须跳到下个同步字以继续解码过程;其次,由于H.263中最小的同步单元为块组(GOB),因此当错误发生时则会引起整个块组(GOB)数据的丢失;再者,在解码当前帧时,由于要用到前一帧数据参考来进行运动补偿,所以前一帧中的错误数据会衍生到当前帧,并继续向下传递,直到出现一个帧内帧(I帧)为止,进而严重影响了图象的质量。
现有的常用技术有自动再传输请求(ARQ)、前向错误纠正编码(FEC)和数据交错(Interleaving)等三种。但它们均有各自的缺点,如自动再传输请求(ARQ)必须要求系统存在一条双向信道,而且还有可能导致网络拥塞和数据丢失;前向错误纠正编码(FEC)因为要求更多的校验位进行错误检测和纠正,所以会引起码率的增大;数据交错(Interleaving)则有导致系统延时的缺点。
为了克服上述技术存在的缺点,现有技术采用了错误掩盖技术(ErrorConcealment),它是在解码端降低错误的影响。由于图像序列本身有很强的空间和时间上的相关性,所以为用正确接收到的视频数据去预测丢失的数据提供了可能,而且由于该过程是在解码器端完成的,因此不会引起网络的拥塞和延时。
错误掩盖方法一般分为两类,即空域的错误掩盖和时域的错误掩盖。其中,空域的错误掩盖是利用当前帧上正确接收的信息,用丢失宏块的相邻宏块的数据去恢复遭到破坏的数据,其包括最大平滑恢复和双向内插两种方法;时域的错误掩盖则是利用前一帧的图像数据来估计错误数据,即用邻域宏块的运动矢量来估计受损块的运动矢量,然后用其运动补偿块来代替受损宏块,目前常用的一种最简单的方法是将受损宏块的运动矢量变为0,即用上一帧上相应位置的宏块来替换当前宏块的数据。
但是,由于上述二种技术在应用中未充分考虑到图象的空间相关性、时间相关性等各种因素,所以在单独使用时具有如下的缺点空域的错误掩盖方法由于假设相邻的图像块中存在强相关性,因此如果受损块和相邻块处于亮度同一的区域,则这些方法会产生较好的掩盖效果,但如果它们处于图像边缘部分,则会导致图像质量的钝化,因此空域的错误掩盖方法对恢复图像细节部分的能力较差。时域的错误掩盖方法对于图像的静止或运动较小的部分会得到理想的图像质量,但是对于快速运动区域,以及当情景切换时,该方法则会导致明显的方块效应,造成图像的不连续,图像质量严重下降。
本发明的解决方案是利用一种视讯系统中的错误掩盖方法,该方法包含以下步骤判断当前帧的类型,如果当前帧为帧内帧时,对所有错误宏块进行空域掩盖,若当前帧为预测帧时,则继续;计算当前帧在没有被破坏的宏块中帧内编码的宏块的百分比,如果所述的百分比超过一个阈值时,对所有错误宏块进行空域掩盖,否则继续;对当前帧中的所有错误宏块的编码模式逐个进行判断,如果当前错误宏块的编码模式是帧内编码时,对其进行空域掩盖,否则对其进行时域掩盖。
上述时域的错误掩盖方法还进一步包含如下步骤计算所述的当前错误宏块的周围宏块的运动矢量的最大值,若其小于或等于1而且当前错误宏块的周围宏块不全是帧内编码块,使用该值作为当前错误宏块的运动矢量,进行运动补偿,否则,继续;得到所述的当前错误宏块的边界像素,然后到前一帧中搜索与边界像素匹配的16×16区域,将上述中求得的值与一个设定好的阈值比较,如果该值低于该阈值,计算前一帧16×16区域的四个边界与所述的当前错误宏块的四个边界相应像素差值的绝对值的和来确定匹配的区域,将搜索所得的该区域复制到当前宏块的位置上来,如果高于该阈值,继续;计算前一帧16×16区域的第一行与所述的当前错误宏块的上边界,最后一行与下边界,第一列与左边界,最后一列与右边界的差值绝对值的和来确定匹配的区域,将搜索所得的该区域复制到当前宏块的位置上来。
由于采用了上述的技术方案,所以本发明不但能利用上一帧的时域信息,还考虑到空域上的强相关性,能对图像的错误区域根据具体情况自适应地选择错误掩盖方法,从而达到可以接受的图像效果;同时,因为本发明克服了时域和空域方法固有的缺点,通过运动检测自适应地选择相应的错误掩盖方法,将二者的优点结合起来,进而降低了算法的复杂性,满足实时处理的要求。本发明是根据每帧图像的具体信息决定使用何种错误掩盖算法,将二者的优点综合,以达到一种较为理想的图像质量。
图2是本发明方法流程图。
其中,宏块的定义是在图象编码过程中,将图象分成若干个16*16的区域进行编码,一个16*16的区域成为一个宏块。
2、另一种情况是虽然当前帧不是帧内帧,但图像发生场景切换,在图像发生场景切换时,图像中的宏块与前一帧图像的相应宏块的相关性就比较低了,在这种情况下,用前一帧图像的相应宏块进行替代,显然就不合适了,在这种情况下,也必须用空域掩盖。
3、第三种情况是对于错误宏块是帧内编码块的情况,帧内编码块之间其相关度较高,适合于进行空域掩盖,以错误宏块周围的宏块对受损的错误宏块进行掩盖往往能得到比较好的效果。
而对于确实需要进行时域掩盖的错误宏块,其掩盖方式也不是唯一的,针对不同的情况,可以有三种方式1、第一种方式是不去前一帧搜索与当前错误宏块相匹配的区域,而是直接利用周围宏块的运动矢量来估计当前错误宏块的运动矢量。运动矢量的定义是每个宏块的编码过程是相对独立的。在压缩编码过程中,为了提高压缩效率,每个宏块具有一个运动矢量(x,y)表示在前一个图象帧上与该宏块最接近的16*16区域的位置。x为正时表示该区域在当前宏块的右方,x为负时在左方,y为正时表示该区域在当前宏块的下方,y为负时在上方。
这种情况一般在背景和运动比较小的区域中发生。对于背景和运动比较小的区域,其中的宏块运动往往都比较小,如果我们判断出周围宏块的运动矢量,比如x为正,y为负,前一帧上与该宏块最接近的16*16区域在当前宏块的右上方,由于宏块运动比较小,则受损错误宏块也很可能在当前宏块的右上方,x为正,y为负。因此,如果判断出周围宏块的运动矢量,其最大值小于一个阈值的话,就可以用该周围宏块的运动矢量的最大值去作为该错误宏块的运动矢量,往往其误差也是很小的。
2、第二种方式是计算前帧16×16区域的四个边界与当前宏块的四个边界相应像素差值绝对值的和,再选择该和最小的区域对错误宏块进行掩盖。这种方式比较适合于图像中距离前帧变化、运动较小的区域。但如果运动过小的话,其实用第一种方式更简洁。这种方式其实主要可针对运动不算很大的较适中的情况。
3、第三种方式是计算前帧16×16区域的第一行与错误宏块的上边界,最后一行与下边界,第一列与左边界,最后一列与右边界的差值绝对值的和来确定匹配程度,再选择匹配程度最大,既差值最小的区域来进行掩盖。这种方式比较适合于图像中距离前帧变化、运动较大的区域。
本发明实际上是建立在上述通过反复实验得出的结论的基础之上的,图2是本发明的方法流程图,结合图2具体描述本发明的实现过程如下一、判断当前帧类型对于一帧图像首先判断其帧的类型,如果当前帧为帧内帧(I帧),则对所有错误宏块进行空域掩盖,如果当前帧为预测帧(P帧),则继续判断。由于帧内帧中的错误宏块不宜进行时域掩盖,所以本步骤首先将那些帧内帧中的错误宏块剔除在需要时域掩盖的范围之外。
二、判断场景切换当图像发生场景切换时,利用时域的错误掩盖方法不合适,而应对该帧使用空域的错误掩盖方法进行处理。其中,是否发生场景切换的判断标准是如果该帧的显著特点是使用帧内编码模式的宏块的数量很多,则通过计算在没有被破坏的宏块中的帧内编码的宏块的百分比来判断,当百分比超过一定值时,认为该帧发生了场景切换,便对所有错误宏块使用空域掩盖;如果没有超过一定值时,则继续判断,一般来说,该定值可为40%-60%之间的一个值。
三、对当前帧中的所有错误宏块的编码模式逐个进行判断对于判断出是使用帧内编码的宏块,则使用空域的错误掩盖方法;但是,当错误引入后,就会使整个块组(GOB)的信息完全丢失,无法确定其编码模式。此时可根据图像的空间强相关性原则,并结合周围宏块的编码模式判断当前受损宏块的编码模式。具体地讲,当考虑8-邻域的情况时,一个宏块周围就有8个宏块,其中左右两个宏块由于已经丢失而不作统计,因此需要根据上面的三个宏块和下面的三个宏块进行判断。
在进行判断时,需要为六个宏块赋予不同的权值,又由于当前宏块的特性更接近它的相连宏块,如上下两个宏块,所以,上下两个宏块的权值应较大,四个角的宏块的权值应较小,这样上下两个宏块的特性将占主导地位,其中,权值的选择根据具体实践经验选定。如

图1所示,首先将上下两个宏块的权值设为2.5,四个角的宏块的权值为1.25,然后依次判断六个宏块的编码类型,如果是帧内编码块,则统计其权值,最后计算所有权值之和,如下式所示Result=wlu*modelu+wu*modeu+wru*moderu+wld*modeld+wd*moded+wrd*moderd式中wlu代表左上角宏块权值,wu代表上宏块权值,wru代表右上角宏块权值,wld代表左下角宏块权值,wd代表下宏块权值,wrd代表右下宏块权值。
mode=1,如果宏块是帧内编码;mode=0,如果宏块是帧间编码。
其中,右下角标lu代表左上角宏块,u代表上宏块,ru代表右上角宏块,ld代表左下角宏块,d代表下宏块,rd代表右下宏块。
计算所得的结果如果大于一个阈值,则认为是帧内编码块,便使用空域的错误掩盖方法;否则认为是帧间编码,便使用时域搜索算法,作进一步处理,其中阈值一般取为6-10中的一个值比较合适。
上述的判断首先将当前帧为帧内帧、经过判断认为发生了场景转换、或者经上述判断认为是帧内编码块的情况归于空域掩盖。关于空域掩盖的方法属于已有技术的内容。其余的情况属于下面时域掩盖方法的部分。
时域的错误掩盖方法使用基于块匹配原则的前帧搜索方法,其方法为首先得到待处理宏块的边界像素;然后到参考帧(前一帧)中搜索与边界像素最匹配的16×16区域;最后将搜索所得的该区域复制到当前宏块的位置上来。
由于该搜索始终是一种耗时的搜索过程,所以当使用时域的错误掩盖方法时,本发明采取如下的措施来降低计算复杂度并减少处理运算的时间,具体为(1)由于在会议电视的图像中,背景和运动较小的区域占很大比重,对于这些区域,实际上并不需要到前帧搜索匹配的区域,而是可以直接利用周围宏块的运动矢量来估计当前宏块的运动矢量再完成运动补偿即可,这样做的前提是预先估计当前宏块的运动幅度,以确定是否使用时域搜索。
由于在大部分情况下,图像中物体的运动具有一致性,因此可以通过判断受损宏块的周围宏块的运动矢量来估计受损宏块的运动矢量,又因为受损宏块与其上下两个宏块的运动更为接近,所以可首先计算出上下两个宏块的运动矢量的最大值,如果该值小于或等于1,则直接使用该值作为当前错误宏块的运动矢量,进行运动补偿;只有在该值大于1时才采用前帧搜索的方法,这样处理将大幅度降低处理时间。但是,如果一个宏块的上下宏块都是帧内编码块,则计算的最大值为零,这样可能会认为其没有发生运动而是直接沿袭前帧相应宏块数据而造成误判,所以在统计宏块的运动矢量时必须保证它是帧内编码块。
(2)得到所述的当前错误宏块的边界像素后,到前一帧中搜索与边界像素匹配的16×16区域,对于需要到前帧搜索匹配的区域,也有两种匹配原则可供选择,其一是计算前帧16×16区域的第一行与处理宏块的上边界,最后一行与下边界,第一列与左边界,最后一列与右边界的差值绝对值的和来确定匹配程度;其二是计算前帧16×16区域的四个边界于当前宏块的四个边界相应像素差值绝对值的和。两种匹配原则所得到的效果比较接近,没有明显差异,只是前者较适合大运动的场合,而后者更适合细小运动。至于用哪一种匹配原则,可通过设定一个阈值,并与(1)中计算出的值比较,如果(1)中计算出的值低于该阈值,便使用第二种匹配原则将搜索所得的该区域复制到当前宏块的位置上来。
(3)如果(1)中计算出的值高于该阈值时,便使用第一种匹配原则将搜索所得的该区域复制到当前宏块的位置上来。
在(2)中,为了继续缩小处理时间,本发明还采用了如下的自适应搜索窗的方法I、首先得到错误宏块周围所有宏块的运动矢量,包括X、Y方向的运动矢量;II、在I得到的运动矢量集合中分别计算X、Y方向的最大值;III、根据两个最大值按照以下原则确定搜索窗的大小当X方向的运动矢量的最大值小于4并且Y方向上的运动矢量最大值小于4时,设置窗口大小为8;当X方向的运动矢量的最大值、Y方向上的运动矢量最大值有一个大于8时,设置窗口大小为12;其他情况窗口大小为16。
当然,上面的参数也可以人为设置。
在设定好搜索窗口的大小后,再在该搜索窗的区域中搜索与边界像素匹配的区域。
权利要求
1.一种视讯系统中的错误掩盖方法,其特征在于,该方法包含以下步骤a.判断当前帧的类型,如果当前帧为帧内帧,则对所有错误宏块进行空域掩盖,若当前帧为预测帧时继续;b.计算当前帧在没有被破坏的宏块中帧内编码的宏块的百分比,如果所述的百分比超过一个阈值时,对所有错误宏块进行空域掩盖,否则继续;c.对当前帧中的所有错误宏块的编码模式逐个进行判断,如果当前错误宏块的编码模式是帧内编码,对其进行空域掩盖,否则对其进行时域掩盖。
2.根据权利要求1所述的视讯系统中的错误掩盖方法,其特征在于在步骤c中,对编码模式的判断是根据当前错误宏块的周围宏块的编码模式综合加权得到的,其包括,①根据如下公式计算当前错误宏块的编码特性标志(Result),Result=wlu*modelu+wu*modeu+wru*moderu+wld*modeld+wd*moded+wrd*moderd式中wlu代表左上角宏块权值,wu代表上宏块权值,wru代表右上角宏块权值,wld代表左下角宏块权值,wd代表下宏块权值,wrd代表右下宏块权值;若所在位置的宏块是帧内编码,其编码特性mode=1;若所在位置的宏块是帧间编码,其编码特性mode=0,其右下角标lu代表左上角宏块,u代表上宏块,ru代表右上角宏块,ld代表左下角宏块,d代表下宏块,rd代表右下宏块;②如果编码特性标志(Result)大于一个阈值,则认为当前错误宏块是帧内编码块,进行空域掩盖,否则认为是帧间编码,进行时域掩盖。
3.根据权利要求1所述的视讯系统中的错误掩盖方法,其特征在于步骤c中所述的进行时域掩盖进一步包含1)计算所述的当前错误宏块的周围宏块的运动矢量的最大值,若其小于或等于1而且当前错误宏块的周围宏块不全是帧内编码块,则使用该值作为当前错误宏块的运动矢量,进行运动补偿,否则,继续;2)得到所述的当前错误宏块的边界像素,然后到前一帧中搜索与边界像素匹配的16×16区域,将上述1)中求得的值与一个设定好的阈值比较,如果该值低于该阈值,计算前一帧16×16区域的四个边界与所述的当前错误宏块的四个边界相应像素差值的绝对值的和来确定匹配的区域,将搜索所得的该区域复制到当前宏块的位置上来,如果高于该阈值,继续;3)计算前一帧16×16区域的第一行与所述的当前错误宏块的上边界,最后一行与下边界,第一列与左边界,最后一列与右边界的差值绝对值的和来确定匹配的区域,将搜索所得的该区域复制到当前宏块的位置上来。
4.根据权利要求3所述的视讯系统中的错误掩盖方法,其特征在于步骤c的2)中的搜索采用自适应搜索窗的方法,该方法包括如下步骤I、首先得到错误宏块周围所有宏块的运动矢量,包括X、Y方向的运动矢量;II、在I得到的运动矢量集合中分别计算X、Y方向的最大值;III、根据两个最大值按照以下原则确定搜索窗的大小当X方向的运动矢量的最大值小于第一阈值并且Y方向上的运动矢量最大值小于第一阈值时,设置窗口大小为α;当X方向的运动矢量的最大值、Y方向上的运动矢量最大值有一个大于第二阈值时,设置窗口大小为β,第二阈值大于第一阈值;其他情况窗口大小为γ,其中α<β<γ。
全文摘要
一种视讯系统中的错误掩盖方法,它包含以下步骤判断当前帧的类型,如果当前帧为帧内帧(I帧)时,对所有错误宏块进行空域掩盖,若当前帧为预测帧(P帧)时,则继续;计算当前帧在没有被破坏的宏块中帧内编码的宏块的百分比,如果所述的百分比超过一个阈值时,对所有错误宏块进行空域掩盖,否则继续;对当前帧中的所有错误宏块的编码模式逐个进行判断,如果当前错误宏块的编码模式是帧内编码,对其进行空域掩盖,否则对其进行时域掩盖。本发明克服了时域和空域的错误掩盖方法固有的缺点,通过运动检测自适应地选择相应的掩盖方法,将二者的优点结合起来,同时降低了方法的计算复杂性,从而能够适应实时处理的要求。
文档编号H04N7/15GK1463154SQ02119499
公开日2003年12月24日 申请日期2002年5月28日 优先权日2002年5月28日
发明者梁柱, 罗忠 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1