基于帧内预测的编码方法、图像处理设备和存储装置与流程

文档序号:18618567发布日期:2019-09-06 22:16阅读:172来源:国知局
基于帧内预测的编码方法、图像处理设备和存储装置与流程

本申请涉及图像编码技术领域,特别是涉及基于帧内预测的编码方法、图像处理设备和存储装置。



背景技术:

随着用户对视频清晰度的要求越来越高,视频图像数据量也越来越大,为了减轻传输视频图像数据的负担,将视频图像数据传输前进行视频编码,以压缩视频图像数据的大小。视频编码的流程包括预测、变换、量化、编码等。

当前主要采用的预测模式包括帧内预测,帧内预测就是在一帧图像内,根据当前像素点周围像素点的像素(即参考像素),来预测当前像素点的像素。其中,子块划分(intrasub-partitions,isp)是帧内预测的重要环节。

在现有技术中isp的子块分割只考虑了将当前编码单元(codingunit,cu)块垂直或水平分为二等分或四等分,没有考虑更多的分割方式。预测的准确性和压缩性都十分有限。

除此之外,现有技术中对当前cu块中除第一个子块外的其余子块进行预测时,需要等前一相邻子块重构结束后,用前一子块的重构像素作为当前子块的参考像素进行预测,运行效率较低。



技术实现要素:

本申请主要解决的技术问题是提供一种基于帧内预测的编码方法,能够有效提升预测的准确性和压缩性能。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种基于帧内预测的编码方法,包括:获取原始待编码亮度块;确定所述原始待编码亮度块的选定子块分割方式;根据所述选定子块分割方式对所述原始待编码亮度块进行分割,得到至少两个待编码子块;分别对所述至少两个待编码子块进行编码,得到已编码子块;其中,所述目标分割方式包括分割方向以及分割出的子块的个数和边长;所述分割方向包括:水平分割、垂直分割、水平垂直同时分割中的一种;所述子块的边长为整数个像素。

其中,所述确定所述原始待编码亮度块的选定子块分割方式,包括:指定所述选定子块分割方式;或从至少两种候选子块分割方式中选择一个作为所述选定子块分割方式。

其中,所述至少两种候选子块分割方式中选择一个作为选定子块分割方式,包括:分别计算每个所述候选子块分割方式的代价值;从所述至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式。

其中,所述确定每种分割方式的子块分割数量包括:计算所述原始待编码亮度块的尺寸,根据所述尺寸确定每种分割方式的子块分割数量;其中,根据以下公式计算所述原始待编码亮度块的尺寸:

size=(log2w+log2h)>>1

其中,size为所述原始待编码亮度块的尺寸,w为所述原始待编码亮度块的宽度,h为所述原始待编码亮度块的高度,>>1操作在二进制中表示右移一位,在十进制中表现为将原始数除以2后向下取整。

其中,所述根据所述尺寸确定每种分割方式的子块分割数量,包括:对于尺寸小于第一预设值的原始待编码亮度块进行水平分割,平均分割为两个待编码子块;对于尺寸小于第二预设值且大于或等于所述第一预设值的原始待编码亮度块进行水平分割,分割为三个待编码子块;对于尺寸大于或等于所述第二预设值的原始待编码亮度块进行水平分割,分割为四个待编码子块。

其中,所述根据所述尺寸确定每种分割方式的子块分割数量,包括:对于尺寸小于第一预设值的原始待编码亮度块进行垂直分割,平均分割为两个待编码子块;对于尺寸小于第二预设值且大于或等于所述第一预设值的原始待编码亮度块进行垂直分割,分割为四个待编码子块。

其中,所述确定每种分割方式的子块分割数量包括:对于尺寸大于或等于所述第二预设值的原始待编码亮度块同时进行垂直分割和水平分割,分割为w*h/64待编码子块,其中,w为所述原始待编码亮度块的宽度,h为所述原始待编码亮度块的高度。

其中,所述第一预设阈值为3,所述第二预设阈值为5。

其中,所述从至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式,包括:从所述至少两种候选子块分割方式中选择代价值最小的一种作为选定子块分割方式。

其中,所述分别对所述至少两个待编码子块进行编码,得到已编码子块,包括:对第一个待编码子块进行编码,得到第一个已编码子块;对第二个待编码子块及剩余的待编码子块,使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码,得到第二个已编码子块及剩余的已编码子块。

