一级变换分割和自适应子块变换
文献发布时间:2023-06-19 11:03:41
交叉引用
本申请要求于2018年12月6日提交美国专利局、申请号为62/776,354的美国临时申请的优先权,于2018年12月27日提交美国专利局、申请号为62/785,681的美国临时申请的优先权,以及于2019年11月25日提交美国专利局、申请号为16/694,338的美国正式申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及下一代视频编解码技术,超HEVC(高效视频编码),例如,通用视频编码(VVC)。尤其公开了一种变换方案,用于在一个编码单元中应用多个变换,即变换分割,以及自适应子块变换,其使用预测块信息来确定变换大小。
背景技术
ITU-T VCEG(Q6/16)和ISO/IEC MPEG(JTC 1/SC 29/WG 11)在2013年(版本1)、2014年(版本2)、2015年(版本3)和2016年(版本4)中发布了H.265/HEVC(高效视频编码)标准。至此,他们致力于研究开发超过HEVC标准(包括其扩展)的未来视频编码技术标准的潜在需求。2017年10月,他们发出了联合呼吁,征集针对具有超出HEVC(CfP)能力的视频压缩的提案。截至2018年2月15日,分别提交了针对标准动态范围(SDR)的共22个CfP响应、针对高动态范围(HDR)的12个CfP响应和针对360种视频类别的12个CfP响应。2018年4月,在122运动图象专家组(MPEG)/第十次(联合视频探索组-联合视频专家组)JVET会议上,对所有收到的CfP响应都进行了评估。通过此次会议的仔细评估,JVET正式启动了超过HEVC的下一代视频编码的标准化。新的标准被命名为通用视频编码(VVC)。VVC测试模型(VTM)的当前版本即VTM3。
发明内容
本申请实施例提供了一种将编码单元CU分割成至少一个变换单元TU用于对视频序列进行编码的方法,使用至少一个处理器,所述方法包括:
确定所述CU的高度;
确定所述CU的宽度;
基于所述CU的高度和所述CU的宽度,确定所述至少一个变换单元TU中每个TU的TU大小;
基于所述CU的高度和所述CU的宽度,确定所述至少一个TU的至少一个TU位置;及,
基于所述至少一个TU的大小和所述至少一个TU的所述至少一个位置,将所述CU分割成所述至少一个TU。
本申请实施例还提供了一种将编码单元CU分割成至少一个变换单元TU用于对视频序列进行编码的设备,所述设备包括:
至少一个存储器,用于存储程序代码;
至少一个处理器,用于读取所述程序代码,并且根据所述程序代码的指令进行操作,所述程序代码包括:
第一确定代码,用于使得所述至少一个处理器确定所述CU的高度;
第二确定代码,用于使得所述至少一个处理器确定所述CU的宽度;
第三确定代码,用于使得所述至少一个处理器基于所述CU的高度和所述CU的宽度,确定所述至少一个变换单元TU中每个TU的TU大小;
第四确定代码,用于使得所述至少一个处理器基于所述CU的高度和所述CU的宽度,确定所述至少一个TU的至少一个TU位置;及,
分割代码,用于使得所述至少一个处理器基于所述至少一个TU的大小和所述至少一个TU的所述至少一个位置,将所述CU分割成所述至少一个TU。
本申请实施例还提供一种非暂时性计算机可读介质,其上存储有指令,所述指令包括至少一个指令,当所述至少一个指令由将编码单元CU分割成至少一个变换单元TU用于对视频序列进行编码的设备执行时,使得所述至少一个处理器:
确定所述CU的高度;
确定所述CU的宽度;
基于所述CU的高度和所述CU的宽度,确定所述至少一个变换单元TU中每个TU的TU大小;
基于所述CU的高度和所述CU的宽度,确定所述至少一个TU的至少一个TU位置;及,
基于所述至少一个TU的大小和所述至少一个TU的所述至少一个位置,将所述CU分割成所述至少一个TU。
附图说明
根据以下详细描述和附图,所公开的主题的其他特征、性质和各种优点将进一步明确,其中:
图1示出了根据本申请一实施例的四叉树二叉树结构的示例;
图2A和2B示出了根据本申请一实施例的多类型树结构的示例;
图3示出了根据本申请一实施例的子块变换模式的示例;
图4A和4B示出了根据本申请实施例的对正方形块进行子块分区的示例;
图5A-5E示出了根据本申请一实施例的对长方形块进行子块分区的示例;
图6A-6C示出了根据本申请另一实施例的对长方形块进行子块分区的示例;
图7A-7C示出了根据本申请又一实施例的对长方形块进行子块分区的示例;
图8A-8C示出了根据本申请另一实施例的对长方形块进行子块分区的示例;
图9A-9D示出了根据本申请实施例的不同变换集的应用示例;
图10示出了根据本申请一实施例的通信系统的简化框图的示意图;
图11示出了根据本申请一实施例的在流传输环境中视频编码器和视频解码器的位置的框图;
图12示出了根据本申请一实施例的视频解码器的框图;
图13示出了根据本申请一实施例的视频编码器的框图;
图14示出了根据本申请一实施例的选择参考样本用于对已编码视频码流中的当前块进行编码的示例性过程的流程图;以及
图15示出了根据本申请实施例的计算机系统的示意图。
具体实施方式
在HEVC中,使用被称为编码树的四叉树结构,将编码树单元(CTU)分割成编码单元(CU),以适应各种局部特性。在CU级上作出如下决策:是否使用帧间(时间)或帧内(空间)预测对图片区域进行编码。可根据PU分割类型,将每个CU进一步分割成一个、两个或四个预测单元(PU)。在一个PU内,应用相同的预测过程,并且基于PU将相关信息发送到解码器。在基于PU分割类型应用预测过程来获得残差块之后,可根据另一四叉树结构(如CU的编码树),将CU分割成变换单元(TU)。HEVC结构的特征是,它具有多个分区概念,包括CU、PU和TU。在HEVC中,CU或TU可仅为正方形形状,而PU可为用于帧间预测块的正方形或矩形形状。在HEVC中,可将一个编码块进一步分割成四个正方形子块,并且对每个子块(即,TU)执行变换。每个TU可被进一步递归地分割(使用四叉树分割)成更小的TU,其被称为残差四叉树(RQT)。
在图片边界处,HEVC采用隐式四叉树分割,使得块可以保持四叉树分割,直到块的大小符合了图片边界。
在HEVC中,使用被称为编码树的四叉树结构,将CTU分割成CU,以适应各种局部特性。在CU级上作出如下决策:是否使用帧间(时间)或帧内(空间)预测对图片区域进行编码。可根据PU分割类型,将每个CU进一步分割成一个、两个或四个PU。在一个PU内,应用相同的预测过程,并且基于PU将相关信息发送到解码器。在基于PU分割类型应用预测过程来获得残差块之后,CU可根据另一四叉树结构(如CU的编码树),将分区成变换单元(TU)。HEVC结构的关键特征之一是,它具有多个分区概念,包括CU、PU和TU。
四叉树二叉树(QTBT)结构去除了多个分区类型的概念,即去除了CU、PU和TU概念,并且为CU分区形状提供了更多灵活性。在QTBT块结构中,CU可具有正方形或矩形形状。如图1所示,首先由四叉树结构对编码树单元(CTU)进行分割。四叉树叶节点由二叉树结构进一步进行分割。在二叉树分割中,可有两种分割类型,即对称水平分割和对称垂直分割。二叉树叶节点被称为编码单元(CU),并且该片段可被用于预测和变换处理而无需任何进一步的分区。这意味着,CU、PU和TU在QTBT编码块结构中具有相同的块大小。在JEM中,CU有时由不同颜色分量的编码块(CB)组成,例如,在4:2:0色度格式的P和B条带的情况下,一个CU包含一个亮度CB和两个色度CB,并且有时由单个分量的CB组成,例如,在I条带的情况下,一个CU仅包含一个亮度CB或仅包含两个色度CB。
为QTBT分区方案定义了以下参数:
CTU大小:四叉树的根节点大小,与HEVC中相同的概念
MinQTSize:允许的最小四叉树叶节点大小
MaxBTSize:允许的最大二叉树根节点大小
MaxBTDepth:允许的最大二叉树深度
MinBTSize:允许的最小二叉树叶节点大小
在QTBT分区结构的一个示例中,将CTU大小设定为128×128亮度样本和两个相应的64×64色度样本块,将MinQTSize设定为16×16,将MaxBTSize设定为64×64,将MinBTSize(针对宽度和高度两者)设定为4×4,并且将MaxBTDepth设定为4。四叉树分区首先应用于CTU以生成四叉树叶节点。四叉树叶节点的大小可从16×16(即,MinQTSize)到128×128(即,CTU大小)。如果叶四叉树节点是128×128,则其不会进一步被二叉树分割,因为其大小超过MaxBTSize(即,64×64)。否则,叶四叉树节点可由二叉树进一步进行分割。因此,四叉树叶节点也是二叉树的根节点,并且其二叉树深度为0。当二叉树深度达到MaxBTDepth(即,4)时,不考虑进一步的分割。当二叉树节点具有等于MinBTSize(即,4)的宽度时,不考虑进一步的水平分割。类似地,当二叉树节点的高度等于MinBTSize时,不考虑进一步的垂直分割。通过预测和变换来进一步处理二叉树的叶节点,而无需任何进一步的分区。在JEM中,最大CTU大小是256×256亮度样本。
图1的左边部分图示了通过使用QTBT进行块分区的示例,并且图1的右边部分图示了对应的树表示。实线指示四叉树分割,虚线指示二叉树分割。在二叉树的每个分割(即,非叶)节点中,用信号通知一个标志以指示使用了哪种分割类型(即,水平或垂直),其中,0指示水平分割,1指示垂直分割。对于四叉树分割,不需要指示分割类型,因为四叉树分割总是水平地和垂直地分割块,以产生具有相等大小的4个子块。
此外,QTBT方案支持亮度和色度的灵活性,以具有单独的QTBT结构。当前,对于P条带和B条带,一个CTU中的亮度CTB和色度CTB共享相同的QTBT结构。然而,对于I条带,通过QTBT结构将亮度CTB分割成CU,并且通过另一QTBT结构将色度CTB分割成色度CU。这意味着,I条带中的CU由亮度分量的编码块或两个色度分量的编码块组成,并且P或B条带中的CU由所有三个颜色分量的编码块组成。
在HEVC中,对小块进行帧间预测时会被限制,以减少运动补偿的存储器访问,使得对于4×8块和8×4块不支持双向预测,对于4×4块不支持帧间预测。在JEM-7.0中实现的QTBT中,这些限制被去除。
多类型树(MTT)结构是比QTBT更灵活的树结构。在MTT中,除了四叉树和二叉树以外,引入了水平中心侧三叉树和垂直中心侧三叉树,如图2A和图2B所示。具体地,图2A图示了垂直中心侧三叉树分区的示例,并且图2A图示了水平中心侧三叉树分区的示例。
三叉树分区可补充四叉树分区和二叉树分区,因为三叉树分区能够捕获位于块中心的对象,而四叉树和二叉树总是沿着块中心分割。此外,所提出的三叉树分区的宽度和高度总是2的幂,因此不需要额外的变换。
两级树的设计主要是为了降低复杂度。理论上,遍历树的复杂度是T^D,其中T表示分割类型的数量,并且D是树的深度。
在HEVC中,主变换是4点、8点、16点和32点DCT-2,并且变换核心矩阵使用8比特整数表示,即,8比特变换核心。较小DCT-2的变换核心矩阵是较大DCT-2的一部分,如下所示:
{64,64,64,64}
{83,36,-36,-83}
{64,-64,-64,64}
{36,-83,83,-36}
{64,64,64,64,64,64,64,64}
{89,75,50,18,-18,-50,-75,-89}
{83,36,-36,-83,-83,-36,36,83}
{75,-18,-89,-50,50,89,18,-75}
{64,-64,-64,64,64,-64,-64,64}
{50,-89,18,75,-75,-18,89,-50}
{36,-83,83,-36,-36,83,-83,36}
{18,-50,75,-89,89,-75,50,-18}
{64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64}
{90 87 80 70 57 43 25 9 -9-25-43-57-70-80-87-90}
{89 75 50 18-18-50-75-89-89-75-50-18 18 50 75 89}
{87 57 9-43-80-90-70-25 25 70 90 80 43 -9-57-87}
{83 36-36-83-83-36 36 83 83 36-36-83-83-36 36 83}
{80 9-70-87-25 57 90 43-43-90-57 25 87 70 -9-80}
{75-18-89-50 50 89 18-75-75 18 89 50-50-89-18 75}
{70-43-87 9 90 25-80-57 57 80-25-90 -9 87 43-70}
{64-64-64 64 64-64-64 64 64-64-64 64 64-64-64 64}
{57-80-25 90 -9-87 43 70-70-43 87 9-90 25 80-57}
{50-89 18 75-75-18 89-50-50 89-18-75 75 18-89 50}
{43-90 57 25-87 70 9-80 80 -9-70 87-25-57 90-43}
{36-83 83-36-36 83-83 36 36-83 83-36-36 83-83 36}
{25-70 90-80 43 9-57 87-87 57 -9-43 80-90 70-25}
{18-50 75-89 89-75 50-18-18 50-75 89-89 75-50 18}
{9-25 43-57 70-80 87-90 90-87 80-70 57-43 25 -9}
{64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 6464 64 64 64 64 64 64 64 64}
{90 90 88 85 82 78 73 67 61 54 46 38 31 22 13 4 -4-13-22-31-38-46-54-61-67-73-78-82-85-88-90-90}
{90 87 80 70 57 43 25 9 -9-25-43-57-70-80-87-90-90-87-80-70-57-43-25-9 9 25 43 57 70 80 87 90}
{90 82 67 46 22 -4-31-54-73-85-90-88-78-61-38-13 13 38 61 78 88 90 8573 54 31 4-22-46-67-82-90}
{89 75 50 18-18-50-75-89-89-75-50-18 18 50 75 89 89 75 50 18-18-50-75-89-89-75-50-18 18 50 75 89}
{88 67 31-13-54-82-90-78-46 -4 38 73 90 85 61 22-22-61-85-90-73-38 446 78 90 82 54 13-31-67-88}
{87 57 9-43-80-90-70-25 25 70 90 80 43 -9-57-87-87-57 -9 43 80 90 7025-25-70-90-80-43 9 57 87}
{85 46-13-67-90-73-22 38 82 88 54 -4-61-90-78-31 31 78 90 61 4-54-88-82-38 22 73 90 67 13-46-85}
{83 36-36-83-83-36 36 83 83 36-36-83-83-36 36 83 83 36-36-83-83-36 3683 83 36-36-83-83-36 36 83}
{82 22-54-90-61 13 78 85 31-46-90-67 4 73 88 38-38-88-73 -4 67 90 46-31-85-78-13 61 90 54-22-82}
{80 9-70-87-25 57 90 43-43-90-57 25 87 70 -9-80-80 -9 70 87 25-57-90-43 43 90 57-25-87-70 9 80}
{78 -4-82-73 13 85 67-22-88-61 31 90 54-38-90-46 46 90 38-54-90-31 6188 22-67-85-13 73 82 4-78}
{75-18-89-50 50 89 18-75-75 18 89 50-50-89-18 75 75-18-89-50 50 8918-75-75 18 89 50-50-89-18 75}
{73-31-90-22 78 67-38-90-13 82 61-46-88 -4 85 54-54-85 4 88 46-61-8213 90 38-67-78 22 90 31-73}
{70-43-87 9 90 25-80-57 57 80-25-90 -9 87 43-70-70 43 87 -9-90-25 8057-57-80 25 90 9-87-43 70}
{67-54-78 38 85-22-90 4 90 13-88-31 82 46-73-61 61 73-46-82 31 88-13-90 -4 90 22-85-38 78 54-67}
{64-64-64 64 64-64-64 64 64-64-64 64 64-64-64 64 64-64-64 64 64-64-6464 64-64-64 64 64-64-64 64}
{61-73-46 82 31-88-13 90 -4-90 22 85-38-78 54 67-67-54 78 38-85-22 904-90 13 88-31-82 46 73-61}
{57-80-25 90 -9-87 43 70-70-43 87 9-90 25 80-57-57 80 25-90 9 87-43-70 70 43-87 -9 90-25-80 57}
{54-85 -4 88-46-61 82 13-90 38 67-78-22 90-31-73 73 31-90 22 78-67-3890-13-82 61 46-88 4 85-54}
{50-89 18 75-75-18 89-50-50 89-18-75 75 18-89 50 50-89 18 75-75-1889-50-50 89-18-75 75 18-89 50}
{46-90 38 54-90 31 61-88 22 67-85 13 73-82 4 78-78 -4 82-73-13 85-67-22 88-61-31 90-54-38 90-46}
{43-90 57 25-87 70 9-80 80 -9-70 87-25-57 90-43-43 90-57-25 87-70 -980-80 9 70-87 25 57-90 43}
{38-88 73 -4-67 90-46-31 85-78 13 61-90 54 22-82 82-22-54 90-61-1378-85 31 46-90 67 4-73 88-38}
{36-83 83-36-36 83-83 36 36-83 83-36-36 83-83 36 36-83 83-36-36 83-8336 36-83 83-36-36 83-83 36}
{31-78 90-61 4 54-88 82-38-22 73-90 67-13-46 85-85 46 13-67 90-73 2238-82 88-54 -4 61-90 78-31}
{25-70 90-80 43 9-57 87-87 57 -9-43 80-90 70-25-25 70-90 80-43 -9 57-87 87-57 9 43-80 90-70 25}
{22-61 85-90 73-38-4 46-78 90-82 54-13-31 67-88 88-67 31 13-54 82-9078-46 4 38-73 90-85 61-22}
{18-50 75-89 89-75 50-18-18 50-75 89-89 75-50 18 18-50 75-89 89-7550-18-18 50-75 89-89 75-50 18}
{13-38 61-78 88-90 85-73 54-31 4 22-46 67-82 90-90 82-67 46-22 -4 31-54 73-85 90-88 78-61 38-13}
{9-25 43-57 70-80 87-90 90-87 80-70 57-43 25 -9 -9 25-43 57-70 80-8790-90 87-80 70-57 43-25 9}
{4-13 22-31 38-46 54-61 67-73 78-82 85-88 90-90 90-90 88-85 82-78 73-67 61-54 46-38 31-22 13 -4}
DCT-2核心具备对称/反对称特性,因此支持所谓的“部分蝶形”实施方案,以减少操作的次数(乘法、加法/减法、移位),并且可使用部分蝶形来获得矩阵乘法的相同结果。
在当前VVC中,除了与HEVC相同的4点、8点、16点和32点DCT-2变换之外,还可包括附加的2点和64点DCT-2。
VVC中定义的64点DCT-2核心如下表5中的64×64矩阵所示:
{
{aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa,aa}
{bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,-ck,-cj,-ci,-ch,-cg,-cf,-ce,-cd,-cc,-cb,-ca,-bz,-by,-bx,-bw,-bv,-bu,-bt,-bs,-br,-bq,-bp,-bo,-bn,-bm,-bl,-bk,-bj,-bi,-bh,-bg,-bf}
{ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,-be,-bd,-bc,-bb,-ba,-az,-ay,-ax,-aw,-av,-au,-at,-as,-ar,-aq,-ap,-ap,-aq,-ar,-as,-at,-au,-av,-aw,-ax,-ay,-az,-ba,-bb,-bc,-bd,-be,be,bd,bc,bb,ba,az,ay,ax,aw,av,au,at,as,ar,aq,ap}
{bg,bj,bm,bp,bs,bv,by,cb,ce,ch,ck,-ci,-cf,-cc,-bz,-bw,-bt,-bq,-bn,-bk,-bh,-bf,-bi,-bl,-bo,-br,-bu,-bx,-ca,-cd,-cg,-cj,cj,cg,cd,ca,bx,bu,br,bo,bl,bi,bf,bh,bk,bn,bq,bt,bw,bz,cc,cf,ci,-ck,-ch,-ce,-cb,-by,-bv,-bs,-bp,-bm,-bj,-bg}
{ah,ai,aj,ak,al,am,an,ao,-ao,-an,-am,-al,-ak,-aj,-ai,-ah,-ah,-ai,-aj,-ak,-al,-am,-an,-ao,ao,an,am,al,ak,aj,ai,ah,ah,ai,aj,ak,al,am,an,ao,-ao,-an,-am,-al,-ak,-aj,-ai,-ah,-ah,-ai,-aj,-ak,-al,-am,-an,-ao,ao,an,am,al,ak,aj,ai,ah}
{bh,bm,br,bw,cb,cg,-ck,-cf,-ca,-bv,-bq,-bl,-bg,-bi,-bn,-bs,-bx,-cc,-ch,cj,ce,bz,bu,bp,bk,bf,bj,bo,bt,by,cd,ci,-ci,-cd,-by,-bt,-bo,-bj,-bf,-bk,-bp,-bu,-bz,-ce,-cj,ch,cc,bx,bs,bn,bi,bg,bl,bq,bv,ca,cf,ck,-cg,-cb,-bw,-br,-bm,-bh}
{aq,at,aw,az,bc,-be,-bb,-ay,-av,-as,-ap,-ar,-au,-ax,-ba,-bd,bd,ba,ax,au,ar,ap,as,av,ay,bb,be,-bc,-az,-aw,-at,-aq,-aq,-at,-aw,-az,-bc,be,bb,ay,av,as,ap,ar,au,ax,ba,bd,-bd,-ba,-ax,-au,-ar,-ap,-as,-av,-ay,-bb,-be,bc,az,aw,at,aq}
{bi,bp,bw,cd,ck,-ce,-bx,-bq,-bj,-bh,-bo,-bv,-cc,-cj,cf,by,br,bk,bg,bn,bu,cb,ci,-cg,-bz,-bs,-bl,-bf,-bm,-bt,-ca,-ch,ch,ca,bt,bm,bf,bl,bs,bz,cg,-ci,-cb,-bu,-bn,-bg,-bk,-br,-by,-cf,cj,cc,bv,bo,bh,bj,bq,bx,ce,-ck,-cd,-bw,-bp,-bi}
{ad,ae,af,ag,-ag,-af,-ae,-ad,-ad,-ae,-af,-ag,ag,af,ae,ad,ad,ae,af,ag,-ag,-af,-ae,-ad,-ad,-ae,-af,-ag,ag,af,ae,ad,ad,ae,af,ag,-ag,-af,-ae,-ad,-ad,-ae,-af,-ag,ag,af,ae,ad,ad,ae,af,ag,-ag,-af,-ae,-ad,-ad,-ae,-af,-ag,ag,af,ae,ad}
{bj,bs,cb,ck,-cc,-bt,-bk,-bi,-br,-ca,-cj,cd,bu,bl,bh,bq,bz,ci,-ce,-bv,-bm,-bg,-bp,-by,-ch,cf,bw,bn,bf,bo,bx,cg,-cg,-bx,-bo,-bf,-bn,-bw,-cf,ch,by,bp,bg,bm,bv,ce,-ci,-bz,-bq,-bh,-bl,-bu,-cd,cj,ca,br,bi,bk,bt,cc,-ck,-cb,-bs,-bj}
{ar,aw,bb,-bd,-ay,-at,-ap,-au,-az,-be,ba,av,aq,as,ax,bc,-bc,-ax,-as,-aq,-av,-ba,be,az,au,ap,at,ay,bd,-bb,-aw,-ar,-ar,-aw,-bb,bd,ay,at,ap,au,az,be,-ba,-av,-aq,-as,-ax,-bc,bc,ax,as,aq,av,ba,-be,-az,-au,-ap,-at,-ay,-bd,bb,aw,ar}
{bk,bv,cg,-ce,-bt,-bi,-bm,-bx,-ci,cc,br,bg,bo,bz,ck,-ca,-bp,-bf,-bq,-cb,cj,by,bn,bh,bs,cd,-ch,-bw,-bl,-bj,-bu,-cf,cf,bu,bj,bl,bw,ch,-cd,-bs,-bh,-bn,-by,-cj,cb,bq,bf,bp,ca,-ck,-bz,-bo,-bg,-br,-cc,ci,bx,bm,bi,bt,ce,-cg,-bv,-bk}
{ai,al,ao,-am,-aj,-ah,-ak,-an,an,ak,ah,aj,am,-ao,-al,-ai,-ai,-al,-ao,am,aj,ah,ak,an,-an,-ak,-ah,-aj,-am,ao,al,ai,ai,al,ao,-am,-aj,-ah,-ak,-an,an,ak,ah,aj,am,-ao,-al,-ai,-ai,-al,-ao,am,aj,ah,ak,an,-an,-ak,-ah,-aj,-am,ao,al,ai}
{bl,by,-ck,-bx,-bk,-bm,-bz,cj,bw,bj,bn,ca,-ci,-bv,-bi,-bo,-cb,ch,bu,bh,bp,cc,-cg,-bt,-bg,-bq,-cd,cf,bs,bf,br,ce,-ce,-br,-bf,-bs,-cf,cd,bq,bg,bt,cg,-cc,-bp,-bh,-bu,-ch,cb,bo,bi,bv,ci,-ca,-bn,-bj,-bw,-cj,bz,bm,bk,bx,ck,-by,-bl}
{as,az,-bd,-aw,-ap,-av,-bc,ba,at,ar,ay,-be,-ax,-aq,-au,-bb,bb,au,aq,ax,be,-ay,-ar,-at,-ba,bc,av,ap,aw,bd,-az,-as,-as,-az,bd,aw,ap,av,bc,-ba,-at,-ar,-ay,be,ax,aq,au,bb,-bb,-au,-aq,-ax,-be,ay,ar,at,ba,-bc,-av,-ap,-aw,-bd,az,as}
{bm,cb,-cf,-bq,-bi,-bx,cj,bu,bf,bt,ci,-by,-bj,-bp,-ce,cc,bn,bl,ca,-cg,-br,-bh,-bw,ck,bv,bg,bs,ch,-bz,-bk,-bo,-cd,cd,bo,bk,bz,-ch,-bs,-bg,-bv,-ck,bw,bh,br,cg,-ca,-bl,-bn,-cc,ce,bp,bj,by,-ci,-bt,-bf,-bu,-cj,bx,bi,bq,cf,-cb,-bm}
{ab,ac,-ac,-ab,-ab,-ac,ac,ab,ab,ac,-ac,-ab,-ab,-ac,ac,ab,ab,ac,-ac,-ab,-ab,-ac,ac,ab,ab,ac,-ac,-ab,-ab,-ac,ac,ab,ab,ac,-ac,-ab,-ab,-ac,ac,ab,ab,ac,-ac,-ab,-ab,-ac,ac,ab,ab,ac,-ac,-ab,-ab,-ac,ac,ab,ab,ac,-ac,-ab,-ab,-ac,ac,ab}
{bn,ce,-ca,-bj,-br,-ci,bw,bf,bv,-cj,-bs,-bi,-bz,cf,bo,bm,cd,-cb,-bk,-bq,-ch,bx,bg,bu,-ck,-bt,-bh,-by,cg,bp,bl,cc,-cc,-bl,-bp,-cg,by,bh,bt,ck,-bu,-bg,-bx,ch,bq,bk,cb,-cd,-bm,-bo,-cf,bz,bi,bs,cj,-bv,-bf,-bw,ci,br,bj,ca,-ce,-bn}
{at,bc,-ay,-ap,-ax,bd,au,as,bb,-az,-aq,-aw,be,av,ar,ba,-ba,-ar,-av,-be,aw,aq,az,-bb,-as,-au,-bd,ax,ap,ay,-bc,-at,-at,-bc,ay,ap,ax,-bd,-au,-as,-bb,az,aq,aw,-be,-av,-ar,-ba,ba,ar,av,be,-aw,-aq,-az,bb,as,au,bd,-ax,-ap,-ay,bc,at}
{bo,ch,-bv,-bh,-ca,cc,bj,bt,-cj,-bq,-bm,-cf,bx,bf,by,-ce,-bl,-br,-ck,bs,bk,cd,-bz,-bg,-bw,cg,bn,bp,ci,-bu,-bi,-cb,cb,bi,bu,-ci,-bp,-bn,-cg,bw,bg,bz,-cd,-bk,-bs,ck,br,bl,ce,-by,-bf,-bx,cf,bm,bq,cj,-bt,-bj,-cc,ca,bh,bv,-ch,-bo}
{aj,ao,-ak,-ai,-an,al,ah,am,-am,-ah,-al,an,ai,ak,-ao,-aj,-aj,-ao,ak,ai,an,-al,-ah,-am,am,ah,al,-an,-ai,-ak,ao,aj,aj,ao,-ak,-ai,-an,al,ah,am,-am,-ah,-al,an,ai,ak,-ao,-aj,-aj,-ao,ak,ai,an,-al,-ah,-am,am,ah,al,-an,-ai,-ak,ao,aj}
{bp,ck,-bq,-bo,-cj,br,bn,ci,-bs,-bm,-ch,bt,bl,cg,-bu,-bk,-cf,bv,bj,ce,-bw,-bi,-cd,bx,bh,cc,-by,-bg,-cb,bz,bf,ca,-ca,-bf,-bz,cb,bg,by,-cc,-bh,-bx,cd,bi,bw,-ce,-bj,-bv,cf,bk,bu,-cg,-bl,-bt,ch,bm,bs,-ci,-bn,-br,cj,bo,bq,-ck,-bp}
{au,-be,-at,-av,bd,as,aw,-bc,-ar,-ax,bb,aq,ay,-ba,-ap,-az,az,ap,ba,-ay,-aq,-bb,ax,ar,bc,-aw,-as,-bd,av,at,be,-au,-au,be,at,av,-bd,-as,-aw,bc,ar,ax,-bb,-aq,-ay,ba,ap,az,-az,-ap,-ba,ay,aq,bb,-ax,-ar,-bc,aw,as,bd,-av,-at,-be,au}
{bq,-ci,-bl,-bv,cd,bg,ca,-by,-bi,-cf,bt,bn,ck,-bo,-bs,cg,bj,bx,-cb,-bf,-cc,bw,bk,ch,-br,-bp,cj,bm,bu,-ce,-bh,-bz,bz,bh,ce,-bu,-bm,-cj,bp,br,-ch,-bk,-bw,cc,bf,cb,-bx,-bj,-cg,bs,bo,-ck,-bn,-bt,cf,bi,by,-ca,-bg,-cd,bv,bl,ci,-bq}
{ae,-ag,-ad,-af,af,ad,ag,-ae,-ae,ag,ad,af,-af,-ad,-ag,ae,ae,-ag,-ad,-af,af,ad,ag,-ae,-ae,ag,ad,af,-af,-ad,-ag,ae,ae,-ag,-ad,-af,af,ad,ag,-ae,-ae,ag,ad,af,-af,-ad,-ag,ae,ae,-ag,-ad,-af,af,ad,ag,-ae,-ae,ag,ad,af,-af,-ad,-ag,ae}
{br,-cf,-bg,-cc,bu,bo,-ci,-bj,-bz,bx,bl,ck,-bm,-bw,ca,bi,ch,-bp,-bt,cd,bf,ce,-bs,-bq,cg,bh,cb,-bv,-bn,cj,bk,by,-by,-bk,-cj,bn,bv,-cb,-bh,-cg,bq,bs,-ce,-bf,-cd,bt,bp,-ch,-bi,-ca,bw,bm,-ck,-bl,-bx,bz,bj,ci,-bo,-bu,cc,bg,cf,-br}
{av,-bb,-ap,-bc,au,aw,-ba,-aq,-bd,at,ax,-az,-ar,-be,as,ay,-ay,-as,be,ar,az,-ax,-at,bd,aq,ba,-aw,-au,bc,ap,bb,-av,-av,bb,ap,bc,-au,-aw,ba,aq,bd,-at,-ax,az,ar,be,-as,-ay,ay,as,-be,-ar,-az,ax,at,-bd,-aq,-ba,aw,au,-bc,-ap,-bb,av}
{bs,-cc,-bi,-cj,bl,bz,-bv,-bp,cf,bf,cg,-bo,-bw,by,bm,-ci,-bh,-cd,br,bt,-cb,-bj,-ck,bk,ca,-bu,-bq,ce,bg,ch,-bn,-bx,bx,bn,-ch,-bg,-ce,bq,bu,-ca,-bk,ck,bj,cb,-bt,-br,cd,bh,ci,-bm,-by,bw,bo,-cg,-bf,-cf,bp,bv,-bz,-bl,cj,bi,cc,-bs}
{ak,-am,-ai,ao,ah,an,-aj,-al,al,aj,-an,-ah,-ao,ai,am,-ak,-ak,am,ai,-ao,-ah,-an,aj,al,-al,-aj,an,ah,ao,-ai,-am,ak,ak,-am,-ai,ao,ah,an,-aj,-al,al,aj,-an,-ah,-ao,ai,am,-ak,-ak,am,ai,-ao,-ah,-an,aj,al,-al,-aj,an,ah,ao,-ai,-am,ak}
{bt,-bz,-bn,cf,bh,ck,-bi,-ce,bo,by,-bu,-bs,ca,bm,-cg,-bg,-cj,bj,cd,-bp,-bx,bv,br,-cb,-bl,ch,bf,ci,-bk,-cc,bq,bw,-bw,-bq,cc,bk,-ci,-bf,-ch,bl,cb,-br,-bv,bx,bp,-cd,-bj,cj,bg,cg,-bm,-ca,bs,bu,-by,-bo,ce,bi,-ck,-bh,-cf,bn,bz,-bt}
{aw,-ay,-au,ba,as,-bc,-aq,be,ap,bd,-ar,-bb,at,az,-av,-ax,ax,av,-az,-at,bb,ar,-bd,-ap,-be,aq,bc,-as,-ba,au,ay,-aw,-aw,ay,au,-ba,-as,bc,aq,-be,-ap,-bd,ar,bb,-at,-az,av,ax,-ax,-av,az,at,-bb,-ar,bd,ap,be,-aq,-bc,as,ba,-au,-ay,aw}
{bu,-bw,-bs,by,bq,-ca,-bo,cc,bm,-ce,-bk,cg,bi,-ci,-bg,ck,bf,cj,-bh,-ch,bj,cf,-bl,-cd,bn,cb,-bp,-bz,br,bx,-bt,-bv,bv,bt,-bx,-br,bz,bp,-cb,-bn,cd,bl,-cf,-bj,ch,bh,-cj,-bf,-ck,bg,ci,-bi,-cg,bk,ce,-bm,-cc,bo,ca,-bq,-by,bs,bw,-bu}
{aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa,aa,-aa,-aa,aa}
{bv,-bt,-bx,br,bz,-bp,-cb,bn,cd,-bl,-cf,bj,ch,-bh,-cj,bf,-ck,-bg,ci,bi,-cg,-bk,ce,bm,-cc,-bo,ca,bq,-by,-bs,bw,bu,-bu,-bw,bs,by,-bq,-ca,bo,cc,-bm,-ce,bk,cg,-bi,-ci,bg,ck,-bf,cj,bh,-ch,-bj,cf,bl,-cd,-bn,cb,bp,-bz,-br,bx,bt,-bv}
{ax,-av,-az,at,bb,-ar,-bd,ap,-be,-aq,bc,as,-ba,-au,ay,aw,-aw,-ay,au,ba,-as,-bc,aq,be,-ap,bd,ar,-bb,-at,az,av,-ax,-ax,av,az,-at,-bb,ar,bd,-ap,be,aq,-bc,-as,ba,au,-ay,-aw,aw,ay,-au,-ba,as,bc,-aq,-be,ap,-bd,-ar,bb,at,-az,-av,ax}
{bw,-bq,-cc,bk,ci,-bf,ch,bl,-cb,-br,bv,bx,-bp,-cd,bj,cj,-bg,cg,bm,-ca,-bs,bu,by,-bo,-ce,bi,ck,-bh,cf,bn,-bz,-bt,bt,bz,-bn,-cf,bh,-ck,-bi,ce,bo,-by,-bu,bs,ca,-bm,-cg,bg,-cj,-bj,cd,bp,-bx,-bv,br,cb,-bl,-ch,bf,-ci,-bk,cc,bq,-bw}
{al,-aj,-an,ah,-ao,-ai,am,ak,-ak,-am,ai,ao,-ah,an,aj,-al,-al,aj,an,-ah,ao,ai,-am,-ak,ak,am,-ai,-ao,ah,-an,-aj,al,al,-aj,-an,ah,-ao,-ai,am,ak,-ak,-am,ai,ao,-ah,an,aj,-al,-al,aj,an,-ah,ao,ai,-am,-ak,ak,am,-ai,-ao,ah,-an,-aj,al}
{bx,-bn,-ch,bg,-ce,-bq,bu,ca,-bk,-ck,bj,-cb,-bt,br,cd,-bh,ci,bm,-by,-bw,bo,cg,-bf,cf,bp,-bv,-bz,bl,cj,-bi,cc,bs,-bs,-cc,bi,-cj,-bl,bz,bv,-bp,-cf,bf,-cg,-bo,bw,by,-bm,-ci,bh,-cd,-br,bt,cb,-bj,ck,bk,-ca,-bu,bq,ce,-bg,ch,bn,-bx}
{ay,-as,-be,ar,-az,-ax,at,bd,-aq,ba,aw,-au,-bc,ap,-bb,-av,av,bb,-ap,bc,au,-aw,-ba,aq,-bd,-at,ax,az,-ar,be,as,-ay,-ay,as,be,-ar,az,ax,-at,-bd,aq,-ba,-aw,au,bc,-ap,bb,av,-av,-bb,ap,-bc,-au,aw,ba,-aq,bd,at,-ax,-az,ar,-be,-as,ay}
{by,-bk,cj,bn,-bv,-cb,bh,-cg,-bq,bs,ce,-bf,cd,bt,-bp,-ch,bi,-ca,-bw,bm,ck,-bl,bx,bz,-bj,ci,bo,-bu,-cc,bg,-cf,-br,br,cf,-bg,cc,bu,-bo,-ci,bj,-bz,-bx,bl,-ck,-bm,bw,ca,-bi,ch,bp,-bt,-cd,bf,-ce,-bs,bq,cg,-bh,cb,bv,-bn,-cj,bk,-by}
{af,-ad,ag,ae,-ae,-ag,ad,-af,-af,ad,-ag,-ae,ae,ag,-ad,af,af,-ad,ag,ae,-ae,-ag,ad,-af,-af,ad,-ag,-ae,ae,ag,-ad,af,af,-ad,ag,ae,-ae,-ag,ad,-af,-af,ad,-ag,-ae,ae,ag,-ad,af,af,-ad,ag,ae,-ae,-ag,ad,-af,-af,ad,-ag,-ae,ae,ag,-ad,af}
{bz,-bh,ce,bu,-bm,cj,bp,-br,-ch,bk,-bw,-cc,bf,-cb,-bx,bj,-cg,-bs,bo,ck,-bn,bt,cf,-bi,by,ca,-bg,cd,bv,-bl,ci,bq,-bq,-ci,bl,-bv,-cd,bg,-ca,-by,bi,-cf,-bt,bn,-ck,-bo,bs,cg,-bj,bx,cb,-bf,cc,bw,-bk,ch,br,-bp,-cj,bm,-bu,-ce,bh,-bz}
{az,-ap,ba,ay,-aq,bb,ax,-ar,bc,aw,-as,bd,av,-at,be,au,-au,-be,at,-av,-bd,as,-aw,-bc,ar,-ax,-bb,aq,-ay,-ba,ap,-az,-az,ap,-ba,-ay,aq,-bb,-ax,ar,-bc,-aw,as,-bd,-av,at,-be,-au,au,be,-at,av,bd,-as,aw,bc,-ar,ax,bb,-aq,ay,ba,-ap,az}
{ca,-bf,bz,cb,-bg,by,cc,-bh,bx,cd,-bi,bw,ce,-bj,bv,cf,-bk,bu,cg,-bl,bt,ch,-bm,bs,ci,-bn,br,cj,-bo,bq,ck,-bp,bp,-ck,-bq,bo,-cj,-br,bn,-ci,-bs,bm,-ch,-bt,bl,-cg,-bu,bk,-cf,-bv,bj,-ce,-bw,bi,-cd,-bx,bh,-cc,-by,bg,-cb,-bz,bf,-ca}
{am,-ah,al,an,-ai,ak,ao,-aj,aj,-ao,-ak,ai,-an,-al,ah,-am,-am,ah,-al,-an,ai,-ak,-ao,aj,-aj,ao,ak,-ai,an,al,-ah,am,am,-ah,al,an,-ai,ak,ao,-aj,aj,-ao,-ak,ai,-an,-al,ah,-am,-am,ah,-al,-an,ai,-ak,-ao,aj,-aj,ao,ak,-ai,an,al,-ah,am}
{cb,-bi,bu,ci,-bp,bn,-cg,-bw,bg,-bz,-cd,bk,-bs,-ck,br,-bl,ce,by,-bf,bx,cf,-bm,bq,-cj,-bt,bj,-cc,-ca,bh,-bv,-ch,bo,-bo,ch,bv,-bh,ca,cc,-bj,bt,cj,-bq,bm,-cf,-bx,bf,-by,-ce,bl,-br,ck,bs,-bk,cd,bz,-bg,bw,cg,-bn,bp,-ci,-bu,bi,-cb}
{ba,-ar,av,-be,-aw,aq,-az,-bb,as,-au,bd,ax,-ap,ay,bc,-at,at,-bc,-ay,ap,-ax,-bd,au,-as,bb,az,-aq,aw,be,-av,ar,-ba,-ba,ar,-av,be,aw,-aq,az,bb,-as,au,-bd,-ax,ap,-ay,-bc,at,-at,bc,ay,-ap,ax,bd,-au,as,-bb,-az,aq,-aw,-be,av,-ar,ba}
{cc,-bl,bp,-cg,-by,bh,-bt,ck,bu,-bg,bx,ch,-bq,bk,-cb,-cd,bm,-bo,cf,bz,-bi,bs,-cj,-bv,bf,-bw,-ci,br,-bj,ca,ce,-bn,bn,-ce,-ca,bj,-br,ci,bw,-bf,bv,cj,-bs,bi,-bz,-cf,bo,-bm,cd,cb,-bk,bq,-ch,-bx,bg,-bu,-ck,bt,-bh,by,cg,-bp,bl,-cc}
{ac,-ab,ab,-ac,-ac,ab,-ab,ac,ac,-ab,ab,-ac,-ac,ab,-ab,ac,ac,-ab,ab,-ac,-ac,ab,-ab,ac,ac,-ab,ab,-ac,-ac,ab,-ab,ac,ac,-ab,ab,-ac,-ac,ab,-ab,ac,ac,-ab,ab,-ac,-ac,ab,-ab,ac,ac,-ab,ab,-ac,-ac,ab,-ab,ac,ac,-ab,ab,-ac,-ac,ab,-ab,ac}
{cd,-bo,bk,-bz,-ch,bs,-bg,bv,-ck,-bw,bh,-br,cg,ca,-bl,bn,-cc,-ce,bp,-bj,by,ci,-bt,bf,-bu,cj,bx,-bi,bq,-cf,-cb,bm,-bm,cb,cf,-bq,bi,-bx,-cj,bu,-bf,bt,-ci,-by,bj,-bp,ce,cc,-bn,bl,-ca,-cg,br,-bh,bw,ck,-bv,bg,-bs,ch,bz,-bk,bo,-cd}
{bb,-au,aq,-ax,be,ay,-ar,at,-ba,-bc,av,-ap,aw,-bd,-az,as,-as,az,bd,-aw,ap,-av,bc,ba,-at,ar,-ay,-be,ax,-aq,au,-bb,-bb,au,-aq,ax,-be,-ay,ar,-at,ba,bc,-av,ap,-aw,bd,az,-as,as,-az,-bd,aw,-ap,av,-bc,-ba,at,-ar,ay,be,-ax,aq,-au,bb}
{ce,-br,bf,-bs,cf,cd,-bq,bg,-bt,cg,cc,-bp,bh,-bu,ch,cb,-bo,bi,-bv,ci,ca,-bn,bj,-bw,cj,bz,-bm,bk,-bx,ck,by,-bl,bl,-by,-ck,bx,-bk,bm,-bz,-cj,bw,-bj,bn,-ca,-ci,bv,-bi,bo,-cb,-ch,bu,-bh,bp,-cc,-cg,bt,-bg,bq,-cd,-cf,bs,-bf,br,-ce}
{an,-ak,ah,-aj,am,ao,-al,ai,-ai,al,-ao,-am,aj,-ah,ak,-an,-an,ak,-ah,aj,-am,-ao,al,-ai,ai,-al,ao,am,-aj,ah,-ak,an,an,-ak,ah,-aj,am,ao,-al,ai,-ai,al,-ao,-am,aj,-ah,ak,-an,-an,ak,-ah,aj,-am,-ao,al,-ai,ai,-al,ao,am,-aj,ah,-ak,an}
{cf,-bu,bj,-bl,bw,-ch,-cd,bs,-bh,bn,-by,cj,cb,-bq,bf,-bp,ca,ck,-bz,bo,-bg,br,-cc,-ci,bx,-bm,bi,-bt,ce,cg,-bv,bk,-bk,bv,-cg,-ce,bt,-bi,bm,-bx,ci,cc,-br,bg,-bo,bz,-ck,-ca,bp,-bf,bq,-cb,-cj,by,-bn,bh,-bs,cd,ch,-bw,bl,-bj,bu,-cf}
{bc,-ax,as,-aq,av,-ba,-be,az,-au,ap,-at,ay,-bd,-bb,aw,-ar,ar,-aw,bb,bd,-ay,at,-ap,au,-az,be,ba,-av,aq,-as,ax,-bc,-bc,ax,-as,aq,-av,ba,be,-az,au,-ap,at,-ay,bd,bb,-aw,ar,-ar,aw,-bb,-bd,ay,-at,ap,-au,az,-be,-ba,av,-aq,as,-ax,bc}
{cg,-bx,bo,-bf,bn,-bw,cf,ch,-by,bp,-bg,bm,-bv,ce,ci,-bz,bq,-bh,bl,-bu,cd,cj,-ca,br,-bi,bk,-bt,cc,ck,-cb,bs,-bj,bj,-bs,cb,-ck,-cc,bt,-bk,bi,-br,ca,-cj,-cd,bu,-bl,bh,-bq,bz,-ci,-ce,bv,-bm,bg,-bp,by,-ch,-cf,bw,-bn,bf,-bo,bx,-cg}
{ag,-af,ae,-ad,ad,-ae,af,-ag,-ag,af,-ae,ad,-ad,ae,-af,ag,ag,-af,ae,-ad,ad,-ae,af,-ag,-ag,af,-ae,ad,-ad,ae,-af,ag,ag,-af,ae,-ad,ad,-ae,af,-ag,-ag,af,-ae,ad,-ad,ae,-af,ag,ag,-af,ae,-ad,ad,-ae,af,-ag,-ag,af,-ae,ad,-ad,ae,-af,ag}
{ch,-ca,bt,-bm,bf,-bl,bs,-bz,cg,ci,-cb,bu,-bn,bg,-bk,br,-by,cf,cj,-cc,bv,-bo,bh,-bj,bq,-bx,ce,ck,-cd,bw,-bp,bi,-bi,bp,-bw,cd,-ck,-ce,bx,-bq,bj,-bh,bo,-bv,cc,-cj,-cf,by,-br,bk,-bg,bn,-bu,cb,-ci,-cg,bz,-bs,bl,-bf,bm,-bt,ca,-ch}
{bd,-ba,ax,-au,ar,-ap,as,-av,ay,-bb,be,bc,-az,aw,-at,aq,-aq,at,-aw,az,-bc,-be,bb,-ay,av,-as,ap,-ar,au,-ax,ba,-bd,-bd,ba,-ax,au,-ar,ap,-as,av,-ay,bb,-be,-bc,az,-aw,at,-aq,aq,-at,aw,-az,bc,be,-bb,ay,-av,as,-ap,ar,-au,ax,-ba,bd}
{ci,-cd,by,-bt,bo,-bj,bf,-bk,bp,-bu,bz,-ce,cj,ch,-cc,bx,-bs,bn,-bi,bg,-bl,bq,-bv,ca,-cf,ck,cg,-cb,bw,-br,bm,-bh,bh,-bm,br,-bw,cb,-cg,-ck,cf,-ca,bv,-bq,bl,-bg,bi,-bn,bs,-bx,cc,-ch,-cj,ce,-bz,bu,-bp,bk,-bf,bj,-bo,bt,-by,cd,-ci}
{ao,-an,am,-al,ak,-aj,ai,-ah,ah,-ai,aj,-ak,al,-am,an,-ao,-ao,an,-am,al,-ak,aj,-ai,ah,-ah,ai,-aj,ak,-al,am,-an,ao,ao,-an,am,-al,ak,-aj,ai,-ah,ah,-ai,aj,-ak,al,-am,an,-ao,-ao,an,-am,al,-ak,aj,-ai,ah,-ah,ai,-aj,ak,-al,am,-an,ao}
{cj,-cg,cd,-ca,bx,-bu,br,-bo,bl,-bi,bf,-bh,bk,-bn,bq,-bt,bw,-bz,cc,-cf,ci,ck,-ch,ce,-cb,by,-bv,bs,-bp,bm,-bj,bg,-bg,bj,-bm,bp,-bs,bv,-by,cb,-ce,ch,-ck,-ci,cf,-cc,bz,-bw,bt,-bq,bn,-bk,bh,-bf,bi,-bl,bo,-br,bu,-bx,ca,-cd,cg,-cj}
{be,-bd,bc,-bb,ba,-az,ay,-ax,aw,-av,au,-at,as,-ar,aq,-ap,ap,-aq,ar,-as,at,-au,av,-aw,ax,-ay,az,-ba,bb,-bc,bd,-be,-be,bd,-bc,bb,-ba,az,-ay,ax,-aw,av,-au,at,-as,ar,-aq,ap,-ap,aq,-ar,as,-at,au,-av,aw,-ax,ay,-az,ba,-bb,bc,-bd,be}
{ck,-cj,ci,-ch,cg,-cf,ce,-cd,cc,-cb,ca,-bz,by,-bx,bw,-bv,bu,-bt,bs,-br,bq,-bp,bo,-bn,bm,-bl,bk,-bj,bi,-bh,bg,-bf,bf,-bg,bh,-bi,bj,-bk,bl,-bm,bn,-bo,bp,-bq,br,-bs,bt,-bu,bv,-bw,bx,-by,bz,-ca,cb,-cc,cd,-ce,cf,-cg,ch,-ci,cj,-ck}
}
其中,
{aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck}=
{64,83,36,89,75,50,18,90,87,80,70,57,43,25,9,90,90,88,85,82,78,73,67,61,54,46,38,31,22,13,4,91,90,90,90,88,87,86,84,83,81,79,77,73,71,69,65,62,59,56,52,48,44,41,37,33,28,24,20,15,11,7,2}
(等式1)
除了在HEVC中已经采用的DCT-2和4×4DST-7之外,自适应多变换(AMT,也称为增强型多变换(EMT)或称为多变换选择(MTS))方案,也已在VVC中使用,以用于帧间和帧内编码块的残差编码。除了HEVC中的当前变换之外,它还使用来自DCT/DST族的多个选定的变换。新引入的变换矩阵是DST-7、DCT-8。表6示出了所选DST/DCT的基函数。
VVC中的所有主变换矩阵都使用8比特来表示。AMT应用于宽度和高度都小于或等于32的CU,并且是否应用AMT由标志mts_flag来控制。当mts_flag等于0时,仅应用DCT-2来对残差进行编码。当mts_flag等于1时,进一步使用2个二进制数,来用信号通知索引mts_idx,以指定要使用的水平和垂直变换,如表7所示。其中,值1是指使用DST-7,并且值2是指使用DCT-8。
DST-7的变换核心(由基矢量组成的矩阵)也可表示如下:
{a,b,c,d}
{c,c,0,-c}
{d,-a,-c,b}
{b,-d,c,-a}
其中,{a,b,c,d}={29,55,74,84} (等式2)
{a,b,c,d,e,f,g,h,}
{c,f,h,e,b,-a,-d,-g,}
{e,g,b,-c,-h,-d,a,f,}
{g,c,-d,-f,a,h,b,-e,}
{h,-a,-g,b,f,-c,-e,d,}
{f,-e,-a,g,-d,-b,h,-c,}
{d,-h,e,-a,-c,g,-f,b,}
{b,-d,f,-h,g,-e,c,-a,}
其中,
{a,b,c,d,e,f,g,h}={17,32,46,60,71,78,85,86} (等式3)
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,}
{c,f,i,l,o,o,l,i,f,c,0,-c,-f,-i,-l,-o,}
{e,j,o,m,h,c,-b,-g,-l,-p,-k,-f,-a,d,i,n,}
{g,n,l,e,-b,-i,-p,-j,-c,d,k,o,h,a,-f,-m,}
{i,o,f,-c,-l,-l,-c,f,o,i,0,-i,-o,-f,c,l,}
{k,k,0,-k,-k,0,k,k,0,-k,-k,0,k,k,0,-k,}
{m,g,-f,-n,-a,l,h,-e,-o,-b,k,i,-d,-p,-c,j,}
{o,c,-l,-f,i,i,-f,-l,c,o,0,-o,-c,l,f,-i,}
{p,-a,-o,b,n,-c,-m,d,l,-e,-k,f,j,-g,-i,h,}
{n,-e,-i,j,d,-o,a,m,-f,-h,k,c,-p,b,l,-g,}
{l,-i,-c,o,-f,-f,o,-c,-i,l,0,-l,i,c,-o,f,}
{j,-m,c,g,-p,f,d,-n,i,a,-k,l,-b,-h,o,-e,}
{h,-p,i,-a,-g,o,-j,b,f,-n,k,-c,-e,m,-l,d,}
{f,-l,o,-i,c,c,-i,o,-l,f,0,-f,l,-o,i,-c,}
{d,-h,l,-p,m,-i,e,-a,-c,g,-k,o,-n,j,-f,b,}
{b,-d,f,-h,j,-l,n,-p,o,-m,k,-i,g,-e,c,-a,}
其中,
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}={9,17,25,33,41,49,56,62,66,72,77,
81,83,87,89,90} (等式4)
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,}
{c,f,i,l,o,r,u,x,A,D,F,C,z,w,t,q,n,k,h,e,b,-a,-d,-g,-j,-m,-p,-s,-v,-y,-B,-E,}
{e,j,o,t,y,D,D,y,t,o,j,e,0,-e,-j,-o,-t,-y,-D,-D,-y,-t,-o,-j,-e,0,e,j,o,t,y,D,}
{g,n,u,B,D,w,p,i,b,-e,-l,-s,-z,-F,-y,-r,-k,-d,c,j,q,x,E,A,t,m,f,-a,-h,-o,-v,-C,}
{i,r,A,C,t,k,b,-g,-p,-y,-E,-v,-m,-d,e,n,w,F,x,o,f,-c,-l,-u,-D,-z,-q,-h,a,j,s,B,}
{k,v,F,u,j,-a,-l,-w,-E,-t,-i,b,m,x,D,s,h,-c,-n,-y,-C,-r,-g,d,o,z,B,q,f,-e,-p,-A,}
{m,z,z,m,0,-m,-z,-z,-m,0,m,z,z,m,0,-m,-z,-z,-m,0,m,z,z,m,0,-m,-z,-z,-m,0,m,z,}
{o,D,t,e,-j,-y,-y,-j,e,t,D,o,0,-o,-D,-t,-e,j,y,y,j,-e,-t,-D,-o,0,o,D,t,e,-j,-y,}
{q,E,n,-c,-t,-B,-k,f,w,y,h,-i,-z,-v,-e,l,C,s,b,-o,-F,-p,a,r,D,m,-d,-u,-A,-j,g,x,}
{s,A,h,-k,-D,-p,c,v,x,e,-n,-F,-m,f,y,u,b,-q,-C,-j,i,B,r,-a,-t,-z,-g,l,E,o,-d,-w,}
{u,w,b,-s,-y,-d,q,A,f,-o,-C,-h,m,E,j,-k,-F,-l,i,D,n,-g,-B,-p,e,z,r,-c,-x,-t,a,v,}
{w,s,-d,-A,-o,h,E,k,-l,-D,-g,p,z,c,-t,-v,a,x,r,-e,-B,-n,i,F,j,-m,-C,-f,q,y,b,-u,}
{y,o,-j,-D,-e,t,t,-e,-D,-j,o,y,0,-y,-o,j,D,e,-t,-t,e,D,j,-o,-y,0,y,o,-j,-D,-e,t,}
{A,k,-p,-v,e,F,f,-u,-q,j,B,a,-z,-l,o,w,-d,-E,-g,t,r,-i,-C,-b,y,m,-n,-x,c,D,h,-s,}
{C,g,-v,-n,o,u,-h,-B,a,D,f,-w,-m,p,t,-i,-A,b,E,e,-x,-l,q,s,-j,-z,c,F,d,-y,-k,r,}
{E,c,-B,-f,y,i,-v,-l,s,o,-p,-r,m,u,-j,-x,g,A,-d,-D,a,F,b,-C,-e,z,h,-w,-k,t,n,-q,}
{F,-a,-E,b,D,-c,-C,d,B,-e,-A,f,z,-g,-y,h,x,-i,-w,j,v,-k,-u,l,t,-m,-s,n,r,-o,-q,p,}
{D,-e,-y,j,t,-o,-o,t,j,-y,-e,D,0,-D,e,y,-j,-t,o,o,-t,-j,y,e,-D,0,D,-e,-y,j,t,-o,}
{B,-i,-s,r,j,-A,-a,C,-h,-t,q,k,-z,-b,D,-g,-u,p,l,-y,-c,E,-f,-v,o,m,-x,-d,F,-e,-w,n,}
{z,-m,-m,z,0,-z,m,m,-z,0,z,-m,-m,z,0,-z,m,m,-z,0,z,-m,-m,z,0,-z,m,m,-z,0,z,-m,}
{x,-q,-g,E,-j,-n,A,-c,-u,t,d,-B,m,k,-D,f,r,-w,-a,y,-p,-h,F,-i,-o,z,-b,-v,s,e,-C,l,}
{v,-u,-a,w,-t,-b,x,-s,-c,y,-r,-d,z,-q,-e,A,-p,-f,B,-o,-g,C,-n,-h,D,-m,-i,E,-l,-j,F,-k,}
{t,-y,e,o,-D,j,j,-D,o,e,-y,t,0,-t,y,-e,-o,D,-j,-j,D,-o,-e,y,-t,0,t,-y,e,o,-D,j,}
{r,-C,k,g,-y,v,-d,-n,F,-o,-c,u,-z,h,j,-B,s,-a,-q,D,-l,-f,x,-w,e,m,-E,p,b,-t,A,-i,}
{p,-F,q,-a,-o,E,-r,b,n,-D,s,-c,-m,C,-t,d,l,-B,u,-e,-k,A,-v,f,j,-z,w,-g,-i,y,-x,h,}
{n,-B,w,-i,-e,s,-F,r,-d,-j,x,-A,m,a,-o,C,-v,h,f,-t,E,-q,c,k,-y,z,-l,-b,p,-D,u,-g,}
{l,-x,C,-q,e,g,-s,E,-v,j,b,-n,z,-A,o,-c,-i,u,-F,t,-h,-d,p,-B,y,-m,a,k,-w,D,-r,f,}
{j,-t,D,-y,o,-e,-e,o,-y,D,-t,j,0,-j,t,-D,y,-o,e,e,-o,y,-D,t,-j,0,j,-t,D,-y,o,-e,}
{h,-p,x,-F,y,-q,i,-a,-g,o,-w,E,-z,r,-j,b,f,-n,v,-D,A,-s,k,-c,-e,m,-u,C,-B,t,-l,d,}
{f,-l,r,-x,D,-C,w,-q,k,-e,-a,g,-m,s,-y,E,-B,v,-p,j,-d,-b,h,-n,t,-z,F,-A,u,-o,i,-c,}
{d,-h,l,-p,t,-x,B,-F,C,-y,u,-q,m,-i,e,-a,-c,g,-k,o,-s,w,-A,E,-D,z,-v,r,-n,j,-f,b,}
{b,-d,f,-h,j,-l,n,-p,r,-t,v,-x,z,-B,D,-F,E,-C,A,-y,w,-u,s,-q,o,-m,k,-i,g,-e,c,-a,}
其中,
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F}={4,9,13,17,21,26,30,34,38,42,45,50,53,56,60,63,66,68,72,74,77,78,80,
82,84,85,86,88,88,89,90,90} (等式5)
{a,b,c,d,}
{b,0,-b,-b,}
{c,-b,-d,a,}
{d,-b,a,-c,}
其中,
{a,b,c,d}={84,74,55,29} (等式6)
{a,b,c,d,e,f,g,h,}
{b,e,h,-g,-d,-a,-c,-f,}
{c,h,-e,-a,-f,g,b,d,}
{d,-g,-a,-h,c,e,-f,-b,}
{e,-d,-f,c,g,-b,-h,a,}
{f,-a,g,e,-b,h,d,-c,}
{g,-c,b,-f,-h,d,-a,e,}
{h,-f,d,-b,a,-c,e,-g,}
其中,
{a,b,c,d,e,f,g,h}={86,85,78,71,60,46,32,17} (等式7)
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,}
{b,e,h,k,n,0,-n,-k,-h,-e,-b,-b,-e,-h,-k,-n,}
{c,h,m,-p,-k,-f,-a,-e,-j,-o,n,i,d,b,g,l,}
{d,k,-p,-i,-b,-f,-m,n,g,a,h,o,-l,-e,-c,-j,}
{e,n,-k,-b,-h,0,h,b,k,-n,-e,-e,-n,k,b,h,}
{f,0,-f,-f,0,f,f,0,-f,-f,0,f,f,0,-f,-f,}
{g,-n,-a,-m,h,f,-o,-b,-l,i,e,-p,-c,-k,j,d,}
{h,-k,-e,n,b,0,-b,-n,e,k,-h,-h,k,e,-n,-b,}
{i,-h,-j,g,k,-f,-l,e,m,-d,-n,c,o,-b,-p,a,}
{j,-e,-o,a,-n,-f,i,k,-d,-p,b,-m,-g,h,l,-c,}
{k,-b,n,h,-e,0,e,-h,-n,b,-k,-k,b,-n,-h,e,}
{l,-b,i,o,-e,f,-p,-h,c,-m,-k,a,-j,-n,d,-g,}
{m,-e,d,-l,-n,f,-c,k,o,-g,b,-j,-p,h,-a,i,}
{n,-h,b,-e,k,0,-k,e,-b,h,-n,-n,h,-b,e,-k,}
{o,-k,g,-c,b,-f,j,-n,-p,l,-h,d,-a,e,-i,m,}
{p,-n,l,-j,h,-f,d,-b,a,-c,e,-g,i,-k,m,-o,}
其中,
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}={90,89,87,83,81,77,72,66,62,56,49,41,33,25,17,9} (等式8)
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,}
{b,e,h,k,n,q,t,w,z,C,F,-E,-B,-y,-v,-s,-p,-m,-j,-g,-d,-a,-c,-f,-i,-l,-o,-r,-u,-x,-A,-D,}
{c,h,m,r,w,B,0,-B,-w,-r,-m,-h,-c,-c,-h,-m,-r,-w,-B,0,B,w,r,m,h,c,c,h,m,r,w,B,}
{d,k,r,y,F,-A,-t,-m,-f,-b,-i,-p,-w,-D,C,v,o,h,a,g,n,u,B,-E,-x,-q,-j,-c,-e,-l,-s,-z,}
{e,n,w,F,-y,-p,-g,-c,-l,-u,-D,A,r,i,a,j,s,B,-C,-t,-k,-b,-h,-q,-z,E,v,m,d,f,o,x,}
{f,q,B,-A,-p,-e,-g,-r,-C,z,o,d,h,s,D,-y,-n,-c,-i,-t,-E,x,m,b,j,u,F,-w,-l,-a,-k,-v,}
{g,t,0,-t,-g,-g,-t,0,t,g,g,t,0,-t,-g,-g,-t,0,t,g,g,t,0,-t,-g,-g,-t,0,t,g,g,t,}
{h,w,-B,-m,-c,-r,0,r,c,m,B,-w,-h,-h,-w,B,m,c,r,0,-r,-c,-m,-B,w,h,h,w,-B,-m,-c,-r,}
{i,z,-w,-f,-l,-C,t,c,o,F,-q,-a,-r,E,n,d,u,-B,-k,-g,-x,y,h,j,A,-v,-e,-m,-D,s,b,p,}
{j,C,-r,-b,-u,z,g,m,F,-o,-e,-x,w,d,p,-E,-l,-h,-A,t,a,s,-B,-i,-k,-D,q,c,v,-y,-f,-n,}
{k,F,-m,-i,-D,o,g,B,-q,-e,-z,s,c,x,-u,-a,-v,w,b,t,-y,-d,-r,A,f,p,-C,-h,-n,E,j,l,}
{l,-E,-h,-p,A,d,t,-w,-a,-x,s,e,B,-o,-i,-F,k,m,-D,-g,-q,z,c,u,-v,-b,-y,r,f,C,-n,-j,}
{m,-B,-c,-w,r,h,0,-h,-r,w,c,B,-m,-m,B,c,w,-r,-h,0,h,r,-w,-c,-B,m,m,-B,-c,-w,r,h,}
{n,-y,-c,-D,i,s,-t,-h,E,d,x,-o,-m,z,b,C,-j,-r,u,g,-F,-e,-w,p,l,-A,-a,-B,k,q,-v,-f,}
{o,-v,-h,C,a,D,-g,-w,n,p,-u,-i,B,b,E,-f,-x,m,q,-t,-j,A,c,F,-e,-y,l,r,-s,-k,z,d,}
{p,-s,-m,v,j,-y,-g,B,d,-E,-a,-F,c,C,-f,-z,i,w,-l,-t,o,q,-r,-n,u,k,-x,-h,A,e,-D,-b,}
{q,-p,-r,o,s,-n,-t,m,u,-l,-v,k,w,-j,-x,i,y,-h,-z,g,A,-f,-B,e,C,-d,-D,c,E,-b,-F,a,}
{r,-m,-w,h,B,-c,0,c,-B,-h,w,m,-r,-r,m,w,-h,-B,c,0,-c,B,h,-w,-m,r,r,-m,-w,h,B,-c,}
{s,-j,-B,a,-C,-i,t,r,-k,-A,b,-D,-h,u,q,-l,-z,c,-E,-g,v,p,-m,-y,d,-F,-f,w,o,-n,-x,e,}
{t,-g,0,g,-t,-t,g,0,-g,t,t,-g,0,g,-t,-t,g,0,-g,t,t,-g,0,g,-t,-t,g,0,-g,t,t,-g,}
{u,-d,B,n,-k,-E,g,-r,-x,a,-y,-q,h,-F,-j,o,A,-c,v,t,-e,C,m,-l,-D,f,-s,-w,b,-z,-p,i,}
{v,-a,w,u,-b,x,t,-c,y,s,-d,z,r,-e,A,q,-f,B,p,-g,C,o,-h,D,n,-i,E,m,-j,F,l,-k,}
{w,-c,r,B,-h,m,0,-m,h,-B,-r,c,-w,-w,c,-r,-B,h,-m,0,m,-h,B,r,-c,w,w,-c,r,B,-h,m,}
{x,-f,m,-E,-q,b,-t,-B,j,-i,A,u,-c,p,F,-n,e,-w,-y,g,-l,D,r,-a,s,C,-k,h,-z,-v,d,-o,}
{y,-i,h,-x,-z,j,-g,w,A,-k,f,-v,-B,l,-e,u,C,-m,d,-t,-D,n,-c,s,E,-o,b,-r,-F,p,-a,q,}
{z,-l,c,-q,E,u,-g,h,-v,-D,p,-b,m,-A,-y,k,-d,r,-F,-t,f,-i,w,C,-o,a,-n,B,x,-j,e,-s,}
{A,-o,c,-j,v,F,-t,h,-e,q,-C,-y,m,-a,l,-x,-D,r,-f,g,-s,E,w,-k,b,-n,z,B,-p,d,-i,u,}
{B,-r,h,-c,m,-w,0,w,-m,c,-h,r,-B,-B,r,-h,c,-m,w,0,-w,m,-c,h,-r,B,B,-r,h,-c,m,-w,}
{C,-u,m,-e,d,-l,t,-B,-D,v,-n,f,-c,k,-s,A,E,-w,o,-g,b,-j,r,-z,-F,x,-p,h,-a,i,-q,y,}
{D,-x,r,-l,f,-a,g,-m,s,-y,E,C,-w,q,-k,e,-b,h,-n,t,-z,F,B,-v,p,-j,d,-c,i,-o,u,-A,}
{E,-A,w,-s,o,-k,g,-c,b,-f,j,-n,r,-v,z,-D,-F,B,-x,t,-p,l,-h,d,-a,e,-i,m,-q,u,-y,C,}
{F,-D,B,-z,x,-v,t,-r,p,-n,l,-j,h,-f,d,-b,a,-c,e,-g,i,-k,m,-o,q,-s,u,-w,y,-A,C,-E,}
其中,
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F}={90,90,89,88,88,86,85,84,82,80,78,77,74,72,68,66,63,60,56,53,50,45,42,38,34,30,26,21,17,13,9,4} (等式9)
在VVC中,当编码块的高度和宽度都小于或等于64时,变换大小总是与编码块大小相同。当编码块的高度或宽度大于64时,当进行变换或帧内预测时,编码块被进一步分割成多个子块,其中,每个子块的宽度和高度小于或等于64,并且在每个子块上执行一次变换。
在JVET-J0024、JVET-K0139和JVET-L0358中,提出了一种空间变化的变换方案。利用SVT,对于帧间预测残差,在编码块中仅存在残差块,但是残差块小于编码块,因此SVT中的变换大小小于编码块大小。对于没有被残差块或变换覆盖的区域,假定零残差。
更具体地,在JVET-L0358中,SVT也被称为子块变换(SBT)。图3中示出了在SBT中支持的子块类型(SVT-、SVT-H)、大小和位置(例如,左半部、左四分之一、右半部、右四分之一、上半部、上四分之一、下半部、下四分之一)。由字母“A”标记的阴影区域是具有变换的残差块,其它区域假定为无变换的零残差。
在VVC之上,使用提出的SBT,对规范的文本进行如下改变。可看到,SBT方法要求用信号通知额外的附加位(cu_sbt_flag、cu_sbt_quad_flag、cu_sbt_horizontal_flag和cu_sbt_pos_flag)以指示子块类型(水平或垂直)、大小(一半或四分之一)和位置(左或右,上或下)。
根据序列参数集RBSP语义的示例,sps_sbt_enabled_flag等于0时,指定用于帧间预测CU的子块变换被禁用。sps_sbt_enabled_flag等于1时,指定用于帧间预测CU的子块变换被启用。
根据通用条带头语义的示例,slice_sbt_max_size_64_flag等于0时,指定允许子块变换的最大CU宽度和高度为32。slice_sbt_max_size_64_flag等于1时,指定允许子块变换的最大CU宽度和高度为64。下面示出示例:
maxSbtSize=slice_sbt_max_size_64_flag?64:32(等式10)
根据示例,编码单元语义cu_sbt_flag[x0][y0]等于1指定对于当前编码单元,使用子块变换。cu_sbt_flag[x0][y0]等于0时,指定对于当前解编码单元,不使用子块变换。当cu_sbt_flag[x0][y0]不存在时,推断其值等于0。当使用子块变换时,将编码单元平铺成两个变换单元,一个变换单元具有残差,另一个不具有残差。
根据本申请实施例,cu_sbt_quad_flag[x0][y0]等于1时,指定对于当前编码单元,子块变换包括当前编码单元的1/4大小的变换单元。cu_sbt_quad_flag[x0][y0]等于0时,指定对于当前编码单元,子块变换包括当前编码单元的1/2大小的变换单元。当cu_sbt_quad_flag[x0][y0]不存在时,推断其值等于0。
根据本申请实施例,cu_sbt_horizontal_flag[x0][y0]等于1时,指定通过水平分割将当前编码单元平铺成2个变换单元。cu_sbt_horizontal_flag[x0][y0]等于时,指定通过垂直分割将当前编码单元平铺成2个变换单元。
根据本申请实施例,当cu_sbt_horizontal_flag[x0][y0]不存在时,其值如下导出:
如果cu_sbt_quad_flag[x0][y0]等于1,则cu_sbt_horizontal_flag[x0][y0]被设定为等于allowSbtHoriQuad。
否则cu_sbt_quad_flag[x0][y0]等于0,cu_sbt_horizontal_flag[x0][y0]被设定为等于allowSbtHoriHalf。
根据本申请实施例,cu_sbt_pos_flag[x0][y0]等于1时,指定当前编码单元中的第一变换单元的tu_cbf_luma、tu_cbf_cb和tu_cbf_cr不存在于码流中。cu_sbt_pos_flag[x0][y0]等于0时,指定当前编码单元中的第二变换单元的tu_cbf_luma、tu_cbf_cb和tu_cbf_cr不存在于码流中。
下面示出用于缩放变换系数的变换过程的示例。该过程的输入为:
亮度位置(xTbY,yTbY),其指定相对于当前图片的上-左亮度样本,当前亮度变换块的上左-样本;
变量nTbW,指定当前变换块的宽度;
变量nTbH,指定当前变换块的高度;
变量cIdx,指定当前块的颜色分量;
缩放变换系数的(nTbW)x(nTbH)array d[x][y],其中x=0..nTbW-1,y=0..nTbH-1。
该过程的输出是残差样本的(nTbW)x(nTbH)array r[x][y],其中x=0..nTbW-1,y=0..nTbH-1。
如果cu_sbt_flag[xTbY][yTbY]等于1,则根据cu_sbt_horizontal_flag[xTbY][yTbY]和cu_sbt_pos_flag[xTbY][yTbY],在表8X中导出指定水平变换核的变量trTypeHor和指定垂直变换核的变量trTypeVer。
否则(cu_sbt_flag[xTbY][yTbY]等于0),则根据mts_idx[xTbY][yTbY]和CuPredMode[xTbY][yTbY],在表8 9中导出指定水平变换核的变量trTypeHor和指定垂直变换核的变量trTypeVer。
残差样本的(nTbW)x(nTbH)array r如下导出:
1.将x=0..nTbW-1,y=0..nTbH-1的缩放变换系数d[x][y]的每个(垂直)列变换为x=0..nTbW-1,y=0..nTbH-1的e[x][y],其中,通过调用一维变换过程,对于每列x=0..nTbW-,变换块高度为nTbH,将y=0..nTbH-1的列表d[x][y]和设定为等于trTypeVer的变换类型变量trType作为输入,输出是y=0..nTbH-1的列表e[x][y]。
2.x=0..nTbW-1,y=0..nTbH-1的中间样本值g[x][y]如下导出:
g[x][y]=Clip3(CoeffMin,CoeffMax,(e[x][y]+256)>>9)(0-1)
3.将x=0..nTbW-1,y=0..nTbH-1的所得阵列g[x][y]的每个(水平)行变换为x=0..nTbW-1,y=0..nTbH-1的r[x][y],其中,通过调用一维变换过程,对于每行y=0..nTbH-1,变换块宽度为nTbW,将x=0..nTbW-1的列表g[x][y]和设定为等于trTypeHor的变换类型变量trType作为输入,输出是x=0..nTbW-1的列表r[x][y]。
图10是根据本申请公开的实施例的通信系统(1000)的简化框图。通信系统(1000)包括至少两个终端装置(1010-1020),经由网络(1050)互相连接。对于单向数据传输,第一终端(1010)在本地位置上对视频数据进行编码,然后通过网络(1050)传输到第二终端(1020)。第二终端(1020)从网络(1050)接收另一终端已编码的视频数据,对已编码视频数据进行解码,并显示恢复的视频数据。单向数据传输在媒体服务等应用中是较常见的。
图10示出能够支持已编码视频的双向传输的第二对终端(1030,1040),所述双向传输例如发生在视频会议期间。对于双向数据传输,每个终端(1030,1040)在本地位置上对采集的视频数据进行编码,然后通过网络(1050)传输到另一终端。每个终端(1030,1040)还可接收由另一终端发送的已编码视频数据,对已编码视频数据进行解码,并在本地显示设备上显示恢复的视频数据。
在图10中,终端(1010-1040)可为服务器、个人计算机和智能电话,但本申请公开的原理可不限于此。本申请公开的实施例适用于膝上型计算机、平板电脑、媒体播放器和/或专用视频会议设备。网络(1050)表示在终端(1010-1040)之间传送已编码视频数据的任何数目的网络,包括例如有线和/或无线通信网络。通信网络(1050)可在电路交换和/或分组交换信道中交换数据。代表性网络可包括电信网络、局域网、广域网和/或互联网。出于本申请的目的,除非在下文中有所解释,否则网络(1050)的架构和拓扑对于本申请公开的操作来说可能是无关紧要的。
作为本申请所公开的主题的一个示例,图11示出视频编码器和视频解码器在流式环境中的放置方式,例如,流系统300。本申请所公开主题可同等地适用于其它支持视频的应用,包括例如视频会议、数字TV、在包括CD、DVD、存储棒等的数字介质上存储压缩视频等等。
流式传输系统可包括采集子系统(1113),所述采集子系统可包括数码相机等视频源(1101),所述视频源创建未压缩的视频样本流(1102)。相较于已编码的视频码流,样本流(1102)被描绘为粗线以强调高数据量的视频样本流,可由耦接到摄像机(1101)的编码器(1103)来处理。视频编码器(603)可包括硬件、软件或软硬件组合以实现或实施如下文更详细地描述的所公开主题的各方面。相较于样本流,已编码的视频码流(1104)被描绘为细线以强调较低的数据量,其可存储在流式传输服务器(1105)上以供将来使用。至少一个流式传输客户端子系统(1106,1108)可访问流式传输服务器(1105)以检索已编码的视频数据(1104)的副本(1107,1109)。客户端(1106)包括视频解码器(1110),视频解码器(1110)对已编码的视频数据(1107)的传入副本进行解码,且产生可在显示器(1112)或另一呈现装置(未描绘)上呈现的输出视频样本流(1111)。在一些流式传输系统中,可根据某些视频编码/压缩标准,对视频码流(1104,1107,1109)进行编码。该些标准的实施例包括ITU-T H.265。正在开发的视频编码标准非正式地称为下一代视频编码(Versatile Video Coding,VVC),本申请可用于VVC标准的上下文中。
图12是根据本申请公开的实施例的视频解码器(1110)的框图。
接收器(1210)可接收将由视频解码器(1110)解码的至少一个已编码视频序列;在同一实施例或另一实施例中,一次接收一个已编码视频序列,其中每个已编码视频序列的解码独立于其它已编码视频序列。可从信道(1212)接收已编码视频序列,所述信道可以是通向存储已编码的视频数据的存储装置的硬件/软件链路。接收器(1210)可接收已编码的视频数据以及其它数据,例如,可转发到它们各自的使用实体(未标示)的已编码音频数据和/或辅助数据流。接收器(1210)可将已编码视频序列与其它数据分开。为了防止网络抖动,缓冲存储器(1215)可耦接在接收器(1210)与熵解码器/解析器(1220)(此后称为“解析器(1220)”)之间。当接收器(1210)从具有足够带宽和可控性的存储/转发装置或从等时同步网络接收数据时,也可能不需要配置缓冲存储器(1215),或可以将所述缓冲存储器做得较小。为了在互联网等业务分组网络上使用,也可能需要缓冲存储器(1215),所述缓冲存储器可相对较大且可具有自适应性大小。
视频解码器(1110)可包括解析器(1220)以根据已编码视频序列重建符号(1221)。这些符号的类别包括用于管理视频解码器(1110)的操作的信息,以及用以控制显示装置(1112)等显示装置的潜在信息,所述显示装置不是解码器的组成部分,但可耦接到解码器,如图12中所示。用于显示装置的控制信息可以是辅助增强信息(SupplementalEnhancement Information,SEI消息)或视频可用性信息(Video Usability Information,VUI)的参数集片段(未标示)。解析器(1220)可对接收到的已编码视频序列进行解析/熵解码。已编码视频序列的编码可根据视频编码技术或标准进行,且可遵循各种原理,包括可变长度编码、霍夫曼编码(Huffman coding)、具有或不具有上下文灵敏度的算术编码等等。解析器(1220)可基于对应于群组的至少一个参数,从已编码视频序列提取用于视频解码器中的像素的子群中的至少一个子群的子群参数集。子群可包括图片群组(Group ofPictures,GOP)、图片、图块、分片、宏块、编码单元(Coding Unit,CU)、块、变换单元(Transform Unit,TU)、预测单元(Prediction Unit,PU)等等。熵解码器/解析器还可从已编码视频序列提取信息,例如变换系数、量化器参数值、运动矢量等等。
解析器(1220)可对从缓冲存储器(1215)接收的视频序列执行熵解码/解析操作,从而创建符号(1221)。解析器(1220)可接收已编码数据,选择对特定的符号(1221)进行解码。进一步,解析器(1220)可确定是否可以将特定的符号(1221)提供给运动补偿预测单元(1253)、缩放器/逆变换单元(1251)、帧内图片预测单元(1252)或者,环路滤波器(1256)。
取决于已编码视频图片或一部分已编码视频图片(例如:帧间图片和帧内图片、帧间块和帧内块)的类型以及其它因素,符号(1221)的重建可涉及至少两个不同单元。涉及哪些单元以及涉及方式可由解析器(1220)从已编码视频序列解析的子群控制信息控制。为了简洁起见,未描述解析器(1220)与下文的至少两个单元之间的此类子群控制信息流。
除已经提及的功能块以外,视频解码器(1110)可在概念上细分成如下文所描述的数个功能单元。在商业约束下运行的实际实施例中,这些单元中的许多单元彼此紧密交互并且可以彼此集成。然而,出于描述所公开主题的目的,概念上细分成下文的功能单元是适当的。
第一单元是缩放器/逆变换单元(1251)。缩放器/逆变换单元(1251)从解析器(1220)接收作为符号(1221)的量化变换系数以及控制信息,包括使用哪种变换方式、块大小、量化因子、量化缩放矩阵等。缩放器/逆变换单元(1251)可输出包括样本值的块,所述样本值可输入到聚合器(1255)中。
在一些情况下,缩放器/逆变换单元(1251)的输出样本可属于帧内编码块;即:不使用来自先前重建的图片的预测性信息,但可使用来自当前图片的先前重建部分的预测性信息的块。此类预测性信息可由帧内图片预测单元(1252)提供。在一些情况下,帧内图片预测单元(1252)采用从当前(已部分重建)图片(1256)提取的已重建信息,生成大小和形状与正在重建的块相同的周围块。在一些情况下,聚合器(1255)基于每个样本,将帧内预测单元(1252)生成的预测信息添加到由缩放器/逆变换单元(1251)提供的输出样本信息中。
在其它情况下,缩放器/逆变换单元(1251)的输出样本可属于帧间编码和潜在运动补偿块。在此情况下,运动补偿预测单元(1253)可访问参考图片存储器(1257)以提取用于预测的样本。在根据符号(1221)对提取的样本进行运动补偿之后,这些样本可由聚合器(1255)添加到缩放器/逆变换单元(1251)的输出(在这种情况下被称作残差样本或残差信号),从而生成输出样本信息。运动补偿预测单元(1253)从参考图片存储器(1257)内的地址获取预测样本可受到运动矢量控制,且所述运动矢量以所述符号(1221)的形式而供运动补偿预测单元(1253)使用,所述符号(1221)例如是包括X、Y和参考图片分量。运动补偿还可包括在使用子样本精确运动矢量时,从参考图片存储器提取的样本值的内插、运动矢量预测机制等等。
聚合器(1255)的输出样本可在环路滤波器单元(1256)中被各种环路滤波技术采用。视频压缩技术可包括环路内滤波器技术,所述环路内滤波器技术受控于包括在已编码视频序列(也称作已编码视频码流)中的参数,且所述参数作为来自解析器(1220)的符号(1221)可用于环路滤波器单元(1256)。然而,在其他实施例中,视频压缩技术还可响应于在解码已编码图片或已编码视频序列的先前(按解码次序)部分期间获得的元信息,以及响应于先前重建且经过环路滤波的样本值。
环路滤波器单元(1256)的输出可以是样本流,所述样本流可输出到显示设备(1112)以及存储在参考图片存储器(1257),以用于后续的帧间图片预测。
一旦完全重建,某些已编码图片就可用作参考图片以用于将来预测。举例来说,一旦对应于当前图片的已编码图片被完全重建,且已编码图片(通过例如解析器(1220))被识别为参考图片,则当前图片(1258)可变为参考图片存储器(1257)的一部分,且可在开始重建后续已编码图片之前重新分配新的当前图片缓冲器。
视频解码器(1110)可根据例如ITU-T H.265标准中的预定视频压缩技术执行解码操作。在已编码视频序列遵循视频压缩技术或标准的语法以及视频压缩技术或标准中记录的配置文件的意义上,已编码视频序列可符合所使用的视频压缩技术或标准指定的语法。具体地说,配置文件可从视频压缩技术或标准中可用的所有工具中选择某些工具作为在所述配置文件下可供使用的仅有工具。对于合规性,还要求已编码视频序列的复杂度处于视频压缩技术或标准的层级所限定的范围内。在一些情况下,层级限制最大图片大小、最大帧率、最大重建取样率(以例如每秒兆(mega)个样本为单位进行测量)、最大参考图片大小等。在一些情况下,由层级设定的限制可通过假想参考解码器(Hypothetical ReferenceDecoder,HRD)规范和在已编码视频序列中用信号表示的HRD缓冲器管理的元数据来进一步限定。
在一实施例中,接收器(1210)可连同已编码视频一起接收附加(冗余)数据。所述附加数据可以是已编码视频序列的一部分。所述附加数据可由视频解码器(610)用以对数据进行适当解码和/或较准确地重建原始视频数据。附加数据可呈例如时间、空间或信噪比(signal noise ratio,SNR)增强层、冗余分片、冗余图片、前向纠错码等形式。
图13是根据本申请公开的实施例的视频编码器(1103)的框图。
视频编码器(1103)可从视频源(1101)(并非编码器的一部分)接收视频样本,所述视频源可采集将由视频编码器(1103)编码的视频图像。
视频源(1101)可提供将由视频编码器(1103)编码的呈数字视频样本流形式的源视频序列,所述数字视频样本流可具有任何合适位深度(例如:8位、10位、12位……)、任何色彩空间(例如BT.601Y CrCB、RGB……)和任何合适取样结构(例如Y CrCb 4:2:0、Y CrCb4:4:4)。在媒体服务系统中,视频源(1101)可以是存储先前已准备的视频的存储装置。在视频会议系统中,视频源(1101)可以是采集本地图像信息作为视频序列的相机。可将视频数据提供为至少两个单独的图片,当按顺序观看时,这些图片被赋予运动。图片自身可构建为空间像素阵列,其中取决于所用的取样结构、色彩空间等,每个像素可包括至少一个样本。所属领域的技术人员可以很容易理解像素与样本之间的关系。下文侧重于描述样本。
根据本申请实施例,视频编码器(1103)可实时或在由应用所要求的任何其它时间约束下,将源视频序列的图片编码且压缩成已编码视频序列(1343)。施行适当的编码速度是控制器(1350)的一个功能。为了简洁起见,图中未标示耦接。由控制器设置的参数可包括速率控制相关参数(图片跳过、量化器、率失真优化技术的λ值等)、图片大小、图片群组(group of pictures,GOP)布局,最大运动矢量搜索范围等。控制器(1350)可用于具有其它合适的功能,这些功能涉及针对某一系统设计优化的视频编码器(1103)。
一些视频编码器在本领域技术人员所称的“编码环路”中进行操作。作为简单的描述,在一实施例中,编码环路可包括编码器(1330)中的编码部分(之后称为“源编码器”)(负责基于待编码的输入图片和参考图片创建符号)和嵌入于编码器(1103)中的(本地)解码器(1333)。解码器(1233)以类似于(远程)解码器创建样本数据的方式重建符号以创建样本数据(因为在本申请所考虑的视频压缩技术中,符号与已编码视频码流之间的任何压缩是无损的)。将重建的样本流(样本数据)输入到参考图片存储器(1334)。由于符号流的解码产生与解码器位置(本地或远程)无关的位精确结果,因此参考图片存储器内容在本地编码器与远程编码器之间也是按比特位精确对应的。换句话说,编码器的预测部分“看到”的参考图片样本与解码器将在解码期间使用预测时所“看到”的样本值完全相同。这种参考图片同步性基本原理(以及在例如因信道误差而无法维持同步性的情况下产生的漂移)也用于一些相关技术。
“本地”解码器(1333)的操作可与例如已在上文结合图12详细描述视频解码器(1110)的“远程”解码器相同。然而,另外简要参考图13,当符号可用且熵编码器(1345)和解析器(1220)能够无损地将符号编码/解码为已编码视频序列时,视频解码器(1110)的熵解码部分,包括信道(1212)、接收器(1210)、缓冲存储器(1215)和解析器(1220),可能无法完全在本地解码器(1333)中实施。
此时可以观察到,除存在于解码器中的解析/熵解码之外的任何解码器技术,也必定以基本上相同的功能形式存在于对应的编码器中。出于此原因,本申请侧重于解码器操作。可简化编码器技术的描述,因为编码器技术与全面地描述的解码器技术互逆。仅在某些区域中需要更详细的描述,并且在下文提供。
在操作期间,在一些实施例中,源编码器(1330)可执行运动补偿预测编码。参考来自视频序列中被指定为“参考图片”的至少一个先前已编码图片,所述运动补偿预测编码对输入图片进行预测性编码。以此方式,编码引擎(1332)对输入图片的像素块与参考图片的像素块之间的差异进行编码,所述参考图片可被选作所述输入图片的预测参考。
本地视频解码器(1333)可基于源编码器(1330)创建的符号,对可指定为参考图片的图片的已编码视频数据进行解码。编码引擎(1332)的操作可为有损过程。当已编码视频数据可在视频解码器(图13中未示)处被解码时,重建的视频序列通常可以是带有一些误差的源视频序列的副本。本地视频解码器(1333)复制解码过程,所述解码过程可由视频解码器对参考图片执行,且可使重建的参考图片存储在参考图片高速缓存(1334)中。以此方式,视频编码器(1103)可在本地存储重建的参考图片的副本,所述副本与将由远端视频解码器获得的重建参考图片具有共同内容(不存在传输误差)。
预测器(1335)可针对编码引擎(1332)执行预测搜索。即,对于将要编码的新图片,预测器(1335)可在参考图片存储器(1334)中搜索可作为所述新图片的适当预测参考的样本数据(作为候选参考像素块)或某些元数据,例如参考图片运动矢量、块形状等。预测器(1335)可基于样本块逐像素块操作,以找到合适的预测参考。在一些情况下,根据预测器(1335)获得的搜索结果,可确定输入图片可具有从参考图片存储器(1334)中存储的至少两个参考图片取得的预测参考。
控制器(1350)可管理源编码器(1330)的编码操作,包括例如设置用于对视频数据进行编码的参数和子群参数。
可在熵编码器(1345)中对所有上述功能单元的输出进行熵编码。熵编码器根据例如霍夫曼编码、可变长度编码、算术编码等技术对各种功能单元生成的符号进行无损压缩,从而将所述符号转换成已编码视频序列。
传输器(1340)可缓冲由熵编码器(1345)创建的已编码视频序列,从而为通过通信信道(1360)进行传输做准备,所述通信信道可以是通向将存储已编码的视频数据的存储设备的硬件/软件链路。传输器(1340)可将来自视频编码器(1330)的已编码视频数据与要传输的其它数据合并,所述其它数据例如是已编码音频数据和/或辅助数据流(未示出来源)。
控制器(1350)可管理视频编码器(1103)的操作。在编码期间,控制器(1350)可以为每个已编码图片分配某一已编码图片类型,但这可能影响可应用于相应的图片的编码技术。例如,通常可将图片分配为以下任一种图片类型:
帧内图片(I图片),其可以是不将序列中的任何其它图片用作预测源就可被编码和解码的图片。一些视频编解码器容许不同类型的帧内图片,包括例如独立解码器刷新(Independent Decoder Refresh,“IDR”)图片。所属领域的技术人员了解I图片的变体及其相应的应用和特征。
预测性图片(P图片),其可以是可使用帧内预测或帧间预测进行编码和解码的图片,所述帧内预测或帧间预测使用至多一个运动矢量和参考索引来预测每个块的样本值。
双向预测性图片(B图片),其可以是可使用帧内预测或帧间预测进行编码和解码的图片,所述帧内预测或帧间预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,至少两个预测性图片可使用多于两个参考图片和相关联元数据以用于重建单个块。
源图片通常可在空间上细分成至少两个样本块(例如,4×4、8×8、4×8或16×16个样本的块),且逐块进行编码。这些块可参考其它(已编码)块进行预测编码,根据应用于块的相应图片的编码分配来确定所述其它块。举例来说,I图片的块可进行非预测编码,或所述块可参考同一图片的已编码的块来进行预测编码(空间预测或帧内预测)。P图片的像素块可参考一个先前编码的参考图片通过空间预测或通过时域预测进行预测编码。B图片的块可参考一个或两个先前编码的参考图片通过空间预测或通过时域预测进行预测编码。
视频编码器(1103)可根据例如ITU-T H.265建议书的预定视频编码技术或标准执行编码操作。在操作中,视频编码器(1103)可执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测编码操作。因此,已编码视频数据可符合所用视频编码技术或标准指定的语法。
在一实施例中,传输器(1340)可在传输已编码的视频时传输附加数据。源编码器(1330)可将此类数据作为已编码视频序列的一部分。附加数据可包括时间/空间/SNR增强层、冗余图片和分片等其它形式的冗余数据、SEI消息、VUI参数集片段等。
在VVC中,除了宽度或高度大于64的CU之外,CU大小总是等于TU大小,这种方式还不如HEVC中的RQT设计灵活,为了更好的编码性能,需要进行改进。
在VVC之上直接利用RQT并不是最佳的,因为递归变换分割带来高复杂度,并且在VVC中,某些非正方形编码块不会进行四叉树分割。
SVT需要几个附加位来指示子块变换类型、位置和大小,这对于帧间编码来说成本很高。如果避免这样的信令,使用方法隐式地导出子块变换类型、位置和大小,将在编码增益和编码器复杂度方面更有效。
SVT的一个限制是它只能支持非常有限的子块位置,例如左或右,上或下,而增加更多的支持位置,不可避免地增加了编码器复杂度和信令成本。如果可隐式地导出子块位置,则所支持的子块位置可更灵活,同时不增加编码器或解码器复杂度。
本申请的实施例可单独使用或以任何顺序组合使用。在整个申请中,DST-7可由DST-4代替,DCT-8可由DCT-4代替。
根据本申请实施例,可应用块形状自适应变换分割。在该实施例中,子块变换的数量和子块变换的大小取决于编码块(CU)的大小。
在一个实施例中,如果编码块是正方形块,则编码块可采用如图4A所示的单个变换或如图4B所示的四个四分之一大小的变换。该选择可由标志用信号通知。
在另一实施例中,如果编码块宽度大于高度,则编码块可采用如图5A所示的单个变换或多个相等大小的较小的变换。该选择可由标志用信号通知。
在一个示例中,如图5B所示,编码块被分割成2个一半大小的子块,并且对每个子块执行变换,并且每个一半大小的变换具有编码块的一半宽度,但是具有与编码块相同的高度。
在一个示例中,如图5C所示,编码块被分割成2个一半大小的子块,并且对每个子块执行变换,并且每个一半大小的变换具有编码块的一半高度,但是具有与编码块相同的宽度。
在一个示例中,如图5D所示,编码块被分割成4个四分之一大小的子块,并且对每个子块执行变换,并且每个四分之一大小的变换具有编码块的四分之一宽度,但是具有与编码块相同的高度。
在一个示例中,如图5E所示,编码块被分割成4个四分之一大小的子块,并且对每个子块执行变换,并且每个四分之一大小变换具有编码块的四分之一高度,但是具有与编码块相同的宽度。
在另一实施例中,如果编码块宽度大于高度,则编码块可应用如图6A所示的单个变换或三个子块变换。该选择可由标志用信号通知。
在图6B所示的一个示例中,一半大小的变换中的每一个变换具有编码块的一半宽度,但是具有与编码块相同的高度。
在图6C所示的一个示例中,一半大小的变换中的每一个变换具有编码块的一半高度,但是具有与编码块相同的宽度。
在另一实施例中,如果编码块高度大于宽度,则编码块可应用如图7A所示的单个变换或多个相等大小的较小变换。该选择可由标志用信号通知。
在图7B所示的一个示例中,编码块被分割成2个一半大小的子块,并且对每个子块执行变换,并且一半大小的变换中的每一个变换具有编码块的一半高度,但是具有与编码块相同的宽度。
在图7C所示的一个示例中,编码块被分割成2个一半大小的子块,并且对每个子块执行变换,一半大小的变换中的每一个具有编码块的一半宽度,但是具有与编码块相同的高度。
在一个示例中,编码块被分割成4个四分之一大小子块,并且对每个子块执行变换,并且四分之一大小变换中的每一个具有编码块的四分之一高度,但是具有与编码块相同的宽度。
在一个示例中,编码块被分割成4个四分之一大小子块,并且对每个子块执行变换,并且四分之一大小变换中的每一个具有编码块的四分之一宽度,但是具有与编码块相同的高度。
在另一实施例中,如果编码块高度大于宽度,则编码块可应用如图8A所示的单个变换或三个子块变换。该选择可由标志用信号通知。
在图8B所示的一个示例中,子块变换中的每一个变换具有与编码块相同的宽度。
在图8C所示的一个示例中,子块变换中的每一个变换具有与编码块相同的高度。
对于每个TU,根据TU在CU内的位置,可对MTS应用不同的变换集。
在一个实施例中,对于每个TU,根据TU在CU内的位置,可对MTS应用一个变换集中不同顺序的可用变换类型。
在一个示例中,如果TU在CU的左半部中,如图9A和图9B所示,则在MTS中选择水平变换时,变换集中变换类型的顺序是{DCT-8,DST-7},可选地,变换集的顺序是{DST-7,DCT-8}。
在一个示例中,如果TU在CU的右半部中,如图9C和图9D所示,则在MTS中选择水平变换时,变换集中变换类型的顺序是{DST-7,DCT-8},可选地,变换集的顺序是{DCT-8,DST-7}。
在一个示例中,如果TU在CU的上半部中,则在MTS中选择垂直变换时,变换集中变换类型的顺序是{DCT-8,DST-7},可选地,变换集中变换类型的顺序是{DST-7,DCT-8}。
在一个示例中,如果TU在CU的下半部中,则在MTS中选择垂直变换时,变换集中变换类型的顺序是{DST-7,DCT-8},可选地,变换集中变换类型的顺序是{DCT-8,DST-7}。
在一个示例中,如果TU的左边界与CU的左边界对齐,TU的右边界也与CU的右边界对齐,则在MTS中选择水平变换时,变换集中变换类型的顺序是{DCT-8,DST-7},可选地,变换集中变换类型的顺序是{DST-7,DCT-8}。
在一个示例中,如果TU的上边界与CU的上边界对齐,TU的下边界也与CU的下边界对齐(例如,针对1.c.i所示的图),则在MTS中选择垂直变换时,变换集中变换类型的顺序为{DCT-8,DST-7},可选地,变换集中变换类型的顺序为{DST-7,DCT-8}。
在一个示例中,如果TU的左边界不与CU的左边界对齐,并且TU的右边界也不与CU的右边界对齐,则在MTS中选择水平变换时,变换集中变换类型的顺序是{DCT-8,DST-7},可选地,变换集中变换类型的顺序是{DST-7,DCT-8}。
在一个示例中,如果TU的上边界不与CU的上边界对齐,并且TU的下边界与CU的下边界对齐,则在MTS中选择垂直变换时,变换集中变换类型的顺序是{DCT-8,DST-7},可选地,变换集中变换类型的顺序是{DST-7,DCT-8}。
在一个实施例中,对于每个TU,根据TU在CU内的位置,可对MTS应用一个变换集中不同数量的可用变换类型。
在一个示例中,如果TU在CU的左半部或右半部中,则用于水平变换的变换集具有两种变换类型DST-7或DCT-8,可选地,变换集仅具有一个默认变换DCT-2(或DST-7或DCT-8)。
在一个示例中,如果TU在CU的上半部或下半部中,则用于垂直变换的变换集具有两种变换类型DST-7或DCT-8,可选地,变换集仅具有一个默认变换DCT-2(或DST-7或DCT-8)。
在另一实施例中,上述方法仅应用于帧间CU,而不应用于帧内CU。
根据本申请实施例,变换分割可仅限于一个级别,这意味着对于每个编码块,在将编码块分割成多个更小的TU之后,每个TU不能被进一步分割。因此,TU分割不是递归的。
对于编码块,可用信号通知标志cbf_flag_cb_depth0和标志cbf_flag_cr_depth0,分别指示整个编码块中是否存在任何非零cb和cr系数。
如果编码块被进一步分割成多个TU,则对于每个TU,如果用信号通知标志cbf_flag_cb_depth0是默认值,其指示在整个编码块中存在至少一个非零系数,则可用信号通知标志cbf_flag_cb_depth1。
如果编码块被进一步分割成多个TU,则对于每个TU,如果用信号通知标志cbf_flag_cb_depth0是默认值,其指示在整个块中存在至少一个非零系数,则可用信号通知标志cbf_flag_cb_depth1。
如果编码块被进一步分割成多个TU,则对于最后编码的TU,如果用信号通知cbf_flag_cb_depth0(或cbf_flag_cr_depth0)是一个缺省值,用于指示至少一个非零cb(或cr)系数来,并且同一编码块内的所有在前TU的cbf_flag_cb_depth1(cbf_flag_cr_depth1)标志使用一个指示没有非零系数的默认值(例如,0)来编码,则不用信号通知而是隐式地导出cbf_flag_cb_depth1(或cbf_flag_cr_depth1)。
隐式地导出的cbf_flag_cb_depth1(或cbf_flag_cr_depth1)标志值是一个指示存在至少一个非零系数的值。
对于编码块,可用信号通知cbf_flag_chroma_depth0标志以指示在整个编码块中是否存在任何非零色度系数。
如果编码块被进一步分割成多个TU,则对于每个TU,如果用信号通知cbf_flag_chroma_depth0为一个指示至少一个非零系数的默认值,则可用信号通知cbf_flag_chroma_depth1标志。
对于每个TU,如果用信号通知cbf_flag_chroma_depth1标志为一个指示至少一个非零色度系数的默认值(例如,1),则可以进一步用信号通知cbf_flag_cb_depth1标志和cbf_flag_cr_depth1标志,以分别指示是否存在至少一个非零cb系数和非零cr系数。
对于每个TU,如果用信号通知cbf_flag_chroma_depth1标志为一个指示至少一个非零色度系数的默认值(例如,1),并且进一步用信号通知cbf_flag_cb_depth1标志为一个指示无非零cb系数的默认值(例如,0),则可不用信号通知cbf_flag_cr_depth1标志,而是隐式地导出该标志,来指示至少一个非零cr系数的值。
如果编码块被进一步分割成多个TU,则对于最后编码的TU,如果用信号通知cbf_flag_chroma_depth0为一个指示至少一个非零系数的默认值,并且同一编码块内的所有在前TU的cbf_flag_chroma_depth1标志用指示没有非零系数的默认值(例如,0)来编码,则可不用信号通知而是隐式地导出cbf_flag_chroma_depth1标志。
隐式地导出的cbf_flag_chroma_depth1(或cbf_flag_chroma_depth1)标志值是一个指示存在至少一个非零系数的值。
针对编码块,对root_cbf进行编码,以指示整个编码块内是否存在非零亮度或色度系数。
如果编码块被进一步分割成多个TU,则对于最后编码的TU,如果同一编码块内的所有在前TU用指示无非零亮度或色度系数且当前TU没有非零色度系数的默认值(例如,0)来编码,则可不用信号通知而是隐式地导出cbf_flag_luma_depth1标志。
隐式地导出的cbf_flag_luma_depth1标志值是一个指示存在至少一个非零亮度系数的值。
在本申请中,覆盖了残差块的大部分能量的子块,意味着该子块所覆盖的样本的测量(measurement)大于整个编码块所覆盖的样本的测量的给定百分比。该百分比可是预定义的阈值,例如90%或80%。测量包括但不限于:绝对值之和或平方值之和。
对于帧间编码,当使用多个预测块来生成当前块的预测(例如,双向预测或帧内预测)时,可使用这些预测块的预测样本值来确定当前块的变换大小和/或位置。
在一个实施例中,通过从一个预测块减去另一个预测块来计算虚拟残差块(VRB),然后根据该VRB的残差能量分布,为当前块确定变换块大小和位置。
在一个实施例中,子块变换大小可仅为一半大小,并且将覆盖残差块的大部分能量的子块位置确定为子块变换位置。
在另一实施例中,子块变换大小可仅为四分之一大小,例如宽度的四分之一或高度的四分之一或宽度和高度两者的一半,并且将覆盖残差块的大部分能量的子块位置确定为子块变换位置。
在另一实施例中,子块变换大小可为一半大小或四分之一大小,并且为当前块显式地用信号通知所选择的大小,然后给定所选择的子块变换大小,将覆盖残差块的大部分能量的子块块位置确定为子块变换位置。
在另一实施例中,通过尝试该VRB上不同子块大小和位置来确定子块变换大小和位置,当特定子块变换大小和位置覆盖大部分残差能量时,将该特定子块变换大小和位置确定为子块变换大小和位置。
不同的残差百分比阈值可用于不同的子块大小。例如,一半大小的子块变换大小的残差百分比阈值是K0,四分之一大小子块变换大小的残差百分比阈值是K1,并且K1大于K0。
在一实施例中,为每个候选子块变换大小单独确定最佳子块变换位置,然后将每个样本上具有最小残差能量值的候选子块变换大小,选择作为子块变换大小。
在另一实施例中,仅允许子块位置的子集。例如,在x和y方向上当前块的左上角的偏移必须是一个值的倍数。在诸如SPS、PPS、条带头或图块头的码流中,可以预定义或用信号通知该值。对于没有被子块变换覆盖的样本,可假定为零,因此没有用信号通知任何系数。
对于帧间编码,当仅使用一个预测块来生成当前块的预测(例如,单向预测)时,可定位第二虚拟预测块,并且预测块和该第二虚拟预测块可用于确定当前块的变换大小和/或位置。
在一个实施例中,通过对当前块的运动矢量进行镜像,并将参考块定位在不同的参考图片中,来导出第二虚拟预测块。
在一个实施例中,通过搜索使用当前块的不同参考帧的相邻块来导出第二虚拟预测块,然后通过使用当前块的位置、该相邻块的运动矢量和相关联的参考帧来导出第二虚拟预测块。
在另一实施例中,通过帧内平面模式导出第二虚拟预测块。
在另一实施例中,利用预测块和第二虚拟预测块,可通过从一个预测块减去另一个预测块来计算虚拟残差块(VRB),然后根据该VRB的残差能量分布,可为当前块确定变换块大小和位置。然后可应用上述技术。
对于帧间编码,对于每个编码块,使用一个标志来发信号通知是使用全尺寸变换大小还是较小的变换大小。
在一个实施例中,如果不支持所得到的子块变换大小,例如需要使用2点变换,则永远不能使用该子块大小。
在一个实施例中,如果当前块对于不同样本具有不同的运动矢量,例如,子块运动,则不能使用子块大小,从而不能使用子块变换。
在一个实施例中,如果当前块对于不同样本具有不同的运动矢量,例如,子块运动,则将虚拟残差块划分为多个子虚拟残差块,并且对于每个子预测块,分别使用其相关联的运动矢量和预测块,导出残差样本。
子块变换大小和位置可以由亮度样本导出,但与色度样本共享。在一实施例中,子块变换大小和位置可由亮度样本和色度样本两者导出,并同时用于当前亮度块和当前色度块。在一实施例中,可仅导出子块变换大小和位置,并仅将其用于亮度样本。
当亮度样本和色度样本都用于导出虚拟残差块时,可通过亮度样本和色度样本的残差能量的加权和,来测量每个样本的残差能量。在诸如SPS、PPS、条带头或图块头的码流中,可预定义或用信号通知该加权。
在高级语法元素中用信号通知是否可应用上述技术,该高级语法元素包括但不限于VPS、PPS、SPS、条带、图块、图块组、CTU头。
图14是用于将编码单元(CU)分割成至少一个变换单元(TU)用于对视频序列进行编码的示例方法1400的流程图。在一些实施方案中,图14的至少一个方法框可由解码器1110执行。在一些实施方案中,图14的至少一个方法框可由与解码器1110分离或包括解码器1110的另一设备或一组设备来执行,例如编码器1103。
如图14所示,方法1400可包括确定CU的高度(框1410)。
如图14进一步所示,方法1400可包括确定CU的宽度(框1420)。
如图14进一步所示,方法1400可包括基于CU的高度和CU的宽度,确定至少一个TU中每个TU的TU大小(框1430)。
如图14进一步所示,方法1400可包括基于CU的高度和CU的宽度,确定至少一个TU的至少一个TU位置(框1440)。
如图14进一步所示,方法1400可以包括基于至少一个TU的大小和至少一个TU的至少一个位置,将CU分割成至少一个TU(框1450)。
根据本申请实施例,CU的高度可等于CU的宽度,至少一个TU的数量为四,每个TU的高度为CU的高度的一半,每个TU的宽度为CU的宽度的一半。
根据本申请实施例,CU的宽度可大于CU的高度,至少一个TU的数量为二,每个TU的高度等于CU的高度,每个TU的宽度为CU的宽度的一半。
根据本申请实施例,CU的高度可大于CU的宽度,至少一个TU的数量为二,每个TU的高度为所述CU的高度的一半,每个TU的宽度等于CU的宽度。
根据本申请实施例,对于至少一个TU中的一个TU,基于所述至少一个TU位置中该TU的位置,确定用于该TU的变换类型的顺序。
根据本申请实施例,不再将至少一个TU分割成更小的TU。
根据本申请实施例,方法1400可进一步包括确定使用多个预测块对所述CU进行帧间预测编码;以及基于多个预测块的预测样本值,确定TU大小和至少一个TU位置中的至少一个。
根据本申请实施例,多个预测块可包括第一预测块和第二预测块,并且方法1400可进一步包括通过从第一预测块减去第二预测块,计算出虚拟残差块(VRB);以及基于VRB的残差能量分布,确定TU大小和至少一个TU位置中的至少一个。
根据本申请实施例,可从潜在TU位置的子集中,选择出至少一个TU位置。
根据本申请实施例,可在序列参数集、图片参数集、条带头或图块头的任一个中,用信号通知该子集。
根据本申请实施例,方法1400可进一步包括确定使用单个预测块对CU进行帧间预测编码;定位虚拟预测块;以及基于预测块和虚拟预测块,确定TU大小和至少一个TU位置中的至少一个。
根据本申请实施例,可通过对CU的运动矢量进行镜像,以及在与预测块的参考图片不同的参考图片中定位虚拟预测块,导出虚拟预测块。
根据本申请实施例,CU可与第一参考帧相关联,并且方法1400可进一步包括确定与不同于第一参考帧的第二参考帧相关联的相邻块,以及基于CU的位置、相邻块的运动矢量和第二参考帧,导出虚拟预测块。虽然图14示出了方法1400的示例块,在一些实施方式中,相比于图14所示的块,方法1400还包括其他的块、更少的块、不同的块,或者不同放置的块。此外,或者可选地,方法1400中两个或更多的块可以并行执行。
进一步,上述提出的方法可以由处理电路(例如,至少一个处理器,或者,至少一个集成电路)实施。在一个实施例中,至少一个处理器执行存储在非暂时性计算机可读介质中的程序,以执行上述提出的至少一个方法。
上述技术可以通过计算机可读指令实现为计算机软件,并且物理地存储在至少一个计算机可读介质中。例如,图15示出了计算机系统(1500),其适于实现所公开主题的某些实施例。
所述计算机软件可通过任何合适的机器代码或计算机语言进行编码,通过汇编、编译、链接等机制创建包括指令的代码,所述指令可由至少一个计算机中央处理单元(CPU),图形处理单元(GPU)等直接执行或通过译码、微代码等方式执行。
所述指令可以在各种类型的计算机或其组件上执行,包括例如个人计算机、平板电脑、服务器、智能手机、游戏设备、物联网设备等。
图15所示的用于计算机系统(1500)的组件本质上是示例性的,并不用于对实现本申请实施例的计算机软件的使用范围或功能进行任何限制。也不应将组件的配置解释为与计算机系统(1500)的示例性实施例中所示的任一组件或其组合具有任何依赖性或要求。
计算机系统(1500)可以包括某些人机界面输入设备。这种人机界面输入设备可以通过触觉输入(如:键盘输入、滑动、数据手套移动)、音频输入(如:声音、掌声)、视觉输入(如:手势)、嗅觉输入(未示出),对至少一个人类用户的输入做出响应。所述人机界面设备还可用于捕获某些媒体,气与人类有意识的输入不必直接相关,如音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静止影像相机获得的摄影图像)、视频(例如二维视频、包括立体视频的三维视频)。
人机界面输入设备可包括以下中的至少一个(仅绘出其中一个):键盘1501、鼠标1502、触控板1503、触摸屏1510、数据手套1204、操纵杆1505、麦克风1506、扫描仪1507、照相机1508。
计算机系统(1500)还可以包括某些人机界面输出设备。这种人机界面输出设备可以通过例如触觉输出、声音、光和嗅觉/味觉来刺激至少一个人类用户的感觉。这样的人机界面输出设备可包括触觉输出设备(例如通过触摸屏1510、数据手套1204或操纵杆1505的触觉反馈,但也可以有不用作输入设备的触觉反馈设备)、音频输出设备(例如,扬声器1509、耳机(未示出))、视觉输出设备(例如,屏幕1510,包括阴极射线管(CRT)屏幕、液晶显示(LCD)屏幕、等离子屏幕、有机发光二极管(OLED)屏幕),其中每一个都具有或没有触摸屏输入功能、每一个都具有或没有触觉反馈功能——其中一些可通过诸如立体画面输出的手段输出二维视觉输出或三维以上的输出;虚拟现实眼镜(未示出)、全息显示器和放烟箱(未示出))以及打印机(未示出)。
计算机系统(1500)还可以包括人可访问的存储设备及其相关介质,如包括具有CD/DVD的高密度只读/可重写式光盘(CD/DVD ROM/RW)或类似介质(1521)的光学介质、拇指驱动器(1522)、可移动硬盘驱动器或固体状态驱动器(1523),诸如磁带和软盘(未示出)的传统磁介质,诸如安全软件保护器(未示出)等的基于ROM/ASIC/PLD的专用设备,等等。
本领域技术人员还应当理解,结合所公开的主题使用的术语“计算机可读介质”不包括传输介质、载波或其它瞬时信号。
计算机系统(1500)还可以包括通往至少一个通信网络(1555)的接口。例如,网络(1555)可以是无线的、有线的、光学的。网络(1555)还可为局域网、广域网、城域网、车载网络和工业网络、实时网络、延迟容忍网络等等。网络(1555)还包括以太网、无线局域网、蜂窝网络(GSM、3G、4G、5G、LTE等)等局域网、电视有线或无线广域数字网络(包括有线电视、卫星电视、和地面广播电视)、车载和工业网络(包括CANBus)等等。某些网络(1555)通常需要外部网络接口适配器(1554),用于连接到某些通用数据端口或外围总线1549(例如,计算机系统(1500)的USB端口);其它系统通常通过连接到如下所述的系统总线集成到计算机系统(1500)的核心(例如,以太网接口集成到PC计算机系统或蜂窝网络接口集成到智能电话计算机系统)。通过使用这些网络(1555)中的任何一个,计算机系统(1500)可以与其它实体进行通信。所述通信可以是单向的,仅用于接收(例如,无线电视),单向的仅用于发送(例如CAN总线到某些CAN总线设备),或双向的,例如通过局域或广域数字网络到其它计算机系统。上述的每个网络(1555)和网络接口(1554)可使用某些协议和协议栈。
上述的人机界面设备、人可访问的存储设备以及网络接口可以连接到计算机系统(1500)的核心(1540)。
核心(1540)可包括至少一个中央处理单元(CPU)1541、图形处理单元(GPU)1542、以现场可编程门阵列(FPGA)1543形式的专用可编程处理单元、用于特定任务的硬件加速器1544等。这些设备以及只读存储器(ROM)1545、随机存取存储器1546、内部大容量存储器(例如内部非用户可存取硬盘驱动器、固态硬盘等)1547等可通过系统总线1548进行连接。在某些计算机系统中,可以以至少一个物理插头的形式访问系统总线1548,以便可通过额外的中央处理单元、图形处理单元等进行扩展。外围装置可直接附接到核心的系统总线1548,或通过外围总线1549进行连接。外围总线的体系结构包括外部控制器接口PCI、通用串行总线USB等。
CPU 1541、GPU 1542、FPGA 1543和加速器1544可以执行某些指令,这些指令组合起来可以构成上述计算机代码。该计算机代码可以存储在ROM 1545或RAM 1546中。过渡数据也可以存储在RAM 1546中,而永久数据可以存储在例如内部大容量存储器1547中。通过使用高速缓冲存储器可实现对任何存储器设备的快速存储和检索,高速缓冲存储器可与至少一个CPU 1541、GPU 1542、大容量存储器1547、ROM 1545、RAM 1546等紧密关联。
所述计算机可读介质上可具有计算机代码,用于执行各种计算机实现的操作。介质和计算机代码可以是为本申请的目的而特别设计和构造的,也可以是计算机软件领域的技术人员所熟知和可用的介质和代码。
作为实施例而非限制,具有体系结构的计算机系统(1500),特别是核心1040,可以作为处理器(包括CPU、GPU、FPGA、加速器等)提供执行包含在至少一个有形的计算机可读介质中的软件的功能。这种计算机可读介质可以是与上述的用户可访问的大容量存储器相关联的介质,以及具有非易失性的核心1540的特定存储器,例如核心内部大容量存储器1547或ROM 1545。实现本申请的各种实施例的软件可以存储在这种设备中并且由核心1540执行。根据特定需要,计算机可读介质可包括一个或一个以上存储设备或芯片。该软件可以使得核心1540特别是其中的处理器(包括CPU、GPU、FPGA等)执行本文所述的特定过程或特定过程的特定部分,包括定义存储在RAM 1546中的数据结构以及根据软件定义的过程来修改这种数据结构。另外或作为替代,计算机系统可以提供逻辑硬连线或以其它方式包含在电路(例如,加速器1544)中的功能,该电路可以代替软件或与软件一起运行以执行本文所述的特定过程或特定过程的特定部分。在适当的情况下,对软件的引用可以包括逻辑,反之亦然。在适当的情况下,对计算机可读介质的引用可包括存储执行软件的电路(如集成电路(IC)),包含执行逻辑的电路,或两者兼备。本申请包括任何合适的硬件和软件组合。
虽然本申请已对至少两个示例性实施例进行了描述,但实施例的各种变更、排列和各种等同替换均属于本申请的范围内。因此应理解,本领域技术人员能够设计多种系统和方法,所述系统和方法虽然未在本文中明确示出或描述,但其体现了本申请的原则,因此属于本申请的精神和范围之内。
缩略词
HEVC:高效视频编码
HDR:高动态范围
SDR:标准动态范围
VVC:通用视频编码
JVET:联合视频探索组
CU:编码单元
PU:预测单元
MTS:多变换选择
EMT:增强的多变换
AMT:自适应多变换
SVT:空间可变变换
SBT:子块变换
VPS:视频参数集
PPS:图片参数集
SPS:序列参数集
- 一级变换分割和自适应子块变换
- 关于子块变换模式的分割