图像帧的掩盖方法与装置转让专利

申请号 : CN200710120226.5

文献号 : CN101370145B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 左雯陈睿王宁刘峰朱秀昌睢世晨

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种图像帧的掩盖方法,涉及图像帧处理中的整帧掩盖技术,为解决目前的整帧掩盖效果不佳而提出,为解决上述问题,采用的方案为:图像帧的掩盖方法,包括:检测到图像帧丢失时,计算丢失帧的前一帧中每个宏块的运动矢量,判断宏块的运动矢量是否超过阈值,若超过则根据宏块中各块的运动矢量将所述块映射到丢失帧中;否则,估算当前宏块中所有像素点的前向运动矢量,根据像素点的前向运动矢量将所述像素点映射到丢失帧中。本发明同时公开了一种实现上述方法的装置。利用本发明方法恢复的图像质量较高,且计算复杂度不高,能满足实时性的需求,可广泛应用于移动电视、手机电视、视频会议、视频电视中,具有较高的实用价值。

权利要求 :

1.一种图像帧的掩盖方法,其特征在于,该方法包括:

检测到图像帧丢失时,计算丢失帧的前一帧中每个宏块的运动矢量,判断宏块的运动矢量是否超过阈值,若超过则根据宏块中各块的运动矢量将所述块映射到丢失帧中;否则,估算当前宏块中所有像素点的前向运动矢量,根据像素点的前向运动矢量将所述像素点映射到丢失帧中;

所述根据像素点的前向运动矢量将所述像素点映射到丢失帧中,包括:判断像素点的前向运动矢量是否为0,若是则不映射该像素点;否则判断待映射像素点是否映射到丢失帧的整像素点,若是则直接映射所述像素点,否则将所述像素点映射到丢失帧中原映射点最临近的整像素点;

查找映射后丢失帧中未映射区域及重叠映射区域,对重叠映射像素点的色度和亮度求平均后作为该像素点的色度和亮度;对于未映射区域,由外至内用相邻像素点对未映射像素点进行插值补偿。

2.根据权利要求1所述的图像帧的掩盖方法,其特征在于,所述估算当前宏块中所有像素点的前向运动矢量具体是采用光流场方程进行估算的。

3.根据权利要求2所述的图像帧的掩盖方法,其特征在于,所述计算丢失帧的前一帧中每个宏块的运动矢量,包括:确定宏块中各块的运动矢量,各个块的运动矢量平均值即为宏块的运动矢量。

4.一种图像帧的掩盖装置,其特征在于,该装置包括:

丢失帧检测单元,用于检测图像帧是否丢失;

宏块运动矢量计算单元,用于在丢失帧检测单元检测到图像帧丢失时计算丢失帧的前一帧中每个宏块的运动矢量;

运动矢量判断单元,用于判断宏块的运动矢量是否超过阈值,若超过则触发块映射单元;否则触发像素点前向运动矢量估算单元;

块映射单元,用于根据宏块中各块的运动矢量将所述块映射到丢失帧中;

像素点前向运动矢量估算单元,用于估算宏块中所有像素点的前向运动矢量;以及像素点映射单元,根据像素点前向运动矢量估算单元估算的像素点的前向运动矢量将所述像素点映射到丢失帧中;

所述像素点映射单元根据像素点的前向运动矢量将所述像素点映射到丢失帧中,包括:判断像素点的前向运动矢量是否为0,若是则不映射该像素点;否则判断待映射像素点是否映射到丢失帧的整像素点,若是则直接映射所述像素点,否则将所述像素点映射到丢失帧中原映射点最临近的整像素点;

未映射及重叠映射区域确定单元,用于查找映射后丢失帧中未映射区域及重叠映射区域;

重叠像素点处理单元,用于对重叠映射像素点的色度和亮度求平均后作为该像素点的色度和亮度;以及未映射像素点处理单元,用于由外至内用相邻像素点对未映射像素点进行插值补偿。

