图像处理方法、图像处理器及存储介质与流程

文档序号:26096467发布日期:2021-07-30 18:06阅读:63来源:国知局
图像处理方法、图像处理器及存储介质与流程

本公开实施例涉及但不限于图像处理技术,尤指一种图像处理方法、图像处理器及存储介质。



背景技术:

hevc(highefficiencyvideocoding,高效视频编码)标准是继h.264标准之后所制定的新的视频编码标准。hevc标准编码技术在码流、编码质量、延时以及算法复杂度上加以提高和改进,可以极大的节约带宽成本。

在h.265标准中,图像帧会被划分成多个块状区域(也可以称为编码块)。但是本公开的发明人发现,在块划分的过程中涉及到巨大的计算量,需要消耗较大的计算资源和时间成本。



技术实现要素:

以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

第一方面,本公开实施例提供了一种图像处理方法,包括:

获取图像帧,将所述图像帧划分为2n*2n大小的第一编码块;

基于所述第一编码块的图像信息对所述第一编码块进行划分;

对划分后的所述图像帧进行图像处理;

其中,所述图像信息包括以下一种或者多种:内容复杂度,纹理方向。

第二方面,本公开实施例提供了一种图像处理器,包括:处理器以及存储有可在所述处理器上运行的计算机程序的存储器,其中,所述处理器执行所述计算机程序时实现上述的方法。

第三方面,本公开实施例提供了一种非瞬态计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,所述计算机程序时被处理器执行时实现上述的方法。

本公开实施例提供的技术方案,可以有效减少计算量,提高图像处理效率。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。

附图说明

附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。

图1为一种编码块划分的示意图;

图2为本公开实施例图像处理方法的流程示意图;

图3为本公开一示例性实施例图像处理方法的流程示意图;

图4为一示例性实施例中一编码块划分的示意图;

图5为一示例性实施例中编码块中像素点的示意图;

图6为本公开一示例性实施例图像处理方法的流程示意图;

图7为一示例性实施例中一编码块划分的示意图;

图8为本公开一示例性实施例图像处理方法的流程示意图;

图9为本公开一示例性实施例图像处理方法的流程示意图;

图10为本公开实施例图像处理器的结构示意图。

具体实施方式

本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。

本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。

此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。

在hevc标准中,编码块cu(codingunit)包括64*64,32*32,16*16,8*8四种大小,其中块划分可以采用递归方式,即对于一个lcu(最大的cu64*64)可以向下深度为4的划分子cu,深度为0代表lcu不划分(大小为64*64)、深度为1代表lcu向下划分一次(大小为32*32)、深度为2代表在32*32的子cu向下划分一次(大小为16*16)、深度为3代表16*16的子cu向下划分一次(大小为8*8)。在一示例中,在hevc标准参考软件中,块划分的实现方式为:把一帧图像首先划分为64*64大小的块,计算该划分模式下的率失真。然后再划分为32*32的大小,同样计算出率失真大小。以此类推,分别计算16*16和8*8,这样通过比较各种划分模式下的率失真代价,取最小的,即为该帧的最佳划分模式。这种方法涉及到巨大的计算量。

在一示例中,块划分递归过程包括:

1,将一帧图像首先划分为64*64大小的cu块,得到深度为0的lcu(64*64)。

2,对于深度为0的lcu(64*64)进行循环编码。其中,针对每个lcu,计算该lcu(64*64)的rdcost(ratedistortionoptimationcost,率失真优化代价)以及其他编码信息。完成之后向下一深度递归划分,即将lcu进行一次四叉树划分,得到深度为1的四个子cu(32*32)。

3,对于深度为1的子cu(32*32)进行循环编码。其中,针对每个cu(32*32),计算该cu(32*32)的rdcost以及其他编码信息。完成之后向下一深度递归划分,即将子cu(32*32)进行一次四叉树划分,得到深度为2的四个子cu(16*16)。

3、对深度为2的子cu(16*16)进行循环编码,其中,针对每个cu(16*16),计算该cu(16*16)的rdcost以及其他编码信息。完成之后向下一深度递归划分,即将子cu(16*16)进行一次四叉树划分,得到深度为3的四个子cu(8*8)。

4、对深度为3的子cu(8*8)进行循环编码,其中,针对每个cu(16*16),计算该cu(16*16)的rdcost以及其他编码信息。完成后不再向下划分。

5、先比较四个子cu(8*8)的总rdcost与其上一层的cu(16*16)的rdcost,经比较决定cu(16*16)是否向下划分成四个子cu(8*8)。然后循环遍历比较其他的子cu(8*8)与相应的cu(16*16)的rdcost,选择rdcost小的划分方式。在完成所有子cu(8*8)与相应cu(16*16)比较后,然后对四个子cu(16*16)的总rdcost与其上一层的cu(32*32)的rdcost进行比较,通过比较决定cu(32*32)是否向下划分成四个子cu(16*16),即选择rdcost小的划分方式。同样历经比较所有的子cu(16*16)与相应的cu(32*32)的rdcost,选择rdcost小的划分方式。接着就是对四个子cu(32*32)的总rdcost与lcu(64*64)的rdcost进行比较,选择rdcost小的划分方式,得出lcu是否向下划分成四个子cu(32*32)。

到此,就完成了cu划分的递归工作,编码器会根据上述过程来决定一个lcu的划分,例如,图1为一种编码块划分的示意图。

从上面的cu划分的递归过程可以看出,由于是从64*64一直向下划分到8*8,每一次划分都需要计算rdcost,导致rdcost计算次数非常多,涉及到巨大的计算量。而且,必须等划分到8*8才能决定是选择8*8还是16*16,待16*16完成以后,才能决定是选择16*16还是32*32,待32*32完成以后,才能决定是32*32还是64*64,导致块划分过程及其复杂,增加了视频图像编码的复杂度。

本公开实施例提供了一种图像处理方法,如图2所示,包括:

步骤201,获取图像帧,将所述图像帧划分为2n*2n大小的第一编码块;

步骤202,基于所述第一编码块的图像信息对所述第一编码块进行划分;

步骤203,对划分后的所述图像帧进行图像处理;

其中,所述图像信息包括以下一种或者多种:内容复杂度,纹理方向。

在一些示例性实施例中,所述图像信息包括内容复杂度和纹理方向,通过以下方式实现基于所述第一编码块的图像信息对所述第一编码块进行划分:

针对每个第一编码块分别执行:将所述第一编码块划分为n*n大小的第二编码块;判断所述第一编码块内的第二编码块的纹理方向是否一致;

当所述第一编码块内的第二编码块的纹理方向一致时,将所述第一编码块内的第二编码块合并为第一编码块;当所述第一编码块内的第二编码块的纹理方向不一致时,针对每个第二编码块分别执行:判断所述第二编码块的内容复杂度是否大于阈值;

当所述第二编码块的内容复杂度大于阈值时,将所述第二编码块划分为n/2*n/2大小的第三编码块;当所述第二编码块的内容复杂度不大于阈值时,不再进行划分;

针对每个第三编码块分别执行:判断所述第三编码块的内容复杂度是否大于阈值,当所述第三编码块的内容复杂度大于阈值时,将所述第三编码块划分为n4*n/4大小的第四编码块;当所述第三编码块的内容复杂度不大于阈值时,不再进行划分。

在一些示例性实施例中,所述图像信息包括内容复杂度和纹理方向,通过以下方式实现基于所述第一编码块的图像信息对所述第一编码块进行划分:

针对每个第一编码块分别执行:将所述第一编码块划分为n*n大小的第二编码块;

针对每个第二编码块分别执行:将所述第二编码块划分为n/2*n/2大小的第三编码块;判断所述第二编码块内的第三编码块的纹理方向是否一致;

当所述第二编码块内的第三编码块的纹理方向一致时,将所述第二编码块内的第三编码块合并为第二编码块;当所述第二编码块内的第三编码块的纹理方向不一致时,针对每个第三编码块分别执行:判断所述第三编码块的内容复杂度是否大于阈值;

当所述第三编码块的内容复杂度大于阈值时,将所述第三编码块划分为n/4*n/4大小的第四编码块;当不大于时,不再进行划分。

在一些示例性实施例中,所述图像信息包括内容复杂度,通过以下方式实现基于所述第一编码块的图像信息对所述第一编码块进行划分:

针对每个第一编码块分别执行:判断所述第一编码块的内容复杂度是否大于阈值,当所述第一编码块的内容复杂度大于阈值时,将所述第一编码块划分为n*n大小的第二编码块,当所述第一编码块的内容复杂度不大于阈值时,不再进行划分;

针对每个第二编码块分别执行:判断所述第二编码块的内容复杂度是否大于阈值;当所述第二编码块的内容复杂度大于阈值时,将所述第二编码块划分为n/2*n/2大小的第三编码块;当所述第二编码块的内容复杂度不大于阈值时,不再进行划分;

针对每个第三编码块分别执行:判断所述第三编码块的内容复杂度是否大于阈值;当所述第三编码块的内容复杂度大于阈值时,将所述第三编码块划分为n/4*n/4大小的第四编码块;当所述第三编码块的内容复杂度不大于阈值时,不再进行划分。

在一些示例性实施例中,所述图像信息包括纹理方向,通过以下方式实现基于所述第一编码块的图像信息对所述第一编码块进行划分:

针对每个第一编码块分别执行:将所述第一编码块划分为n*n大小的第二编码块;判断所述第一编码块内的第二编码块的纹理方向是否一致;

当所述第一编码块内的第二编码块的纹理方向一致时,将所述第一编码块内的第二编码块合并为第一编码块;当所述第一编码块内的第二编码块的纹理方向不一致时,针对每个第二编码块分别执行:将所述第二编码块划分为n/2*n/2大小的第三编码块;判断所述第二编码块内的第三编码块的纹理方向是否一致;

当所述第二编码块内的第三编码块的纹理方向一致时,将所述第二编码块内的第三编码块合并为第二编码块;当所述第二编码块内的第三编码块的纹理方向不一致时,针对每个第三编码块分别执行:将所述第三编码块划分为n/4*n/4大小的第四编码块;判断所述第三编码块内的第四编码块的纹理方向是否一致;

当所述第三编码块内的第四编码块的纹理方向一致时,将所述第三编码块内的第四编码块合并为第三编码块;当所述第三编码块内的第四编码块的纹理方向不一致时,不再进行划分。

在一些示例性实施例中,通过以下方式确定一个编码块的纹理方向:

针对所述编码块,按照水平、垂直、左对角线和右对角线四个方向,针对每一个方向,计算所述方向上像素差值之和;

其中,所述像素差值之和是指所述方向上将所有的差值相加得到的合值,所述差值是指所述方向上每两个相邻像素的差值;

将像素差值之和最小的方向作为所述编码块的纹理方向。

在一些示例性实施例中,通过以下方式确定一个编码块的内容复杂度:

计算所述编码块在纹理方向的像素差值之和减去所述编码块在纹理方向的正交方向的像素差值之和得到的差值;

将所述差值作为所述编码块内容复杂度的数值。

在一些示例性实施例中,所述阈值取值为0至所述图像帧梯度的50%。

在一些示例性实施例中,n取值为8的倍数,例如n可以取值为32或64。

本公开实施例提供的技术方案,有效降低了计算量,提升了图像处理的效率。

本公开一示例性实施例提供了一种图像处理方法,如图3所示,包括:

步骤301,获取图像帧,将所述图像帧划分为64*64大小的第一编码块;

在一些示例中,将一帧图像首先划分为64*64大小的cu块,得到深度为0的lcu(64*64)。本示例中,第一编码块大小为64*64,对应深度为0。该步骤中并不需要马上计算深度为0的lcu(64*64)的rdcost以及其他编码信息。

步骤302,针对每个第一编码块分别执行:将该第一编码块划分为32*32大小的第二编码块;

步骤303,判断该第一编码块内的第二编码块的纹理方向是否一致;

