确定编码单元的编码代价的方法及相关装置与流程

文档序号:18899812发布日期:2019-10-18 21:47阅读:323来源:国知局
确定编码单元的编码代价的方法及相关装置与流程

本发明涉及计算机技术领域,尤其涉及确定编码单元的编码代价的方法及相关装置。



背景技术:

高效视频编码(highefficiencyvideocoding,hevc)是由国际电信联盟管理下的远程通信标准化组织(internationaltelecommunicationsunion-telecommunicationstandardizationsector,itu-t)和国际标准化组织(internationalstandardorganized,iso)共同制定的新一代高效视频编码标准,hevc又可以称为h.265。相比h.264/高级视频编码(advancedvideocoding,avc)标准,hevc采用了更多、更新、更灵活的编码技术,在相同视频质量条件下,hevc可进一步降低编码的码率。

hevc标准延续了h.264/avc标准中的基于块的视频压缩编码框架,相对于h.264/avc标准中使用的宏块(macroblock,mb),hevc标准采用了更灵活的块结构。在h.264/avc标准中,mb的尺寸固定,其固定的尺寸为16*16像素,而在hevc标准中,编码单元(codingunit,cu)可以有四种尺寸,其分别为64*64像素、32*32像素、16*16像素以及8*8像素。在hevc标准中,通过树形结构的编码单元算法来确定编码单元的具体尺寸,从而完成对一帧图像的划分,其具体为:首先,将一帧图像划分为多个编码树单元(codingtreeunit,ctu),然后对每一个ctu采用遍历递归的方式逐层z形遍历cu,分别确定各个cu的编码代价,根据各个cu的编码代价确定使得编码该ctu对应的编码代价最小的划分策略,根据该划分策略确定划分ctu,从而实现cu的划分。由于对树形结构中的每个cu都需要进行预测编码、编码代价计算等计算以确定cu的编码代价以及确定cu是否需要划分,该算法需要进行大量的计算,需要的时间较多,编码速率较低。



技术实现要素:

本发明实施提供确定编码单元的编码代价的方法及相关装置,通过提前结束对cu的划分,可以减少计算量,降低编码复杂度,提高编码速率。

本发明实施例一方面提供了一种确定编码单元的编码代价的方法,可包括:

确定以帧内预测模式进行预测编码的编码单元;

确定所述编码单元对应的像素梯度信息,所述像素梯度信息包括像素梯度方差,所述像素梯度方差为编码单元内的至少部分像素的图像梯度的方差;

根据所述像素梯度信息对所述编码单元进行划分预判决;

如果对所述编码单元的划分预判决的结果为不划分,则将第一编码代价确定为所述编码单元的第二编码代价,所述第二编码代价被用于确定所述编码单元对应的编码树单元的划分策略,所述第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的编码代价。

在一种可能的实现方式中,所述方法还包括:

如果对所述编码单元的划分预判决的结果为划分,则将所述编码单元划分为至少两个子编码单元;

将所述至少两个子编码单元作为新的以帧内预测模式进行预测编码的编码单元,执行所述确定编码单元的编码代价的方法,分别确定所述至少两个子编码单元的编码代价;

如果所述至少两个子编码单元的编码代价之和大于或等于所述第一编码代价,则将所述第一编码代价确定为所述编码单元的第二编码代价;

如果所述至少两个子编码单元的编码代价之和小于所述第一编码代价,则将所述至少两个子编码单元的编码代价之和确定为所述编码单元的第二编码代价。

在一种可能的实现方式中,所述根据所述像素梯度信息对所述编码单元进行划分预判决,包括:

确定所述编码单元对应的方差阈值;

如果所述像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分;

如果所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分。

在一种可能的实现方式中,所述像素梯度信息还包括像素梯度平均值,所述像素梯度平均值为编码单元内的至少部分像素的图像梯度的平均值;

所述根据所述像素梯度信息对所述编码单元进行划分预判决,包括:

确定所述编码单元对应的第一阈值、所述编码单元对应的第二阈值以及所述编码单元对应的方差阈值,所述第二阈值大于所述第一阈值;

如果所述像素梯度平均值小于所述第一阈值,则确定对所述编码单元的划分预判决的结果为不划分;或者

如果所述像素梯度平均值大于或等于所述第一阈值,并且,所述像素梯度平均值小于所述第二阈值,并且,所述像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分;或者

如果所述像素梯度平均值大于或等于所述第一阈值,并且,所述像素梯度平均值小于所述第二阈值,并且,所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分;或者

如果所述述像素梯度平均值大于或等于所述第二阈值,则确定对所述编码单元的划分预判决的结果为划分。

在一种可能的实现方式中,所述确定所述编码单元对应的第一阈值,包括:

确定所述编码单元的多个邻居编码单元,所述邻居编码单元的边缘与所述编码单元的边缘存在重合或所述邻居编码单元的顶点与所述编码单元的顶点存在重合,所述邻居编码单元内的图像与所述编码单元内的图像不重合;

如果所述多个邻居编码单元中第一邻居编码单元的数量大于或等于目标数量,则根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元对应的像素梯度平均值确定所述编码单元对应的第一阈值,所述第一邻居编码单元以帧内预测模式进行预测编码;

如果所述多个邻居编码单元中所述第一邻居编码单元的数量小于所述目标数量,则将所述编码单元的尺寸对应的均值阈值确定为编码单元对应的第一阈值。

在一种可能的实现方式中,所述根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元的像素梯度平均值确定所述编码单元对应的第一阈值,包括:

在所述第一邻居编码单元中查找第二邻居编码单元,所述第二邻居编码单元的尺寸大于或等于所述编码单元的尺寸;

如果存在所述第二邻居编码单元,则将第一系数与目标平均值之积确定为所述编码单元对应的第一阈值,所述目标平均值为各个第二邻居编码单元对应的像素梯度平均值的总和与所述第二邻居编码单元的数量之商;

如果不存在所述第二邻居单元,则确定所述编码单元对应的第一阈值为零。

在一种可能的实现方式中,所述编码单元对应的第二阈值为所述编码单元对应的第一阈值与第二系数之积。

在一种可能的实现方式中,所述编码单元对应的方差阈值与所述编码单元对应的量化参数正相关。

本发明实施例一方面提供了一种确定编码单元的编码代价的装置,可包括:

编码单元确定模块,用于确定以帧内预测模式进行预测编码的编码单元;

梯度信息确定模块,用于确定所述编码单元对应的像素梯度信息,所述像素梯度信息包括像素梯度方差,所述像素梯度方差为编码单元内的至少部分像素的图像梯度的方差;

预判决模块,用于根据所述像素梯度信息对所述编码单元进行划分预判决;

代价确定模块,用于如果所述预判决模块对所述编码单元的划分预判决的结果为不划分,则将第一编码代价确定为所述编码单元的第二编码代价,所述第二编码代价被用于确定所述编码单元对应的编码树单元的划分策略,所述第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的编码代价。

在一种可能的实现方式中,所述装置还包括:

划分模块,用于如果所述预判决模块对所述编码单元的划分预判决的结果为划分,则将所述编码单元划分为至少两个子编码单元;

所述编码单元确定模块还用于将所述至少两个子编码单元作为新的以帧内预测模式进行预测编码的编码单元,所述梯度信息确定模块还用于分别确定所述至少两个子编码单元对应的像素梯度信息,所述预判决模块还用于根据所述像素梯度信息分别对所述至少两个子编码单元进行划分预判决,所述代价确定模块还用于分别确定所述至少两个子编码单元的编码代价;

所述代价确定模块还用于如果所述至少两个子编码单元的编码代价之和大于或等于所述第一编码代价,则将所述第一编码代价确定为所述编码单元的第二编码代价;

所述代价确定模块还用于如果所述至少两个子编码单元的编码代价之和大于所述第一编码代价,则将所述至少两个子编码单元的编码代价之和确定为所述编码单元的第二编码代价。

在一种可能的实现方式中,所述预判决模块,包括:

阈值确定单元,用于确定所述编码单元对应的方差阈值;

结果确定单元,用于如果所述像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分;

所述结果确定单元还用于如果所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分。

在一种可能的实现方式中,所述像素梯度信息还包括像素梯度平均值,所述像素梯度平均值为编码单元内的至少部分像素的图像梯度的平均值;

所述预判决模块,包括:

阈值确定单元,用于确定所述编码单元对应的第一阈值、所述编码单元对应的第二阈值以及所述编码单元对应的方差阈值,所述第二阈值大于所述第一阈值;

结果确定单元,用于如果所述像素梯度平均值小于所述第一阈值,则确定对所述编码单元的划分预判决的结果为不划分;或者

所述结果确定单元还用于如果所述像素梯度平均值大于或等于所述第一阈值,并且,所述像素梯度平均值小于所述第二阈值,并且,所述像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分;或者

所述结果确定单元还用于如果所述像素梯度平均值大于或等于所述第一阈值,并且,所述像素梯度平均值小于所述第二阈值,并且,所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分;或者

所述结果确定单元还用于如果所述述像素梯度平均值大于或等于所述第二阈值,则确定对所述编码单元的划分预判决的结果为划分。

在一种可能的实现方式中,所述阈值确定单元具体用于:

确定所述编码单元的多个邻居编码单元,所述邻居编码单元的边缘与所述编码单元的边缘存在重合或所述邻居编码单元的顶点与所述编码单元的顶点存在重合,所述邻居编码单元内的图像与所述编码单元内的图像不重合;

如果所述多个邻居编码单元中第一邻居编码单元的数量大于或等于目标数量,则根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元对应的像素梯度平均值确定所述编码单元对应的第一阈值,所述第一邻居编码单元以帧内预测模式进行预测编码;

如果所述多个邻居编码单元中所述第一邻居编码单元的数量小于所述目标数量,则将所述编码单元的尺寸对应的均值阈值确定为编码单元对应的第一阈值。

在一种可能的实现方式中,所述阈值确定单元具体用于:

在所述第一邻居编码单元中查找第二邻居编码单元,所述第二邻居编码单元的尺寸大于或等于所述编码单元的尺寸;

