CN112822491B - 一种图像数据的编码、解码方法及装置 - Google Patents
一种图像数据的编码、解码方法及装置 Download PDFInfo
- Publication number
- CN112822491B CN112822491B CN202011327920.6A CN202011327920A CN112822491B CN 112822491 B CN112822491 B CN 112822491B CN 202011327920 A CN202011327920 A CN 202011327920A CN 112822491 B CN112822491 B CN 112822491B
- Authority
- CN
- China
- Prior art keywords
- node
- division
- sub
- division mode
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 124
- 238000005192 partition Methods 0.000 claims description 217
- 238000000638 solvent extraction Methods 0.000 claims description 54
- 238000004458 analytical method Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 abstract description 22
- 230000006870 function Effects 0.000 description 26
- 230000008569 process Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000009466 transformation Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000013139 quantization Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000010187 selection method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
本申请实施例公开了一种图像数据的编码、解码方法及装置,涉及图像处理领域,解决了编码复杂度较高的问题。解码方法包括:得到包含图像数据的码流;解析码流,得到第一级编码树的节点划分方式信息和第二级编码树的节点划分方式信息,第二级编码树的节点划分方式信息指示第二级编码树中第一节点对应的划分方式,第一节点对应的划分方式为根据第一预设划分条件确定的第一节点对应的候选划分方式集合中的一种,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点;如果第一节点对应的划分方式为不继续划分,解析码流,得到第一节点的编码信息;根据第一节点的编码信息,对第一节点对应的编码单元进行解码重建,得到对应图像数据的图像。
Description
本申请是分案申请,原申请的申请号是201710509138.8,原申请日是2017年06月28日,原申请的全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及图像处理领域,尤其涉及一种图像数据的编码、解码方法及装置。
背景技术
视频编解码标准H.265将一帧图像分割成互不重叠的编码树单元(Coding TreeUnit,CTU),并将每个CTU作为四叉树(Quad-Tree,QT)的根节点,按照QT结构将每个CTU递归划分为若干个叶节点。QT结构中的每个节点对应一个图像区域。如果某一节点不再划分,则该节点称为叶节点,它对应的图像区域形成一个编码单元(Coding Unit,CU)。因此,可以认为H.265是一种将CTU划分为一组CU的过程。将CTU划分成一组CU的划分方式对应于一个编码树(coding tree)。
未来视频编码联合探索组(Joint Exploration team on Future Video Coding,JVET)参考软件联合探索模型(Joint Exploration Model,JEM)提出了QTBT划分方式,即第一级编码树中的节点采用QT划分方式,第二级编码树中的节点采用二叉树(Binary Tree,BT)划分方式(BT划分方式包括“水平二分”和“竖直二分”)。具体的,将CTU先按照QT划分方式划分,以获取若干个QT叶节点;QT的叶节点可以按照BT划分方式划分。QTBT划分方式中CU形状更加多样,能够更好地适应局部图像的内容。
目但是,对于每个节点,编码端设备通常需要计算该节点能够使用的每一种划分方式的率失真代价(Rate Distortion cost,RD cost),比较计算出的RD cost,并将最小的RD cost所对应的划分方式确定为该节点的划分方式。因此,对于每个节点,编码端设备均需要计算多种划分方式的RD cost,这样的话,编码复杂度较高。
发明内容
本申请实施例提供一种图像数据的编码、解码方法及装置,能够解决目前编码复杂度较高的问题。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,提供一种图像数据的解码方法,解码端设备在得到包含图像数据的码流后,通过解析该码流,得到第一级编码树的节点划分方式信息和第二级编码树的节点划分方式信息,其中,第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式,第一节点对应的划分方式为第一节点对应的候选划分方式集合中的一种,第一节点对应的候选方式集合是根据第一预设划分条件确定的,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分的至少一种,如果第一节点对应的划分方式为不继续划分,该解码端设备通过解析码流,得到第一节点的编码信息,第一节点对应一个编码单元CU,这样,该解码端设备可根据第一节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。本申请中第一级编码树的根节点对应一个CTU,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,第二级编码树的根节点为第一级编码树的一个叶节点。
本申请实施例中第二级编码树的第一节点对应的划分方式是根据第一预设划分条件确定出的其中一个,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,且该目标划分方式包括水平二分、水平三分、竖直二分和竖直三分的至少一种,在第一预设划分条件的作用下,第一节点对应的划分方式的数量减少,有效地降低了解码的复杂度。
可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式与第二级编码树对应的节点划分方式不相同,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
可选的,在本申请的另一种可能的实现方式中,上述第一预设划分条件包括第一预设划分子条件、第二预设划分子条件、第三预设划分子条件、第四预设划分子条件、第五预设划分子条件、第六预设划分子条件、第七预设划分子条件、第八预设划分子条件以及第九预设划分子条件中的至少一种。其中,第一预设划分子条件为如果第一节点对应的图像区域的宽高比大于或等于第一预设阈值,第一节点对应的候选划分方式集合不包括水平二分和水平三分,第一节点对应的图像区域的宽高比为第一节点对应的图像区域的宽与第一节点对应的图像区域的高的比值。第二预设划分子条件为如果第一节点对应的图像区域的高宽比大于或等于第二预设阈值,第一节点对应的候选划分方式集合不包括竖直二分和竖直三分,第一节点对应的图像区域的高宽比为第一节点对应的图像区域的高与第一节点对应的图像区域的宽的比值。第三预设划分子条件为如果第一节点对应的图像区域的面积与第一节点归属的第一级编码树的叶节点对应的图像区域的面积的比值小于或等于第三预设阈值,则第一节点对应的候选划分方式集合不包括水平二分、水平三分、竖直二分和竖直三分。第四预设划分子条件为如果第一节点对应的划分方式包括第一划分方式,第一节点的第一子节点的解码顺序晚于第一节点的第二子节点,且第二子节点对应的划分方式为第一划分方式,则第一子节点对应的候选划分方式集合不包括第一划分方式,第一划分方式为水平二分或竖直二分。第五预设划分子条件为如果第一节点对应的划分方式包括第二划分方式,第一节点的第一子节点对应的图像区域的面积为第一节点的三个子节点对应的图像区域的面积中最小的,第一子节点对应的候选划分方式集合不包括第二划分方式,第二划分方式为水平三分或竖直三分。第六预设划分子条件为如果第一节点对应的划分方式包括第二划分方式,第一节点的第一子节点对应的图像区域的面积为第一节点的三个子节点对应的图像区域的面积中最大的,第一子节点对应的候选划分方式集合不包括第二划分方式。第七预设划分子条件为如果第一节点对应的图像区域的宽与预设的最小CU的边长比值小于或等于第三预设阈值,则第一节点对应的候选划分方式集合不包括竖直三分;如果第一节点对应的图像区域的高与预设的最小CU的边长比值小于或等于第三预设阈值,则第一节点对应的候选划分方式集合不包括水平三分。第八预设划分子条件为如果第一节点对应的图像区域的面积小于或者等于第四预设阈值,第一节点对应的候选划分方式集合不包括水平二分、水平三分、竖直二分和竖直三分。第九预设划分子条件为如果第一节点对应的划分方式为第二划分方式,第一节点的第一子节点对应的图像区域的面积为第一节点的三个子节点对应的图像区域的面积中最大的,第一子节点对应的候选划分方式集合不包括第一划分方式,第一划分方式与第二划分方式的划分方向相同。
可选的,在本申请的另一种可能的实现方式中,上述第二级编码树的节点划分方式信息包括第一信息、第二信息以及第三信息,第一信息用于表示是否继续划分第一节点,第二信息用于表示划分第一节点的方向,第三信息用于表示划分第一节点的模式。在这种场景中,上述“解析码流,得到第二级编码树的节点划分方式信息”的方法为:解析码流,根据第一预设划分条件,确定第一节点对应的候选划分方式集合;根据第一节点对应的候选划分方式集合,解析码流,确定第一信息、第二信息以及第三信息。
解码端设备根据第一节点对应的候选划分方式集合,获取上述第一信息、第二信息以及第三信息的解析方法,第一信息、第二信息以及第三信息的值可以从码流中解析得到,也可以为系统预设的。
可选的,在本申请的另一种可能的实现方式中,“根据第一节点对应的候选划分方式集合,解析码流,确定第一信息、第二信息以及第三信息”的方法具体为:先确定第一数值,该第一数值为第一节点对应的候选划分方式集合包括的划分方式的数量;再根据第一数值,解析码流,确定第一信息、第二信息以及第三信息。
第二级编码树中节点对应的候选方式集合最多可包括十五种划分方式,对于这十五种划分方式中的若干种划分方式而言,获取第一信息、第二信息以及第三信息的方法相同或相近。因此,解码端设备可以根据第一节点对应的候选方式集合所包括的划分方式的数量(即第一数值)确定第一信息、第二信息以及第三信息,这样,解码端设备可更快的确定出第二级编码树的节点划分方式信息。
可选的,在本申请的另一种可能的实现方式中,第二级编码树对应的节点划分方式还包括四叉树划分。这样的话,上述“解析码流,得到第二级编码树的节点划分方式信息”的方法为:解析码流,得到第二级编码树的节点划分方式信息,其中,第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式,第一节点对应的划分方式为第一节点对应的候选划分方式集合中的一种,第一节点对应的候选方式集合是根据第一预设划分条件和第二预设划分条件确定的,第二预设划分条件用于指示是否限制按照四叉树划分进行划分第一节点。
可选的,在本申请的另一种可能的实现方式中,上述第二预设划分条件包括第十预设划分子条件和第十一预设划分子条件中的至少一种。其中,第十预设划分子条件为如果第一节点的第二级编码树层级小于预设的最大第二级编码树层级,第一节点对应的候选划分方式集合不包括四叉树划分。第十一预设划分子条件为如果第一节点对应的图像区域的宽高比大于或等于第五预设阈值,第一节点对应的候选划分方式集合不包括四叉树划分。
可选的,在本申请的另一种可能的实现方式中,第二级编码树的节点划分方式信息还包括第四信息,第四信息用于表示是否按照四叉树划分进行划分第一节点。相应的,上述“解析码流,得到第二级编码树的节点划分方式信息”的方法为:解析码流,根据第一预设划分条件和第二预设划分条件,确定第一节点对应的候选划分方式集合;根据第一节点对应的划分方式,解析码流,确定第一信息、第二信息、第三信息以及第四信息。
第二方面,提供一种解码端设备,该解码端设备包括获取模块、解析模块以及解码重建模块。其中,上述获取模块,用于得到包含图像数据的码流。上述解析模块,用于解析上述获取模块获取到的码流,得到第一级编码树的节点划分方式信息,其中,第一级编码树的根节点对应一个编码树单元CTU,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,以及用于解析码流,得到第二级编码树的节点划分方式信息,其中,第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式,第一节点对应的划分方式为第一节点对应的候选划分方式集合中的一种,第一节点对应的候选方式集合是根据第一预设划分条件确定的,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分的至少一种,第二级编码树的根节点为第一级编码树的一个叶节点,以及用于如果第一节点对应的划分方式为不继续划分,解析码流,得到第一节点的编码信息,其中,第一节点对应一个编码单元CU。上述解码重建模块,用于根据上述解析模块得到的第一节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。
可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式与第二级编码树对应的节点划分方式不相同,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
可选的,在本申请的另一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
可选的,在本申请的另一种可能的实现方式中,第二级编码树的节点划分方式信息包括第一信息、第二信息以及第三信息,第一信息用于表示是否继续划分第一节点,第二信息用于表示划分第一节点的方向,第三信息用于表示划分第一节点的模式。相应的,上述解析模块,具体用于解析码流,根据第一预设划分条件,确定第一节点对应的候选划分方式集合,以及具体用于根据第一节点对应的候选划分方式集合,解析码流,确定第一信息、第二信息以及第三信息。
可选的,在本申请的另一种可能的实现方式中,上述解析模块,具体用于确定第一数值,第一数值为第一节点对应的候选划分方式集合包括的划分方式的数量,以及具体用于根据第一数值,解析码流,确定第一信息、第二信息以及第三信息。
可选的,在本申请的另一种可能的实现方式中,第二级编码树对应的节点划分方式还包括四叉树划分。相应的,上述解析模块,具体用于解析码流,得到第二级编码树的节点划分方式信息,其中,第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式,第一节点对应的划分方式为第一节点对应的候选划分方式集合中的一种,第一节点对应的候选方式集合是根据第一预设划分条件和第二预设划分条件确定的,第二预设划分条件用于指示是否限制按照四叉树划分进行划分第一节点。
可选的,在本申请的另一种可能的实现方式中,第二级编码树的节点划分方式信息还包括第四信息,第四信息用于表示是否按照四叉树划分进行划分第一节点。相应的,上述解析模块,具体用于解析码流,根据第一预设划分条件和第二预设划分条件,确定第一节点对应的候选划分方式集合,以及具体用于根据第一节点对应的划分方式,解析码流,确定第一信息、第二信息、第三信息以及第四信息。
第二方面中的第一预设划分条件可参考上述第一方面中的第一预设划分条件的描述,同理,第二方面中的第二预设划分条件可参考上述第一方面中的第二预设划分条件的描述。
第三方面,提供一种解码端设备,其特征在于,解码端设备包括:一个或多个处理器、存储器、通信接口。该存储器、通信接口与一个或多个处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,解码端设备执行如上述第一及其任意一种可能的实现方式的图像数据的解码方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,其特征在于,当指令在解码端设备上运行时,使得解码端设备执行如上述第一方面及其任意一种可能的实现方式的图像数据的解码方法。
第五方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在解码端设备上运行时,使得解码端设备执行如第一方面及其任意一种可能的实现方式的图像数据的解码方法。
本申请中第二方面、第三方面、第四方面、第五方面及其各种实现方式的具体描述,可以参考第一方面及其各种实现方式中的详细描述;并且,第二方面、第三方面、第四方面、第五方面及其各种实现方式的有益效果,可以参考第一方面及其各种实现方式中的有益效果分析,此处不再赘述。
在本申请中,上述解码端设备的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
第六方面,提供一种图像数据的编码方法,编码端设备在确定与待编码图像块对应的CTU后,将该CTU按照第一级编码树对应的节点划分方式进行划分,得到第一级编码树的叶节点,其中,第一级编码树的根节点对应该CTU;编码端设备确定第二级编码树中的第一节点对应的候选划分方式集合,该第一节点对应的候选划分方式集合满足用于指示是否限制按照目标划分方式划分第一节点的第一预设划分条件,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分中的至少一种,第二级编码树的根节点为第一级编码树的一个叶节点;如果第一节点对应的候选划分方式集合包括不继续划分,该编码端设备对与第一节点对应的编码单元进行编码,得到对应编码单元的编码单元码流。
本申请实施例中的第一预设划分条件限制了第二级编码树中的节点的划分方式,大幅度的减少了划分第二级编码树中节点的复杂度,降低了编码复杂度。
可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
可选的,在本申请的另一种可能的实现方式中,第二级编码树对应的节点划分方式还包括四叉树划分。这样的话,上述“确定第二级编码树中的第一节点对应的候选划分方式集合”的方法为:确定第一节点对应的候选划分方式集合,第一节点对应的候选划分方式集合满足第一预设划分条件和第二预设限制条件,第二预设划分条件用于指示是否限制按照四叉树划分进行划分第一节点。
可选的,在本申请的另一种可能的实现方式中,如果第一节点对应的候选划分方式集合包括除不继续划分以外的其他划分方式,计算第一节点能够使用的划分方式中的每种划分方式的率失真代价;将最小的率失真代价对应的划分方式确定为第一节点对应的目标划分方式;使用第一节点对应的目标划分方式划分第一节点。
第六方面中的第一预设划分条件可参考上述第一方面中的第一预设划分条件的描述,同理,第六方面中的第二预设划分条件可参考上述第一方面中的第二预设划分条件的描述。
第七方面,提供一种编码端设备,该编码端设备包括确定模块、划分模块和编码模块。其中,上述确定模块,用于确定与待编码图像块对应的编码树单元CTU。上述划分模块,用于将上述确定模块确定的CTU按照第一级编码树对应的节点划分方式进行划分,得到第一级编码树的叶节点,第一级编码树的根节点对应CTU。上述确定模块,还用于确定第二级编码树中的第一节点对应的候选划分方式集合,第一节点对应的候选划分方式集合满足第一预设划分条件,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,第二级编码树的根节点为第一级编码树的一个叶节点,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分中的至少一种。上述编码模块,用于如果上述确定模块确定的第一节点对应的候选划分方式集合包括不继续划分,对与第一节点对应的编码单元CU进行编码,得到对应编码单元的编码单元码流。
可选的,在本申请的一种可能的实现方式中,第一级编码树对应的节点划分方式包括四叉树划分,第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
可选的,在本申请的一种可能的实现方式中,第二级编码树对应的节点划分方式还包括四叉树划分。相应的,上述确定模块,具体用于确定第一节点对应的候选划分方式集合,第一节点对应的候选划分方式集合满足第一预设划分条件和第二预设限制条件,第二预设划分条件用于指示是否限制按照四叉树划分进行划分第一节点。
可选的,在本申请的一种可能的实现方式中,本申请实施例提供的编码端设备还包括计算模块,该计算模块用于如果上述确定模块确定的第一节点对应的候选划分方式集合包括除不继续划分以外的其他划分方式,计算第一节点能够使用的划分方式中的每种划分方式的率失真代价。相应的,上述确定模块,还用于将最小的率失真代价对应的划分方式确定为第一节点对应的目标划分方式。上述划分模块,具体用于使用上述确定模块确定的第一节点对应的目标划分方式划分第一节点。
第七方面中的第一预设划分条件可参考上述第一方面中的第一预设划分条件的描述,同理,第七方面中的第二预设划分条件可参考上述第一方面中的第二预设划分条件的描述。
第八方面,提供一种编码端设备,其特征在于,编码端设备包括:一个或多个处理器、存储器、通信接口。该存储器、通信接口与一个或多个处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,编码端设备执行如上述第六方面及其任意一种可能的实现方式的图像数据的编码方法。
第九方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,其特征在于,当指令在编码端设备上运行时,使得编码端设备执行如上述第六方面及其任意一种可能的实现方式的图像数据的编码方法。
第十方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在编码端设备上运行时,使得编码端设备执行如第六方面及其任意一种可能的实现方式的图像数据的编码方法。
本申请中第七方面、第八方面、第九方面、第十方面及其各种实现方式的具体描述,可以参考第七方面及其各种实现方式中的详细描述;并且,第七方面、第八方面、第九方面。第十方面及其各种实现方式的有益效果,可以参考第六方面及其各种实现方式中的有益效果分析,此处不再赘述。
在本申请中,上述编码端设备的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
本申请的这些方面或其他方面在以下的描述中会更加简明易懂。
附图说明
图1为本申请实施例提供的不同划分方式的结构示意图;
图2为本申请实施例提供的四叉树层级的结构示意图;
图3为本申请实施例提供的四叉树划分和二叉树划分的组合划分示意图;
图4为本申请实施例提供的图像处理系统的结构示意图;
图5为本申请实施例提供的一种手机的硬件结构示意图;
图6为本申请实施例提供的图像数据的解码方法流程示意图一;
图7为本申请实施例提供的图像数据的解码方法流程示意图二;
图8为本申请实施例提供的图像数据的编码方法流程示意图;
图9为本申请实施例提供的解码端设备的结构示意图;
图10为本申请实施例提供的编码端设备的结构示意图。
具体实施方式
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了方便理解本申请实施例,首先在此介绍本申请实施例涉及到的相关要素。
编码树单元(Coding Tree Unit,CTU):一幅图像由多个CTU构成,一个CTU通常对应于一个方形图像区域,如图1(a)所示,图像10由多个CTU构成(包括CTU A、CTU B、CTU C等)。与某一CTU对应的编码信息包含与该CTU对应的方形图像区域中的像素的亮度值和/或色度值。此外,与某一CTU对应的编码信息还可以包含语法元素,这些语法元素指示如何将该CTU划分成至少一个CU,以及解码每个CU以得到重建图像的方法。
一个CTU对应的图像区域可以包括64×64、128×128或256×256个像素。在一个示例中,64×64个像素的CTU包含由64列、每列64个像素的矩形像素点阵,每个像素包含亮度分量和/或色度分量。
可以理解的是,CTU也可以对应矩形图像区域或者其它形状的图像区域,一个CTU对应的图像区域也可以是水平方向的像素点的数量与竖直方向的像素点数量不同的图像区域,例如包括64×128个像素。
编码单元(Coding Unit,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)所示,CTU A为根节点,将CTU A划分为a、b、c和d四个节点,若不再划分a节点,则a节点对应的方形图像区域对应一个CU。
二叉树(Binary Tree,BT):一种树状结构,一个节点可划分成两个子节点。对于二叉树结构上的某一节点,可以不再划分该节点,也可以将该节点划分成两个下一层级的节点。二叉树划分方式可以包括:
(1)、水平二分
将节点对应的图像区域划分成上、下两个相同大小的区域,即被划分的图像区域的宽保持不变,高变为被划分的图像区域的一半,划分后的每个图像区域对应于一个子节点。如图1(c)所示,节点b使用水平二分划分方式划分,生成节点e和节点f。
(2)、竖直二分
将节点对应的区域划分成左、右两个大小相同的区域,即被划分的图像区域的高保持不变,宽变为被划分的图像区域的一半,划分后的每个图像区域对应于一个子节点。如图1(d)所示,节点d使用竖直二分划分方式划分,生成节点g和节点h。
可以理解的是,上述水平二分和竖直二分是对二叉树划分方式的一种示例。可以采用别的方式将节点对应的图像区域划分为两个子区域。例如水平划分两个高不相等的子区域,或者竖直划分为两个宽不相等的子区域。
三叉树(Triple Tree,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,即将节点c对应的图像区域按照图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。
图像编码(image encoding):将图像序列压缩成码流的处理过程。
图像解码(image decoding):将码流按照特定的语法规则和处理方法恢复成重建图像的处理过程。
视频编解码标准H.265使用QT划分方式划分CTU。具体的,将CTU作为QT结构的根节点(root),按照QT划分方式,将CTU递归划分成若干个叶节点(leaf node)。如果某一节点不再划分,则该节点称为叶节点。从上述描述可知,一幅图像由多个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的最小尺寸在码流的序列参数集(SequenceParameter Set,SPS)中标识,例如,8×8的CU为最小CU。在上述递归划分过程中,如果某一节点的尺寸等于最小CU尺寸,则确定不再划分该节点,同时也不需要在码流中包含该节点的划分标志位。
将CTU划分成一组CU的划分方式对应于一个编码树,图3(a)即为一种编码树的示例。一个编码树可能只对应一种划分方式,例如四叉树;也可以对应多种划分方式,例如前述的QTBT结构和下文中介绍的QT-BT/TT结构。
第一级编码树、第二级编码树、第三级编码树、……、第N级编码树分别对应的是不同的划分方式的集合,N为大于3的正整数。这些不同的划分方式的集合可以是某一种树的类型,例如三叉树,二叉树,四叉树;也可以是同一种树的类型中的划分方式的集合,例如水平二分,竖直二分等;还可以是两者的结合。可以理解的是,一个编码树并不需要同时包含上述多个不同级别的编码树。例如,一个编码树可以只包括第一级编码树;或者,一个编码树可以包含第一级和第二级编码树;或者一个编码树可以包含第一级编码树,第二级编码树和第三级编码树。
在一个示例中,第一级编码树可以包括四叉树的划分,第二级编码树可以包括二叉树的划分和三叉树的划分。
在一个示例中,第一级编码树可以包括四叉树的划分,第二级编码树可以包括二叉树的划分、三叉树和四叉树的划分。
在一个示例中,第一级编码树可以包括四叉树的划分和二叉树的划分,第二级编码树包括三叉树的划分。
在一个示例中,第一级编码树可以包括四叉树的划分,第二级编码树可以包括二叉树的划分,第三级编码树可以包括三叉树的划分。
在一个示例中,第一级编码树可以包括水平二分,第二级编码树可以包括竖直二分和四叉树划分,第三级编码树可以包括竖直三分和水平三分。
第二级编码树还可能包含其它划分方式,本申请实施例对此不作具体限定。
编码端设备通常采用率失真优化(Rate Distortion Optimization,RDO)技术来确定CTU采用哪一种编码树编码。具体的,对于每个节点,编码端设备计算该节点能够使用的每一种划分方式的率失真代价(Rate Distortion cost,RD cost),比较计算出的RDcost,并将最小的RD cost所对应的划分方式确定为该节点的划分方式。
与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划分方式(包括水平三分和竖直三分)划分第二级编码树中的节点,以生成若干第二级编码树的叶节点。
但是,对于每个节点,编码端设备通常需要计算该节点能够使用的每一种划分方式的RD cost,比较计算出的RD cost,并将最小的RD cost所对应的划分方式确定为该节点的划分方式。在QT-BT/TT划分方式中,由于第二级编码树中的节点可使用BT划分方式,也可以使用TT划分方式,因此,对于第二级编码树中的每个节点,编码端设备均需要计算四种划分方式(水平二分、竖直二分、水平三分以及竖直三分)的RD cost,才能够确定出第二级编码树中的每个节点真正使用的划分方式,这样的话,编码复杂度较高。
针对上述问题,本申请实施例提供一种图像数据的解码方法,解码端设备在得到包含图像数据的码流后,通过解析该码流,得到第一级编码树的节点划分方式信息和第二级编码树的节点划分方式信息,其中,第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式,第一节点对应的划分方式为第一节点对应的候选划分方式集合中的一种,第一节点对应的候选方式集合是根据第一预设划分条件确定的,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分的至少一种,如果第一节点对应的划分方式为不继续划分,该解码端设备通过解析码流,得到第一节点的编码信息,第一节点对应一个编码单元CU,这样,该解码端设备可根据第一节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。本申请中第一级编码树的根节点对应一个CTU,第一级编码树的叶节点是通过第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的,第二级编码树的根节点为第一级编码树的一个叶节点。本申请实施例中第二级编码树的第一节点对应的划分方式是根据第一预设划分条件确定出的其中一个,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,且该目标划分方式包括水平二分、水平三分、竖直二分和竖直三分的至少一种,在第一预设划分条件的作用下,第一节点对应的划分方式的数量减少,有效地降低了解码的复杂度。
相应的,本申请实施例还提供一种图像数据的编码方法,编码端设备在确定与待编码图像块对应的CTU后,将该CTU按照第一级编码树对应的节点划分方式进行划分,得到第一级编码树的叶节点,其中,第一级编码树的根节点对应该CTU;编码端设备确定第二级编码树中的第一节点对应的候选划分方式集合,该第一节点对应的候选划分方式集合满足用于指示是否限制按照目标划分方式划分第一节点的第一预设划分条件,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分中的至少一种,第二级编码树的根节点为第一级编码树的一个叶节点;如果第一节点对应的候选划分方式集合包括不继续划分,该编码端设备对与第一节点对应的编码单元进行编码,得到对应编码单元的编码单元码流。本申请实施例中的第一预设划分条件限制了第二级编码树中的节点的划分方式,大幅度的减少了划分第二级编码树中节点的复杂度,降低了编码复杂度。
本申请实施例提供一种图像数据的编码、解码方法均适用于图像处理系统。图4是本申请实施例提供的图像处理系统的结构示意图。如图4所示,该图像处理系统包括编码端设备40和解码端设备41。其中,编码端设备40和解码端设备41可以独立设置,也可以集成在同一设备,本申请实施例对此不作具体限定。图1中以编码端设备40和解码端设备41独立设置为例。为了便于描述,下文均以编码端设备与解码端设备独立设置为例进行说明。
具体的,编码端设备40在捕获到某一影像后,对该影像中的每一图像对应的CTU根据第一级编码树的划分方式和第二级编码树的划分方式进行处理,其中,若第二级编码树中的第一节点对应的候选划分方式集合包括不继续划分,则编码端设备40对与第一节点对应的编码单元进行编码,得到对应编码单元的编码单元码流;在获取到第二级编码树的每个节点对应的编码单元码流后,编码端设备40获取CTU码流,并向解码端设备41发送该CTU码流;解码端设备41解析其获取到的CTU码流,得到第二级编码树的节点的划分方式信息,并根据第二级编码树的节点的划分方式信息进行相应处理,以获取重建图像。
编码端设备40和解码端设备41均可以为配置有摄像头(如前置摄像头或后置摄像头)的各种设备,例如,该编码端设备和解码端设备为可穿戴电子设备(例如智能手表等)、拍立得,也可以是图5所示的手机,还可以是平板电脑,台式电脑,虚拟现实装置,笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、个人数字助理(PersonalDigital Assistant,PDA)等,本申请实施例对编码端设备40和解码端设备41的具体形式不做特殊限制。
结合图4,如图5所示,本实施例中的编码端设备40和解码端设备41均可以为手机。下面以手机为例对实施例进行具体说明。
应该理解的是,图示手机仅仅是编码端设备40和解码端设备41的一个范例,并且手机可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图5中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
如图5所示,手机包括:RF(Radio Frequency,射频)电路50、存储器51、输入单元52、显示单元53、传感器54、音频电路55、无线保真(Wireless Fidelity,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(即显示屏)可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单的图形用户界面(Graphical User Interface,GUI)。显示单元53可包括设置在手机正面的显示面板531。可选的,可以采用液晶显示器(LiquidCrystal Display,LCD)、有机发光二极管(Organic Light-emitting Diode,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)、图像参数集(Picture Parameter Set,PPS)、条带头(slice header)或条带片段头(slice segment header)、以及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划分,与该节点对应的第二标识的数值为第二值且与该节点对应的第三标识的数值为第三值。
在一个示例中,本申请实施例中第一级编码树的语法表如表1所示。表1中,coding_quadtree()为第一级编码树语法结构体,描述第一级编码树的某一节点的信息。
表1中,以CTU为根节点,解析coding_quadtree(xCtb,yCtb,CtbLog2SizeY,0),其中CtbLog2SizeY为CTU的边长以2为底的对数值(这里,CTU对应的图像区域的形状为正方形),xCtb和yCtb分别表示CTU对应的图像区域的左上角相对于节点对应的图像区域的左上角的水平坐标偏移和竖直坐标偏移。x0和y0分别表示节点对应的图像区域的左上角相对于CTU对应的图像区域的左上角的水平坐标偏移和竖直坐标偏移;log2CbSize表示节点对应的图像区域的边长以2为底的对数值(由于CTU对应的图像区域为正方形且第一级编码树仅使用四叉树划分,所以第一级编码树上的所有节点对应的图像区域也为正方形,宽和高相等,所以只需要指示边长,不需要区分宽和高);cqtDepth表示节点的第一级编码树层级。条件condA表示需要从码流中解析第一级编码树节点划分信息语法元素split_cu_flag的条件,例如condA为“节点对应的图像区域在CTU对应的图像区域内且节点对应的图像区域的边长大于阈值”。split_cu_flag为0指示节点不按照四叉树进行划分,为第一级编码树叶节点,此时将按照第二级编码树的语法结构体coding_second_tree()解析该叶节点;split_cu_flag为1指示节点按照四叉树进行划分,此时该节点划分成四个子节点,确定每个子节点对应的图像区域的边长、坐标、每个子节点的第一级编码树层级,并依次按照coding_quadtree()解析这些子节点。“X>>Y”表示将X右移Y位;“X<<Y”表示将X左移Y位;ae(v)表示使用CABAC解析语法元素。
表1
S602、解码端设备解析其得到的码流,得到第二级编码树的节点划分方式信息。
其中,第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式,第一节点对应的划分方式为第一节点对应的候选划分方式集合中的一种,第一节点对应的候选方式集合是根据第一预设划分条件确定的,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分的至少一种。
第二级编码树的根节点为第一级编码树的一个叶节点。第二级编码树对应的节点划分方式与第一级编码树对应的节点划分方式不相同,本实施例中第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分,二叉树划分包括水平二分和竖直二分,三叉树划分包括水平三分和竖直三分。
解码端设备在得到第一级编码树的节点划分方式信息后,将第一级编码树的节点划分方式信息对应的节点划分方式和第一级编码树的根节点进行指示的第一级编码树的叶节点作为第二级编码树的根节点,解析CTU码流,得到第二级编码树的节点的划分方式信息。
可选的,解码端设备解析CTU码流,得到第二级编码树的节点的划分方式信息的方法可以为:解码端设备解析CTU码流,获取用于指示如何划分第二级编码树中某一节点的第四标识(如STSplitMode),即第四标识表示第二级编码树的节点划分方式信息。
如果某一第四标识表示不继续划分(如STSplitMode=0),则说明与该第四标识对应的节点为第二级编码树的叶节点。
如果某一第四标识表示继续划分(如STSplitMode=1、2、3或4),则说明与该第四标识对应的节点存在两个或三个子节点,解码端设备继续获取与该第四标识对应的节点的子节点的第四标识,直到确定出第二级编码树的所有叶节点的信息。示例性的,STSplitMode=1表示与该第四标识对应的节点对应的划分方式为水平二分,STSplitMode=2表示与该第四标识对应的节点对应的划分方式为竖直二分,STSplitMode=3表示与该第四标识对应的节点对应的划分方式为水平三分,STSplitMode=4表示与该第四标识对应的节点对应的划分方式为竖直三分。
可选的,解码端设备解析CTU码流,得到第二级编码树的节点的划分方式信息的方法还可以为:对于第二级编码树中的第一节点而言,解码端设备首先解析码流,根据第一预设划分条件,确定第一节点对应的候选划分方式集合,然后根据第一节点对应的候选划分方式集合,解析码流确定第一节点对应的划分方式信息。
这里,第一预设划分条件包括以下至少一种预设划分子条件:
第一预设划分子条件:如果第一节点对应的图像区域的宽高比大于或等于第一预设阈值(如8或4),第一节点对应的候选划分方式集合不包括水平二分和水平三分,第一节点对应的图像区域的宽高比为第一节点对应的图像区域的宽与第一节点对应的图像区域的高的比值。
第二预设划分子条件:如果第一节点对应的图像区域的高宽比大于或等于第二预设阈值(如8或4),第一节点对应的候选划分方式集合不包括竖直二分和竖直三分,第一节点对应的图像区域的高宽比为第一节点对应的图像区域的高与第一节点对应的图像区域的宽的比值。
第三预设划分子条件:如果第一节点对应的图像区域的面积与第一节点归属的第一级编码树的叶节点对应的图像区域的面积的比值小于或等于第三预设阈值(16或8),则第一节点对应的候选划分方式集合不包括水平二分、水平三分、竖直二分和竖直三分。
第四预设划分子条件:如果第一节点对应的划分方式包括第一划分方式,第一节点的第一子节点的解码顺序晚于第一节点的第二子节点,且第二子节点对应的划分方式为第一划分方式,则第一子节点对应的候选划分方式集合不包括第一划分方式,第一划分方式为水平二分或竖直二分。
示例性的,第一节点和第二子节点对应的划分方式均为水平二分,则第一子节点对应的候选方式集合不包括水平二分,即不允许使用水平二分划分方式划分第一子节点。
第五预设划分子条件:如果第一节点对应的划分方式包括第二划分方式,第一节点的第一子节点对应的图像区域的面积为第一节点的三个子节点对应的图像区域的面积中最小的,第一子节点对应的候选划分方式集合不包括第二划分方式,第二划分方式为水平三分或竖直三分。
示例性的,第一节点对应的划分方式均为水平三分,则第一子节点对应的候选方式集合不包括水平三分,即不允许使用水平三分划分方式划分第一子节点。
第六预设划分子条件:如果第一节点对应的划分方式包括第二划分方式,第一节点的第一子节点对应的图像区域的面积为第一节点的三个子节点对应的图像区域的面积中最大的,第一子节点对应的候选划分方式集合不包括第二划分方式。
第七预设划分子条件:如果第一节点对应的图像区域的宽与预设的最小CU的边长比值小于或等于第三预设阈值,则第一节点对应的候选划分方式集合不包括竖直三分;如果第一节点对应的图像区域的高与预设的最小CU的边长比值小于或等于第三预设阈值,则第一节点对应的候选划分方式集合不包括水平三分。
第八预设划分子条件:如果第一节点对应的图像区域的面积小于或者等于第四预设阈值,第一节点对应的候选划分方式集合不包括水平二分、水平三分、竖直二分和竖直三分。
第九预设划分子条件:如果第一节点对应的划分方式为第二划分方式,第一节点的第一子节点对应的图像区域的面积为第一节点的三个子节点对应的图像区域的面积中最大的,第一子节点对应的候选划分方式集合不包括第一划分方式,第一划分方式与第二划分方式的划分方向相同。
示例性的,第一节点对应的划分方式为水平三分,第一节点的第一子节点对应的图像区域的面积为第一节点的三个子节点对应的图像区域的面积中最大的,则第一子节点对应的候选方式集合不包括水平二分,即不允许使用水平二分划分方式划分第一子节点。
示例性的,本申请实施例中的第一预设划分条件可以包括上述第三预设划分子条件,也可以包括上述第四预设划分子条件,还可以包括上述第五预设划分子条件,还可以包括上述第一预设划分子条件和第二预设划分子条件,还可以包括上述第一预设划分子条件、第二预设划分子条件、第四预设划分子条件、第六预设划分子条件和第七预设划分子条件,也可以包括上述第一预设划分子条件、第二预设划分子条件、第三预设划分子条件和第七预设划分子条件,还可以包括上述第一预设划分子条件、第二预设划分子条件、第三预设划分子条件、第五预设划分子条件和第七预设划分子条件,还可以包括上述第五预设划分子条件和第七预设划分子条件,还可以包括上述第三预设划分子条件、第四预设划分子条件和第七预设划分子条件,还可以包括上述第一预设划分子条件、第二预设划分子条件、第四预设划分子条件和第五预设划分子条件。
当然,本申请实施例中的第一预设划分条件还可以为上述预设划分子条件的其他组合,此处不再进行详细赘述。
可选的,解码端设备可从包含图像数据的码流中的SPS、PPS或条带头中获取到上述第一预设阈值、第二预设阈值、第三预设阈值、第四预设阈值以及预设的最小CU的边长。当然,上述第一预设阈值、第二预设阈值、第三预设阈值、第四预设阈值以及预设的最小CU的边长也可以是图像处理系统预设的。
此外,除了上述第一预设划分子条件~第九预设划分子条件,本申请实施例中第一预设划分条件还可以包括其他条件,本申请实施例对此不作具体限定。
示例性的,第一预设划分条件还包括:
A、如果第一节点的第二级编码树层级等于预设的最大第二级编码树层级(例如预设的最大第二级编码树层级为3、4或2),第一节点对应的候选划分方式集合包括不继续划分。
编码端设备可以从包含图像数据的码流中的SPS、PPS或条带头中获取到上述预设的最大第二级编码树层级。
B、如果第一节点对应的图像区域的宽等于预设的最小CU的宽,第一节点对应的候选划分方式集合不包括水平二分。
C、如果第一节点对应的图像区域的宽或高大于第五预设阈值(例如64或128)时,第一节点对应的候选划分方式集合包括不继续划分。
D、如果第一节点对应的图像区域的宽与预设的最小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划分。
当然,本申请实施例中的第四标识也可以包括上述第一信息、上述第二信息以及上述第三信息的任意组合,本申请实施例对此不作具体限定。
容易理解的是,如果第二级编码树对应的划分方式还包含除二叉树划分和三叉树划分以外的其它划分方式,则上述第四标识可包括更多的信息。
由于第四标识可以包括第一信息、第二信息和第三信息,因此,解码端设备在确定第一节点对应的候选划分方式集合后,根据该第一节点对应的候选划分方式集合确定第一信息、第二信息以及第三信息,这样,即可确定出第一节点对应的划分方式信息。
具体的,解码端设备首先根据上述第一预设划分条件,确定第一节点的候选划分方式集合;然后,该解码端设备根据第一节点的候选划分方式集合确定是否可以从码流中解析到第一信息、第二信息和第三信息,若第一信息、第二信息和第三信息中的任意一个无法从码流中解析得到,则该信息的数值为系统默认的。
示例性的,第一信息用STSplitFlag表示,第二信息用STSplitDir表示,第三信息用STSplitType表示。如果第一节点对应的候选划分方式集合不包含水平二分、水平三分、竖直二分以及竖直三分,则第一节点对应的划分方式为不继续划分,即STSplitFlag、STSplitDir、STSplitType均不需要从码流中解析,三者的数值均为0。如果第一节点对应的候选划分方式集合包含水平二分、水平三分、竖直二分以及竖直三分中的至少一种,则解码端设备首先从码流中解析STSplitFlag,如果STSplitFlag的数值为0,则STSplitDir和STSplitType的数值默认为0;如果STSplitFlag的数值为1,则继续解析STSplitDir(STSplitDir的解析方式和,与第一节点对应的候选划分方式集合相关),并根据STSplitDir的数值解析STSplitType(STSplitType的解析方式和,与第一节点对应的候选划分方式集合相关。其中,如果第一节点对应的候选划分方式集合包含水平二分、水平三分、竖直二分以及竖直三分,则解码端设备从码流中依次解析STSplitDir和STSplitType;如果第一节点对应的候选划分方式集合包括1到3种划分方式,则STSplitDir和STSplitType中至少有一者不从码流中解析,而可以直接获得。
在一个示例中,表2示出了本实施例中与第一节点对应的候选划分方式集合的所有可能的情况,并示出了每一种情况所对应的第一信息、第二信息和第三信息的解析方法。表2中,竖直二分(Vertical Binary Tree,VBT)的数值为0表示与第一节点对应的候选划分方式集合不包含竖直二分,VBT的数值为1表示与第一节点对应的候选划分方式集合包含竖直二分,水平二分(Horizontal Binary Tree,HBT)的数值为0表示与第一节点对应的候选划分方式集合不包含水平二分,HBT的数值为1表示与第一节点对应的候选划分方式集合包含水平二分,竖直三分(Vertical Triple Tree,VTT)的数值为0表示与第一节点对应的候选划分方式集合不包含竖直三分,VTT的数值为1表示与第一节点对应的候选划分方式集合包含竖直三分,水平三分(Horizontal Triple Tree,HTT)的数值为0表示与第一节点对应的候选划分方式集合不包含水平三分,HTT的数值为1表示与第一节点对应的候选划分方式集合包含水平三分。a、b、c分别表示STSplitFlag、STSplitDir、STSplitType通过解析码流获得;NA(x)表示相应的比特设置为默认值x。当解析到STSplitFlag为0时,STSplitDir和STSplitType的数值默认0;当解析到STSplitFlag为1时,先解析STSplitDir,再根据STSplitDir的数值解析STSplitType。符号!为逻辑非操作,表达式“exp?m:n”表示如果exp为真则使用m,否则使用n。例如:STSplitDir?c:NA(1)表示如果STSplitDir的数值不为0(即等于1,因为此实施例中STSplitDir的数值为0或1),则从码流中获取STSplitType;否则STSplitType的数值默认为1。又例如,!STSplitDir?NA(0):NA(1)表示如果STSplitDir的数值等于0,则STSplitType的数值默认为0;否则,STSplitType的数值默认为1。
结合表2可知,解码端设备根据与第一节点对应的候选划分方式集合,可确定出上述STSplitFlag、STSplitDir和STSplitType。
在一个示例中,对于表2中的候选划分方式集合15而言,第一节点对应的候选划分方式集合不包括竖直二分、水平二分、水平三分以及竖直三分,则STSplitFlag、STSplitDir和STSplitType的数值均默认为0。
在另一个示例中,对于表2中的候选划分方式集合12而言,第一节点对应的候选划分方式集合不包括水平二分、水平三分以及竖直三分,则解码端设备首先从码流中解析STSplitFlag;如果STSplitFlag的数值为0,则STSplitDir和STSplitType的数值均默认为0,如果STSplitFlag的数值为1,则STSplitDir的数值默认为1,STSplitType的数值默认值为0。
在另一个示例中,对于表2中的候选划分方式集合6而言,第一对应的候选划分方式集合不包括水平三分以及竖直三分,则首解码端设备首先从码流中解析STSplitFlag;如果STSplitFlag的数值为0,则STSplitDir和STSplitType的数值均默认为0,如果STSplitFlag的数值为1,则解码端设备从码流中解析STSplitDir,并将STSplitType的数值默认为0。
表2
在另一个示例中,对于表2中的候选划分方式集合5而言,第一对应的候选划分方式集合不包括竖直三分,则解码端设备首先从码流中解析STSplitFlag;如果STSplitFlag的数值为0,则STSplitDir和STSplitType的数值均默认为0,如果STSplitFlag的数值为1,则解码端设备从码流中解析STSplitDir;如果STSplitDir的数值为1,则STSplitType的数值默认为0,如果STSplitDir的数值为0,则解码端设备从码流中解析STSplitType。
解码端设备在确定出STSplitFlag、STSplitDir和STSplitType的数值后,可根据这三个数值确定出第四标识STSplitMode,即确定出第二级编码树中第一节点的划分方式信息。
示例性的,解码端设备利用表3所示的映射方式,根据STSplitFlag、STSplitDir和STSplitType的数值确定STSplitMode的数值。
表3
STSplitMode | STSplitFlag | STSplitDir | STSplitType |
0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 |
2 | 1 | 1 | 0 |
3 | 1 | 0 | 1 |
4 | 1 | 1 | 1 |
在一个示例中,结合上述示例,若与第一节点对应的STSplitFlag、STSplitDir、STSplitTyp的数值分别为1、1、0,则STSplitMode的数值为2,即第一节点对应的划分方式为竖直二分。
可选的,候选划分方式集合还可以仅包含水平三分和竖直三分,而不包含水平二分和竖直二分,此时解码端设备先从码流中解析STSplitFlag;如果STSplitFlag的数值为0,则STSplitDir和STSplitType的数值均默认为0,如果STSplitFlag的数值为1,则解码端设备从码流中解析STSplitDir,STSplitType的数值默认为1。
容易理解的,如果第二级编码树的划分方式中还包括水平二分、竖直二分、水平三分、竖直三分以外的其它划分方法,则需要对上述表2中示范的信息解析方法进行扩展,本申请实施例对此不作具体限定。
从表2可以看出,上述15种候选划分方式集合中的若干种候选划分方式集合对应的第一信息、第二信息和第三信息的解析方式相同或相近,因此,还可以将上述若干种候选划分方式集合合并为一类,每一类采用一种解析方法。这样的话,第一信息、第二信息和第三信息的解析方法与上述按照表2确定第一信息、第二信息和第三信息的解析方法是等价的,但判断分支更少。
示例性的,解码端设备可以根据表4示出的解析方式确定第一信息STSplitFlag,根据表5示出的解析方式确定第二信息STSplitDir,根据表6示出的解析方式确定第三信息STSplitType。其中,&&为逻辑与操作,||为逻辑或操作,!为逻辑非操作。与表2类似的,a、b、c分别表示对应的信息需要从码流中解析,NA(x)表示对应的信息的值设置为x。
表4
NumType>0 | NumType==0 | |
STSplitFlag | a | NA(0) |
如表4所示,当候选划分方式集合包括的划分方式的数量(即第一数值,用NumType)大于0时,解码端设备从码流中解析STSplitFlag;当NumType的数值等于0时,STSplitFlag的数值默认为0。当解码端设备确定STSplitFlag的数值为1时,继续解析STSplitDir和STSplitType;否则,STSplitDir和STSplitType的数值均默认为0。
结合表2可以看出,表2中候选划分方式集合1~14中,每种候选划分方式集合均包括多种划分方式,且每种候选划分方式集合对应的STSplitFlag均需从码流中解析获得,与表4所示的情况相对应。此外,表2中候选划分方式集合15未包括划分方式,即候选划分方式集合15包括的划分方式的数量为0,候选划分方式集合15对应的STSplitFlag的数值默认为NA(0),与表4相对应。
表5
如表5所示,在NumType的数值大于等于3、NumType的数值等于2、NumType的数值等于1、NumType的数值等于0的情况下,解码端设备采用不同的方式确定STSplitDir。此外,在NumType的数值等于2的情况下,解码端设备还需根据不同的条件确定采用哪一方式确定STSplitDir。
示例性的,在NumType的数值大于等于3时,解码端设备解析码流得到STSplitDir。在NumType的数值等于2且满足条件(HBT&&HTT)||(VBT&&VTT)时,STSplitDir的数值设置为!HBT(即HBT为0时STSplitDir为1,HBT为1时STSplitDir为0)。
结合表2可以看出,表2中候选划分方式集合1~5中,每种候选划分方式集合包括的划分方式的数量大于或等于3,候选划分方式集合1~5中每种候选划分方式集合对应的STSplitDir均需从码流中解析获得,与表5所示的情况相对应。表2中候选划分方式集合6~10中,每种候选划分方式集合包括的划分方式的数量均等于2,候选划分方式集合6~10中每种候选划分方式集合对应的STSplitDir在不同条件下的解析方式不同,与表5所示的情况相对应。表2中候选划分方式集合11~14中,每种候选划分方式集合包括的划分方式的数量等于1,候选划分方式集合11~14中每种候选划分方式集合对应的STSplitDir的数值均为默认值NA(VBT||VTT),与表5所示的情况相对应。表2中候选划分方式集合15包括的划分方式的数量等于0,候选划分方式集合15对应的STSplitDir为默认值NA(0),与表5所示的情况相对应。
表6
如表6所示,在NumType的数值等于4、NumType的数值等于3、NumType的数值等于2、NumType的数值等于1、NumType的数值等于0的情况下,解码端设备采用不同的方式确定STSplitType。此外,在NumType的数值等于2和NumType的数值等于3的情况下,解码端设备还需根据不同的条件确定采用哪一方式确定STSplitType。与表4、表5类似,表6也与表2相对应。
解码端设备根据表6确定STSplitType的方法与解码端设备根据表5确定STSplitDir的方法类似,此处不再进行详细赘述。
需要说明的是,如果第一级编码树划分信息由NSFlag和QTSplitFlag表示,则当某一节点的NSFlag的数值为第一值时,该节点为第二级编码树的叶节点,STSplitFlag的数值默认为0;当某一节点的NSFlag的数值为第二值且QTSplitFlag的数值为第二值时,该节点不是第二级编码树的叶节点,STSplitFlag的数值默认为1。
可选的,本申请实施例中的解码端设备可以在执行完S601后,再执行S602,也可以在执行S601的过程中,首次获取到第一级编码树的一个叶节点的信息后,基于该第一级编码树的叶节点立即执行S602,直到获取到第一级编码树的最后一个叶节点。
S603、如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为不继续划分,解码端设备解析码流,得到第一节点的编码信息。
本申请实施例中,如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为不继续划分,则说明该第一节点为第二级编码树的叶节点。
从上面描述可知,不再划分的节点对应一个CU。相应的,第一节点对应一个CU。
具体的,解码端设备解析码流中的编码单元语法结构体(例如H.265中的coding_unit()语法结构体,coding_unit()语法结构体的解释请参考下面描述),得到每个CU的编码信息,每个CU的编码信息均包括CU的预测模式、变换系数等信息。这里,解码端设备获取每个CU的编码信息意味着解码端设备得到第二级编码树的每个叶节点的编码信息。
可选的,本申请实施例中的解码端设备可以在执行S602的过程中,获取到第二级编码树的一个叶节点的信息后,解析码流,获取该叶节点的编码信息;在获取到该叶节点的编码信息后,继续获取下一个第二级编码树的叶节点以及获取下一个第二级编码树的叶节点的编码信息,依次类推,直到最后一个第二级第二级编码树的叶节点。
在一个示例中,本申请实施例中的第二级编码树的语法表如表7所示。coding_second_tree()为第二级编码树的语法结构体,描述第二级编码树的某一个节点的信息。
表7中,log2CuWidth和log2CuHeight分别表示节点对应的图像区域的宽和高以2为底的对数值,stDepth表示第二级编码树的叶节点的第二级编码树层级。条件condB表示需要从码流中解析第二级编码树节点划分信息语法元素STSplitMode的条件,例如条件condB为“节点的第二级编码树层级stDepth小于预设的最大第二级编码树层级maxSTDepth,且节点对应的图像区域的宽和高均小于阈值maxSTSize,且节点对应的图像区域的宽或高大于阈值minSTSize”。maxSTDepth为大于0的整数(例如2或3或4),可预先设定或从SPS中解析得到;minSTSize为大于0的整数(例如为4或8),可预先设定或从SPS中解析得到;maxSTSize为大于minSTSize的整数(例如为64或128),可预先设定或从SPS中解析得到。
STSplitMode的取值范围为0、1、2、3、4。当STSplitMode的数值为0时,节点为第二级编码树的叶节点,且该节点对应于一个CU,此时按照CU语法结构体coding_unit()解析编码单元信息。本申请实施例对编码单元信息的语法元素组织方式不做限定。当STSplitMode的数值为1至4时,分别使用水平二分、竖直二分、水平三分、竖直三分将节点划分为2个或3个子节点,对每个子节点,确定每个子节点对应的图像区域的宽、高、坐标、第二级编码树层级,并依次按照coding_second_tree()解析这些子节点。
可选的,本申请实施例中的STSplitFlag、STSplitDir和STSplitType可使用跳过(by-pass)方式编码,也可以使用一个概率模型编码,还可以基于上下文自适应地选择概率模型。
示例性的,STSplitFlag的上下文模型选择方法为:获取节点对应的图像区域的左侧位置对应CU的大小S1、节点对应的图像区域的上侧位置对应CU的大小S2、节点对应的图像区域的大小S3;如果S1和S2均小于S3,则选择2号上下文模型,如果S1和S2中只有一个小S3,则选择1号上下文模型;否则(S1和S2都不小于S3),则选择0号上下文模型。节点对应的图像区域的左侧位置例如为(x0-1,y0)),节点对应的图像区域的上侧位置例如为(x0,y0-1)。
STSplitDir的上下文模型选择方法为:如果节点对应的图像区域的宽大于高的2倍,使用0号模型;如果节点对应的图像区域的宽等于高的2倍,使用1号模型;如果节点对应的图像区域的宽等于高,使用2号模型;如果节点对应的图像区域的宽等于高的1/2,使用3号模型;如果节点对应的图像区域的宽小于高的1/2,使用4号模型。
STSplitType的上下文模型选择方法为:如果节点的第二级编码树层级等于0,选择0号模型;如果节点的二级编码树层级等于1,选择1号模型;如果节点的二级编码树层级大于1,选择2号模型。
应当理解的是,上述上下文模型的编号仅用于区别不同的上下文模型,并不限制上下文模型编号必须与为上述示例中的编号相同。
表7
/>
S604、解码端设备根据第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。
对编码单元进行解码重建的过程包括预测、反量化、反变换、环路滤波等处理。具体的,对于每个编码单元进行解码重建的过程包括:
(1)、根据该CU的编码信息所包括的预测模式,选用帧内预测或帧间预测,得到该CU的预测像素。
(2)、如果该CU存在变换系数,则根据量化参数、变换模式,对该CU的变换系数进行反量化和反变换处理,得到该CU的重建残差。如果该CU不存在变换系数,则该CU的重建残差为0,即该CU中各像素的重建残差值均为0。
(3)、将该CU的预测像素和该CU的重建残差相加后进行环路滤波处理,得到CU的重建图像块。
编码端设备按照上述方法对每个编码单元进行解码重建,获取到每个CU的重建图像块。在获取到每个CU的重建图像块后,编码端设备根据获取到的所有重建图像块得到最终的重建图像,即得到对应图像数据的图像。
本申请实施例中第二级编码树的第一节点对应的划分方式是根据第一预设划分条件确定出的其中一个,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,且该目标划分方式包括水平二分、水平三分、竖直二分和竖直三分的至少一种,在第一预设划分条件的作用下,第一节点对应的划分方式的数量减少,有效地降低了解码的复杂度。
在图6所示的实施例中,解码端设备在确定第二级编码树的节点划分方式信息的过程中,可以依次确定第一信息、第二信息以及第三信息。本申请实施例中的解码端设备还可以按照第一信息、第三信息以及第二信息的顺序确定第二级编码树的节点划分方式信息。现对这种场景进行说明。
在一个示例中,上述S602中,解码端设备还可以根据表8示出的解析方法依次确定第一信息、第三信息和第二信息,进而根据表3所示的映射方式得到第二级编码树的节点划分方式信息。
表8与表2类似,此处不再进行详细赘述。
与表2类似,表8示出的15种候选划分方式集合中的若干种候选划分方式集合对应的第一信息、第三信息和第二信息的解析方式相同或相近,因此,还可以将上述若干种候选划分方式集合合并为一类,每一类采用一种解析方法。这样的话,第一信息、第三信息和第二信息的解析方法与上述按照表8确定第一信息、第三信息和第二信息的解析方法是等价的,但判断分支更少。
示例性的,解码端设备可以根据表4示出的解析方式确定第一信息STSplitFlag,根据表9示出的解析方式确定第三信息STSplitType,根据表10示出的解析方式确定第二信息STSplitDir。
表8
表9
表10
可以看出,不论解码端设备是按照第一信息、第二信息以及第三信息的顺序确定第二级编码树的节点划分方式信息,还是按照第一信息、第三信息以及第二信息的顺序确定第二级编码树的节点划分方式信息,在第一预设划分条件的作用下,解码端设备均可快速解码,且解码的复杂度较低。
在上述实施例中,第一级编码树对应的划分方式包括四叉树划分,第二级编码树对应的划分方式包括二叉树划分和三叉树划分。在实际应用中,第二级编码树对应的划分方式还可以包括四叉树划分,这样解码端设备需根据第一预设划分条件和第二预设划分条件确定与第一节点对应的候选划分方式集合,进而确定与第一节点对应的划分方式。
如图7所示,在这种场景中,本申请实施例提供的图像数据的解码方法包括:
S700、解码端设备得到包含图像数据的码流。
S700可以参考上述S600的描述,此处不再进行详细赘述。
S701、解码端设备解码其得到的码流,得到第一级编码树的节点划分方式信息。
S701可以参考上述S601的描述,此处不再进行详细赘述。
S702、解码端设备解析其得到的码流,得到第二级编码树的节点划分方式信息。
其中,第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式,第一节点对应的划分方式为第一节点对应的候选划分方式集合中的一种,第一节点对应的候选方式集合是根据第一预设划分条件和第二预设划分条件确定的,第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分的至少一种,第二预设划分条件用于指示是否限制按照四叉树划分进行划分第一节点。
第二级编码树的根节点为第一级编码树的一个叶节点。第二级编码树对应的节点划分方式与第一级编码树对应的节点划分方式不相同,本实施例中第二级编码树对应的节点划分方式包括二叉树划分、三叉树划分以及四叉树划分,二叉树划分包括水平二分和竖直二分,三叉树划分包括水平三分和竖直三分。
与上述S602不同的是,本实施例中解码端设备需要根据第一预设划分条件和第二预设划分条件确定与第一节点对应的候选划分方式集合。
第一预设划分条件与图6所述实施例中的第一预设划分条件相同,这里,第二预设划分条件可以包括以下至少一种预设划分子条件:
第十预设划分子条件:如果第一节点的第二级编码树层级小于预设的最大第二级编码树层级,第一节点对应的候选划分方式集合不包括四叉树划分。
第十一预设划分子条件:如果第一节点对应的图像区域的宽高比大于或等于第五预设阈值,第一节点对应的候选划分方式集合不包括四叉树划分。
与上述S602类似,本实施例中的解码端设备首先根据第一预设划分条件和第二预设划分条件,确定第一节点对应的候选划分方式集合,然后再根据第一节点对应的划分方式,解析码流,确定第二级编码树对应的节点划分方式信息。
由于本实施例中第二级编码树对应的节点划分方式还包括四叉树划分,因此本实施例在图6所述的基础上,第四标识(STSplitMode)的数值还可以为5,STSplitMode=5表示与该第四标识对应的节点对应的划分方式为四叉树划分。
相应的,本实施例中的第四标识还包括第四信息(本文中的第四信息用STQTSplitFlag表示),该第四信息用于表示是否按照四叉树划分进行划分第一节点。也就是说,本实施例中的第四标识包括第一信息、第二信息、第三信息和第四信息。本实施例中STQTSplitFlag的数值等于1表示与该第四标识对应的节点对应的划分方式包括四叉树划分,STQTSplitFlag的数值等于0表示与该第四标识对应的节点对应的候选划分方式集合不包括四叉树划分。
具体的,解码端设备依次确定出第一信息、第二信息、第三信息和第四信息,即可确定出第二级编码树对应的节点划分方式信息。
与图6所述的实施例类似,本实施例中的解码端设备可根据图6所述实施例中的第一数值与第四信息的内容确定第一信息,进而确定第二信息和第三信息。
示例性的,解码端设备可以根据表11示出的解析方式确定第一信息STSplitFlag,根据表12示出的解析方式确定第四信息STQTSplitFlag。表11中,QT的数值为1表示按照QT划分方式划分第一节点,QT的数值为0表示不允许按照QT划分方式划分第一节点。当满足“NumType>0||QT”时,解码端设备从码流中解析STSplitFlag,否则(即满足“NumType==0&&!QT”),STSplitFlag的数值默认为0。如果STSplitFlag的数值为1,则解码端设备继续解析STQTSplitFlag;否则,STQTSplitFlag、STSplitDir、STSplitType的数值均默认为0。
从表12可知,当与第一节点对应的划分方式包括四叉树划分时,解码端设备从码流中解析STQTSplitFlag;否则,STQTSplitFlag的数值默认为0。如果STQTSplitFlag的数值为0,则继续依次解析STSplitDir和STSplitType;否则,STSplitDir和STSplitType的数值默认为0。
本实施例中,STSplitDir和STSplitType的解析方式与图6所述实施例中STSplitDir和STSplitType的解析方式相同,此处不再进行详细赘述。
表11
NumType>0||QT | NumType==0&&!QT | |
STSplitFlag | a | NA(0) |
表12
QT | !QT | |
STQTSplitFlag | a | NA(0) |
解码端设备在确定出STSplitFlag、STSplitDir、STSplitType和STQTSplitFlag的数值后,可根据这四个数值确定出第四标识STSplitMode,即确定出第二级编码树中第一节点的划分方式信息。
示例性的,解码端设备利用表13所示的映射方式,根据STSplitFlag、STSplitDir、STSplitType和STQTSplitFlag的数值确定STSplitMode的数值。
表13
STSplitMode | STSplitFlag | STQTSplitFlag | STSplitDir | STSplitType |
0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 |
2 | 1 | 0 | 1 | 0 |
3 | 1 | 0 | 0 | 1 |
4 | 1 | 0 | 1 | 1 |
5 | 1 | 1 | 0 | 0 |
与其他信息相同,本实施例中的STQTSplitFlag也可使用跳过方式编码,或者使用1个概率模型进行编码,或者使用多个概率模型编码。
S703、如果第二级编码树的节点划分方式信息指示第二级编码树中的第一节点对应的划分方式为不继续划分,解码端设备解析码流,得到第一节点的编码信息。
S703可以参考上述S603,此处不在进行详细赘述。
S704、解码端设备根据第一节点的三个子节点的编码信息,对编码单元进行解码重建,得到对应图像数据的图像。
S704可以参考上述S604,此处不再进行详细赘述。
与上述图6所述的实施例相比,本实施例中的第二级编码树对应的划分方式还包括四叉树划分,进一步地限制了与第一节点对应的候选划分方式集合包括的划分方式,这样,可进一步地提高了解码端设备的解码速率。
此外,本申请实施例还提供一种图像数据的编码方法,该编码方法可以应用在图4所示的图像处理系统中。
如图8所示,本申请实施例提供的图像数据的编码方法包括:
S800、编码端设备确定与待编码图像块对应的CTU。
从前面描述可知,一幅图像由多个CTU构成,一个CTU通常对应于一个方形图像区域。编码端设备在获取到某一图像后,对该图像的每个CTU进行编码处理。
编码端设备对每个CTU的编码处理过程均相同,因此,本申请实施例以编码端设备对其中一个CTU的编码处理为例进行说明。
S801、编码端设备将CTU按照第一级编码树对应的节点划分方式进行划分,得到第一级编码树的叶节点。
第一级编码树的根节点对应CTU,第一级编码树对应的节点划分方式为四叉树划分。
具体的,编码端设备将CTU确定为第一级编码树的根节点,使用QT划分方式,将该CTU递归划分为至少一个叶节点。
编码端设备在获取到第一级编码树的至少一个叶节点后,将第一级编码树的每个叶节点确定为第二级编码树的根节点,并依次对第二级编码树的每个根节点执行下述步骤,直到获取到第二级编码树的所有叶节点的信息。本申请实施例以编码端设备对第二级编码树中的第一节点的处理为例进行说明。
S802、编码端设备确定第二级编码树中的第一节点对应的候选划分方式集合,第一节点对应的候选划分方式集合满足第一预设划分条件。
第一预设划分条件用于指示是否限制按照目标划分方式划分第一节点,第二级编码树的根节点为第一级编码树的一个叶节点,目标划分方式包括水平二分、水平三分、竖直二分和竖直三分中的至少一种。
一般的,在第一节点的划分无任何限制条件的情况下,第一节点能够使用的划分方式包括不继续划分、水平二分、水平三分、竖直二分、竖直三分和四叉树划分方式。这样的话,编码端设备需要依次计算这六种划分方式的RD cost,导致编码复杂度较高。
本申请实施例提出了限制第一节点能够使用的划分方式的第一预设划分条件,该第一预设划分条件与图6所示实施例中描述的第一预设划分条件相同,此处不再进行详细赘述。
在第一预设划分条件的作用下,限制了第一节点对应的候选划分方式集合所包括的划分方式的数量,这样在大部分情况下,编码端设备无需再计算针对第一节点的六种划分方式的RD cost,降低了编码复杂度。
S803、如果第一节点对应的候选划分方式集合包括不继续划分,编码端设备对与第一节点对应的CU进行编码,得到对应CU的编码单元码流。
如果第一节点对应的候选划分方式集合包括为不继续划分,则说明第一节点为第二级编码树的叶节点,该第一节点对应一个CU。编码端设备对与该第一节点对应的CU进行编码,得到与该CU的编码单元码流。
具体的,CU编码包括预测(prediction)、变换(transform)、量化(quantization)、熵编码(entropy coding)等环节。对于某一CU而言,编码端设备对该CU进行编码,得到该CU的CU码流的过程主要包括:
(1)、编码端设备根据预测模式,选用帧内预测或帧间预测,得到CU的预测像素。
(2)、编码端设备将CU的原始像素和CU的预测像素之间的残差进行变化和量化,得到变换系数,并对得到的变换系数进行反量化、反变换处理,从而得到该CU的重建残差。
(3)、编码端设备将该CU的预测像素和该CU的重建残差相加后进行环路滤波处理,得到该CU的重建像素。
(4)、编码端设备对该CU的预测模式、变换系数等信息进行熵编码,得到CU码流。
编码端设备对CU进行编码,得到该CU的CU码流的详细过程可以参考现有的生成CU码流的方法,此处不再进行详细赘述。
S804、如果第一节点对应的候选划分方式集合未包括不继续划分,编码端设备计算第一节点对应的候选划分方式集合中的每种划分方式的RD cost。
对于第一节点对应的候选划分方式集合中的某一种划分方式集合,编码端设备使用该划分方式划分第一节点,并获取该划分方式划分第一节点后的所有CU,编码端设备计算每个CU的RD cost,并将所有CU的RD cost之和确定为该划分方式的RD cost。
可选的,对于任一CU而言,该CU的RD cost等于该CU包含的像素的重建失真的平方误差总和(Sum of Squared Errors,SSE)与该CU对应码流的比特数估算值的加权和。
S805、编码端设备将最小的率失真代价对应的划分方式确定为第一节点对应的目标划分方式。
S806、编码端设备使用第一节点对应的目标划分方式划分第一节点。
编码端设备使用第一节点对应的目标划分方式划分第一节点后,再对第一节点的每个子节点依次执行S802-S806,直到获取到第二级编码树中的所有叶节点。
第二级编码树的每个叶节点对应一个CU,编码端设备在获取到第二级编码树的所有叶节点后,可获取到第二级编码树每个叶节点对应的CU。从S803可知,编码端设备对一个CU编码可得到该CU对应的CU码流。因此,编码端设备可得到至少一个CU码流。这样,编码端设备根据至少一个CU码流、第一级编码树对应的节点划分方式信息以及第二级编码树对应的节点划分方式信息,可得到CTU码流,进而生成包括图像数据的码流。
进一步地,本申请实施例中的编码端设备还可以根据第二预设划分条件确定第一节点对应的候选划分方式集合。
这里,第二预设划分条件可以包括以下至少一种预设划分子条件:
第十预设划分子条件:如果第一节点的第二级编码树层级小于预设的最大第二级编码树层级,第一节点对应的候选划分方式集合不包括四叉树划分。
第十一预设划分子条件:如果第一节点对应的图像区域的宽高比大于或等于第五预设阈值,第一节点对应的候选划分方式集合不包括四叉树划分。
本申请实施例中的第一预设条件限制了第二级编码树中的节点的划分,这样,大幅度的减少了划分第二级编码树中节点的复杂度,降低了编码复杂度。
本申请实施例提供一种解码端设备,该解码端设备用于执行以上图像数据的解码方法中的解码端设备所执行的步骤。本申请实施例提供的解码端设备可以包括相应步骤所对应的模块。
本申请实施例可以根据上述方法示例对解码端设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图9示出上述实施例中所涉及的终端设备的一种可能的结构示意图。如图9所示,解码端设备包括获取模块900、解析模块901和解码重构模块910。获取模块900用于支持该解码端设备执行上述实施例中的S600、和/或S700等,和/或用于本文所描述的技术的其它过程;解析模块901用于支持该解码端设备执行上述实施例中的S601、S602、S603、S701、S702、和/或S703等,和/或用于本文所描述的技术的其它过程;解码重构模块910用于支持该解码端设备执行上述实施例中的S604、和/或S704等,和/或用于本文所描述的技术的其它过程。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。当然,本申请实施例提供的解码端设备包括但不限于上述模块,例如解码端设备还可以包括存储模块911。存储模块911可以用于存储该解码端设备的程序代码和数据。
在采用集成的单元的情况下,本申请实施例中的解析模块901和解码重构模块910可以是图5中的处理器57,获取模块900可以是图5中的RF电路50和与该RF电路50连接的天线,存储模块911可以是图5中的存储器51。
当解码端设备运行时,该解码端设备执行如图6或图7所示的实施例的图像数据的解码方法。具体的图像数据的解码方法可参见上述如图6或图7所示的实施例中的相关描述,此处不再赘述。
本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括一个或多个程序代码,该一个或多个程序包括指令,当解码端设备中的处理器在执行该程序代码时,该解码端设备执行如图6或图7所示的图像数据的解码方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;解码端设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得解码端设备实施执行图6或图7所示的图像数据的解码方法中的解码端设备的步骤。
本申请实施例提供一种编码端设备,该编码端设备用于执行以上图像数据的编码方法中的编码端设备所执行的步骤。本申请实施例提供的编码端设备可以包括相应步骤所对应的模块。
本申请实施例可以根据上述方法示例对编码端设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图10示出上述实施例中所涉及的终端设备的一种可能的结构示意图。如图10所示,编码端设备包括确定模块1000、划分模块1001、编码模块1010和计算模块1011。确定模块1000用于支持该编码端设备执行上述实施例中的S800、S802、和/或S805等,和/或用于本文所描述的技术的其它过程;划分模块1001用于支持该编码端设备执行上述实施例中的S801、和/或S806等,和/或用于本文所描述的技术的其它过程;编码模块1010用于支持该编码端设备执行上述实施例中的S803,和/或用于本文所描述的技术的其它过程;计算模块1011用于支持该编码端设备执行上述实施例中的S804,和/或用于本文所描述的技术的其它过程。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。当然,本申请实施例提供的编码端设备包括但不限于上述模块,例如编码端设备还可以包括存储模块1002、发送模块1003和接收模块1004。存储模块1002可以用于存储该编码端设备的程序代码和数据。发送模块1003和接收模块1004用于与其他设备通信。
在采用集成的单元的情况下,本申请实施例中的确定模块1000、划分模块1001、编码模块1010和计算模块1011可以是图5中的处理器57,发送模块1003和接收模块1004可以是图5中的RF电路50和与该RF电路50连接的天线,存储模块1002可以是图5中的存储器51。
当编码端设备运行时,该编码端设备执行如图8所示的实施例的图像数据的解码方法。具体的图像数据的解码方法可参见上述如图8所示的实施例中的相关描述,此处不再赘述。
本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括一个或多个程序代码,该一个或多个程序包括指令,当编码端设备中的处理器在执行该程序代码时,该编码端设备执行如图8所示的图像数据的编码方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;编码端设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得编码端设备实施执行图8所示的图像数据的解码方法中的编码端设备的步骤。
在上述实施例中,可以全部或部分的通过软件,硬件,固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式出现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,DVD)或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种图像数据的解码方法,其特征在于,所述解码方法包括:
得到包含所述图像数据的码流;
解析所述码流,得到第一级编码树的节点划分方式信息,其中,所述第一级编码树的根节点对应一个编码树单元CTU,所述第一级编码树的叶节点是通过所述第一级编码树的节点划分方式信息对应的节点划分方式和所述第一级编码树的根节点进行指示的;
解析所述码流,得到第二级编码树的第一节点划分方式信息,其中,所述第一节点划分方式信息包括所述第二级编码树中的第一节点A对应的划分方式,所述第一节点A对应的划分方式为所述第一节点A对应的候选划分方式集合中的一种,所述候选划分方式集合是根据预设划分条件确定的,所述候选划分方式集合包括水平二分、水平三分、竖直二分和竖直三分,所述第二级编码树的根节点为所述第一级编码树的一个叶节点;
根据所述第一节点A对应的划分方式,划分所述第一节点A获取多个第一子节点;
在所述多个第一子节点中的第一子节点a需要继续划分时,根据所述第一节点A对应的划分方式,确定所述第一子节点a的可用划分方式集合,其中,所述第一子节点a对应的图像区域的面积为所述多个第一个子节点对应的图像区域的面积中最大的,所述可用划分方式集合为所述第一节点A对应的候选划分方式集合的子集;
解析所述码流,获取所述第一子节点a对应的节点划分方式信息,所述第一子节点a对应的节点划分方式信息包括所述第一子节点a对应的划分方式,所述第一子节点a对应的划分方式为所述可用划分方式集合中的一种;
在所述第一子节点a不需要继续划分时,解析所述码流,得到所述第一子节点a的编码信息,其中,所述第一子节点a对应一个编码单元;以及
根据所述第一子节点a的编码信息,对所述编码单元进行解码重建,得到对应所述图像数据的图像块。
2.根据权利要求1所述的解码方法,其特征在于,
所述第一级编码树对应的节点划分方式包括四叉树划分,所述第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
3.根据权利要求1或2所述的解码方法,其特征在于,所述根据所述第一节点A对应的划分方式,确定所述第一子节点a的可用划分方式集合包括:如果所述第一节点A对应的划分方式为所述水平三分,所述第一子节点a对应的可用划分方式集合不包括所述水平二分;如果所述第一节点A对应的划分方式为所述竖直三分,所述第一子节点a对应的可用划分方式集合不包括所述竖直二分。
4.根据权利要求1或2所述的解码方法,其特征在于,所述第二级编码树的第一节点划分方式信息包括第一信息、第二信息以及第三信息,所述第一信息用于表示是否继续划分所述第一节点,所述第二信息用于表示划分所述第一节点的方向,所述第三信息用于表示划分所述第一节点的模式。
5.一种图像数据的编码方法,其特征在于,所述编码方法包括:
确定与待编码图像块对应的编码树单元CTU;
将所述CTU按照第一级编码树对应的节点划分方式进行划分,得到所述第一级编码树的叶节点,所述第一级编码树的根节点对应所述CTU;
确定第二级编码树中的第一节点A对应的候选划分方式集合,所述候选划分方式集合是根据预设划分条件确定的,所述第一节点A对应的候选划分方式集合包括水平二分、水平三分、竖直二分和竖直三分;
从所述候选划分方式集合中确定与所述第一节点A对应的划分方式;
根据所述第一节点A对应的划分方式,划分所述第一节点A获取多个第一子节点;
在所述多个第一子节点中的第一子节点a需要继续划分时,根据所述第一节点A对应的划分方式,确定所述第一子节点a的可用划分方式集合,其中,所述第一子节点a对应的图像区域的面积为所述多个第一个子节点对应的图像区域的面积中最大的,所述可用划分方式集合为所述第一节点A对应的候选划分方式集合子集;
从所述可用划分方式集合中确定与所述第一子节点a对应的划分方式;以及
将所述第一节点A对应的划分方式以及所述第一子节点a对应的划分方式信息写入码流。
6.根据权利要求5所述的编码方法,其特征在于,所述第一级编码树对应的节点划分方式包括四叉树划分,所述第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
7.根据权利要求5或6所述的编码方法,其特征在于,所述根据所述第一节点A对应的划分方式,确定所述第一子节点a的可用划分方式集合包括:如果所述第一节点A对应的划分方式为所述水平三分,所述第一子节点a对应的可用划分方式集合不包括所述水平二分;如果所述第一节点A对应的划分方式为所述竖直三分,所述第一子节点a对应的可用划分方式集合不包括所述竖直二分。
8.一种解码端设备,其特征在于,包括:
获取模块,用于得到包含图像数据的码流;
解析模块,用于:
解析所述码流,得到第一级编码树的节点划分方式信息,其中,所述第一级编码树的根节点对应一个编码树单元CTU,所述第一级编码树的叶节点是通过所述第一级编码树的节点划分方式信息对应的节点划分方式和所述第一级编码树的根节点进行指示的;
解析所述码流,得到第二级编码树的第一节点划分方式信息,其中,所述第一节点划分方式信息包括所述第二级编码树中的第一节点A对应的划分方式,所述第一节点A对应的划分方式为所述第一节点A对应的候选划分方式集合中的一种,所述候选划分方式集合是根据预设划分条件确定的,所述候选划分方式集合包括水平二分、水平三分、竖直二分和竖直三分,所述第二级编码树的根节点为所述第一级编码树的一个叶节点;
根据所述第一节点A对应的划分方式,划分所述第一节点A获取多个第一子节点;
在所述多个第一子节点中的第一子节点a需要继续划分时,根据所述第一节点A对应的划分方式,确定所述第一子节点a的可用划分方式集合,其中,所述第一子节点a对应的图像区域的面积为所述多个第一个子节点对应的图像区域的面积中最大的,所述可用划分方式集合为所述第一节点A对应的候选划分方式集合的子集;以及
解析所述码流,获取所述第一子节点a对应的节点划分方式信息,所述第一子节点a对应的节点划分方式信息包括所述第一子节点a对应的划分方式,所述第一子节点a对应的划分方式为所述可用划分方式集合中的一种;
解码重建模块,用于:
在所述第一子节点a不需要继续划分时,解析所述码流,得到所述第一子节点a的编码信息,其中,所述第一子节点a对应一个编码单元;以及
根据所述第一子节点a的编码信息,对所述编码单元进行解码重建,得到对应所述图像数据的图像块。
9.根据权利要求8所述的解码端设备,其特征在于,所述第一级编码树对应的节点划分方式包括四叉树划分,所述第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
10.根据权利要求8或9所述的解码端设备,其特征在于,所述根据所述第一节点A对应的划分方式,确定所述第一子节点a的可用划分方式集合包括:如果所述第一节点A对应的划分方式为所述水平三分,所述第一子节点a对应的可用划分方式集合不包括所述水平二分;如果所述第一节点A对应的划分方式为所述竖直三分,所述第一子节点a对应的可用划分方式集合不包括所述竖直二分。
11.根据权利要求8或9所述的解码端设备,其特征在于,所述第二级编码树的第一节点划分方式信息包括第一信息、第二信息以及第三信息,所述第一信息用于表示是否继续划分所述第一节点,所述第二信息用于表示划分所述第一节点的方向,所述第三信息用于表示划分所述第一节点的模式。
12.一种编码端设备,其特征在于,包括:
确定模块,用于确定与待编码图像块对应的编码树单元CTU;
划分模块,用于:将所述CTU按照第一级编码树对应的节点划分方式进行划分,得到所述第一级编码树的叶节点,所述第一级编码树的根节点对应所述CTU;
确定第二级编码树中的第一节点A对应的候选划分方式集合,所述候选划分方式集合是根据预设划分条件确定的,所述第一节点A对应的候选划分方式集合包括水平二分、水平三分、竖直二分和竖直三分;
从所述候选划分方式集合中确定与所述第一节点A对应的划分方式;
根据所述第一节点A对应的划分方式,划分所述第一节点A获取多个第一子节点;
在所述多个第一子节点中的第一子节点a需要继续划分时,根据所述第一节点A对应的划分方式,确定所述第一子节点a的可用划分方式集合,其中,所述第一子节点a对应的图像区域的面积为所述多个第一个子节点对应的图像区域的面积中最大的,所述可用划分方式集合为所述第一节点A对应的候选划分方式集合子集;以及
从所述可用划分方式集合中确定与所述第一子节点a对应的划分方式;
编码模块,用于将所述第一节点A对应的划分方式以及所述第一子节点a对应的划分方式信息写入码流。
13.根据权利要求12所述的编码端设备,其特征在于,所述第一级编码树对应的节点划分方式包括四叉树划分,所述第二级编码树对应的节点划分方式包括二叉树划分和三叉树划分。
14.根据权利要求12或13所述的编码端设备,其特征在于,所述根据所述第一节点A对应的划分方式,确定所述第一子节点a的可用划分方式集合包括:如果所述第一节点A对应的划分方式为所述水平三分,所述第一子节点a对应的可用划分方式集合不包括所述水平二分;如果所述第一节点A对应的划分方式为所述竖直三分,所述第一子节点a对应的可用划分方式集合不包括所述竖直二分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011327920.6A CN112822491B (zh) | 2017-06-28 | 一种图像数据的编码、解码方法及装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710509138.8A CN109151468B (zh) | 2017-06-28 | 2017-06-28 | 一种图像数据的编码、解码方法及装置 |
CN202011327920.6A CN112822491B (zh) | 2017-06-28 | 一种图像数据的编码、解码方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710509138.8A Division CN109151468B (zh) | 2017-06-28 | 2017-06-28 | 一种图像数据的编码、解码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112822491A CN112822491A (zh) | 2021-05-18 |
CN112822491B true CN112822491B (zh) | 2024-05-03 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016091161A1 (en) * | 2014-12-10 | 2016-06-16 | Mediatek Singapore Pte. Ltd. | Method of video coding using binary tree block partitioning |
CN105721866A (zh) * | 2016-02-01 | 2016-06-29 | 北京奇艺世纪科技有限公司 | 一种编码单元划分方法及装置 |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016091161A1 (en) * | 2014-12-10 | 2016-06-16 | Mediatek Singapore Pte. Ltd. | Method of video coding using binary tree block partitioning |
CN105721866A (zh) * | 2016-02-01 | 2016-06-29 | 北京奇艺世纪科技有限公司 | 一种编码单元划分方法及装置 |
Non-Patent Citations (1)
Title |
---|
结合率失真代价预测的HEVC快速CU划分;杨楷芳等;西北工业大学学报(第02期);第252-258页 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109151468B (zh) | 一种图像数据的编码、解码方法及装置 | |
CN109151477B (zh) | 一种图像数据的编码、解码方法及装置 | |
CN105407353A (zh) | 一种图像压缩方法,及装置 | |
CN115002463B (zh) | 图像处理方法、智能终端及存储介质 | |
EP3761646A1 (en) | Context modelling method and device for partition flag bit | |
CN116668704B (zh) | 处理方法、处理设备及存储介质 | |
CN112822491B (zh) | 一种图像数据的编码、解码方法及装置 | |
RU2773641C2 (ru) | Способ и устройство кодирования данных изображения, способ и устройство декодирования данных изображения | |
CN116847088B (zh) | 图像处理方法、处理设备及存储介质 | |
CN117412055A (zh) | 图像处理方法、电子设备和存储介质 | |
KR20230173695A (ko) | 엔트로피 인코딩, 디코딩 방법 및 장치 | |
CN116233388A (zh) | 点云编、解码处理方法、装置、编码设备及解码设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |