专利名称:解码器中图像错误检测、恢复和隐藏的方法
技术领域:
本发明涉及一种H.264的解码器,特别是涉及H.264解码器码流 错误侦测方法、参考图像列表的错误侦测及恢复方法,以及对未解码宏 块的错误恢复的参考图选择方法。
背景技术:
视频通信中由于资料包的丢失、随机错误等会引起接收端收到损 坏的码流(bitstream),从而导致无法解出正确的图像。在H.264协议 中,没有图像档头层的语法(Picture Header Layer syntax),因此控制 器要处理的直接就是片段档头层(Slice Header Layer)。 一幅图中的片 段(Slice)越多,对错误控制越有利,但对解码控制的要求越高,因 此实际实现(如DVB)中一幅图中片段个数不会太多。另外相对于 Mpeg2, H.264使用了更多的参考图和不同的解码控制,错误检测与恢 复对H.264来说提出了更高的要求。虽然H.264提供了 Flexible macroblock ordering(FMO) 、 Redundant slice methods 、 Switched slice SP/SI、 Data partition、 Arbitrary slice order(ASO)等容错技术,但是常用 的主层级(Main Profile)和高层级(High Profile)并不支持这些容错 技术(features)。
关于影像解码器(video decoder)方面的错误检测、恢复和隐藏已 经有许多的专利和论文(Paper),但是大部分都是关于如何在码流中 插入re-synchronization mark禾口对undecoded pixiels进行内插。真正倉旨 在H.264 Main Profile和High Profile中采用的并不多。在美国公开号 US20050254584中介绍了如何产生运动向量(Motion Vector)进行帧 间图像(Inter picture)恢复以及如何进行帧内图像(Intra picture)内 插没有正确解码的区域,它适用与H.264以及以前的Mpeg系列。在美
国专利公开号US 20060045190中介绍了一种在H.264解码过程中如何 选取Intra Prediction进行预测没有正确解码的区域的方法。在美国专利 公幵号US20060013318中介绍了在H.264解码过程中如何进行错误检 测以及对frame—num和序列参数设定值SPS (sequence parameter set)、 图像参数设定值PPS (picture parameter set)进行恢复的方法。但是以 上专利和论文介绍的错误检测和恢复方法对H.264 Main Profile和High Profile来说并不很完善,本发明在这方面进一步进行补充和完善。
发明内容
有鉴于现有技术对H.264 Main Profile和High Profile不很完善, 本发明主要针对H.264解码过程中错误检测、恢复和隐藏进行改善, 一方面保证解码器本身顺利进行解码,而不至于使用了错误的信息导 致解码器不正常工作(crash),另一方面保证解码的结果可以给用户 看到较好的效果。
为达上述目的,本发明提供一种影像解码器的码流错误侦测方法, 其特征在于,步骤包括首先接收一码流并将该码流解码。接着检査该 码流中序列参数设定值SPS指定的图像大小是否超出当前码流等级参 数(level)规定的最大值,若为超过,则认为当前的序列参数设定值 SPS有错。然后检查该码流中图像参数设定值PPS所指定当前使用的 序列参数设定值SPS的索引值,若当前指定的序列参数设定值SPS不 存在,则认为当前图像参数设定值的PPS有错。检查该码流中片段档 头(Slice header)所指定当前使用的图像参数设定值PPS的索引值, 如果当前指定的图像参数设定值PPS不存在,则认为当前的片段档头 有错。以及检查该码流中当前的宏块数,若当前的宏块数大于图像中 的总宏块数,则认为当前宏块解码有错。
为达上述目的,本发明再提供一种参考图像列表的错误侦测及恢 复方法,其特征在于,步骤包括先将当前的参考图像列表备份,再接 收一组重新排序图像序号,然后开始处理重新排序参考图像列表。若
重新排序图像序号大于一设定值,则恢复备份的参考图像列表。最后 若重新排序后的参考图像列表中,其有效参考图的个数小于应有的参 考图的个数,则恢复备份的参考图像列表。
为达上述目的,本发明还提供一种对未解码宏块的错误恢复的参 考图选择方法,其特征在于,步骤包括接收一影像码流;根据该影 像码流判断当前图是否为解码的第一幅图,若是,则使用当前图进行 帧内预测,而若不是,则于当前图像队列中寻找图像显示顺序值POC 刚刚大于当前图像的图像显示顺序值POC的图l像;若当前图为场景 切换点且该图1像为有效,则以图1像进行帧间预测,若当前图为场 景切换点而图1像为无效,则使用当前图进行帧内预测;若当前图不 为场景切换点,则从当前图像队列中寻找图像显示顺序值POC刚刚小 于当前图像的图像显示顺序值POC的图2像;若图1像为场景切换点 且图2像为有效,则以图2像进行帧间预测,若图1像为场景切换点 而图2像为无效,则使用当前图进行帧内预测;若图1像不为场景切 换点,则判断图1像及图2像是否皆为有效,若皆为有效则选择两者 间正确解码宏块较多的图像执行帧间预测;若图l像不为场景切换点, 图1像及图2像不皆为有效,则选择有效的图1像或图2像执行帧间 预测;及若图1像不为场景切换点,图1像及图2像皆为无效,则使 用当前图进行帧内预测。
为了能更进一步了解本发明为达成预定目的所采取的技术、手段 及功效,请参阅以下有关本发明的详细说明与附图,相信本发明的目 的、特征与特点,当可由此得一深入且具体的了解,然而所附图式仅 提供参考与说明用,并非用来对本发明加以限制。
图1为本发明影像解码器的架构图2为本发明解码器对片段的解码流程图3为本发明参考图像列表错误侦测及恢复流程图;及
图4为本发明对没有解码的宏块进行错误恢复的参考图的选择流程图。
图中符号说明
11熵解码模块
12帧间预测模式选择模块
13帧内预测模式选择模块
14运动补偿模块
15帧内预测模块
16预测模式选择模块
17反向运算模块
18除区块滤波器
19解码图像缓存器
SPS序列参数设定值 PPS图像参数设定值
具体实施例方式
首先针对H.264码流格式(bitstreamformat)做相关的说明。H.264 码流由不同类型的网络提取层的封包单元(network abstraction layer units, NAL units)组成。NAL unit包含了 nal—ref—idc、 nal—unit类型以及 RBSP(raw byte sequence payload)。如果nal—ref一idc不等于0,表示当前 NAL unit是SPS、 PPS或可被参考的片段。NAL units类型包括SPS、 PPS、图像片断码(coded slices of pictures)以及补充增加信息SEI
(Supplemental Enhancement Information)等其它类型。每一码流皆包 括一或多个SPS及一或多个PPS。 SPS中包含了 profile, level,序列参 数设定值索弓i (seq_parameter—set—id)、图像大小、num—ref_frames等 参数信息。其中seq_parameter—set—id表示当前SPS的索引值(Index); mim一reflfmme表示可被参考的图的最大个数。PPS中包含了图像参数 设定索引 (pic_parameter_set—id )、 序列参数设定值索引
(seq parameter set id) 、 num—ref—idx—lx—active_minusl等参数信息。 其中 pic_parameter—set—id 表示当前 PPS 的 Index 值; seq_parameter—set—id表示当前PPS使用的SPS的Index值; num—ref—idx—lx—active—minusl (x=0 or 1)表示两个参考图像列表(list) 中参考图像的个数。图像片断码(coded slices of pictures )包含了档 头片断(Slice header)、数据片断(Slice data )等信息。档头片断(Slice header)中包含了当前片段中第一个MB的位置(first—mb—in—slice)、 图f象参数设定值索引(pic_parameter—st一id)、框架参数值(frame—num)、 图像的显示顺序POC(pic—order—cnt)以及Decoded Picture Buffer(DPB) 管理等信息;更详细的说,first—mb—in—slice表示当前片段(slice)中 第一个MB(macroblock)的位置;pic_parameter—st_id表示当前片段使用 的PPS的索引值;frame—num表示当前片段所在的图像(picture)的框 架参数值;pic—order—cnt(POC)表示当前片段所在的图像的显示顺序。 Slice data中包含了组成该片段的宏块信息。按照H.264协议Annex B 规定,NALunit以三个字节的起始码(start code)0x000001开始,以下 —个NALunit的起始码或以位0x000000结束。
接着针对介绍H.264解码器架构(decoder architecture)。请参阅 图1,为本发明影像解码器的架构图。其中熵解码模块11 (Entropy decoding module)可以是CAVLC(context-based adaptive variable length coding )或CABAC(context-based adaptive binary arithmetic coding ), 用 来解码各种各样的参数和数据。如果当前宏块(macroblock,MB)是帧 内宏块(intra MB),帧内预测模式选择模块13 (decide intra prediction mode)将根据解码出来的信息以及相邻MBs的信息决定当前MB的帧 内预测模式(intra prediction mode),进而于帧内预测模块15 (intra prediction module)来运算。如果当前MB是帧间宏块(inter MB), 帧间预测模式选择模块12 (decide inter prediction mode)将根据解码出 来的信息以及相邻MBs的信息决定当前MB的参考图的索引值 (ref_pic—idx)以及运动向量(motion vector, MV),进而于运动补偿模 块14 (motion compensation module)执行运动补偿。内部预测及运动 补偿后的结果由预测模式选择模块16 (prediction mode selector)输出,
并与反向运算模块17输出的当前码流反向量化及反向变换(Inverse quantization & inverse transform )后的残余系数相加,而相加的结果经 过除区块滤波器18 (deblocking filter)输出就是最终解码出来的结果。 如果当前图是一个可被参考图,同时当前图需要存入解码图像缓存器 19(Decoded Picture Buffer, DPB),用作未来解码使用的参考图。而解码 图像缓存器19的最大值是由当前码流中SPS的Level参数值决定。
请参阅图2,为本发明解码器对片段的解码流程图。首先对片段 (slice)的档头进行解码,以取得first_mb_in—slice、pic_parameter—st—id、 frame_num、 POC以及DPB管理等信息(如图2步骤S201)。接着根 据first一mbjn—slice参数值的信息,可判断当前的片段是否已是新(另 一)图像的片段(如图2步骤S203)。若为是,则将该新的图像初始 化(如图2步骤S205)。若为否,或步骤S205后,开始初始化参考图 像列表(reference picture list),以执行一建表的动作(如图2步骤S207)。 接着将参考图像列表重新排序(reorder reference list)(如图2步骤 S209)。然后便开始对片段中的宏块进行解码(如图2步骤S211)。 在宏块解码结束后便检查是否已完成整个片段的解码(如图2步骤 S213)。若尚未解完,则返回步骤S211继续解未解完的宏块。若已解 完,则检查是否己完成一张图像的解码(如图2步骤S215)。若已完 成整张图像的解码,接着则可进行解码图像缓存器对解完的图像的管 理(如图2步骤S217)。若尚未完成整张图像的解码,则继续执行未 完成的图像的解码(如图2步骤S219)。
接下来介绍本发明对于错误侦测(Error detection)的一些手段。 一般错误侦测的方法有三种,第一种是解码器遇到了码表中不存在的 码字,即判断有错误发生。第二种是根据语法(syntax)规定的参数 (parameter)的取值范围来决定解码出来的值是否合理。第三种是虽 然解码出来的值合理,但是若从上下文来看不合理,即判断有错误发 生。第一种方法是显而易见的,而在美国公开号US20060013318 —案 中己经对第二种方法作了大量介绍,本发明主要着重在第三种方法。
解码过程中对于SPS及PPS的侦错判断为,如果当前SPS指定的 图像大小(picture size)超出当前码流等级(bitstreamLevel)规定的最 大值,则认为当前的SPS有错。而PPS会指定当前使用的SPS的索引 值。如果当前指定的SPS不存在,则认为当前的PPS有错。
而在片段的档头解码(Slice header decoding)时,Slice header 会指定当前使用的PPS的索引值。如果当前指定的PPS不存在,则认 为当前的Slice header有错。
在对重新排序图像序号(reordering—ofjpic一nums一idc)进行解码时, 如果连续解码出来有效的重新排序图像序号 (reordering—of_pic—nums—idc )的个数超过应有的参考图的个数 (num—ref_idx—lx—active+1),则认为重新排序参考图像列表(reorder ref picture list)的解码有错。
针对重新排序参考图像列表(reorder—ref_piC_list)后的结果,如 果有效的参考图像列表(ref—pic—list)中的参考图的个数小于应有的参 考图的个数(num—ref—idx—lx—active),表示有参考图重复相同序号, 则认为重新排序参考图像列表有错。
而在宏块解码方面,如果当前的宏块数大于整张图像中的宏块数 (current—mb—nr〉PicSizelnMbs-l),则认为当前宏块解码有错。
根据H.264 subclause 8.4.1计算和推导当前区块或宏块的参考索引 (block or MB's reference index)时,如果计算出来的参考索引值超出 了当前的参考图像列表(reference picture list),或者在当前reference picture list中找不到合适的参考图(reference picture),则认为当前宏 块解码有错。
在对区块残余系数进行解码时,如果解码出来的非零系数个数 (totalcoeff)与零系数个数(total—zeros)的和大于当前区块应有的最
大系数个数,则认为当前宏块解码有错。
在对当前区块根据H.264 subclause 8.3进行帧内预测(Intra prediciton)时,尽管选择的帧内预测模式(Intra prediction mode)没有 超出语法范围,但是用到的相邻区块不存在或不合理,则认为当前宏 块解码有错。
接着介绍本发明对于错误发生时的恢复及隐藏手段(Error recovery and concealment)。首先针对参考图像列表作说明,请参阅图 3,本发明参考图像列表错误侦测及恢复流程图。先判断是否有重新排 序(reodering)的命令要处理,如果ref_pic—list—reordering—flag一lx !=0, 表示有重新排序的命令要处理(如图3步骤S301)。若没有则跳出, 无须执行错误的侦测及恢复。若有,在处理重新排序命令的前,首先 将当前的参考图像列表(reference picture list)备份(如图3步骤S303)。 然后再处理一组重新排序图像序号并重新排序reorder reference list (如 图3步骤S305)。重新排序时判断是否有错误的重新排序命令,重新 排序图像序号是否大于3, Reodering—of_pic—nums_idc>3 (如图3步骤 S307)。若大于3,则表示当前的重新排序命令不可信,因此恢复备份 的参考图像列表(如图3步骤S309),处理结束。若重新排序图像序 号没有大于3,则进一步检查重新排序的后的参考图像列表,参考图像 列表中有效参考图的个数是否小于应有的参考图的个数 皿m—ref—idx_lx_active (如图3步骤S311)。若是小于,同样表示重新 排序命令不可信,因此恢复备份的参考图像列表(如图3步骤S313)。 若没有小于,则表示重新排序命令是可信的,毋须恢复备份的参考图 像列表。
对于参考索引(reference index)侦测及恢复手段方面,本发明对 于计算出来的参考索引超出当前的参考图像列表,或者在当前参考图
像列表中找不到合适的参考图时,则强制当前区块的参考索引为当前 参考图像列表中的第一个参考图。
然而解码器如果在宏块(MB)解码过程中检测到错误则放弃当前 片段(slice)的解码。由于H.264可使用最多16个参考图,因此当前 帧缓存器(frame buffer)里残留的资料可能与当前图像差别很大,为 了使用户看到好的效果,必须对没有解码的MBs进行错误恢复。错误 恢复可以利用当前图像中已解码的MBs进行帧内预测(Intra prediction) (copy or interpolation),也可以利用已解码的其它图像进行帧间预测 (Inter prediction) (direct copy or derivated MVs prediction)。
请参阅图4,为本发明对没有解码的宏块进行错误恢复的参考图 的选择流程图。在选择参考图的过程中要考虑场景切换(scene change) 的问题。在本发明中采用统计帧内宏块(Intra MBs)的个数的方法。 当一幅图中的帧内宏块的个数超过一默认值(threshold)时,这幅图很可 倉t是场景切换点(scene change point)。
如图4所示,首先判断当前图是否为解码的第一幅图(如图4步 骤S401)。如果当前图是解码的第一幅图,则使用当前图进行帧内预 测(Intra prediction)(如图4步骤S403)。否则从当前图像队列中寻 找POC值刚刚大于当前图的POC的图1像(pic—H)(如图4步骤S405)。 当前图像队列可以是DPB中的参考图,还可以包括不在DPB中但仍未 显示的其它图像。接着判断当前图是否为场景切换点(possible scene changepoint)(如图4步骤S407)。若当前图是场景切换点,接着判 断图1像(pic—H)是否为有效(valid)(如图4步骤S409)。如果当前 图是场景切换点而且图1像(pic—H)有效,则选择图1像(pic一H)进行帧 间预测(Interprediction)错误恢复(如图4步骤S411)。如果当前图 是场景切换点但图1像(picji)无效,则使用当前图进行帧内预测(如 图4步骤S413)。如果当前图不是场景切换点,则从当前图像队列中 寻找POC值刚刚小于当前图的POC的Pic L (如图4步骤S415)。然后再判断图1像(pic—H)是否为场景切换点(如图4步骤S417)。若图 1像(pic一H)是场景切换点,便再判断Pic一L有效是否有效(如图4步骤 S419)。如果图1像(pic—H)是场景切换点并且Pic—L有效,则选择Pic一L 进行帧间预测错误恢复(如图4步骤S421)。如果图1像(pic一H)是场 景切换点且Pic—L无效,则使用当前图进行帧内预测(如图4步骤 S423)。如果图l像(pic—H)不是场景切换点,则需判断是否图l像(pic—H) 和Pic—L都有效(如图4步骤S425)。若图1像(pic—H)不是场景切换 点并且图1像(pic—H)和Pic—L都有效,选择图1像(pic—H)及Pic_L两 者间正确解码宏块数多的图像来执行帧间预测错误恢复,如果正确解 码宏块数相同则选择Pic—L (如图4步骤S427)。如果图1像(pic—H) 不是场景切换点并且图1像(pic一H)和Pic—L只用一个有效,则选择有 效的图像(图l像(pic—H)或Pic—L)来执行帧间预测错误恢复(如图4 步骤S429、 S431、 S433及S435)。如果图1像(pic—H)不是场景转换 点并且图1像(pic—H)和Pic—L都无效,则使用当前图进行帧内预测(如 图4步骤S437)。
以上所述,仅为本发明较佳的具体实施例的详细说明与附图,惟 本发明的特征并不局限于此,并非用以限制本发明,本发明的所有范 围应以下述的申请专利范围为准,凡合于本发明申请专利范围的精神 与其类似变化的实施例,皆应包含于本发明的范畴中,任何熟悉该项 技艺者在本发明的领域内,可轻易思及的变化或修饰皆可涵盖在所述 的专利范围内。
权利要求
1.一种影像解码器的码流错误侦测方法,其特征在于,步骤包括接收一码流;将该码流解码;检查该码流中顺序参数设定值SPS指定的图像大小是否超出当前码流等级参数规定的最大值,若为超过,则认为当前的顺序参数设定值SPS有错;检查该码流中图像参数设定值PPS所指定当前使用的顺序参数设定值SPS的索引值,若当前指定的顺序参数设定值SPS不存在,则认为当前图像参数设定值的PPS有错;检查该码流中片段档头所指定当前使用的图像参数设定值PPS的索引值,如果当前指定的图像参数设定值PPS不存在,则认为当前的片段档头有错;及检查该码流中当前的宏块数,若当前的宏块数大于图像中的总宏块数,则认为当前宏块解码有错。
2. 如权利要求l所述的码流错误侦测方法,其特征在于,该步骤 还包括该解码器在对重新排序图像序号进行解码时,如果连续解码出 来有效的重新排序图像序号的个数超过应有的参考图的个数,则认为 重新排序参考图像列表的解码有错。
3. 如权利要求l所述的码流错误侦测方法,其特征在于,该步骤 还包括检查该解码器产生重新排序参考图像列表后的结果,如果有效 的参考序号列表中的参考图的个数小于应有的参考图的个数,则认为 重新排序参考图像列表有错。
4. 如权利要求l所述的码流错误侦测方法,其特征在于,该步骤 还包括根据H.264 subclause 8.4.1计算和推导当前区块或宏块的参考索 引时,如果计算出来的参考索引超出了当前的参考图像列表,或者在当前参考图像列表中找不到合适的参考图,则认为当前宏块解码有错。
5. 如权利要求4所述的码流错误侦测方法,其特征在于,计算出 来的参考索引超出当前的参考图像列表,或者在当前参考图像列表中 找不到合适的参考图时,则强制当前区块的参考索引为当前参考图像 列表中的第一个参考图。
6. 如权利要求l所述的码流错误侦测方法,其特征在于,该步骤还包括该解码器在对区块残余系数进行解码时,如果解码出来的非零 系数个数与零系数个数的和大于当前区块应有的最大系数个数,则认 为当前宏块解码有错。
7. 如权利要求l所述的码流错误侦测方法,其特征在于,该步骤 还包括在对当前区块根据H.264 subclause 8.3进行帧内预测时,尽管选 择的帧内预测模式没有超出语法范围,但是用到的相邻区块不存在或 不合理,则认为当前宏块解码有错。
8. 如权利要求l所述的码流错误侦测方法,其特征在于,该解码 器若在宏块解码过程中检测到错误则放弃含错误宏块的当前片段的解 码。
9. 一种参考图像列表的错误侦测及恢复方法,其特征在于,步骤包括接收一重新排序参考图像列表命令;将当前的参考图像列表备份;开始重新排序参考图像列表;若重新排序图像的序号大于一设定值,则恢复备份的参考图像列 表;及若重新排序后的参考图像列表中,其有效参考图的个数小于应有 的参考图的个数,则恢复备份的参考图像列表。
10. 如权利要求9所述的参考图像列表的错误侦测及恢复方法,其特征在于该设定值为3。
11. 一种对未解码宏块的错误恢复的参考图选择方法,其特征在于,步骤包括接收一影像码流;根据该影像码流判断当前图是否为解码的第一幅图,若是,则使 用当前图进行帧内预测,而若不是,则于当前图像队列中寻找图像显 示顺序值POC刚刚大于当前图像的图像显示顺序值POC的图1像;若当前图为场景切换点且该图1像为有效,则以图1像进行帧间 预测,若当前图为场景切换点而图1像为无效,则使用当前图进行帧内预测;若当前图不为场景切换点,则从当前图像队列中寻找图像显示顺 序值POC刚刚小于当前图像的图像显示顺序值POC的图2像;若图1像为场景切换点且图2像为有效,则以图2像进行帧间预 测,若图1像为场景切换点而图2像为无效,则使用当前图进行帧内 预测;若图l像不为场景切换点,则判断图l像及图2像是否皆为有效, 若皆为有效则选择两者间正确解码宏块较多的图像执行帧间预测;若图l像不为场景切换点,图1像及图2像不皆为有效,则选择 有效的图1像或图2像执行帧间预测;及若图1像不为场景切换点,图1像及图2像皆为无效,则使用当 前图进行帧内预测。
12. 如权利要求ll所述的参考图选择方法,其特征在于,当一幅 图像中帧内预测的宏块个数超过一默认值,该幅图像为场景切换点。
13. 如权利要求ll所述的参考图选择方法,其特征在于,当前图 像队列可以是解码图像缓存器中的参考图,还可以包括不在解码图像 缓存器中但仍未显示的其它图像。
14.如权利要求ll所述的参考图选择方法,其特征在于,该步骤 还包括若图l像不为场景切换点,且图l像及图2像皆为有效;此外, 正确解码宏块数相同,则选择图2像执行帧间预测。
全文摘要
一种H.264解码器中图像错误检测、恢复和隐藏的方法,其特征在于包括影像解码器的码流错误侦测、参考图像列表的错误侦测与恢复及对未解码宏块的错误恢复的参考图选择方法。藉此改善H.264解码过程中错误检测、恢复和隐藏,进而保证解码器不至于使用了错误的信息导致解码器不正常工作(crash),以及提供较好的解码结果。
文档编号H04N7/64GK101202923SQ20061017006
公开日2008年6月18日 申请日期2006年12月15日 优先权日2006年12月15日
发明者顺 原, 王津福 申请人:扬智科技股份有限公司