如果存在所述第二邻居编码单元,则将第一系数与目标平均值之积确定为所述编码单元对应的第一阈值,所述目标平均值为各个第二邻居编码单元对应的像素梯度平均值的总和与所述第二邻居编码单元的数量之商;

如果不存在所述第二邻居单元,则确定所述编码单元对应的第一阈值为零。

在一种可能的实现方式中,所述编码单元对应的第二阈值为所述编码单元对应的第一阈值与第二系数之积。

在一种可能的实现方式中,所述编码单元对应的方差阈值与所述编码单元对应的量化参数正相关。

本发明实施例中,在确定编码单元以帧内预测模式进行预测编码后,通过确定该编码单元的像素梯度信息并根据该编码单元的像素梯度信息对编码单元进行划分预判决,在划分预判决的结果为不划分的情况下,将以编码单元当前的尺寸作为预测单元的尺寸对编码单元进行预测编码得到的编码代价确定为编码单元的最终的编码代价,进而可以确定编码单元不需要划分,提前结束对该编码单元的划分,省去了将编码单元划分为子编码单元,然后以子编码单元作为新的编码单元进行预测编码并计算编码代价计算的计算过程,减少了计算量,提高了编码速率。

附图说明

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

图1是本发明实施例提供的将一帧图像划分为若干个ctu的情况的举例示意图;

图2a-图2b是本发明实施例提供的ctu的划分策略的表现形式的举例示意图;

图3a-图3e是一种通过完整的遍历递归算法确定ctu的划分策略的流程示意图;

图4是本发明实施例提供的根据ctu的最终的编码代价确定ctu的划分方式的举例示意图;

图5是本发明实施例提供的一种确定编码单元的编码代价的方法的流程示意图;

图6是本发明实施例提供的一种确定编码单元的编码代价的方法的流程示意图;

图7a-7e是本发明实施例提供的确定ctu的划分策略的过程举例示意图;

图8是本发明实施例提供的一种确定编码单元的编码代价的方法的流程示意图;

图9是本发明实施例提供的一种确定编码单元的编码代价的方法的流程示意图;

图10是本发明实施例提供的一种确定编码单元的编码代价的方法的流程示意图;

图11是本发明实施例提供的邻居编码单元的举例示意图;

图12是本发明实施例提供的一种确定编码单元的编码代价的方法的流程示意图;

图13是本发明实施例提供的一种确定编码单元的编码代价的装置的结构示意图;

图14是本发明实施例提供的预判决模块的结构示意图;

图15是本发明实施例提供的一种确定编码单元的编码代价的装置的结构示意图;

图16是本发明实施例提供的一种终端的结构示意图。

具体实施方式

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

在介绍本发明实施例的方案之前,为便于理解本发明实施例的方案,首先对hevc标准中与本发明实施例有关的一些定义进行介绍。

1、ctu。ctu是对一帧图像进行划分时的基本单位,在对一帧图像进行编码之前,需要对一帧图像进行划分,其中,在对图像进行划分的过程中,首先将图像划分为若干个ctu。在一般情况下,ctu的尺寸为64*64像素,可选的,ctu的尺寸可以为32*32像素,进一步可以为16*16像素或8*8像素。例如,一帧i帧图像的像素为640*480像素,如图1所示,将这帧图像划分为70个64*64像素的ctu后,剩下的图像不足以再划分为64*64像素的ctu,则将剩下的图像划分为20个32*32像素的ctu。

2、cu。cu是hevc标准中的编码单位,类似于h.264/avc标准中mb的概念。在对某一帧图像进行视频编码时,对这一帧图像中的每个cu进行逐个编码,以形成连续的视频码流。cu由ctu划分而来,cu的尺寸小于或等于ctu的尺寸。当确定图像中的每个ctu的划分情况后,即可确定整帧图像的划分情况。

根据ctu对应的划分策略对ctu进行划分可确定ctu中cu的划分情况。ctu对应的划分策略可以用树形结构来表示,根据树形结构可确定ctu的cu的划分情况。例如,ctu的划分策略用树形结构来表示如图2a所示,其中,树形结构中的根节点代表ctu,树形结构中的叶子节点代表ctu中的cu。如果树形结构中的节点下还有子节点,则说明该节点对应的cu需要继续划分,如果树形结构中的节点下没有子节点,则说明该节点不需要继续划分,根据图2a所示的树形结构确定的ctu中cu的划分情况如图2b所示。

如果ctu以帧内预测模式进行预测编码,那么ctu的划分策略可以通过完整的遍历递归编码算法确定,该算法的示意图可以如图3a-3e所示,以ctu的尺寸为64*64像素为例。

遍历过程可以如图3a和图3b所示。

首先如图3a所示,对于一个尺寸为64*64像素的ctu,将ctu划分为4个32*32像素的cu,以作为ctu的子cu。再将每个32*32像素的cu划分为4个16*16像素的cu,以作为32*32像素的cu的子cu。再将每个16*16的cu划分为4个8*8的cu,以作为16*16像素的cu的子cu,四层cu形成满四叉树(除最后一层无任何子节点外,每一层上的所有节点下都有四个子节点)。

在形成满四叉树之后,如图3b所示,以64*64像素作为预测单元(predictionunit,pu)的尺寸对ctu进行预测编码确定最优预测模式,确定ctu在最优预测模式下的编码代价(c1),该编码代价为ctu在pu划分方式为2n*2n的情况下的最小编码代价。分别以32*32像素作为预测单元的尺寸对第二层的各个cu进行预测编码确定第二层的各个cu的最优预测模式,确定第二层的各个cu在最优预测模式下的编码代价(c21,c22,c22,c24),该编码代价为第二层的各个cu在pu划分方式为2n*2n的情况下的最小编码代价。分别以16*16像素作为预测单元的尺寸对第三层的各个cu进行预测编码确定第三层的各个cu的最优预测模式,确定第三层的各个cu在最优预测模式下的编码代价(c31,…,c34;c35,…,c38;c39,…,c312;c313,…,c316),该编码代价为第三层的各个cu在pu划分方式为2n*2n的情况下的最小编码代价。分别以8*8像素作为预测单元的尺寸对第四层的各个cu进行预测编码确定第四层的各个cu的最优预测模式,确定第四层的各个cu在最优预测模式下的编码代价(c1,…,c4;c5,…,c6;…;c57,…,c60;c61,…,c64),该编码代价为第四层的各个cu在pu划分方式为2n*2n的情况下的最小编码代价。

其中,最优预测模式为某一尺寸的预测单元对应的多种预测模式中能够使得对cu进行预测编码得到的编码代价最小的预测模式,例如,尺寸为64*64的预测单元对应4种预测模式,分别以这4种预测模式对cu进行预测编码,其得到的编码代价分别为c1,c2,c3,c4,并且,c1<c2<c3<c4,则c1对应的预测模式为最优预测模式。

编码代价也可以称之为率失真代价,用于指示在某种预测模式下对cu进行预测编码时预测得到的预测值与参考值之间的差距,其中,编码代价越小,预测值与参考值之间的差距越小,则编码所需的比特数越少,码率越低。具体实现中,可以通过绝对误差和(sumofabsolutedifference,sad)算法、绝对变化误差和(sumofabsolutetransformeddifference,satd)算法、差值平方和(sumofsquareddifference,ssd)算法等算法来确定在某种预测模式下对cu进行预测编码时的编码代价。

遍历过程之后是递归过程,递归过程如图3c、3d和3e所示。

首先如图3c所示,分别对第三层的各个cu下的四个子cu的最小编码代价(如c1,c2,c3,c4)进行求和,得到第三层的各个cu的另一个编码代价,该编码代价为第三层的各个cu在pu划分方式为n*n的情况下的最小编码代价。将第三层的各个cu在pu划分方式为2n*2n的情况下的最小编码代价和在pu划分方式为n*n的情况下的最小编码代价进行比较(如将c31和c1+c2+c3+c4比较),选择两个最小编码代价中较小的一个最小编码代价作为第三层的各个cu的最小编码代价,此最小编码代价为第三层的各个cu的最终的编码代价(c31,c32,…,c316)。

然后如图3d所示,分别对第二层的各个cu下的四个子cu的最小编码代价(如c31,c32,c33,c34)进行求和,得到第二层的各个cu的另一个编码代价,该编码代价为第二层的各个cu在pu划分方式为n*n的情况下的最小编码代价。将第二层的各个cu在pu划分方式为2n*2n的情况下的最小编码代价和在pu划分方式为n*n的情况下的最小编码代价进行比较(如将c21和c31+c32+c33+c34比较),选择两个最小编码代价中较小的一个最小编码代价作为第二层的各个cu的最小编码代价,此最小编码代价为第三层的各个cu的最终的编码代价(c21,c22,c23,c24)。

接着如图3e所示,对第一层的ctu下的四个cu的最小编码代价(c21,c22,c23,c24)进行求和,得到ctu的另一个编码代价,该编码代价为ctu在pu划分方式为n*n的情况下的最小编码代价。将ctu在pu划分方式为2n*2n的情况下的最小编码代价(c1)和在pu划分方式为n*n的情况下的最小编码代价(c21+c22+c23+c24)进行比较,选择两个最小编码代价中较小的一个最小编码代价作为ctu的最小编码代价(c0),此编码代价为ctu的最终的编码代价。

在递归过程之后,根据各层cu的最小编码代价可确定ctu的划分方式。如果ctu的最小编码代价为在pu划分方式为2n*2n的情况下的最小编码代价(c0=c1),则确定ctu不划分,确定ctu的树形结构只有一层,即根节点,其对应的划分情况如图4中的a所示。如果ctu的最小编码代价为在pu划分为n*n的情况下的最小编码代价(c0=c21+c22+c23+c24),则确定ctu需要划分,确定将ctu划分为四个cu,如图4中的b所示。再分别依次根据第二层的各个cu的最小编码代价确定第二层的各个cu是否需要划分,若该最小编码代价在pu划分方式为2n*2n的情况下的最小编码代价,则不需要划分,若该最小编码代价在pu划分方式为n*n的情况下的最小编码代价,则需要划分。同理,在分别依次根据第三层的各个cu的最小编码代价确定第三层的各个cu是否需要划分。各个cu的划分情况可表示成如图2a所示的树形结构。

由图3a-3e所示的过程可知,完整的遍历递归的算法所涉及的过程为找到使得ctu的编码代价最小的划分策略的过程,通过递归过程所确定的各个编码单元最终的编码代价均被用于确定该划分策略,根据该划分策略可完成对ctu的划分,进而可以根据ctu中划分的cu对该ctu进行编码。

3、pu。pu是在对cu进行预测编码时使用的基本单元,针对于不同的预测模式,有不同的pu划分方式。例如,对于帧内预测模式,pu划分方式有2n*2n和n*n两种,其中,2n*2n的方式是指将cu划分为一个pu进行预测编码,即一个cu包含一个pu;n*n的方式是指将cu划分为四个相同大小的pu进行预测编码,即一个cu包含四个pu。

上述介绍了hevc中的一些定义,由图3a-3e所示的过程可知,根据树形结构的编码算法确定的划分策略可使ctu的编码代价尽可能地小,即可以用尽量少的比特对ctu进行编码,以降低码率。虽然降低了码率,但是涉及的计算过程复杂,计算过程具体包括对满四叉树中的每一个cu进行不同的pu划分方式下和不同的预测模式下的编码代价计算、对计算得到的多个编码代价进行比较得到各个cu的最小编码代价,计算量大,复杂度高,需要的时间较多,编码速度慢。

因此,本发明实施例提供一种确定编码单元的编码代价的方法和与其相关的装置,解决在确定ctu的划分策略的过程中计算复杂度大的问题。

下面将结合图5-图12,对本发明实施例提供的确定编码单元的编码代价的方法进行详细介绍。

请参见图5,为本发明实施例提供了一种确定编码单元的编码代价的方法的流程示意图。如图5所示,本发明实施例的所述方法可以包括以下步骤s101-s104。

s101,确定以帧内预测模式进行预测编码的编码单元。

可以理解的是,编码单元由ctu划分而来,编码单元的尺寸可以为8*8像素、16*16像素、32*32像素、64*64像素中的任意一种尺寸。

本发明实施例中,以帧内预测模式进行预测编码是指以当前帧的编码单元作为参考编码单元进行预测编码,其中,参考编码单元是指已经经过了编码的编码单元。

具体实现中,如果编码单元为i帧(iframe)中的编码单元,由于i帧只采用帧内预测编码,则可以直接确定该编码单元为以帧内预测模式进行预测编码的编码单元。如果编码单元为非i帧(如p帧或b帧)中的编码单元,可参考h.264/avc标准中帧内模式判决算法确定以帧内预测模式进行预测编码的编码单元,其具体可以为:在对编码单元进行帧间预测编码选择完最佳帧间模式后,确定编码单元的平均码率和平均边界误差,如果编码单元的平均码率大于或等于编码单元的平均边界误差,则确定编码单元为以帧内预测模式进行预测的编码单元。当然,如果编码单元为非i帧中的编码单元,也可以根据其他的方式确定以帧内预测模式进行预测编码的编码单元,本发明实施例不做限制。

可以理解的是,如果所述编码单元的尺寸等于最小编码单元(smallcodingunit,scu)的尺寸,即8*8像素,编码单元不能继续划分,则跳过步骤s102~s103,执行步骤s104,将第一编码代价确定为编码单元的第二编码代价。

s102,确定所述编码单元对应的像素梯度信息,所述像素梯度信息包括像素梯度方差,所述像素梯度方差为编码单元内的至少部分像素的图像梯度的方差。

本发明实施例中,编码单元对应的像素梯度信息为根据该编码单元中的像素的图像梯度得到的信息。像素梯度信息可以为根据编码单元中的部分像素的图像梯度得到的信息,像素梯度信息也可以根据编码单元中的所有像素的图像梯度的信息。

除了包括像素梯度方差外,像素梯度信息还可以包括像素梯度平均值、像素梯度均方差等用于衡量图像的平滑程度、纹理复杂程度的参数。其中,像素梯度平均值是指编码单元中的部分像素或所有像素的图像梯度的均值。像素梯度均方差是指编码单元中的部分像素或所有像素的图像梯度的均方差。

具体实现中,可以通过图像梯度算法对确定编码单元中的各个像素的像素梯度信息,从而确定编码单元中的部分像素或者所有像素的图像梯度,进一步可根据编码单元中的部分像素的图像梯度或所有像素的图像梯度确定编码单元对应的像素梯度信息。

图像梯度算法可以为基于一阶导数的图像梯度算法,例如为罗伯特(roberts)算子、索贝尔(sobel)算子或prewitt算子等等。图像梯度算法也可以为基于二阶导数的图像梯度算法,例如为拉普拉斯(laplace)算子等。

本发明实施例中,如果像素梯度信息为根据编码单元中的部分像素的图像梯度得到的信息,该部分像素可以是在编码单元的所有像素中随机选取的部分像素。该部分像素也可以是按照一定的选取规则在编码单元的所有像素中选取的部分像素,如编码单元中的部分像素可以是按照预设的采样率选取的部分像素。例如,预设的采样率为90%,编码单元的尺寸为64*64像素,即4096像素,则编码单元中的部分像素为4096像素中3687个像素,可按照从左至右、从上到下的顺序对编码单元中的所有像素进行采样,得到3687个像素。

s103,根据所述像素梯度信息对所述编码单元进行划分预判决。

可以理解的是,如果像素梯度信息为像素梯度方差,则可根据像素梯度方差对编码单元进行划分预判决。如果像素梯度信息还包括像素梯度平均值,则可根据像素梯度方差和像素梯度平均值对编码单元进行划分预判决。如果像素梯度信息还包括像素梯度均方差,则可根据像素梯度方差和像素梯度均方差对编码单元进行划分预判决。其中,根据像素梯度信息对编码单元进行划分预判决的具体实现方式在图8-图12所示的实施例中进行具体介绍,可参见图8-图12所示的实施例中的描述。

s104,如果对所述编码单元的划分预判决的结果为不划分,则将第一编码代价确定为所述编码单元的第二编码代价,所述第二编码代价被用于确定所述编码单元对应的编码树单元的划分策略,所述第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的编码代价。

本发明实施例中,第一编码代价为编码单元在pu划分模式为2n*2n的情况下的编码代价。如果预测单元的尺寸为编码单元当前的尺寸所对应的预测模式只有一种,则第一编码代价为在该预测模式下对所述编码单元进行预测编码得到的编码代价,也即该预测模式所对应的编码代价。如果预测单元的尺寸为编码单元当前的尺寸所对应的预测模式有多种,则第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的最小编码代价。

举例来进行说明,例如,编码单元的尺寸为32*32像素,尺寸为32*32像素的预测单元对应的预测模式只有预测模式1一种,则第一编码代价为以预测模式1对编码单元进行预测编码所得到的编码代价。尺寸为32*32像素的预测单元对应的预测模式分别有预测模式1、预测模式2、预测模式3以及预测模式4共四种,分别以这4种预测模式对编码单元进行预测编码所得到的编码代价分别为c11,c12,c13,c14,并且,c11<c12<c13<c14,则第一编码代价为c11。

本发明实施例中,第二编码代价指编码单元的最终的编码代价。如果该编码单元为ctu,则ctu的第二编码代价可等同于上述图3e所示的过程中经过递归过程后所确定的ctu的最小编码代价(c0),由于该第二编码代价为第一编码代价,根据图4所示的划分情况,则可确定该ctu的划分策略为不划分,即直接以ctu当前的尺寸进行编码;如果该编码单元不为ctu并且不为第四层的cu,则编码单元的第二编码代价可等同于上述图3c或图3d所示的过程中经过对cu的在pu划分方式为2n*2n的情况下的最小编码代价和在pu划分方式为n*n的情况下的最小编码代价进行比较所确定的cu的最小编码代价(c21,c31等),该第二编码代价被用于计算该编码单元的上一层cu在pu划分方式为n*n的情况下的最小编码代价,进而可以通过递归的方式确定ctu的第二编码代价,然后确定ctu的划分策略。

本发明实施例中,在确定编码单元需要以帧内预测模式进行预测编码以后,通过确定该编码单元的像素梯度信息并根据该编码单元的像素梯度信息对编码单元进行划分预判决,在划分预判决的结果为不划分的情况下,将以编码单元当前的尺寸作为预测单元的尺寸对编码单元进行预测编码得到的编码代价确定为编码单元的最终的编码代价,进而可以确定编码单元不需要划分,提前结束对该编码单元的划分,省去了将编码单元划分为子编码单元,然后以子编码单元作为新的编码单元进行预测编码、编码代价计算等计算过程,减少了计算量,提高了编码速率。

再请参见图6,为本发明实施例提供了一种确定编码单元的编码代价的方法的流程示意图,如图6所示,本发明实施例的所述方法可以包括以下步骤s201-s208。

s201,确定以帧内预测模式进行预测编码的编码单元。

可以理解的是,编码单元由ctu划分而来,编码单元的尺寸可以为8*8像素、16*16像素、32*32像素、64*64像素中的任意一种尺寸。

本发明实施例中,以帧内预测模式进行预测编码是指以当前帧的编码单元作为参考编码单元进行预测编码,其中,参考编码单元是指已经经过了编码的编码单元。

具体实现中,如果编码单元为i帧(iframe)中的编码单元,由于i帧只采用帧内预测编码,则可以直接确定该编码单元为以帧内预测模式进行预测编码的编码单元。如果编码单元为非i帧(如p帧或b帧)中的编码单元,可参考h.264/avc标准中帧内模式判决算法确定以帧内预测模式进行预测编码的编码单元,其具体可以为:在对编码单元进行帧间预测编码选择完最佳帧间模式后,确定编码单元的平均码率和平均边界误差,如果编码单元的平均码率大于或等于编码单元的平均边界误差,则确定编码单元为以帧内预测模式进行预测的编码单元。当然,如果编码单元为非i帧中的编码单元,也可以根据其他的方式确定以帧内预测模式进行预测编码的编码单元,本发明实施例不做限制。

可以理解的是,如果所述编码单元的尺寸等于scu的尺寸,即8*8像素,编码单元不能继续划分,则跳过步骤s202~s206,执行步骤s207,将第一编码代价确定为编码单元的第二编码代价。

s202,确定所述编码单元对应的像素梯度信息,所述像素梯度信息包括像素梯度方差,所述像素梯度方差为编码单元内的至少部分像素的图像梯度的方差。

本发明实施例中,编码单元对应的像素梯度信息为根据该编码单元中的像素的图像梯度得到的信息。像素梯度信息可以为根据编码单元中的部分像素的图像梯度得到的信息,像素梯度信息也可以根据编码单元中的所有像素的图像梯度的信息。

除了包括像素梯度方差外,像素梯度信息还可以包括像素梯度平均值、像素梯度均方差等用于衡量图像的平滑程度、纹理复杂程度的参数。其中,像素梯度平均值是指编码单元中的部分像素或所有像素的图像梯度的均值。像素梯度均方差是指编码单元中的部分像素或所有像素的图像梯度的均方差。

具体实现中,可以通过图像梯度算法对确定编码单元中的各个像素的像素梯度信息,从而确定编码单元中的部分像素或者所有像素的图像梯度,进一步可根据编码单元中的部分像素的图像梯度或所有像素的图像梯度确定编码单元对应的像素梯度信息。

图像梯度算法可以为基于一阶导数的图像梯度算法,例如为罗伯特(roberts)算子、索贝尔(sobel)算子或prewitt算子等等。图像梯度算法也可以为基于二阶导数的图像梯度算法,例如为拉普拉斯(laplace)算子等。

本发明实施例中,如果像素梯度信息为根据编码单元中的部分像素的图像梯度得到的信息,该部分像素可以是在编码单元的所有像素中随机选取的部分像素。该部分像素也可以是按照一定的选取规则在编码单元的所有像素中选取的部分像素,如编码单元中的部分像素可以是按照预设的采样率选取的部分像素。例如,预设的采样率为90%,编码单元的尺寸为64*64像素,即4096像素,则编码单元中的部分像素为4096像素中3687个像素,可按照从左至右、从上到下的顺序对编码单元中的所有像素进行采样,得到3687个像素。

s203,根据所述像素梯度信息对所述编码单元进行划分预判决。

可以理解的是,如果像素梯度信息为像素梯度方差,则可根据像素梯度方差对编码单元进行划分预判决。如果像素梯度信息还包括像素梯度平均值,则可根据像素梯度方差和像素梯度平均值对编码单元进行划分预判决。如果像素梯度信息还包括像素梯度均方差,则可根据像素梯度方差和像素梯度均方差对编码单元进行划分预判决。其中,根据像素梯度信息对编码单元进行划分预判决的具体实现方式在图8-图12所示的实施例中进行具体介绍,可参见图8-图12所示的实施例中的描述。

如果对所述编码单元的划分预判决的结果为不划分,执行步骤s207,如果对所述编码单元的划分预判决的结果为划分,执行步骤s204。

s204,将所述编码单元划分为至少两个子编码单元。

具体实现中,可参考现有技术中满四叉树的方式,将编码单元划分为四个子编码单元。当然,也可以将编码单元划分为其他数量的子编码单元,本发明实施例不做限制。

s205,分别确定所述至少两个子编码单元的编码代价。

本发明实施例中,可将至少两个子编码单元确定为新的以帧内预测模式进行预测编码的编码单元,执行步骤s201~s208,以分别确定子编码单元的编码代价。

s206,将所述至少两个子编码单元的编码代价之和与第一编码代价进行比较,所述第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的编码代价。

本发明实施例中,第一编码代价为编码单元在pu划分模式为2n*2n的情况下的编码代价。如果预测单元的尺寸为编码单元当前的尺寸所对应的预测模式只有一种,则第一编码代价为在该预测模式下对所述编码单元进行预测编码得到的编码代价,也即该预测模式所对应的编码代价。如果预测单元的尺寸为编码单元当前的尺寸所对应的预测模式有多种,则第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的最小编码代价。

举例来进行说明,例如,编码单元的尺寸为32*32像素,尺寸为32*32像素的预测单元对应的预测模式只有预测模式1一种,则第一编码代价为以预测模式1对编码单元进行预测编码所得到的编码代价。尺寸为32*32像素的预测单元对应的预测模式分别有预测模式1、预测模式2、预测模式3以及预测模式4共四种,分别以这4种预测模式对编码单元进行预测编码所得到的编码代价分别为c11,c12,c13,c14,并且,c11<c12<c13<c14,则第一编码代价为c11。

如果所述至少两个子编码单元的编码代价之和大于或等于第一编码代价,执行步骤s207;如果所述至少两个子编码单元的编码代价之和小于所述第一编码代价,执行步骤s208。

s207,将所述第一编码代价确定为所述编码单元的第二编码代价。

s208,将所述至少两个子编码单元的编码代价之和确定为所述编码单元的第二编码代价。

本发明实施例中,第二编码代价指编码单元的最终的编码代价。如果该编码单元为ctu,则ctu的第二编码代价可等同于上述图3e所示的过程中经过递归过程后所确定的ctu的最小编码代价(c0),由于该第二编码代价为第一编码代价,根据图4所示的划分情况,则可确定该ctu的划分策略为不划分,即直接以ctu当前的尺寸进行编码;如果该编码单元不为ctu并且不为第四层的cu,则编码单元的第二编码代价可等同于上述图3c或图3d所示的过程中经过对cu的在pu划分方式为2n*2n的情况下的最小编码代价和在pu划分方式为n*n的情况下的最小编码代价进行比较所确定的cu的最小编码代价(c21,c31等),该第二编码代价被用于计算该编码单元的上一层cu在pu划分方式为n*n的情况下的最小编码代价,进而可以通过递归的方式确定ctu的第二编码代价,然后确定ctu的划分策略。

本发明实施例中,在确定编码单元需要以帧内预测模式进行预测编码以后,通过确定该编码单元的像素梯度信息并根据该编码单元的像素梯度信息对编码单元进行划分预判决,在划分预判决的结果为不划分的情况下,将以编码单元当前的尺寸作为预测单元的尺寸对编码单元进行预测编码得到的编码代价确定为编码单元的最终的编码代价,进而可以确定编码单元不需要划分,提前结束对该编码单元的划分,只有在划分预判决的结果为划分的情况下才对编码单元进行划分,然后比较编码单元对应的子编码单元的编码代价和和第一编码代价的大小,由于在确定子编码单元的编码代价时也采用了同样的确定编码代价的方法,因此可以提前结束对子编码单元的进一步划分,通过尽可能的提前结束编码单元的划分,省去了大量计算编码代价的过程,减少了计算量,尽快确定ctu的划分策略,提高编码速度。

下面以将编码单元划分分为四个子编码单元为例介绍采用本发明实施例的技术方案确定ctu的划分策略的过程,仍以ctu的尺寸为64*64像素为例,参见图7a-7e。

首先,如图7a所示,将ctu确定为cu,以64*64像素作为预测单元的尺寸对ctu进行预测编码确定ctu的最优预测模式,确定ctu在最优预测模式下的编码代价,即c1,该编码代价为ctu的第一编码代价。根据ctu的像素梯度信息对ctu进行划分判决。

如果对ctu的划分判决的结果为不划分,则将第一编码代价c1确定为ctu的第二编码代价,即c0=c1,此时,由于ctu的第二编码代价确定,由图4可知,确定ctu的划分策略,即ctu不需要划分,划分终止。由于已经确定了ctu的划分策略,无需像图3b所示的过程一样依次计算第二层cu、第三层cu、第四层cu的编码代价,也无需执行图3c至图3e的过程,省去了大量的计算,提高了编码速度。

如果对ctu的划分判决的结果为划分,则将ctu划分为四个32*32的cu,即第二层的cu。

然后,如图7b所示,分别以32*32像素作为预测单元的尺寸对第二层的各个cu进行预测编码确定各个cu的最优预测模式,并确定第二层的各个cu在最优预测模式下的编码代价,该编码代价为第二层的各个cu的第一编码代价,即c21,c22,c23,c24。分别根据第二层的各个cu的像素梯度信息对第二层的各个cu进行划分预判决。

如果对第二层的目标cu的划分判决的结果为不划分,则将第一编码代价确定为第二层的目标cu的第二编码代价,此时,由于第二层的目标cu的第二编码代价确定,则对第二层的目标cu的划分终止。无需像图3b所示的过程一样依次计算该目标cu下的第三层cu、第四层cu的编码代价,同样省去了大量的计算,提高了编码速度。

如果对第二层的目标cu的划分判决的结果为划分,则将第二层的目标cu划分为四个16*16像素的子cu,即第三层的cu。

如图7c所示,分别以16*16像素作为预测单元的尺寸对第三层的各个cu进行预测编码确定第三层的各个cu的最优预测模式,并确定第三层的各个cu在最优预测模式下的编码代价,该编码代价为第三层的各个cu的第一编码代价。分别根据第三层的各个cu的像素梯度信息对第二层的各个cu进行划分预判决。

如果对第三层的目标cu的划分判决的结果为不划分,则将第三层的目标cu的第一编码代价确定为第三层的目标cu的第二编码代价,此时,由于第三层的目标cu的第二编码代价确定,则对第三层的目标cu的划分终止。由于已经确定了目标cu不划分,无需像图3b所示的过程一样依次计算该目标cu下的第四层cu,也省去了大量的计算,提高了编码速度。

如果对第三层的目标cu的划分判决的结果为划分,则将第三层的目标cu划分为四个8*8像素的cu,即第三层的cu。

如图7c所示,分别以8*8像素作为预测单元的尺寸对第四层的各个cu进行预测编码确定第四层的各个cu的最优预测模式,并确定第四层的各个cu在最优预测模式下的编码代价,该编码代价为第四层的各个cu的第一编码代价。

如果形成了树形结构,则根据从下往上的方式依次确定第三层、第二层以及第一层中的cu中还未确定第二编码代价的cu的第二编码代价,将cu的两个编码代价(cu下的四个子cu的第二编码代价之和,以及cu的第一编码代价)中较小的一个确定为cu的第二编码代价。

例如,按照通过图7a-7c的过程所确定的树形结构如图7d所示,其中,通过图7a的过程确定编号为1的cu(即ctu)需要划分。通过图7b的过程确定编号为3和4的cu需要划分,编码为2和5的cu不需要划分,那么编码为2和5的cu的第二编码代价确定,为他们的第一编码代价,编号为3和4的cu的第二编码代价还未确定。通过7c的过程,确定编号为7~13的cu不需要划分,编码为6的cu需要划分,那么编号为7~13的cu的第二编码代价确定,为他们的第一编码代价,编号为6的cu的第二编码代价还未确定。

然后,按照从下往上的方式依次确定还未确定第二编码单价的cu的第二编码代价,即确定编号为6、3、4、1的cu的第二编码代价,如图7e所示,首先,确定第三层的cu中编号为6的cu的第二编码代价,然后,再确定第二层的cu中编码为3和4的cu的第二编码代价,最后,确定编号为1的cu即ctu的第二编码代价。

在确定了各层的cu的第二编码代价之后,根据各层的cu的最小编码代价确定ctu的划分方式,如果ctu的第二编码代价为ctu的第一编码代价,则确定ctu不划分,确定ctu的树形结构只有一层,即根节点,其对应的划分情况如图4中的a所示。如果ctu的第二编码代价为第二层的cu的第二编码代价之和,确定ctu需要划分,确定将ctu划分为四个cu,如图4中的b所示。在确定ctu划分为四个cu的情况下,进一步可根据第二层的cu的第二编码代价确定第二层的划分方式,依次类推,可确定ctu最终的划分情况。

由图7a-7e可知,只有在最极端的情况下,即对上三层(第一层、第二层以及第三层)的每个cu的划分预判决结果均为划分的情况下,才需要按照图3所示的方式进行遍历和递归,以确定ctu的划分策略,只要上三层中有一个cu的划分预判决结果为不划分,那么就可以不计算该cu下的cu的最小编码代价,由于确定一个cu的最小编码代价都需要经过比较复杂的计算,因此,本发明实施例的方案可省去大量计算,节省计算的时间,提高编码速度。

请参见图8,为本发明实施例提供了一种确定编码单元的编码代价的方法的流程示意图,如图8所示,本发明实施例的所述根据所述像素梯度信息对所述编码单元进行划分预判决可以包括以下步骤s301-s303。

s301,确定所述编码单元对应的方差阈值。

本发明实施例中,编码单元对应的方差阈值有两种情况:一种是该方差阈值为一个固定阈值;另一种是该方差阈值与编码单元对应的量化参数正相关,即编码单元对应的量化参数越大,则方差阈值越大。

量化参数反映空间细节压缩情况,如果量化参数小,大部分细节都会保留,如果量化参数增大,则细节丢失,码率降低,即量化参数和码率负相关,也即方差阈值与码率负相关。量化参数的取值可以由编码器决定。量化参数的取值范围为0~52,在量化参数大于0的情况下,编码单元对应的方差阈值可以等于编码单元对应的量化参数乘以x,x为大于或等于1的数值。

s302,如果所述编码单元对应的像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分。

编码单元对应的像素梯度方差用于反映编码单元中的图像的纹理和物体边界情况。编码单元的像素梯度方差较小,说明编码单元的图像可能是杂乱纹理,进一步划分编码单元对提高图像质量帮助不大,由于是杂乱纹理,人眼对该编码单元不敏感,所以不需要进一步划分。

s303,如果所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分。

像素梯度方差较大,说明编码单元可能包含物体边界,进一步划分可能有助于提高图像质量,进一步划分后该编码单元对应的子编码单元的相似性更高,有助于提高压缩效率。

本发明实施例中,根据编码单元的像素梯度方差完成对编码单元是否划分的预判决,由于编码单元的像素梯度方差反映了编码单元中的图像的纹理和边界等情况,根据编码单元的像素梯度方差可提前结束对编码单元的划分,节省计算量,同时能兼顾压缩效率和图像质量。

在另一种可能的实现方式中,本发明实施例所述的像素梯度信息还可以包括像素梯度平均值。请参见图9,为本发明实施例提供了一种确定编码单元的编码代价的方法的流程示意图,如图9所示。本发明实施例的所述根据所述像素梯度信息对所述编码单元进行划分预判决可以包括以下步骤s401-s406。

s401,确定所述编码单元对应的第一阈值、所述编码单元对应的第二阈值以及所述编码单元对应的方差阈值,所述第二阈值大于所述第一阈值。

本发明实施例中,编码单元对应的方差阈值有两种情况:一种是该方差阈值为一个固定阈值;另一种是该方差阈值与编码单元对应的量化参数正相关,即编码单元对应的量化参数越大,则方差阈值越大。

量化参数反映空间细节压缩情况,如果量化参数小,大部分细节都会保留,如果量化参数增大,则细节丢失,码率降低,即量化参数和码率负相关,也即方差阈值与码率负相关。量化参数的取值可以由编码器决定。量化参数的取值范围为0~52,在量化参数大于0的情况下,编码单元对应的方差阈值可以等于编码单元对应的量化参数乘以x,x为大于或等于1的数值。

本发明实施例中,第一阈值和第二阈值均为均值阈值。如果编码单元对应的第一阈值不为零,编码单元对应的第二阈值可以为编码单元对应的第一阈值的固定倍数,即编码单元对应的第二阈值为编码单元对应的第一阈值与第二系数之积,第二系数大于1。如果编码单元对应第一阈值为零,则编码单元对应的第二阈值可以为编码单元对应的阈值与目标均值阈值之和,目标均值阈值为一个固定阈值。

在一种可能的实现方式中,该编码单元对应的第一阈值可以为一个固定阈值。如果编码单元对应的第一阈值为固定阈值,则第一阈值与编码单元的尺寸负相关。

在另一种可能的实现方式中,编码单元对应的第一阈值也可以与编码单元周围的编码单元的像素梯度的平均值相关。具体实现中,如图10所示,所述确定所述编码单元对应的第一阈值,包括以下步骤s501-s503。

s501,确定所述编码单元的多个邻居编码单元,所述邻居编码单元的边缘与所述编码单元的边缘存在重合或所述邻居编码单元的顶点与所述编码单元的顶点存在重合,所述邻居编码单元内的图像与所述编码单元内的图像不重合。

可以理解的,邻居编码单元为在编码单元周围且与编码单元相接的编码单元。该邻居编码单元可以为已经进行了预测编码的编码单元。邻居编码单元的尺寸可以与编码单元的尺寸相同,邻居编码单元的尺寸也可以与编码单元的尺寸不同。

下面举例来对邻居编码单元进行说明,如图11所示,如果编码单元为图11中所示的cu1,cu7、cu17、cu19、cu20、cu23有边缘有cu1的边缘重合,cu6、cu10、cu22以及cu24的顶点与cu1的顶点存在重合,则cu6、cu7、cu10、cu17、cu19、cu20、cu22、cu23以及cu24均为cu1的邻居编码单元,其余的cu没有边缘或顶点与cu1重合,因此,其余的cu不为编码单元的邻居编码单元。

进一步地,邻居编码单元也可以是在编码单元周围的并且在特定方位上的编码单元。例如,邻居编码单元为在编码单元周围的且处于左上方位、正上方位、右上方位和正左方位的邻居编码单元,即在图11中,cu6、cu7、cu10、cu17、cu19是cu1的邻居编码单元。

如果将邻居编码单元限定为与编码单元的尺寸相同的编码单元,仍以cu1为编码单元为例,那么cu1的邻居编码单元可以为:cu3、cu4、cu5、cu6组合形成的编码单元,cu7,cu8、cu9、cu10、cu11组合形成的编码单元,cu16、cu17、cu18、cu19组合形成的编码单元,cu20,cu22,cu23,cu3、cu24、cu25、cu26组合形成的编码单元。

需说明的是,上述对邻居编码单元的举例仅作为示例,不对本发明实施例进行限制。

s502,如果所述多个邻居编码单元中第一邻居编码单元的数量大于或等于目标数量,则根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元的像素梯度平均值确定所述编码单元对应的第一阈值,所述第一邻居编码单元以帧内预测模式进行预测编码。

具体实现中,目标数量可以设置为4,5,6等值。

本发明实施例中,如果编码单元为i帧中的编码单元,则在步骤s501中确定的邻居编码单元均为第一邻居编码单元;如果编码单元为非i帧中的编码单元,则可以按照步骤s101所描述的方式在多个邻居编码单元中确定第一邻居编码单元。

在一种具体实现中,如图12所示,所述根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元的像素梯度平均值确定所述编码单元对应的第一阈值,包括以下步骤s601-s603。

s601,在所述第一邻居编码单元中查找第二邻居编码单元,所述第二邻居编码单元的尺寸大于或等于所述编码单元的尺寸。

例如,在图11所示的邻居编码单元中,cu7、cu10、cu17、cu20、cu22、以及cu23均为以帧内预测模式进行预测编码的编码单元,并且,cu7、cu20、cu22以及cu23的尺寸均等于cu1的尺寸,则cu7、cu20、cu22以及cu23均为第二邻居编码单元。

s602,如果存在所述第二邻居编码单元,则将第一系数与目标平均值之积确定为所述编码单元对应的第一阈值,所述目标平均值为各个第二邻居编码单元对应的像素梯度平均值的总和与所述第二邻居编码单元的数量之商。

第一系数可以为大于1的系数。

具体实现中,可根据上述步骤s102介绍的确定编码单元对应的像素梯度信息的方式确定各个邻居编码单元对应的像素梯度平均值。

例如,第二邻居编码单元为编码单元2、编码单元3、编码单元4、编码单元5,其对应的像素梯度平均值分别为像素梯度平均值1、像素梯度平均值2、像素梯度平均值3、像素梯度平均值4,则目标平均值为(像素梯度平均值1+像素梯度平均值2+像素梯度平均值3+像素梯度平均值4)/4。

s603,如果不存在所述第二邻居单元,则确定所述编码单元对应的第一阈值为零。

可以理解的是,第一阈值为零是进行梯度计算所能得到的最小值。

需要说明的是,步骤s502的方式是针对邻居编码单元的尺寸可以与编码单元的尺寸相同,邻居编码单元的尺寸也可以与编码单元的尺寸不同的情况所设计的确定所述编码单元对应的第一阈值的方式。在另一种可能的实现方式中,如果邻居编码单元特指尺寸与编码单元的尺寸相同的编码单元,那么步骤s502还可替换为:如果所述多个邻居编码单元中第一邻居编码单元的数量大于或等于目标数量,则根据所述第一邻居编码单元的划分情况以及所述第一邻居编码单元的像素梯度平均值确定所述编码单元对应的第一阈值,所述第一邻居编码单元以帧内预测模式进行预测编码的编码单元。

具体实现中,所述根据所述第一邻居编码单元的划分情况以及所述第一邻居编码单元的像素梯度平均值确定所述编码单元对应的第一阈值,包括:在所述第一邻居编码单元中查找第三邻居编码单元,所述第三邻居编码单元为未被划分的第一邻居编码单元;如果存在所述第三邻居编码单元,则将第一系数与目标平均值之积确定为所述编码单元对应的第一阈值,所述目标平均值为各个第二邻居编码单元对应的像素梯度平均值的总和与所述第二邻居编码单元的数量之商。

s503如果所述多个邻居编码单元中所述第一邻居编码单元的数量小于所述目标数量,则将所述编码单元的尺寸对应的均值阈值确定为编码单元对应的第一阈值。

编码单元的尺寸对应的均值阈值为一个固定阈值,其中,编码单元的尺寸越大,则编码尺寸对应的均值阈值越小。具体实现中,可设计三个均值阈值,以分别对应尺寸为16*16像素的编码单元、尺寸为32*32像素的编码单元以及尺寸为64*64像素的编码单元。

s402,将所述编码单元对应的像素梯度平均值与所述第一阈值进行比较。

如果像素梯度平均值小于第一阈值,则执行步骤s405;如果像素梯度平均值大于或等于第一阈值,则执行步骤s403。

编码单元对应的像素梯度平均值用于反映编码单元中的图像内容的平滑情况。编码单元的像素梯度平均值较小,说明编码单元中的图像内容比较平滑,不需要继续划分。

s403,将所述像素梯度平均值与所述第二阈值进行比较。

如果像素梯度平均值小于第二阈值,则执行步骤s404;如果像素梯度平均值大于或等于第二阈值,则执行步骤s406。

像素梯度平均值较大,说明编码单元中的图像的内容不平滑,需要继续划分的可能性大。

s404,将所述编码单元对应的像素梯度方差与所述方差阈值进行比较。

如果像素梯度方差小于方差阈值,则执行步骤s405,如果像素梯度方差大于或等于所述方差阈值,则执行步骤s406。

编码单元对应的像素梯度方差用于反映编码单元中的图像的纹理和物体边界情况。编码单元的像素梯度方差较小,说明编码单元的图像可能是杂乱纹理,进一步划分编码单元对提高图像质量帮助不大,由于是杂乱纹理,人眼对该编码单元不敏感,所以不需要进一步划分。像素梯度方差较大,说明编码单元可能包含物体边界,进一步划分可能有助于提高图像质量,进一步划分后该编码单元对应的子编码单元的相似性更高,有助于提高压缩效率。

s405,确定对所述编码单元的划分预判决的结果为不划分。

s406,确定对所述编码单元的划分预判决的结果为划分。

本发明实施例中,通过结合编码单元的像素梯度方差和像素梯度平均值完成对编码单元是否划分的预判决,编码单元的像素方差反映了编码单元中的图像的纹理和边界等情况,编码单元的像素梯度平均值反映了编码单元中的图像的内容平滑情况,综合分析编码单元中的图像内容,可以实现对编码单元是否划分的准确判决,节省计算量,同时兼顾了压缩效率和图像质量。

下面将结合图13-图16,对本发明实施例提供的确定编码单元的编码代价的装置进行详细介绍。所述确定编码单元的编码代价的装置可以是具备计算处理功能的终端。需要说明的是,图13-图16所示的装置,用于执行本发明图5-图12所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图5-图12所示的实施例。

请参见图13,为本发明实施例提供了一种确定编码单元的编码代价的装置的结构示意图。如图13所示,本发明实施例的所述确定编码单元的编码代价的装置70可以包括:编码单元确定模块71、梯度信息确定模块72、预判决模块73和代价确定模块74。

编码单元确定模块71,用于确定以帧内预测模式进行预测编码的编码单元;

可以理解的是,编码单元由ctu划分而来,编码单元的尺寸可以为8*8像素、16*16像素、32*32像素、64*64像素中的任意一种尺寸。

本发明实施例中,以帧内预测模式进行预测编码是指以当前帧的编码单元作为参考编码单元进行预测编码,其中,参考编码单元是指已经经过了编码的编码单元。

具体实现中,如果编码单元为i帧(iframe)中的编码单元,由于i帧只采用帧内预测编码,则编码单元确定模块71可以直接确定该编码单元为以帧内预测模式进行预测编码的编码单元。如果编码单元为非i帧(如p帧或b帧)中的编码单元,可参考h.264/avc标准中帧内模式判决算法确定以帧内预测模式进行预测编码的编码单元,其具体可以为:编码单元确定模块71在对编码单元进行帧间预测编码选择完最佳帧间模式后,确定编码单元的平均码率和平均边界误差,如果编码单元的平均码率大于或等于编码单元的平均边界误差,则确定编码单元为以帧内预测模式进行预测的编码单元。当然,如果编码单元为非i帧中的编码单元,编码单元确定模块71也可以根据其他的方式确定以帧内预测模式进行预测编码的编码单元,本发明实施例不做限制。

可以理解的是,如果所述编码单元的尺寸等于scu的尺寸,即8*8像素,编码单元不能继续划分,则代价确定模块74直接将第一编码代价确定为编码单元的第二编码代价。

梯度信息确定模块72,用于确定所述编码单元对应的像素梯度信息,所述像素梯度信息包括像素梯度方差,所述像素梯度方差为编码单元内的至少部分像素的图像梯度的方差;

本发明实施例中,编码单元对应的像素梯度信息为梯度信息确定模块72根据该编码单元中的像素的图像梯度得到的信息。像素梯度信息可以为梯度信息确定模块72根据编码单元中的部分像素的图像梯度得到的信息,像素梯度信息也可以为梯度信息确定模块72根据编码单元中的所有像素的图像梯度的信息。

除了包括像素梯度方差外,像素梯度信息还可以包括像素梯度平均值、像素梯度均方差等用于衡量图像的平滑程度、纹理复杂程度的参数。其中,像素梯度平均值是指编码单元中的部分像素或所有像素的图像梯度的均值。像素梯度均方差是指编码单元中的部分像素或所有像素的图像梯度的均方差。

具体实现中,梯度信息确定模块72可以通过图像梯度算法对确定编码单元中的各个像素的像素梯度信息,从而确定编码单元中的部分像素的图像梯度,或者,确定编码单元中的所有像素的图像梯度,进一步可根据编码单元中的部分像素的图像梯度或所有像素的图像梯度确定编码单元对应的像素梯度信息。

图像梯度算法可以为基于一阶导数的图像梯度算法,例如为罗伯特(roberts)算子、索贝尔(sobel)算子或prewitt算子等等。图像梯度算法也可以为基于二阶导数的图像梯度算法,例如为拉普拉斯(laplace)算子等。

本发明实施例中,如果像素梯度信息为根据编码单元中的部分像素的图像梯度得到的信息,该部分像素可以是梯度信息确定模块72在编码单元的所有像素中随机选取的部分像素。编码单元中的部分像素也可以是梯度信息确定模块72按照一定的选取规则在编码单元的所有像素中选取的部分像素,如编码单元中的部分像素可以是按照预设的采样率选取的部分像素。例如,预设的采样率为90%,编码单元的尺寸为64*64像素,即4096像素,则编码单元中的部分像素为4096像素中3687个像素,梯度信息确定模块72可按照从左至右、从上到下的顺序对编码单元中的所有像素进行采样,得到3687个像素。

预判决模块73,用于根据所述像素梯度信息对所述编码单元进行划分预判决;

可以理解的是,如果像素梯度信息为像素梯度方差,则预判决模块73可根据像素梯度方差对编码单元进行划分预判决。如果像素梯度信息还包括像素梯度平均值,则预判决模块73可根据像素梯度方差和像素梯度平均值对编码单元进行划分预判决。如果像素梯度信息还包括像素梯度均方差,则预判决模块73可根据像素梯度方差和像素梯度均方差对编码单元进行划分预判决。

可选的,如图14所示,所述预判决模块73可以包括阈值确定单元731,结果确定单元732。

在一种具体实现方式中,阈值确定单元731,用于确定所述编码单元对应的方差阈值;结果确定单元732,用于如果所述像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分;所述结果确定单元732还用于如果所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分。

在另一种具体实现方式中,所述像素梯度信息还包括像素梯度平均值,阈值确定单元731,用于确定所述编码单元对应的第一阈值、所述编码单元对应的第二阈值以及所述编码单元对应的方差阈值,所述第二阈值大于所述第一阈值;结果确定单元732,用于如果所述像素梯度平均值小于所述第一阈值,则确定对所述编码单元的划分预判决的结果为不划分;或者所述结果确定单元732还用于如果所述像素梯度平均值大于或等于所述第一阈值,并且,所述像素梯度平均值小于所述第二阈值,并且,所述像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分;或者所述结果确定单元732还用于如果所述像素梯度平均值大于或等于所述第一阈值,并且,所述像素梯度平均值小于所述第二阈值,并且,所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分;或者所述结果确定单元732还用于如果所述述像素梯度平均值大于或等于所述第二阈值,则确定对所述编码单元的划分预判决的结果为划分。

本发明实施例中,编码单元对应的方差阈值有两种情况:一种是该方差阈值为一个固定阈值;另一种是该方差阈值与编码单元对应的量化参数正相关,即编码单元对应的量化参数越大,则方差阈值越大。

量化参数反映空间细节压缩情况,如果量化参数小,大部分细节都会保留,如果量化参数增大,则细节丢失,码率降低,即量化参数和码率负相关,也即方差阈值与码率负相关。量化参数的取值可以由编码器决定。量化参数的取值范围为0~52,在量化参数大于0的情况下,阈值确定单元731可以将编码单元对应的量化参数乘以x确定为编码单元对应的方差阈值,x为大于或等于1的数值;阈值确定单元731也可以将固定方差阈值确定为编码单元对应的方差阈值。

本发明实施例中,第一阈值和第二阈值均为均值阈值。如果编码单元对应的第一阈值不为零,编码单元对应的第二阈值可以为编码单元对应的第一阈值的固定倍数,即阈值确定单元731可以确定编码单元对应的第二阈值为编码单元对应的第一阈值与第二系数之积,第二系数大于1。如果编码单元对应第一阈值为零,则阈值确定单元731可以确定编码单元对应的第二阈值可以为编码单元对应的阈值与目标均值阈值之和,目标均值阈值为一个固定阈值。

在一种可能的实现方式中,该编码单元对应的第一阈值可以为一个固定阈值,阈值确定单元731可以将该编码单元的尺寸对应的均值阈值确定为编码单元对应的第一阈值。如果编码单元对应的第一阈值为固定阈值,则第一阈值与编码单元的尺寸负相关。

在另一种可能的实现方式中,编码单元对应的第一阈值也可以与编码单元周围的编码单元的像素梯度的平均值相关。在确定所述编码单元对应的第一阈值时,所述阈值确定单元731可以具体用于:

确定所述编码单元的多个邻居编码单元,所述邻居编码单元的边缘与所述编码单元的边缘存在重合或所述邻居编码单元的顶点与所述编码单元的顶点存在重合,所述邻居编码单元内的图像与所述编码单元内的图像不重合;如果所述多个邻居编码单元中第一邻居编码单元的数量大于或等于目标数量,则根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元对应的像素梯度平均值确定所述编码单元对应的第一阈值,所述第一邻居编码单元以帧内预测模式进行预测编码;如果所述多个邻居编码单元中所述第一邻居编码单元的数量小于所述目标数量,则将所述编码单元的尺寸对应的均值阈值确定为编码单元对应的第一阈值。

本发明实施例中,邻居编码单元可以为在编码单元周围且与编码单元相接的编码单元。该邻居编码单元可以为已经进行了预测编码的编码单元。邻居编码单元的尺寸可以与编码单元的尺寸相同,邻居编码单元的尺寸也可以与编码单元的尺寸不同。

下面举例来对邻居编码单元进行说明,如图11所示,如果编码单元为图11中所示的cu1,cu7、cu17、cu19、cu20、cu23有边缘有cu1的边缘重合,cu6、cu10、cu22以及cu24的顶点与cu1的顶点存在重合,则阈值确定单元731确定cu6、cu7、cu10、cu17、cu19、cu20、cu22、cu23以及cu24均为cu1的邻居编码单元,其余的cu没有边缘或顶点与cu1重合,因此,阈值确定单元731确定其余的cu不为编码单元的邻居单元。

进一步地,邻居编码单元也可以是在编码单元周围的并且在特定方位上的编码单元。例如,邻居编码单元为在编码单元周围的且处于左上方位、正上方位、右上方位和正左方位的邻居编码单元,此时,阈值确定单元731确定cu6、cu7、cu10、cu17、cu19是cu的邻居编码单元。

如果将邻居编码单元限定为与编码单元的尺寸相同的编码单元,仍以cu1为编码单元为例,阈值确定单元731确定以下编码单元为邻居编码单元:cu3、cu4、cu5、cu6组合形成的编码单元,cu7,cu8、cu9、cu10、cu11组合形成的编码单元,cu16、cu17、cu18、cu19组合形成的编码单元,cu20,cu22,cu23,cu3、cu24、cu25、cu26组合形成的编码单元。

具体实现中,目标数量可以设置为4,5,6等值。

编码单元的尺寸对应的均值阈值为一个固定阈值,其中,编码单元的尺寸越大,则编码尺寸对应的均值阈值越小。具体实现中,可设计三个均值阈值,以分别对应尺寸为16*16像素的编码单元、尺寸为32*32像素的编码单元以及尺寸为64*64像素的编码单元。

本发明实施例中,如果编码单元为i帧中的编码单元,则阈值确定单元731确定所有的邻居编码单元均为第一邻居编码单元;如果编码单元为非i帧中的编码单元,则阈值确定单元731通过编码单元确定模块71在多个邻居编码单元中确定第一邻居编码单元。

具体实现中,在根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元的像素梯度平均值确定所述编码单元对应的第一阈值时,所述阈值确定单元731可以具体用于:在所述第一邻居编码单元中查找第二邻居编码单元,所述第二邻居编码单元的尺寸大于或等于所述编码单元的尺寸。如果存在所述第二邻居编码单元,则将第一系数与目标平均值之积确定为所述编码单元对应的第一阈值,所述目标平均值为各个第二邻居编码单元对应的像素梯度平均值的总和与所述第二邻居编码单元的数量之商。如果不存在所述第二邻居单元,则确定所述编码单元对应的第一阈值为零。

例如,在图11所示的邻居编码单元中,cu7、cu10、cu17、cu20、cu22、以及cu23均为以帧内预测模式进行预测编码的编码单元,并且,cu7、cu20、cu22以及cu23的尺寸均等于cu1的尺寸,则阈值确定单元731确定cu7、cu20、cu22以及cu23均为第二邻居编码单元。

具体实现中,阈值确定单元731可通过梯度信息确定模块72确定各个邻居编码单元对应的像素梯度平均值,进而确定目标平均值。

例如,第二邻居编码单元为编码单元2、编码单元3、编码单元4、编码单元5,其对应的像素梯度平均值分别为像素梯度平均值1、像素梯度平均值2、像素梯度平均值3、像素梯度平均值4,则阈值确定单元731确定目标平均值为(像素梯度平均值1+像素梯度平均值2+像素梯度平均值3+像素梯度平均值4)/4。

可以理解的是,第一阈值为零是进行梯度计算所能得到的最小值。

可选的,在确定所述编码单元对应的第一阈值时,阈值确定单元731也可以具体用于:确定所述编码单元的多个邻居编码单元,所述邻居编码单元的边缘与所述编码单元的边缘存在重合或所述邻居编码单元的顶点与所述编码单元的顶点存在重合,所述邻居编码单元内的图像与所述编码单元内的图像不重合;如果所述多个邻居编码单元中第一邻居编码单元的数量大于或等于目标数量,则根据所述第一邻居编码单元的划分情况以及所述第一邻居编码单元的像素梯度平均值确定所述编码单元对应的第一阈值,所述第一邻居编码单元以帧内预测模式进行预测编码的编码单元。

具体实现中,阈值确定单元731可以具体用于:在所述第一邻居编码单元中查找第三邻居编码单元,所述第三邻居编码单元为未被划分的第一邻居编码单元;如果存在所述第三邻居编码单元,则将第一系数与目标平均值之积确定为所述编码单元对应的第一阈值,所述目标平均值为各个第二邻居编码单元对应的像素梯度平均值的总和与所述第二邻居编码单元的数量之商。

代价确定模块74,用于如果所述预判决模块73对所述编码单元的划分预判决的结果为不划分,则将第一编码代价确定为所述编码单元的第二编码代价,所述第二编码代价被用于确定所述编码单元对应的编码树单元的划分策略,所述第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的编码代价。

本发明实施例中,第一编码代价为编码单元在pu划分模式为2n*2n的情况下的编码代价。如果预测单元的尺寸为编码单元当前的尺寸所对应的预测模式只有一种,则第一编码代价为在该预测模式下对所述编码单元进行预测编码得到的编码代价,也即该预测模式所对应的编码代价。如果预测单元的尺寸为编码单元当前的尺寸所对应的预测模式有多种,则第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的最小编码代价。

举例来进行说明,例如,编码单元的尺寸为32*32像素,尺寸为32*32像素的预测单元对应的预测模式只有预测模式1一种,则第一编码代价为以预测模式1对编码单元进行预测编码所得到的编码代价。尺寸为32*32像素的预测单元对应的预测模式分别有预测模式1、预测模式2、预测模式3以及预测模式4共四种,代价确定模块74分别以这4种预测模式对编码单元进行预测编码所得到的编码代价分别为c11,c12,c13,c14,并且,c11<c12<c13<c14,则代价确定模块74确定第一编码代价为11。

本发明实施例中,第二编码代价指编码单元的最终的编码代价。如果该编码单元为ctu,则ctu的第二编码代价可等同于上述图3e所示的过程中经过递归过程后所确定的ctu的最小编码代价(c0),由于该第二编码代价为第一编码代价,根据前述介绍的根据ctu的最小编码代价确定划分策略的介绍,则可确定该ctu的划分策略为不划分,即直接以ctu当前的尺寸进行编码;如果该编码单元不为ctu并且不为第四层的cu,则编码单元的第二编码代价可等同于上述图3c或图3d所示的过程中经过对cu的在pu划分方式为2n*2n的情况下的最小编码代价和在pu划分方式为n*n的情况下的最小编码代价进行比较所确定的cu的最小编码代价(c21,c31等),该第二编码代价被用于计算该编码单元的上一层节点在pu划分方式为n*n的情况下的最小编码代价,进而可以通过递归的方式确定ctu的第二编码代价,然后确定ctu的划分策略。

本发明实施例中,在确定编码单元需要以帧内预测模式进行预测编码以后,通过确定该编码单元的像素梯度信息并根据该编码单元的像素梯度信息对编码单元进行划分预判决,在划分预判决的结果为不划分的情况下,将以编码单元当前的尺寸作为预测单元的尺寸对编码单元进行预测编码得到的编码代价确定为编码单元的最终的编码代价,进而可以确定编码单元不需要划分,提前结束对该编码单元的划分,省去了将编码单元划分为子编码单元,然后以子编码单元作为新的编码单元进行预测编码、编码代价计算等计算过程,减少了计算量,提高了编码速率。

请参见图15,为本发明实施例提供了一种确定编码单元的编码代价的装置的结构示意图,所述装置可以包括上述图13对应实施例中的编码单元确定模块71、梯度信息确定模块72、预判决模块73和代价确定模块74,进一步地,所述装置还可以包括划分模块75,其中:

划分模块75,用于如果所述预判决模块对所述编码单元的划分预判决的结果为划分,则将所述编码单元划分为至少两个子编码单元;

具体实现中,可参考现有技术中满四叉树的方式,划分模块75将编码单元划分为四个子编码单元。当然,划分模块75也可以将编码单元划分为其他数量的子编码单元,本发明实施例不做限制。

所述编码单元确定模块71还用于将所述至少两个子编码单元作为新的以帧内预测模式进行预测编码的编码单元,所述梯度信息确定模块72还用于分别确定所述至少两个子编码单元对应的像素梯度信息,所述预判决模块73还用于根据所述像素梯度信息分别对所述至少两个编码子单元进行划分预判决,所述代价确定模块74还用于分别确定所述至少两个子编码单元的编码代价;

具体实现中,梯度信息确定模块72可按照确定编码单元对应的像素梯度信息的方式分别确定所述至少两个子编码单元对应的像素梯度信息;预判决模块73可按照根据编码单元对应的像素梯度信息对编码单元进行划分预判决的方式分别对所述至少两个编码子单元进行划分预判决;代价确定模块74可按照确定编码单元的编码代价的方式分别确定所述至少两个子编码单元的编码代价,具体可参考前述图13对应的实施例中的相应描述。

所述代价确定模块74还用于如果所述至少两个子编码单元的编码代价之和大于或等于所述第一编码代价,则将所述第一编码代价确定为所述编码单元的第二编码代价;

所述代价确定模块74还用于如果所述至少两个子编码单元的编码代价之和大于所述第一编码代价,则将所述至少两个子编码单元的编码代价之和确定为所述编码单元的第二编码代价。

本发明实施例中,在确定编码单元需要以帧内预测模式进行预测编码以后,通过确定该编码单元的像素梯度信息并根据该编码单元的像素梯度信息对编码单元进行划分预判决,在划分预判决的结果为不划分的情况下,将以编码单元当前的尺寸作为预测单元的尺寸对编码单元进行预测编码得到的编码代价确定为编码单元的最终的编码代价,进而可以确定编码单元不需要划分,提前结束对该编码单元的划分,只有在划分预判决的结果为划分的情况下才对编码单元进行划分,然后比较编码单元对应的子编码单元的编码代价和和第一编码代价的大小,由于在确定子编码单元的编码代价时也采用了同样的确定编码代价的方法,因此可以提前结束对子编码单元的进一步划分,通过尽可能的提前结束编码单元的划分,省去了大量计算编码代价的过程,减少了计算量,尽快确定ctu的划分策略,提高编码速度。

请参见图16,为本发明实施例提供了一种终端的结构示意图。如图16所示,所述终端80可以包括:至少一个处理器801,例如cpu,输入输出接口803,存储器804,至少一个通信总线802。其中,通信总线802用于实现这些组件之间的连接通信。其中,输入输出接口803可以包括标准的有线接口(如usb接口)、无线接口(如wi-fi接口)。输入输出接口803可选的可以包括用户接口(如显示屏、键盘、鼠标等)。存储器804可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器804可选的还可以是至少一个位于远离前述处理器801的存储装置。如图15所示,作为一种计算机存储介质的存储器804中可以包括操作系统、网络通信模块、用户接口模块、确定编码代价的程序以及图像。

在图15所示的终端80中,输入输出接口803用于获取图像并发送给终端。可选的,输入输出接口还可以用于输出处理器处理后的图像。处理器801可以对图像进行划分,得到编码单元。进一步地,处理器801可以用于调用存储器804中存储的确定编码代价的程序,并具体执行以下操作:

确定以帧内预测模式进行预测编码的编码单元;

在所述编码单元确定所述编码单元对应的像素梯度信息,所述像素梯度信息包括像素梯度方差,所述像素梯度方差为编码单元内的至少部分像素的图像梯度的方差;

根据所述像素梯度信息对所述编码单元进行划分预判决;

如果对所述编码单元的划分预判决的结果为不划分,则将第一编码代价确定为所述编码单元的第二编码代价,所述第二编码代价被用于确定所述编码单元对应的编码树单元的划分策略,所述第一编码代价为以所述编码单元当前的尺寸作为预测单元的尺寸对所述编码单元进行预测编码得到的编码代价。

在一个实施例中,所述处理器801还可以调用存储器804中存储的确定编码代价的程序执行以下操作:

如果对所述编码单元的划分预判决的结果为划分,则将所述编码单元划分为至少两个子编码单元;

将所述至少两个子编码单元作为新的以帧内预测模式进行预测编码的编码单元,执行所述确定编码单元的编码代价的方法,分别确定所述至少两个子编码单元的编码代价;

如果所述至少两个子编码单元的编码代价之和大于或等于所述第一编码代价,则将所述第一编码代价确定为所述编码单元的第二编码代价;

如果所述至少两个子编码单元的编码代价之和小于所述第一编码代价,则将所述至少两个子编码单元的编码代价之和确定为所述编码单元的第二编码代价。

在一个实施例中,所述处理器801在执行根据所述像素梯度信息对所述编码单元进行划分预判决时,具体执行以下操作:

确定所述编码单元对应的方差阈值;

如果所述像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分;

如果所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分。

在一个实施例中,所述像素梯度信息还包括像素梯度平均值,所述像素梯度平均值为编码单元内的至少部分像素的图像梯度的平均值;所述处理器801在执行根据所述像素梯度信息对所述编码单元进行划分预判决时,具体执行以下操作:

确定所述编码单元对应的第一阈值、所述编码单元对应的第二阈值以及所述编码单元对应的方差阈值,所述第二阈值大于所述第一阈值;

如果所述像素梯度平均值小于所述第一阈值,则确定对所述编码单元的划分预判决的结果为不划分;或者

如果所述像素梯度平均值大于或等于所述第一阈值,并且,所述像素梯度平均值小于所述第二阈值,并且,所述像素梯度方差小于所述方差阈值,则确定对所述编码单元的划分预判决的结果为不划分;或者

如果所述像素梯度平均值大于或等于所述第一阈值,并且,所述像素梯度平均值小于所述第二阈值,并且,所述像素梯度方差大于或等于所述方差阈值,则确定对所述编码单元的划分预判决的结果为划分;或者

如果所述述像素梯度平均值大于或等于所述第二阈值,则确定对所述编码单元的划分预判决的结果为划分。

在一个实施例中,所述处理器801在执行确定所述编码单元对应的第一阈值时,具体执行以下操作:

确定所述编码单元的多个邻居编码单元,所述邻居编码单元的边缘与所述编码单元的边缘存在重合或所述邻居编码单元的顶点与所述编码单元的顶点存在重合,所述邻居编码单元内的图像与所述编码单元内的图像不重合;

如果所述多个邻居编码单元中第一邻居编码单元的数量大于或等于目标数量,则根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元对应的像素梯度平均值确定所述编码单元对应的第一阈值,所述第一邻居编码单元以帧内预测模式进行预测编码;

如果所述多个邻居编码单元中所述第一邻居编码单元的数量小于所述目标数量,则将所述编码单元的尺寸对应的均值阈值确定为编码单元对应的第一阈值。

在一个实施例中,所述处理器801在执行根据所述第一邻居编码单元的尺寸以及所述第一邻居编码单元对应的像素梯度平均值确定所述编码单元对应的第一阈值时,具体执行以下操作:

在所述第一邻居编码单元中查找第二邻居编码单元,所述第二邻居编码单元的尺寸大于或等于所述编码单元的尺寸;

如果存在所述第二邻居编码单元,则将第一系数与目标平均值之积确定为所述编码单元对应的第一阈值,所述目标平均值为各个第二邻居编码单元对应的像素梯度平均值的总和与所述第二邻居编码单元的数量之商;

如果不存在所述第二邻居单元,则确定所述编码单元对应的第一阈值为零。

在一个实施例中,所述编码单元对应的第二阈值为所述编码单元对应的第一阈值与第二系数之积。

在一个实施例中,所述编码单元对应的方差阈值与所述编码单元对应的量化参数正相关。

本发明实施例中,在确定编码单元需要以帧内预测模式进行预测编码以后,通过确定该编码单元的像素梯度信息并根据该编码单元的像素梯度信息对编码单元进行划分预判决,在划分预判决的结果为不划分的情况下,将以编码单元当前的尺寸作为预测单元的尺寸对编码单元进行预测编码得到的编码代价确定为编码单元的最终的编码代价,进而可以确定编码单元不需要划分,提前结束对该编码单元的划分,只有在划分预判决的结果为划分的情况下才对编码单元进行划分,然后比较编码单元对应的子编码单元的编码代价和和第一编码代价的大小,由于在确定子编码单元的编码代价时也采用了同样的确定编码代价的方法,因此可以提前结束对子编码单元的进一步划分,通过尽可能的提前结束编码单元的划分,省去了大量计算编码代价的过程,减少了计算量,尽快确定ctu的划分策略,提高编码速度。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

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