5.根据权利要求4所述的图像帧的掩盖装置,其特征在于,所述像素点前向运动矢量估算单元估算当前宏块中所有像素点的前向运动矢量具体是采用光流场方程进行估算的。

6.根据权利要求5所述的图像帧的掩盖装置,其特征在于,所述宏块运动矢量计算单元计算丢失帧的前一帧中每个宏块的运动矢量,包括:确定宏块中各块的运动矢量,各个块的运动矢量平均值即为宏块的运动矢量。

说明书 :

技术领域

本发明涉及图像帧处理中的整帧掩盖技术,尤其涉及一种图像帧的掩盖方法与装置。

背景技术

现在广泛应用的图像视频压缩标准非常有效地压缩了图像数据,节约了图像的传输带宽。压缩数据在实际信道中传输时不可避免地会遇到各种噪声和干扰,常常出现传输误码。为了消除和减小传输误码对重建图像质量的影响,往往可以采取多种技术手段来进行误码消除,如前向纠错编码、误码控制编码、遇错重传、误码掩盖等等。其中,基于图像后处理技术的误码掩盖是一种只利用解码端信息进行错误掩盖的技术。当解码器发现误码时,它利用图像序列中残存的各种空间的、时间的冗余特性尽可能“恢复”原图像,改善观察者的主观视觉效果。由于这种技术和编码端无关,不占用额外的传输带宽,可以和编码标准无关,因而它在实际中有很大的应用,尤其是应用在传输观赏图像的情况下。
传统误码掩盖方法可在空域、时域和频域而实现,其中,时域误码掩盖主要利用可靠相邻块的运动矢量(MV,Motion Vector)在前一帧利用块匹配或边界匹配准则确定丢失块的MV;空域误码掩盖主要利用受损块周围有效信息来恢复当前块;频域误码掩盖主要利用周围有效宏块的离散余弦变换(DCT,Discrete Cosine Transform)系数估计受损块的DCT系数。在出现大面积损坏或整幅图像丢失时,周围可用的有效信息较少甚至根本没有,如果只采用简单的替代掩盖方法,将会导致误码扩散、延迟。特别是整帧丢失时,上述传统掩盖方法不再适合于整帧的掩盖。
针对整帧丢失的情况,目前的掩盖方法一般有三种,第一种是直接拷贝前一帧相应宏块来恢复当前丢失帧,即零运动矢量拷贝;第二种是基于块的掩盖方法(CAB,Concealment Algorithm Based Block),该方法先估计出丢失帧每个块的运动矢量,然后根据估计出的块的MV在前一帧进行运动补偿,并将补偿块拷贝到丢失帧中对应位置。第三种是在运动不剧烈时,根据光流场(OP,Optical Flow)方程假设信息恒定,这种方法称为基于像素的掩盖(CAP,Concealment Algorithm Based Pixel)方法,先估计出待映射像素的运动矢量,然后根据像素的运动矢量将其映射到丢失帧中。
上述第一种方法,若图像中物体转动,将导致图像掩盖的不精确,这将造成误差扩散,使得掩盖后的图像比实际图像的运动有所延迟。尤其是运动剧烈的视频序列,这种方法的掩盖效果更不理想。当出现连续多个整帧丢失时,该方法等效于重复拷贝丢失帧的前一帧,直到接收到一个新的帧内编码帧为止。上述第二种方法,在图像运动剧烈时简单有效,信噪比也较高,计算量不大,但是块效应比较明显。上述第三种方法,在图像运动较小时掩盖效果较好,方块效应也较小,但是采用分像素精度运动矢量的编码标准中,存在分像素精度与整像素失配,以及映射像素重叠,某些像素点没有映射的问题。
上述三种整帧掩盖方法虽然均可实现整帧的掩盖,但各存在缺点,帧掩盖效果不佳。

发明内容

