一种自适应误码掩盖方法

文档序号:7648728阅读:161来源:国知局
专利名称:一种自适应误码掩盖方法
技术领域
本发明属于图像信息处理领域,具体涉及视频缩码流在传输时发生错误时的解决方法。

背景技术
随着多媒体技术的迅猛发展,视频通信得到了广泛的应用。然而,视频压缩码流在Internet或无线信道上传输时,很容易受到信道或带宽稳定性的影响,造成传输视频数据包丢失,导致接受端解码时产生错误。误码掩盖技术就是利用视频序列在空间和时间上的相关性,对丢失或受损的视频信号进行恢复的一种技术。与其它抗误码技术相比,误码掩盖技术只需在解码端进行,且不会增加信道负担和造成传输延迟,因此被广泛应用于视频数据的误码恢复。
传统的误码掩盖方法只是简单地根据解码帧的类型来采取相应的空域或时域掩盖,即对I帧必定采用空域误码掩盖,而对P帧则采用时域误码掩盖。这在一定程度上能够改善视频的主观感觉和图像峰值信噪比,但存在很大的局限性,特别是当视频序列发生场景切换的时候。大量的实验表明,在未发生场景切换的情况下,如果对I帧进行误码掩盖时能考虑相邻帧间的时间相关性,重建图像的质量将显著提高。而在发生场景切换后,如果对P帧仍然使用时域掩盖方法,解码图像的主观视觉质量将急剧下降。


发明内容
本发明所要解决的技术问题是,针对现有技术的缺陷,在网络传输视频码流的过程中出现图像误码时,根据不同情况自适应地调用空域或时域误码掩盖方法,以提高图像质量。
本发明一种自适应误码掩盖方法,包括以下步骤 第一步,当码流发生错误时,检测是否发生场景切换; 第二步,对发生了场景切换的,采用空域掩盖方法;对未发生场景切换的,进行第三步; 第三步,根据错误帧的编码类型采用相应的时域误码掩盖方法 对于I帧,采用前向运动矢量估计法进行恢复; 对于P帧,采用P帧时域掩盖方法进行恢复; 第四步,将经过正常解码及错误隐蔽的图像数据送入显示缓存。
上述第一步中的检测,是根据当前帧编码类型调用相应的场景切换检测方法 对于I帧,采用帧间关键区域差法和帧间分块差法进行检测即先用帧间关键区域差法进行检测,如果检测的结果为发生场景切换,还需要进一步用帧间分块差法进行检测;如果检测结果为没有发生场景切换,则检测结束(不需要采用帧间分块差法了); 对于P帧,采用宏块类型判决法进行检测。
上述采用帧间关键区域差法判断当前帧是否发生了场景切换的方法为 首先,计算相邻两帧关键区域所有像素亮度和之差的绝对值
其中Yn+1、Yn分别表示当前帧与其前一帧的关键区域像素亮度之和; 然后,判断