其中,所述使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码之前,包括:判断所述原始待编码亮度块的尺寸是否大于阈值;若不大于所述阈值,则执行所述使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码的动作,否则不执行所述使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码的动作。

其中,所述不执行所述使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码的同时,对第二个待编码子块及剩余的待编码子块,使用相邻的前一个已编码子块的最后一行或一列的重构像素作为参考像素进行预测和编码,得到第二个已编码子块及剩余的已编码子块。

其中,所述分别对所述至少两个待编码子块进行编码,包括:对所述至少两个待编码子块的参考像素进行滤波,并构建对应的最可能模式列表,根据所述最可能模式列表选择最佳预测方式,采用所述最佳预测方式对所述至少两个待编码子块进行预测和编码。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种图像处理设备,包括:获取模块,用于获取原始待编码亮度块;候选模块,用于确定所述原始待编码亮度块的至少两种候选子块分割方式;计算模块,用于分别计算每个所述候选子块分割方式的代价值;选择模块,用于从所述至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式;分割模块,用于采用所述选定子块分割方式对所述原始待编码亮度块进行分割,得到至少两个待编码子块;编码模块,用于分别对所述至少两个待编码子块进行编码,得到已编码子块。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种图像处理设备,包括处理器和存储器,所述处理器耦接所述存储器,所述处理器在工作时控制自身以及所述存储器实现如上所述方法中的步骤。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种具有存储功能的装置,存储有程序数据,所述程序数据能够被执行以实现如上所述方法中的步骤。

本申请的有益效果是:区别于现有技术的情况,本申请采用水平分割、垂直分割以及水平垂直同时分割中的至少一种对原始待编码亮度块进行分割,且对分割的子块的比例不做限定,只要求子块的边长为整数个像素,可以进一步将原始代表编码亮度块划分的更加细致,从而有效提升帧内预测的准确性,有效提压缩的性能。

附图说明

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

图1是本申请提供的基于帧内预测的编码方法的第一实施例的流程示意图;

图2是本申请提供的基于帧内预测的编码方法的第二实施例的流程示意图;

图3是本申请提供的基于帧内预测的编码方法的第三实施例的流程示意图;

图4是本申请提供的基于帧内预测的编码方法的第四实施例的流程示意图;

图5是本申请提供的基于帧内预测的编码方法的第五实施例的流程示意图;

图6是本申请提供的图像处理设备的第一实施方式的结构示意图;

图7是本申请提供的图像处理设备的第二实施方式的结构示意图;

图8是本申请提供的具有存储功能的装置一实施方式的结构示意图;

图9a是本申请提供的子块分割方式的第一实施例的结构示意图;

图9b是本申请提供的子块分割方式的第二实施例的结构示意图;

图9c是本申请提供的子块分割方式的第三实施例的结构示意图;

图10a是本申请提供的将尺寸为i的原始待编码亮度块水平划分为i个待编码子块的第一实施例的结构示意图;

图10b是本申请提供的将尺寸为i的原始待编码亮度块水平划分为i个待编码子块的第二实施例的结构示意图;

图10c是本申请提供的将尺寸为i的原始待编码亮度块水平划分为i个待编码子块的第三实施例的结构示意图;

图10d是本申请提供的将尺寸为i的原始待编码亮度块水平划分为i个待编码子块的第四实施例的结构示意图;

图10e是本申请提供的将尺寸为i的原始待编码亮度块水平划分为i个待编码子块的第五实施例的结构示意图;

图11a是本申请提供的将尺寸为i的原始待编码亮度块垂直划分为i个待编码子块的第一实施例的结构示意图;

图11b是本申请提供的将尺寸为i的原始待编码亮度块垂直划分为i个待编码子块的第二实施例的结构示意图;

图11c是本申请提供的将尺寸为i的原始待编码亮度块垂直划分为i个待编码子块的第三实施例的结构示意图;

图11d是本申请提供的将尺寸为i的原始待编码亮度块垂直划分为i个待编码子块的第四实施例的结构示意图;

图11e是本申请提供的将尺寸为i的原始待编码亮度块垂直划分为i个待编码子块的第五实施例的结构示意图。

具体实施方式

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

参阅图1,图1是本申请提供的基于帧内预测的编码方法的第一实施例的流程示意图,本申请提供的基于帧内预测的编码方法包括:

