CN104519358B - 一种对i条带丢失或误码进行恢复的方法和装置 - Google Patents
一种对i条带丢失或误码进行恢复的方法和装置 Download PDFInfo
- Publication number
- CN104519358B CN104519358B CN201310452972.XA CN201310452972A CN104519358B CN 104519358 B CN104519358 B CN 104519358B CN 201310452972 A CN201310452972 A CN 201310452972A CN 104519358 B CN104519358 B CN 104519358B
- Authority
- CN
- China
- Prior art keywords
- frame
- bands
- macro block
- error code
- difference
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明揭示了一种对I条带丢失或误码进行恢复的方法和装置。该方法包括:当检测到视频码流某一帧出现I条带丢失或宏块误码时,计算本帧平滑度和本帧与前帧的差异。如果本帧平滑度大于或等于本帧与前帧的差异,则采用时间相关性办法进行恢复;如果本帧平滑度小于本帧与前帧的差异,则采用空间相关性办法进行恢复。采用该方法或装置,当I条带丢失或误码时,在不增加额外带宽和网络延迟的条件下,解码端能够自动适配最优方法对视频图像进行恢复,最大限度减少由于网络传输错误等导致的I条带丢失或误码对图像质量的影响。
Description
技术领域
本发明涉及视频解码技术,特别是涉及一种对I条带丢失或误码进行恢复的方法和装置。
背景技术
随着会议电视、网络流媒体、数字电视广播等视频通信业务的广泛兴起,人们对于视频图像的质量要求越来越高。但在通信过程中,由于信道拥塞及干扰等网络传输问题,会造成信息的丢失和误码,尤其在通过无线或者窄带信道进行通信时,这种情况更易发生。而且当前大量的视频通信业务均采用高压缩技术对视频信息进行编码处理,经压缩编码处理过的信息前后相关性很强,如果发生丢包和误码,在解码时不仅会对本帧视频图像产生破坏,而且会将错误传导到后面的帧中,导致视频图像质量下降,严重影响用户体验。
此时,视频通信系统需要对丢包和误码的数据进行相应地恢复。解码端的后向纠错机制,即利用视频图像的编码数据冗余进行错误隐藏是手段之一,其优点是不增加额外带宽,也不会带来网络延迟。
视频图像的压缩编码方式可以分为帧内预测编码和帧间预测编码。帧内编码是利用相邻像素值之间的相关性进行压缩编码。帧间编码是利用连续图像序列帧间的相关性,通过运动估计的预测编码方法来消除视频图像的时间冗余。压缩编码后的视频图像由图像序列构成;图像序列可以划分为一系列图像组;图像组包括若干个I、P、B等三种图像,I图像即帧内(Intra)图像,是关键帧,采用帧内编码,P图像是预测帧,采用帧间编码,B图像是双向预测帧。假设图像组只取I帧和P帧,且每隔5个P帧取一个I帧,则每个图像组可排成IPPPPI…序列,它的排列顺序将会一直维持到视频结束。图像组第一个图像叫做IDR图像,IDR图像都是I图像,每个图像组只能有一个IDR图像,IDR图像之后的图像永远不会引用IDR图像之前的图像数据来解码。如果视频图像分辨率较高(720p以上),通常将一个编码图像划分为多个条带进行编码,并在传输时将每个条带独立封装为一个数据包。与图像分类相似,条带也分为I条带、P条带、B条带。条带由若干宏块排列而成,I条带则只包含I宏块。
视频图像分辨率较高时,IDR图像的数据量相应较大,I条带数据包在视频码流中所占比例相应较高,丢失及误码发生的可能性也就相应增大。I条带误码是指一个或多个I宏块发生误码,容易导致块效应,而且也会影响整个图像组。I条带丢失将会对本帧图像造成影响,进而影响整个图像组。
目前,在解码端对I条带丢失或宏块误码进行恢复的方法,一般是利用空间相关性通过帧内插值的方法对错误进行隐藏。这种方法是基于错误宏块与其相邻宏块间具有平滑性(与相邻宏块变化不大)的假设,对于单个宏块错误的情况具有较好的恢复效果,但对于连续和大片宏块错误的情况,恢复效果不佳。原因在于只有边沿错误宏块能够找到与其空间相关性较大的宏块,而内部错误宏块不易找到与其相关性大的宏块,以至内部错误宏块的恢复效果无法满足图像质量要求。同时,对于帧间差异小而帧内平滑性差的情况,采用空间相关性办法效果不佳,而采用时间相关性恢复方法能取得更好的恢复效果。
发明内容
(一)要解决的技术问题
本发明的目的是为了解决现有技术在出现I条带丢失或宏块误码时,不能根据I帧特性采用最佳匹配恢复方法的问题。
(二)技术方案
为了解决上述问题,根据本发明的一方面,提出了一种对I条带丢失或误码进行恢复的方法,包括以下步骤:
S1:检测接收到的视频码流的I帧,若有I条带丢失,则该I条带所在的帧为本帧,进入步骤S2,否则检测该I条带是否存在误码宏块,若是,则该I条带所在的帧为本帧,进入步骤S2;
S2:计算本帧的平滑度以及本帧与前帧的差异;
S3:如果本帧的平滑度大于或等于本帧与前帧的差异,则采用时间相关性办法进行恢复;如果本帧的平滑度小于本帧与前帧的差异,则采用空间相关性办法进行恢复。
优选地,当步骤S1中检测到I条带存在误码宏块时,
步骤S2中,所述计算本帧的平滑度包括:找到误码宏块上、下、左、右、左上、左下、右上、右下相邻宏块,计算所述相邻宏块的像素值均方差,该均方差即为本帧的平滑度;
和/或,
步骤S2中,所述计算本帧与前帧的差异包括:找到本帧中误码宏块的上、下、左、右、左上、左下、右上、右下八个相邻宏块,然后找到前帧中与误码宏块位置相同的宏块的上、下、左、右、左上、左下、右上、右下相邻宏块,计算本帧和前帧对应的上、下、左、右、左上、左下、右上、右下相邻宏块的像素值均方差,该均方差即为本帧与前帧的差异。
优选地,当步骤S1中检测到I条带丢失时,
步骤S2中,所述计算本帧的平滑度包括:如果之前没有正确接收的I条带,则丢失I条带的平滑度设定为无穷大;如果之前有正确接收的I条带,则计算前一个正确接收的I条带的所有宏块的像素值均方差,该均方差即为本帧的平滑度;
和/或,
步骤S2中,所述计算本帧与前帧的差异包括:如果本帧在丢失的I条带之前没有正确接收的I条带,则本帧与前帧的差异设定为0;如果本帧在丢失的I条带之前有正确接收的I条带,则计算前一正确接收的I条带的所有宏块与前帧对应位置的I条带的所有宏块的像素值均方差,该均方差即为本帧与前帧的差异。
优选地,当步骤S1检测到I条带存在误码宏块时,
若前帧是I帧,步骤S3具体为:如果本帧的平滑度大于或等于本帧与前帧的差异,则拷贝前帧与误码宏块位置相同的宏块数据来恢复误码宏块,如果本帧的平滑度小于本帧与前帧的差异,则采用帧内插值算法恢复误码宏块;
若前帧是P帧,步骤S3具体为:如果本帧的平滑度大于或等于本帧与前帧的差异,则采用边界匹配算法来恢复误码宏块,如果本帧的平滑度小于本帧与前帧的差异,则采用帧内插值算法恢复误码宏块。
优选地,所述采用边界匹配算法来恢复本帧的误码宏块包括:
确定运动矢量集,运动矢量集包括相邻宏块可用运动矢量、相邻宏块运动矢量的中值、相邻宏块运动矢量的均值、前帧中同一位置宏块的运动矢量、零矢量;
对应误码宏块,采用边界匹配准则来从运动矢量集中选出最佳运动矢量;
根据最佳运动矢量对误码宏块做运动补偿,然后做去方块滤波,最后得到恢复的宏块。
优选地,当步骤S1检测到I条带丢失时,
若前帧是I帧,则步骤S3具体为:如果本帧的平滑度大于或等于本帧与前帧的差异,则拷贝前帧与丢失的I条带位置相同的I条带数据来恢复本帧丢失的I条带,如果本帧的平滑度小于本帧与前帧的差异,则采用帧内插值算法恢复本帧丢失的I条带;
若前帧是P帧,则步骤S3具体为:如果本帧的平滑度大于或等于本帧与前帧的差异,则采用边界匹配算法来恢复本帧丢失的I条带,如果本帧的平滑度小于本帧与前帧的差异,则采用帧内插值算法恢复本帧丢失的I条带。
优选地,所述采用帧内插值算法恢复本帧丢失的I条带包括:
采用双线性插值算法,首先对丢失I条带的边缘丢失宏块,利用本帧中相邻的宏块进行恢复,然后对于丢失I条带中与已恢复宏块相邻的丢失宏块,利用已恢复宏块进行恢复,一直进行到丢失的I条带的所有宏块都已经恢复。
根据本发明的一方面,提出了一种对I条带丢失或误码进行恢复的装置,包括:
检测模块,检测接收到的视频码流的I帧,若有I条带丢失,则该I条带所在的帧为本帧,否则检测该I条带是否存在误码宏块,若是,则该I条带所在的帧为本帧;
计算模块,计算检测模块检测到的本帧的平滑度以及本帧与前帧的差异;
恢复模块,接收计算模块的计算结果,如果本帧的平滑度大于或等于本帧与前帧的差异,则采用时间相关性办法进行恢复;如果本帧的平滑度小于本帧与前帧的差异,则采用空间相关性办法进行恢复。
优选地,其中计算模块包括第一计算单元和第二计算单元;
当检测模块检测到I条带存在误码宏块时,本帧的平滑度和本帧与前帧的差异由第一计算单元计算:
第一计算单元计算本帧的平滑度包括:找到误码宏块上、下、左、右、左上、左下、右上、右下相邻宏块,计算所述相邻宏块的像素值均方差,该均方差即为本帧的平滑度;
第一计算单元计算本帧与前帧的差异包括:找到本帧中误码宏块的上、下、左、右、左上、左下、右上、右下八个相邻宏块,然后找到前帧中与误码宏块位置相同的宏块的上、下、左、右、左上、左下、右上、右下相邻宏块,计算本帧和前帧对应的上、下、左、右、左上、左下、右上、右下相邻宏块的像素值均方差,该均方差即为本帧与前帧的差异;
当检测模块检测到I条带丢失时,本帧的平滑度和本帧与前帧的差异由第二计算单元计算:
第二计算单元计算本帧的平滑度包括:如果之前没有正确接收的I条带,则丢失I条带的平滑度设定为无穷大;如果之前有正确接收的I条带,则计算前一个正确接收的I条带的所有宏块的像素值均方差,该均方差即为本帧的平滑度;
第二计算单元计算与前帧的差异包括:如果本帧在丢失的I条带之前没有正确接收的I条带,则本帧与前帧的差异设定为0;如果本帧内在丢失的I条带之前有正确接收的I条带,则计算前一正确接收的I条带的所有宏块与前帧对应位置的宏块的像素值均方差,该均方差即为本帧与前帧的差异。
优选地,其中恢复模块包括第一恢复单元和第二恢复单元;
当检测模块检测到I条带存在误码宏块时,误码宏块由第一恢复单元恢复;当检测模块检测到I条带丢失时,丢失的I条带由第二恢复单元恢复;
第一恢复单元检测前帧是I帧还是P帧:若前帧是I帧,且计算模块计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第一恢复单元拷贝前帧与误码宏块位置相同的宏块数据来恢复本帧的误码宏块,如果计算模块计算的本帧的平滑度小于本帧与前帧的差异,则第一恢复单元采用帧内插值算法恢复本帧的误码宏块;若前帧是P帧,且计算模块计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第一恢复单元采用边界匹配算法来恢复本帧的误码宏块,如果计算模块计算得到的本帧的平滑度小于本帧与前帧的差异,则第一恢复单元采用帧内插值算法恢复本帧的误码宏块;
第二恢复单元检测前帧是I帧还是P帧:若前帧是I帧,且计算模块计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第二恢复单元拷贝前帧与丢失的I条带位置相同的I条带数据来恢复本帧丢失的I条带,如果本帧的平滑度小于本帧与前帧的差异,则第二恢复单元采用帧内插值算法恢复本帧丢失的I条带;若前帧是P帧,且本帧的平滑度大于或等于本帧与前帧的差异,则第二恢复单元采用边界匹配算法来恢复本帧丢失的I条带,如果本帧的平滑度小于本帧与前帧的差异,则第二恢复单元采用帧内插值算法恢复本帧丢失的I条带。
(三)有益效果
当解码端发现I条带丢失或误码时,本发明提供的方法或装置首先计算出错帧的帧内平滑度以及与前帧的帧间差异,然后依据判定条件,相应采用空间相关算法或时间相关算法对于丢失的I条带和误码宏块进行恢复,计算复杂度低,由于根据I帧的特性而采用相应的恢复方法,因此对I条带丢失和宏块误码的恢复效果好。同时,采用该方法或装置,当I条带丢失或误码时,在不增加额外带宽和网络延迟的条件下,解码端能够自动适配最优方法对视频图像进行恢复,最大限度减少由于网络传输错误等导致的I条带丢失或误码对图像质量的影响。由于H.261、H.263、H.264和MPEG2、MPEG4等编码标准均采用I帧和P帧来对视频进行压缩,所以本发明适用范围涵盖以上这些编码标准。
附图说明
图1示出根据本发明对I条带丢失或误码进行恢复的方法的实施例;
图2示出一个4×4的帧内误码宏块和其边界;
图3示出误码宏块与周边八个相邻宏块的关系以及与前帧中对应宏块的关系;
图4示出根据本发明的对I条带丢失或误码进行恢复的方法的一个较佳实施例的流程图。
图5示出根据本发明的对I条带丢失或误码进行恢复的装置的实施例的组成框图。
具体实施方式
下面结合附图和实施例对本发明的实施方式作进一步详细描述。以下实施例用于说明本发明,但不能用来限制本发明的范围。
图1示出了根据本发明实施例的对I条带丢失或误码进行恢复的方法,包括如下步骤:
S1:检测误码宏块和I条带丢失。具体如下:
检测接收到的视频码流的I帧,若有I条带丢失,则该I条带所在的帧为本帧,进入步骤S2,否则检测该I条带是否存在误码宏块,若是,则该I条带所在的帧为本帧,进入步骤S2,若否,则继续检测下一I条带。
S2:计算本帧的平滑度以及本帧与前帧的差异。具体如下:
一、计算平滑度
1、I条带误码的平滑度
当解码端检测到当前I条带存在误码宏块时,找到误码宏块上、下、左、右、左上、左下、右上、右下相邻宏块,计算相邻宏块的像素值均值和像素值均方差。这个像素值均方差代表了I条带的平滑度。平滑度越小,则误码宏块与相邻宏块间相关性越大;平滑度越大,则误码宏块与相邻宏块间相关性越小。
2、丢失I条带的平滑度
当解码端发现整个I条带丢失时,则丢失的I条带的平滑度通过正确接收的同一帧的前一I条带来计算得到。如果之前没有正确接收的I条带,则丢失I条带的平滑度设定为无穷大;如果之前有正确接收的I条带,则计算前一个正确接收的I条带的宏块均方差,这个均方差代表丢失I条带的平滑度。
二、计算本帧与前帧的差异
1、I条带误码的本帧与前帧的差异
首先找到本帧误码宏块的上、下、左、右、左上、左下、右上、右下的相邻宏块,然后找到前帧与误码宏块位置相同的宏块的上、下、左、右、左上、左下、右上、右下的相邻宏块,计算本帧和前帧的对应宏块的像素值均方差。这个像素值均方差就代表本帧与前帧的差异,均方差越大,说明差异越大;反之,说明差异越小。
2、丢失I条带的本帧与前帧的差异
当解码端发现整个I条带丢失时,则丢失I条带的本帧与前帧差异由正确接收的本帧前一I条带和对应的前帧数据进行比较得到。如果之前没有正确接收的I条带,则丢失I条带的本帧与前帧差异设定为0,代表无差异;如果之前有正确接收的I条带,则计算本帧前一正确接收的I条带与其前帧位置相同的I条带宏块像素值均方差,这个均方差代表丢失I条带的本帧与前帧差异。
S3、选择合适的恢复方法进行恢复。具体如下:
得到误码宏块与相邻宏块的平滑度以及本帧与前帧差异的计算结果后,如果本帧的平滑度大于或等于本帧与前帧的差异,则采用时间相关性办法进行恢复;如果本帧的平滑度小于本帧与前帧的差异,则采用空间相关性办法进行恢复。时间相关性办法采用的算法有边界匹配的运动矢量恢复算法(BMA)、零运动估计算法、运动场内插算法等。空间相关性办法采用的算法有线性内插算法、方向性内插算法、凸集投影法、多纹理方向插值法等。
优选地,根据前帧图像类型选择合适的恢复方法:
1、前帧图像是I帧。如果平滑度大于或等于本帧与前帧差异,说明帧内宏块间的相关性小于等于帧间宏块间的相关性,此时采用直接拷贝前帧对应宏块数据来恢复错误宏块。如果平滑度小于本帧与前帧的差异,说明帧内宏块间的相关性大于帧间宏块间的相关性,此时采用帧内插值算法对错误宏块进行恢复。
2、前帧图像是P帧。如果平滑度大于或等于本帧与前帧的差异,说明帧内宏块间的相关性小于等于帧间宏块间的相关性,此时采用边界匹配算法来恢复错误宏块。如果平滑度小于本帧与前帧的差异,说明帧内宏块间的相关性大于帧间宏块间的相关性,此时采用帧内插值算法对错误宏块进行恢复。
下面具体说明对I条带误码的恢复方法。
在图2中,示出了一个4×4的帧内误码宏块和其边界,黑色方格是误码宏块的像素,白色方格是与误码宏块相邻的边界像素。帧内宏块可以是4×4的I宏块、16×16的I宏块或其他大小的I宏块,这里以4×4的I宏块发生误码为例来说明。当检测到一个4×4的I宏块有误码时,那么需要对它进行恢复。
在图3中,示出误码宏块与周边八个相邻宏块的关系以及与前帧中对应宏块的关系。当检测到I条带有误码宏块时,解码器首先要标记误码宏块,在误码宏块所在帧内搜索与误码宏块相关性较强的上、下、左、右、左上、左下、右上、右下宏块,在前帧中搜索与误码宏块位置相同的宏块的上、下、左、右、左上、左下、右上、右下宏块。
然后计算I条带误码的平滑度。首先对误码宏块上、下、左、右、左上、左下、右上、右下相邻宏块求平均。采用公式(1)来计算误码宏块相邻宏块的均值:
其中,i和j代表误码宏块的左上角像素坐标,Pc代表像素值,N代表丢失块的大小,在图1示出的实例中N为4,Pc(i-1,j+k)表示误码宏块左相邻宏块的像素值,Pc(i-1,j+k+1)表示误码宏块左上相邻宏块的像素值,Pc(i+N,j+k)表示误码宏块右相邻宏块的像素值,Pc(i+N,j+k-1)表示误码宏块右下相邻宏块的像素值,Pc(i+k,j-1)表示误码宏块下相邻宏块的像素值,Pc(i+k-1,j-1)表示误码宏块左下相邻宏块的像素值,Pc(i+k,j+N)表示误码宏块上相邻宏块的像素值,Pc(i+k+1,j+N)表示误码宏块右上相邻宏块的像素值,k从0增加到N-1。
计算误码宏块相邻宏块的均值后,然后计算相邻宏块的均方差,即误码宏块的帧内平滑度,如公式(2)所示:
帧内相邻宏块的均方差代表错误宏块和相邻宏块的变化情况,均方差越大,说明相邻八个方向的宏块变化越剧烈,反之,说明相邻八个方向的宏块越平滑。通过计算帧内误码宏块相邻宏块的均方差可以知道错误宏块的平滑度,以便后面判断是否采用空间相关性办法对错误宏块进行修复。
再计算I条带误码的本帧与前帧的差异。帧间均方差表示前后两帧图像运动剧烈情况,帧间均方差越大,说明前后两帧图像变化比较大,反之,说明前后两帧图像变化比较小。帧间均方差的计算如式(3)所示,其中Pr代表前帧像素值,Pr(i-1,j+k)表示前帧中与误码宏块位置相同的宏块的左相邻宏块的像素值,Pr(i-1,j+k+1)表示前帧中与误码宏块位置相同的宏块的左上相邻宏块的像素值,Pr(i+N,j+k)表示前帧中与误码宏块位置相同的宏块的右相邻宏块的像素值,Pr(i+N,j+k-1)表示前帧中与误码宏块位置相同的宏块的右下相邻宏块的像素值,Pr(i+k,j-1)表示前帧中与误码宏块位置相同的宏块的下相邻宏块的像素值,Pr(i+k-1,j-1)表示前帧中与误码宏块位置相同的宏块的左下相邻宏块的像素值,Pr(i+k,j+N)表示前帧中与误码宏块位置相同的宏块的上相邻宏块的像素值,Pr(i+k+1,j+N)表示前帧中与误码宏块位置相同的宏块的右上相邻宏块的像素值。
最后进行I条带误码的恢复,通过计算得到MSE误码帧内和MSE误码帧间,通过比较可以判定恢复I条带误码宏块所采用的方法。
当MSE误码帧内>=MSE误码帧间,说明本帧误码宏块所对应的帧内平滑度大于或等于本帧与前帧差异,帧内宏块间的变化大于帧间宏块间的变化,此时采用时间相关性办法恢复I条带误码。如果前帧图像是I帧,则拷贝前帧图像对应数据作为误码宏块数据;如果前帧图像是P帧,则采用边界匹配算法对误码宏块进行恢复。边界匹配算法的基本思路是从受损块周围选取可用的运动矢量,以这些运动矢量和其中值、平均值等作为运动矢量集S,再经过边界匹配法则的判定,从运动矢量集S中选择最为匹配的运动矢量指向的参考宏块来替代误码的宏块。边界匹配算法的流程如下:
(1)确定运动矢量集S,S={相邻宏块可用运动矢量,相邻宏块运动矢量的中值,相邻宏块运动矢量的均值,前帧中同一位置宏块的运动矢量,零矢量}。
(2)对每个误码宏块,采用边界匹配准则来从运动矢量集S中选出最佳的预测运动矢量。
(3)根据最佳预测运动矢量对误码宏块做运动补偿,然后做去方块滤波,最后得到恢复的宏块。
当MSE误码帧内<MSE误码帧间,说明I条带误码宏块帧内平滑度小于本帧与前帧差异,帧内宏块间的变化小于帧间宏块间的变化,此时I条带误码宏块的恢复采用空间相关性办法。对于图2示出的4×4的误码宏块,可以采用双线性插值算法进行恢复,根据未产生错误的上、下、左、右相邻宏块插值出误码宏块的替代宏块,最后对替代宏块进行去方块滤波。
下面具体说明对I条带丢失的恢复方法。
当解码端检测到I条带整个丢失时,首先判断丢失I条带的该帧中是否有正确接收的I条带,如果前面没有正确接收的I条带,则丢失I条带的该帧的平滑度为无穷大;如果前面有正确接收的I条带,则计算前一个I条带内所有宏块的均方差来作为该帧的平滑度。计算前一个I条带的宏块均值如公式(4)所示:
其中,N代表前一个I条带内的宏块数目,Pc(i)代表前一个I条带内第i个宏块的像素值。
得到同一帧前一个I条带的帧内均值后,可以计算前一个I条带的帧内均方差,如公式(5)所示:
I条带帧内均方差代表了I条带的平滑度,I条带帧内均方差越大,说明I条带内宏块之间相关性越小,反之,I条带宏块之间的相关性越大。
再计算丢失I条带的本帧与前帧差异,丢失I条带的本帧与前帧差异由正确接收的该帧中的前一I条带和前帧位置相同的I条带的数据进行比较得到,如果本帧之前没有正确接收的I条带,则丢失I条带的本帧与前帧的差异设定为0,代表无差异;如果丢失的I条带之前有正确接收的I条带,则计算前一个正确接收的I条带的与其前帧对应位置的I条带的宏块像素值均方差,这个均方差代表丢失I条带的本帧与前帧的差异。丢失I条带的本帧与前帧的差异计算如公式(6)所示:
其中,Pr(i)代表前一个正确接收的I条带的其前帧位置相同的I条带的宏块像素值,Pc(i)代表前一个正确接收的I条带内第i个宏块的像素值,N代表I条带的宏块数量。
最后,执行I条带丢失的恢复,通过计算MSEI片帧内均方差和MSEI片帧间均方差,可以判定需采用的丢失I条带的恢复方法,恢复方法如下:
当MSEI片帧内均方差>=MSEI片帧间均方差,说明I条带帧内平滑度差,它与前帧图像比较相似,此时采用时间相关性办法来恢复丢失I条带。如果前帧图像类型是I帧,则拷贝前帧对应位置数据给丢失I条带。如果前帧图像类型是P帧,则采用边界匹配算法对丢失I条带进行恢复。
当MSEI条带帧内均方差<MSEI条带帧间均方差,说明I条带帧内平滑度较好,它与前帧图像不太相似,此时采用空间相关性办法来恢复丢失I条带。即利用丢失宏块的相邻宏块信息对本帧丢失宏块进行恢复。首先对丢失I条带的边缘丢失宏块,利用本帧中相邻的宏块进行恢复,然后对于丢失I条带中与已恢复宏块相邻的丢失宏块,利用已恢复宏块进行恢复,一直进行到整个I条带的所有宏块都已经恢复,算法例如可采用双线性插值算法。
对I条带丢失或误码进行恢复的方法的一个较佳实施例的流程如图4所示。当检测到视频码流某一帧出现I条带丢失或宏块误码后,分别计算对应的帧内均方差和帧间均方差。如果帧内均方差小于帧间的均方差,则采用空间相关性办法进行恢复,一般采用双线性插值算法;如果宏块帧内均方差大于或等于帧间的均方差,则采用时间相关性办法进行恢复,即在前帧为I帧时拷贝前帧对应位置的宏块,前帧为P帧时采用帧间边界匹配算法进行恢复;当被检测的帧没有宏块错误或所有宏块错误恢复完毕之后,则解码器对该帧进行解码。图4是为了清楚表明本发明的方法的流程,由于之前已经对方法的每个步骤都进行了具体详细的阐述,因此在此不再赘述。
图5示出了根据本发明的对I条带丢失或误码进行恢复的装置的实施例,装置包括检测模块1、计算模块2和恢复模块3。
检测模块1,检测接收到的视频码流的I帧,若有I条带丢失,则该I条带所在的帧为本帧,否则检测该I条带是否存在误码宏块,若是,则该I条带所在的帧标记为本帧。
计算模块2,计算检测模块检测到的本帧的平滑度以及本帧与前帧的差异;
计算模块2包括第一计算单元21和第二计算单元22;
当检测模块1检测到I条带存在误码宏块时,本帧的平滑度和本帧与前帧的差异由第一计算单元21计算:
第一计算单元21计算本帧的平滑度包括:找到误码宏块上、下、左、右、左上、左下、右上、右下相邻宏块,计算所述相邻宏块的像素值均方差,该均方差即为本帧的平滑度;
第一计算单元21计算本帧与前帧的差异包括:找到本帧中误码宏块的上、下、左、右、左上、左下、右上、右下八个相邻宏块,然后找到前帧中与误码宏块位置相同的宏块的上、下、左、右、左上、左下、右上、右下相邻宏块,计算本帧和前帧对应的上、下、左、右、左上、左下、右上、右下相邻宏块的像素值均方差,该均方差即为本帧与前帧的差异;
当检测模块1检测到I条带丢失时,本帧的平滑度和本帧与前帧的差异由第二计算单元计算:
第二计算单元22计算本帧的平滑度包括:如果之前没有正确接收的I条带,则丢失I条带的平滑度设定为无穷大;如果之前有正确接收的I条带,则计算前一个正确接收的I条带的所有宏块的像素值均方差,该均方差即为本帧的平滑度。
第二计算单元22计算与前帧的差异包括:如果本帧在丢失的I条带之前没有正确接收的I条带,则本帧与前帧的差异设定为0;如果本帧内在丢失的I条带之前有正确接收的I条带,则计算前一正确接收的I条带的所有宏块与前帧对应位置的宏块的像素值均方差,该均方差即为本帧与前帧的差异。
恢复模块3,接收计算模块2的计算结果,如果本帧的平滑度大于或等于本帧与前帧的差异,则采用时间相关性办法进行恢复;如果本帧的平滑度小于本帧与前帧的差异,则采用空间相关性办法进行恢复。
恢复模块3包括第一恢复单元31和第二恢复单元32;
当检测模块1检测到I条带存在误码宏块时,误码宏块由第一恢复单元31恢复:当检测模块1检测到I条带丢失时,丢失的I条带由第二恢复单元32恢复:
第一恢复单元31检测前帧是I帧还是P帧:若前帧是I帧,且计算模块2计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第一恢复单元31拷贝前帧与误码宏块位置相同的宏块数据来恢复本帧的误码宏块,如果计算模块2计算的本帧的平滑度小于本帧与前帧的差异,则第一恢复单元31采用帧内插值算法恢复本帧的误码宏块;若前帧是P帧,且计算模块2计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第一恢复单元31采用边界匹配算法来恢复本帧的误码宏块,如果计算模块2计算得到的本帧的平滑度小于本帧与前帧的差异,则第一恢复单元31采用帧内插值算法恢复本帧的误码宏块。
第二恢复单元32检测前帧是I帧还是P帧:若前帧是I帧,且计算模块2计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第二恢复单元32拷贝前帧与丢失的I条带位置相同的I条带数据来恢复本帧丢失的I条带,如果计算模块2计算得到的本帧的平滑度小于本帧与前帧的差异,则第二恢复单元32采用帧内插值算法恢复本帧丢失的I条带;若前帧是P帧,且计算模块2计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第二恢复单元32采用边界匹配算法来恢复本帧丢失的I条带,如果计算模块2计算得到的本帧的平滑度小于本帧与前帧的差异,则第二恢复单元32采用帧内插值算法恢复本帧丢失的I条带。
根据本发明的对I条带丢失或误码进行恢复的装置可以实现根据本发明的对I条带丢失或误码进行恢复的方法的全部或部分步骤,根据本发明的对I条带丢失或误码进行恢复的方法也可以采用根据本发明的对I条带丢失或误码进行恢复的装置的所有可能组成和结构来完成。
本发明的实施例有以下有益效果:当解码端发现I条带丢失或误码时,本发明提供的方法或装置首先计算出错帧的帧内平滑度以及与前帧的帧间差异,然后依据判定条件,相应采用的空间相关算法或时间相关算法对于丢失的I条带和误码宏块进行恢复,计算复杂度低,由于根据I帧的特性而采用相应的恢复方法,因此对I条带丢失和宏块误码的恢复效果好。同时,采用该方法或装置,当I条带丢失或误码时,在不增加额外带宽和网络延迟的条件下,解码端能够自动适配最优方法对视频图像进行恢复,最大限度减少由于网络传输错误等导致的I条带丢失或误码对图像质量的影响。由于H.261、H.263、H.264和MPEG2、MPEG4等编码标准均采用I帧和P帧来对视频进行压缩,所以本发明适用范围涵盖以上这些编码标准。
本领域普通技术人员可以理解:本发明的方法或装置可以通过硬件、软件、固件或三者的任意组合实现,这均属于本发明权利要求所限定的保护范围之内。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的精神和范围。
Claims (7)
1.一种对I条带丢失或误码进行恢复的方法,其特征在于,包括以下步骤:
S1:检测接收到的视频码流的I帧,若有I条带丢失,则该I条带所在的帧为本帧,进入步骤S2,否则检测该I条带是否存在误码宏块,若是,则该I条带所在的帧为本帧,进入步骤S2;
S2:计算本帧的平滑度以及本帧与前帧的差异;
S3:如果本帧的平滑度大于或等于本帧与前帧的差异,则采用时间相关性办法进行恢复;如果本帧的平滑度小于本帧与前帧的差异,则采用空间相关性办法进行恢复;
当步骤S1中检测到I条带存在误码宏块时,
步骤S2中,所述计算本帧的平滑度包括:找到误码宏块上、下、左、右、左上、左下、右上、右下相邻宏块,计算所述相邻宏块的像素值均方差,该均方差即为本帧的平滑度;
和/或,
步骤S2中,所述计算本帧与前帧的差异包括:找到本帧中误码宏块的上、下、左、右、左上、左下、右上、右下八个相邻宏块,然后找到前帧中与误码宏块位置相同的宏块的上、下、左、右、左上、左下、右上、右下相邻宏块,计算本帧和前帧对应的上、下、左、右、左上、左下、右上、右下相邻宏块的像素值均方差,该均方差即为本帧与前帧的差异;
当步骤S1中检测到I条带丢失时,
步骤S2中,所述计算本帧的平滑度包括:如果之前没有正确接收的I条带,则丢失I条带的平滑度设定为无穷大;如果之前有正确接收的I条带,则计算前一个正确接收的I条带的所有宏块的像素值均方差,该均方差即为本帧的平滑度;
和/或,
步骤S2中,所述计算本帧与前帧的差异包括:如果本帧在丢失的I条带之前没有正确接收的I条带,则本帧与前帧的差异设定为0;如果本帧在丢失的I条带之前有正确接收的I条带,则计算前一正确接收的I条带的所有宏块与前帧对应位置的I条带的所有宏块的像素值均方差,该均方差即为本帧与前帧的差异。
2.如权利要求1所述的对I条带丢失或误码进行恢复的方法,当步骤S1检测到I条带存在误码宏块时,
若前帧是I帧,步骤S3具体为:如果本帧的平滑度大于或等于本帧与前帧的差异,则拷贝前帧与误码宏块位置相同的宏块数据来恢复误码宏块,如果本帧的平滑度小于本帧与前帧的差异,则采用帧内插值算法恢复误码宏块;
若前帧是P帧,步骤S3具体为:如果本帧的平滑度大于或等于本帧与前帧的差异,则采用边界匹配算法来恢复误码宏块,如果本帧的平滑度小于本帧与前帧的差异,则采用帧内插值算法恢复误码宏块。
3.如权利要求2所述的对I条带丢失或误码进行恢复的方法,所述采用边界匹配算法来恢复本帧的误码宏块包括:
确定运动矢量集,运动矢量集包括相邻宏块可用运动矢量、相邻宏块运动矢量的中值、相邻宏块运动矢量的均值、前帧中同一位置宏块的运动矢量、零矢量;
对应误码宏块,采用边界匹配准则来从运动矢量集中选出最佳运动矢量;
根据最佳运动矢量对误码宏块做运动补偿,然后做去方块滤波,最后得到恢复的宏块。
4.如权利要求1所述的对I条带丢失或误码进行恢复的方法,当步骤S1检测到I条带丢失时,
若前帧是I帧,则步骤S3具体为:如果本帧的平滑度大于或等于本帧与前帧的差异,则拷贝前帧与丢失的I条带位置相同的I条带数据来恢复本帧丢失的I条带,如果本帧的平滑度小于本帧与前帧的差异,则采用帧内插值算法恢复本帧丢失的I条带;
若前帧是P帧,则步骤S3具体为:如果本帧的平滑度大于或等于本帧与前帧的差异,则采用边界匹配算法来恢复本帧丢失的I条带,如果本帧的平滑度小于本帧与前帧的差异,则采用帧内插值算法恢复本帧丢失的I条带。
5.如权利要求4所述的对I条带丢失或误码进行恢复的方法,所述采用帧内插值算法恢复本帧丢失的I条带包括:
采用双线性插值算法,首先对丢失I条带的边缘丢失宏块,利用本帧中相邻的宏块进行恢复,然后对于丢失I条带中与已恢复宏块相邻的丢失宏块,利用已恢复宏块进行恢复,一直进行到丢失的I条带的所有宏块都已经恢复。
6.一种对I条带丢失或误码进行恢复的装置,其特征在于,包括:
检测模块,检测接收到的视频码流的I帧,若有I条带丢失,则该I条带所在的帧为本帧,否则检测该I条带是否存在误码宏块,若是,则该I条带所在的帧为本帧;
计算模块,计算检测模块检测到的本帧的平滑度以及本帧与前帧的差异;
恢复模块,接收计算模块的计算结果,如果本帧的平滑度大于或等于本帧与前帧的差异,则采用时间相关性办法进行恢复;如果本帧的平滑度小于本帧与前帧的差异,则采用空间相关性办法进行恢复;
其中计算模块包括第一计算单元和第二计算单元;
当检测模块检测到I条带存在误码宏块时,本帧的平滑度和本帧与前帧的差异由第一计算单元计算:
第一计算单元计算本帧的平滑度包括:找到误码宏块上、下、左、右、左上、左下、右上、右下相邻宏块,计算所述相邻宏块的像素值均方差,该均方差即为本帧的平滑度;
第一计算单元计算本帧与前帧的差异包括:找到本帧中误码宏块的上、下、左、右、左上、左下、右上、右下八个相邻宏块,然后找到前帧中与误码宏块位置相同的宏块的上、下、左、右、左上、左下、右上、右下相邻宏块,计算本帧和前帧对应的上、下、左、右、左上、左下、右上、右下相邻宏块的像素值均方差,该均方差即为本帧与前帧的差异;
当检测模块检测到I条带丢失时,本帧的平滑度和本帧与前帧的差异由第二计算单元计算:
第二计算单元计算本帧的平滑度包括:如果之前没有正确接收的I条带,则丢失I条带的平滑度设定为无穷大;如果之前有正确接收的I条带,则计算前一个正确接收的I条带的所有宏块的像素值均方差,该均方差即为本帧的平滑度;
第二计算单元计算与前帧的差异包括:如果本帧在丢失的I条带之前没有正确接收的I条带,则本帧与前帧的差异设定为0;如果本帧内在丢失的I条带之前有正确接收的I条带,则计算前一正确接收的I条带的所有宏块与前帧对应位置的宏块的像素值均方差,该均方差即为本帧与前帧的差异。
7.如权利要求6所述的对I条带丢失或误码进行恢复的装置,其中恢复模块包括第一恢复单元和第二恢复单元;
当检测模块检测到I条带存在误码宏块时,误码宏块由第一恢复单元恢复;当检测模块检测到I条带丢失时,丢失的I条带由第二恢复单元恢复;
第一恢复单元检测前帧是I帧还是P帧:若前帧是I帧,且计算模块计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第一恢复单元拷贝前帧与误码宏块位置相同的宏块数据来恢复本帧的误码宏块,如果计算模块计算的本帧的平滑度小于本帧与前帧的差异,则第一恢复单元采用帧内插值算法恢复本帧的误码宏块;若前帧是P帧,且计算模块计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第一恢复单元采用边界匹配算法来恢复本帧的误码宏块,如果计算模块计算得到的本帧的平滑度小于本帧与前帧的差异,则第一恢复单元采用帧内插值算法恢复本帧的误码宏块;
第二恢复单元检测前帧是I帧还是P帧:若前帧是I帧,且计算模块计算得到的本帧的平滑度大于或等于本帧与前帧的差异,则第二恢复单元拷贝前帧与丢失的I条带位置相同的I条带数据来恢复本帧丢失的I条带,如果本帧的平滑度小于本帧与前帧的差异,则第二恢复单元采用帧内插值算法恢复本帧丢失的I条带;若前帧是P帧,且本帧的平滑度大于或等于本帧与前帧的差异,则第二恢复单元采用边界匹配算法来恢复本帧丢失的I条带,如果本帧的平滑度小于本帧与前帧的差异,则第二恢复单元采用帧内插值算法恢复本帧丢失的I条带。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310452972.XA CN104519358B (zh) | 2013-09-27 | 2013-09-27 | 一种对i条带丢失或误码进行恢复的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310452972.XA CN104519358B (zh) | 2013-09-27 | 2013-09-27 | 一种对i条带丢失或误码进行恢复的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104519358A CN104519358A (zh) | 2015-04-15 |
CN104519358B true CN104519358B (zh) | 2018-07-20 |
Family
ID=52793984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310452972.XA Active CN104519358B (zh) | 2013-09-27 | 2013-09-27 | 一种对i条带丢失或误码进行恢复的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104519358B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008118801A2 (en) * | 2007-03-23 | 2008-10-02 | Qualcomm Incorporated | Methods of performing error concealment for digital video |
CN102685509A (zh) * | 2012-04-26 | 2012-09-19 | 中山大学 | 一种基于场景转换的视频差错控制方法 |
CN103209329A (zh) * | 2012-11-29 | 2013-07-17 | 浙江师范大学 | 一种图像处理中的差错隐藏算法 |
-
2013
- 2013-09-27 CN CN201310452972.XA patent/CN104519358B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008118801A2 (en) * | 2007-03-23 | 2008-10-02 | Qualcomm Incorporated | Methods of performing error concealment for digital video |
CN102685509A (zh) * | 2012-04-26 | 2012-09-19 | 中山大学 | 一种基于场景转换的视频差错控制方法 |
CN103209329A (zh) * | 2012-11-29 | 2013-07-17 | 浙江师范大学 | 一种图像处理中的差错隐藏算法 |
Non-Patent Citations (1)
Title |
---|
视频通信错误检测及隐藏技术研究;丁学文;《中国博士学位论文全文数据库信息科技辑》;20090715;第2009年卷(第07期);正文第33页第1-8行、第47页第12行-23行、第76页第12行-第80页第3行、第92页第27行-第93页第14行,图4-1、6-1、7-1 * |
Also Published As
Publication number | Publication date |
---|---|
CN104519358A (zh) | 2015-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110519600B (zh) | 帧内帧间联合预测方法、装置、编解码器及存储装置 | |
TWI401972B (zh) | 時間性錯誤隱藏方法 | |
CN110312130B (zh) | 基于三角模式的帧间预测、视频编码方法及设备 | |
CN101163250B (zh) | 一种基于边界梯度的视频流容错方法 | |
CN110493603B (zh) | 一种基于联合信源信道的率失真优化的多视点视频传输差错控制方法 | |
CN101355708A (zh) | 一种自适应误码掩盖方法 | |
CN102271256A (zh) | 基于模式决策的自适应帧组分布式视频编码和解码方法 | |
CN102984525A (zh) | 一种视频码流错误隐藏方法 | |
CN102378012A (zh) | 基于数据隐藏的h·264视频传输误码恢复方法 | |
CN101986714B (zh) | 自适应的错误遮蔽方法 | |
CN102055987B (zh) | 一种解码错误宏块的错误隐蔽方法及装置 | |
Chen et al. | Spatio-temporal boundary matching algorithm for temporal error concealment | |
CN104519358B (zh) | 一种对i条带丢失或误码进行恢复的方法和装置 | |
CN101175217A (zh) | 针对移动网络视频传输的误码掩盖技术 | |
CN104581185B (zh) | 一种应用于立体视频切换帧的自适应错误隐藏方法 | |
Lee et al. | A temporal error concealment method for MPEG coded video using a multi-frame boundary matching algorithm | |
US8218639B2 (en) | Method for pixel prediction with low complexity | |
Garcia-V et al. | Image processing for error concealment | |
El-Shafai | Optimized adaptive space-time-view multi-Dimentional error concealment for 3D multi-view video transmission | |
Xiang et al. | A high efficient error concealment scheme based on auto-regressive model for video coding | |
JPH08242457A (ja) | 動きベクトル検出方法 | |
JPH07111654A (ja) | 動画像伝送システム | |
CN101917628B (zh) | 基于自适应块尺寸的整帧错误掩盖方法 | |
Chen et al. | An Adaptive Spatio-Temporal Error Concealment Scheme Based on H. 264/AVC. | |
Qian et al. | Texture based selective block matching algorithm for error concealment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |