具体实施方式
本发明实施例中,考虑到在图1所示GOP中,I、P图像被用作后续图像解码的参考图像,因此这些图像的解码误差会进一步影响后续解码图像的质量,而B图像通常不被用作参考图像,因此B图像的解码误差不会扩散。
此外,考虑到在GOP中,B图像占有较大比例,如图1所示GOP中B图像占2/3,并且由于双向预测,B图像解码的复杂度远大于P图像解码,特别是双向预测需要从外部帧缓存(SDRAM)中读取的参考图像的数据量是单向预测的2倍。因此B图像简化解码能显著降低整个解码的复杂度并对视频质量影响较小。
为描述方便,本文中可将对解码质量影响较大的图像,如被用于后续图像解码的参考图像的I、P图像等称为关键图像(若预先可获知某些图像解码误差对整个视频质量的影响可以接受,则这些被用于参考图像的图像也可不被作为关键图像,如一个GOP中靠后的P图像),而将对解码质量影响相对较小的图像,如不被用作参考图像的B图像称为非关键图像。
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
实施例一:
图4为本发明实施例一中视频解码的方法的示例性流程图。如图4所示,该流程包括如下步骤:
步骤401,对待解码码流进行解码时,对其中的关键图像进行解码,得到关键图像的重建图像;对其中的非关键图像,按照第一预设抽样比进行像素抽样解码,得到非关键图像的重建图像。
本实施例中,进行视频解码时,按照预设方法,从待解码码流中识别关键图像和非关键图像。例如,预设方法可以为:I、P图像为关键图像,B图像为非关键图像,则识别I、P图像为关键图像,B图像为非关键图像。
对关键图像进行解码时,可以是对关键图像进行全分辨率解码,如按照视频编码标准进行全分辨率解码;此时,第一预设抽样比可以是水平2∶1,或垂直2∶1,或水平2∶1、垂直2∶1的抽样比等。
或者,对关键图像进行解码时,也可以是按照低于第一预设抽样比的第二预设抽样比,对关键图像进行像素抽样解码。例如,对非关键图像按照4∶1的抽样比进行像素抽样解码,而对关键图像则可按照2∶1的抽样比进行像素抽样解码等。其中,较佳地,第二抽样比的水平方向比值小于等于第一预设抽样比的水平方向比值,第二抽样比的垂直方向比值小于等于第一预设抽样比的垂直方向比值,例如,对非关键图像按照水平2∶1和垂直2∶1的抽样比,对关键图像按照水平2∶1或垂直2∶1的抽样比。
其中,进行像素抽样解码时,由于亮度分量,即Y分量所占比重较大,因此可以只对图像中的亮度分量进行像素抽样解码,对色度分量则可采用任何方式进行解码,如可对色度分量全分辨率解码,或者可按照低于亮度分量所采用抽样比的预设抽样比,进行像素抽样解码,或者还可按照与亮度分量所采用抽样比相同的预设抽样比,进行像素抽样解码等。
其中,进行像素抽样解码的过程可有多种,其中一种可以为:对待解码图像进行熵解码,解码出量化的变换系数和运动矢量等信息,对量化的变换系数进行反扫描及反量化,得到反量化后的变换系数,以解码块为单位,对得到的变换系数进行水平和/或垂直抽样反变换,得到水平和/或垂直的抽样残差图像块;根据解码过程中得到的运动矢量,进行水平和/或垂直抽样运动补偿,得到水平和/或垂直的抽样预测图像块;将所得到的抽样残差图像块和抽样预测图像块的对应像素相加,得到抽样的重建图像块。之后,根据所有重建图像块得到重建图像。
此外,考虑到全分辨率图像中过高的频率分量会留在进行像素抽样解码后的低分辨率图像中,因此当抽样在边缘细节丰富的区域部分进行时,将带来混叠赝像(Aliasing),因此为了消除混叠,可在抽样前进行低通滤波以去除过高的频率分量,即对非关键图像进行像素抽样之前可进一步包括:对非关键图像进行低通滤波。
其中,进行低通滤波时,可对整个图像进行二维低通滤波,或者若为了降低对整个图像进行二维低通滤波导致较高的复杂度,在本发明实施例中,可在对非关键图像抽样解码过程中,进行简化低通滤波,并将对重建图像的滤波抽样,变换为对残差图像块滤波抽样和对运动补偿参考图像块滤波抽样来等效。即:
本发明实施例中,对解码过程中得到的变换系数进行水平和/或垂直抽样反变换为:在变换系数构成的变换矩阵中舍弃高频变换系数,对保留的中低频变换系数进行水平和/或垂直抽样反变换。其中,由于变换系数构成的变换矩阵中左上角区域的变换系数代表了主要的低频和主要的中频信息,在解码得到的重建图像为低分辨率的情况下,仅使用这些系数可以保证足够的低分辨率解码图像质量,因此保留的中低频变换系数可以为:变换系数构成的变换矩阵中的左上角区域的变换系数。
其中,进行水平和/或垂直抽样运动补偿时,可对读入的参考图像块进行低通滤波,且实际应用中,可只对包含高频分量较多的编码块进行低通滤波,因为对于包含高频分量较少的编码块,省略滤波过程并不会导致明显的图像质量下降。本实施例中,为了对编码块的高频分量含量进行标识,可设置细节块标识,当细节块标识为细节有效时,表示该编码块包含的高频分量较多,否则表示包含的高频分量较少。因此,本实施例中,进行水平和/或垂直抽样运动补偿,得到抽样预测图像块的过程可以为:对变换系数中的高频变换系数进行统计,根据统计结果,确定解码块在水平和垂直方向的细节块标识;根据解码过程中得到的运动矢量,或者去掉亚像素部分后的所述运动矢量,以及滤波需求,读入参考图像块数据;根据解码块在水平和垂直方向的细节块标识,对读入的参考图像块数据进行低通滤波;根据解码过程中得到的运动矢量,对低通滤波后的参考图像块进行内插处理,得到预测图像块;或者根据去掉亚像素部分后的所述运动矢量,从低通滤波后的参考图像块直接得到预测图像块;对预测图像块进行水平和/或垂直抽样处理,得到抽样预测图像块。
其中,若将进行变换时变换系数构成的变换矩阵称为变换块,则对变换系数中的高频变换系数进行统计,根据统计结果,确定解码块在水平和垂直方向的细节块标识的过程可以为:以变换块为单位,对变换系数构成的变换矩阵中的高频变换系数按照水平和垂直方向分别进行统计,将每个方向高频变换系数的统计结果与预设门限比较,确定该变换块在水平方向和垂直方向的细节块标识;根据变换块在水平方向和垂直方向的细节块标识,以及解码块与变换块的对应关系,确定解码块在水平和垂直方向的细节块标识。
其中,对变换系数构成的变换矩阵中的高频变换系数按照水平和垂直方向分别进行统计时,可以是对高频变换系数值进行累加,也可以是对非零的高频变换系数的个数进行累加。
其中,根据变换块在水平方向和垂直方向的细节块标识,以及解码块与变换块的对应关系,确定解码块在水平和垂直方向的细节块标识时,可以是:若解码块所对应的任一变换块在水平方向的细节块标识为细节有效,则确定解码块在水平方向的细节块标识为细节有效,否则可确定为细节无效;若解码块所对应的任一变换块在垂直方向的细节块标识为细节有效,则确定解码块在垂直方向的细节块标识为细节有效,否则可确定为细节无效。或者也可以是:采用多数表决的方式确定,例如,若解码块在水平方向对应三个变换块,则若三个变换块中有一个以上变换块在水平方向的细节块标识为细节有效,则确定该解码块在水平方向的细节块标识为细节有效,否则为细节无效。同理,解码块在垂直方向的细节块标识的确定方法与在水平方向的细节块标识的确定方法一致,此处不再赘述。
此外,根据解码块在水平和垂直方向的细节块标识,对读入的参考图像块数据进行低通滤波的过程可以是:若解码块在水平方向细节标识为细节有效,则对读入的参考图像块数据进行水平低通滤波,如多阶多项式滤波;若解码块在垂直方向细节标识为细节有效,则对读入的参考图像块数据进行垂直低通滤波,如多阶多项式滤波。
本实施例中,由于细节块仅占参考图像的一小部分,因此上述滤波的复杂度(存储访问和滤波运算)将大大降低,此外,滤波与反变换、运动补偿构成块级流水处理,消除了单独滤波所需的存储访问。
本实施例中,为了降低参考数据的读入量,以便降低解码复杂度并节约成本,在进行参考图像块数据读入时,可根据所确定的解码块在水平和垂直方向的细节块标识和解码过程中得到的运动矢量的亚像素值,按预滤波和运动补偿的亚像素内插要求,对参考图像块数据进行抽样读入。具体抽样读入过程可以为:若解码块在水平方向细节块标识为细节有效或者所述运动矢量的水平亚像素值为亚像素有效,则将参考图像块的水平奇列、偶列数据同时读入,否则仅读入奇列或偶列数据;若解码块在垂直方向细节块标识为细节有效或者所述运动矢量的垂直亚像素值为亚像素有效,则将参考图像块的垂直奇行、偶行数据同时读入,否则仅读入奇行或偶行数据。
此外,为了进一步降低解码中的运算复杂度,根据解码过程中得到的运动矢量,在参考图像块中进行水平和/或垂直抽样运动补偿之前,可预先将水平和/或垂直运动矢量的亚像素部分舍去。这样一来,相关的参考图像数据读入和运动补偿内插运算操作可得以节省。本文中,将这种情形称为有失真的抽样运动补偿(Sub-sampling lossy MC),而将保留运动矢量亚像素部分的情形称为无失真的抽样运动补偿(Sub-sampling lossless MC)。
相应地,在有失真的抽样运动补偿中,在参考图像块中进行水平和/或垂直抽样运动补偿时,可对解码过程中得到的运动矢量去掉亚像素部分,并根据去掉亚像素部分后的运动矢量,在滤波后的参考图像块中进行水平和/或垂直抽样运动补偿。
相应地,在对参考图像块数据进行抽样读入时,可仅根据解码块在水平和垂直方向的细节块标识,对参考图像块数据进行抽样读入,读入的过程可以是:若解码块在水平方向细节块标识为细节有效,则将参考图像块的水平奇列、偶列数据同时读入,否则仅读入奇列或偶列数据;若解码块在垂直方向细节块标识为细节有效,则将参考图像块的垂直奇行、偶行数据同时读入,否则仅读入奇行或偶行数据。
最后,考虑到在DRAM中通常有多个区(Bank),每Bank有多个存储行,每存储行有多列,如一个单片32Meg×16DDR的SDRAM,分为4个Bank,每Bank有8K存储行,每个存储行有1024存储列。SDRAM每次访问的单位是一次突发(Burst),Burst的长度可配置,如可为4、8甚至256列。SDRAM等存储器由于器件本身特性的限制,每次随机的突发访问,如读数据或写数据,通常包括三个步骤:行激活(Active Row)、读/写数据以及预充电(precharge)。其中,预充电也可以理解为行关闭(Deactive Row)。这三个步骤中,除了中间的读/写数据是真正的数据传输时间外,头尾的两个步骤都可以理解为冗余过程,但是这两个步骤又不能省略,因为每个SDRAM等存储器都规定了最小的行激活和预充电时间,如果不能满足,则随机存储器将不能正常工作。只有在连续读写访问是针对同一行中的连续数据时,中间的Active和Precharge才可以省略。因此当每次从DRAM中读取的参考数据较少时,Active和Precharge开销将占很大比例,导致外存的带宽利用率很低。对于这类存储器,连续地、长Burst的存取才是有效率的。本实施例中,当非关键图像的重建图像相对于所述关键图像的重建图像的抽样比在水平方向大于等于2∶1时,通常是只对奇像素或只对偶像素进行抽样,因此从参考图像块数据中读取参考数据时,可能需要连续读取奇像素或偶像素,而传统存储方法中,对参考图像块数据的存储是奇、偶像素统一存储的,此时连续读取奇像素时,需要不停的重复Active和Precharge,因此本实施例中,为了提高对存储器的访问效率,可将关键图像的重建图像按照奇像素和偶像素分开,并各自存储,存储方式可以为展平方式等。这样每次读取时,可连续读取奇像素或偶像素,节省了Active和Precharge的开销。
其中,对色度分量进行像素抽样解码时,其中用到的细节块标识可对色度分量的高频分量统计得到,也可直接用亮度分量的对应块细节标识作为色度分量对应块的细节块标识。此外,由于人眼对色度分量不敏感,为了降低复杂度,对色度分量也可以采用“有失真的抽样运动补偿,以省略内插处理和相关参考数据的载入,甚至还可对细节块省略预滤波。
步骤402,按照显示顺序对所有重建图像进行排序,并对关键图像的重建图像进行降低分辨率处理,得到与显示格式规定的显示图像分辨率一致的重建图像,对所有重建图像进行处理后,得到规定格式的视频图像。
其中,由于关键图像的重建图像的分辨率通常比显示格式规定的显示图像的分辨率要高,因此需要对关键图像的重建图像进行降低分辨率处理,即关键图像的重建图像按照显示格式对应的显示图像分辨率进行采样处理。此外,由于对非关键图像通常进行像素抽样解码,因此,非关键图像的分辨率与显示图像分辨率较接近,可对非关键图像的重建图像按照显示图像分辨率进行适当调整即可。若非关键图像的重建图像分辨率与显示图像分辨率一致,则对关键图像的重建图像进行降低分辨率处理时,可将关键图像的重建图像按照非关键图像的重建图像的像素位置进行采样处理。例如,若关键图像采用全分辨率解码,而所需的显示图像分辨率为全分辨率重建图像的1/2时,即非关键图像按照抽样比2∶1进行像素抽样解码得到所需的显示分辨率,此时,若非关键图像是按照水平或垂直方向隔一像素抽样解码,则对应关键图像的全分辨率重建图像,也可按照水平或垂直方向隔一个像素抽取,并且抽取显示的像素位置与非关键图像解码重建图像的像素位置一致。
另外,色度图像需要做相应的缩小和/或扩大处理,以满足显示要求。
以上对本发明实施例一中视频解码的方法进行了详细描述,下面再对本发明实施例一中视频解码的装置进行详细描述。
图5为本发明实施例一中视频解码的装置的示例性结构图。如图5所示,该装置包括:图像识别模块、关键图像解码模块、非关键图像解码模块和后处理模块。
其中,图像识别模块用于按照预设方法,从待解码码流中识别关键图像和非关键图像。
非关键图像解码模块用于按照第一预设抽样比,对非关键图像进行像素抽样解码,得到非关键图像的重建图像。其中,进行像素抽样解码的过程可与图4所示步骤401中描述的过程一致。
关键图像解码模块用于对关键图像进行解码,得到关键图像的重建图像。其中,具体解码过程可有多种,例如,可以是进行全分辨率解码;也可以是以第二预设抽样比进行像素抽样解码,该第二预设抽样比低于非关键图像解码所用的第一预设抽样比。
后处理模块用于按照显示顺序,对所述关键图像的重建图像和所述非关键图像的重建图像进行排序,并对所述关键图像的重建图像按照显示格式对应的显示图像分辨率进行采样处理。其中,具体处理过程可与图4所示步骤402中描述的过程一致。
具体实现时,关键图像解码模块和非关键图像解码模块又分别可由多个模块组成,并且二者可重用部分模块,图像识别模块的功能可以设置在熵解码模块中,当熵解码出图像类型(I、P或B)后,根据预设的方法,如关键图像/非关键图像分类准则,识别当前所处理图像是否为关键图像,并可将所识别图像的信息提供给其它组成模块。如图6所示,图6示出了本发明实施例一中视频解码的装置的一个内部结构图。
如图6所示,关键图像解码模块和非关键图像解码模块均包括:熵解码模块、反量化模块、反变换模块、运动补偿模块、合成模块、参考数据读入模块和存储模块。
其中,熵解码模块,用于对压缩码流进行熵解码,解析出包括运动矢量在内的所有语法元素符号及量化的变换系数。
反量化模块,用于对量化的变换系数进行反扫描、反量化,得到反量化后的变换系数。
反变换模块,用于以解码块为单位,对所接收的关键图像的变换系数进行反变换,得到残差图像块;对所接收的非关键图像的变换系数进行水平和/或垂直抽样反变换,得到水平和/或垂直的抽样残差图像块。其中,反变操模块对所接收的关键图像的变换系数进行反变换时,可以是全分辨率的反变换,也可以是水平和/或垂直抽样的反变换,相应的残差图像块可以是全分辨率的残差图像块,也可以是抽样的残差图像块。
运动补偿模块,用于以解码块为单位,根据解码过程中输出的关键图像的运动矢量,或者根据去掉亚像素部分后的运动矢量,进行运动补偿,得到预测图像块;根据解码过程中输出的非关键图像的运动矢量,或者根据去掉亚像素部分后的运动矢量,进行水平和/或垂直抽样运动补偿,得到水平和/或垂直的抽样预测图像块。其中,关键图像的预测图像块可以是全分辨率的预测图像块,也可以是抽样的预测图像块。
合成模块,用于将来自反变换模块的残差图像块和来自运动补偿模块的预测图像块的对应像素相加,得到重建图像块;将来自反变换模块的抽样残差图像块和来自运动补偿模块的抽样预测图像块的对应像素相加,得到抽样的重建图像块。
存储模块,用于存储合成模块得到的重建图像块和抽样的重建图像块。其中,存储模块可以是SDRAM等存储器。
其中,运动补偿模块包括:参考数据读入模块和抽样处理模块。
其中,参考数据读入模块,用于从存储模块中根据解码过程中得到的运动矢量,或者去掉亚像素部分后的所述运动矢量,以及滤波需求,提取参考图像块数据进行读入。
抽样处理模块用于根据解码过程中得到的运动矢量,对低通滤波后的参考图像块进行内插处理,对内插处理后的参考图像块进行水平和/或垂直抽样处理;或者根据去掉亚像素部分后的所述运动矢量,对低通滤波后的参考图像块进行水平和/或垂直抽样处理,得到水平和/或垂直的抽样预测图像块。
此外,为了消除抽样在边缘细节丰富的区域部分进行时带来的混叠赝像,同样可在抽样前进行低通滤波以去除过高的频率分量,即进行像素抽样之前可进一步包括:进行低通滤波。其中,进行低通滤波时,可对整个图像进行二维低通滤波,或者若为了降低对整个图像进行二维低通滤波导致较高的复杂度,在本装置实施例中,也可在对非关键图像抽样解码过程中,进行简化低通滤波,并将对重建图像的滤波抽样,变换为对残差图像块滤波抽样和对运动补偿参考图像块滤波抽样来等效。即:相应地,本实施例中的非关键图像解码模块可进一步如图6中的虚线部分所示,还包括:高频系数处理模块和细节块标识模块。
其中,高频系数处理模块,用于以解码块为单位,在变换系数构成的变换矩阵中舍弃高频变换系数,将中低频变换系数输出给反变换模块。反变换模块对所接收的中低频变换系数进行水平和/或垂直抽样反变换,得到水平和/或垂直的抽样残差图像块。其中,中低频变换系数可以为:变换系数构成的变换矩阵中的左上角区域的变换系数。
细节块标识模块,用于对变换系数中的高频变换系数进行统计,根据统计结果,确定解码块在水平和垂直方向的细节块标识。其中,具体统计过程及解码块的细节块标识的确定过程可与图4所示步骤401中描述的过程一致,此处不再赘述。
此时,运动补偿模块可进一步根据细节块标识模块所确定的解码块在水平和垂直方向的细节块标识,进行所述水平和/或垂直抽样运动补偿操作。
此时,运动补偿模块可进一步包括:预滤波处理模块,用于根据细节块标识模块所确定的解码块在水平和垂直方向的细节块标识,对读入的参考图像块数据进行低通滤波,将滤波后的参考图像块数据提供给抽样处理模块。
其中,滤波的过程可与图4所示步骤401中描述的过程一致,此处不再赘述。
此外,为了节省存储模块的Active和Precharge的开销,该非关键图像解码模块中的参考数据读入模块可进一步地根据细节块标识模块所确定的解码块在水平和垂直方向的细节块标识和解码过程中输出的运动矢量的亚像素值,或者根据所确定的解码块在水平和垂直方向的细节块标识,对参考图像块数据进行抽样读入。具体抽样读入的过程可以与图4所示步骤401中描述的过程一致,此处不再赘述。
其中,若对关键图像也进行像素抽样解码,则关键图像解码模块也可进一步包括上述高频系数处理模块和细节块标识模块,并且运动补偿模块中的参考数据读入模块也可进行上述抽样读入;若对关键图像进行全分辨率解码,则上述高频系数处理模块和细节块标识模块对所接收的关键图像的相关数据可只起传输通路的作用,并不对所接收的数据进行处理。此外,运动补偿模块中的预滤波处理模块对所接收的关键图像的相关数据可只起传输通路的作用,并不对所接收的数据进行处理。
此外,当非关键图像的重建图像相对于关键图像的重建图像的抽样比在水平方向大于等于2∶1时,基于与图4所示方法相同的理由,该装置中的存储模块,可进一步地将关键图像的重建图像按照奇像素和偶像素分开,并各自存储,存储方式可以为展平方式等。
上述装置中,也可单独设置一个图像识别模块,用于接收熵解码输出的图像类型信息(如I、P或B图像类型),根据预设方法(如I、P图像为关键图像,B图像为非关键图像)对待解码图像进行关键图像和非关键图像的识别,根据识别结果对所述关键图像解码模块和所述非关键图像解码模块进行控制。
以上对本发明实施例中的视频解码方法及装置进行了总体的描述,下面将通过一个具体应用实施例对上述方法及装置进行进一步描述。
实施例二:
本实施例中,以对关键图像采用全分辨率解码、对非关键图像按照4∶1的抽样比,进行水平和垂直抽样解码的情况为例。
本实施例中,假设压缩码流为:单层高清晰码流MPEG2MP@HL(1440×115250fps progressive),8bit YCbCr 4:2:0;显示格式为:标准清晰度电视(SDTV)(720×57650fps progressive);GOP类型为:IBBP N=15,M=3;存储器为:SDRAM或DDR SDRAM。
图7为本发明实施例二中视频解码的方法的流程示意图,如图7所示,该流程包括如下步骤:
步骤701,按照标准解码方式,对关键图像(I和P图像)进行全分辨率解码,输出关键图像的1440×1152的全分辨率的重建图像。
步骤702,按水平、垂直均2∶1抽样比,对非关键图像(B图像)进行像素抽样解码,输出非关键图像的720×576的低分辨率的重建图像。
步骤703,对所有重建图像按照显示顺序进行排序,并进行格式转换等视频后处理,构成规定显示格式的视频图像。其中包括对关键图像的全分辨率重建图像进行降低分辨率处理,最后所有重建图像按720×576输出显示。
图7所示流程中,步骤701和步骤702并没有严格的先后顺序,上述流程中为了描述方便,设置了序号701和702。
其中,由于重建的非关键图像相对于重建的关键图像水平方向的抽样比等于2∶1,因此输出的全分辨率关键图像的重建图像在帧缓存中的奇、偶列像素分开各自按展平方式存放。
以亮度分量Y为例,假设全分辨率图像一行内8个水平连续的像素分别为Pixel0~7,对应灰度值(假定为8bit)分别为D0~7。小端格式(采用统一的大端还是小端格式不影响本方案的实质)存放如下:
奇、偶像素统一按展平(planar)方式存放;
地址 像素值
Addr D0
Addr+1 D1
Addr+2 D2
Addr+3 D3
Addr+4 D4
Addr+5 D5
Addr+6 D6
Addr+7 D7
则奇、偶像素分开各自按展平方式存放时,有:
a、奇像素存放:
地址 像素值
OddAddr D0
OddAddr+1 D2
OddAddr+2 D4
OddAddr+3 D6
b、偶像素存放:
地址像素值
EvenAddr D1
EvenAddr+1 D3
EvenAddr+2 D5
EvenAddr+3 D7
上述流程中,由于对关键图像采用的是标准解码方式,因此,此处不再详述,下面针对步骤702,即按水平、垂直均2∶1抽样比,对非关键图像(B图像)进行像素抽样解码的过程进行详细描述。当然,若对关键图像(I、P图像)进行像素抽样解码,如进行垂直2∶1(水平不抽样)的抽样比的像素抽样解码,则可输出中分辨率(1440×576)的重建图像。
图8为图7所示步骤702中对非关键图像进行像素抽样解码的具体流程图。该流程中以其中的一个编码块的解码过程为例,如图8所示,该流程包括如下步骤:
步骤801,执行熵解码获得运动矢量(MV)及量化的变换系数。
步骤802,执行反扫描和反量化,得到反量化后的变换系数。
步骤803,对反量化后的变换系数中的高频变换系数进行统计,根据统计结果,确定解码块在水平和垂直方向的细节块标识。
其中,水平方向的细节块标识可用FBFx表示,垂直方向的细节块标识可用FBFy表示,为1表示细节有效。
本步骤中,可通过统计反量化后的变换块对应的变换系数矩阵(一个变换块对应一个变换系数矩阵)的高频变换系数,确定对应变换块是否为细节块。假设反量化后的变换系数矩阵如图9所示,为8×8的DCT变换系数矩阵,则可统计矩阵右半部分4×8共32个系数中非0系数的个数记为Nr4×8,统计矩阵下半部分8×4共32个系数中非0系数的个数记为Nl8×4,则Nr4×8和Nl8×4分别反映了水平、垂直方向高频分量的大小。分别设置比较门限Tr和Tl,将Nr4×8,Nl8×4分别与Tr、Tl进行门限比较判决,根据判决结果确定该变换块水平、垂直方向是否为细节丰富的标志FBFx,FBFy,为1表示细节丰富,即细节有效。例如,预设Tr=3,当Nr4×8大于3时,则确定FBFx=1,即本8×8块水平方向为细节有效,同理,垂直方向的判决与水平方向类似。
若解码块的大小为16×16,且解码块包含4个8×8DCT变换块,则该16×16的解码块的细节标识可根据四个变换块的细节标识来决定。其中,水平和垂直方向分别决定,本实施例中采用以下判决准则:四个8×8变换块中若有一个变换块的水平方向为细节有效,则整个16×16解码块的水平方向为细节有效;同样四个8×8变换块中若有一个变换块垂直方向为细节有效,则整个16×16解码块的垂直方向为细节有效。
步骤804,舍弃高频变换系数,使用剩余变换系数执行水平和垂直方向的空间抽样反变换,获得抽样的残差图像块。
本实施例中,具体实现时,对每个变换块可仅使用左上角4×4的变换系数,并仅对奇行、奇列像素点进行反变换(IDCT),得到结果为奇行、奇列像素的4×4图像块,最后四个4×4图像块构成16×16的残差图像块。
步骤805,根据运动矢量,执行抽样的运动补偿,获得抽样的预测图像块。
本步骤中的具体实现过程可包括:
A、根据水平和垂直方向细节块标识FBFx和FBFy以及运动矢量的亚像素值,对相应的参考图像块数据进行抽样载入。
B、根据水平和垂直方向细节块标识FBFx和FBFy,对载入的参考图像块数据进行预滤波(Pre-filter)处理。
C、根据运动矢量,在滤波后的参考图像块中进行运动补偿内插(Interpolation)及抽样处理。
其中,具体的参考数据读入、预滤波和插值操作可按下述表一进行,以达到最大限度地节省存储访问带宽和运算复杂度的目的。表一中,若将水平和垂直运动矢量的最低有效位,即亚像素值分别记为MVyLSB和MVxLSB,而水平和垂直细节块标识分别记为FBFx和FBFy,此外若将四个标识组成一组比特位,并记为FLAG,令FLAG={FBFy,MVyLSB,FBFx,MVxLSB}。并在表一中,用“and”表示同时读入奇偶行(或列)像素,用“or”表示仅读入奇、偶行(或列)像素之一;用“None”表示不做滤波(或插值),用“H”表示做水平方向滤波(或插值),用“V”表示做垂直方向滤波(或插值),用“HV”表示做水平和垂直两个方向的滤波(或插值),则有表
FLAG |
参考数据(奇和/或偶列) |
参考数据(奇和/或偶行) |
滤波(水平和/或垂直) |
插值(水平和/或垂直) |
0000 |
or |
or |
None |
None |
0001 |
and |
or |
None |
H |
0010 |
and |
or |
H |
None |
0011 |
and |
or |
H |
H |
0100 |
or |
and |
None |
V |
FLAG |
参考数据(奇和/或偶列) |
参考数据(奇和/或偶行) |
滤波(水平和/或垂直) |
插值(水平和/或垂直) |
0101 |
and |
and |
None |
H V |
0110 |
and |
and |
H |
V |
0111 |
and |
and |
H |
H V |
1000 |
or |
and |
V |
None |
1001 |
and |
and |
V |
H |
1010 |
and |
and |
H V |
None |
1011 |
and |
and |
H V |
H |
1100 |
or |
and |
V |
V |
1101 |
and |
and |
V |
H V |
1110 |
and |
and |
H V |
V |
1111 |
and |
and |
H V |
H V |
表一
如表一所示,如果水平(或垂直)方向细节块标识或水平(或垂直)方向运动矢量的亚像素值中任一有效,则按滤波和运动补偿内插要求将相应区域水平(或垂直)奇、偶列(或行)像素同时载入;否则仅载入奇或偶列(或行)像素之一。如果水平(或垂直)方向细节块标识有效,则进行水平(或垂直)多阶多项式低通滤波。如果水平(或垂直)方向运动矢量的亚像素为亚像素有效,则进行水平(或垂直)运动补偿插值。
其中,进行抽样MC时可如图10所示,仅对奇行、奇列像素点进行。图10中所示仅为16×16解码块运动补偿中的8×8的局部块。对于非关键图像为B图像时,其解码块的运动补偿可能涉及前向和后向两个参考图像块,此处仅以其中一个为例。其中,图10(b)为输出的抽样预测图像块,仅包括全分辨率(高清)图像中的奇行、奇列像素。图10(a)为需要读入的参考图像块,假设本实施例中所示的16×16解码块的水平和垂直运动矢量均为亚像素有效,则载入时奇行、偶行、奇列、偶列像素均需载入。其中,奇列像素(C1、C3、C5、C7、C9、C11列)来自缓存中的奇列像素存储区,偶列像素(C2、C4、C6、C8、C10列)来自缓存中的偶列像素存储区,因此本实施例中所示的16×16解码块的水平和垂直运动矢量均为亚像素有效,而MPEG2中MC的内插为二阶插值,故对应需要载入的参考图像块大小为17×17。进一步地,如果这个解码块的细节块标识为细节有效,则为了抽样前对参考图像进行低通预滤波,需要载入该区域的邻域像素。假定水平、垂直每个方向的低通滤波为3阶多项式,如滤波系数为(1,2,1),(水平、垂直同时滤波时为二维3×3窗口低通滤波),则需要载入的参考图像块大小总共为19×19。
步骤806,将抽样残差图像块和抽样预测图像块的对应像素相加,得到抽样的重建图像块。
图8所示流程中,有些步骤之间并没有严格的先后顺序,上述流程中为了描述方便,设置了步骤的序号。
对于本实施例中4:2:0的图像格式,其中,待解码图像中的亮度分量可按照上述过程进行像素抽样解码,对于色度分量则可按照下述几种方式中的任一方式进行解码。
方式一:对色度分量可以采用全分辨率运动补偿,与进行像素抽样解码的亮度分量配合成为4:4:4,则可省略后处理阶段中色度分量的放大处理(upscaling)。
方式二:对色度分量可以采用水平方向全分辨率、垂直方向2∶1抽样比的像素抽样解码,与进行像素抽样解码的亮度分量配合成为4:2:2,当显示处理需要输入4:2:2时,也可省略后处理阶段色度分量的放大处理。
方式三:对色度分量采用与亮度分量方案类似的像素抽样解码方式,与进行像素抽样解码的亮度分量配合成为4:2:0,则后处理阶段的再对色度分量进行放大处理。
其中,对色度分量进行像素抽样解码的过程同样可包括:
(a)熵解码阶段获得色度分量量化的变换系数。
(b)执行反扫描和反量化,得到反量化后的变换系数。
(c)统计高频变换系数,确定解码块的细节块标识(水平方向FBFx,垂直方向FBFy)。
(d)舍弃高频变换系数,使用剩余变换系数执行水平(和/或垂直)方向空间抽样的反变换,获得抽样的残差图像块。
(e)执行抽样的运动补偿获得抽样的预测图像块。
本步骤中同样可具体包括:
(e1)根据水平和垂直方向细节块标识(FBFx和FBFy)、运动矢量的亚像素值,读入相应的参考图像数据。
(e2)根据水平和垂直方向细节块标识(FBFx和FBFy)对读入的参考图像数据进行预滤波处理。
(e3)根据运动矢量进行运动补偿内插及抽样处理。
(f)将抽样残差图像块和抽样预测图像块的对应像素相加,得到抽样的重建图像块。
上述过程中,也可以省略步骤(c),而直接用亮度分量的对应块的细节标识作为色度块的细节块标识。此外,由于人眼对色度分量不敏感,为了降低复杂度,对色度分量也可以采用“有失真的抽样运动补偿(Sub-sampling lossyMC)”,省略内插处理和相关的参考数据读入,甚至对细节块也省略预滤波。
以上对本发明实施例二中的视频解码的方法进行了详细描述,以下再对本发明实施例二中的视频解码的装置进行详细描述。
图11为本发明实施例二中视频解码的装置的结构示意图。如图11所示,该装置在图6所示装置结构的基础上,单独设置了一个图像识别模块。即该装置中,关键图像解码模块和非关键图像解码模块均包括:熵解码模块、反量化模块、反变换模块、运动补偿模块、合成模块和存储模块。此外,非关键图像解码模块还包括:高频系数处理模块、细节块标识模块和图像识别模块。其中,非关键图像解码模块的运动补偿模块具体包括:参考数据读入模块和预滤波处理模块和抽样处理模块。具体实现时,各模块的功能及连接关系与图6所示装置对应的说明部分一致,此处不再一一赘述。其中,图像识别模块对待解码图像进行关键图像和非关键图像的识别后,根据识别结果对所述关键图像解码模块和所述非关键图像解码模块中的各模块进行控制。
以下对本实施例的解码复杂度节省情况简要分析如下:
分析条件:
压缩码流:MPEG2MP@HL(1440×115250fps progressive);
显示格式:SDTV(720×57650fps progressive);
GOP类型:IBBP N=15,M=3;
存储器:SDRAM或DDR SDRAM。
以下对标准解码模式、本实施例方案1(采用无失真的抽样运动补偿),本实施例方案2(采用有失真的抽样运动补偿)三种方案下B图像亮度分量的一个解码块的解码(MC、IDCT)和后处理的存储访问量和运算操作进行分析,并且仅对一个参考图像(前向或后向参考图像)的情形,给出比较结果如下:
1、标准解码模式下:
计算复杂度:
IDCT:4个8×8变换块所有系数;
MC:16×16像素点;
后处理:对全分辨率图像进行1/4采样处理。
存储访问量:
MC:按字节数有:17×17=289;按32比特字数有:5×17=85;
后处理:读取全分辨率图像。
2、本实施例方案1(采用无失真的抽样运动补偿)下:
计算复杂度:
IDCT:4个8×8变换块中每个4×4系数,4×4空间点(细节块标识,需要额外增加48个累加运算);
MC:8×8像素点(暂不考虑预滤波);
后处理:不需要进行1/4下采样处理。
综合而言,本发明实施例方案1的计算复杂度约为标准解码方案的30%。
存储访问量:
MC:根据表1,假定每个方向半像素情况占50%,且暂不考虑预滤波,则按字节数有:(8×8×2+8×17×2+9×8+8×8+8×8+9×8+8×17×2+9×17×2)/8=156;按32比特字数有:(3×8×6+3×17×6)/8=46;
后处理:读取1/4分辨率图像。
综合而言,本发明实施例方案1的存储访问量约为标准解码方案的54%。
3、本实施例方案2(采用有失真的抽样运动补偿)下:
计算复杂度:
IDCT:4个8×8变换块中每个4×4系数,4×4空间点(额外增加48个累加运算);
MC:8×8像素点(预滤波仅对细节块);
后处理:不需要进行1/4下采样处理。
综合而言,本发明实施例方案2的计算复杂度约为标准解码方案的25%。
存储访问量:
MC:按字节数有:8×8;按32比特字数有:3×8=24;
后处理:读取1/4分辨率图像。
综合而言,本发明实施例方案2的存储访问量约为标准解码方案的22%(按字节)或28%(按32比特字)。
考虑到MC、IDCT、后处理的复杂度约占B图像解码80%以上,而B图像又占GOP图像数的2/3,因此本发明实施例中的技术方案能够明显降低高清解码复杂度,降低成本。另一方面,由于对关键图像仍可进行全分辨率或高于非关键图像的分辨率解码,从而避免了解码误差累积,使得解码显示SDTV视频质量的损失几乎可以忽略。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括:对待解码码流进行解码时,从待解码码流中识别关键图像和非关键图像,对其中的关键图像进行解码,得到关键图像的重建图像;对其中的非关键图像,按照第一预设抽样比进行像素抽样解码,得到非关键图像的重建图像;按照显示顺序对所有重建图像进行排序,并对关键图像的重建图像进行降低分辨率处理,得到与显示格式规定的显示图像分辨率一致的重建图像,对所有重建图像进行处理后,得到规定格式的视频图像。具体过程可与图4所示方法中描述的过程一致,此处不再一一赘述。
其中,所述的存储介质,如:ROM/RAM、磁碟、光盘等。
上述各实施例中的技术方案可应用于各种高清机顶盒(Cable STB、卫星STB、IPTV STB等)及各种标清显示电视等。不仅可以用于逐行图像压缩码流解码,也可以用于隔行图像压缩码流解码。既可以是硬件的,如专用集成电路(ASIC)实现,也适用于各种处理器(CPU或DSP)上软件实现。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。