s101:获取原始待编码亮度块。

在一个具体的实施场景中,获取待传输的视频,该待传输的视频由许多静止的图像连续播放形成的。将每一幅静止的图像作为一帧。对当前图像的部分帧进行帧内预测,以压缩其大小,从而压缩整个待传输视频的大小。

在本实施场景中,采用的颜色编码方法为yuv方法,“y”表示明亮度(luma),“u”、“v”则是色度(chrominance),。每个亮度块都对应两个色度块,每一个色度块只对应一个亮度块。获取当前帧中的一亮度块,将该亮度块作为原始待编码亮度块。

s102:确定所述原始待编码亮度块的选定子块分割方式。

在一个具体的实施场景中,可以直接指定或者随机指定或根据预设条件指定对原始待编码亮度块进行分割时采用的选定子块分割方式,也可以从多个候选子块分割方式中选择一个作为选定子块分割方式。该选定分割方式包括对原始待编码亮度块分割的方向、分割出的子块的个数和边长中的至少一项。

对该原始待编码亮度块进行分割的方向包括水平分割、垂直分割、水平垂直同时分割中的至少一种。在本实施场景中,分割后获取的子块的边长为整数个像素。

具体地说,请参阅图9a、图9b和图9c,图9a、图9b和图9c分别是本申请提供的子块分割方式的第一、第二和第三实施例的示意图。当对该原始待编码亮度块进行垂直分割时,设w=2m,(m=2,3,4,5,6),那么可分割成的子块个数i=2,3,4,…,w;在进行垂直分割时,设从左到右子块的上边长为t0,t1,…,ti-1,要保证t0~ti-1都为整数,比例可任意分配。

同样地,当对该原始待编码亮度块进行水平分割时,设h=2n,(n=2,3,4,5,6),那么可分割成的子块个数i=2,3,4,…,h;在进行水平分割时,设从上到下子块的左边长为l0,l1,…,li-1,要保证l0~li-1都为整数,比例可任意分配。

当对该原始待编码亮度块同时进行水平和垂直分割时,设w=2m,(m=2,3,4,5,6),h=2n,(n=2,3,4,5,6)。那么可分割成的子块个数i=a*b,其中a=2,3,4,…,w,b=2,3,4,…,h。需保证每个子块的所有边长都为整数,上边长之间的比例可任意分配,左边长之间的比例也可任意分配。

s103:采用所述选定子块分割方式对所述原始待编码亮度块进行分割,得到至少两个待编码子块。

在一个具体的实施场景中,根据步骤s104中所选定的选定子块分割方式对原始待编码亮度块进行分割,得到至少两个待编码子块。

s104:分别对所述至少两个待编码子块进行编码,得到已编码子块。

在一个具体的实施场景中,对步骤s105中得到的至少两个待编码子块进行编码。在本实施场景中是对该至少两个待编码子块进行帧内预测编码,在其他实施场景中还可以是其他编码方法。在经过编码后,得到至少两个已编码子块。

在进行预测编码时,至少两个待编码子块中的第一块子块的预测方式与原始块相同,以原始块的参考像素为参考像素,其他子块的预测方式为前一个相邻的子块的重构像素或者预测像素作为参考像素。

通过上述描述可知,本实施例采用水平分割、垂直分割以及水平垂直同时分割中的至少一种对原始待编码亮度块进行分割,且对分割的子块的比例不做限定,只要求子块的边长为整数个像素,可以进一步将原始代表编码亮度块划分的更加细致,从而有效提升帧内预测的准确性,有效提压缩的性能。

请参阅图2,图2是本申请提供的基于帧内预测的编码方法的第二实施例的流程示意图。本申请提供的基于帧内预测的编码方法包括:

s201:获取原始待编码亮度块。

在一个具体的实施场景中,步骤s201与本申请提供的基于帧内预测的编码方法的第一实施例中的步骤s101基本一致,此处不再进行赘述。

s202:确定所述原始待编码亮度块的至少两种候选子块分割方式。

在一个具体的实施场景中,对该原始待编码亮度块进行分割的方式包括水平分割、垂直分割、水平垂直同时分割中的至少一种。当该原始待编码尺寸较大时,还需要确定每种分割方式的子块分割数量、子块边长,以及确定所有原始待编码亮度块都采用固定分割方式、子块分割数量、子块边长/边长比例,还是至少部分原始待编码亮度块都采用不同分割方式、子块分割数量、子块边长。

例如,假设该原始待编码亮度块的大小为w*h,其中,w表示原始待编码亮度块的宽,h表示原始待编码亮度块的高。采用水平分割、垂直分割、水平垂直同时分割中的至少一种分割为i个子块(i=2,3,4…)。但要保证每个子块的长和宽都为整数。

s203:分别计算每个所述候选子块分割方式的代价值。

在一个具体的实施场景中,可以先计算出该原始待编码亮度块的多种分割方式各自对应的代价值,该代价值代表了该种分割方法对应的预测准确性,代价值越高,则预测准确性越低。在本实施场景中,通过计算satd(sumofabsolutetransformeddifference,残差变换绝对值求和)来获取各分割方法的代价值,satd即将残差经哈德曼变换的4×4块的预测残差绝对值总和,可以将其看作简单的时频变换,其值在一定程度上可以反映生成码流的大小。satd即hadamard(哈德曼)变换后再绝对值求和。在其他实施场景中,还可以通过计算sad(sumofabsolutedifference,绝对误差和)来获取各分割方法的代价值。

s204:从所述至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式。

在一个具体的实施场景中,从步骤s202中确定的至少两种候选子块分割方式,结合步骤s203中计算出的代价值,选择代价值不是最高的一种,作为选定子块分割方式。在本实施场景中,可以选择代价值最低的一种作为选定子块分割方式,因为当代价值最低时,预测的准确性最高,最后呈现出的画面效果最佳。在其他实施场景中,还可以结合分割的复杂度等时机应用场景选择其他的代价值不是最高的子块分割方式。

在本实施场景中,可以是从水平分割、垂直分割以及同时进行水平和垂直分割的方式中选择一种分割方式作为选定子块分割方式。在其他实施场景中,还可以是选择水平分割、垂直分割以及同时进行水平和垂直分割的方式中的一种分割的子块的数量、子块的边长。进一步地,还可以是确定原始待编码亮度块是否全部采用固定的分割方式(例如,水平分割、垂直分割以及同时进行水平和垂直分割的方式中的一种)、采用该种分割方式子块分割数量、子块边长/边长比例,还是选择部分原始待编码亮度块采用不同分割方式、采用不同分割方式分割出的子块分割数量、子块边长。

s205:采用所述选定子块分割方式对所述原始待编码亮度块进行分割,得到至少两个待编码子块。s206:分别对所述至少两个待编码子块进行编码,得到已编码子块。

在一个具体的实施场景中,步骤s205-s206与本申请提供的基于帧内预测的编码方法的第一实施例中的步骤s103-s104基本一致,此处不再进行赘述。

通过上述描述可知,本实施例通过提出了多种不同的两种候选子块分割方式,将待编码原始亮度块进行分割时,计算至少两种候选子块分割方式的代价值,选择代价值较小的子块分割方式作为选定子块分割方式,可以提升预测的准确性,有效提压缩的性能。

请参阅图3,图3是本申请提供的基于帧内预测的编码方法的第三实施例的流程示意图。本申请提供的基于帧内预测的编码方法包括:

s301:获取原始待编码亮度块。

在一个具体的实施场景中,步骤s301与本申请提供的基于帧内预测的编码方法的第一实施例中的步骤s101基本一致,此处不再进行赘述。

s302:计算所述原始待编码亮度块的尺寸。

在一个具体的实施场景中,计算原始待编码亮度块的尺寸,因为该尺寸将用于后续判断采用分割方式。在本实施场景中,根据以下公式计算原始待编码亮度块的尺寸。

size=(log2w+log2h)>>1

其中,size为原始待编码亮度块的尺寸,w为原始待编码亮度块的宽度,h为原始待编码亮度块的高度。>>1操作在二进制中表示右移一位,在十进制中表现为将原始数除以2后向下取整。例如3>>1等于1。

s303:根据所述尺寸确定每种分割方式的子块分割数量。

在一个具体的实施场景中,在经过步骤s302计算出原始待编码子块的尺寸后,需要根据该尺寸确定每种分割方式的子块分割数量。若不根据分割方式确定子块分割数量的话,当原始待编码亮度块的尺寸较大时,例如该原始待编码亮度块的宽度w为8,高度h为8,尺寸size为3,则该原始待编码亮度具有多种分割方式,例如,水平划分可以划分为2、3、4、5、6、7、8个待编码子块,垂直划分与水平划分一样,同时进行水平和垂直分割时,可以划分的子块个数更多。

