一种图像数据的编码、解码方法及装置与流程

文档序号:16519517发布日期:2019-01-05 09:52阅读:221来源:国知局
一种图像数据的编码、解码方法及装置与流程

本申请实施例涉及图像处理领域,尤其涉及一种图像数据的编码、解码方法及装置。



背景技术:

视频编解码标准h.265将一帧图像分割成互不重叠的编码树单元(codingtreeunit,ctu),并将每个ctu作为四叉树(quad-tree,qt)的根节点,按照qt结构将每个ctu递归划分为若干个叶节点。qt结构中的每个节点对应一个图像区域。如果某一节点不再划分,则该节点称为叶节点,它对应的图像区域形成一个编码单元(codingunit,cu)。因此,可以认为h.265是一种将ctu划分为一组cu的过程。将ctu划分成一组cu的划分方式对应于一个编码树(codingtree)。

未来视频编码联合探索组(jointexplorationteamonfuturevideocoding,jvet)参考软件联合探索模型(jointexplorationmodel,jem)提出了qtbt划分方式,即第一级编码树中的节点采用qt划分方式,第二级编码树中的节点采用二叉树(binarytree,bt)划分方式(bt划分方式包括“水平二分”和“竖直二分”)。具体的,将ctu先按照qt划分方式划分,以获取若干个qt叶节点;qt的叶节点可以按照bt划分方式划分。qtbt划分方式中cu形状更加多样,能够更好地适应局部图像的内容。

但是,对于每个节点,编码端设备通常需要计算该节点能够使用的每一种划分方式的率失真代价(ratedistortioncost,rdcost),比较计算出的rdcost,并将最小的rdcost所对应的划分方式确定为该节点的划分方式。因此,对于每个节点,编码端设备均需要计算多种划分方式的rdcost,这样的话,编码复杂度较高。



技术实现要素:

本申请实施例提供一种图像数据的编码、解码方法及装置,能够解决目前编码复杂度较高的问题。

为达到上述目的,本申请实施例采用如下技术方案:

第一方面,提供一种图像数据的解码方法,解码端设备在得到包含图像数据的码流后,通过解析该码流,得到第一级编码树的节点划分方式信息和第二级编码树的节点划分方式信息,如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,该解码端设备通过解析码流,得到第一节点的三个子节点的编码信息,第一节点的一个子节点对应一个编码单元cu,这样,该解码端设备可根据第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。本申请中第一级编码树的根节点对应一个ctu,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,第二级编码树的根节点为第一级编码树的一个叶节点。

本申请实施例中的解码端设备只需确定第一节点对应的划分方式为三叉树划分,即可直接得到第一节点的三个子节点的编码信息,无需再依次对第一节点的三个子节点进行解码,加快了解码的速率,降低了解码的复杂度。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式与第二级编码树对应的节点划分方式不相同

可选的,在本申请的另一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。

第二方面,提供一种解码端设备,该解码端设备包括获取模块、解析模块以及解码重建模块。其中,上述获取模块,用于得到包含图像数据的码流。上述解析模块,用于解析上述获取模块获取到的码流,得到第一级编码树的节点划分方式信息,其中,第一级编码树的根节点对应一个编码树单元ctu,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,以及用于解析码流,得到第二级编码树的节点划分方式信息,其中,第二级编码树的根节点为第一级编码树的一个叶节点,以及用于如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,解析码流,得到第一节点的三个子节点的编码信息,其中,第一节点的一个子节点对应一个编码单元cu。上述解码重建模块,用于根据上述解析模块得到的第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式与第二级编码树对应的节点划分方式不相同。

可选的,在本申请的另一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。

本申请中第二方面及其各种实现方式的具体描述,可以参考第一方面及其各种实现方式中的详细描述;并且,第二方面及其各种实现方式的有益效果,可以参考第一方面及其各种实现方式中的有益效果分析,此处不再赘述。

第三方面,提供一种图像数据的解码方法,解码端设备在得到包含图像数据的码流后,通过解析该码流,得到第一级编码树的节点划分方式信息和第二级编码树的节点划分方式信息,如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为不继续按照第二级编码树的划分方式进行划分,该解码端设备通过解析码流,得到第三级编码树的节点划分方式信息;如果第三级编码树的节点划分方式信息指示第一节点对应的划分方式为三叉树划分,该解码端设备通过解析码流,得到第一节点的三个子节点的编码信息,第一节点的一个子节点对应一个编码单元cu,这样,该解码端设备可根据第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。本申请中第一级编码树的根节点对应一个ctu,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,第二级编码树的根节点为第一级编码树的一个叶节点,第一节点为第三级编码树的一个根节点。

本申请实施例中的解码端设备只需确定第一节点对应的划分方式为三叉树划分,即可直接得到第一节点的三个子节点的编码信息,无需再依次对第一节点的三个子节点进行解码,加快了解码的速率,降低了解码的复杂度。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分,第三级编码对应的节点划分方式包括三叉树划分。

第四方面,提供一种解码端设备,该解码端设备包括获取模块、解析模块和解码重建模块。其中,上述获取模块,用于得到包含图像数据的码流。上述解析模块,用于解析上述获取模块获取到的码流,得到第一级编码树的节点划分方式信息,其中,第一级编码树的根节点对应一个编码树单元ctu,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,以及用于解析码流,得到第二级编码树的节点划分方式信息,其中,第二级编码树的根节点为第一级编码树的一个叶节点,以及用于如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为不继续按照第二级编码树的划分方式进行划分,解析码流,得到第三级编码树的节点划分方式信息,其中,第三级编码树的根节点为第一节点,以及用于如果第三级编码树的节点划分方式信息指示第一节点对应的划分方式为三叉树划分,解析码流,得到第一节点的三个子节点的编码信息,其中,第一节点的一个子节点对应一个编码单元cu。上述解码重建模块,用于根据上述解析模块得到的第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分,第三级编码对应的节点划分方式包括三叉树划分。

本申请中第四方面及其各种实现方式的具体描述,可以参考第三方面及其各种实现方式中的详细描述;并且,第四方面及其各种实现方式的有益效果,可以参考第三方面及其各种实现方式中的有益效果分析,此处不再赘述。

第五方面,提供一种图像数据的解码方法,解码端设备在得到包含图像数据的码流后,通过解析该码流,得到用于指示是否限制三叉树划分得到的节点继续进行划分的三叉树叶节点模式标识、第一级编码树的节点划分方式信息和第二级编码树的节点划分方式信息,如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,且三叉树叶节点模式标识指示限制三叉树划分得到的节点继续进行划分,该解码端设备通过解析码流,得到第一节点的三个子节点的编码信息,第一节点的一个子节点对应一个编码单元cu,这样,该解码端设备可根据第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。本申请中第一级编码树的根节点对应一个ctu,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,第二级编码树的根节点为第一级编码树的一个叶节点。

本申请实施例增加了限制节点划分的条件:若某一节点的父节点对应的划分方式为三叉树划分,则该节点不再继续划分。解码端设备只需确定某一节点对应的划分方式为三叉树划分,即可直接得到该节点的子节点的编码信息,无需再依次对该节点的所有子节点进行解码,加快了解码的速率,降低了解码的复杂度。此外,解码端设备可根据三叉树叶节点模式标识确定节点划分的限制情况,从而自适应地获取每一级编码树的节点划分信息。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式与第二级编码树对应的节点划分方式不相同。

第六方面,提供一种解码端设备,该解码端设备包括获取模块、解析模块和解码重建模块。其中,上述获取模块,用于得到包含图像数据的码流。上述解析模块,用于解析上述获取模块获取到的码流,得到三叉树叶节点模式标识,三叉树叶节点模式标识用于指示是否限制三叉树划分得到的节点继续进行划分,以及用于解析码流,得到第一级编码树的节点划分方式信息,其中,第一级编码树的根节点对应一个编码树单元ctu,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,以及用于解析码流,得到第二级编码树的节点划分方式信息,其中,第二级编码树的根节点为第一级编码树的一个叶节点,以及用于如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,且三叉树叶节点模式标识指示限制三叉树划分得到的节点继续进行划分,解析码流,得到第一节点的三个子节点的编码信息,其中,第一节点的一个子节点对应一个编码单元cu。上述解码重建模块,用于根据上述解析模块得到的第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式与第二级编码树对应的节点划分方式不相同。

本申请中第六方面及其各种实现方式的具体描述,可以参考第五方面及其各种实现方式中的详细描述;并且,第六方面及其各种实现方式的有益效果,可以参考第五方面及其各种实现方式中的有益效果分析,此处不再赘述。

第七方面,提供一种图像数据的编码方法,编码端设备在确定与待编码图像块对应的ctu后,将该ctu按照第一级编码树对应的节点划分方式进行划分,得到第一级编码树的叶节点,其中,第一级编码树的根节点对应该ctu;编码端设备根据预设条件,确定第二级编码树中的第一节点能够使用的划分方式,第二级编码树的根节点为第一级编码树的一个叶节点,预设条件包括:若第一节点的父节点对应的划分方式为三叉树划分,确定不划分第一节点;如果第一节点能够使用的划分方式为不划分,该编码端设备对与第一节点对应的编码单元进行编码,得到对应编码单元的编码单元码流。

本申请实施例中的预设条件限制了第二级编码树中的节点的划分,第二级编码树中的某一节点对应的划分方式为三叉树划分,则该节点的子节点将不再继续划分,这样,大幅度的减少了划分第二级编码树中节点的复杂度,降低了编码复杂度。

此外,由于第二级编码树中的某一节点对应的划分方式为三叉树划分,则该节点的子节点将不再继续划分,这样,编码端设备完成编码后发送的码流中可以不再包括该节点的子节点的划分信息,节省了传输比特,降低了码流的长度。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式与第二级编码树对应的节点划分方式不相同。

可选的,在本申请的另一种可能的实现方式中,如果第一节点能够使用的划分方式未包括不划分,编码端设备计算第一节点能够使用的划分方式中的每种划分方式的率失真代价,并将最小的率失真代价对应的划分方式确定为第一节点对应的目标划分方式,这样编码端设备即可使用第一节点对应的目标划分方式划分第一节点。

可选的,在本申请的另一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。

第八方面,提供一种编码端设备,该编码端设备包括确定模块、划分模块和编码模块。其中,上述确定模块,用于确定与待编码图像块对应的编码树单元ctu。上述划分模块,用于将上述确定模块确定的ctu按照第一级编码树对应的节点划分方式进行划分,得到第一级编码树的叶节点,第一级编码树的根节点对应ctu。上述确定模块,还用于根据预设条件,确定第二级编码树中的第一节点能够使用的划分方式,预设条件包括:若第一节点的父节点对应的划分方式为三叉树划分,确定不划分第一节点,第二级编码树的根节点为第一级编码树的一个叶节点。上述编码模块,用于如果上述确定模块确定出的第一节点能够使用的划分方式为不划分,对与第一节点对应的编码单元cu进行编码,得到对应编码单元的编码单元码流。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式与第二级编码树对应的节点划分方式不相同。

可选的,在本申请的一种可能的实现方式中,本申请实施例提供的编码端设备还包括计算模块,该计算模块用于如果上述确定模块确定第一节点能够使用的划分方式未包括不划分,计算第一节点能够使用的划分方式中的每种划分方式的率失真代价。上述确定模块,还用于将最小的率失真代价对应的划分方式确定为第一节点对应的目标划分方式。上述划分模块具体用于使用上述确定模块确定的第一节点对应的目标划分方式划分第一节点。

可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。

本申请中第八方面及其各种实现方式的具体描述,可以参考第七方面及其各种实现方式中的详细描述;并且,第八方面及其各种实现方式的有益效果,可以参考第七方面及其各种实现方式中的有益效果分析,此处不再赘述。

第九方面,提供一种解码端设备,其特征在于,解码端设备包括:一个或多个处理器、存储器、通信接口。该存储器、通信接口与一个或多个处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,解码端设备执行如上述第一方面、第三方面、第四方面、第六方面及其任意一种可能的实现方式所述的图像数据的解码方法。

第十方面,提供一种编码端设备,其特征在于,编码端设备包括:一个或多个处理器、存储器、通信接口。该存储器、通信接口与一个或多个处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,编码端设备执行如上述第八方面及其任意一种可能的实现方式所述的图像数据的编码方法。

第十一方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令在解码端设备上运行时,使得所述解码端设备执行如上述第一方面、第三方面、第四方面、第六方面及其任意一种可能的实现方式所述的图像数据的解码方法。

第十二方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令在编码端设备上运行时,使得所述编码端设备执行如上述第八方面及其任意一种可能的实现方式所述的图像数据的编码方法。

第十三方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在解码端设备上运行时,使得解码端设备执行如上述第一方面、第三方面、第四方面、第六方面及其任意一种可能的实现方式所述的图像数据的解码方法。

第十四方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在编码端设备上运行时,使得编码端设备执行如上述第八方面及其任意一种可能的实现方式所述的图像数据的编码方法。

在本申请中,上述解码端设备和编码端设备的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。

本申请的这些方面或其他方面在以下的描述中会更加简明易懂。

附图说明

图1为本申请实施例提供的不同划分方式的结构示意图;

图2为本申请实施例提供的四叉树层级的结构示意图;

图3为本申请实施例提供的四叉树划分和二叉树划分的组合划分示意图;

图4为本申请实施例提供的图像处理系统的结构示意图;

图5为本申请实施例提供的一种手机的硬件结构示意图;

图6为本申请实施例提供的图像数据的解码方法流程示意图一;

图7为本申请实施例提供的图像数据的解码方法流程示意图二;

图8为本申请实施例提供的图像数据的解码方法流程示意图三;

图9为本申请实施例提供的图像数据的编码方法流程示意图;

图10为本申请实施例提供的解码端设备的结构示意图;

图11为本申请实施例提供的编码端设备的结构示意图。

具体实施方式

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于限定特定顺序。

在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

为了方便理解本申请实施例,首先在此介绍本申请实施例涉及到的相关要素。

编码树单元(codingtreeunit,ctu):一幅图像由多个ctu构成,一个ctu通常对应于一个方形图像区域,如图1(a)所示,图像10由多个ctu构成(包括ctua、ctub、ctuc等)。与某一ctu对应的编码信息包含与该ctu对应的方形图像区域中的像素的亮度值和/或色度值。此外,与某一ctu对应的编码信息还可以包含语法元素,这些语法元素指示如何将该ctu划分成至少一个cu,以及解码每个cu以得到重建图像的方法。

一个ctu对应的图像区域可以包括64×64、128×128或256×256个像素。在一个示例中,64×64个像素的ctu包含由64列、每列64个像素的矩形像素点阵,每个像素包含亮度分量和/或色度分量。

可以理解的是,ctu也可以对应矩形图像区域或者其它形状的图像区域,一个ctu对应的图像区域也可以是水平方向的像素点的数量与竖直方向的像素点数量不同的图像区域,例如包括64×128个像素。

编码单元(codingunit,cu):通常对应于一个a×b的矩形区域,a为矩形的宽,b为矩形的高,其中,本申请实施例中涉及到的宽是指图1示出的二维直角坐标系xoy中沿x轴方向(水平方向)的长度,高是指图1示出的二维直角坐标系xoy中沿y轴方向(竖直方向)的长度。这里,a和b的取值可以相同,也可以不同。a和b的取值通常为2的整数次幂,例如:256、128、64、32、16、8或4等。一个cu可通过解码处理得到一个a×b的矩形区域的重建图像块,解码处理通常包括预测(prediction)、反量化(dequantization)、反变换(inversetransform)等处理,产生预测图像和残差,预测图像和残差叠加后得到重建图像块。多个重建图像块可以得到最终的重建图像。

四叉树(quad-tree,qt):一种树状结构,一个节点可划分为四个子节点。在一个示例中,视频编解码标准h.265采用基于四叉树的ctu划分方式:将ctu作为根节点,每个节点对应于一个方形图像区域;对于某一节点,可以不再划分该节点(此时该节点对应的方形图像区域为一个cu),也可以将该节点划分成四个下一层级的节点,即把该节点对应的方形图像区域划分成四个大小相同的方形区域(其宽、高各为划分前区域宽、高的一半),每个区域对应于一个节点。如图1(b)所示,ctua为根节点,将ctua划分为a、b、c和d四个节点,若不再划分a节点,则a节点对应的方形图像区域对应一个cu。

二叉树(binarytree,bt):一种树状结构,一个节点可划分成两个子节点。对于二叉树结构上的某一节点,可以不再划分该节点,也可以将该节点划分成两个下一层级的节点。二叉树划分方式可以包括:

(1)、水平二分

将节点对应的图像区域划分成上、下两个相同大小的区域,即被划分的图像区域的宽保持不变,高变为被划分的图像区域的一半,划分后的每个图像区域对应于一个子节点。如图1(c)所示,节点b使用水平二分划分方式划分,生成节点e和节点f。

(2)、竖直二分

将节点对应的区域划分成左、右两个大小相同的区域,即被划分的图像区域的高保持不变,宽变为被划分的图像区域的一半,划分后的每个图像区域对应于一个子节点。如图1(d)所示,节点d使用竖直二分划分方式划分,生成节点g和节点h。

可以理解的是,上述水平二分和竖直二分是对二叉树划分方式的一种示例。可以采用别的方式将节点对应的图像区域划分为两个子区域。例如水平划分两个高不相等的子区域,或者竖直划分为两个宽不相等的区域。

三叉树(tripletree,tt):一种树状结构,一个节点可划分成三个子节点。对于三叉树结构上的某一节点,可以不再划分该节点,也可以将该节点划分成三个下一层级的节点。三叉树划分方式可以包括:

(1)、水平三分