在一些示例中,对于深度为0的lcu(64*64)进行循环编码。例如,针对每个lcu进行一次四叉树划分,得到深度为1的四个子cu(32*32)。本示例中,第二编码块大小为32*32,对应深度为1。该步骤中并不需要马上计算深度为1的cu(32*32)的rdcost以及其他编码信息。

在一些示例中,判断该第一编码块内的第二编码块的纹理方向是否一致,包括:

判断该第一编码块内的四个第二编码块的纹理方向是否全部相同;

当该第一编码块内的四个第二编码块的纹理方向全部相同时,确定该该第一编码块内的第二编码块的纹理方向一致;

当该第一编码块内的四个第二编码块的纹理方向中至少一个不相同时,确定该第一编码块内的第二编码块的纹理方向不一致。

在一示例中,例如图4所示,lcu0(64*64)划分为四个32*32的cu(a、b、c、d),将编码块cu(a)、cu(b)、cu(c)、cu(d)的纹理方向进行比较,判断是否全部相同,当全部相同时,则确定cu(a)、cu(b)、cu(c)、cu(d)的纹理方向一致,当至少一个不相同时,确定cu(a)、cu(b)、cu(c)、cu(d)的纹理方向不一致。例如,cu(a)的纹理方向与其他三个不相同,则确定cu(a)、cu(b)、cu(c)、cu(d)的纹理方向不一致。在一些示例中,通过以下方式确定一个编码块的纹理方向:

针对该编码块,按照水平、垂直、左对角线和右对角线四个方向,针对每一个方向,计算该方向上像素差值之和;

其中,所述像素差值之和是指该方向上将所有的差值相加得到的合值,所述差值是指该方向上每两个相邻像素的差值;

将像素差值之和最小的方向作为该编码块的纹理方向。

在一示例中,通过以下方式确定一个编码块的纹理方向:

按照水平方向,计算每两个相邻像素的差值,将所有的差值相加得到第一像素差值之和;

按照垂直方向,计算每两个相邻像素的差值,将所有的差值相加得到第二像素差值之和;

按照左对角线方向,计算每两个相邻像素的差值,将所有的差值相加得到第三像素差值之和;

按照右对角线方向,计算每两个相邻像素的差值,将所有的差值相加得到第四像素差值之和;

比较第一像素差值之和、第二像素差值之和、第三像素差值之和、第四像素差值之和,将其中最小的像素差值之和对应的方向作为该编码块的纹理方向。

在一示例中,图5所示,编码块a包括9个像素点,通过以下方式确定该编码块a的纹理方向:

按照水平方向,分别计算p(i-1,j-1)-p(i-1,j),p(i-1,j)-p(i-1,j+1),p(i,j-1)-p(i,j),p(i,j)-p(i,j+1),p(i+1,j-1)-p(i+1,j),p(i+1,j)-p(i+1,j+1)这6个差值,将该6个差值相加得到的和值作为第一像素差值之和;

按照垂直方向,分别计算p(i-1,j-1)-p(i,j-1),p(i,j-1)-p(i+1,j-1),p(i-1,j)-p(i,j),p(i,j)-p(i+1,j),p(i-1,j+1)-p(i,j+1),p(i,j+1)-p(i+1,j+1)这6个差值,将该6个差值相加得到的和值作为第二像素差值之和;

按照左对角线方向,分别计算p(i-1,j)-p(i,j+1),p(i-1,j-1)-p(i,j),p(i,j)-p(i+1,j+1),p(i,j-1)-p(i+1,j)这4个差值,将该4个差值相加得到的和值作为第三像素差值之和;

按照右对角线方向,分别计算p(i-1,j)-p(i,j-1),p(i-1,j+1)-p(i,j),p(i,j)-p(i+1,j-1),p(i,j+1)-p(i+1,j)这4个差值,将该4个差值相加得到的和值作为第四像素差值之和;