若将这些子块分割方式均作为候选子块分割方式的话,后续计算每个候选子块分割方式的工作量将会很大。因此,在本实施场景中,根据计算出的尺寸确定每种分割方式的子块分割数量。

在本实施场景中,预设两个预设值:第一预设值和第二预设值。其中,第一预设值为3,第二预设值为5。当原始待编码亮度块的尺寸小于第一预设值时,平均分割为两个待编码子块。根据上述的计算原始待编码亮度块的公式可知,当原始待编码亮度块的尺寸小于3时,例如,该原始待编码亮度块的尺寸为2,该原始待编码块水平分割或者垂直分割时,根据子块的边长必须为整数的标准,该原始待编码块可以平均分割为2个待编码子块。

在其他实施场景中,由于原始待编码亮度块尺寸为2,已经较小,为了节约资源以及提高工作效率,也可以不对该尺寸的原始待编码亮度块进行分割。

当原始待编码亮度块的尺寸大于或等于第一预设值,且小于第二预设值时,可知该原始待编码亮度块的尺寸为3或者4。例如,该原始待编码亮度块的尺寸为4,可以将该原始待编码块分割为3个待编码子块。又例如,该原始待编码亮度块的尺寸为3,在这种情况下,同样可以将该原始待编码块分为3个待编码子块。

当原始待编码亮度块的尺寸大于或等于第一预设值,且小于第二预设值时,还可以对该尺寸的原始待编码亮度块进行垂直分割。例如,该原始待编码亮度块的尺寸为4,可以将该原始待编码块平均分割为4个待编码子块。又例如,该原始待编码亮度块的尺寸为3,同样可以将该原始待编码块平均分割为4个待编码子块。

当原始待编码亮度块的尺寸大于或等于第二预设值时,例如该原始待编码亮度块的尺寸可以为5或者6。可以对该原始待编码块进行水平分割。该原始待编码亮度块的尺寸为5,可以将该原始待编码块平均分割为4个待编码子块。

当原始待编码亮度块的尺寸大于或等于第二预设值时,该原始待编码亮度块的尺寸较大,因此,还可以对该原始待编码亮度块同时进行水平分割和垂直分割。将该原始待编码亮度块平均分割为w*h/64个子块。

在其他实施场景中,还可以将尺寸为i的原始待编码亮度块通过水平或者垂直划分为i个待编码子块。具体地,请参阅图10a-图10e,以及图11a-图11e。图10a-图10e是本申请提供的将尺寸为i的原始待编码亮度块水平划分为i个待编码子块的第一-第五实施例,图11a-图11e是本申请提供的将尺寸为i的原始待编码亮度块垂直划分为i个待编码子块的第一-第五实施例。

不同size的cu划分后的子块正序比例为:size=2时,比例1:1;size=3时,比例1:1:2;size=4时,比例1:1:1:1;size=5时,比例1:1:2:2:2;size=6时,比例1:1:1:1:2:2。

s304:分别计算每个所述候选子块分割方式的代价值。

s305:从所述至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式;

s306:采用所述选定子块分割方式对所述原始待编码亮度块进行分割,得到至少两个待编码子块;

s307:分别对所述至少两个待编码子块进行编码,得到已编码子块。

在一个具体的实施场景中,步骤s304-s307与本申请提供的基于帧内预测的编码方法的第二实施例中的步骤s203-s206基本一致,此处不再进行赘述。

通过上述描述可知,在本实施例中根据原始待编码亮度块的尺寸确定每种分割方式的子块分割数量,可以有效减少候选子块分割方式的数量,从而减少计算每个所述候选子块分割方式的代价值的工作量,可以有效提高工作效率,节约资源。

请参阅图4,图4是本申请提供的一种基于帧内预测的编码方法的第三实施例的流程示意图。本申请提供的一种基于帧内预测的编码方法包括:

s401:获取原始待编码亮度块。

s402:确定所述原始待编码亮度块的至少两种候选子块分割方式。

s403:分别计算每个所述候选子块分割方式的代价值。

s404:从所述至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式。

