确定图片预测模式的方法、装置、电子设备和介质转让专利

申请号 : CN202210137721.1

文献号 : CN114513659B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张旭

申请人 : 北京百度网讯科技有限公司

摘要 :

本公开提供了一种确定图片预测模式的方法、装置、电子设备和介质,具体涉及云计算技术领域,尤其涉及视频云处理技术领域。确定图片预测模式的方法包括:针对图片中的当前编码单元,确定与当前编码单元相对应的预取块;基于预取块的预取数据,获取当前编码单元的第一数据和第二数据;以及根据第一数据、第二数据和指示信息,确定用于当前编码单元的预测模式,其中,指示信息指示了当前编码单元的相邻块。

权利要求 :

1.一种确定图片预测模式的方法,包括:

针对所述图片中的当前编码单元,确定与所述当前编码单元相对应的预取块;

基于所述预取块的预取数据,获取所述当前编码单元的第一数据和第二数据;以及在无需其他条件判断的情况下,基于所述第一数据、所述第二数据和指示信息,在确定所述当前编码单元满足第一预设条件的情况下,确定帧内预测模式作为用于所述当前编码单元的预测模式,其中所述指示信息是与所述当前编码单元的相邻块有关的信息,其中,在所述第一数据大于所述第二数据与第一权重的加权值、所述第一数据大于第一阈值且所述指示信息为第一值的情况下,确定所述当前编码单元满足所述第一预设条件。

2.根据权利要求1所述的方法,还包括:

确定所述相邻块的数量;

确定所述相邻块中采用帧内预测模式的相邻块的数量;以及

基于所述相邻块的数量和所述相邻块中采用帧内预测模式的相邻块的数量,确定所述指示信息。

3.根据权利要求1所述的方法,还包括:

基于所述第一数据、所述第二数据和所述指示信息,在确定所述当前编码单元不满足所述第一预设条件的情况下,确定所述当前编码单元在第一类型帧间预测模式下的第一帧间率失真成本及在第二类型帧间预测模式下的第二帧间率失真成本;

确定所述第一帧间率失真成本和所述第二帧间率失真成本中较小的帧间率失真成本,作为第一预帧间率失真成本;以及将所述第一类型帧间预测模式和所述第二类型帧间预测模式中与所述第一预帧间率失真成本相对应的帧间预测模式作为第一预帧间预测模式。

4.根据权利要求3所述的方法,还包括:

基于所述第一数据、所述第二数据和所述第一预帧间率失真成本,在确定所述当前编码单元满足第二预设条件的情况下,将所述第一预帧间率失真成本作为最优帧间率失真成本。

5.根据权利要求4所述的方法,还包括:

在所述第一数据大于所述第二数据与第二权重的加权值、所述第一数据大于第二阈值且所述第一数据大于所述第一预帧间率失真成本与第三权重的加权值的情况下,确定所述当前编码单元满足所述第二预设条件。

6.根据权利要求5所述的方法,其中,所述第二权重小于所述第一权重,并且所述第二阈值小于所述第一阈值。

7.根据权利要求4所述的方法,其中,在确定所述当前编码单元满足第二预设条件的情况下,还包括:基于所述第一数据、所述第二数据和所述最优帧间率失真成本,在确定所述当前编码单元满足第三预设条件的情况下,选择第一预帧间预测模式,作为用于所述当前编码单元的预测模式。

8.根据权利要求4所述的方法,还包括:

基于所述第一数据、所述第二数据和所述第一预帧间率失真成本,在确定所述当前编码单元不满足所述第二预设条件的情况下,确定所述当前编码单元在第三类型帧间预测模式集中的每个第三类型帧间预测模式下的第三帧间率失真成本,作为第三帧间率失真成本集;

确定所述第三帧间率失真成本集中最小的帧间率失真成本,作为第二预帧间率失真成本;以及确定所述第一预帧间率失真成本和所述第二预帧间率失真成本中较小的帧间率失真成本,作为最优帧间率失真成本。

9.根据权利要求8所述的方法,还包括:

基于所述第一数据、所述第二数据和所述最优帧间率失真成本,在确定所述当前编码单元满足第三预设条件的情况下,确定所述第一类型帧间预测模式、所述第二类型帧间预测模式和所述第三类型帧间预测模式中,与所述最优帧间率失真成本相对应的帧间预测模式,作为用于所述当前编码单元的预测模式。

