一种结合方向预测和块复制预测的视频帧内编码方法与流程

文档序号:14136662阅读:368来源:国知局
一种结合方向预测和块复制预测的视频帧内编码方法与流程

本发明涉及视频编码技术领域,尤其涉及一种结合方向预测和块复制预测的视频帧内编码方法。



背景技术:

近年来,随着互联网的迅猛发展,在互联网中针对视频的应用需求越来越多,而视频的数据量非常大,要想视频能在带宽有限的互联网中传输,首先必须解决的问题就是视频压缩编码问题。

已经制定的视频编码标准都属于混合视频编码框架。所谓混合视频编码,一般由以下几部分组成:预测(Prediction)、变换(Transform)、量化(Quantization)和熵编码(Entropy Coding)。其中预测一般分为帧内预测和帧间预测。只能选用帧内预测模式的视频帧称为I帧,既可以使用帧内预测模式也可以使用帧间预测模式的视频帧称为P帧或B帧。帧内预测模式利用与当前编码块处于同一帧但已经重建出来的像素作为参考,去除空间冗余。帧间预测模式则利用已经重建的其他帧的像素作为参考,去除时间冗余。一般帧间预测的准确率更高,但视频的第一帧或者为了随机访问而设置的随机接入帧必须是I帧,只能使用帧内预测。进一步提升帧内预测的准确率,从而改进I帧压缩效率,是视频编码里很迫切的需求。

目前,通用视频编码的最新标准为High Efficiency Video Coding(HEVC)。HEVC的帧内预测共有35种模式。其中模式0表示使用Planar方式预测,1表示使用DC方式预测,而2至34表示使用方向外插模式。这些模式的共同特点是基于当前编码块紧邻的已重建像素进行外插,下文将统称为方向预测(Directional Intra Prediction,DIP)。

此外,有一些工作提出了其他的帧内预测方法,例如:

组合两个方向的外插预测(Y.Ye and M.Karczewicz,"Improved h.264intra coding based on bi-directional intra prediction,directional transform,and adaptive coefficient scanning,"Image Processing,2008.ICIP 2008.15th IEEE International Conference on,San Diego,CA,2008,pp.2116-2119.)。但是,HEVC中的方向预测或组合两个方向加权的预测,只考虑视频帧中的局部相关性,而未考虑非局部相关性。

基于边缘(edge)的预测(Liu,D.,Sun,X.,Wu,F.,&Zhang,Y.Q.(2008).Edge-oriented uniform intra prediction.Image Processing,IEEE Transactions on,17(10),1827-1836.)。基于模板匹配(template matching)的预测(T.K.Tan,C.S.Boon,and Y.Suzuki,“Intra prediction bytemplate matching,”in Image Processing,2006IEEEInternational Conference on,Oct 2006,pp.1693–1696.)。但是,基于边缘的预测或基于模板匹配的预测,解码端复杂度较高。

基于帧内块复制(Intra block copy)的预测(Siu-Leong Yu and Christos Chrysafis,“Intra-predictionusing intra-macroblock motion compensation,”Oct.2006,US Patent7,120,196.)。帧内块复制预测技术在当前帧的已重建区域为当前编码块找一个最相似的参考块作为预测,对所找到最相似的参考块与当前块之间的空间运动矢量进行编码;它非常适用于一帧中有重复纹理模式出现的情况。这项技术在HEVC的后续扩展版本:屏幕内容编码(Screen Content Coding,SCC)中被采用,因为这类视频中经常出现一些重复的形状规则的模式,比如字符等。块复制预测技术在SCC中效果很好,但在自然视频中效果不佳。这主要是因为自然视频拍摄角度复杂,噪声大,即使存在重复的纹理,也是大多不规则形状,很少和方形的编码单元对齐,因此无法搜索到相似参考块。



技术实现要素:

本发明的目的是提供一种结合方向预测和块复制预测的视频帧内编码方法,既能考虑视频帧中的局部相关性,又能考虑非局部相关性,同时还要保证解码端复杂度较低。

本发明的目的是通过以下技术方案实现的:

一种结合方向预测和块复制预测的视频帧内编码方法,包括:

利用预先定义的包含多种划分类型的分割模板分别对当前编码块进行划分,每一种划分类型均将当前编码块划分为两个子块;

对所有子块进行帧内块复制IBC预测:先确定IBC预测的搜索范围,再利用搜索范围内的每一参考块对所有子块进行IBC预测,确定每个子块的最优运动矢量,并记录每个子块由最优运动矢量预测得到的预测误差;

对所有子块进行DIP预测,得到每一子块的最优预测方向,并记录每一子块由最优预测方向预测得到的预测误差;

当获得所有子块在IBC预测与DIP预测下的预测误差后,通过快速率失真优化RDO在所有划分类型中确定最优划分及相应的预测组合;

通过完整RDO比较,对当前编码块进行IBC预测的编码代价、对当前编码块进行DIP预测的编码代价,以及最优划分及相应的预测组合的编码代价,选择编码代价最小的预测模式作为当前编码块最终的预测模式。

进一步的,所述多种划分类型包括:

涵盖了水平方向、竖直方向、从右上到左下的对角方向,以及从左上到右下的对角方向的共28种划分类型,其中,每一方向均有7种划分类型,水平方向与竖直方向的划分类型统称为矩形划分,从右上到左下的对角方向与从左上到右下的对角方向的划分类型统称为三角划分;