s405:采用所述选定子块分割方式对所述原始待编码亮度块进行分割,得到至少两个待编码子块。

在一个具体的实施场景中,步骤s401-s405与本申请提供的基于帧内预测的编码方法的第二实施例中的步骤s201-s205基本一致,此处不再进行赘述。

s406:对第一个待编码子块进行编码,得到第一个已编码子块。

在一个具体的实施场景中,对得到的至少两个待编码子块分别进行编码。在对待编码子块的预测编码前,需先确定该至少两个待编码子块的编码顺序。垂直分割后的至少两个待编码子块的编码顺序是从左到右,水平分割后的至少两个待编码子块的预测顺序是从上到下,同时用垂直分割和水平分割的至少两个待编码子块预测顺序可以是从左上角的子块逐行开始从左往右的顺序,或逐列从上到下的顺序。

在确定该至少两个待编码子块的编码顺序后,对第一个待编码子块进行预测编码。在本实施场景中,参考像素跟原始块一致,根据该参考像素进行预测编码,得到第一个已编码子块。

s407:对第二个待编码子块及剩余的待编码子块,使用相邻的前一个已编码子块的最后一行或一列的预测像素或重构像素作为参考像素进行预测和编码,得到第二个已编码子块及剩余的已编码子块。

在一个具体的实施场景中,对第二个待编码子块以及剩余的待编码子块进行编码。这些待编码子块采用相邻的前一个已编码子块的最后一行或一列的预测像素或者重构像素作为参考像素进行预测和编码,得到第二个已编码子块及剩余的已编码子块。

获取重构像素的过程较为复杂,耗时较长,因此若全部以相邻的前一个已编码子块的最后一行或一列的重构像素将会导致整个编码流程工作效率低。但是预测像素与原始像素的之间的差距比重构像素与原始像素之间的差距大,因此,若全部以相邻的前一个已编码子块的最后一行或一列的预测像素为参考像素,则可能预测准确性不高,从而导致整体画面质量不高。

原始待编码亮度块的尺寸较小的情况下,原始待编码亮度块分割出的所有待编码子块和原始待编码亮度块周围的参考像素相关性较强,因此若原始待编码亮度块的尺寸较小,可以以相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素。无需等待前一个已编码子块重构完成后才能获取参考像素,这类待编码子块便于并行化处理,提高运行效率。若原始待编码亮度块的尺寸较大,可以以相邻的前一个已编码子块的最后一行或一列的重构像素作为参考像素。

s408:对所述至少两个待编码子块的参考像素进行滤波,并构建对应的最可能模式列表,根据所述最可能模式列表选择最佳预测方式,采用所述最佳预测方式对所述至少两个待编码子块进行编码。

在一个具体的实施场景中,在获取到待编码子块的参考像素后,对参考像素进行滤波,获取滤波后的参考像素。帧内预测有多种模式,帧为了得到最佳的预测模式,会建立mpm(mostprobablemodes,最有可能预测模式)列表,通过选取特定的模式与mpm列表中的模式进行比较,最终选取率失真代价(rdcost)最小的模式作为最佳预测编码模式。采用最佳预测编码模式对待编码子块进行预测编码。

通过上述描述可知,在本实施例中,在对待编码子块进行预测编码时,可以相邻的前一个已编码子块的最后一行或一列的预测像素或者重构像素为参考像素,以预测像素作为参考像素时,无需等待前一个已编码子块重构完成后才能获取参考像素,这类待编码子块便于并行化处理,提高运行效率。

请参阅图5,图5是本申请提供的一种基于帧内预测的编码方法的第五实施例的流程示意图。本申请提供的一种基于帧内预测的编码方法包括:

s501:获取原始待编码亮度块。

s502:确定所述原始待编码亮度块的至少两种候选子块分割方式。

s503:分别计算每个所述候选子块分割方式的代价值。

s504:从所述至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式。

s505:采用所述选定子块分割方式对所述原始待编码亮度块进行分割,得到至少两个待编码子块。

s506:对第一个待编码子块进行编码,得到第一个已编码子块。

在一个具体的实施场景中,步骤s501-s506与本申请提供的基于帧内预测的编码方法的第三实施例中的步骤s401-s406基本一致,此处不再进行赘述。

s507:判断所述原始待编码亮度块的尺寸是否大于阈值。若是,执行步骤s508,若否,执行步骤s509。