将节点对应的图像区域划分成上、中、下三个区域,每个区域对应于一个子节点。在一个示例中,上、中、下三个区域的高分别为划分前的图像区域的高的1/4、1/2、1/4。如图1(e)所示,节点c使用水平三分划分方式划分,生成节点j、节点k和节点m,节点j对应的图像区域的高为节点c对应的图像区域的高的1/4,节点k对应的图像区域的高为节点c对应的图像区域的高的1/2,节点m对应的图像区域的高为节点c对应的图像区域的高的1/4。在另一个示例中,上、中、下三个区域的高分别为划分前的图像区域的高的1/3、1/3、1/3,即将节点对应的图像区域按照图1示出的二维直角坐标系xoy中的x轴的方向平均划分为三个区域。如图1(f)所示,节点c使用水平三分划分方式划分,生成节点j、节点k和节点m,节点j对应的图像区域的高、节点k对应的图像区域的高、节点m对应的图像区域的高均为节点c对应的图像区域的高的1/3。

(2)、竖直三分

将节点对应的图像区域划分成左、中、右三个区域,每个区域对应于一个子节点。在一个示例中,左、中、右三个图像区域的宽分别为划分前的图像区域的宽的1/4、1/2、1/4。如图1(g)所示,节点c使用竖直三分划分方式划分,生成节点p、节点q和节点x,节点p对应的图像区域的宽为节点c对应的图像区域的宽的1/4,节点q对应的图像区域的宽为节点c对应的图像区域的宽的1/2,节点x对应的图像区域的宽为节点c对应的图像区域的宽的1/4。在另一个示例中,左、中、右三个图像区域的高分别为划分前的图像区域的高的1/3、1/3、1/3,即将节点对应的图像区域按照图1示出的二维直角坐标系xoy中的x轴的方向平均划分为三个区域。如图1(h)所示,节点c使用竖直三分划分方式划分,生成节点p、节点q和节点x,节点p对应的图像区域的宽、节点q对应的图像区域的宽、节点x对应的图像区域的宽均为节点c对应的图像区域的宽的1/3。

图像编码(imageencoding):将图像序列压缩成码流的处理过程。

图像解码(imagedecoding):将码流按照特定的语法规则和处理方法恢复成重建图像的处理过程。

视频编解码标准h.265使用qt划分方式划分ctu。具体的,将ctu作为qt结构的根节点(root),按照qt划分方式,将ctu递归划分成若干个叶节点(leafnode)。如果某一节点不再划分,则该节点称为叶节点。从上述描述可知,一幅图像由多个ctu构成,一个ctu对应于一个方形图像区域,也就是说,一个ctu对应一个图像块。每个叶节点对应一个cu,每个cu相当于ctu对应的图像块中的某一子图像块,且无法再继续使用qt划分方式划分该子图像块。如果需要继续划分某一节点,则将该节点对应的图像区域划分成四个相同大小的图像区域,可参考图1(b),在该节点对应的图像区域被划分后,划分后生成的每个图像区域均对应一个节点,还需要分别确定这些节点是否还会继续划分。一个节点是否划分由码流中该节点对应的划分标志位(如split_cu_flag)指示。根节点在qt结构中的层级(简称为qt层级)为0,采用qt划分方式生成的子节点的qt层级为该子节点的父节点的qt层级加1。

示例性的,某一节点的划分标志位用split_cu_flag表示,split_cu_flag=0表示不再划分该节点,split_cu_flag=1表示继续划分该节点。如图2所示,在64×64的ctu节点(qt层级为0)的split_cu_flag的值为1的情况下,将ctu节点划分为四个32×32的节点(qt层级为1),这四个32×32的节点分别为节点a1、节点a2、节点a3以及节点a4。这四个32×32的节点中的每一个节点,又可以根据它对应的split_cu_flag,选择继续划分或者不划分。如果节点a1的split_cu_flag的值为1,则继续划分节点a1,将节点a1划分为四个16×16的节点(qt层级为2),这四个16×16的节点分别为节点b1、节点b2、节点b3以及节点b4。以此类推,直到所有节点都不再划分,这样,一个ctu就被划分成一组cu。在同一个qt结构中,每个cu的最小尺寸(即cu的最小大小)相同,且cu的最小尺寸在码流的序列参数集(sequenceparameterset,sps)中标识,例如,8×8的cu为最小cu。在上述递归划分过程中,如果某一节点的尺寸等于最小cu尺寸,则确定不再划分该节点,同时也不需要在码流中包含该节点的划分标志位。

将ctu划分成一组cu的划分方式对应于一个编码树,图3(a)即为一种编码树的示例。一个编码树可能只对应一种划分方式,例如四叉树;也可以对应多种划分方式,例如前述的qtbt结构和下文中介绍的qt-bt/tt结构。

第一级编码树、第二级编码树、第三级编码树、……、第n级编码树分别对应的是不同的划分方式的集合,n为大于3的正整数。这些不同的划分方式的集合可以是某一种树的类型,例如三叉树,二叉树,四叉树;也可以是同一种树的类型中的划分方式的集合,例如水平二分,竖直二分等;还可以是两者的结合。可以理解的是,一个编码树并不需要同时包含上述多个不同级别的编码树。例如,一个编码树可以只包括第一级编码树;或者,一个编码树可以包含第一级和第二级编码树;或者一个编码树可以包含第一级编码树,第二级编码树和第三级编码树。

在一个示例中,第一级编码树可以包括四叉树划分,第二级编码树可以包括二叉树划分和三叉树划分。

在另一个示例中,第一级编码树可以包括四叉树划分,第二级编码树可以包括二叉树划分、三叉树划分和四叉树划分。

在另一个示例中,第一级编码树可以包括四叉树划分和二叉树划分,第二级编码树包括三叉树划分。

在另一个示例中,第一级编码树可以包括四叉树划分,第二级编码树可以包括二叉树划分,第三级编码树可以包括三叉树划分。

在另一个示例中,第一级编码树可以包括水平二分,第二级编码树可以包括竖直二分和四叉树划分,第三级编码树可以包括竖直三分和水平三分。

第二级编码树还可能包含其它划分方式,本申请实施例对此不作具体限定。

编码端设备通常采用率失真优化(ratedistortionoptimization,rdo)技术来确定ctu采用哪一种编码树编码。具体的,对于每个节点,编码端设备计算该节点能够使用的每一种划分方式的率失真代价(ratedistortioncost,rdcost),比较计算出的rdcost,并将最小的rdcost所对应的划分方式确定为该节点的划分方式。

与qt结构相似,某一节点在bt结构中的层级称为bt层级,采用bt划分方式生成的子节点的bt层级为该子节点的父节点的bt层级加1。如果某一节点的bt层级等于最大bt层级,则确定不再划分该节点。一般的,bt结构中的最大bt层级在sps中标识。

在一个示例中,在qt划分方式的基础上引入了bt划分方式,其中,qt划分方式和bt划分方式级联,该划分方式称为qtbt划分方式。具体的,将ctu按照qt划分方式划分,qt的叶节点能够继续使用bt划分方式划分,即第一级编码树为qt,第二级编码树为bt。

如图3(a)所示,每个端点表示一个节点,实线表示节点使用qt划分方式划分,虚线表示节点使用bt划分方式划分,a到m为13个叶节点,每个叶节点对应1个cu。在bt结构中,10表示竖直二分,11表示水平二分。图3(b)示出了按照图3(a)示出的划分方式划分的ctu对应的图像区域。

qtbt划分方式中,每个cu具有qt层级和bt层级。对于qtbt划分方式中的某个cu而言,该cu的qt层级为该cu所属的qt叶节点的qt层级,该cu的bt层级为该cu所属bt叶节点的bt层级。若ctu未被划分,即只有一个cu,则该cu的qt层级为0,bt层级为0。

示例性的,图3(a)中,a和b的qt层级为1,bt层级为2;c、d以及e的qt层级为1,bt层级为1;f、k以及l的qt层级为2,bt层级为1;i和j的qt层级为2,bt层级为0;g和h的qt层级为2,bt层级为2;m的qt层级为1,bt层级为0。

qtbt划分方式中cu形状更加多样,能够更好地适应局部图像的内容。h.265标准中基于qt划分方式划分生成的所有cu都只能是正方形,即cu的宽(width)等于cu的高(height)。基于qt划分方式引入bt划分方式后,cu的宽和高可以不相同,例如:宽高比(其数值等于宽除以高)为2、4、8、16、1/2、1/4、1/8或者1/16。当然,在qtbt划分方式下,所有cu的宽和高都不能小于最小cu的边长(例如:最小cu可设置为4×4)。一般的,视频流的sps包含有最小cu的大小信息。

在上述qtbt的基础之上还可以包括一种qt-bt/tt划分方式,即第一级编码树中的节点使用qt划分方式,第二级编码树中的节点可以使用bt划分方式或tt划分方式。具体的,ctu为第一级编码树的根节点,将ctu采用qt划分方式划分,生成若干个第一级编码树的叶节点;再以第一级编码树的叶节点作为第二级编码树的根节点,采用bt划分方式(包括水平二分和竖直二分)或tt划分方式(包括水平三分和竖直三分)划分第二级编码树中的节点,以生成若干第二级编码树的叶节点。

但是,对于每个节点,编码端设备通常需要计算该节点能够使用的每一种划分方式的rdcost,比较计算出的rdcost,并将最小的rdcost所对应的划分方式确定为该节点的划分方式。在qt-bt/tt划分方式中,由于第二级编码树中的节点可使用bt划分方式,也可以使用tt划分方式,因此,对于第二级编码树中的每个节点,编码端设备均需要计算四种划分方式(水平二分、竖直二分、水平三分以及竖直三分)的rdcost,才能够确定出第二级编码树中的每个节点真正使用的划分方式,这样的话,编码复杂度较高。

针对上述问题,本申请实施例提供一种图像数据的解码方法,解码端设备在得到包含图像数据的码流后,通过解析该码流,得到第一级编码树的节点划分方式信息和第二级编码树的节点划分方式信息,如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,该解码端设备通过解析码流,得到第一节点的三个子节点的编码信息,第一节点的一个子节点对应一个编码单元cu,这样,该解码端设备可根据第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。本申请中第一级编码树的根节点对应一个ctu,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,第二级编码树的根节点为第一级编码树的一个叶节点。本申请实施例中的解码端设备只需确定第一节点对应的划分方式为三叉树划分,即可直接得到第一节点的三个子节点的编码信息,无需再依次对第一节点的三个子节点进行解码,加快了解码的速率,降低了解码的复杂度。

相应的,本申请实施例还提供一种图像数据的编码方法,编码端设备在确定与待编码图像块对应的ctu后,将该ctu按照第一级编码树对应的节点划分方式进行划分,得到第一级编码树的叶节点,其中,第一级编码树的根节点对应该ctu;编码端设备根据预设条件,确定第二级编码树中的第一节点能够使用的划分方式,第二级编码树的根节点为第一级编码树的一个叶节点,预设条件包括:若第一节点的父节点对应的划分方式为三叉树划分,确定不划分第一节点;如果第一节点能够使用的划分方式为不划分,该编码端设备对与第一节点对应的编码单元进行编码,得到对应编码单元的编码单元码流。本申请实施例中的预设条件限制了第二级编码树中的节点的划分,第二级编码树中的某一节点对应的划分方式为三叉树划分,则该节点的子节点将不再继续划分,这样,大幅度的减少了划分第二级编码树中节点的复杂度,降低了编码复杂度。

此外,由于第二级编码树中的某一节点对应的划分方式为三叉树划分,则该节点的子节点将不再继续划分,这样,编码端设备完成编码后发送的码流中可以不再包括该节点的子节点的划分信息,节省了传输比特,降低了码流的长度。

本申请实施例提供一种图像数据的编码、解码方法均适用于图像处理系统。图4是本申请实施例提供的图像处理系统的结构示意图。如图4所示,该图像处理系统包括编码端设备40和解码端设备41。其中,编码端设备40和解码端设备41可以独立设置,也可以集成在同一设备,本申请实施例对此不作具体限定。图1中以编码端设备40和解码端设备41独立设置为例。为了便于描述,下文均以编码端设备与解码端设备独立设置为例进行说明。

具体的,编码端设备40在捕获到某一影像后,对该影像中的每一图像对应的ctu根据第一级编码树的划分方式和第二级编码树的划分方式进行处理,其中,若第二级编码树中的某一节点对应的划分方式为三叉树划分,则该节点的子节点将不再划分;在划分完成后,编码端设备40获取ctu码流,并向解码端设备41发送该ctu码流;解码端设备41根据节点的划分信息解析其获取到的ctu码流,获取重建图像。

编码端设备40和解码端设备41均可以为配置有摄像头(如前置摄像头或后置摄像头)的各种设备,例如,该编码端设备和解码端设备为可穿戴电子设备(例如智能手表等)、拍立得,也可以是图5所示的手机,还可以是平板电脑,台式电脑,虚拟现实装置,笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、个人数字助理(personaldigitalassistant,pda)等,本申请实施例对编码端设备40和解码端设备41的具体形式不做特殊限制。

结合图4,如图5所示,本实施例中的编码端设备40和解码端设备41均可以为手机。下面以手机为例对实施例进行具体说明。

应该理解的是,图示手机仅仅是编码端设备40和解码端设备41的一个范例,并且手机可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图5中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。

如图5所示,手机包括:rf(radiofrequency,射频)电路50、存储器51、输入单元52、显示单元53、传感器54、音频电路55、无线保真(wirelessfidelity,wi-fi)模块56、处理器57、蓝牙模块58以及电源59等部件。本领域技术人员可以理解,图5中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图5对手机的各个构成部件进行具体的介绍:

rf电路50可用于收发信息或通话过程中,信号的接收和发送,可以将基站的下行信息接收后,给处理器57处理;另外,将涉及上行的数据发送给基站。通常,rf电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等器件。此外,rf电路50还可以通过无线通信与网络和其他移动设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统、通用分组无线服务、码分多址、宽带码分多址、长期演进、电子邮件、短消息服务等。

存储器51可用于存储软件程序及数据。处理器57通过运行存储在存储器51的软件程序及数据,从而执行手机的各种功能以及数据处理。存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本、视频等)等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。在以下实施例中,存储器51存储有使得手机能运行的操作系统,例如苹果公司所开发的操作系统,谷歌公司所开发的开源操作系统,微软公司所开发的操作系统等。

输入单元52(如触摸屏)可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的信号输入。具体的,输入单元52可包括触摸屏521和其他输入设备522。触摸屏521,也称为触摸面板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控屏521上或在触控屏521附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控屏521可包括触摸检测装置和触摸控制器两个部分(图5中未示出)。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器57,并能接收处理器57发来的指令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控屏521。

显示单元53(即显示屏)可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单的图形用户界面(graphicaluserinterface,gui)。显示单元53可包括设置在手机正面的显示面板531。可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板531。进一步的,触摸屏521可覆盖显示面板531,当触摸屏521检测到在其上或附近的触摸操作后,传送给处理器57以确定触摸事件的类型,随后处理器57根据触摸事件的类型在显示面板531上提供相应的视觉输出。虽然,在图5中,触摸屏521与显示面板531是作为两个独立的部件来实现手机的输入和输出功能,但是在某些实施例中,可以将触摸屏521与显示面板531集成而实现手机的输入和输出功能。

在另外的一些实施例中,上述触摸屏521还可以设置有压力感应传感器,这样用户在上述触控面板上进行触摸操作时,触控面板还能检测到该触摸操作的压力,进而手机能够更准确地检测该触摸操作。

手机还可以包括至少一种传感器54,比如光传感器、运动传感器以及其他传感器。具体的,光传感器可包括环境光传感器及接近传感器,环境光传感器可根据环境光线的明暗来调节显示面板531的亮度,接近光传感器设置在手机的正面,当在手机移动到耳边时,根据接近光传感器的检测,手机关闭显示面板531的电源,这样手机可以进一步节省电量。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏转化、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等。手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路55、扬声器551,麦克风552可提供用户与手机之间的音频接口。音频电路55可将接收到的音频数据转换后的电信号,传输到扬声器551,由扬声器551转换为声音信号输出;另一方面,麦克风552将收集的声音信号转换为电信号,由音频电路55接收后转换为音频数据,再将音频数据输出至rf电路50以发送给比如另一手机,或者将音频数据输出至存储器51以便进一步处理。

wi-fi属于短距离无线传输技术,手机可以通过wi-fi模块56帮助用户收发电子邮件、浏览网页和访问流媒体等,它为用户提供了无线的宽带互联网访问。

处理器57是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器51内的软件程序,以及调用存储在存储器51内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。在一些实施例中,处理器57可包括一个或多个处理单元;处理器57还可以集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以是独立设置的。

蓝牙模块58,用于通过蓝牙这种短距离通讯协议来与其他设备进行信息交互。例如,手机可以通过蓝牙模块58与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。

手机还包括给各个部件供电的电源59(比如电池)。电源可以通过电源管理系统与处理器57逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。

以下,将结合具体实施例详细阐述本申请实施例提供的一种图像数据的编码、解码方法。

图6为本申请实施例提供的图像数据的解码方法的流程示意图,该解码方法可以应用在图4所示的图像处理系统中。

如图6所示,该图像数据的解码方法包括:

s600、解码端设备得到包含图像数据的码流。

可选的,解码端设备得到的包含图像数据的码流包括序列参数集(sequenceparameterset,sps)、图像参数集(pictureparameterset,pps)、条带头(sliceheader)或条带片段头(slicesegmentheader)、以及ctu码流,ctu码流携带有图像数据。

s601、解码端设备解码其得到的码流,得到第一级编码树的节点划分方式信息。

第一级编码树的根节点对应一个ctu,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的。第一级编码树对应的节点划分方式包括四叉树划分。

解码端设备在得到码流后,解析该码流中的ctu码流,得到第一级编码树的节点划分信息。

可选的,解码端设备解析ctu码流,得到第一级编码树的节点划分信息的方法可以为:解码端设备将ctu作为第一级编码树的根节点,解析ctu码流,获取该ctu码流中语法元素所包括的用于指示如何将该ctu划分成至少一个cu的第一标识(如splitflag),即第一标识表示第一级编码树的节点划分方式信息。在一个示例中,如果某一splitflag的数值为0,则说明与该splitflag对应的节点为第一级编码树的叶节点;如果某一splitflag的数值为1,则继续获取与该splitflag对应的节点的四个子节点的splitflag,直到确定出第一级编码树的所有叶节点的信息。

需要说明的是,若某一节点对应的图像区域的宽等于第一阈值(例如第一阈值为8或16),则该节点为第一级编码树的叶节点,与该节点对应的splitflag的数值为0。

可选的,解码端设备解析ctu码流,得到第一级编码树的节点划分信息的方法还可以为:解码端设备将ctu作为第一级编码树的根节点,解析ctu码流,获取该ctu码流中语法元素所包括的用于指示是否划分第一级编码树的节点的第二标识(如nsflag);如果第二标识的数值为第一值(例如1),则说明与该第二标识对应的节点为第一级编码树的叶节点,同时也为第二级编码树叶节点;如果第二标识的数值为第二值(例如0),则获取语法元素所包括的第三标识(如qtsplitflag);如果第三标识的数值为第三值(例如0),则说明与该第三标识对应的节点为第一级编码树叶节点,但不是第二级编码树的叶节点;如果第三标识的数值为第四值(例如1),则继续获取与该第三标识对应的节点的四个子节点的第二标识,直到确定出第一级编码树的所有叶节点的信息。

需要说明的是,若某一节点对应的图像区域的宽等于第一阈值(例如第一阈值为8或16),则该节点为第一级编码树的叶节点,与该节点对应的第三标识的数值为第三值。另外,如果某一节点对应的图像区域的宽或高大于第二阈值、且与该节点对应的第二标识的数值为第二值,则第三标识的数值为第三值。如果某一节点对应的划分方式为qt划分,与该节点对应的第二标识的数值为第二值且与该节点对应的第三标识的数值为第三值。

s602、解码端设备解析其得到的码流,得到第二级编码树的节点划分方式信息。

其中,第二级编码树的根节点为第一级编码树的一个叶节点。第二级编码树对应的节点划分方式与第一级编码树对应的节点划分方式不相同,本实施例中第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。

解码端设备在得到第一级编码树的节点划分方式信息后,将第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的第一级编码树的叶节点作为第二级编码树的根节点,解析ctu码流,得到第二级编码树的节点的划分方式信息。

可选的,解码端设备解析ctu码流,得到第二级编码树的节点的划分方式信息的方法可以为:解码端设备解析ctu码流,获取用于指示如何划分第二级编码树中某一节点的第四标识(如stsplitmode),即第四标识表示第二级编码树的节点划分方式信息。

如果某一第四标识表示不划分(如stsplitmode=0),则说明与该第四标识对应的节点为第二级编码树的叶节点。

如果某一第四标识表示三叉树划分(如stsplitmode=3或4),则说明与该第四标识对应的节点存在三个子节点,且该三个子节点中的每个子节点均为第二级编码树叶节点。

如果某一第四标识表示二叉树划分(如stsplitmode=1或2),则说明与该第四标识对应的节点存在两个子节点,编码端设备继续获取与该第四标识对应的节点的两个子节点的第四标识,直到确定出第二级编码树的所有叶节点的信息。

从上面描述可知,对于qtbt划分方式中的某个cu而言,该cu的qt层级为该cu所属的qt叶节点的qt层级,该cu的bt层级为该cu所属bt叶节点的bt层级。也就是说,第二级编码树层级表示某一节点相对于该节点所在的第二级编码树的根节点的层级。第二级编码树的根节点的第二级编码树层级为0,若第二级编码树的某一节点进行划分,则该节点的子节点的第二级编码树层级为该节点的第二级编码树层级加1。

可选的,本实施例中第二级编码树对应的划分方式还可以包含除二叉树划分和三叉树划分以外的其它划分方式,本申请实施例对此不做具体限定。

示例性的,本实施例中第二级编码树对应的划分方式还包含四叉树划分;当某一节点的第二级编码树层级大于预设层级且与该节点对应的图像区域的高宽比(该节点对应的图像区域的高除以该节点对应的图像区域的宽)小于或等于第三阈值时,与该节点对应的划分方式还包括四叉树划分。在一个示例中,通过stsplitmode=5表示该节点对应的划分方式为四叉树划分。

可选的,解码端设备解析ctu码流,得到第二级编码树的节点的划分方式信息的方法还可以为:解码端设备确定第二级编码树的某一节点的第一信息满足一定条件,则说明该节点为第二级编码树的叶节点。这里,节点的第一信息是指与该节点对应的图像区域的宽、与该节点对应的图像区域的高以及该节点的第二级编码树层级中的至少一个。在这种情况下,ctu码流可以不携带与该节点对应的第四标识。

示例性的,若第二级编码树的某一节点符合下述任一条件,则说明该节点为第二级编码树的叶节点:

(1)、某一节点的第二级编码树层级等于预设的最大第二级编码树层级(例如预设的最大第二级编码树层级为3、4或2)。

(2)、某一节点对应的图像区域的高和宽等于预设的最小cu的高和宽。

(3)、某一节点对应的图像区域的高(或宽)大于预设的最大cu的高(或宽)。

(4)、某一节点对应的图像区域的高宽比值(或宽高比值)大于或者等于预设比值。

(5)、某一节点对应的图像区域包括的像素值小于或者等于预设像素值。

当然,上述条件(1)~(5)仅仅是确定某一节点为第二级编码树的叶节点的条件的示例,并不是对这一条件的限定。

可选的,编码端设备可从包含图像数据的码流中的sps、pps或条带头中获取到上述预设的最大第二级编码树层级、预设的最小cu的高(或宽)、预设的最大cu的高(或宽)、预设比值、预设像素值,当然,上述预设的最大第二级编码树层级、预设的最小cu的高(或宽)、预设的最大cu的高(或宽)、预设比值、预设像素值也可以是图像处理系统预设的。

从上述描述可知,本申请实施例中的第四标识用于指示如何划分第二级编码树中某一节点。可选的,第四标识可以包括用于指示是否继续划分该节点的节点划分标识、用于指示按照哪一方向划分该节点的划分方向标识以及用于指示按照哪一方式划分该节点的划分模式标识。

示例性的,节点划分标识为stsplitflag,如果stsplitflag的数值等于0,表示不划分与该stsplitflag对应的节点;如果stsplitflag的数值等于1,表示继续划分与该stsplitflag对应的节点。划分方向标识为stsplitdir,如果stsplitdir的数值等于0,表示按照水平方向划分与该stsplitdir对应的节点;如果stsplitdir的数值等于1,表示节按照竖直方向划分与该stsplitdir对应的节点。划分模式标识为stsplittype,如果stsplittype的数值等于0,表示与该stsplittype对应的节点所对应的划分方式为二叉树划分;如果stsplitdir的数值等于1,表示与该stsplittype对应的节点所对应的划分方式为三叉树划分。

可选的,本申请实施例中的第四标识也可以包括用于指示是否按照二叉树划分方式划分该第四标识对应的节点的二叉树划分标识、用于指示是否按照三叉树划分方式划分该第四标识对应的节点的三叉树划分标识以及划分方向标识(该划分方向标识与上一示例中的划分方向标识相同)。

示例性的,二叉树划分标识为btflag,如果btflag的数值等于0,表示第四标识对应的节点所对应的划分方式不是bt划分,如果btflag的数值等于1,表示第四标识对应的节点所对应的划分方式是bt划分。三叉树划分标识为ttflag,如果ttflag的数值等于0,表示第四标识对应的节点所对应的划分方式不是tt划分,如果ttflag的数值等于1,表示第四标识对应的节点所对应的划分方式是tt划分。

当然,本申请实施例中的第四标识也可以包括上述节点划分标识、上述划分方向标识以及上述划分模式标识的任意组合,本申请实施例对此不作具体限定。

容易理解的是,如果第二级编码树对应的划分方式还包含除二叉树划分和三叉树划分以外的其它划分方式,则上述第四标识可包括更多的标识,此处不再进行详细赘述。

可选的,本申请实施例中的解码端设备可以在执行完s601后,再执行s602,也可以在执行s601的过程中,首次获取到第一级编码树的一个叶节点的信息后,基于该第一级编码树的叶节点立即执行s602,直到获取到第一级编码树的最后一个叶节点。

s603、如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,解码端设备解析码流,得到第一节点的三个子节点的编码信息。

本申请实施例中,如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,则说明该第一节点的子节点为第二级编码树的叶节点。第一节点对应的划分方式为三叉树划分,因此,第一节点对应三个子节点。也就是说,如果第一节点对应的划分方式为三叉树划分,则说明该第一节点的三个子节点均为第二级编码树的叶节点。

进一步地,在“如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,则说明该第一节点的子节点为第二级编码树的叶节点”的基础上,解码端设备还可结合上述s602所述的用于说明节点为第二级编码树的叶节点的条件(1)~条件(5)确定第一节点的信息。

具体的,如果第一节点的第二级编码树层级小于预设的最大第二级编码树层级,且第一节点对应的图像区域的高(或宽)大于预设的最小cu的高(或宽),且第一节点对应的图像区域的高(或宽)小于或等于预设的最大cu的高(或宽),且第一节点的父节点对应的划分方式不是三叉树划分,则解码端设备从ctu码流中获取该第一节点对应的划分方式信息;否则,解码端设备确定该第一节点为第二级编码树的叶节点。

从上面描述可知,不再划分的节点对应一个cu。相应的,第一节点的每个子节点对应一个cu。

具体的,解码端设备解析码流中的编码单元语法结构体(例如h.265中的coding_unit()语法结构体,coding_unit()语法结构体的解释请参考下面描述),得到每个cu的编码信息,每个cu的编码信息均包括cu的预测模式、变换系数等信息。这里,解码端设备获取每个cu的编码信息意味着解码端设备得到第二级编码树的每个叶节点的编码信息。

可选的,本申请实施例中的解码端设备可以在执行s602的过程中,获取到第二级编码树的一个叶节点的信息后,解析码流,获取该叶节点的编码信息;在获取到该叶节点的编码信息后,继续获取下一个第二级编码树的叶节点以及获取下一个第二级编码树的叶节点的编码信息,依次类推,直到最后一个第二级第二级编码树的叶节点。

在一个示例中,本申请实施例中第二级编码树的语法表如表1所示。coding_second_tree()为第二级编码树的语法结构体,描述第二级编码树的某一个节点的信息。

表1中,x0和y0分别表示节点对应的图像区域的左上角相对于ctu对应的图像区域的左上角的水平坐标偏移和竖直坐标偏移;log2cuwidth和log2cuheight分别表示节点对应的图像区域的宽和高以2为底的对数值;stdepth表示节点的第二级编码树层级,qtdepth表示节点对应的第一级编码树叶节点在第一级编码树上的层级;parentmode表示节点的父节点对应的划分方式。“x>>y”表示将x右移y位;“x<<y”表示将x左移y位;ae(v)表示使用cabac解析语法元素。

stsplitmode的取值范围为0、1、2、3和4。当stsplitmode的数值为0时,节点为第二级编码树的叶节点,且该节点对应于一个cu,此时按照cu语法结构体coding_unit()解析编码单元信息。本申请实施例对编码单元信息的语法元素组织方式不做限定。当stsplitmode的数值为1至4时,分别使用水平二分、竖直二分、水平三分、竖直三分将节点划分为2个或3个子节点,对每个子节点,确定每个子节点对应的图像区域的宽、高、坐标、第二级编码树层级,并依次按照coding_second_tree()解析这些子节点。

表1中,当满足“节点的第二级编码树层级(用stdepth表示)小于预设的最大第二级编码树层级maxstdepth,且节点对应的图像区域的宽和高均小于等于阈值maxstsize,且节点对应的图像区域的宽或高大于阈值mincusize,且节点的父节点对应的划分方式不是三叉树划分”时,解码端设备从码流中获取第二级编码树的节点划分方式信息stsplitmode;否则,stsplitmode不出现在码流中,这样,stsplitmode的数值默认设置为0。

可选的,coding_second_tree()的输入变量中还可包括节点的限制划分方式,节点的限制划分方式是指不能按照该划分方式划分节点。可以理解的是,解码端设备解析到的stsplitmode不能为上述限制划分方式所指示的划分方式。

表1

在另一个示例中,本申请实施例中第二级编码树的语法表如表2所示。表2中,如果节点对应的划分方式为三叉树划分,即stsplitmode为3或4,则该节点的三个子节点均为第二级编码树的叶节点,编码端设备可依次得到这三个子节点的编码信息。

s604、解码端设备根据第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。

对编码单元进行解码重建的过程包括预测、反量化、反变换、环路滤波等处理。具体的,对于每个编码单元进行解码重建的过程包括:

(1)、根据该cu的编码信息所包括的预测模式,选用帧内预测或帧间预测,得到该cu的预测像素。

(2)、如果该cu存在变换系数,则根据量化参数、变换模式,对该cu的变换系数进行反量化和反变换处理,得到该cu的重建残差。如果该cu不存在变换系数,则该cu的重建残差为0,即该cu中各像素的重建残差值均为0。

(3)、将该cu的预测像素和该cu的重建残差相加后进行环路滤波处理,得到cu的重建图像块。

编码端设备按照上述方法对每个编码单元进行解码重建,获取到每个cu的重建图像块。在获取到每个cu的重建图像块后,编码端设备根据获取到的所有重建图像块得到最终的重建图像,即得到对应图像数据的图像。

本申请实施例中的解码端设备只需确定某一节点对应的划分方式为三叉树划分,即可直接得到该节点的子节点的编码信息,无需再依次对该节点的所有子节点进行解码,加快了解码的速率,降低了解码的复杂度。

在图6所示的实施例中,若某一节点的父节点对应的划分方式为三叉树划分,则该节点不再继续划分。这一条件限制了节点的划分,在这一条件的作用下,本申请实施例提供的解码方法加快了解码的速率,降低了解码的复杂度。这一条件可以为图像处理系统预先设置的,也可以是根据实际需求确定的,本申请实施例对此不作具体限定。

进一步地,在图6所示的实施例的基础上,本申请实施例中的解码端设备还可以在得到包含图像数据的码流后,先判断是否限制三叉树得到的节点继续进行划分,然后再根据判断结果解析图像数据。

具体的,结合图6,如图7所示,本申请实施例提供的解码方法包括:

s700、解码端设备得到包含图像数据的码流。

s700可以参考上述s600的描述,此处不再进行详细赘述。

表2

s701、解码端设备解析其得到的码流,得到三叉树叶节点模式标识。

该三叉树叶节点模式标识用于指示是否限制三叉树划分得到的节点继续进行划分。

示例性的,三叉树叶节点模式标识表示为tt_leaf_mode_enabled_flag,tt_leaf_mode_enabled_flag的数值为第一值(例如1),表示与tt_leaf_mode_enabled_flag关联的ctu中三叉树划分后的节点为编码树叶节点,即若某一节点对应的划分方式为三叉树划分,则该节点的子节点为编码树的叶节点;tt_leaf_mode_enabled_flag为第二值(例如0),表示与tt_leaf_mode_enabled_flag关联的ctu中三叉树划分后的节点还可继续划分,即若某一节点对应的划分方式为三叉树划分,则该节点的子节点还可以对应除不划分以外的其他划分方式。

可选的,包含图像数据的码流中的sps、pps以及条带头中的至少一项包括该三叉树叶节点模式标识。

具体的,如果sps和pps均包括三叉树叶节点模式标识,且sps包括的三叉树叶节点模式标识的数值与pps包括的三叉树叶节点模式标识的数值不同,则pps包括的三叉树叶节点模式标识生效,而sps包括的三叉树叶节点模式标识无效。如果sps和条带头均包括三叉树叶节点模式标识,且sps包括的三叉树叶节点模式标识的数值与条带头包括的三叉树叶节点模式标识的数值不同,则条带头包括的三叉树叶节点模式标识生效,而sps包括的三叉树叶节点模式标识无效。如果pps和条带头均包括三叉树叶节点模式标识,且pps包括的三叉树叶节点模式标识的数值与条带头包括的三叉树叶节点模式标识的数值不同,则条带头包括的三叉树叶节点模式标识生效,而pps包括的三叉树叶节点模式标识无效。也就是说,如果三叉树叶节点模式标识在多层语法结构体中同时出现且不同语法结构体中三叉树叶节点模式标识的数值不同,则最下层的语法结构体中的三叉树叶节点模式标识生效,而上层语法结构体中的三叉树叶节点模式标识无效。

具体的,解码端设备在得到包含图像数据的码流后,解析该码流,从该码流中获取生效的三叉树叶节点模式标识。

示例性的,若sps中包含tt_leaf_mode_enabled_flag,则解码端设备在解码ctu的同时,从sps中获取与该ctu对应的tt_leaf_mode_enabled_flag。

s702、解码端设备解码其得到的码流,得到第一级编码树的节点划分方式信息。

s702可以参考上述s601的描述,此处不再进行详细赘述。

s703、解码端设备解析其得到的码流,得到第二级编码树的节点划分方式信息。

s703可以参考送上述s602的描述,此处不再进行详细赘述。

s704、如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,且三叉树叶节点模式标识指示限制三叉树划分得到的节点继续进行划分,解码端设备解析码流,得到第一节点的三个子节点的编码信息。

s704与上述s603类似,不同的是,相比于上述s603,s704中的解码端设备不仅需要确定第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为三叉树划分,还需要确定三叉树叶节点模式标识指示限制三叉树划分得到的节点继续进行划分。

示例性的,表3为本实施例中第二级编码树的语法表。相比表1,表3中stsplitmode的解析条件修改为“节点的第二级编码树层级stdepth小于预设的最大第二级编码树层级maxstdepth,且节点对应的图像区域的宽或高大于阈值mincusize,且节点的父节点对应的划分方式不是三叉树划分或tt_leaf_mode_enabled_flag非0”。

表3

s705、解码端设备根据第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。

s705可以参考上述s604,此处不再进行详细赘述。

本申请实施例增加了限制节点划分的条件:若某一节点的父节点对应的划分方式为三叉树划分,则该节点不再继续划分。解码端设备只需确定某一节点对应的划分方式为三叉树划分,即可直接得到该节点的子节点的编码信息,无需再依次对该节点的所有子节点进行解码,加快了解码的速率,降低了解码的复杂度。此外,解码端设备可根据三叉树叶节点模式标识确定节点划分的限制情况,从而自适应地获取每一级编码树的节点划分信息。

在图6和图7示出的实施例中,第一级编码树对应的划分方式包括四叉树划分,第二级编码树对应的划分方式包括二叉树划分和三叉树划分。在实际应用中,第二级编码树对应的划分方式可仅包括二叉树划分,这样便会引出第三级编码树,该第三级编码树对应的划分方式包括三叉树划分。

如图8所示,在这种场景中,本申请实施例提供的图像数据的解码方法包括:

s800、解码端设备得到包含图像数据的码流。

s800可以参考上述s600的描述,此处不再进行详细赘述。

s801、解码端设备解码其得到的码流,得到第一级编码树的节点划分方式信息。

s801可以参考上述s601的描述,此处不再进行详细赘述。

s802、解码端设备解析其得到的码流,得到第二级编码树的节点划分方式信息。

其中,第二级编码树的根节点为第一级编码树的一个叶节点。本实施例中第二级编码树对应的节点划分方式包括二叉树划分。

与上述s602类似,解码端设备解析ctu码流,获取用于指示如何划分第二级编码树中某一节点的第四标识(如stsplitmode),即第四标识表示第二级编码树的节点划分方式信息。

由于本实施例中第二级编码树对应的节点划分方式包括二叉树划分,因此,本实施例中的第四标识可以用于指示不划分某一节点,也可以用于指示与某一节点对应的划分方式为水平二分或竖直二分。

示例性的,第四标识表示为stsplitmode,stsplitmode的数值为0,说明不再继续划分与该stsplitmode对应的节点;stsplitmode的数值1或2,分别表示与stsplitmode对应的节点所对应的划分方式为水平二分或竖直二分。

结合该示例,表4示出了本实施例中第二级编码树的语法表。当解码端设备解析到stsplitmode的数值为0时,则开始解析第三级编码树语法结构体;当解析到stsplitmode的数值为1或2时,分别使用水平二分或竖直二分将节点划分为2个子节点,再对各子节点依次按照coding_second_tree()语法结构进行解析。

表4

可选的,本实施例中的第四标识可以包括用于指示是否继续按照二叉树划分方式划分的节点划分标识(如stsplitflag)和用于表示二叉树划分的方向的划分方向标识(如stsplitdir)。

示例性的,节点划分标识为stsplitflag,如果stsplitflag的数值等于0,表示不划分与该stsplitflag对应的节点;如果stsplitflag的数值等于1,表示继续按照二叉树划分方式划分与该stsplitflag对应的节点。划分方向标识为stsplitdir,如果stsplitdir的数值等于0,表示按照水平二分划分方式划分与该stsplitdir对应的节点;如果stsplitdir的数值等于1,表示节按照竖直二分划分方式划分与该stsplitdir对应的节点。

s803、如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为不继续按照第二级编码树的划分方式进行划分,解码端设备解析码流,得到第三级编码树的节点划分方式信息。

如果第二级编码树中的第一节点对应的划分方式不继续按照第二级编码树的划分方式进行划分,则说明该第一节点为第二级编码树的叶节点。第一节点有可能按照第三级编码树的划分方式划分,因此,第一节点为第三级编码树的根节点。本实施例中第三级编码树对应的划分方式包括三叉树划分。

第一节点为第三级编码树的根节点,且第三级编码树对应的划分方式为三叉树划分,因此,第一节点的三个子节点均为第三级编码树的叶节点。

具体的,如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为不继续按照第二级编码树的划分方式进行划分,解码端设备解析ctu码流,获取用于指示如何划分第三级编码树中某一节点的第五标识(如ttsplitmode),即第五标识表示第三级编码树的节点划分方式信息。

由于本实施例中第三级编码树对应的节点划分方式包括三叉树划分,因此,本实施例中的第四标识可以用于指示不划分某一节点,也可以用于指示与某一节点对应的划分方式为水平三分或竖直三分。

示例性的,第五标识表示为ttsplitmode,ttsplitmode的数值为0,说明不再继续划分与该ttsplitmode对应的节点;ttsplitmode的数值1或2,分别表示与ttsplitmode对应的节点所对应的划分方式为水平三分或竖直三分。

可选的,本实施例中的第五标识可以包括用于指示是否按照三叉树划分方式划分的节点划分标识(如ttsplitflag)和用于表示三叉树划分的方向的划分方向标识(如ttsplitdir)。

示例性的,节点划分标识为ttsplitflag,如果ttsplitflag的数值等于0,表示不划分与该ttsplitflag对应的节点;如果ttsplitflag的数值等于1,表示继续按照三叉树划分方式划分与该ttsplitflag对应的节点。划分方向标识为ttsplitdir,如果ttsplitdir的数值等于0,表示按照水平三分划分方式划分与该ttsplitdir对应的节点;如果ttsplitdir的数值等于1,表示节按照竖直三分划分方式划分与该ttsplitdir对应的节点。

s804、如果第三级编码树的节点划分方式信息指示第一节点对应的划分方式为三叉树划分,解码端设备解析码流,得到第一节点的三个子节点的编码信息。

其中,第一节点的一个子节点对应一个cu。

s804可以参考上述s603,不同的是,s804中解码端设备获取的是第三级编码树的叶节点的编码信息。

示例性的,表5示出本实施例中第三级编码树的语法表。表5中,当满足“节点的第二级编码树层级stdepth表示小于预设的最大第二级编码树层级maxstdepth,节点对应的图像区域的宽和高均小于等于阈值maxstsize,且节点对应的图像区域的宽或高大于阈值mincusize的2倍”,则解码端设备解析ttsplitmode;否则,ttsplitmode的数值为0。如果ttsplitmode的数值为0,则与该ttsplitmode对应的节点为第三级编码树的叶节点,解码端设备解析cu语法结构体coding_unit()获取cu信息;如果ttsplitmode的数值为1或2,则解码端设备对与该ttsplitmode对应的节点的三个子节点依次解析coding_unit()获取cu信息。

s805、解码端设备根据第一节点的三个子节点的解码信息,对编码单元进行解码重建,得到对应图像数据的图像。

s805可以参考上述s604,此处不再进行详细赘述。

与上述图6、图7所示的实施例相比,本实施例中的第二级编码树对应的划分方式仅包括二叉树划分,第三级编码树对应的划分方式包括三叉树划分,第三级编码树的根节点的三个子节点均为第三级编码树的叶节点,解码端设备可更加快速的获取到第二级编码树的节点划分方式信息和第三级编码树的节点划分方式信息,进一步地提高了解码速率。

表5

此外,本申请实施例还提供一种图像数据的编码方法,该编码方法可以应用在图4所示的图像处理系统中。

如图9所示,本申请实施例提供的图像数据的编码方法包括:

s900、编码端设备确定与待编码图像块对应的ctu。

从前面描述可知,一幅图像由多个ctu构成,一个ctu通常对应于一个方形图像区域。编码端设备在获取到某一图像后,对该图像的每个ctu进行编码处理。

编码端设备对每个ctu的编码处理过程均相同,因此,本申请实施例以编码端设备对其中一个ctu的编码处理为例进行说明。

s901、编码端设备将ctu按照第一级编码树对应的节点划分方式进行划分,得到第一级编码树的叶节点。

第一级编码树的根节点对应ctu,第一级编码树对应的节点划分方式为四叉树划分。

具体的,编码端设备将ctu确定为第一级编码树的根节点,使用qt划分方式,将该ctu递归划分为至少一个叶节点。

编码端设备在获取到第一级编码树的至少一个叶节点后,将第一级编码树的每个叶节点确定为第二级编码树的根节点,并依次对第二级编码树的每个根节点执行下述步骤,直到获取到第二级编码树的所有叶节点的信息。本申请实施例以编码端设备对第二级编码树中的第一节点的处理为例进行说明。