或者,包括了左上为L型的7种划分类型和右上为L型的7种划分类型,这两种划分方式都是将当前编码块划分为两个子块:一个子块为正方形块,另一个子块为两块相邻矩形块组成的L型块。

进一步的,若所述多种划分类型为涵盖了水平方向、竖直方向、从右上到左下的对角方向,以及从左上到右下的对角方向的共28种划分类型,则对所有子块进行帧内块复制IBC预测时,确定每个子块的最优运动矢量,并记录每个子块由最优运动矢量预测得到的预测误差包括:

将水平方向的7种划分记为H1~H7,竖直方向的7种划分记为V1~V7;从右上到左下的对角方向的7种划分记为T1~T7,从左上到右下的对角方向的7种划分记为D1~D7;

当把搜索范围内的每个参考块搜索完成之后,得到了每种划分里每个子块的最小的预测误差和相应的最优运动矢量,进行如下标记:

水平方向中第1种划分类型H1上下两个子块的最优运动矢量MV分别记为MV_IBC_H1_1与MV_IBC_H1_2,相应的预测误差记为SAD_IBC_H1_1与SAD_IBC_H1_2;依次类推,第7种划分类型H7上下两个子块的最优运动矢量MV分别记为MV_IBC_H7_1与MV_IBC_H7_2,相应的预测误差记为SAD_IBC_H7_1与SAD_IBC_H7_2;

竖直方向中第1种划分类型V1左右两个子块的最优运动矢量MV分别记为MV_IBC_V1_1与MV_IBC_V1_2,相应的预测误差记为SAD_IBC_V1_1与SAD_IBC_V1_2;依次类推,第7种划分类型V7左右两个子块的最优运动矢量MV分别记为MV_IBC_V7_1与MV_IBC_V7_2,相应的预测误差记为SAD_IBC_V7_1与SAD_IBC_V7_2;

从右上到左下的对角方向中第1种划分类型T1左上和右下两个子块的最优运动矢量MV分别记为MV_IBC_T1_1与MV_IBC_T1_2,相应的预测误差记为SAD_IBC_T1_1与SAD_IBC_T1_2;依次类推,第7种划分类型T7左上和右下两个子块的最优运动矢量MV分别记为MV_IBC_T7_1与MV_IBC_T7_2,相应的预测误差记为SAD_IBC_T7_1与SAD_IBC_T7_2;

从左上到右下的对角方向中第1种划分类型D1右上和左下两个子块的最优运动矢量MV分别记为MV_IBC_D1_1与MV_IBC_D1_2,相应的预测误差记为SAD_IBC_D1_1与SAD_IBC_D1_2;依次类推,第7种划分类型T7右上和左下两个子块的最优运动矢量MV分别记为MV_IBC_D7_1与MV_IBC_D7_2,相应的预测误差记为SAD_IBC_D7_1与SAD_IBC_D7_2。

进一步的,所述对所有子块进行DIP预测,得到每一子块的最优预测方向,并记录每一子块由最优预测方向预测得到的预测误差包括:

DIP预测即为在HEVC的35种帧内预测中确定最优预测方向,在每种方向的预测值生成之后,计算预测块和当前编码块之间每一子块的预测误差;当把35个预测方向遍历完成之后,得到了每种划分里每个子块的最小的预测误差和相应的帧内预测方向,进行如下标记:

水平方向中第1种划分类型H1上下两个子块的最优预测方向分别记为Mode_DIP_H1_1与Mode_DIP_H1_2,相应的预测误差记为SAD_DIP_H1_1与SAD_DIP_H1_2;依次类推,第7种划分类型H7上下两个子块的最优预测方向分别记为Mode_DIP_H7_1与Mode_DIP_H7_2,相应的预测误差记为SAD_DIP_H7_1与SAD_DIP_H7_2;

竖直方向中第1种划分类型V1左右两个子块的最优预测方向分别记为Mode_DIP_V1_1与Mode_DIP_V1_2,相应的预测误差记为SAD_DIP_V1_1与SAD_DIP_V1_2;依次类推,第7种划分类型H7左右两个子块的最优预测方向分别记为Mode_DIP_V7_1与Mode_DIP_V7_2,相应的预测误差记为SAD_DIP_V7_1与SAD_DIP_V7_2;

从右上到左下的对角方向中第1种划分类型T1左上和右下两个子块的最优预测方向分别记为Mode_DIP_T1_1与Mode_DIP_T1_2,相应的预测误差记为SAD_DIP_T1_1与SAD_DIP_T1_2;依次类推,第7种划分类型T7左上和右下两个子块的最优预测方向分别记为Mode_DIP_T7_1与Mode_DIP_T7_2,相应的预测误差记为SAD_DIP_T7_1与SAD_DIP_T7_2;

从左上到右下的对角方向中第1种划分类型D1右上和左下两个子块的最优预测方向分别记为Mode_DIP_D1_1与Mode_DIP_D1_2,相应的预测误差记为SAD_DIP_D1_1与SAD_DIP_D1_2;依次类推,第7种划分类型T7右上和左下两个子块的最优预测方向分别记为Mode_DIP_D7_1与Mode_DIP_D7_2,相应的预测误差记为SAD_DIP_D7_1与SAD_DIP_D7_2。

进一步的,所述通过快速率失真优化RDO在所有划分类型中确定最优划分及相应的预测组合包括:

在水平方向、竖直方向、从右上到左下的对角方向和从左上到右下的对角方向各自的7种划分类型里确定出总体代价最小的划分和预测组合,其过程如下:

在水平方向H1~H7的7种划分类型中,共有14种组合,其对应的代价分别为:

上式中,i=1,2,...,7;λ是拉格朗日乘子,由编码器指定的一个参数来确定,Bits函数是对MV和DIP方向进行熵编码所需耗费比特数的一个估计;找出C_H_i_1,C_H_i_2中最小的组合,记为C_H_k1_p1,对应的预测模式记为(k1,p1),k1是1到7中一个数,表明了划分类型为Hk1;p1是1到2中一个数,表明了预测组合方式,1是指左边部分进行IBC预测,右边部分进行DIP预测,2则反之;

在竖直方向V1~V7的7种划分类型中,共有14种组合,其对应的代价分别为:

从上式中找出C_V_i_1,C_V_i_2中最小的组合,记为C_V_k2_p2,对应的预测模式记为(k2,p2),k2是1到7中一个数,表明了划分类型为Vk2;p2是1到2中一个数,表明了预测组合方式,1是指上面部分进行IBC预测,下面部分进行DIP预测,2则反之;

在右上到左下的对角方向T1~T7的7种划分中,共有14种组合,其对应的代价分别为:

从上式中找出C_T_i_1,C_T_i_2中最小的组合,记为C_T_k3_p3,对应的预测模式记为(k3,p3),k3是1到7中一个数,表明了划分类型为Tk3;p3是1到2中一个数,表明了预测组合方式,1是指左上部分进行IBC预测,右下部分进行DIP预测,2则反之;

在左上到右下的对角方向D1~D7的7种划分中,共有14种组合,其对应的代价分别为:

从上式中找出C_D_i_1,C_D_i_2中最小的组合,记为C_D_k4_p4,对应的预测模式记为(k4,p4),k4是1到7中一个数,表明了划分类型为Dk4;p4是1到2中一个数,表明了预测组合方式,1是指右上部分进行IBC预测,左下部分进行DIP预测,2则反之。

进一步的,所述通过完整RDO比较,对当前编码块进行IBC预测的编码代价、对当前编码块进行DIP预测的编码代价,以及最优划分及相应的预测组合的编码代价,选择编码代价最小的预测模式作为当前编码块最终的预测模式包括:

对当前编码块进行DIP预测,经过完整的RDO算出来的编码代价记为C_DIP;

对当前编码块进行IBC预测,经过完整RDO算出来的编码代价记为C_IBC;

对于水平方向,由预测模式(k1,p1),根据对应的运动矢量MV_IBC_Hk1_p1、帧内预测方向和划分类型Hk1生成当前块的预测块,经过完整RDO算出来的编码代价记为C_H;其中,

对于竖直方向,由预测模式(k2,p2),根据对应的运动矢量MV_IBC_Vk2_p2、帧内预测方向和划分类型Vk2生成当前块的预测块,经过完整RDO算出来的编码代价记为C_V;其中,

对于从右上到左下的对角方向,由预测模式(k3,p3),根据对应的运动矢量MV_IBC_Tk3_p3、帧内预测方向和划分类型Tk3生成当前块的预测块,经过完整RDO算出来的编码代价记为C_T;其中,

对于从左上到右下的对角方向,由预测模式(k4,p4),根据对应的运动矢量MV_IBC_Dk4_p4、帧内预测方向和划分类型Dk4生成当前块的预测块,经过完整RDO算出来的编码代价记为C_D;

比较C_DIP、C_IBC、C_H、C_V、C_T、C_D的大小,将最小编码代价对应的预测模式作为当前编码块最终的预测模式。

进一步的,若所述多种划分类型包括左上为L型的7种划分类型和右上为L型的7种划分类型,则对所有子块进行帧内块复制IBC预测时,确定每个子块的最优运动矢量,并记录每个子块由最优运动矢量预测得到的预测误差包括:

将左上为L型的7种划分类型记为L1~L7,右上为L型的7种划分类型记为R1~R7;

当把搜索范围内的每个参考块搜索完成之后,得到了每种划分里每个子块的最小的预测误差和相应的最优运动矢量,进行如下标记:

左上为L型中第1种划分类型L1的左上和右下两个子块的最优运动矢量MV分别记为MV_IBC_L1_1、MV_IBC_L1_2,相应的预测误差记为SAD_IBC_L1_1与SAD_IBC_L1_2;依次类推,第7种划分类型L7左上和右下两个子块的最优运动矢量MV分别记为MV_IBC_L7_1与MV_IBC_L7_2,相应的预测误差记为SAD_IBC_L7_1与SAD_IBC_L7_2;

右上为L型中第1种划分类型R1的右上和左下两个子块的最优运动矢量MV分别记为MV_IBC_R1_1、MV_IBC_R1_2,相应的预测误差记为SAD_IBC_R1_1与SAD_IBC_R1_2;依次类推,第7种划分类型R7右上和左下两个子块的最优运动矢量MV分别记为MV_IBC_R7_1与MV_IBC_R7_2,相应的预测误差记为SAD_IBC_R7_1与SAD_IBC_R7_2。

进一步的,所述对所有子块进行DIP预测,得到每一子块的最优预测方向,并记录每一子块由最优预测方向预测得到的预测误差包括:

DIP预测即为在HEVC的35种帧内预测中确定最优预测方向,在每种方向的预测值生成之后,计算预测块和当前编码块之间每一子块的预测误差;当把35个预测方向遍历完成之后,得到了每种划分里每个子块的最小的预测误差和相应的帧内预测方向,进行如下标记:

左上为L型中第1种划分类型L1的左上和右下两个子块的的最优预测方向分别记为Mode_DIP_L1_1与Mode_DIP_L1_2,相应的预测误差记为SAD_DIP_L1_1与SAD_DIP_L1_2;依次类推,第7种划分类型L7左上和右下两个子块的最优预测方向分别记为Mode_DIP_L7_1与Mode_DIP_L7_2,相应的预测误差记为SAD_DIP_L7_1与SAD_DIP_L7_2;

右上为L型中第1种划分类型R1的右上和左下两个子块的的最优预测方向分别记为Mode_DIP_R1_1与Mode_DIP_R1_2,相应的预测误差记为SAD_DIP_R1_1与SAD_DIP_R1_2;依次类推,第7种划分类型R7右上和左下两个子块的最优预测方向分别记为Mode_DIP_R7_1与Mode_DIP_R7_2,相应的预测误差记为SAD_DIP_R7_1与SAD_DIP_R7_2。

进一步的,所述通过快速率失真优化RDO在所有划分类型中确定最优划分及相应的预测组合包括:

在左上为L型和右上为L型各自的7种划分类型里确定出总体代价最小的划分和预测组合,其过程如下:

在左上为L型L1~L7的7种划分类型中,共有14种组合,其对应的代价分别为:

上式中,i=1,2,...,7;Bits函数是对MV和DIP方向进行熵编码所需耗费比特数的一个估计;找出C_L_i_1,C_L_i_2中最小的组合,记为C_L_k1_p1,对应的预测模式记为(k1,p1),k1是1到7中一个数,表明了划分类型为Lk1;p1是1到2中一个数,表明了预测组合方式,1是指左上的L型部分进行IBC预测,右下的正方形部分进行DIP预测,2则反之;

在右上为L型R1~R7的7种划分类型中,共有14种组合,其对应的代价分别为:

找出C_R_i_1,C_R_i_2中最小的组合,记为C_R_k2_p2,对应的预测模式记为(k2,p2),k2是1到7中一个数,表明了划分位置为Rk2;p2是1到2中一个数,表明了预测组合方式,1是指右上的L型部分进行IBC预测,左下的正方形部分进行DIP预测,2则反之。

进一步的,所述通过完整RDO比较,对当前编码块进行IBC预测的编码代价、对当前编码块进行DIP预测的编码代价,以及最优划分及相应的预测组合的编码代价,选择编码代价最小的预测模式作为当前编码块最终的预测模式包括:

对当前编码块进行DIP预测,经过完整的RDO算出来的编码代价记为C_DIP;

对当前编码块进行IBC预测,经过完整RDO算出来的编码代价记为C_IBC;

对于左上为L型的划分类型,由预测模式(k1,p1),根据对应的运动矢量MV_IBC_Lk1_p1、帧内预测方向和划分类型Lk1生成当前块的预测块,经过完整RDO算出来的编码代价记为C_L;其中,

对于右上为L型的划分类型,由预测模式(k2,p2),根据对应的运动矢量MV_IBC_Rk2_p2、帧内预测方向和划分类型Rk2生成当前块的预测块,经过完整RDO算出来的编码代价记为C_R;其中,

比较C_DIP、C_IBC、C_L、C_R的大小,将最小编码代价对应的预测模式作为当前编码块最终的预测模式。

由上述本发明提供的技术方案可以看出,通过灵活的块分割方式将编码块分成两个子块,使得同一个块的预测内容可以同时包含局部信息和非局部信息,然后RDO决定出每个块代价最小的预测。同时设计了快速RDO和完整RDO的结合,在不影响编码性能的前提下,降低了编码复杂度。总体效果是基本不增加解码端复杂度,并取得更高的压缩效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1为本发明实施例提供的一种结合方向预测和块复制预测的视频帧内编码方法的流程图;

图2为本发明实施例提供的竖直方向中V1,V2,…,V7的划分示意图;

图3为本发明实施例提供的水平方向中H1,H2,…,H7的划分示意图;

图4为本发明实施例提供的从右上到左下的对角方向中T1,T2,…,T7的划分示意图;

图5为本发明实施例提供的从左上到右下的对角方向中中D1,D2,…,D7的划分示意图;

图6为本发明实施例提供的IBC预测的示意图;

图7为本发明实施例提供的左上为L型的划分类型中L1,L2,…,L7的划分示意图;

图8为本发明实施例提供的右上为L型的划分类型中R1,R2,…,R7的划分示意图;

图9为本发明实施例提供的按照实施例一的方案进行测试之后的编码性能示意图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

图1为本发明实施例提供的一种结合方向预测和块复制预测的视频帧内编码方法的流程图,如图1所示,其主要包括如下步骤:

1)利用预先定义的包含多种划分类型的分割模板分别对当前编码块进行划分,每一种划分类型均将当前编码块划分为两个子块。

2)对所有子块进行帧内块复制(IBC)预测:先确定IBC预测的搜索范围,再利用搜索范围内的每一参考块对所有子块进行IBC预测,确定每个子块的最优运动矢量,并记录每个子块由最优运动矢量预测得到的预测误差。