在一个具体的实施场景中,计算原始待编码亮度块的尺寸,计算的方法与上文中计算原始待编码亮度块的尺寸的方法一致,此处不在进行赘述。

在本实施场景中,设置一个阈值,若原始待编码亮度块的尺寸小于该阈值,则证明原始待编码亮度块的尺寸较小,原始待编码亮度块分割出的所有待编码子块和原始待编码亮度块周围的参考像素相关性较强。可以以相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测编码。反之,则以相邻的前一个已编码子块的最后一行或一列的重构像素作为参考像素进行预测和编码,以免预测误差过大,造成画面质量过差。

在本实施场景中,该阈值的取值范围为大于或等于3且小于等于6。当原始待编码亮度块的尺寸为6时,其大小为预测编码技术中所支持的原始待编码亮度块的最大尺寸,因此阈值的上限值为6,在其他实施场景中,这个上限值可以根据实际需要调整。

s508:执行所述使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码的动作。

在一个具体的实施场景中,原始待编码亮度块的尺寸小于阈值,则以相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测编码。无需等待前一个已编码子块重构完成后才能获取参考像素,这样便于并行化处理,提高运行效率。

s509:使用相邻的前一个已编码子块的最后一行或一列的重构像素作为参考像素进行预测和编码。

在一个具体的实施场景中,原始待编码亮度块的尺寸大于或等于阈值,则以相邻的前一个已编码子块的最后一行或一列的重构像素作为参考像素进行预测编码。这样可以有效保证预测的准确性,防止画面质量过差。

通过上述描述可知,本实施例中,在原始待编码亮度块的尺寸小于阈值时,以相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码,原始待编码亮度块的尺寸大于或等于阈值时,以相邻的前一个已编码子块的最后一行或一列的重构像素作为参考像素进行预测和编码,可以有效保证预测的准确性的条件下,并行化处理,提高运行效率。

请参阅图6,图6是本申请提供的图像处理设备的第一实施方式的结构示意图。图像处理设备60包括获取模块61、候确定模块62、分割模块63和编码模块64。

其中,获取模块61用于获取原始待编码亮度块。确定模块62用于确定原始待编码亮度块的目标子块分割方式。分割模块63用于采用选定子块分割方式对原始待编码亮度块进行分割,得到至少两个待编码子块。编码模块64用于分别对至少两个待编码子块进行编码,得到已编码子块。其中,目标分割方式包括分割方向以及分割出的子块的个数和边长;分割方向包括:水平分割、垂直分割、水平垂直同时分割中的一种;子块的边长为整数个像素。

具体地,确定模块62用于从至少两种候选子块分割方式中选择一个作为选定子块分割方式。

具体地,确定模块62还用于分别计算每个候选子块分割方式的代价值;从至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式。

具体地,确定模块62还用于计算原始待编码亮度块的尺寸,根据尺寸确定每种分割方式的子块分割数量。其中,根据以下公式计算原始待编码亮度块的尺寸:

size=(log2w+log2h)>>1

其中,size为原始待编码亮度块的尺寸,w为原始待编码亮度块的宽度,h为原始待编码亮度块的高度。>>1操作在二进制中表示右移一位,在十进制中表现为将原始数除以2后向下取整。例如3>>1等于1。

具体地,确定模块62还用于对于尺寸小于第一预设值的原始待编码亮度块进行水平分割,平均分割为两个待编码子块;对于尺寸小于第二预设值且大于或等于第一预设值的原始待编码亮度块进行水平分割,分割为三个待编码子块;对于尺寸大于或等于第二预设值的原始待编码亮度块进行水平分割,分割为四个待编码子块。

具体地,确定模块62还用于对于尺寸小于第一预设值的原始待编码亮度块进行垂直分割,平均分割为两个待编码子块;对于尺寸小于第二预设值且大于或等于第一预设值的原始待编码亮度块进行垂直分割,分割为四个待编码子块。

具体地,确定模块62还用于对于尺寸大于或等于第二预设值的原始待编码亮度块同时进行垂直分割和水平分割,分割为w*h/64待编码子块,其中,w为原始待编码亮度块的宽度,h为原始待编码亮度块的高度。

其中,第一预设阈值为3,第二预设阈值为5。

具体地,确定模块62从至少两种候选子块分割方式中选择代价值最小的一种作为选定子块分割方式。