10.根据权利要求7或9所述的方法,还包括:

在所述第二数据大于所述第一数据与第四权重的加权值、所述第二数据大于第三阈值且所述第二数据大于所述最优帧间率失真成本与第五权重的加权值的情况下,确定所述当前编码单元满足所述第三预设条件。

11.根据权利要求7或9所述的方法,还包括:

基于所述第一数据、所述第二数据和所述最优帧间率失真成本,在确定所述当前编码单元不满足所述第三预设条件的情况下,选择帧内预测模式,作为用于所述当前编码单元的预测模式。

12.根据权利要求1所述的方法,其中,所述第一数据与所述预取块在帧间预测模式下的率失真成本相关联;以及所述第二数据与所述预取块在帧内预测模式下的率失真成本相关联。

13.一种确定图片预测模式的装置,包括:

第一确定模块,针对所述图片中的当前编码单元,确定与所述当前编码单元相对应的预取块;

获取模块,基于所述预取块的预取数据,获取所述当前编码单元的第一数据和第二数据;以及第二确定模块,在无需其他条件判断的情况下,基于所述第一数据、所述第二数据和指示信息,在确定所述当前编码单元满足第一预设条件的情况下,确定帧内预测模式作为用于所述当前编码单元的预测模式,其中所述指示信息是与所述当前编码单元的相邻块有关的信息,其中,在所述第一数据大于所述第二数据与第一权重的加权值、所述第一数据大于第一阈值且所述指示信息为第一值的情况下,确定所述当前编码单元满足所述第一预设条件。

14. 一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1 12中任一项所述的方法。

~

15.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1 12中任一项所述的方法。

~

说明书 :

确定图片预测模式的方法、装置、电子设备和介质

技术领域

[0001] 本公开涉及云计算技术领域,尤其涉及视频云处理技术领域,具体涉及一种确定图片预测模式的方法、装置、电子设备和介质。

背景技术

[0002] 在视频编码中,为了消除图片中样本之间的相关性,应用预测编码。预测编码包括帧内预测(intra)和帧间预测(inter)。视频编码标准通常以块为基础进行预测编码。例如,在高效率视频编码HEVC(High Efficiency Video Coding)中,以编码单元(coding unit,CU)为单位决定预测模式,即,决定应用帧内预测还是帧间预测。因此,编码器需要计算每种预测模式下的成本(例如,率失真成本),并选择与最小成本相对应的预测模式作为当前CU的预测模式。该过程会产生大量计算,严重降低了编码速度。

发明内容

[0003] 本公开提供了一种确定图片预测模式的方法、装置、电子设备和介质。
[0004] 根据本公开的一方面,提供了一种确定图片预测模式的方法,包括:
[0005] 针对图片中的当前编码单元,确定与当前编码单元相对应的预取块;
[0006] 基于预取块的预取数据,获取当前编码单元的第一数据和第二数据;以及[0007] 根据第一数据、第二数据和指示信息,确定用于当前编码单元的预测模式,其中,指示信息指示了当前编码单元的相邻块。
[0008] 根据本公开的另一方面,提供了一种确定图片预测模式的装置,包括:
[0009] 第一确定模块,针对图片中的当前编码单元,确定与当前编码单元相对应的预取块;
[0010] 获取模块,基于预取块的预取数据,获取当前编码单元的第一数据和第二数据;以及
[0011] 第二确定模块,根据第一数据、第二数据和指示信息,确定用于当前编码单元的预测模式,其中,指示信息指示了当前编码单元的相邻块。
[0012] 根据本公开的另一方面,提供了一种电子设备,包括:
[0013] 至少一个处理器;以及
[0014] 与所述至少一个处理器通信连接的存储器;其中,
[0015] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行根据本公开的一方面的方法。
[0016] 根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据本公开的一方面的方法。
[0017] 根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据本公开的一方面的方法。
[0018] 应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

[0019] 附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0020] 图1是将CTU递归地划分为CU的四叉树结构和将CU划分为PU的候选划分方式的示意图;
[0021] 图2是根据本公开实施例的确定图片预测模式的方法的流程图;
[0022] 图3是根据本公开实施例的根据第一数据、第二数据和指示信息,确定用于当前编码单元的预测模式的过程的示意性框图;
[0023] 图4是根据本公开实施例的确定图片预测模式的装置的示意图;以及[0024] 图5示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。