3)对所有子块进行DIP预测(帧内方向预测),得到每一子块的最优预测方向,并记录每一子块由最优预测方向预测得到的预测误差。

4)当获得所有子块在IBC预测与DIP预测下的预测误差后,通过快速率失真优化(RDO)在所有划分类型中确定最优划分及相应的预测组合。

5)通过完整RDO比较,对当前编码块进行IBC预测的编码代价、对当前编码块进行DIP预测的编码代价,以及最优划分及相应的预测组合的编码代价,选择编码代价最小的预测模式作为当前编码块最终的预测模式。

上述步骤2)与步骤3)不区分先后执行,此外,在执行步骤2)与步骤3)时也可同时对整个编码块进行相应的IBC预测与DIP预测。

本发明实施例中,由于划分类型的数量与预测的种类相关,即划分类型越灵活,预测的种类就越多,但同时编码复杂度也越高,所以本实施例中综合考虑编码性能和复杂度,提出了两种形式的划分方式:第一种为涵盖了水平方向、竖直方向、从右上到左下的对角方向,以及从左上到右下的对角方向的共28种划分类型,其中,每一方向均有7种划分类型,水平方向与竖直方向的划分类型统称为矩形划分,从右上到左下的对角方向与从左上到右下的对角方向的划分类型统称为三角划分;第二种为包括了左上为L型的7种划分类型和右上为L型的7种划分类型,这两种划分方式都是将当前编码块划分为两个子块:一个子块为正方形块,另一个子块为两块相邻矩形块组成的L型块。

为了便于理解,下面结合两个实施例来分别针对上述两种划分方式的执行上述步骤1)~5)的过程做详细说明。

实施例一

本实施例提供的一种结合方向预测和块复制预测的视频帧内编码方法的步骤如下:

第一步、确定划分类型。

本实施例中,所述多种划分类型为涵盖了水平方向、竖直方向、从右上到左下的对角方向,以及从左上到右下的对角方向的共28种划分类型。

将水平方向的7种划分记为H1~H7,竖直方向的7种划分记为V1~V7;从右上到左下的对角方向的7种划分记为T1~T7,从左上到右下的对角方向的7种划分记为D1~D7。

如图2所示,为V1,V2,…,V7的划分示意图。在V1中的一个正方形表示当前编码块,正方形被分成了左右两个矩形,两个矩形高度一样,左边矩形的宽度占整个正方形宽度的1/8;右边矩形的宽度占整个正方形宽度的7/8;在V2中一个正方形被分成了左右两个矩形,两个矩形高度一样,左边矩形的宽度占整个正方形宽度的2/8;右边矩形的宽度占整个正方形宽度的6/8;同理,在V7中左边矩形的宽度占整个正方形宽度的7/8;右边矩形的宽度占整个正方形宽度的1/8。H1,H2,…,H7与V1,V2,…,V7对应,只是前者是在水平,后者是在竖直方向。H1,H2,…,H7划分如图3所示。

下面再描述三角划分中的从右上到左下的对角方向划分,T1,T2,T3和T4划分把一个正方形分成左上角的等腰直角三角形和右下角剩下的部分;T5,T6和T7划分把一个正方形分成右下角的等腰直角三角型和左上角剩下的部分。如图4所示,T1划分中,等腰直角三角形的底边长是正方形边长的1/4;T2划分中,等腰直角三角形的底边长是正方形边长的2/4;同理T4划分中,等腰直角三角形的底边长是正方形边长的4/4,即等于正方形边长。T5、T6、T7划分与T1到T4的划分类似。D1,D2,…,D7的划分与T1,T2,…,T7划分关于竖直方向对称,如图5所示。

第二步、按照上述划分类型的分割模板对当前编码块进行划分后,需要对所有子块进行帧内块复制(IBC)预测。

在搜索之前需要确定搜索范围,搜索范围可以小于或者等于当前帧中的已重建部分。如果搜索范围设定的越大,搜素复杂度越高,同时有可能给当前块找到更好的预测值。搜索范围确定好之后就开始搜索,

本实施例所采用的是全搜索,也就是对于搜索范围内的每个参考块,计算其与每一子块的预测误差,例如(SAD,绝对误差和)。因为后面需要通过RDO(Rate Distortion Optimization,率失真优化)确定最优预测模式,所以这里计算了参考块和当前编码块之间,不同形状的SAD。

图6表示IBC过程中某一步的示意图,虚线所示的矩形区域(即当前编码块所在的矩形区域)是尚未编码的部分,其外围部分是当前帧中的已重建部分,当前编码块在搜索范围内的搜索达到到了其中一个块,箭头表示BV(Block Vector,块矢量,表示参考块和当前块的坐标差异,类似于帧间运动估计时候的运动矢量,即Motion Vector,以下用MV表示BV,写成MV是习惯上的一种表达)。由前文可知,当前编码块共有28种划分方式,每种划分方式把当前编码块分成两个子块,这两个子块,的SAD都需要计算,所以共需要计算56个划分块的SAD加上整个编码块的SAD,即57种。因为28种里的每种划分得到的两个子块SAD之和等于整个块的SAD,所以实际共计算29个SAD(剩下28个SAD可以根据大块的SAD减去对应的小块的SAD得到)。

当把搜索范围内的每个参考块搜索完成之后,得到了每种划分里每个子块的最小的预测误差和相应的最优运动矢量,进行如下标记:

水平方向中第1种划分类型H1上下两个子块的最优运动矢量MV分别记为MV_IBC_H1_1与MV_IBC_H1_2,相应的预测误差记为SAD_IBC_H1_1与SAD_IBC_H1_2;依次类推,第7种划分类型H7上下两个子块的最优运动矢量MV分别记为MV_IBC_H7_1与MV_IBC_H7_2,相应的预测误差记为SAD_IBC_H7_1与SAD_IBC_H7_2;

竖直方向中第1种划分类型V1左右两个子块的最优运动矢量MV分别记为MV_IBC_V1_1与MV_IBC_V1_2,相应的预测误差记为SAD_IBC_V1_1与SAD_IBC_V1_2;依次类推,第7种划分类型V7左右两个子块的最优运动矢量MV分别记为MV_IBC_V7_1与MV_IBC_V7_2,相应的预测误差记为SAD_IBC_V7_1与SAD_IBC_V7_2;

从右上到左下的对角方向中第1种划分类型T1左上和右下两个子块的最优运动矢量MV分别记为MV_IBC_T1_1与MV_IBC_T1_2,相应的预测误差记为SAD_IBC_T1_1与SAD_IBC_T1_2;依次类推,第7种划分类型T7左上和右下两个子块的最优运动矢量MV分别记为MV_IBC_T7_1与MV_IBC_T7_2,相应的预测误差记为SAD_IBC_T7_1与SAD_IBC_T7_2;

从左上到右下的对角方向中第1种划分类型D1右上和左下两个子块的最优运动矢量MV分别记为MV_IBC_D1_1与MV_IBC_D1_2,相应的预测误差记为SAD_IBC_D1_1与SAD_IBC_D1_2;依次类推,第7种划分类型T7右上和左下两个子块的最优运动矢量MV分别记为MV_IBC_D7_1与MV_IBC_D7_2,相应的预测误差记为SAD_IBC_D7_1与SAD_IBC_D7_2。

第三步、对所有子块进行DIP预测,得到每一子块的最优预测方向,并记录每一子块由最优预测方向预测得到的预测误差。

DIP预测即为在HEVC的35种帧内预测中确定最优预测方向,因为没有进行RDO之前并不能确定当前编码单元最优的划分方式,所以我们需要为每种划分里的每个部分都找到最佳预测方向,同时记录每个部分最优预测方向下的SAD。在每种方向的预测值生成之后,计算预测块和当前编码块之间每一子块的预测误差(即SAD);由前文可知,共需要计算56个划分子块的SAD加上整个编码块的SAD,即57种。

当把35个预测方向遍历完成之后,得到了每种划分里每个子块的最小的预测误差和相应的帧内预测方向,进行如下标记:

水平方向中第1种划分类型H1上下两个子块的最优预测方向分别记为Mode_DIP_H1_1与Mode_DIP_H1_2,相应的预测误差记为SAD_DIP_H1_1与SAD_DIP_H1_2;依次类推,第7种划分类型H7上下两个子块的最优预测方向分别记为Mode_DIP_H7_1与Mode_DIP_H7_2,相应的预测误差记为SAD_DIP_H7_1与SAD_DIP_H7_2;

竖直方向中第1种划分类型V1左右两个子块的最优预测方向分别记为Mode_DIP_V1_1与Mode_DIP_V1_2,相应的预测误差记为SAD_DIP_V1_1与SAD_DIP_V1_2;依次类推,第7种划分类型H7左右两个子块的最优预测方向分别记为Mode_DIP_V7_1与Mode_DIP_V7_2,相应的预测误差记为SAD_DIP_V7_1与SAD_DIP_V7_2;

从右上到左下的对角方向中第1种划分类型T1左上和右下两个子块的最优预测方向分别记为Mode_DIP_T1_1与Mode_DIP_T1_2,相应的预测误差记为SAD_DIP_T1_1与SAD_DIP_T1_2;依次类推,第7种划分类型T7左上和右下两个子块的最优预测方向分别记为Mode_DIP_T7_1与Mode_DIP_T7_2,相应的预测误差记为SAD_DIP_T7_1与SAD_DIP_T7_2;

从左上到右下的对角方向中第1种划分类型D1右上和左下两个子块的最优预测方向分别记为Mode_DIP_D1_1与Mode_DIP_D1_2,相应的预测误差记为SAD_DIP_D1_1与SAD_DIP_D1_2;依次类推,第7种划分类型T7右上和左下两个子块的最优预测方向分别记为Mode_DIP_D7_1与Mode_DIP_D7_2,相应的预测误差记为SAD_DIP_D7_1与SAD_DIP_D7_2。

第四步、通过快速率失真优化RDO在所有划分类型中确定最优划分及相应的预测组合。

在水平方向、竖直方向、从右上到左下的对角方向和从左上到右下的对角方向各自的7种划分类型里确定出总体代价最小的划分和预测组合,其过程如下:

在水平方向H1~H7的7种划分类型中,共有14种组合,其对应的代价分别为:

上式中,i=1,2,...,7;λ是拉格朗日乘子,由编码器指定的一个参数来确定,Bits函数是对MV和DIP方向进行熵编码所需耗费比特数的一个估计;找出C_H_i_1,C_H_i_2中最小的组合,记为C_H_k1_p1,对应的预测模式记为(k1,p1),k1是1到7中一个数,表明了划分类型为Hk1;p1是1到2中一个数,表明了预测组合方式,1是指左边部分进行IBC预测,右边部分进行DIP预测,2则反之;