s902、编码端设备根据预设条件,确定第二级编码树中的第一节点能够使用的划分方式,该预设条件包括:若第一节点的父节点对应的划分方式为三叉树划分,确定不划分第一节点。

一般的,在第一节点的划分无任何限制条件的情况下,第一节点能够使用的划分方式包括不划分、水平二分、水平三分、竖直二分、竖直三分和四叉树划分方式。这样的话,编码端设备需要依次计算这六种划分方式的rdcost,导致编码复杂度较高。

本申请实施例提出了限制第一节点能够使用的划分方式的预设条件,该预设条件包括:若第一节点的父节点使用三叉树划分方式划分,则确定不划分第一节点。这样,编码端设备确定第一节点的父节点使用tt划分方式划分后,不再划分第一节点,无需再计算针对第一节点的六种划分方式的rdcost,降低了编码复杂度。

此外,预设条件还包括:当第一节点对应的图像区域的宽、第一节点对应的图像区域的高、第一节点的第二级编码树层级等参数满足某一条件时,确定不允许第一节点使用第一划分方式,该第一划分方式为水平二分、水平三分、竖直二分、竖直三分和四叉树划分方式中的至少一种。

示例性的,当第一节点对应的图像区域的宽度等于预设的最小cu的宽度时,不允许第一节点使用竖直二分和竖直三分这两种划分方式;当第一节点对应的图像区域的高度等于预设的最小cu的高度的2倍时,不允许第一节点使用水平三分划分方式;当第一节点为第二级编码树的节点时,不允许第一节点使用四叉树划分方式;当第一节点的第二级编码树层级等于预设的最大第二级编码树层级(用maxstdepth表示)时,确定不划分第一节点。

当然,上述示例仅仅是对本申请实施例中的预设条件的举例,本申请实施例中的预设条件还可以包括其他类型的划分方式的限制。

s903、如果第一节点能够使用的划分方式为不划分,编码端设备对与第一节点对应的cu进行编码,得到对应cu的编码单元码流。

如果第一节点能够使用的划分方式为不划分,则说明第一节点为第二级编码树的叶节点,该第一节点对应一个cu。编码端设备对与该第一节点对应的cu进行编码,得到与该cu的编码单元码流。

具体的,cu编码包括预测(prediction)、变换(transform)、量化(quantization)、熵编码(entropycoding)等环节。对于某一cu而言,编码端设备对该cu进行编码,得到该cu的cu码流的过程主要包括:

(1)、编码端设备根据预测模式,选用帧内预测或帧间预测,得到cu的预测像素。

(2)、编码端设备将cu的原始像素和cu的预测像素之间的残差进行变化和量化,得到变换系数,并对得到的变换系数进行反量化、反变换处理,从而得到该cu的重建残差。

(3)、编码端设备将该cu的预测像素和该cu的重建残差相加后进行环路滤波处理,得到该cu的重建像素。

(4)、编码端设备对该cu的预测模式、变换系数等信息进行熵编码,得到cu码流。

编码端设备对cu进行编码,得到该cu的cu码流的详细过程可以参考现有的生成cu码流的方法,此处不再进行详细赘述。

s904、如果第一节点能够使用的划分方式未包括不划分,编码端设备计算第一节点能够使用的划分方式中的每种划分方式的rdcost。

对于第一节点能够使用的某一种划分方式,编码端设备使用该划分方式划分第一节点,并获取该划分方式划分第一节点后的所有cu,编码端设备计算每个cu的rdcost,并将所有cu的rdcost之和确定为该划分方式的rdcost。

可选的,对于任一cu而言,该cu的rdcost等于该cu包含的像素的重建失真的平方误差总和(sumofsquarederrors,sse)与该cu对应码流的比特数估算值的加权和。

s905、编码端设备将最小的率失真代价对应的划分方式确定为第一节点对应的目标划分方式。

s906、编码端设备使用第一节点对应的目标划分方式划分第一节点。

编码端设备使用第一节点对应的目标划分方式划分第一节点后,再对第一节点的每个子节点依次执行s902-s906,直到获取到第二级编码树中的所有叶节点。

第二级编码树的每个叶节点对应一个cu,编码端设备在获取到第二级编码树的所有叶节点后,可获取到第二级编码树每个叶节点对应的cu。从s903可知,编码端设备对一个cu编码可得到该cu对应的cu码流。因此,编码端设备可得到至少一个cu码流。这样,编码端设备根据至少一个cu码流、第一级编码树对应的节点划分方式信息以及第二级编码树对应的节点划分方式信息,可得到ctu码流,进而生成包括图像数据的码流。

本申请实施例中的预设条件限制了第二级编码树中的节点的划分,第二级编码树中的某一节点对应的划分方式为三叉树划分,则该节点的子节点将不再继续划分,这样,大幅度的减少了划分第二级编码树中节点的复杂度,降低了编码复杂度。

本申请实施例提供一种解码端设备,该解码端设备用于执行以上图像数据的解码方法中的解码端设备所执行的步骤。本申请实施例提供的解码端设备可以包括相应步骤所对应的模块。

本申请实施例可以根据上述方法示例对解码端设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图10示出上述实施例中所涉及的终端设备的一种可能的结构示意图。如图10所示,解码端设备包括获取模块1000、解析模块1001和解码重构模块1010。获取模块1000用于支持该解码端设备执行上述实施例中的s600、s700、和/或s800等,和/或用于本文所描述的技术的其它过程;解析模块1001用于支持该解码端设备执行上述实施例中的s601、s602、s603、s701、s702、s703、s704、s801、s802、s803、和/或s804等,和/或用于本文所描述的技术的其它过程;解码重构模块1010用于支持该解码端设备执行上述实施例中的s604、s705、和/或s805等,和/或用于本文所描述的技术的其它过程。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。当然,本申请实施例提供的解码端设备包括但不限于上述模块,例如解码端设备还可以包括存储模块1011。存储模块1011可以用于存储该解码端设备的程序代码和数据。

在采用集成的单元的情况下,本申请实施例中的解析模块1001和解码重构模块1011可以是图5中的处理器57,获取模块1000可以是图5中的rf电路50和与该rf电路50连接的天线,存储模块1011可以是图5中的存储器51。

当解码端设备运行时,该解码端设备执行如图6-图8中任一附图所示的实施例的图像数据的解码方法。具体的图像数据的解码方法可参见上述如图6-图8中任一附图所示的实施例中的相关描述,此处不再赘述。

本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括一个或多个程序代码,该一个或多个程序包括指令,当解码端设备中的处理器在执行该程序代码时,该解码端设备执行如图6-图8中任一附图所示的图像数据的解码方法。

在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;解码端设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得解码端设备实施执行图6-图8中任一附图所示的图像数据的解码方法中的解码端设备的步骤。

本申请实施例提供一种编码端设备,该编码端设备用于执行以上图像数据的解码方法中的编码端设备所执行的步骤。本申请实施例提供的编码端设备可以包括相应步骤所对应的模块。

本申请实施例可以根据上述方法示例对编码端设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图11示出上述实施例中所涉及的终端设备的一种可能的结构示意图。如图11所示,编码端设备包括确定模块1100、划分模块1101、编码模块1110和计算模块1111。确定模块1100用于支持该编码端设备执行上述实施例中的s900、s902、和/或s905等,和/或用于本文所描述的技术的其它过程;划分模块1101用于支持该编码端设备执行上述实施例中的s901、和/或s906等,和/或用于本文所描述的技术的其它过程;编码模块1110用于支持该编码端设备执行上述实施例中的s903,和/或用于本文所描述的技术的其它过程;计算模块1111用于支持该编码端设备执行上述实施例中的s904,和/或用于本文所描述的技术的其它过程。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。当然,本申请实施例提供的编码端设备包括但不限于上述模块,例如编码端设备还可以包括存储模块1102、发送模块1103和接收模块1104。存储模块1102可以用于存储该编码端设备的程序代码和数据。发送模块1103和接收模块1104用于与其他设备通信。

在采用集成的单元的情况下,本申请实施例中的确定模块1100、划分模块1101、编码模块1110和计算模块1111可以是图5中的处理器57,发送模块1103和接收模块1104可以是图5中的rf电路50和与该rf电路50连接的天线,存储模块1102可以是图5中的存储器51。

当编码端设备运行时,该编码端设备执行如图9所示的实施例的图像数据的解码方法。具体的图像数据的解码方法可参见上述如图9所示的实施例中的相关描述,此处不再赘述。

本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括一个或多个程序代码,该一个或多个程序包括指令,当编码端设备中的处理器在执行该程序代码时,该编码端设备执行如图9所示的图像数据的解码方法。

在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;编码端设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得编码端设备实施执行图9所示的图像数据的解码方法中的编码端设备的步骤。

在上述实施例中,可以全部或部分的通过软件,硬件,固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式出现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,dvd)或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

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

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

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

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

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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