视频编解码中针对整帧丢失误码掩盖的p帧内插方法

文档序号:7962236阅读:127来源:国知局

专利名称::视频编解码中针对整帧丢失误码掩盖的p帧内插方法
技术领域
:本发明涉及视频编解码中解码端的P帧内插技术,具体是一种视频编解码中针对整帧丢失误码掩盖的P帧内插方法。
背景技术
:目前,以H.264/AVC编码为例的新一代视频编码标准采用了高效的编码技术,能够实现很高的压缩比率。因而,它也被广泛的使用在了包括互联网视频流媒体、3G手机电视等多种视频应用场合当中。作为一种针对视频传输而提出的编码标准,它不可避免的遇到传输过程中的数据损坏或丢失,当视频流打包传输时,这种损坏和丢失直接反映为数据包的丢失。由于视频编码的高压缩比率,使它在面对视频丢包的情况下显得尤其脆弱某一帧当中的数据丢失,不但会影响到当前帧的正常显示,而且会使错误在时域上扩散,使后续帧也出现错误。所以在面对视频传输中的丢包时,解码器中的错误掩盖技术就显得特别重要,它可以最大限度的减小错误带来的视觉影响,同时阻碍错误在时域上的扩散。一般情况下的丢包会使得帧内的部分宏块或部分条带丢失,但在丢包比较严重的情况下,会出现整帧数据的丢失。另一方面,一些低码率(300-6001ApS)的信道传输标准(比如在欧洲和韩国广为使用的T-DMB手机电视标准),往往会把CIF规格的H.264视频中的一个帧打在一个RTP包中,这样发生丢包时就会发生整帧丢失的情况。经对现有技术的文献检索发现,中国专利,公开号CN1455596,
专利名称:为“基于运动向量外推及运动向量搜索的视频差错掩盖方法”,该专利针对整帧丢失问题,利用运动矢量映射(或者称为外推)的方法,根据重叠面积大小来选取运动矢量,进而重建丢失块。该方法存在的问题在于,首先,选取运动矢量时,运动矢量的准确程度并不一定和映射后的重叠面积成正比,其次,没有能够利用后一帧的信息以进一步提高掩盖质量。
发明内容本发明的目的在于克服上述现有技术的不足之处,提出了一种视频编解码中针对整帧丢失误码掩盖的P帧内插方法,是一种双向整帧丢失错误掩盖技术,该技术能够利用后一帧的信息进一步提高掩盖质量。本发明是通过以下技术方案实现的本发明所述的视频编解码中针对整帧丢失误码掩盖的P帧内插方法,包括如下步骤步骤一,修改解码器工作流程,在掩盖丢失帧之前,加入了一个模块以获取下一帧的运动矢量;步骤二,对于前一帧和后一帧的运动矢量信息,获取其对应块的残差信息,根据残差信息去掉一部分不具可靠性的运动矢量,剩余运动矢量定义为可用运动矢量,其对应块定义为可用块;步骤三,根据前一帧和后一帧的可用运动矢量信息,利用运动矢量映射法将所有可用运动矢量映射到丢失帧上,建立丢失帧中当前掩盖的4x4块的参考运动矢量列表;步骤四,根据场一致性判决方法分别筛选出前一帧和后一帧的最佳运动矢量,用线性插值法从两个最佳运动矢量中得出内插帧中当前块的运动矢量,以参考前一帧并且残差为零的方式完成内插。所述步骤一,具体为解码的流程中,在掩盖丢失帧之前,加入了一个模块以获取下一帧的运动矢量,然后调用掩盖丢失帧的接口函数,最后将掩盖完成的帧在下一帧之前插入输出缓存以待输出。所述步骤二,其中根据残差信息去掉一部分不具可靠性的运动矢量具体为利用运动矢量所在块的残差信息,判决对应运动矢量在该方法中的可靠性,如果该运动矢量所在块的残差大于一个预设阈值,认为该块的运动矢量在该方法中不具备可靠性,从可用运动矢量集合中去除。所述步骤三,具体为通过运动矢量映射的方法将所有可用运动矢量映射到丢失帧上,找出前一帧和后一帧中与丢失帧中当前掩盖4x4块重合的4x4块的运动矢量,对前一帧和后一帧分别建立参考运动矢量列表。所述步骤四,具体为对于某一个当前块,根据前一帧的参考运动矢量列表中的某一个运动矢量映射到前一帧上,根据场一致性判决方法判定此运动矢量和其似然运动矢量的差值,遍历所有参考运动矢量列表中的运动矢量,找到差值最小的运动矢量,作为前一帧中的最佳运动矢量,同样方法找到后一帧中的最佳运动矢量,然后用线性插值法从两个最佳运动矢量中得出内插帧中当前块的运动矢量,以参考前一帧并且残差为零的方式完成内插。综上,本发明技术方案中,首先修改解码器工作流程,在掩盖当前丢失帧之前,获取下一帧的所有运动矢量,然后利用运动矢量映射法获取参考运动矢量列表,最后根据场一致性判决方法分别筛选出前一帧和后一帧的最佳运动矢量,用线性插值法从两个最佳运动矢量中得出内插帧中当前块的运动矢量,以参考前一帧并且残差为零的方式完成内插。本发明能够利用后一帧的信息以进一步提高掩盖质量,在各序列中的平均输出峰值信噪比(PSNR)均优于其他传统方法,具有更好的视觉效果。图1为本发明方法流程图;图2本发明中采用丢失帧的前一帧运动矢量映射方法示意图;图3本发明中场一致性判决方法示意图;图4本发明具体实施例中,table序列各帧的PSNR参数比较图;图5本发明具体实施例中,table序列各种方法第50帧的输出图像主观质量比较图。具体实施例方式下面结合附图对本发明的实施例作详细说明本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。如图1所示,为本发明方法流程图,方法详细流程为步骤一,修改解码器工作流程,在掩盖当前丢失帧之前,获取下一帧的所有运动矢量;在以H.264标准为例的解码流程当中,当某个P帧丢失时,后续的P帧由于时域上的依赖性,则无法被解出。所以基于传统的解码流程的方法,对于某个P帧的掩盖,只能参考前面帧的信息,比如运动矢量或者亮度与色度。实际上,解码器在工作时,当且仅当解码器接收到丢失帧的下一帧时,由于两个相邻帧的帧号不连续,解码器才会检测到前一帧的丢失,进而调用帧掩盖函数的接口。而此时,实际上解码器已经接受到了丢失帧后一帧的运动矢量和残差信息,仅仅由于前一帧丢失了才无法解码。所以可以获取丢失帧后一帧的运动矢量场,结合丢失帧前一帧的运动矢量场等信息,来掩盖丢失帧。在修改H.264的解码流程之后,对于丢失帧,除了能获取前面帧的信息外,还能够获取后一帧的部分信息,以用于丢失帧的掩盖。具体实现方法是,在掩盖丢失帧之前,加入了一个模块以获取下一帧的运动矢量,然后调用掩盖丢失帧的接口函数,最后将掩盖完成的帧在下一帧之前插入输出缓存以待输出。步骤二,对于前一帧和后一帧的运动矢量信息,获取其对应块的残差信息,根据残差信息去掉一部分在该方法中不具可靠性的运动矢量,剩余运动矢量定义为可用运动矢量,其对应块定义为可用块。利用运动矢量所在块的残差信息,判决对应运动矢量在该方法中的可靠性。以前一帧为例,对于第个块的残差"(C1),判决它的大小,如果,认为该块的运动矢量在该方法中不具备可靠性,从可用运动矢量集合中去除。其中1为残差能量的阈值,根据具体视频序列的实验效果进行选取。步骤三,根据前一帧和后一帧的可用运动矢量,利用运动矢量映射法将所有可用运动矢量映射到丢失帧上,获取丢失帧中当前掩盖的4x4块的参考运动矢量列表;基本的方法是运动矢量的映射与外插,以前一帧的可用运动矢量为例,如图2所示,假设当前第η个P帧丢失,找到它的前一帧η-1。对η-1帧上的第i个4x4的可用块S二,将它的运动矢量反向,沿着反向的运动矢量映射到第η帧上产生块^^,它的运动矢量与gq的运动矢量相同。将所有η-1帧上的块如此映射到第η帧上之后,第η帧上的每个4x4块必然被若干个映射块覆盖。对于第η帧上的第j个块,它被η-1帧上第i个映射块覆盖的面积是<=其中/(尸)=^pIei^1对于第η帧上的第j个块,它被满P^Bi,L0P史EBn。足>0条件的所有i#个块覆盖。可以从所有可用运动矢量当中获得这些覆盖块的运动矢量MG(W)。对于第j个块,k个所有符合条件的参考运动矢量MJ^(W)组成它的参考运动矢量列表M^T(W)。步骤四,根据场一致性判决方法分别筛选出前一帧和后一帧的最佳运动矢量,用线性插值法从两个最佳运动矢量中得出内插帧中当前块的运动矢量,以参考前一帧并且残差为零的方式完成内插;同样以前一帧为例,对于丢失帧上的第j个块,对于参考列表中的每一个参考矢量ΜΓ^(Η),按照这个矢量的方向将丢失帧中的当前块j映射到前一帧n-i上。一般地,它将会覆盖4个块CBfL1,CBll,⑶二和⑶;夂当前块^和他们的重合面积分别为^,w2,w3和w4。如图3所示,对于覆盖的部分,按照运动矢量的加权平均估算出这部分的似YjMV(CBI1)Wi然运动矢量#(坟)=@5-注意到当前根据场的一致性,Σ^““,Z=IOΜΓ(《)应该和似然运动矢量接近,可以用场一致性判别标准来判定的优劣。用正交法定义矢量的SA^tMK^O-ftK^tf+tMWi^-ftWi^]2,选取和似然运动矢量敞㈧)的差最小的参考运动矢量作为前一帧的最佳运动矢量,mvZD=argmmUV}。后一帧的最佳运动矢量的选取方法与之类似,即从其参考运动矢量列表中选取最佳运动矢量。最后采用线性插值的方法,根据前一帧和后一帧的最佳重建矢量,获得最终的重建运动矢量經—()=經^)+(1-岭經:T(巧),选取α=0.5。实施例基于上述对图1方法流程的描述,本实施例采用H.264的参考编解码器JM15.1进行软件仿真。该模型的编码器部分能对YUV的图像序列实施编码,输出码流格式文件,解码其部分能将兼容H.264标准的码流解码成YUV序列。采用JM模型自身提供的RTP丢包仿真器对码流序列实施丢包仿真。本实施例首先修改解码器工作流程。当其进行解码时,在其掩盖丢失帧的之前,加入了一个模块以获取下一帧的运动矢量,然后再调用掩盖丢失帧的接口函数,最后将掩盖完成的帧在下一帧之前插入输出缓存以待输出。将table,foreman,coastguard,Stephan,Paris禾口headwithglasses等测试视频序列利用JM编码器编为H.264码流文件,其中分辨率采用了手机电视中常用的CIF(35^^88),测试条件为30帧每秒,GOP设为IPPP并且I帧的周期是15帧,QP设为28。码流封装在RTP包中并且将一帧封入一个数据包中以仿真整帧丢失。然后利用JM模型自带的丢包工具,按5%比率对码流实施丢包,为了更好的观测帧丢失后错误在时域上扩散的情况,限制在一个GOP中只丢失一个帧。对已丢包序列解码,其中解码器利用本发明的方法和一些传统方法自动对错误实施掩盖。传统的掩盖P帧整帧丢失的方法包括直接复制前一帧方法(FC),前面提到的已存在专利的运动矢量外推方法(MP)和拓展了后一帧运动矢量的双向运动矢量外推方法(BME),加上本发明的方法,一共四种方法对整帧丢失的错误实施了掩盖。通过表1的各代表性序列的输出表现来看,本发明方法在各序列中的平均输出峰值信噪比(PSNR)均优于其他传统方法。表1各序列中本发明输出PSNR均优于其他方法权利要求1.一种视频编解码中针对整帧丢失误码掩盖的P帧内插方法,其特征在于,包括如下步骤步骤一,修改解码器工作流程,在掩盖丢失帧之前,加入了一个模块以获取下一帧的运动矢量;步骤二,对于前一帧和后一帧的运动矢量信息,获取其对应块的残差信息,根据残差信息去掉一部分不具可靠性的运动矢量,剩余运动矢量定义为可用运动矢量,其对应块定义为可用块;步骤三,根据前一帧和后一帧的可用运动矢量信息,利用运动矢量映射法将所有可用运动矢量映射到丢失帧上,建立丢失帧中当前掩盖的4x4块的参考运动矢量列表;步骤四,根据场一致性判决方法分别筛选出前一帧和后一帧的最佳运动矢量,用线性插值法从两个最佳运动矢量中得出内插帧中当前块的运动矢量,以参考前一帧并且残差为零的方式完成内插。2.根据权利要求1所述的视频编解码中针对整帧丢失误码掩盖的P帧内插方法,其特征是,所述步骤一,具体为解码的流程中,在掩盖丢失帧之前,加入了一个模块以获取下一帧的运动矢量,然后调用掩盖丢失帧的接口函数,最后将掩盖完成的帧在下一帧之前插入输出缓存以待输出。3.根据权利要求1所述的视频编解码中针对整帧丢失误码掩盖的P帧内插方法,其特征是,所述步骤二,其中根据残差信息去掉一部分不具可靠性的运动矢量具体为利用运动矢量所在块的残差信息,判决对应运动矢量在该方法中的可靠性,如果该运动矢量所在块的残差大于一个预设阈值,认为该块的运动矢量在该方法中不具备可靠性,从可用运动矢量集合中去除。4.根据权利要求1所述的视频编解码中针对整帧丢失误码掩盖的P帧内插方法,其特征是,所述步骤三,具体为通过运动矢量映射的方法将所有可用运动矢量映射到丢失帧上,找出前一帧和后一帧中与丢失帧中当前掩盖4x4块重合的4x4块的运动矢量,对前一帧和后一帧分别建立参考运动矢量列表。5.根据权利要求1所述的视频编解码中针对整帧丢失误码掩盖的P帧内插方法,其特征是,所述步骤四,具体为对于某一个当前块,根据前一帧的参考运动矢量列表中的某一个运动矢量映射到前一帧上,根据场一致性判决方法判定此运动矢量和其似然运动矢量的差值,遍历所有参考运动矢量列表中的运动矢量,找到差值最小的运动矢量,作为前一帧中的最佳运动矢量,同样方法找到后一帧中的最佳运动矢量,然后用线性插值法从两个最佳运动矢量中得出内插帧中当前块的运动矢量,以参考前一帧并且残差为零的方式完成内插。全文摘要本发明公开一种视频编解码中针对整帧丢失误码掩盖的P帧内插方法,方法为修改解码器工作流程,在掩盖当前丢失帧前获取下一帧的所有运动矢量;对于前一帧和后一帧的运动矢量信息,获取对应块的残差信息,去掉不具可靠性的运动矢量,得到可用运动矢量;通过将可用运动矢量映射,建立丢失帧中当前掩盖的4x4块的两个参考运动矢量列表,分别对应前一帧和后一帧;根据场一致性判决方法,分别筛选出前一帧和后一帧中与其似然运动矢量差别最小的运动矢量作为最佳运动矢量,从两个最佳运动矢量中得出内插帧中当前块的运动矢量,以参考前一帧并且残差为零的方式完成内插。本发明能够针对视频编码中P帧的整帧丢失错误掩盖取得很好的内插效果。文档编号H04N7/50GK102404568SQ20111034482公开日2012年4月4日申请日期2011年11月4日优先权日2011年8月18日发明者孙豪,杨华,郑世宝申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1