有鉴于此,本发明的主要目的在于提供一种图像帧的掩盖方法与装置,以在整帧丢失时提高丢失帧的掩盖效果。
为达到上述目的,本发明的技术方案是这样实现的:
一种图像帧的掩盖方法,包括:
检测到图像帧丢失时,计算丢失帧的前一帧中每个宏块的运动矢量,判断宏块的运动矢量是否超过阈值,若超过则根据宏块中各块的运动矢量将所述块映射到丢失帧中;否则,估算当前宏块中所有像素点的前向运动矢量,根据像素点的前向运动矢量将所述像素点映射到丢失帧中。
其中,所述根据像素点的前向运动矢量将所述像素点映射到丢失帧中,包括:
判断像素点的前向运动矢量是否为0,若是则不映射该像素点;否则判断待映射像素点是否映射到丢失帧的整像素点,若是则直接映射所述像素点,否则将所述像素点映射到丢失帧中原映射点最临近的整像素点。
其中,该方法还包括:
查找映射后丢失帧中未映射区域及重叠映射区域,对重叠映射像素点的色度和亮度求平均后作为该像素点的色度和亮度;对于未映射区域,由外至内用相邻像素点对未映射像素点进行插值补偿。
其中,所述估算当前宏块中所有像素点的前向运动矢量具体是采用光流场方程进行估算的。
其中,所述计算丢失帧的前一帧中每个宏块的运动矢量,包括:
确定宏块中各块的运动矢量,各个块的运动矢量平均值即为宏块的运动矢量。
一种图像帧的掩盖装置,包括:
丢失帧检测单元,用于检测图像帧是否丢失;
宏块运动矢量计算单元,用于在丢失帧检测单元检测到图像帧丢失时计算丢失帧的前一帧中每个宏块的运动矢量;
运动矢量判断单元,用于判断宏块的运动矢量是否超过阈值,若超过则触发块映射单元;否则触发像素点前向运动矢量估算单元;
块映射单元,用于根据宏块中各块的运动矢量将所述块映射到丢失帧中;
像素点前向运动矢量估算单元,用于估算宏块中所有像素点的前向运动矢量;以及
像素点映射单元,根据像素点前向运动矢量估算单元估算的像素点的前向运动矢量将所述像素点映射到丢失帧中。
其中,所述像素点映射单元根据像素点的前向运动矢量将所述像素点映射到丢失帧中,包括:
判断像素点的前向运动矢量是否为0,若是则不映射该像素点;否则判断待映射像素点是否映射到丢失帧的整像素点,若是则直接映射所述像素点,否则将所述像素点映射到丢失帧中原映射点最临近的整像素点。
其中,该装置还包括:
未映射及重叠映射区域确定单元,用于查找映射后丢失帧中未映射区域及重叠映射区域;
重叠像素点处理单元,用于对重叠映射像素点的色度和亮度求平均后作为该像素点的色度和亮度;以及
未映射像素点处理单元,用于由外至内用相邻像素点对未映射像素点进行插值补偿。
其中,所述像素点前向运动矢量估算单元估算当前宏块中所有像素点的前向运动矢量具体是采用光流场方程进行估算的。
其中,所述宏块运动矢量计算单元计算丢失帧的前一帧中每个宏块的运动矢量,包括:
确定宏块中各块的运动矢量,各个块的运动矢量平均值即为宏块的运动矢量。
本发明根据图像帧中每个宏块的运动矢量确定该宏块的映射方式,当宏块的运动矢量超出设定阈值时,采用基于块的掩盖方式来映射该宏块;未超出阈值时采用基于像素的掩盖方式来映射该宏块,并对映射至非整像素点的像素进行归整处理。所有宏块均映射完毕后,再对丢失帧中未映射区域进行插值补偿、对重叠映射区域进行像素求平均。利用本发明方法恢复的图像质量较高,且计算复杂度不高,能满足实时性的需求,可广泛应用于恢复整帧的环境,如移动电视、手机电视、视频会议、视频电视等等,具有较高的实用价值。

附图说明

图1为本发明图像帧的掩盖装置组成结构示意图;
图2为基于块的映射方式示意图;
图3为本发明图像帧的掩盖装置的另一组成结构示意图;
图4为本发明图像帧的掩盖方法的流程图。

具体实施方式

本发明的核心思想是:针对目前整帧丢失而恢复不佳的状况,本发明根据图像帧中宏块的运动矢量而确定其映射方式,在宏块运动矢量超出设定阈值时采用基于块的映射方式映射该宏块;未超出阈值时采用基于像素的映射方式映射该宏块。本发明根据宏块的运动矢量选择适合的映射方式,可保证所恢复图像的质量。当宏块映射完成后,再对未映射区域进行插值补偿,对重叠的映射区域进行像素点求平均,进一步提升了所恢复图像的质量。以下结合附图对本发明进行详细描述。
图1为本发明图像帧的掩盖装置组成结构示意图,如图1所示,本发明的图像帧的掩盖装置包括丢失帧检测单元10、宏块运动矢量计算单元11、运动矢量判断单元12、块映射单元13、像素点前向运动矢量估算单元14和像素点映射单元15,其中,丢失帧检测单元10用于检测图像帧是否丢失。作为一种实现手段,丢失帧检测单元10在解码图像帧时通过判断帧号是否连续来确定图像帧是否丢失,若解码的帧号连续则没有帧丢失,否则即丢失了图像帧。
宏块运动矢量计算单元11在丢失帧检测单元10检测到图像帧丢失时,计算丢失帧的前一帧中每个宏块的运动矢量。在解码图像帧时,可确定每个块的运动矢量,本发明对宏块中所有块的运动矢量求均值作为该宏块的运动矢量。这里,块的大小可为可以是16×16、16×8、8×16、8×8、8×4、4×8、4×4,上述表示块大小的式子中每个因子的单位为像素。
运动矢量判断单元12用于判断宏块的运动矢量是否超过阈值,若超过阈值则触发块映射单元13,否则触发像素点前向运动矢量估算单元14。本领域技术人员应当理解,阈值的设定是综合考虑了图像帧的编码方式、传输图像帧的信道质量、用户的图像质量要求等因素而确定的,不同的应用环境下阈值设定值是不同的。
块映射单元13用于根据宏块中各块的运动矢量将所述块映射到丢失帧中。即采用基于块的映射方式映射每个宏块,利用丢失帧的前一帧与当前块相同坐标位置的块运动矢量作为丢失帧中的块的运动矢量,然后以前一帧作为参考帧进行1/4像素精度插值,按行的顺序将预测补偿后的块拷贝到丢失图像帧中,以便恢复整帧图像。图2为基于块的映射方式示意图,如图2所示,t帧为当前丢失帧,t-1帧和t-2帧为t帧之前的两帧,假设丢失帧t的某一块坐标为(i,j),其MV为即认为是其前一帧相同位置的块的MV,即MVi,jt=MVi,jt-1。通过将宏块分为不同大小的块来进行映射,以便消除明显的错位现象;块的大小可为可以是16×16、16×8、8×16、8×8、8×4、4×8、4×4。在最后阶段对映射块进行滤波,消除运动矢量不精确导致的方块效应。当图像中的运动物体运动不剧烈时,也可以宏块为单位来掩盖丢失帧。本领域技术人员应当理解,基于块的掩盖方式为较成熟的整帧掩盖算法,本发明并不限于上述的掩盖方式。
像素点前向运动矢量估算单元14用于估算宏块中所有像素点的前向运动矢量。
像素点映射单元15根据像素点前向运动矢量估算单元14估算的像素点的前向运动矢量将所述像素点映射到丢失帧中。具体包括:判断像素点的前向运动矢量是否为0,若是则不映射该像素点;否则判断待映射像素点是否映射到丢失帧的整像素点,若是则直接映射所述像素点,否则将所述像素点映射到丢失帧中原映射点最临近的整像素点。
以下说明本发明像素点前向运动矢量估算单元14和像素点映射单元15是如何实现基于像素映射丢失帧的。
本发明根据光流场方程估计丢失帧像素的运动矢量,即首先分析图像帧序列中正确接收的帧即t-1帧之前的帧,目的是了解哪些像素可以用来预测t-1帧中的像素,同时估计t-1帧中哪些像素将根据OF方程估计的前向运动矢量FMV映射到t帧中。当t-1帧的参考帧是t-2帧时,有其中,FMVi,j,Ht-1为t-1帧中像素点xi,jt-1的前向运动矢量,Vi,j,Ht-1为t-1帧中像素点xi,jt-1的运动矢量。当t-1帧的参考帧是t-2帧之前帧时,则其中,Ri,jt-1为t-1帧的参考帧的帧号。
则有:
vH(sH,sv,t)=F[x(sH,sV,t-1),...,x(sH,sV,t-L-1),vH(sH,sV,t-1)]
vV(sH,sv,t)=F[x(sH,sV,t-1),...,x(sH,sV,t-L-1),vV(sH,sV,t-1)](1)
x(sH,sv,t)=x(sH-vH(sH,sv,t),sV-vv(sH,sv,t),t-1)
由于t-1帧已正确解码,根据方程(1)估计的FMV将t-1帧的像素映射到t帧中。若说明像素点xi,jt-1属于帧内编码宏块,则不映射该像素点,对帧内编码宏块的像素点进行标记。方程(1)中,L为自然数,x(sH,sV,t)为丢失帧像素点的亮度信息,相应的MV丢失,能接收到的正确帧x(sH,sV,t-1)为前一帧亮度信息,保存在参考缓冲区帧x(sH,sV,t-1-M)中,M=1,2,...,L。sH、sV分别为丢失帧中待映射像素点的坐标值;vH(sH,sV,t-1)和vv(sH,sV,t-1)分别为正确接收帧相应像素点的水平和垂直运动矢量,水平运动矢量vH(sH,sV,t)、垂直运动矢量vv(sH,sV,t)和亮度信息x(sH,sV,t)是丢失帧需估计的信息。本领域技术人员应当理解,利用光流场方程估计丢失帧像素的运动矢量是容易实现的。
对于FMVi,jt-1不为0的像素点,需确定其映射到丢失帧中的坐标,本发明采用1/4像素精度进行处理。
若假设t-1帧中某块左上角顶点的坐标为(x,y),其MV为(vx,vy)。因为MV是1/4像素精度,所以基于整像素的坐标值要乘4,即用长和宽都是原始图像四倍的图像来表达理论上的1/4像素坐标,即在原来每两个像素间插入三个像素,最后得出的结果为基于1/4像素的坐标。则点(x,y)在t-2帧中的1/4像素精度坐标为(x×4-vx,y×4-vy),该点根据前向运动矢量映射到t帧中点(x′,y′)处,则(x′,y′)=(x×4+vx,y×4+vy)。但是在图像帧中并不需要一个位于1/4坐标处的像素值,而是以整数坐标像素值显示图像,故需要根据1/4像素点插出整像素点。因此,首先要确定与t帧点(x′,y′)最邻近的整像素点坐标位置,以得到最终显示的整数像素值。
本发明对MV为(vx,vy)的归整方式如下:
vx1=vx-vx%4    (vx%4<=2)
vx1=vx+1        (vx%4=3)
vy1=vy-vy%4    (vy%4<=2)
vy1=vy+1        (vy%4=3)
其中MV1(vx1,vy1)为MV归整后的运动矢量,%表示取模运算,这里还需注意MV和MV1为前向运动矢量,与t帧中的运动矢量反向。
假设t-1帧中某块的左上角坐标为(x,y),运动矢量MV为(-4,-2),在t-2帧相应的1/4像素坐标位置为(4x-4,4y-2),则根据光流场方程在t帧中映射的1/4像素位置为(x′,y′)=(4x+4,4y+2)。在t帧中要显示整像素位置的像素值,因此,需要根据映射位置的像素值插出整像素位置的像素值。将(4x+4,4y+2)除以4归一到整像素位置(x+1,y),计算出两者的距离差,(x′,y′)的像素值实际上是t帧中点(x,y)的像素值,归一整像素位置的像素值实上是t帧中点(x,y)加上距离差的像素值即(4x,4y-2)。这样,本映射方法充分利用了前帧的信息,且改善了块效应。
将归整后的整像素位置像素点作为待求点,FMV指向的象素点作为已知点,进行插值运算。插值要用到相邻的六个点,本发明按宏块为单位进行插值。宏块边界用相同值扩展后再进行插值。具体插值方法与H.264的标准基本一致。根据分像素点位置,1/2像素点用6抽头滤波器进行插值,1/4像素点是邻近两象素点均值,这里不再赘述。
本发明中,对丢失帧的前一帧中宏块的处理方式,可采用并行或串行处理。
图3为本发明图像帧的掩盖装置的另一组成结构示意图,如图3所示,本示例中的图像帧的掩盖装置是在图2的基础上实现的,与图2所示的图像帧的掩盖装置相比,还包括:未映射及重叠映射区域确定单元16、重叠像素点处理单元17和未映射像素点处理单元18,其中,未映射及重叠映射区域确定单元16用于查找映射后丢失帧中未映射区域及重叠映射区域。这里,未映射区域及重叠映射区域可能是块或像素点。
重叠像素点处理单元17用于对重叠映射像素点的色度和亮度求平均后作为该像素点的色度和亮度。如果是两个像素点重叠,直接对其求平均即可。而如果出现多个像素映射到同一个像素点,采用循环求平均的方式,将最终的平均值赋值给丢失像素点。
未映射像素点处理单元18用于由外至内用相邻像素点对未映射像素点进行插值补偿。若某像素点相邻四个像素点均有映射,则用其相邻四个像素点插值补偿,当未映射区域较大时,由最外侧与映射像素点相邻的像素点开始进行插值补偿。本发明中,也可采用空域平均加权像素插值算法来实现插值补偿,其对于色差变化不大的区域掩盖效果较好,但在黑白背景处有掩盖的痕迹。
图4为本发明图像帧的掩盖方法的流程图,如图4所示,本发明的图像帧的掩盖方法包括以下步骤:
步骤401:检测到图像帧丢失时,计算丢失帧的前一帧中每个宏块的运动矢量。这里,根据解码图像帧时获取的块的运动矢量来计算其平均运动矢量,从而作为宏块的运动矢量。
步骤402:判断宏块的运动矢量是否超过设定阈值,若是则进入步骤403,否则进入步骤404。关于阈值的设定,可参见前文本发明图像帧的掩盖装置部分的相关描述,这里不再赘述。
步骤403:根据宏块中各块的运动矢量将所述块映射到丢失帧中。本步骤即为基于块的映射方式实现宏块的映射补偿,具体可参见前文本发明图像帧的掩盖装置部分的相关描述,这里不再赘述。
步骤404:估算当前宏块中所有像素点的前向运动矢量,根据像素点的前向运动矢量将所述像素点映射到丢失帧中。本步骤即为基于像素的映射方式,与现有的基于像素的映射方式相比,作了改进,其映射效果更佳。具体可参见前文本发明图像帧的掩盖装置部分的相关描述,这里不再赘述。
步骤405:查找映射后丢失帧中未映射区域及重叠映射区域,对重叠映射像素点的色度和亮度求平均后作为该像素点的色度和亮度;对于未映射区域,由外至内用相邻像素点对未映射像素点进行插值补偿。本步骤为优选步骤,是对映射后的丢失图像帧作了优化处理,使恢复图像帧质量更佳。具体可参见前文本发明图像帧的掩盖装置部分的相关描述,这里不再赘述。
本发明与传统的基于块或者基于像素的整帧掩盖方法相比,克服了两者固有的缺点,通过运动检测自适应地选择相应的掩盖方法,将二者的优点结合起来,所恢复图像帧的质量较高。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。