比较第一像素差值之和、第二像素差值之和、第三像素差值之和、第四像素差值之和,将其中最小的像素差值之和对应的方向作为该编码块的纹理方向。例如,当第一像素差值之和最小时,将水平方向作为该编码块的纹理方向,当第二像素差值之和最小时,将垂直方向作为该编码块的纹理方向,当第三像素差值之和最小时,将左对角线方向作为该编码块的纹理方向,当第四像素差值之和最小时,将右对角线方向作为该编码块的纹理方向。

当该第一编码块内的第二编码块的纹理方向一致时,执行步骤303,当该第一编码块内的第二编码块的纹理方向不一致时,执行步骤304:

步骤304,将该第一编码块内的第二编码块合并为第一编码块;

在一示例中,例如图4所示,当cu(a)、cu(b)、cu(c)、cu(d)的纹理方向相同时,将cu(a)、cu(b)、cu(c)、cu(d)四个编码块重新合并为一个lcu。

步骤305,针对每个第二编码块分别执行:判断该第二编码块的内容复杂度是否大于阈值;

在一些示例中,该阈值可以预先设置。在一示例中,阈值可以设置为0至图像帧纹理梯度的50%,例如可以将该阈值预先设置为纹理梯度的50%。在另一示例中,阈值可以设置为图像帧纹理梯度的10%至50%,例如可以将该阈值预先设置为纹理梯度的40%。在另一示例中,阈值可以设置为图像帧纹理梯度的50%至90%,例如可以将该阈值预先设置为纹理梯度的70%。

在一些示例中,通过以下方式确定一个编码块的内容复杂度:

计算该编码块在纹理方向的像素差值之和减去该编码块在纹理方向的正交方向的像素差值之和得到的差值;

将该差值作为该编码块内容复杂度的数值。

其中,如何计算一个编码块在一个方向上的像素差值之和,以及确定一个编码块的纹理方向,在上面内容中已经详细说明,在此不再赘述。

其中,纹理方向的正交方向是指与该纹理方向正交的方向,例如与水平方向正交的方向为垂直方向,与垂直方向正交的方向为水平方向,与左对角线方向正交的方向为右对角线方向,与右对角线方向正交的方向为左对角线方向。

当该第二编码块的内容复杂度大于阈值时,执行步骤306,当该第二编码块的内容复杂度不大于阈值时,不再进行划分:

其中,当该第二编码块的内容复杂度大于阈值时,说明该第二编码块的内容复杂度高,将其划分为更小的编码块有利于提高画面质量。当该第二编码块的内容复杂度不大于阈值时,说明该第二编码块的内容复杂度低,将其保留为较大的编码块,可以在对画面质量影响不大的情况下尽量提高图像的压缩性能。

步骤306,将该第二编码块划分为16*16大小的第三编码块;

其中,该步骤中并不需要马上计算深度为2的cu(16*16)的rdcost以及其他编码信息。

步骤307,针对每个第三编码块分别执行:判断该第三编码块的内容复杂度是否大于阈值;

当该第三编码块的内容复杂度大于阈值时,执行步骤307,当该第三编码块的内容复杂度不大于阈值时,不再进行划分:

其中,当该第三编码块的内容复杂度大于阈值时,说明该第三编码块的内容复杂度高,将其划分为更小的编码块有利于提高画面质量。当该第三编码块的内容复杂度不大于阈值时,说明该第三编码块的内容复杂度低,将其保留为较大的编码块,可以在对画面质量影响不大的情况下尽量提高图像的压缩性能。

步骤308,将该第三编码块划分为8*8大小的第四编码块;

步骤309,对划分后的所述图像帧进行图像处理。

在一些示例中,对划分后的所述图像帧进行图像处理,包括:对划分后的编码块计算rdcost以及其他编码信息。

本示例性实施例提供的图像处理方法,在对块划分方式进行率失真代价计算之前,先对该块的纹理方向和内容复杂度进行判断。如图5所示,按照水平、垂直、对角线(左右对角线)方向,进行对应方向上两边像素差值之和的统计。这四个方向,找到像素差之和最小的方向即为纹理方向。在纹理方向的正交方向,像素差之和与纹理方向的像素差之和的差值,用来判断内容复杂度。当差值超过阈值th(例如纹理梯度的50%),即说明该部分内容复杂度高,否则,内容复杂度低。然后依据编码块的纹理方向和内容复杂度确定划分方式,有效降低率失真代价的计算次数,从来降低算法的复杂度,减少运算时间。