在竖直方向V1~V7的7种划分类型中,共有14种组合,其对应的代价分别为:

从上式中找出C_V_i_1,C_V_i_2中最小的组合,记为C_V_k2_p2,对应的预测模式记为(k2,p2),k2是1到7中一个数,表明了划分类型为Vk2;p2是1到2中一个数,表明了预测组合方式,1是指上面部分进行IBC预测,下面部分进行DIP预测,2则反之;

在右上到左下的对角方向T1~T7的7种划分中,共有14种组合,其对应的代价分别为:

从上式中找出C_T_i_1,C_T_i_2中最小的组合,记为C_T_k3_p3,对应的预测模式记为(k3,p3),k3是1到7中一个数,表明了划分类型为Tk3;p3是1到2中一个数,表明了预测组合方式,1是指左上部分进行IBC预测,右下部分进行DIP预测,2则反之;

在左上到右下的对角方向D1~D7的7种划分中,共有14种组合,其对应的代价分别为:

从上式中找出C_D_i_1,C_D_i_2中最小的组合,记为C_D_k4_p4,对应的预测模式记为(k4,p4),k4是1到7中一个数,表明了划分类型为Dk4;p4是1到2中一个数,表明了预测组合方式,1是指右上部分进行IBC预测,左下部分进行DIP预测,2则反之。

第五步、通过完整RDO比较,对当前编码块进行IBC预测的编码代价、对当前编码块进行DIP预测的编码代价,以及最优划分及相应的预测组合的编码代价,选择编码代价最小的预测模式作为当前编码块最终的预测模式。

对当前编码块进行DIP预测,经过完整的RDO算出来的编码代价记为C_DIP;

对当前编码块进行IBC预测,经过完整RDO算出来的编码代价记为C_IBC;

对于水平方向,由预测模式(k1,p1),根据对应的运动矢量MV_IBC_Hk1_p1、帧内预测方向和划分类型Hk1生成当前块的预测块,经过完整RDO算出来的编码代价记为C_H;其中,

对于竖直方向,由预测模式(k2,p2),根据对应的运动矢量MV_IBC_Vk2_p2、帧内预测方向和划分类型Vk2生成当前块的预测块,经过完整RDO算出来的编码代价记为C_V;其中,

对于从右上到左下的对角方向,由预测模式(k3,p3),根据对应的运动矢量MV_IBC_Tk3_p3、帧内预测方向和划分类型Tk3生成当前块的预测块,经过完整RDO算出来的编码代价记为C_T;其中,

对于从左上到右下的对角方向,由预测模式(k4,p4),根据对应的运动矢量MV_IBC_Dk4_p4、帧内预测方向和划分类型Dk4生成当前块的预测块,经过完整RDO算出来的编码代价记为C_D;

比较C_DIP、C_IBC、C_H、C_V、C_T、C_D的大小,将最小编码代价对应的预测模式作为当前编码块最终的预测模式。

实施例二

本实施例提供的一种结合方向预测和块复制预测的视频帧内编码方法的步骤如下:

第一步、确定划分类型。

本实施例中,多种划分类型包括左上为L型的7种划分类型和右上为L型的7种划分类型。

将左上为L型的7种划分类型记为L1~L7,右上为L型的7种划分类型记为R1~R7;

如图7所示,为L1,L2,…,L7的划分示意图。在L1中一个正方形被分成了左上的L型和右下的正方形,左上的L型的宽度占整个正方形宽度的1/8;右下正方形的宽度占整个正方形宽度的7/8;在L2中一个正方形被分成了左上的L型和右下的正方形,左上的L型的宽度占整个正方形宽度的2/8;右下正方形的宽度占整个正方形宽度的6/8;同理,在L7中一个正方形被分成了左上的L型和右下的正方形,左上的L型的宽度占整个正方形宽度的7/8;右下正方形的宽度占整个正方形宽度的1/8。R1,R2,…,R7的划分与L1,L2,…,L7划分关于竖直方向对称,如图8所示。

第二步、按照上述划分类型的分割模板对当前编码块进行划分后,需要对所有子块进行帧内块复制(IBC)预测。

本步骤的计算原理与实施例一中的第二步一致,故不再赘述,二者的区别主要在于各个子块的标记不一致。

本实施例中,当把搜索范围内的每个参考块搜索完成之后,得到了每种划分里每个子块的最小的预测误差和相应的最优运动矢量,进行如下标记:

左上为L型中第1种划分类型L1的左上和右下两个子块的最优运动矢量MV分别记为MV_IBC_L1_1、MV_IBC_L1_2,相应的预测误差记为SAD_IBC_L1_1与SAD_IBC_L1_2;依次类推,第7种划分类型L7左上和右下两个子块的最优运动矢量MV分别记为MV_IBC_L7_1与MV_IBC_L7_2,相应的预测误差记为SAD_IBC_L7_1与SAD_IBC_L7_2;

右上为L型中第1种划分类型R1的右上和左下两个子块的最优运动矢量MV分别记为MV_IBC_R1_1、MV_IBC_R1_2,相应的预测误差记为SAD_IBC_R1_1与SAD_IBC_R1_2;依次类推,第7种划分类型R7右上和左下两个子块的最优运动矢量MV分别记为MV_IBC_R7_1与MV_IBC_R7_2,相应的预测误差记为SAD_IBC_R7_1与SAD_IBC_R7_2。

