一种hevc快速编码方法

文档序号:7773199阅读:432来源:国知局
一种hevc快速编码方法
【专利摘要】本发明公开了一种HEVC快速编码方法,其通过对预测最大编码单元进行四叉树结构类型分析,快速获取表示当前的最大编码单元的深度遍历区间的类型值,在获取该类型值的过程中由于当前的最大编码单元与相邻已编码的最大编码单元以及前向参考帧和后向参考帧中坐标位置相同的最大编码单元之间具有很大的相关性,因此利用预测最大编码单元的深度遍历区间的类型值来获取当前的最大编码单元的深度遍历区间的类型值,从而避免了当前的最大编码单元分割过程中许多不必要的深度遍历,在保证视频质量和码率不变的前提下,有效地降低了编码的计算复杂度。
【专利说明】—种HEVC快速编码方法
【技术领域】
[0001]本发明涉及一种视频编解码技术,尤其是涉及一种HEVC快速编码方法。
【背景技术】
[0002]随着网络技术和终端处理能力的不断发展,人们对视频压缩的要求越来越高,以满足远程监控、移动流媒体、便携摄像、医学成像等新领域的应用。视频编码联合专家组(Joint Collaborative Team on Video Coding, JCT-VC)正致力于研究新一代高效视频编码标准(High Efficiency Video Coding, HEVC),其核心目标是在 H.264/AVC highprofile的基础上,将压缩效率提高一倍。由于HEVC在编码结构上采用了超大尺寸四叉树结构的编码单元(Coding Unit, CU)、预测单元(Prediction Unit, PU)和变换单元(Transform Unit, TU),因此显著地提高了压缩效率,但同时也带来了编码复杂度的增加。
[0003]HEVC测试模型(HEVC Test Model,HM)采用递归的方式对最大编码单元(LargestCU,LCU)进行四叉树结构划分。如图1所示,HM中一个LCU最终分割形式的确定,需要采用递归的方式对⑶深度值(cbpth)进行O到3的全遍历,总共需要1+4+4X4+4X4X4=85次⑶尺寸选择的率失真优化(Rate-distortion Optimization, RDO)计算,再加上每个⑶还要进行各种PU预测和模式选择的率失真代价计算,这使得编码计算复杂度非常大。Li等人提出了一种自适应⑶深度遍历(Adaptive⑶Depth Range,ACUDR)方法,其主要通过空域相关性来预测当前IXU的⑶深度值,而大多数的IXU还是要遍历3个⑶深度值以上,因此该方法节省的时间是相当有限的。Shen等人采用时空域联合预测的方式,通过相邻LCU的CU深度值加权方式预测当前LCU的CU深度值,从而确定其相应的深度遍历区间,这种方法虽然很大程度上减少了遍历范围,但是并未考虑到视频内容及其序列的差异性,导致预测得到的深度遍历区间仍然存在相当大的改善空间。

【发明内容】

