一种基于编码单元层次提前跳过的视频编码方法和系统的制作方法

文档序号:7868514阅读:210来源:国知局
专利名称:一种基于编码单元层次提前跳过的视频编码方法和系统的制作方法
技术领域
本发明属于视频编解码领域,更具体地,涉及一种基于编码单元层次提前跳过的视频编码方法和系统。
背景技术
现在,人们对高质量和高清晰度的视频内容的需求日益增多,视频编码的标准也向着高压缩比和支持高清视频的方向发展。ITU-T视频图像专家组和IS0/IEC移动图像专家组联合组建了联合视频编码小组(Joint Collaborative Team on Video Coding,简称JCT-VC)来研究下一代视频编码标准,即高效视频编码(High Efficient Video Coding,简称HEVC)。主要针对分辨率从320x240到7680x4320的视频压缩,编码性能与H. 264/AVC的高级档次编码(High Profile)相比较,提高一倍的效率。然而,现有的HEVC编码方法存在一些缺点其新引进的四叉树分割编码技术,虽然对编码效率的提高做出了很大的贡献,但计算复杂度却相当高。四叉树分割从最大的编码单元(大小64x64)开始,向下依次划分成四个更小的编码单元,直到划分成最小的编码单元为止(大小8x8),每个深度的每个编码单元都要计算,复杂度相当高。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种基于编码单元层次提前跳过的视频编码方法,其能够提前跳过四叉树分割的某些深度的编码块的计算,降低编码的复杂度。为实现上述目的,本发明提供了一种基于编码单元层次提前跳过的视频编码方法,包括以下步骤 ( I)读取视频序列,其包括N帧图像;(2)设置编码帧数计数器i=l ;(3)对第i帧进行编码,具体包括以下子步骤(3-1)将第i帧划分成X个最大编码单元,其大小为64x64,其中X为正整数;(3-2)设置最大编码单元计数器j=l ;(3-3)设置编码深度计数器k=0 ;(3-4)判断第i帧的类型是关键帧还是非关键帧,如果是关键帧,则转入步骤(3-8),如果是非关键帧,则转入步骤(3-5);(3-5)对深度为k的编码单元进行跳过模式的预测,以得到跳过模式的代价;(3-6)对深度为k的编码单兀,获取其同位编码单兀的最大编码深度y,并判断是否存在k兰I且y>k,若存在则进入步骤(3-7),否则跳到步骤(3-8);(3-7)获取该同位编码单元的四个子编码单元的最大编码深度zO、zl、z2、z3,并判断zO、zl、z2、z3是否均等于y+1,若是则进入步骤(3-8),否则跳到步骤(3-10);(3-8)对深度为 k 的编码单兀进行 Inter2Nx2N、Inter2NxN、InterNx2N、InterNxN模式的预测,以得到各种模式的代价;(3-9)对深度为k的编码单元,进行巾贞内Intra2Nx2N、IntraNxN模式的预测,以得到各种模式的代价;(3-10)比较上述所有模式的代价,并从中选择代价最小的模式作为最佳预测模式,并保存该最佳模式的编码信息;(3-11)判段编码深度k是否小于预设的最大编码深度,如果小于,则设置k=k+l,并返回步骤(3-4)进行下一深度的编码,否则转入步骤(3-12);(3-12)判断是否有j〈X,如果是则设置j=j+l,并返回步骤(3-3)进行下一个最大编码单元的编码,否则转入步骤(4);(4)判断是否有i〈N,如果是则设置i=i+l,并返回步骤(3)对下一帧进行编码,否则过程结束。获取最大编码深度具体为,由于前一帧已经编码完成,同位编码单元的编码深度会存储在一个数组中,其存储的是每个4x4大小的存储单元的编码深度,从数组中即可找到最大的编码深度。编码信息包括编码深度、预测模式和预测信息。预设的最大编码深度为3。通过本发明所构思的以上技术方案,与现有技术相比,本方法具有以下的有益效果1、降低 了编码的复杂度,由于在步骤(3-7)的四叉树深度遍历过程中提前跳过了不必要的编码深度的计算,所以节省了编码的时间。2、降低复杂的同时保证了编码性能的不下降,因为在步骤(3-6)和(3-7)中利用了前一帧同一位置的编码信息来判断是否跳过当前深度的编码单元的编码是否跳过,并且在步骤(3-5)中保留了要跳过的深度的编码单元跳过模式的预测,所以只会跳过很不可能被选择的编码深度和预测模式。本发明的另一目的在于提供一种基于编码单元层次提前跳过的视频编码系统,其能够提前跳过四叉树分割的某些深度的编码块的计算,降低编码的复杂度。为实现上述目的,本发明提供了一种基于编码单元层次提前跳过的视频编码系统,包括读取模块、计数器设置模块、编码模块和判断模块,读取模块用于读取视频序列,其包括N帧图像,计数器设置模块用于设置编码帧数计数器i=l,编码模块用于对第i帧进行编码,判断模块用于判断是否有i〈N,如果是则设置i=i+l,并返回编码模块对下一帧进行编码,否则过程结束,编码模块包括划分子模块、第一设置子模块、第二设置子模块、第一判断子模块、第一预测子模块、第二判断子模块、第三判断子模块、第二预测子模块、第三预测子模块、比较子模块、第四判断子模块、第五判断子模块,划分子模块用于将第i帧划分成X个最大编码单元,其大小为64x64,其中X为正整数,第一设置子模块用于设置最大编码单元计数器j=l,第二设置子模块用于设置编码深度计数器k=0,第一判断子模块用于判断第i帧的类型是关键帧还是非关键帧,如果是关键帧,则转入第二预测子模块,如果是非关键帧,则转入第一预测子模块,第一预测子模块用于对深度为k的编码单元进行跳过模式的预测,以得到跳过模式的代价,第二判断子模块用于对深度为k的编码单元,获取其同位编码单元的最大编码深度y,并判断是否存在k = I且y>k,若存在则进入第三判断子模块,否则跳到第二预测子模块,第三判断子模块用于获取该同位编码单元的四个子编码单元的最大编码深度z0、zl、z2、z3,并判断z0、zl、z2、z3是否均等于y+Ι,若是则进入第二预测子模块,否则跳到比较子模块,第二预测子模块用于对深度为k的编码单元进行Inter2Nx2N、Inter2NxN、InterNx2N、InterNxN模式的预测,以得到各种模式的代价,第三预测子模块用于对深度为k的编码单元,进行帧内Intra2Nx2N、IntraNxN模式的预测,以得到各种模式的代价,比较子模块用于比较上述所有模式的代价,并从中选择代价最小的模式作为最佳预测模式,并保存该最佳模式的编码信息,第四判断子模块用于判段编码深度k是否小于预设的最大编码深度,如果小于,则设置k=k+l,并返回第一判断子模块进行下一深度的编码,否则转入第五判断子模块,第五判断子模块用于判断是否有j〈X,如果是则设置j=j+l,并返回第二设置子模块进行下一个最大编码单元的编码,否则转入判断模块。编码信息包括编码深度、预测模式和预测信息。预设的最大编码深度为3。通过本发明所构思的以上技术方案,与现有技术相比,本系统具有以下的有益效果1、降低了编码的复杂度,由于在第三判断子模块的四叉树深度遍历过程中提前跳过了不必要的编码深度的计算,所以节省了编码的时间。2、降低复杂的 同时保证了编码性能的不下降,因为在第二判断子模块和第三判断子模块中利用了前一帧同一位置的编码信息来判断是否跳过当前深度的编码单元的编码是否跳过,并且在第一预测子模块中保留了要跳过的深度的编码单元跳过模式的预测,所以只会跳过很不可能被选择的编码深度和预测模式。


图1为四种典型预测单元的划分形式。图2为64x64的最大编码单元最终的划分结构及其对应的四叉树。图3为本发明基于编码单元层次提前跳过的视频编码方法的流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下首先对本发明的技术术语进行解释和说明。编码单元Coding Uint,简称⑶,视频编码的最基本单元,每个编码单元的大小可以是2N*2N,其中N可为32、16、8、4。最大编码单元可以使用四叉树分割技术,递归划分成为众多大小不一的小编码单元。预测单元Prediction Unit,简称PU,是携带进行预测时所需相关信息的基本单元。预测单元与编码单元的关系是,一个编码单元可以包含一个或多个预测单元。图1给出了在编码单元确定情形下的几种预测单元的划分形式,四叉树分割英文为Quadtreedivision,从最大编码单元(大小64x64)开始,可以向下依次划分成四个更小的编码单元,直到划分成最小的编码单元为止(大小8x8)。四叉树最大可以有四个深度O、1、2、3,其对应的编码单元大小为64x64、32x32、16xl6、8x8。图2表示了一个最大编码单元(64x64)最终的划分结构,对应的四叉树有四个深度,根表示最大的64x64的编码单元,叶子节点表示了一个预测单元。编码深度D^th of Coding Tree,四叉树的某一深度,编码深度O、1、2、3,其对应的编码单元大小为64x64、32x32、16xl6、8x8。关键帧又名I帧,使用帧内预测模式进行预测的帧非关键帧又名P帧,使用帧间预测和帧内预测模式进行预测的帧巾贞内预测模式IntraPrediction,只使用本巾贞的像素信息的预测模式,包括Intra2Nx2N和IntraNxN模式,Intra2Nx2N即是将一个2Nx2N编码单兀作为一个预测单兀进行帧内预测,IntraNxN即是将一个2Nx2N编码单元划分成四个NxN的预测单元进行帧内预测。如图1的第一幅和第四幅图所示。帧间预测模式Inter Prediction,使用前面某一帧作为参考帧的预测模式,包括Inter2Nx2N、InterNx2N、Inter2NxN、InterNxN 四种模式,对应的划分方法如图1。跳过模式Skip Mode,没有残差系数的预测单元,其运动参数(运动矢量、参考帧索引)可以从相邻的帧间预测模式的预测单元获得。模式的代价每种预测模式都可以通过代价函数算出一个编码所需的代价,代价最小的模式作为最佳预测模式。进行模式选择的代价函数为Jfflode=SSE+Amode^Bmode其中SSE (英文为Sum of Square Error)表示两个同样大小块的均方误差和,Bnwde代表了该模式的编码 所需的比特数,XnrodeS系数,λ mode的值与量化参数Qp成指数关系,当 Qp 为 32 时,Amode 的值为 360. 15632358170024。量化参数Quantization Parameter,简称Qp,量化参数表示了图像压缩的质量,其值越小表示量化越精细,图像的质量就越高,其值越大表示量化越粗糙,图像的质量就越低。Qp的范围可以从0-51。同位编码单元英文是Collocated Coding Unit,对当前巾贞中一个大小为2Nx2N的编码单元,其同位编码单元为前一帧中相同位置的同样大小的编码单元。如图3所示,本发明基于编码单元层次提前跳过的视频编码方法包括以下步骤( I)读取视频序列,其包括N帧图像;(2)设置编码帧数计数器i=l ;(3)对第i帧进行编码,具体包括以下子步骤(3-1)将第i帧划分成X个最大编码单元,其大小为64x64,其中X为正整数;(3-2)设置最大编码单元计数器j=l ;(3-3 )设置编码深度计数器k=0 ;(3-4)判断第i帧的类型是关键帧(I帧)还是非关键帧(P帧),如果是关键帧,则转入步骤(3-8),如果是非关键帧,则转入步骤(3-5);(3-5)对深度为k的编码单元进行跳过模式的预测,以得到跳过模式的代价;(3-6)对深度为k的编码单兀,获取其同位编码单兀的最大编码深度Y,并判断是否存在k兰I且y>k,若存在则进入步骤(3-7),否则跳到步骤(3-8);最大编码深度的具体获取方法为,由于前一帧已经编码完成,同位编码单元的编码深度会存储在一个数组中,其存储的是每个4x4大小的存储单元的编码深度,从数组中即可找到最大的编码深度;(3-7)获取该同位编码单元的四个子编码单元的最大编码深度zO、zl、z2、z3,并判断z0、zl、z2、z3是否均等于y+1,若是则进入步骤(3-8),否则跳到步骤(3_10);(3-8)对深度为 k 的编码单兀进行 Inter2Nx2N、Inter2NxN、InterNx2N、InterNxN模式的预测,以得到各种模式的代价;(3-9)对深度为k的编码单元,进行帧内Intra2Nx2N、IntraNxN模式的预测,以得到各种模式的代价;(3-10)比较上述所有模式的代价,并从中选择代价最小的模式作为最佳预测模式,并保存该最佳模式的编码信息;具体而言,编码信息包括编码深度、预测模式和预测信息;(3-11)判段编码深度k是否小于预设的最大编码深度,如果小于,则设置k=k+l,并返回步骤(3-4)进行下一深度的编码,否则转入步骤(3-12);在本实施方式中,预设的最大编码深度为3 ;(3-12)判断是否有j〈X,如果是则设置j=j+l,并返回步骤(3-3)进行下一个最大编码单元的编码,否则转入步骤(4);(4)判断是否有i〈N,如果是则设置i=i+l,并返回步骤(3)对下一帧进行编码,否则过程结束。本发明基于编码单元层次提前跳过的视频编码系统包括读取模块1、计数器设置模块2、编码模块3、判断模块4。

读取模块I用于读取视频序列,其包括N帧图像。计数器设置模块2用于设置编码帧数计数器i=l。编码模块3用于对第i帧进行编码。判断模块4用于判断是否有i〈N,如果是则设置i=i+l,并返回编码模块3对下一帧进行编码,否则过程结束。编码模块3包括划分子模块31、第一设置子模块32、第二设置子模块33、第一判断子模块34、第一预测子模块35、第二判断子模块36、第三判断子模块37、第二预测子模块38、第三预测子模块39、比较子模块40、第四判断子模块41、第五判断子模块42。划分子模块31用于将第i帧划分成X个最大编码单元,其大小为64x64,其中X为正整数。第一设置子模块32用于设置最大编码单元计数器j=l。第二设置子模块33用于设置编码深度计数器k=0。第一判断子模块34用于判断第i帧的类型是关键帧(I帧)还是非关键帧(P帧),如果是关键帧,则转入第二预测子模块38,如果是非关键帧,则转入第一预测子模块35。第一预测子模块35用于对深度为k的编码单元进行跳过模式的预测,以得到跳过模式的代价。第二判断子模块36用于对深度为k的编码单元,获取其同位编码单元的最大编码深度1,并判断是否存在k g I且y>k,若存在则进入第三判断子模块37,否则跳到第二预测子模块38。
最大编码深度的具体获取方法为,由于前一帧已经编码完成,同位编码单元的编码深度会存储在一个数组中,其存储的是每个4x4大小的存储单元的编码深度,从数组中即可找到最大的编码深度;第三判断子模块37用于获取该同位编码单元的四个子编码单元的最大编码深度zO、zl、z2、z3,并判断zO、zl、z2、z3是否均等于y+1,若是则进入第二预测子模块38,否则跳到比较子模块40。第二预测子模块38用于对深度为k的编码单元进行Inter2Nx2N、Inter2NxN、InterNx2N、InterNxN模式的预测,以得到各种模式的代价。第三预测子模块39用于对深度为k的编码单元,进行巾贞内Intra2Nx2N、IntraNxN模式的预测,以得到各种模式的代价。比较子模块40用于比较上述所有模式的代价,并从中选择代价最小的模式作为最佳预测模式,并保存该最佳模式的编码信息;具体而言,编码信息包括编码深度、预测模式和预测信息;第四判断子模块41用于判段编码深度k是否小于预设的最大编码深度,如果小于,则设置k=k+l,并返回第一判断子模块41进行下一深度的编码,否则转入第五判断子模块42。在本实施方式中,预设的最大编码深度为3。第五判断子模块用于判断是否有j〈X,如果是则设置j=j+l,并返回第二设置子模块33进行下一个最大编码单元的编码,否则转入判断模块4。实例为了验证本发明方法的可行性和有效性,在真实环境下验证本发明方法。实验测试条件为Windows7操作 系统,2. 8GHz主频的CPU,2G内存。测试序列如下表1:
表I测试序列
权利要求
1.一种基于编码单元层次提前跳过的视频编码方法,其特征在于,包括以下步骤 (1)读取视频序列,其包括N帧图像; (2)设置编码帧数计数器i=l; (3)对第i帧进行编码,具体包括以下子步骤 (3-1)将第i帧划分成X个最大编码单元,其大小为64x64,其中X为正整数; (3-2)设置最大编码单元计数器j=l ; (3-3)设置编码深度计数器k=0 ; (3-4)判断第i帧的类型是关键帧还是非关键帧,如果是关键帧,则转入步骤(3-8),如果是非关键帧,则转入步骤(3-5); (3-5)对深度为k的编码单元进行跳过模式的预测,以得到跳过模式的代价; (3-6)对深度为k的编码单元,获取其同位编码单元的最大编码深度y,并判断是否存在k兰I且y>k,若存在则进入步骤(3-7),否则跳到步骤(3-8); (3-7)获取该同位编码单元的四个子编码单元的最大编码深度zO、zl、z2、z3,并判断z0、zl、z2、z3是否均等于y+1,若是则进入步骤(3-8),否则跳到步骤(3-10); (3-8)对深度为 k 的编码单兀进行 Inter2Nx2N、Inter2NxN、InterNx2N、InterNxN 模式的预测,以得到各种模式的代价; (3-9)对深度为k的编码单元,进行帧内Intra2Nx2N、IntraNxN模式的预测,以得到各种模式的代价; (3-10)比较上述所有模式的代价,并从中选择代价最小的模式作为最佳预测模式,并保存该最佳模式的编码信息; (3-11)判段编码深度k是否小于预设的最大编码深度,如果小于,则设置k=k+l,并返回步骤(3-4)进行下一深度的编码,否则转入步骤(3-12); (3-12)判断是否有j〈X,如果是则设置j=j+l,并返回步骤(3-3)进行下一个最大编码单元的编码,否则转入步骤(4); (4)判断是否有i〈N,如果是则设置i=i+l,并返回步骤(3)对下一帧进行编码,否则过程结束。
2.根据权利要求1所述的优化方法,其特征在于,获取最大编码深度具体为,由于前一帧已经编码完成,同位编码单元的编码深度会存储在一个数组中,其存储的是每个4x4大小的存储单元的编码深度,从数组中即可找到最大的编码深度。
3.根据权利要求1所述的优化方法,其特征在于,编码信息包括编码深度、预测模式和预测信息。
4.根据权利要求1所述的优化方法,其特征在于,预设的最大编码深度为3。
5.一种基于编码单元层次提前跳过的视频编码系统,其特征在于, 包括读取模块、计数器设置模块、编码模块和判断模块; 读取模块用于读取视频序列,其包括N帧图像; 计数器设置模块用于设置编码帧数计数器i=l ; 编码模块用于对第i帧进行编码; 判断模块用于判断是否有i〈N,如果是则设置i=i+l,并返回编码模块对下一帧进行编码,否则过程结束;编码模块包括划分子模块、第一设置子模块、第二设置子模块、第一判断子模块、第一预测子模块、第二判断子模块、第三判断子模块、第二预测子模块、第三预测子模块、比较子模块、第四判断子模块、第五判断子模块; 划分子模块用于将第i帧划分成X个最大编码单元,其大小为64x64,其中X为正整数; 第一设置子模块用于设置最大编码单元计数器j=l ; 第二设置子模块用于设置编码深度计数器k=0 ; 第一判断子模块用于判断第i帧的类型是关键帧还是非关键帧,如果是关键帧,则转入第二预测子模块,如果是非关键帧,则转入第一预测子模块; 第一预测子模块用于对深度为k的编码单元进行跳过模式的预测,以得到跳过模式的代价;第二判断子模块用于对深度为k的编码单元,获取其同位编码单元的最大编码深度y,并判断是否存在k = I且y>k,若存在则进入第三判断子模块,否则跳到第二预测子模块;第三判断子模块用于获取该同位编码单元的四个子编码单元的最大编码深度zO、zl、z2、z3,并判断z0、zl、z2、z3是否均等于y+1,若是则进入第二预测子模块,否则跳到比较子模块; 第二预测子模块用于对深度为k的编码单元进行Inter2Nx2N、Inter2NxN、InterNx2N、InterNxN模式的预测,以得到各种模式的代价; 第三预测子模块用于对深度为k的编码单元,进行巾贞内Intra2Nx2N、IntraNxN模式的预测,以得到各种模式的代价; 比较子模块用于比较上述所有模式的代价,并从中选择代价最小的模式作为最佳预测模式,并保存该最佳模式的编码信息; 第四判断子模块用于判段编码深度k是否小于预设的最大编码深度,如果小于,则设置k=k+l,并返回第一判断子模块进行下一深度的编码,否则转入第五判断子模块; 第五判断子模块用于判断是否有j〈X,如果是则设置j=j+l,并返回第二设置子模块进行下一个最大编码单元的编码,否则转入判断模块。
6.根据权利要求5所述的优化系统,其特征在于,编码信息包括编码深度、预测模式和预测信息。
7.根据权利要求5所述的优化系统,其特征在于,预设的最大编码深度为3。
全文摘要
本发明公开了一种基于编码单元层次提前跳过的视频编码方法,包括以下步骤读取视频序列,其包括N帧图像,设置编码帧数计数器i=1,对第i帧进行编码,判断是否有i<N,如果是则设置i=i+1,并对下一帧进行编码,否则过程结束。由于本发明采用四叉树深度遍历过程中提前跳过了不必要的编码深度的计算,所以节省了编码的时间;此外,由于利用了前一帧同一位置的编码信息来判断是否跳过当前深度的编码单元的编码是否跳过,并且保留了要跳过的深度的编码单元跳过模式的预测,所以只会跳过很不可能被选择的编码深度和预测模式。
文档编号H04N7/32GK103067704SQ20121053757
公开日2013年4月24日 申请日期2012年12月12日 优先权日2012年12月12日
发明者喻莉, 梅利健, 冯慧, 李乐 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1