本公开一示例性实施例提供了一种图像处理方法,如图6所示,包括:

步骤601,获取图像帧,将所述图像帧划分为64*64大小的第一编码块;

在一些示例中,将一帧图像首先划分为64*64大小的cu块,得到深度为0的lcu(64*64)。本示例中,第一编码块大小为64*64,对应深度为0。该步骤中并不需要马上计算深度为0的lcu(64*64)的rdcost以及其他编码信息。

步骤602,针对每个第一编码块分别执行:将该第一编码块划分为32*32大小的第二编码块;

在一些示例中,对于深度为0的lcu(64*64)进行循环编码。例如,针对每个lcu进行一次四叉树划分,得到深度为1的四个子cu(32*32)。本示例中,第二编码块大小为32*32,对应深度为1。该步骤中并不需要马上计算深度为1的cu(32*32)的rdcost以及其他编码信息。

步骤603,针对每个第二编码块分别执行:将该第二编码块划分为16*16大小的第三编码块;

步骤604,判断该第二编码块内的第三编码块的纹理方向是否一致;

在一些示例中,对于深度为1的cu(32*32)进行循环编码。例如,针对每个cu(32*32)进行一次四叉树划分,得到深度为2的四个子cu(16*16)。本示例中,第三编码块大小为16*16,对应深度为2。该步骤中并不需要马上计算深度为2的cu(16*16)的rdcost以及其他编码信息。

在一些示例中,判断该第二编码块内的第三编码块的纹理方向是否一致,包括:

判断该第二编码块内的四个第三编码块的纹理方向是否全部相同;

当该第二编码块内的四个第三编码块的纹理方向全部相同时,确定该第二编码块内的第三编码块的纹理方向一致;

当该第二编码块内的四个第三编码块的纹理方向中至少一个不相同时,确定该第二编码块内的第三编码块的纹理方向不一致。

在一示例中,例如图7所示,cu1(32*32)划分为四个16*16的cu(a1、b1、c1、d1),判断cu(a1)、cu(b1)、cu(c1)、cu(d1)的纹理方向是否全部相同,,当全部相同时,则确定cu(a1)、cu(b1)、cu(c1)、cu(d1)的纹理方向一致,当至少一个不相同时,确定cu(a1)、cu(b1)、cu(c1)、cu(d1)的纹理方向不一致。例如当cu(b1)与其他三个的纹理方向不相同时,则确定cu(a1)、cu(b1)、cu(c1)、cu(d1)的纹理方向不一致。

其中,如何确定一个编码块的纹理方向,在上面内容中已经详细说明,在此不再赘述。

当该第二编码块内的第三编码块的纹理方向一致时,执行步骤605,当该第二编码块内的第三编码块的纹理方向不一致时,执行步骤606:

步骤605,将该第二编码块内的第三编码块合并为第二编码块;

在一示例中,例如图7所示,当cu(a1)、cu(b1)、cu(c1)、cu(d1)的纹理方向一致时,将cu(a)、cu(b)、cu(c)、cu(d)重新合并为一个cu1。

步骤606,针对每个第三编码块分别执行:判断该第三编码块的内容复杂度是否大于阈值;

在一些示例中,该阈值可以预先设置。在一示例中,阈值可以设置为0至图像帧纹理梯度的50%,例如可以将该阈值预先设置为纹理梯度的50%。在另一示例中,阈值可以设置为图像帧纹理梯度的10%至50%,例如可以将该阈值预先设置为纹理梯度的40%。在另一示例中,阈值可以设置为图像帧纹理梯度的50%至90%,例如可以将该阈值预先设置为纹理梯度的70%。

其中,如何确定一个编码块的内容复杂度,在上面内容中已经详细说明,在此不再赘述。

当该第三编码块的内容复杂度大于阈值时,执行步骤607,当该第二编码块的内容复杂度不大于阈值时,不再进行划分:

其中,当该第三编码块的内容复杂度大于阈值时,说明该第三编码块的内容复杂度高,将其划分为更小的编码块有利于提高画面质量。当该第三编码块的内容复杂度不大于阈值时,说明该第三编码块的内容复杂度低,将其保留为较大的编码块,可以在对画面质量影响不大的情况下尽量提高图像的压缩性能。

步骤607,将该第三编码块划分为8*8大小的第四编码块。

步骤608,对划分后的所述图像帧进行图像处理。

在一些示例中,对划分后的所述图像帧进行图像处理,包括:对划分后的编码块计算rdcost以及其他编码信息。

本公开一示例性实施例提供了一种图像处理方法,如图8所示,包括:

步骤801,获取图像帧,将所述图像帧划分为64*64大小的第一编码块;

在一些示例中,将一帧图像首先划分为64*64大小的cu块,得到深度为0的lcu(64*64)。本示例中,第一编码块大小为64*64,对应深度为0。该步骤中并不需要马上计算深度为0的lcu(64*64)的rdcost以及其他编码信息。

步骤802,针对每个第一编码块分别执行:判断该第一编码块的内容复杂度是否大于阈值;

在一些示例中,该阈值可以预先设置。在一示例中,阈值可以设置为0至图像帧纹理梯度的50%,例如可以将该阈值预先设置为纹理梯度的50%。在另一示例中,阈值可以设置为图像帧纹理梯度的10%至50%,例如可以将该阈值预先设置为纹理梯度的40%。在另一示例中,阈值可以设置为图像帧纹理梯度的50%至90%,例如可以将该阈值预先设置为纹理梯度的70%。

其中,如何确定一个编码块的内容复杂度,在上面内容中已经详细说明,在此不再赘述。

当该第一编码块的内容复杂度大于阈值时,执行步骤803,当该第一编码块的内容复杂度不大于阈值时,不再进行划分:

其中,当该第一编码块的内容复杂度大于阈值时,说明该第一编码块的内容复杂度高,将其划分为更小的编码块有利于提高画面质量。当该第一编码块的内容复杂度不大于阈值时,说明该第一编码块的内容复杂度低,将其保留为较大的编码块,可以在对画面质量影响不大的情况下尽量提高图像的压缩性能。

步骤803,将该第一编码块划分为32*32大小的第二编码块;

该步骤中并不需要马上计算深度为1的cu(32*32)的rdcost以及其他编码信息。

步骤804,针对每个第二编码块分别执行:判断该第二编码块的内容复杂度是否大于阈值;

当该第二编码块的内容复杂度大于阈值时,执行步骤805,当该第二编码块的内容复杂度不大于阈值时,不再进行划分:

步骤805,将该第二编码块划分为16*16大小的第三编码块;

该步骤中并不需要马上计算深度为2的cu(16*16)的rdcost以及其他编码信息。

步骤806,针对每个第三编码块分别执行:判断该第三编码块的内容复杂度是否大于阈值;

当该第三编码块的内容复杂度大于阈值时,执行步骤807,当该第三编码块的内容复杂度不大于阈值时,不再进行划分:

步骤807,将该第三编码块划分为8*8大小的第四编码块。

步骤808,对划分后的所述图像帧进行图像处理。

在一些示例中,对划分后的所述图像帧进行图像处理,包括:对划分后的编码块计算rdcost以及其他编码信息。

本公开一示例性实施例提供了一种图像处理方法,如图9所示,包括:

步骤901,获取图像帧,将所述图像帧划分为64*64大小的第一编码块;

在一些示例中,将一帧图像首先划分为64*64大小的cu块,得到深度为0的lcu(64*64)。本示例中,第一编码块大小为64*64,对应深度为0。该步骤中并不需要马上计算深度为0的lcu(64*64)的rdcost以及其他编码信息。

步骤902,针对每个第一编码块分别执行:将该第一编码块划分为32*32大小的第二编码块;

步骤903,判断该第一编码块内的第二编码块的纹理方向是否一致;