[0004]本发明所要解决的技术问题是提供一种在保证视频质量的前提下,能够有效地降低编码复杂度的HEVC快速编码方法。
[0005]本发明解决上述技术问题所采用的技术方案为:一种HEVC快速编码方法,其特征在于包括以下步骤:
[0006]①将高清视频中当前待处理的帧定义为当前帧;
[0007]②将当前帧中当前待编码的最大编码单元定义为当前最大编码单元;
[0008]③根据当前帧在高清视频中的位置及当前最大编码单元在当前帧中的位置,确定当前最大编码单元的所有预测最大编码单元,将由当前最大编码单元的所有预测最大编码单元构成的集合定义为当前最大编码单元的预测集合,并记为Ω,其中,Ω为空集或Ω中所包含的最大编码单元为L、LT、T、C0L1和C0L2中的至少一个,COLl表示当前帧的前向参考帧中与当前最大编码单元的坐标位置相同的最大编码单元,C0L2表示当前帧的后向参考帧中与当前最大编码单元的坐标位置相同的最大编码单元,L表示当前最大编码单元的左边相邻最大编码单元,LT表示当前最大编码单元的左上边相邻最大编码单元,T表示当前最大编码单元的上边相邻最大编码单元;
[0009]④令DRpred表示当前最大编码单元的深度遍历区间的类型值,然后确立DRpral与当前最大编码单元的深度遍历区间的一一对应关系,其中,DRpred为整数,且O ( DRpred ( 5 ;
[0010]⑤判断Ω是否等于全集U={C0L1,C0L2, L, LT, T},如果是,则执行步骤⑥,否则,直接确定DRpred的值,然后执行步骤⑦;
[0011]⑥对Ω中的每个最大编码单元进行四叉树结构类型分析,确定Ω中的每个最大编码单元的深度遍历区间的类型值,然后根据Ω中的每个最大编码单元的深度遍历区间的类型值,获取DRpred的值,再执行步骤⑦;
[0012]⑦根据DRpral的值,确定当前最大编码单元的深度遍历区间,然后根据当前最大编码单元的深度遍历区间对当前最大编码单元进行遍历编码,在遍历编码过程中,对当前最大编码单元进行编码单元早期裁剪,具体过程为:
[0013]⑦-1、将当前最大编码单元的深度遍历区间内当前待处理的编码单元定义为当前编码单元,将当前编码单元所在的层定义为当前层;
[0014]⑦_2、根据当前编码单元的深度值及当前编码单元在当前层中的位置,判定当前编码单元的下一层所有编码单元是否可以进行早期裁剪,具体过程为:
[0015]如果当前编码单元的深度值为0,则判定对当前编码单元的下一层所有编码单元不进行早期裁剪,然后执行步骤⑦-4 ;
[0016]如果当前编码单元的深度值为I或2,则当当前编码单元为当前层中的第I个或第2个或第3个编码单元时,判定对当前编码单元的下一层所有编码单元不进行早期裁剪,然后执行步骤⑦-4;而当当前编码单元为当前层中的第4个编码单元时,判断当前编码单元的深度值是否小于当前最大编码单元的深度遍历区间的最大值,如果是,则判定当前编码单元的下一层所有编码单元可以进行早期裁剪,然后执行步骤⑦_3,否则,不作处理,然后执行步骤⑦-5 ;
[0017]如果当前编码单元的深度值为3,则不作处理,然后执行步骤⑦-5 ;
[0018]⑦_3、比较当前编码单元的上一层编码单元的率失真代价,与当前层中的四个编码单元的率失真代价之和加上设定的判定阈值后得到的值,如果前者小于后者,则确定对当前编码单元的下一层编码单元进行早期裁剪,然后执行步骤⑦_5,如果前者大于或等于后者,则确定对当前编码单元的下一层编码单元不进行早期裁剪,然后执行步骤⑦-4;
[0019]⑦_4、判断当前编码单元的深度值是否小于当前最大编码单元的深度遍历区间的最大值,如果是,则将当前编码单元进一步分割为4个大小相同的下一层编码单元,然后将该下一层编码单元中当前待处理的编码单元作为当前编码单元,并将当前编码单元所在的层作为当前层,再返回步骤⑦-2继续执行,否则,直接执行步骤⑦-5 ;
[0020]⑦_5、当前编码单元编码过程结束,然后判断当前最大编码单元的深度遍历区间内的所有编码单元是否均处理完毕,如果是,则当前最大编码单元编码过程结束,然后执行步骤⑧,否则,再判断当前层中的四个编码单元是否均处理完毕,如果当前层中的四个编码单元均处理完毕,则将当前层的上一层编码单元中下一个待处理的编码单元作为当前编码单元,并将当前编码单元所在的层作为当前层,然后返回步骤⑦-2继续执行,如果当前层中的四个编码单元未处理完毕,则将当前层中下一个待处理的编码单元作为当前编码单元,然后返回步骤⑦-2继续执行;
[0021]⑧将当前帧中下一个待编码的最大编码单元作为当前最大编码单元,然后返回步骤③继续执行,直至当前帧中的所有最大编码单元均编码完毕;
[0022]⑨将高清视频中下一帧待处理的帧作为当前帧,然后返回步骤②继续执行,直至高清视频中的所有帧均处理完毕,至此完成了高清视频的快速编码。
[0023]所述的步骤③中当前最大编码单元的预测集合Ω的确定过程为:
[0024]如果当前帧为高清视频中的I帧图像组中的第I帧,则当当前最大编码单元为当前帧中的第I个最大编码单元时,Ω为空集;当当前最大编码单元为当前帧的第I列中除第I个最大编码单元外的其余最大编码单元时,Ω = {Τ};当当前最大编码单元为当前帧的第I行中除第I个最大编码单元外的其余最大编码单元时,Ω = {0 ;当当前最大编码单元为当前帧中除第I列和第I行外的其余最大编码单元时,Q = {L,LT, Τ};
[0025]如果当前帧为高清视频中的非I帧图像组中的第I帧或者最后I帧,则当当前最大编码单元为当前帧中的第I个最大编码单元时,Q = {C0L1,C0L2};当当前最大编码单元为当前帧的第I列中除第I个最大编码单元外的其余最大编码单元时,Q = {C0L1,C0L2,T};当当前最大编码单元为当前帧的第I行中除第I个最大编码单元外的其余最大编码单元时,Q = {C0L1,C0L2,L};当当前最大编码单元为当前帧中除第I列和第I行外的其余最大编码单元时,Q = {C0L1,C0L2, L, LT, T};
[0026]如果当前帧为高清视频中的非I帧图像组中的第2帧至第7帧中的任一帧,则当当前最大编码单元为当前帧中的第I个最大编码单元时,Q = {C0L1,C0L2};当当前最大编码单元为当前帧的第I列中除第I个最大编码单元外的其余最大编码单元时,Q = {C0L1,C0L2,T};当当前 最大编码单元为当前帧的第I行中除第I个最大编码单元外的其余最大编码单元时,Q = {C0L1,C0L2, L};当当前最大编码单元为当前帧中除第I列和第I行外的其余最大编码单元时,Q = {C0L1,C0L2, L, LT, T}。
[0027]所述的步骤④中DRpral与当前最大编码单元的深度遍历区间的一一对应关系为:当DRprad=O时,当前最大编码单元的深度遍历区间为[0,I];当DRpred=I时,当前最大编码单元的深度遍历区间为[0,2] ^DRpral=2时,当前最大编码单元的深度遍历区间为[1,2];当DRprai=3时,当前最大编码单元的深度遍历区间为[1,3];当DRprai=4时,当前最大编码单元的深度遍历区间为[2,3] ;iDRpMd=5时,当前最大编码单元的深度遍历区间为[0,3]。
[0028]所述的步骤⑤中直接确定的DRpral的值为5 ;所述的步骤⑥的具体过程为:
[0029]⑥-1、计算Ω中的每个最大编码单元在给定的基准深度值分别为O、1、2、3时的绝对深度误差和,将Ω中的第j个最大编码单元在给定的基准深度值为d时的绝对深度误差
和记为
【权利要求】
1.一种HEVC快速编码方法,其特征在于包括以下步骤: ①将高清视频中当前待处理的帧定义为当前帧; ②将当前帧中当前待编码的最大编码单元定义为当前最大编码单元; ③根据当前帧在高清视频中的位置及当前最大编码单元在当前帧中的位置,确定当前最大编码单元的所有预测最大编码单元,将由当前最大编码单元的所有预测最大编码单元构成的集合定义为当前最大编码单元的预测集合,并记为Ω,其中,Ω为空集或Ω中所包含的最大编码单元为L、LT、T、C0L1和C0L2中的至少一个,COLl表示当前帧的前向参考帧中与当前最大编码单元的坐标位置相同的最大编码单元,C0L2表示当前帧的后向参考帧中与当前最大编码单元的坐标位置相同的最大编码单元,L表示当前最大编码单元的左边相邻最大编码单元,LT表示当前最大编码单元的左上边相邻最大编码单元,T表示当前最大编码单元的上边相邻最大编码单元; ④令DRpral表示当前最大编码单元的深度遍历区间的类型值,然后确立DRpral与当前最大编码单元的深度遍历区间的一一对应关系,其中,DRpred为整数,且O ( DRpred ( 5 ; ⑤判断Ω是否等于全集仏{0)1^,0^2,1^1^,1'},如果是,则执行步骤?,否则,直接确定DRpred的值,然后执行步骤⑦; ⑥对Ω中的每个最大编码单元进行四叉树结构类型分析,确定Ω中的每个最大编码单元的深度遍历区间的类型值,然后根据Ω中的每个最大编码单元的深度遍历区间的类型值,获取DRpred的值,再执行步骤⑦; ⑦根据DRpred的值,确定当前最大编码单元的深度遍历区间,然后根据当前最大编码单元的深度遍历区间对当前最大 编码单元进行遍历编码,在遍历编码过程中,对当前最大编码单元进行编码单元早期裁剪,具体过程为: ⑦-1、将当前最大编码单元的深度遍历区间内当前待处理的编码单元定义为当前编码单元,将当前编码单元所在的层定义为当前层; ⑦-2、根据当前编码单元的深度值及当前编码单元在当前层中的位置,判定当前编码单元的下一层所有编码单元是否可以进行早期裁剪,具体过程为: 如果当前编码单元的深度值为0,则判定对当前编码单元的下一层所有编码单元不进行早期裁剪,然后执行步骤⑦-4 ; 如果当前编码单元的深度值为I或2,则当当前编码单元为当前层中的第I个或第2个或第3个编码单元时,判定对当前编码单元的下一层所有编码单元不进行早期裁剪,然后执行步骤⑦-4;而当当前编码单元为当前层中的第4个编码单元时,判断当前编码单元的深度值是否小于当前最大编码单元的深度遍历区间的最大值,如果是,则判定当前编码单元的下一层所有编码单元可以进行早期裁剪,然后执行步骤⑦_3,否则,不作处理,然后执行步骤⑦-5 ; 如果当前编码单元的深度值为3,则不作处理,然后执行步骤⑦-5 ; ⑦-3、比较当前编码单元的上一层编码单元的率失真代价,与当前层中的四个编码单元的率失真代价之和加上设定的判定阈值后得到的值,如果前者小于后者,则确定对当前编码单元的下一层编码单元进行早期裁剪,然后执行步骤⑦_5,如果前者大于或等于后者,则确定对当前编码单元的下一层编码单元不进行早期裁剪,然后执行步骤⑦-4 ; ⑦-4、判断当前编码单元的深度值是否小于当前最大编码单元的深度遍历区间的最大值,如果是,则将当前编码单元进一步分割为4个大小相同的下一层编码单元,然后将该下一层编码单元中当前待处理的编码单元作为当前编码单元,并将当前编码单元所在的层作为当前层,再返回步骤⑦-2继续执行,否则,直接执行步骤⑦-5 ; ⑦-5、当前编码单元编码过程结束,然后判断当前最大编码单元的深度遍历区间内的所有编码单元是否均处理完毕,如果是,则当前最大编码单元编码过程结束,然后执行步骤⑧,否则,再判断当前层中的四个编码单元是否均处理完毕,如果当前层中的四个编码单元均处理完毕,则将当前层的上一层编码单元中下一个待处理的编码单元作为当前编码单元,并将当前编码单元所在的层作为当前层,然后返回步骤⑦-2继续执行,如果当前层中的四个编码单元未处理完毕,则将当前层中下一个待处理的编码单元作为当前编码单元,然后返回步骤⑦-2继续执行; ⑧将当前帧中下一个待编码的最大编码单元作为当前最大编码单元,然后返回步骤③继续执行,直至当前帧中的所有最大编码单元均编码完毕; ⑨将高清视频中下一帧待处理的帧作为当前帧,然后返回步骤②继续执行,直至高清视频中的所有帧均处理完毕,至此完成了高清视频的快速编码。
2.根据权利要求1所述的一种HEVC快速编码方法,其特征在于所述的步骤③中当前最大编码单元的预测集合Ω的确定过程为: 如果当前帧为高清视频中的I帧图像组中的第I帧,则当当前最大编码单元为当前帧中的第I个最大编码单元时,Ω为空集;当当前最大编码单元为当前帧的第I列中除第I个最大编码单元外的其余最大编码单元时,Ω = {Τ};当当前最大编码单元为当前帧的第I行中除第I个最大编码单元外的其余最大编码单元时,Q = {L};当当前最大编码单元为当前帧中除第I列和第I行外的其余最大编码单元时,Q = {L,LT, Τ}; 如果当前帧为高清视频中`的非I帧图像组中的第I帧或者最后I帧,则当当前最大编码单元为当前帧中的第I个最大编码单元时,Q = {C0L1,C0L2};当当前最大编码单元为当前帧的第I列中除第I个最大编码单元外的其余最大编码单元时,Q = {C0L1,C0L2,T};当当前最大编码单元为当前帧的第I行中除第I个最大编码单元外的其余最大编码单元时,Q = {C0L1,C0L2,L};当当前最大编码单元为当前帧中除第I列和第I行外的其余最大编码单元时,Q = {C0L1, C0L2, L, LT, T}; 如果当前帧为高清视频中的非I帧图像组中的第2帧至第7帧中的任一帧,则当当前最大编码单元为当前帧中的第I个最大编码单元时,Q = {C0L1,C0L2};当当前最大编码单元为当前帧的第I列中除第I个最大编码单元外的其余最大编码单元时,Q = {C0L1,C0L2, T};当当前最大编码单元为当前帧的第I行中除第I个最大编码单元外的其余最大编码单元时,Q = {C0L1,C0L2, L};当当前最大编码单元为当前帧中除第I列和第I行外的其余最大编码单元时,Q = {C0L1,C0L2, L, LT, T}。
3.根据权利要求1或2所述的一种HEVC快速编码方法,其特征在于所述的步骤④中DRpral与当前最大编码单元的深度遍历区间的一一对应关系为:当DRpred=O时,当前最大编码单元的深度遍历区间为[0,1];当DRpred=I时,当前最大编码单元的深度遍历区间为[O, 2];当DRpred=2时,当前最大编码单元的深度遍历区间为[1,2];当DRpral=3时,当前最大编码单元的深度遍历区间为[1,3] ;iDRpral=4时,当前最大编码单元的深度遍历区间为[2,3];当DRpred=5时,当前最大编码单元的深度遍历区间为[0,3]。
4.根据权利要求3所述的一种HEVC快速编码方法,其特征在于所述的步骤⑤中直接确定的DRpred的值为5 ;所述的步骤⑥的具体过程为: ⑥-1、计算Ω中的每个最大编码单元在给定的基准深度值分别为0、1、2、3时的绝对深度误差和,将Ω中的第j个最大编码单元在给定的基准深度值为d时的绝对深度误差和记


5.根据权利要求4所述的一种HEVC快速编码方法,其特征在于所述的步骤⑦-3中当当前编码单元的深度值为I时,设定的判定阈值取值为65 ;当当前编码单元的深度值为2时,设定的判定阈值取值为8。
【文档编号】H04N19/114GK103533355SQ201310470508
【公开日】2014年1月22日 申请日期:2013年10月10日 优先权日:2013年10月10日
【发明者】蒋刚毅, 杨小祥, 彭宗举, 郁梅, 邵枫, 陈芬, 朱天之, 李福翠 申请人:宁波大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1