第三步、对所有子块进行DIP预测,得到每一子块的最优预测方向,并记录每一子块由最优预测方向预测得到的预测误差。

本步骤的计算原理与实施例一中的第二步一致,故不再赘述,二者的区别主要在于各个子块的标记不一致。

本实施例中,当把35个预测方向遍历完成之后,得到了每种划分里每个子块的最小的预测误差和相应的帧内预测方向,进行如下标记:

左上为L型中第1种划分类型L1的左上和右下两个子块的的最优预测方向分别记为Mode_DIP_L1_1与Mode_DIP_L1_2,相应的预测误差记为SAD_DIP_L1_1与SAD_DIP_L1_2;依次类推,第7种划分类型L7左上和右下两个子块的最优预测方向分别记为Mode_DIP_L7_1与Mode_DIP_L7_2,相应的预测误差记为SAD_DIP_L7_1与SAD_DIP_L7_2;

右上为L型中第1种划分类型R1的右上和左下两个子块的的最优预测方向分别记为Mode_DIP_R1_1与Mode_DIP_R1_2,相应的预测误差记为SAD_DIP_R1_1与SAD_DIP_R1_2;依次类推,第7种划分类型R7右上和左下两个子块的最优预测方向分别记为Mode_DIP_R7_1与Mode_DIP_R7_2,相应的预测误差记为SAD_DIP_R7_1与SAD_DIP_R7_2。

第四步、通过快速率失真优化RDO在所有划分类型中确定最优划分及相应的预测组合。

本步骤的计算原理与实施例一中的第二步一致,故不再赘述,二者的区别主要在于各个子块的标记不一致。

本实施例中,在左上为L型和右上为L型各自的7种划分类型里确定出总体代价最小的划分和预测组合,其过程如下:

在左上为L型L1~L7的7种划分类型中,共有14种组合,其对应的代价分别为:

上式中,i=1,2,...,7;Bits函数是对MV和DIP方向进行熵编码所需耗费比特数的一个估计;找出C_L_i_1,C_L_i_2中最小的组合,记为C_L_k1_p1,对应的预测模式记为(k1,p1),k1是1到7中一个数,表明了划分类型为Lk1;p1是1到2中一个数,表明了预测组合方式,1是指左上的L型部分进行IBC预测,右下的正方形部分进行DIP预测,2则反之;

在右上为L型R1~R7的7种划分类型中,共有14种组合,其对应的代价分别为:

找出C_R_i_1,C_R_i_2中最小的组合,记为C_R_k2_p2,对应的预测模式记为(k2,p2),k2是1到7中一个数,表明了划分位置为Rk2;p2是1到2中一个数,表明了预测组合方式,1是指右上的L型部分进行IBC预测,左下的正方形部分进行DIP预测,2则反之。

第五步、通过完整RDO比较,对当前编码块进行IBC预测的编码代价、对当前编码块进行DIP预测的编码代价,以及最优划分及相应的预测组合的编码代价,选择编码代价最小的预测模式作为当前编码块最终的预测模式。

本步骤过程与实施例一中的第五步一致,区别也仅在于某些参数的标记不一致;该步骤的过程具体如下:

对当前编码块进行DIP预测,经过完整的RDO算出来的编码代价记为C_DIP;

对当前编码块进行IBC预测,经过完整RDO算出来的编码代价记为C_IBC;

对于左上为L型的划分类型,由预测模式(k1,p1),根据对应的运动矢量MV_IBC_Lk1_p1、帧内预测方向和划分类型Lk1生成当前块的预测块,经过完整RDO算出来的编码代价记为C_L;其中,

对于右上为L型的划分类型,由预测模式(k2,p2),根据对应的运动矢量MV_IBC_Rk2_p2、帧内预测方向和划分类型Rk2生成当前块的预测块,经过完整RDO算出来的编码代价记为C_R;其中,

比较C_DIP、C_IBC、C_L、C_R的大小,将最小编码代价对应的预测模式作为当前编码块最终的预测模式。

本发明上述两个实施例中,通过灵活的块分割方式将编码块分成两个子块,使得同一个块的预测内容可以同时包含局部信息和非局部信息,然后RDO决定出每个块代价最小的预测。同时设计了快速RDO和完整RDO的结合,在不影响编码性能的前提下,降低了编码复杂度。总体效果是基本不增加解码端复杂度,并取得更高的压缩效率。

为了进一步说明,上述实施例的效果,还基于上述实施例一进行了测试。测试条件包括:帧内配置(All Intra Configuration,AI),量化步长(Quantization Step,QP)设置为{22,27,32,37},搜索范围为|mvx|+|mvy|<128,测试的帧数为5帧,基于的软件是HM12.0,测试序列是HEVC的通测序列(不包括Class F,因为其是SCC序列)。对比实验有两组:第一组是HM12.0本身与HM12.0集成了IBC技术之后的性能对比;第二组是HM12.0集成了IBC技术与HM12.0集成了我们技术之后的性能对比。这两组实验结果见附图9,附图9的第一列是测试序列名称,第二列是第一组实验结果,第三列是第二组实验结果,最后两行是编码端和解码端复杂度的变化。可以看出本发明所提出的方案相对于HM可以获得2.1%的码率节省,相对于集成了IBC的HM可以获得0.9%的码率节省,并且解码复杂度基本不变。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1