具体地,编码模块64用于对第一个待编码子块进行编码,得到第一个已编码子块;对第二个待编码子块及剩余的待编码子块,使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码,得到第二个已编码子块及剩余的已编码子块。

具体地,编码模块64还用于判断原始待编码亮度块的尺寸是否大于阈值;若不大于阈值,则执行使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码的动作,否则不执行使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码的动作。

具体地,编码模块64还用于不执行使用相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码的同时,对第二个待编码子块及剩余的待编码子块,使用相邻的前一个已编码子块的最后一行或一列的重构像素作为参考像素进行预测和编码,得到第二个已编码子块及剩余的已编码子块。

具体地,编码模块64还用于对至少两个待编码子块的参考像素进行滤波,并构建对应的最可能模式列表,根据最可能模式列表选择最佳预测方式,采用最佳预测方式对至少两个待编码子块进行预测和编码。

通过上述描述可知,本实施例中的图像处理设备在将待编码原始亮度块进行分割时,计算至少两种候选子块分割方式的代价值,选择代价值较小的子块分割方式作为选定子块分割方式,可以提升预测的准确性,有效提压缩的性能,允许以相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码,可以在有效保证预测的准确性的条件下,并行化处理,提高运行效率。

请参阅图7,图7是本申请提供的图像处理设备的第二实施方式的结构示意图,该图像处理设备70包括:处理器71和存储器72,处理器71耦接存储器72,处理器71在工作时控制自身以及存储器72以实现上述任一实施例中所述的方法中的步骤。在一个实施场景中,上述存储器72包括非易失性存储部分,用于存储上述程序指令。

处理器71还可以称为cpu(centralprocessingunit,中央处理单元)。处理器71可能是一种集成电路芯片,具有信号的处理能力。处理器71还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器71可以由多个成电路芯片共同实现。其中,图像处理设备70可以是手机、笔记本、平板电脑以及车载电脑等,在此不做限制。

具体地,处理器71从存储器72中获取原始待编码亮度块,处理器71确定原始待编码亮度块的至少两种候选子块分割方式,处理器71分别计算每个候选子块分割方式的代价值,处理器71从至少两种候选子块分割方式中选择代价值不是最高的一种,作为选定子块分割方式,处理器71采用选定子块分割方式对原始待编码亮度块进行分割,得到至少两个待编码子块,处理器71分别对至少两个待编码子块进行编码,得到已编码子块。

通过上述描述可知,本实施例中的图像处理设备在将待编码原始亮度块进行分割时,采用水平分割、垂直分割以及水平垂直同时分割中的至少一种对原始待编码亮度块进行分割,且对分割的子块的比例不做限定,只要求子块的边长为整数个像素,可以进一步将原始代表编码亮度块划分的更加细致,从而有效提升帧内预测的准确性,有效提压缩的性能。

参阅图8,图8是本申请提供的具有存储功能的装置一实施方式的结构示意图,该具有存储功能的装置80存储有程序数据81,程序数据81能够被执行以实现上述任一实施例中所述的步骤。

其中,具有存储功能的装置80可以是便携式存储介质,如u盘、光盘,也可以是终端、服务器等。详细的方法可参见上述,在此不再赘述。

通过上述描述可知,本实施例中具有存储功能的装置中存储的程序数据可以用于在将待编码原始亮度块进行分割时,采用水平分割、垂直分割以及水平垂直同时分割中的至少一种对原始待编码亮度块进行分割,且对分割的子块的比例不做限定,只要求子块的边长为整数个像素,可以进一步将原始代表编码亮度块划分的更加细致,从而有效提升帧内预测的准确性,有效提压缩的性能,允许以相邻的前一个已编码子块的最后一行或一列的预测像素作为参考像素进行预测和编码,可以并行化处理,提高运行效率。

区别于现有技术,本申请加入了更多的分割方式,包括同时运用水平和垂直分割,可分割成更多子块,各子块间的边长比可调整等。加入更多样的分割方式有利于提高对待编码原始亮度块进行帧内预测的准确性,提升压缩性能。在进行帧内预测时,允许使用相邻的前一个已编码子块的最后一行或一列的预测像素值最为参考像素,这利用了小尺寸待编码原始亮度块中的像素和周围参考像素相关性较强的特点,可以并行化处理,提高运行效率。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

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