具体实施方式

[0025] 以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0026] 在HEVC中,首先将输入视频序列中的每个图片划分为编码树单元(coding tree unit,CTU),然后根据四叉树结构将CTU递归地划分为编码单元(coding unit,CU)。此后,将每个CU进一步划分为预测单元(prediction unit,PU),并以PU为单位应用预测。生成预测残差之后,根据进一步的残差四叉树将每个CU细分为变换单元(transform unit,TU),并以TU为单位应用变换。在HEVC中,以CU为单位决定预测模式,即,决定应用帧内预测还是帧间预测,并决定将每个CU划分为PU的划分模式。因此,编码器需要计算每种预测模式及划分模式下的成本(例如,率失真成本),并选择与最小成本相对应的预测模式和划分模式作为当前CU的预测模式。该过程产生大量计算,严重降低了编码速度。
[0027] 图1是将CTU递归地划分为CU的四叉树结构和将CU划分为PU的候选划分方式的示意图。
[0028] 在视频编码中,输入视频序列由一系列图片(或者称为帧,以下二者可互换使用)组成。图片可以包含若干颜色分量,例如对于彩色图片,包含亮度分量Y和色度分量Cb、Cr,而对于单色图片,则仅包含亮度分量Y。
[0029] 在基于块的编码方案(例如,HEVC)中,首先将每个图片划分为大小相同的CTU,然后利用四叉树结构将每个CTU递归地划分为一个或多个CU。CTU的大小例如可以为8×8、16×16、32×32和64×64。在四叉树结构中,以CTU为根节点,其初始深度为0。随着划分的进行,深度增加,块大小在水平和垂直方向上分别减少为父节点的一半,四叉树划分直到到达作为叶节点的CU时结束,如图1右侧所示。相应地,CU的大小例如可以为8×8、16×16、32×32和64×64。
[0030] 编码器以CU为单位决定预测模式,即,当前CU使用帧内预测还是帧间预测,并进一步将CU划分为PU,以PU为单位执行预测,从而得到当前CU的预测残差。
[0031] 在当前CU采用帧内模式的情况下,可用的候选划分方式包括PART_2N×2N和PART_N×N。PART_2N×2N是指将当前CU划分为一个PU来执行预测,或者换言之,将当前CU作为PU执行预测。PART_N×N是指将当前CU均匀地划分为四个PU,并以每个PU为单位执行预测,其中,每个PU在水平和垂直方向上的大小分别为当前CU的一半,如图1左侧所示。在当前CU采用帧内模式的情况下,仅在当前CU大小为预设的最小CU大小时,需要确定将CU划分为PU的划分方式,否则将CU划分为PU的划分方式默认地设置为PART_2N×2N。
[0032] 在当前CU未采用帧内模式的情况下,可能对当前CU应用跳过(skip)帧间模式、合并(merge)帧间模式或普通帧间模式。进一步地,在普通帧间模式下,需要确定将CU划分为PU的划分方式,可用的候选划分方式包括PART_2N×2N、PART_2N×N、PART_N×2N、PART_2N×nU、PART_2N×nD、PART_nL×2N、PART_nR×2N和PART_N×N,如图1左侧所示。PART_2N×N和PART_N×2N为对称划分方式,或称为SMP(Symmetrical Mode Partitioning)划分方式。PART_2N×nU、PART_2N×nD、PART_nL×2N和PART_nR×2N为非对称划分方式,或称为AMP(Asymmetrical Mode Partitioning)划分方式。
[0033] 可以理解,编码器需要针对每个CU,确定其采用的预测模式,即,编码器需要针对每个CU,确定它分别在skip、merge、SMP、AMP和帧内预测下的各个率失真成本,并选择其中与最小率失真成本相对应的预测模式作为当前CU的预测模式。按照这种方式,编码器需要遍历每种预测模式下的率失真成本,计算量极大。
[0034] 图2是根据本公开实施例的确定图片预测模式的方法200的流程图。
[0035] 在步骤S210,针对图片中的当前编码单元,确定与当前编码单元相对应的预取块。
[0036] 编码器在确定预测模式之前,首先会预先确定与图片有关的一些内容,例如,图片的类型、是否发生场景切换等,并进行码率控制。图片的类型例如为仅帧内预测(I)、单向帧间预测(P)或者双向帧间预测(B)。在预先确定图片的类型和是否发生场景切换并进行码率控制的过程中,将图片划分为预取块,并分别计算每个预取块的帧内预测率失真成本intracost和帧间预测率失真成本intercost,进而基于intracost和intercost来确定图片的类型、是否发生场景切换、并进行码率控制。
[0037] 在一些实施例中,预取块的大小例如可以为8×8。当前CU具有与之相对应的预取块,预取块可以为一个或多个,例如,32×32的当前CU具有与之相对应的16个8×8预取块。
[0038] 在一些实施例中,为了简化计算,在将图片划分为预取块之前,可以对图片进行下采样,例如沿水平、垂直方向分别以1/2下采样率进行下采样。之后,将下采样后的图片划分为大小相同的多个预取块,预取块的大小例如为8×8。在这种情况下,32×32的当前CU具有与之相对应的4个8×8预取块。
[0039] 应当理解的是,在对图片进行了下采样的情况下,需要将由此划分出的预取块与原始图片中的对应CU进行坐标映射,以确定与当前CU相对应的预取块。
[0040] 在步骤S220,基于预取块的预取数据,获取当前编码单元的第一数据和第二数据。
[0041] 如上所述,在预先确定与图片有关的一些内容(例如,图片的类型、是否发生场景切换等,并进行码率控制)的过程中,已经计算出每个预取块的帧内预测率失真成本intracost和帧间预测率失真成本intercost。可以基于已经计算出的intracost和intercost,来获取当前CU的第一数据和第二数据。
[0042] 第一数据为当前CU的预帧间预测率失真成本pre‑intercost,第二数据为当前CU的预帧内预测率失真成本pre‑intracost。作为示例,pre‑intercost是将与当前CU相对应的所有预取块的intercost相加而得到的,pre‑intracost是将与当前CU相对应的所有预取块的intracost相加而得到的。应当理解的是,也可以对与当前CU相对应的所有预取块的intercost、intracost分别进行加权求和,来得到当前CU的pre‑intercost和pre‑intracost。
[0043] 在步骤S230,根据第一数据、第二数据和指示信息,确定用于当前编码单元的预测模式,其中,指示信息指示了当前编码单元的相邻块。
[0044] 在一些实施例中,除了第一数据、第二数据之外,还参考与当前编码单元的相邻块有关的指示信息,来确定用于当前编码单元的预测模式。当前编码单元的相邻块包括当前编码单元的时域相邻块和空域相邻块。
[0045] 时域相邻块是指与当前CU所在的当前图片时间上相关联的图片中的相邻块。例如,在HEVC中,通过语法元素collocated_from_l0_flag和collocated_ref_idx标识当前图片的共位图片,并选取共位图片中位于当前块中心或当前块右下角的块作为时域相邻块,也称为共位块。
[0046] 空域相邻块是指当前图片中与当前CU相邻的已编码块。已编码块是指已针对其确定了预测模式和将CU划分为PU的划分方式的块,因此为经划分出的PU。当前CU的相邻PU例如可以包括当前CU左侧、上方、左上和右侧的已编码PU。
[0047] 进一步地,确定相邻块的数量,确定相邻块中采用帧内预测模式的相邻块的数量,并且基于相邻块的数量和相邻块中采用帧内预测模式的相邻块的数量,来确定指示信息。例如,相邻块的数量为num,相邻块中采用帧内预测模式的相邻块的数量为intra‑num,基于二者之间的比率,即intra‑num/num来确定指示信息。例如,在intra‑num/num大于1/2时,即,相邻块中采用帧内预测模式的相邻块超过一半时,确定指示信息为第一值“1”,而在intra‑num/num低于1/2时,确定指示信息为第二值“0”。
[0048] 应当理解的是,取决于当前CU在当前图片中的位置,当前CU的时域相邻块或空域相邻块可能不可用。例如,如果当前CU位于当前图片最左侧,则左侧和左上的空域相邻块由于超出了当前图片的范围而不可用。因此,在确定相邻块的数量时,可以确定可用相邻块的数量,并且在确定相邻块中采用帧内预测模式的相邻块的数量时,可以确定可用相邻块中采用帧内预测模式的相邻块的数量。
[0049] 在确定当前CU的预测模式时,通过复用先前过程中已经计算出的帧内率失真成本和帧间率失真成本,可以显著减少编码器的计算量。此外,由于相邻块之间的纹理复杂度和运动存在相似性,通过参考指示当前CU的相邻块的指示信息,进一步提高了所确定的预测模式的准确性。
[0050] 图3是根据本公开实施例的根据第一数据、第二数据和指示信息,确定用于当前编码单元的预测模式的过程300的示意性框图。
[0051] 在框310,基于第一数据、第二数据和指示信息,确定当前编码单元是否满足第一预设条件。
[0052] 在一些实施例中,在第一数据pre‑intercost大于第二数据pre‑intracost与第一权重f1的加权值、第一数据pre‑intercost大于第一阈值th1且指示信息为第一值“1”的情况下,即,pre‑intercost>pre‑intracost*f1&&pre‑intercost>th1&&intra‑num/num>1/2为真的情况下,确定当前编码单元满足第一预设条件。
[0053] 第一权重f1可以为浮点数。应当理解的是,可以基于已经确定的图片的类型(即,I、P、B类型)、当前CU的大小和量化参数QP来设置第一阈值th1。图片的类型、当前CU的大小和量化参数QP可以影响对当前图片进行编码的码率。例如,量化参数QP反映了空间压缩情况,应用小QP的情况下,可以保留大部分的细节,应用大QP的情况下,一些细节丢失,码率降低,但图片的失真变大且质量下降。因此,随着码率的增加,可以提高th1。
[0054] 在框310的结果为“是”,即,当前编码单元满足第一预设条件的情况下,过程300进行到框360,选择帧内预测(intra)模式作为用于当前编码单元的预测模式,过程300结束。
[0055] 应当理解,pre‑intercost>pre‑intracost*f1&&pre‑intercost>th1为真指示了当前CU的帧间率失真成本远大于其帧内率失真成本,因此针对当前CU,采用率失真成本较小的帧内预测模式的可能性非常大。
[0056] 进一步地,参考指示信息,以确定当前CU的相邻块中采用帧内预测模式的概率,在多数(即,>1/2)的相邻块采用帧内预测模式的情况下,认为当前CU采用帧内预测模式的可能性较大。进而,在pre‑intercost>pre‑intracost*f1&&pre‑intercost>th1&&intra‑num/num>1/2为真的情况下,跳过所有inter模式下的率失真计算,选择intra模式作为用于当前编码单元的预测模式。
[0057] 在框310的结果为“否”,即,当前编码单元不满足第一预设条件的情况下,过程300进行到框320,确定当前编码单元在第一类型帧间预测模式下的第一帧间率失真成本及在第二类型帧间预测模式下的第二帧间率失真成本,确定第一帧间率失真成本和第二帧间率失真成本中较小的帧间率失真成本,作为第一预帧间率失真成本,并且将第一类型帧间预测模式和第二类型帧间预测模式中与第一预帧间率失真成本相对应的帧间预测模式作为第一预帧间预测模式。
[0058] 在一些实施例中,第一类型帧间预测模式例如为skip模式,第二类型帧间预测模式例如为merge模式,相应地,计算skip模式下的帧间率失真成本intra‑skip作为第一帧间率失真成本,并且计算merge模式下的帧间率失真成本intra‑merge作为第二帧间率失真成本。确定intra‑skip和intra‑merge中较小的帧间率失真成本,作为第一预帧间率失真成本bestmode1_cost,并且将skip模式和merge模式中与bestmode1_cost相对应的模式作为第一预帧间预测模式bestmode1。
[0059] 在框330中,基于第一数据、第二数据和第一预帧间率失真成本,确定当前编码单元是否满足第二预设条件。
[0060] 在一些实施例中,在第一数据pre‑intercost大于第二数据pre‑intracost与第二权重f2的加权值、第一数据pre‑intercost大于第二阈值th2且第一数据pre‑intercost大于第一预帧间率失真成本bestmode1_cost与第三权重f3的加权值的情况下,即,pre‑intercost>pre‑intracost*f2&&pre‑intercost>th2&&pre‑intercost>bestmode1_cost*f3为真的情况下,确定当前编码单元满足第二预设条件。
[0061] 其中,第二权重f2和第三权重f3为浮点数。可以基于已经确定的图片的类型(即,I、P、B类型)、当前CU的大小和量化参数QP来设置第二阈值th2。此外,第一权重f1大于第二权重f2,并且第一阈值th1大于第二阈值th2。
[0062] 应当理解的是,pre‑intercost是通过对与当前CU相对应的预取块的intercost求和得到的,而与当前CU相对应的预取块可能是在当前图片的下采样版本中的预取块。例如,在当前CU的大小为32×32且预取块是当前图片的下采样版本中的8×8预取块的情况下,与当前CU相对应的预取块包括4个8×8预取块。因此,pre‑intercost是这4个8×8预取块的intercost之和,它们构成当前图片的下采样版本中的16×16大小的块。然而,bestmode1_cost是针对原始大小图片中的大小为32×32的当前CU确定的,因此,在将第一数据pre‑intercost和第一预帧间率失真成本bestmode1_cost与第三权重f3的加权值进行比较时,需要对pre‑intercost或bestmode1_cost进行归一化,以使二者可以与相同大小的块相关联。例如,可以将pre‑intercost×4,或者将bestmode1_cost/4以进行归一化。
[0063] 在框330的结果为“是”,即,当前编码单元满足第二预设条件的情况下,过程300进行到框350,将第一预帧间率失真成本bestmode1_cost作为最优帧间率失真成本bestmode_cost,基于第一数据、第二数据和最优帧间率失真成本,确定当前编码单元是否满足第三预设条件。
[0064] 在一些实施例中,在第二数据pre‑intracost大于第一数据pre‑intercost与第四权重f4的加权值、第二数据pre‑intracost大于第三阈值且第二数据pre‑intracost大于最优帧间率失真成本bestmode_cost与第五权重f5,即,pre‑intracost>pre‑intercost*f4&&pre‑intracost>th3&&pre‑intracost>bestmode_cost*f5为真的情况下,确定当前编码单元满足第三预设条件。
[0065] 其中,第四权重f4和第五权重f5为浮点数。可以基于已经确定的图片的类型(即,I、P、B类型)、当前CU的大小和量化参数QP来设置第三阈值th3。
[0066] 应当理解的是,pre‑intracost是通过对与当前CU相对应的预取块的intracost求和得到的,而与当前CU相对应的预取块可能是在当前图片的下采样版本中的预取块。例如,在当前CU的大小为32×32且预取块是当前图片的下采样版本中的8×8预取块的情况下,与当前CU相对应的预取块包括4个8×8预取块。因此,pre‑intracost是这4个8×8预取块的intracost之和,它们构成当前图片的下采样版本中的16×16大小的块。然而,bestmode_cost是针对原始大小图片中的大小为32×32的当前CU确定的,因此,在将第一数据pre‑intracost和最优帧间率失真成本bestmode_cost与第五权重f5的加权值进行比较时,需要对pre‑intracost或bestmode_cost进行归一化,以使二者可以与相同大小的块相关联。例如,可以将pre‑intracost×4,或者将bestmode_cost/4以进行归一化。
[0067] 在已经确定了skip模式和merge模式中帧间率失真成本较小的模式作为第一预帧间预测模式bestmode1且第一预帧间预测模式的第一预帧间率失真成本bestmode1_cost使得第二预设条件为真的情况下,可以视为第一预帧间预测模式bestmode1的第一预帧间率失真成本bestmode1_cost已经足够低,后续的候选帧间模式,即,普通帧间模式(包括采用PART_2N×2N、PART_2N×N、PART_N×2N、PART_2N×nU、PART_2N×nD、PART_nL×2N、PART_nR×2N和PART_N×N将CU划分为PU时的帧间预测)不会产生更低的帧间率失真成本,因此,跳过普通帧间模式下的率失真成本计算,将bestmode1_cost作为最优帧间率失真成本,从而节省计算量。
[0068] 在框350的结果为“是”,即,在pre‑intracost>pre‑intercost*f4&&pre‑intracost>th3&&pre‑intracost>bestmode_cost*f5为真的情况下,视为当前的最优帧间预测模式(即,第一预帧间预测模式)bestmode能够产生足够小的率失真成本,后续框360中intra模式不会产生更小的率失真成本,因此跳过框360中intra模式下的率失真成本计算,选择当前的最优帧间预测模式(即,第一预帧间预测模式)作为用于当前CU的预测模式,过程300结束。
[0069] 在框350的结果为“否”,即,当前编码单元不满足第三预设条件的情况下,过程300进行到框360,选择帧内预测模式作为用于当前CU的预测模式。
[0070] 在框330的结果为“否”,即,当前编码单元不满足第二预设条件的情况下,过程300进行到框340:确定当前编码单元在第三类型帧间预测模式集中的每个第三类型帧间预测模式下的第三帧间率失真成本,作为第三帧间率失真成本集,确定第三帧间率失真成本集中最小的帧间率失真成本,作为第二预帧间率失真成本,并且确定第一预帧间率失真成本和第二预帧间率失真成本中较小的帧间率失真成本,作为最优帧间率失真成本。
[0071] 在一些实施例中,第三类型帧间预测模式集包括普通帧间模式下将CU划分为PU的所有候选划分方式,即,PART_2N×2N、PART_2N×N、PART_N×2N、PART_2N×nU、PART_2N×nD、PART_nL×2N、PART_nR×2N和PART_N×N,并且可以依照PART_2N×2N、SMP(包括PART_2N×N和PART_N×2N)、AMP(包括PART_2N×nU、PART_2N×nD、PART_nL×2N和PART_nR×2N)的顺序分别计算各个划分方式下的帧间率失真成本,构成第三帧间率失真成本集。
[0072] 进一步地,可以选择第三帧间率失真成本集中最小的帧间率失真成本作为第二预帧间率失真成本bestmode2_cost,并且将其与基于skip和merge模式导出的第一预帧间率失真成本bestmode1_cost进行比较,进而确定最优帧间率失真成本bestmode_cost。
[0073] 在确定了确定最优帧间率失真成本bestmode_cost之后,过程300进行到框350,基于第一数据、第二数据和最优帧间率失真成本,确定当前编码单元是否满足第三预设条件。
[0074] 在框350的结果为“是”,即,在pre‑intracost>pre‑intercost*f4&&pre‑intracost>th3&&pre‑intracost>bestmode_cost*f5为真的情况下,视为当前的最优帧间预测模式bestmode(即,与bestmode1_cost和bestmode2_cost中较小的帧间率失真成本相对应的帧间预测模式)能够产生足够小的率失真成本,后续框360中intra模式不会产生更小的率失真成本,因此跳过框360中intra模式下的率失真成本计算,选择当前的最优帧间预测模式作为用于当前CU的预测模式,过程300结束。
[0075] 在框350的结果为“否”,即,当前编码单元不满足第三预设条件的情况下,过程300进行到框360,选择帧内预测模式作为用于当前CU的预测模式。
[0076] 在确定当前CU的预测模式时,由于先前过程中已经计算出的帧内率失真成本和帧间率失真成本与当前CU具有关联性,因此,复用已经计算出的帧内率失真成本和帧间率失真成本,并基于二者与预设条件的判断,来为当前CU选择预测模式。通过该方式,可以跳过若干预测模式下的率失真成本计算,从而大大节省编码器的运算量,提高编码效率。
[0077] 图4是根据本公开实施例的确定图片预测模式的装置400的示意图。
[0078] 如图4所示,确定图片预测模式的装置400包括第一确定模块410、获取模块420和第二确定模块430。
[0079] 第一确定模块410针对图片中的当前编码单元,确定与当前编码单元相对应的预取块。
[0080] 编码器在确定预测模式之前,首先会预先确定与图片有关的一些内容,例如,图片的类型、是否发生场景切换等,并进行码率控制。图片的类型例如为仅帧内预测(I)、单向帧间预测(P)或者双向帧间预测(B)。在预先确定图片的类型、是否发生场景切换、进行码率控制的过程中,将图片划分为预取块,并分别计算每个预取块的帧内预测率失真成本intracost和帧间预测率失真成本intercost,进而基于intracost和intercost来确定图片的类型以及是否发生场景切换、并进行码率控制。
[0081] 在一些实施例中,预取块的大小例如可以为8×8。当前CU具有与之相对应的预取块,预取块可以为一个或多个,例如,32×32的当前CU具有与之相对应的16个8×8预取块。
[0082] 在一些实施例中,为了简化计算,在将图片划分为预取块之前,可以对图片进行下采样,例如水平、垂直方向分别以1/2下采样率进行下采样。之后,将下采样后的图片划分为大小相同的多个预取块,预取块的大小例如为8×8。在这种情况下,32×32的当前CU具有与之相对应的4个8×8预取块。
[0083] 应当理解的是,在对图片进行了下采样的情况下,需要将由此划分出的预取块与原始图片中的对应CU进行坐标映射,以确定与当前CU相对应的预取块。
[0084] 获取模块420基于预取块的预取数据,获取当前编码单元的第一数据和第二数据。
[0085] 如上所述,在预先确定与图片有关的一些内容(例如,图片的类型、是否发生场景切换等,并进行码率控制)的过程中,已经计算出每个预取块的帧内预测率失真成本intracost和帧间预测率失真成本intercost。可以基于已经计算出的intracost和intercost,来获取当前CU的第一数据和第二数据。
[0086] 第一数据为当前CU的预帧间预测率失真成本pre‑intercost,第二数据为当前CU的预帧内预测率失真成本pre‑intracost。作为示例,pre‑intercost是将与当前CU相对应的所有预取块的intercost相加而获取的,pre‑intracost是将与当前CU相对应的所有预取块的intracost相加而获取的。应当理解的是,也可以对与当前CU相对应的所有预取块的intercost、intracost分别进行加权求和,来获取当前CU的pre‑intercost和pre‑intracost。
[0087] 第二确定模块430根据第一数据、第二数据和指示信息,确定用于当前编码单元的预测模式,其中,指示信息指示了当前编码单元的相邻块。
[0088] 在一些实施例中,除了第一数据、第二数据之外,还参考与当前编码单元的相邻块有关的指示信息,来确定用于当前编码单元的预测模式。当前编码单元的相邻块包括当前编码单元的时域相邻块和空域相邻块。
[0089] 时域相邻块是指与当前CU所在的当前图片时间上相关联的图片中的相邻块。例如,在HEVC中,通过语法元素collocated_from_l0_flag和collocated_ref_idx标识当前图片的共位图片,并选取共位图片中位于当前块中心或当前块右下角的块作为时域相邻块,也称为共位块。
[0090] 空域相邻块是指当前图片中与当前CU相邻的已编码块。已编码块是指已针对其确定了预测模式和将CU划分为PU的划分方式的块,因此为经划分出的PU。当前CU的相邻PU例如可以包括当前CU左侧、上方、左上和右侧的已编码PU。
[0091] 进一步地,确定相邻块的数量,确定相邻块中采用帧内预测模式的相邻块的数量,并且基于相邻块的数量和相邻块中采用帧内预测模式的相邻块的数量,来确定指示信息。例如,相邻块的数量为num,相邻块中采用帧内预测模式的相邻块的数量为intra‑num,基于二者之间的比率,即intra‑num/num来确定指示信息。例如,在intra‑num/num大于1/2时,即,相邻块中采用帧内预测模式的相邻块超过一半时,确定指示信息为第一值“1”,而在intra‑num/num低于1/2时,确定指示信息为第二值“0”。
[0092] 应当理解的是,取决于当前CU在当前图片中的位置,其时域相邻块或空域相邻块可能不可用。例如,如果当前CU位于当前图片最左侧,则左侧和左上的空域相邻块由于超出了当前图片的范围而不可用。因此,在确定相邻块的数量时,可以确定可用相邻块的数量,并且在确定相邻块中采用帧内预测模式的相邻块的数量时,可以确定可用相邻块中采用帧内预测模式的相邻块的数量。
[0093] 在确定当前CU的预测模式时,通过复用先前过程中已经计算出的帧内率失真成本和帧间率失真成本,可以显著减少编码器的计算量。此外,由于相邻块之间的纹理复杂度和运动存在相似性,通过参考指示当前CU的相邻块的指示信息,进一步提高了所确定的预测模式的准确性。
[0094] 图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0095] 如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
[0096] 设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0097] 计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如方法100或200。例如,在一些实施例中,上述方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM503并由计算单元501执行时,可以执行上文描述的方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法。
[0098] 本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0099] 用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0100] 在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0101] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0102] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
[0103] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0104] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0105] 上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。