在一些示例中,对于深度为0的lcu(64*64)进行循环编码。例如,针对每个lcu进行一次四叉树划分,得到深度为1的四个子cu(32*32)。本示例中,第二编码块大小为32*32,对应深度为1。该步骤中并不需要马上计算深度为1的cu(32*32)的rdcost以及其他编码信息。

当该第一编码块内的第二编码块的纹理方向一致时,执行步骤904,当该第一编码块内的第二编码块的纹理方向不一致时,执行步骤905:

步骤904,将该第一编码块内的第二编码块合并为第一编码块;

步骤905,针对每个第二编码块分别执行:将该第二编码块划分为16*16大小的第三编码块;

步骤906,判断该第二编码块内的第三编码块的纹理方向是否一致;

在一些示例中,对于深度为1的cu(32*32)进行循环编码。例如,针对每个cu(32*32)进行一次四叉树划分,得到深度为2的四个子cu(16*16)。本示例中,第三编码块大小为16*16,对应深度为2。该步骤中并不需要马上计算深度为2的cu(16*16)的rdcost以及其他编码信息。

当该第二编码块内的第三编码块的纹理方向一致时,执行步骤907,当该第二编码块内的第三编码块的纹理方向不一致时,执行步骤908:

步骤907,将该第二编码块内的第三编码块合并为第二编码块;

步骤908,针对每个第三编码块分别执行:将该第三编码块划分为8*8大小的第四编码块;

在一些示例中,对于深度为2的cu(16*16)进行循环编码。例如,针对每个cu(16*16)进行一次四叉树划分,得到深度为3的四个子cu(8*8)。本示例中,第四编码块大小为8*8,对应深度为3。该步骤中并不需要马上计算深度为3的cu(8*8)的rdcost以及其他编码信息。

步骤909,判断该第三编码块内的第四编码块的纹理方向是否一致;

当该第三编码块内的第四编码块的纹理方向一致时,执行步骤910,当该第二编码块内的第三编码块的纹理方向不一致时,不再进行划分:

步骤910,将该第三编码块内的第四编码块合并为第三编码块;

步骤911,对划分后的所述图像帧进行图像处理。

在一些示例中,对划分后的所述图像帧进行图像处理,包括:对划分后的编码块计算rdcost以及其他编码信息。

本公开一示例性实施例还提供了另一种图像处理方法,包括:

步骤1,将一帧图像划分为32*32大小的编码块;

步骤2,判断相邻两块的纹理方向是否一致,如果一致,则合并为64*64大小的编码块;如果纹理不一致,内容复杂度低,则用32*32块不变;如果纹理不一致,且内容复杂度高,则进一步划分为更小的16*16,以此类推。

在一些示例性实施例中,为了应对不同的场景,还可以采用64*64和16*16块大小来划分,方法一致。但是8*8的块太小,反而会增加计算量,因此本方案不采用8*8的方案。

例如,另一示例性实施例还提供了另一种图像处理方法,包括:

步骤1,将一帧图像划分为64*64大小的编码块;

步骤2,判断相邻两块的纹理方向是否一致,如果一致,则用64*64块不变;如果纹理不一致,内容复杂度低,则用64*64块不变;如果纹理不一致,且内容复杂度高,则进一步划分为更小的32*32,以此类推。

又例如,另一示例性实施例还提供了另一种图像处理方法,包括:

步骤1,将一帧图像划分为16*16大小的编码块;

步骤2,判断相邻两块的纹理方向是否一致,如果一致,则合并为32*32大小的编码块;如果纹理不一致,内容复杂度低,则用16*16块不变;如果纹理不一致,且内容复杂度高,则进一步划分为更小的8*8,以此类推。

本公开实施例还提供了一种图像处理器,如图10所示,包括:处理器以及存储有可在所述处理器上运行的计算机程序的存储器,其中,所述处理器执行所述计算机程序时实现上述任一项所述的方法。

本公开实施例还提供了一种非瞬态计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,所述计算机程序时被处理器执行时实现上述任一项所述的方法。

本公开实施例提供的技术方案,有效降低率失真代价的计算次数,从来降低算法的复杂度,减少运算时间。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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