是否大于某个阈值TH,若是,则判断当前帧可能发生了场景切换;否则,认为没有发生场景切换。
上述采用帧间分块差法判断当前帧是否发生了场景切换的的方法为 首先,将一幅图像按照N×N区域大小划分成若干个Block,,其中N>2个宏块单位; 然后,对每个Block,计算自身区域内随机选取的S×S小块与其参考帧对应区域像素的亮度差的绝对值总和SAD,其中可以取S<N,可以取S=2个宏块单位,这里用S×S表示取的是方块,长、宽都是相同的单位。宏块单位表示以宏块的大小作为度量单位; 如果满足SAD>T1,则判断该Block发生了区域场景切换,其中T1为通过实验获得的门限值; 对各个Block的检测完成后,计算出像素亮度的空间变化率Rate 其中,Block_Change指一幅图像中发生区域场景切换的宏块数目,Block_Numbers指一幅图像被划分的宏块数目; 如果空间变化率Rate≥T2,则判断该图像发生了场景切换,其中,T2为预先设定的阈值。
上述对于P帧采用宏块类型判决法进行检测的方法为计算进行INTRA模式编码的宏块比率 如果满足Rateint raMB>T3,则判断该图像发生了场景切换; 其中,IntraMB_Numbers指采用INTRA模式编码的宏块数,MB_Numbers指当前P帧的宏块总数,T3为预先设定的阈值。
上述第三步中的对于I帧采用前向运动矢量估计法进行恢复的方法为 a)将当前丢失宏块划分成大小相同的子块,每个子块通过映射在前一帧的相同位置找到对应子块,并确定上下左右相邻的子块是否可用; b)将一个丢失子块和相邻的四个子块各自的前向运动矢量经反变换得到相应的后向运动矢量,然后根据这个后向运动矢量分别将对应的各子块投射到当前帧中,并计算投射块与丢失子块的相交面积SA、SB、SC、SD和SE。
c)根据b)所求得的各个子块的投射块与丢失子块的相交面积,然后通过下式计算当前帧中丢失子块的预测后向运动矢量MVP W=WA+WB+WC+WD+WE,S=SA+SB+SC+SD+SE,Wi指五个其中 子块各自的权重,Si指五个子块在当前帧中的投射块与丢失的相交面积,MVi指五个子块各自的后向运动矢量。
d)如果五个子块在当前帧中的投射块与丢失子块均没有相交,丢失子块的最终前向运动矢量直接采用映射子块的前向运动矢量; e)在得到丢失子块的前向运动矢量后,通过1/4像素插值得到丢失子块的预测像素值; f)循环步骤a)到步骤f),直到丢失宏块的各子块全部被恢复。
采用本发明的方法,在给定传输速率和一定丢包率、误码情况下,特别在传输视频序列中发生场景切换时,序列在空间和时间上的相关性都发生了变化,通过对不同类型帧的场景切换检测,并根据检测结果自适应地采取空域或时域误码掩盖方法,解决场景切换下传统误码掩盖方法带来的像素错乱问题,得到较高质量的重建图像,计算量小,可以满足实时性的需求,具有较强的实用价值。本发明的方法不但可以用于ATM、无线环境,而且也可用于Internet视频通信。



图1是本发明的流程图; 图2是一幅图像中的关键区域图; 图3是帧间分块差法中的宏块与其中的小块的关系示意图; 图4是将当前子块映射到前一帧并确定周围的示意图; 图5是一个子块的投射示意图。

具体实施例方式 错误隐蔽控制方法是视频压缩中的一个重要技术,会直接影响图像的主观质量。本发明提出的视频解码端的误码掩盖方法,能够在对错误解码帧进行误码掩盖时自适应地调用空域或时域方法。它首先检测当前解码帧是否发生了场景切换,如果未发生,那么对I帧和P帧都可以利用前一帧的信息来恢复当前帧的丢失区域。反之,只能采用空域掩盖方法。并且根据不同的帧编码类型采用不同的场景切换检测方法及时域误码掩盖方法。
下面结合附图对本发明做进一步的详细描述。
如图1所示 第一步,当码流发生错误时,根据当前帧的编码类型调用相应的场景切换检测方法,判断是否发生场景切换 1)对于I帧,采用帧间关键区域差法和帧间分块差法进行检测,具体为 a)采用帧间关键区域差法判断当前帧是否发生了场景切换 首先,计算相邻两帧关键区域所有像素亮度和之差的绝对值
其中Yn+1、Yn分别表示当前帧与其前一帧的关键区域像素亮度之和。一幅图像的关键区域是指M×M大小的中央区域,如图2所示。对于不同的图像格式,M的值是不同的,例如,对于QCIF图像,取M值为96个象素单位(6个宏块宽度)。之所以考虑关键区域是由于大多数图像的重要信息都位于整幅图像的中央区域。
然后,判断

是否大于某个阈值TH,若是,则判断当前帧可能发生了场景切换,继续下一步操作;反之,则认为没有发生场景切换,I帧场景切换检测结束。
b)采用帧间分块差法对可能发生场景切换的帧进行进一步检测方法如下 首先,将一幅图像按照N×N(N>2个宏块单位)区域大小划分成若干个Block; 然后,对每个Block,计算自身区域内随机选取的一个S×S(可以取S=2个宏块单位)小块与其参考帧对应区域像素的亮度差的绝对值总和SAD。图3是将QCIF图像中9×9个宏块单位区域大小按照N=3划分为9个Block的实例。在图3中,中间是阴影的小方框是在该Block中选取取的小块。
如果满足,SAD>T1,则判断该Block发生了区域场景切换,并将检测结果反映到相应的累加器中(以便得到后面所说的Block_Change指一幅图像中发生区域场景切换的Block数目)。其中T1为通过大量的实验获得的门限值。
c)对各个Block的检测完成后,计算出像素亮度的空间变化率Rate 其中,Block_Change指一幅图像中发生区域场景切换的Block数目,Block_Numbers指一幅图像被划分的Block数目。
d)如果空间变化率Rate超过一定范围,即Rate≥T2,则判断该图像发生了场景切换。其中,T2为预先设定的阈值。
2)对于P帧,采用宏块类型判决法进行检测,方法为 计算进行INTRA模式编码的宏块比率, 如果满足Rateint raMB>T3,则判断该图像发生了场景切换。
其中IntraMB_Numbers指采用INTRA模式编码的宏块数,MB_Numbers指当前P帧的宏块总数,T3为预先设定的阈值。
第二步,根据第一步的判定结果,采取相应的处理策略 1)如果发生场景切换,则采用常用的利用相邻正确宏块像素进行插值的空域掩盖方法,对I帧和P帧都可以利用前一帧的信息来恢复当前帧的丢失区域。
2)如果未发生场景切换,继续第三步操作。
第三步,根据错误帧的编码类型采用相应的时域误码掩盖方法 1)对于I帧,借鉴整帧丢失误码方法,采用前向运动矢量估计法,具体为 a)将当前丢失宏块(是指码流发生错误的帧中的一个错误宏块,一帧包括若干宏块,丢失宏块是无法正确解码的宏块)划分成16个4×4的子块。如图4所示,每个子块通过映射在前一帧的相同位置找到对应子块,并确定上下左右4个相邻的4×4块是否可用。以当前帧中A*子块为例,通过映射在前一帧中找到对应A子块,然后确定A子块的四个相邻子块B、C、D和E是否可用。这里我们假设四个相邻子块都是可用的。
b)将A、B、C、D和E各自的前向运动矢量经反变换得到相应的后向运动矢量,然后根据这个后向运动矢量分别将A、B、C、D和E投射到当前帧中,并计算投射块与A*的相交面积,分别记为为SA、SB、SC、SD和SE。图5显示了C子块的投射过程,图中,t为当前帧,t-1,t-2为其前两帧的示意图。
c)根据b)所求得的各个子块的投射块与A*的相交面积,然后通过下式计算当前帧中丢失子块A*的预测后向运动矢量MVP。
W=WA+WB+WC+WD+WE,S=SA+SB+SC+SD+SE,Wi指A、其中 B、C、D和E五个子块各自的权重,Si指A、B、C、D和E五个子块在当前帧中的投射块与A*的相交面积,MVi指A、B、C、D和E五个子块各自的后向运动矢量。
d)如果A、B、C、D和E五个子块在当前帧中的投射块与A*均没有相交,说明该区域的运动矢量较大,根据线性运动的原理,此时A*的最终前向运动矢量直接采用映射子块A的前向运动矢量; e)在得到A*的前向运动矢量后,通过1/4像素插值得到A*的预测像素值; f)循环步骤a)到步骤f),直到丢失宏块的16个4×4块全部被恢复。
2)对于P帧,采用P帧时域掩盖方法;具体采用传统的边界匹配准则法(BMA),即选择参考帧中边界像素和误码块周围相邻的像素差值最小的块作为补偿块。
第四步,将经过正常解码及错误隐蔽的图像数据送入显示缓存; 第五步,结束错误帧误码掩盖操作。
权利要求
1、一种自适应误码掩盖方法,其特征在于,包括以下步骤
第一步,当码流发生错误时,检测是否发生场景切换;
第二步,对发生了场景切换的,采用空域掩盖方法;对未发生场景切换的,进行第三步;
第三步,根据错误帧的编码类型采用相应的时域误码掩盖方法
对于I帧,采用前向运动矢量估计法进行恢复;
对于P帧,采用P帧时域掩盖方法进行恢复;
第四步,将经过正常解码及错误隐蔽的图像数据送入显示缓存。
2、权利要求1所述的自适应误码掩盖方法,其特征在于,所述第一步中的检测,是根据当前帧编码类型调用相应的场景切换检测方法
对于I帧,先用帧间关键区域差法进行检测,如果检测的结果为没有发生场景切换,则I帧场景切换检测结束;如果检测结果为发生场景切换,进一步用帧间分块差法进行检测;
对于P帧,采用宏块类型判决法进行检测。
3、权利要求2所述的自适应误码掩盖方法,其特征在于,所述采用帧间关键区域差法判断当前帧是否发生了场景切换的方法为
首先,计算相邻两帧关键区域所有像素亮度和之差的绝对值
其中Yn+1、Yn分别表示当前帧与其前一帧的关键区域像素亮度之和;
然后,判断
是否大于某个阈值TH,若是,则判断当前帧可能发生了场景切换;否则,认为没有发生场景切换。
4、权利要求2所述的自适应误码掩盖方法,其特征在于,所述采用帧间分块差法判断当前帧是否发生了场景切换的的方法为
首先,将一幅图像按照N×N区域大小划分成若干个Block,其中N>2个宏块单位;
然后,对每个Block,计算自身区域内随机选取的一个S×S小块与其参考帧对应区域像素的亮度差的绝对值总和SAD,其中S<N个宏块单位;
如果满足SAD>T1,则判断该Block发生了区域场景切换,其中T1为通过实验获得的门限值;
对各个Block的检测完成后,计算出像素亮度的空间变化率Rate
其中,Block_Change指一幅图像中发生区域场景切换的Block数目,Block_Numbers指一幅图像被划分的Block数目;
如果空间变化率Rate≥T2,则判断该图像发生了场景切换,其中,T2为预先设定的阈值。
5、权利要求2所述的自适应误码掩盖方法,其特征在于,所述对于P帧采用宏块类型判决法进行检测的方法为计算进行INTRA模式编码的宏块比率
如果满足Rateint raMB>T3,则判断该图像发生了场景切换;
其中,IntraMB_Numbers指采用INTRA模式编码的宏块数,MB_Numbers指当前P帧的宏块总数,T3为预先设定的阈值。
6、权利要求2所述的自适应误码掩盖方法,其特征在于,所述第三步中的对于I帧采用前向运动矢量估计法进行恢复的方法为
a)将当前丢失宏块划分成大小相同的子块,每个子块通过映射在前一帧的相同位置找到对应子块,并确定上下左右相邻的子块是否可用;
b)将一个丢失子块和相邻的四个子块各自的前向运动矢量经反变换得到相应的后向运动矢量,然后根据这个后向运动矢量分别将对应的各子块投射到当前帧中,并计算投射块与丢失子块的相交面积SA、SB、SC、SD和SE。
c)根据b)所求得的各个子块的投射块与丢失子块的相交面积,然后通过下式计算当前帧中丢失子块的预测后向运动矢量MVP
其中W=WA+WB+WC+WD+WE,S=SA+SB+SC+SD+SE,Wi指五个子块各自的权重,Si指五个子块在当前帧中的投射块与丢失的相交面积,MVi指五个子块各自的后向运动矢量。
d)如果五个子块在当前帧中的投射块与丢失子块均没有相交,丢失子块的最终前向运动矢量直接采用映射子块的前向运动矢量;
e)在得到丢失子块的前向运动矢量后,通过1/4像素插值得到丢失子块的预测像素值;
f)循环步骤a)到步骤f),直到丢失宏块的各子块全部被恢复。
全文摘要
一种自适应误码掩盖方法,当码流发生错误时,检测是否发生场景切换;对发生了场景切换的,采用空域掩盖方法;对未发生场景切换的,进行下一步;根据错误帧的编码类型采用相应的时域误码掩盖方法对于I帧,采用前向运动矢量估计法进行恢复,对于P帧,采用P帧时域掩盖方法进行恢复;将经过正常解码及错误隐蔽的图像数据送入显示缓存。采用本发明的方法,通过对不同类型帧的场景切换检测,并根据检测结果自适应地采取空域或时域误码掩盖方法,解决场景切换下传统误码掩盖方法带来的像素错乱问题,得到较高质量的重建图像,计算量小,可以满足实时性的需求,具有较强的实用价值。
文档编号H04N7/68GK101355708SQ20071007540
公开日2009年1月28日 申请日期2007年7月25日 优先权日2007年7月25日
发明者黄晓红, 于培松, 宁 王, 峰 刘, 栋 胡, 戟 张 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1