CN116208767A - 一种对码流进行解码的方法、装置以及存储码流的设备 - Google Patents

一种对码流进行解码的方法、装置以及存储码流的设备 Download PDF

Info

Publication number
CN116208767A
CN116208767A CN202210879998.1A CN202210879998A CN116208767A CN 116208767 A CN116208767 A CN 116208767A CN 202210879998 A CN202210879998 A CN 202210879998A CN 116208767 A CN116208767 A CN 116208767A
Authority
CN
China
Prior art keywords
block
image
video
size
minqtsizey
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.)
Granted
Application number
CN202210879998.1A
Other languages
English (en)
Other versions
CN116208767B (zh
Inventor
高晗
塞米赫·艾森力克
陈建乐
阿南德·梅赫·科特拉
王彪
赵志杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210879998.1A priority Critical patent/CN116208767B/zh
Publication of CN116208767A publication Critical patent/CN116208767A/zh
Application granted granted Critical
Publication of CN116208767B publication Critical patent/CN116208767B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Lining And Supports For Tunnels (AREA)
  • Paper (AREA)

Abstract

本发明为一种对码流进行解码的方法、装置以及存储码流的设备,大体上涉及视频译码和图像分割方法。具体地,本发明通过为不同的图像分割方法设置分割规则,涉及各分割约束元素之间的关系。本发明提供了用于生成或处理包括编码图像的码流,特别是用于设置分割约束元素并将所述分割约束元素添加到码流中的设备和对应方法。所述设备之一用于确定四叉树划分得到的叶节点图像块的最小亮度分量尺寸(MinQtSizeY);根据所述MinQtSizeY,确定待使用二叉树划分进行划分的译码块的最大亮度分量尺寸(MaxBtSizeY);并将所述确定的MinQtSizeY的信息添加到所述码流中。

Description

一种对码流进行解码的方法、装置以及存储码流的设备
本申请是分案申请,原申请的申请号是201980057718.5,原申请日是2019年09月03 日,原申请的全部内容通过引用结合在本申请中。
技术领域
本发明大体上涉及视频编码、解码和图像分割方法。
背景技术
即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备中存储视频时,视频的大小也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行译码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的地侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
传统方案中,存在多种分割约束元素,每个元素针对不同类型的分割方法约束图像(如视频)的分割。这些不同类型的分割方法具体包括二叉树分割、四叉树分割和三叉树分割。通常在包括编码图像的码流中指示分割约束元素。下文描述了一些重要的分割约束元素。
可以定义最小译码块大小(MinCbSizeY)。在一个示例中,MinCbSizeY可以等于8,即大小为8×8的父块不能使用任何分割(划分)方法进行划分,因为所得到的子块必然会小于 MinCbSizeY(宽度或高度)。根据第二示例,如果MinCbSizeY等于8,则不能使用四叉树划分(分割)等对大小为8×16的父块进行分割,因为所得到的四个子块的大小为4×8(宽度等于4,高度等于8),所得到的子块的宽度小于MinCbSizeY。在第二示例中,假设MinCbSizeY对块的宽度和高度都适用,但可以使用两个不同的语法元素来分别限制宽度和高度。
最大译码树块大小(CtbSizeY)可以表示以亮度像素点数表示最大译码块的大小。
最大二叉树大小(MaxBtSizeY)可以定义为以像素点数表示,可以使用二叉树分割方法进行划分的译码块的最大亮度分量尺寸(宽度或高度)。例如,如果MaxBtSizeY等于64,则不能使用二叉树划分来划分大小(宽度或高度)大于64的译码块。即大小为128×128的块不能使用二叉树划分进行划分,而大小为64×64的块可以使用二叉树划分进行划分。
最小二叉树大小(MinBtSizeY)可以定义为以像素点数表示,可以使用二叉树分割方法进行划分的译码块的最小亮度分量尺寸(宽度或高度)。例如,如果MinBtSizeY等于16,则不能使用二叉树划分来划分大小(宽度或高度)小于或等于16的译码块。即大小为8×8的块不能使用二叉树划分进行划分,而大小为32×32的块可以使用二叉树划分进行划分。
最小四叉树大小(MinQtSizeY)可以定义为译码树单元(Coding Tree Unit,CTU)的四叉树划分得到的叶节点图像块的最小亮度分量尺寸。大小可以表示以像素点数计算的块的宽度或高度。对于正方形块,它还可以表示宽度和高度。例如,如果MinQtSizeY等于16,则大小小于或等于16的译码块不能使用四叉树划分方法分割成子块。传统方案中,使用MinQtSizeY(及其指示的语法元素‘log2_min_qt_size_intra_slices_minus2’和‘log2_min_qt_size_inter_slices_minus 2’)表示最小四叉树块大小。需要说明的是,大小的语法元素可以是间接语法元素,即log2_min_qt_size_intra_slices_minus2可以是最小四叉树块的亮度像素点数的二进制对数(底为2)。
最小变换块大小(MinTbSizeY)可以定义为以像素点数表示,可以使用三叉树分割方法进行划分的译码块的最小变换块大小。例如,如果MinTbSizeY等于16,则不能使用三叉树划分来划分大小(宽度或高度)小于或等于16的译码块。即大小为8×8的块不能使用三叉树划分进行划分,而大小为32×32的块可以使用三叉树划分进行划分。
最大多类型树深度(MaxMttDepth)可以定义为四叉树叶或CTU的多类型树划分得到的译码单元的最大层级深度。CTU或译码树块(Coding Tree Block,CTB)描述了用于分割图像帧的最大块大小。MaxMttDepth描述了可以用于获得子块的连续二叉树或三叉树划分的次数上限。例如,假设CTU大小为128×128(宽度等于128,高度等于128),且MaxMttDepth等于1,则每个父块(大小为128×128)可以首先使用二叉树划分来划分成两个128×64的子块。然而,子块不能应用任何连续的二叉树划分(产生128×32或64×64子块),因为已达到允许的二叉树划分的最大次数。需要说明的是,MaxMttDepth可以控制最大二叉树划分深度或最大三叉树划分深度,也可以同时控制这两者。如果MaxMttDepth同时控制二叉树和三叉树划分深度,则一次二叉树划分接一次三叉树划分可以算作两次层次划分。传统方案中,使用MaxMttDepth(及其语法元素‘max_mtt_hierarchy_depth_inter_slices’和‘max_mtt_hierarchy_depth_intra_slices’)表示多类型树产生的译码单元的最大层级深度。
此外,‘pic_width_in_luma_samples’是表示图像大小元素,即以亮度像素点为单位的每个解码图像的宽度的语法元素。pic_width_in_luma_samples通常不等于0,应为MinCbSizeY 的整数倍。
类似地,‘pic_height_in_luma_samples’是表示图像大小元素,即以亮度像素点为单位的每个解码图像的高度的语法元素。pic_height_in_luma_samples通常不等于0,应为MinCbSizeY 的整数倍。
视频译码的目的之一是可以提供高质量和低码率。有助于实现这一目的方法之一是提高码流结构的效率。
发明内容
鉴于上述问题,本发明的实施例旨在改进图像分割的当前实现方式。具体地,目的是提高不同图像分割方法(即二叉树、四叉树和三叉树分割方法)的可用性和灵活性。一个目标是可以对更多的图像大小进行编码和解码。
本发明的实施例在所附独立权利要求中提供。本发明的有利实现方式在从属权利要求中进一步定义。
上述和其它目的通过独立权利要求请求保护的主题来实现。其它实现方式在从属权利要求、说明书和附图中显而易见。
具体实施例在所附独立权利要求中概述,其它实施例在从属权利要求中概述。
在本发明的实施例中,建立了新的分割规则,具体是设置各分割约束元素之间的关系,并在码流中与编码图像一起指示这些关系。这些分割规则可以用于将视频数据编码为码流并将码流解码为解码视频数据。
根据第一方面,本发明涉及用于对包括编码图像的码流进行解码或处理的设备。所述设备包括电路,所述电路用于:从所述码流(101)获取语法元素;获取四叉树划分得到的亮度叶节点图像块最小尺寸MinQtSizeY(105)的信息,所述亮度叶节点图像块最小尺寸MinQtSizeY(105)用亮度像素点数量表示;根据MinQtSizeY(105)的所述信息和所获得的语法元素,确定允许使用二叉树划分进行划分的亮度根节点图像块的最大尺寸MaxBtSizeY(102),所述亮度根节点图像块的最大尺寸MaxBtSizeY(102)用亮度像素点数量表示。
通过设置这些分割约束元素之间的关系来定义新的分割规则,解码设备有助于提高不同图像分割方法,特别是四叉树和二叉树划分的可用性和灵活性。
根据所述第一方面,在所述方法的一种可能实现方式中,所述电路用于:在考虑到所述 MaxBtSizeY的下限为所述MinQtSizeY的情况下,确定所述MaxBtSizeY。
根据所述第一方面或上述实现方式,在所述方法的一种可能实现方式中,所述语法元素为所述MinQtSizeY(105)的底为2的对数与所述MaxBtSizeY(102)的底为2的对数之间的差值的语法元素(301)。
因此,例如在解码端,可以容易地推断出相关的分割约束元素,同时减少码流中的信息开销。差值是关系的一个示例。然而,该关系也可以是可以从MinQtSizeY推断出MaxBtSizeY 的比例因子、计算方案等。
根据所述第一方面或上述实现方式,在所述方法的一种可能实现方式中,所述语法元素为所述MinQtSizeY(105)与所述MaxBtSizeY(102)之间的差值的语法元素(301),所述差值的语法元素(即log2_diff_max_bt_size_min_qt_size)可以发送所述差值以2为底的对数值。这种差值语法元素以紧凑的方式来指示差值。
根据所述第一方面或上述实现方式,在所述方法的一种可能实现方式中,所述电路用于:从所述码流获取所述语法元素,其中,所述语法元素是基于四叉树叶节点图像块的多类型树划分得到的译码单元的最大层级深度(MaxMttDepth)。因此,例如在解码端,可以推断出相关的分割约束元素,同时减少码流中的信息开销。
另外或或者,所述电路可以用于:如果MaxMttDepth等于0,则不从所述码流获取所述 MaxBtSizeY的任何语法元素。
另外或或者,所述电路可以用于:如果所述MaxMttDepth(103)不等于0,则不从所述码流(101)获取所述语法元素。
根据第二方面,本发明涉及一种用于生成或处理包括编码图像的码流的设备,其中,所述设备用于:确定四叉树划分得到的叶节点图像块的最小亮度分量尺寸MinQtSizeY;根据所述MinQtSizeY,确定待使用二叉树划分进行划分的译码块的最大亮度分量尺寸MaxBtSizeY;并将所述确定的MinQtSizeY的信息添加到所述码流中。
该方法实现了高效的编码器实现方式,其中,生成的流具有紧凑的语法,并且使解码器可以高效地推断出约束参数。上文针对解码端所述的优点也适用于生成码流的编码端。
根据所述第二方面或上述实现方式,在所述方法的一种可能实现方式中,所述设备(其处理电路)用于:在考虑到所述MaxBtSizeY的下限为所述MinQtSizeY的情况下,确定所述 MaxBtSizeY。
根据所述第二方面或上述实现方式,在所述方法的一种可能实现方式中,所述用于生成或处理码流的设备还可以用于:将所述MinQtSizeY(105)的底为2的对数与所述MaxBtSizeY (102)的底为2的对数之间的差值的语法元素添加到所述码流(101)中。
根据所述第二方面或上述实现方式,在所述方法的一种可能实现方式中,所述语法元素为所述MinQtSizeY(105)与所述MaxBtSizeY(102)之间的差值的语法元素(301),所述差值的语法元素发送所述差值以2位底的对数值。
根据所述第二方面或上述实现方式,在所述方法的一种可能实现方式中,所述设备用于:根据译码单元的最大层级深度MaxMttDepth将MaxBtSizeY的语法元素添加到所述码流中,其中,所述译码单元是基于多类型树划分得到。
另外或或者,所述设备用于:如果所述MaxMttDepth等于0,则不将所述MaxBtSizeY的任何语法元素添加到所述码流中。
另外或或者,所述设备用于:如果所述MaxMttDepth不等于0,则将所述MaxBtSizeY的任何语法元素添加到所述码流中。
根据第三方面,本发明涉及一种用于生成或处理码流(包括编码图像)的方法,包括以下步骤:确定四叉树划分得到的叶节点图像块的最小亮度分量尺寸MinQtSizeY;根据所述 MinQtSizeY,确定待使用二叉树划分进行划分的译码块的最大亮度分量尺寸MaxBtSizeY;并将所述确定的MinQtSizeY(105)的信息添加到所述码流中。
根据第四方面,本发明涉及一种用于对包括编码图像的码流进行解码或处理的方法,包括以下步骤:从所述码流(101)获取语法元素;获取四叉树划分得到的亮度叶节点图像块最小尺寸MinQtSizeY(105)的信息,所述亮度叶节点图像块最小尺寸MinQtSizeY(105)用亮度像素点数量表示;根据MinQtSizeY(105)的所述信息和所获得的语法元素,确定允许使用二叉树划分进行划分的亮度根节点图像块的最大尺寸MaxBtSizeY(102),所述亮度根节点图像块的最大尺寸MaxBtSizeY(102)用亮度像素点数量表示。
所述方法还可以包括:根据所述MaxBtSizeY确定是否可以对图像块应用二叉树划分;根据所述确定的结果获得所述图像块的译码块;并获取所述译码块的重建像素点值。
所述图像块可以是编码图像的亮度块。
所述语法元素可以表示所述MaxBtSizeY(102)的底为2的对数与所述MinQtSizeY(105) 的底为2的对数之间的差值;或所述语法元素可以表示所述MaxBtSizeY与所述MinQtSizeY 之间的差值。
所述语法元素可以来自所述码流的条带头(slice header)。
本发明第三方面所述的方法可由本发明第一方面所述的装置执行。本发明第一方面所述的方法的其它特征和实现方式对应于本发明第三方面所述的装置的特征和实现方式。
本发明第四方面所述的方法可由本发明第二方面所述的装置执行。本发明第二方面所述的方法的其它特征和实现方式对应于本发明第四方面所述的装置的特征和实现方式。
第二方面所述的方法可以扩展为对应于第一方面所述的第一装置的实现方式。因此,所述方法的实现方式包括所述第一装置的对应实现方式的一个或多个特征。
第四方面所述的方法的优点与第三方面所述的方法的对应实现方式的优点相同。
根据第五方面,本发明涉及一种用于对视频流进行解码的装置,包括处理器和存储器。所述存储器存储指令,所述指令使所述处理器执行根据所述第三方面所述的方法。
根据第六方面,本发明涉及一种用于对视频流进行编码的装置,包括处理器和存储器。所述存储器存储指令,所述指令使所述处理器执行根据所述第四方面所述的方法。
根据第七方面,提供一种储存有指令的计算机可读存储介质,在执行所述指令时使一个或多个处理器对视频数据进行译码。所述指令使所述一个或多个处理器执行根据所述第三方面或第四方面或所述第三方面或第四方面任意可能的实施例所述的方法。
根据第八方面,本发明涉及一种计算机程序,包括程序代码,在计算机中执行所述程序代码时,执行根据所述第三方面或第四方面或所述第三方面或第四方面任意可能的实施例所述的方法。
附图和以下描述对一个或多个实施例的细节进行了阐述。其它特征、目的和优点在说明书、附图以及权利要求中是显而易见的。
根据一个实施例,提供了一种计算机程序产品,包括程序代码,当所述设备的一个或多个处理器执行所述程序代码时,用于控制设备执行上述任一种方法。
为了清楚起见,本文公开的任一实施例可以与其它实施例中的任意一个或多个实施例结合,在本发明的范围内产生新的实施例。
根据以下详细说明结合附图和权利要求能更清楚地理解这些和其它特征。
需要说明的是,本申请中所述的所有设备、元件、单元和构件都可以在软件或硬件元件或其任何种类的组合中实现。本申请中描述的各种实体执行的所有步骤和所描述的将由各种实体执行的功能旨在表明各个实体适于或用于执行各自的步骤和功能。虽然在以下具体实施例的描述中,由外部实体执行的特定功能或步骤没有在执行该特定步骤或功能的该实体的具体详述元件的描述中反映,但是技术人员应该清楚,这些方法和功能可以在相应的硬件或软件元件或其任意组合中实现。
附图说明
结合所附附图,下面具体实施例的描述将阐述上述各方面及实现方式,其中:
图1示出了本发明实施例提供的设备;
图2示出了本发明的第二具体实施例提供的设备的SPS RBSP语法;
图3示出了本发明的第二具体实施例提供的设备的条带头语法;
图4示出了本发明的第三具体实施例提供的设备的SPS RBSP语法;
图5示出了本发明的第四具体实施例提供的设备的条带头语法;
图6示出了本发明的第四具体实施例提供的设备的条带头语法;
图7示出了本发明实施例提供的方法;
图8示出了传统的SPS RBSP语法;
图9示出了传统的条带头语法;
图10示出了本发明实施例提供的设备;
图11A为可以实现本发明实施例的一个示例性译码系统的框图;
图11B为可以实现本发明实施例的另一个示例性译码系统的框图;
图12为可以实现本发明实施例的一个示例性视频编码器的框图;
图13为可以实现本发明实施例的视频解码器示例的框图;
图14为本发明实施例提供的网络设备的示意图;
图15为示例性实施例提供的装置的简化框图,其中,该装置可用作图11A中的源设备 12和目的设备14中的任一个或两个;
图16A-图16F示出了VVC中不同的CU划分模式;
图17A示出了HD(1920×1080)底边界CTU(128×128)强制QT分割;
图17B示出了本发明实施例提供的HD(1920×1080)底边界CTU(128×128)强制BT分割;
图18示出了示例性边界定义;
图19A示出了本发明实施例提供的角落情况强制QTBT分割的示例;
图19B示出了本发明实施例提供的位于角落处的块的强制QTBT分割的示例;
图20示出了边界定义的实施例;
图21为使用四叉树-二叉树(quad-tree-binary-tree,QTBT)结构的块分割示例的说明性图;
图22为对应于图6的使用QTBT结构的块分割的树结构示例的说明性图;
图23为水平三叉树分割类型的示例的说明性图;
图24为垂直三叉树分割类型的示例的说明性图;
图25为用于实现本发明实施例的视频编码器示例的框图;
图26为用于实现本发明实施例的视频解码器的示例性结构的框图;
图27为实现内容分发业务的内容供应系统3100的示例性结构的框图;
图28为示出终端设备示例结构的框图。
具体实施方式
首先应理解,尽管下文提供了一个或多个实施例的说明性实现方式,但所公开的系统和/ 或方法可使用任何数量的技术来实现,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
以下描述中,参考附图,所述附图组成本发明一部分并以说明的方式示出本发明实施例的具体方面或可使用本发明实施例的具体方面。应理解,本发明实施例可在其它方面中使用,并可包括附图中未描述的结构变化或逻辑变化。因此,以下详细描述不应以限制性的意义来理解,本发明的范围由所附权利要求书界定。
例如,应理解,结合所描述方法的公开内容对用于执行所述方法的对应设备或系统也可以同样适用,反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括一个或多个单元(例如,功能单元)来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元分别执行多个步骤中的一个或多个),即使附图中未明确描述或说明该一个或多个单元。另一方面,例如,如果根据一个或多个单元(例如,功能单元) 来描述具体装置,则对应的方法可以包括一个步骤来实现一个或多个单元的功能(例如,一个步骤实现一个或多个单元的功能,或多个步骤分别实现多个单元中一个或多个单元的功能),即使附图中未明确描述或说明该一个或多个步骤。此外,应理解,除非另有说明,否则本文中描述的各种示例性实施例和/或方面的特征可相互组合。
视频译码通常指对构成视频或视频序列的图像序列进行处理。在视频译码领域中,术语“帧(frame)”或“图像(picture/image)”可以用作同义词。本申请(或本发明)中使用的视频译码表示视频编码或视频解码。视频编码在信源侧执行,通常包括处理(例如,压缩) 原始视频图像以减少用于表示视频图像所需的数据量(从而更高效存储和/或发送)。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重建视频图像。实施例涉及的视频图像(或通常称为图像,将在下文解释)的“译码”应理解为视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码(编码和解码,CODEC)。
在无损视频译码情况下,可以重建原始视频图像,即重建的视频图像与原始视频图像具有相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)。在有损视频译码情况下,通过量化等进行进一步压缩来减少表示视频图像所需的数据量,而解码器侧无法完全重建视频图像,即重建的视频图像的质量比原始视频图像的质量更低或更差。
自H.261以来的几个视频译码标准属于“有损混合视频编解码器”组(即,将像素点域中的空间预测和时间预测与变换域中用于应用量化的2D变换译码结合)。视频序列中的每个图像通常分割成非重叠的块集合,通常基于块级进行译码。换句话说,编码器通常在块(视频块)级处对视频进行处理,即编码,例如,通过空间(帧内)预测和时间(帧间)预测来生成预测块;从当前块(当前处理/待处理的块)中减去预测块,获得残差块;在变换域中变换残差块并量化残差块,以减少待发送(压缩)的数据量,而解码器处将相对于编码器的逆处理部分应用于经编码或压缩的块,以重建用于表示的当前块。此外,编码器重复解码器的处理步骤,使得编码器和解码器生成相同的预测(例如,帧内预测和帧间预测)和/或重建,用于对后续块进行处理(即译码)。
本文所使用的术语“块”可以是图像或帧的一部分。为便于描述,本文参考由ITU-T视频译码专家组(Video Coding Experts Group,VCEG)和ISO/IEC运动图像专家组(MotionPicture Experts Group,MPEG)的视频译码联合工作组(Joint Collaboration Team onVideo Coding,JCT-VC)开发的高效视频译码(High-Efficiency Video Coding,HEVC)或通用视频译码(Versatile Video Coding,VVC)参考软件描述本发明实施例。本领域普通技术人员应理解本发明实施例不限于HEVC或VVC。可以指译码单元(coding unit,CU)、预测单元(prediction unit,PU)和变换单元(transform unit,TU)。在HEVC中,通过表示为译码树的四叉树结构将译码树单元(coding tree unit,CTU)划分成CU。在CU级决定是使用帧间 (时间)预测还是帧内(空间)预测对图像区域进行译码。可以根据PU划分类型将每个CU 进一步划分为一个、两个或四个PU。一个PU内应用相同的预测过程,并以PU为单位向解码器发送相关信息。在根据PU划分类型应用预测过程获得残差块之后,可以根据与用于CU 的译码树类似的另一种四叉树结构将CU分割为变换单元(transform unit,TU)。在视频压缩技术的最新进展中,使用四叉树和二叉树(qual-tree and binary tree,QTBT)分割帧来分割译码块。在QTBT块结构中,CU可以为正方形或矩形。例如,首先通过四叉树结构分割译码树单元(coding tree unit,CTU)。通过二叉树结构进一步分割四叉树叶节点。二叉树叶节点称为译码单元(coding unit,CU),该分割用于预测和变换处理,而不进行任何进一步分割。即在QTBT译码块结构中,CU、PU和TU的块大小相同。同时,还提出将三叉树(Ternary Tree, TT)分割等多重分割与QTBT块结构结合使用。术语“设备”也可以是“装置”、“解码器”或“编码器”。
在以下实施例中,根据图11至图13描述了编码器20、解码器30和译码系统10。
以下描述中,参考附图,所述附图组成本发明一部分并以说明的方式示出本发明实施例的具体方面或可使用本发明实施例的具体方面。应理解,本发明实施例可在其它方面中使用,并可包括附图中未描述的结构变化或逻辑变化。因此,以下详细描述不应以限制性的意义来理解,本发明的范围由所附权利要求书界定。
例如,应理解,结合所描述方法的公开内容对用于执行所述方法的对应设备或系统也可以同样适用,反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括一个或多个单元(例如,功能单元)来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元分别执行多个步骤中的一个或多个),即使附图中未明确描述或说明该一个或多个单元。另一方面,例如,如果根据一个或多个单元(例如,功能单元) 来描述具体装置,则对应的方法可以包括一个步骤来实现一个或多个单元的功能(例如,一个步骤实现一个或多个单元的功能,或多个步骤分别实现多个单元中一个或多个单元的功能),即使附图中未明确描述或说明该一个或多个步骤。此外,应理解,除非另有说明,否则本文中描述的各种示例性实施例和/或方面的特征可相互组合。
视频译码通常指对构成视频或视频序列的图像序列进行处理。在视频译码领域中,术语“帧(frame)”或“图像(picture/image)”可以用作同义词。本申请(或本发明)中使用的视频译码表示视频编码或视频解码。视频编码在信源侧执行,通常包括处理(例如,压缩) 原始视频图像以减少用于表示视频图像所需的数据量(从而更高效存储和/或发送)。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重建视频图像。实施例涉及的视频图像(或通常称为图像,将在下文解释)的“译码”应理解为视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码(编码和解码,CODEC)。
在无损视频译码情况下,可以重建原始视频图像,即重建的视频图像与原始视频图像具有相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)。在有损视频译码情况下,通过量化等进行进一步压缩来减少表示视频图像所需的数据量,而解码器侧无法完全重建视频图像,即重建的视频图像的质量比原始视频图像的质量更低或更差。
自H.261以来的几个视频译码标准属于“有损混合视频编解码器”组(即,将像素点域中的空间预测和时间预测与变换域中用于应用量化的2D变换译码结合)。视频序列中的每个图像通常分割成非重叠的块集合,通常基于块级进行译码。换句话说,编码器通常在块(视频块)级处对视频进行处理,即编码,例如,通过空间(帧内)预测和时间(帧间)预测来生成预测块;从当前块(当前处理/待处理的块)中减去预测块,获得残差块;在变换域中变换残差块并量化残差块,以减少待发送(压缩)的数据量,而解码器处将相对于编码器的逆处理部分应用于经编码或压缩的块,以重建用于表示的当前块。此外,编码器重复解码器的处理步骤,使得编码器和解码器生成相同的预测(例如,帧内预测和帧间预测)和/或重建,用于对后续块进行处理(即译码)。
本文所使用的术语“块”可以是图像或帧的一部分。为便于描述,本文参考由ITU-T视频译码专家组(Video Coding Experts Group,VCEG)和ISO/IEC运动图像专家组(MotionPicture Experts Group,MPEG)的视频译码联合工作组(Joint Collaboration Team onVideo Coding,JCT-VC)开发的高效视频译码(High-Efficiency Video Coding,HEVC)或通用视频译码(Versatile Video Coding,VVC)参考软件描述本发明实施例。本领域普通技术人员应理解本发明实施例不限于HEVC或VVC。可以指译码单元(coding unit,CU)、预测单元(prediction unit,PU)和变换单元(transform unit,TU)。在HEVC中,通过表示为译码树的四叉树结构将译码树单元(coding tree unit,CTU)划分成CU。在CU级决定是使用帧间 (时间)预测还是帧内(空间)预测对图像区域进行译码。可以根据PU划分类型将每个CU 进一步划分为一个、两个或四个PU。一个PU内应用相同的预测过程,并以PU为单位向解码器发送相关信息。在根据PU划分类型应用预测过程获得残差块之后,可以根据与用于CU 的译码树类似的另一种四叉树结构将CU分割为变换单元(transform unit,TU)。在视频压缩技术的最新进展中,使用四叉树和二叉树(qual-tree and binary tree,QTBT)分割帧来分割译码块。在QTBT块结构中,CU可以为正方形或矩形。例如,首先通过四叉树结构分割译码树单元(coding tree unit,CTU)。通过二叉树结构进一步分割四叉树叶节点。二叉树叶节点称为译码单元(coding unit,CU),该分割用于预测和变换处理,而不进行任何进一步分割。即在QTBT译码块结构中,CU、PU和TU的块大小相同。同时,还提出将三叉树(Ternary Tree, TT)分割等多重分割与QTBT块结构结合使用。术语“设备”也可以是“装置”、“解码器”或“编码器”。
在以下实施例中,根据图11至图13描述了编码器20、解码器30和译码系统10。
图11A为概念性或示意性框图,示出了可利用本申请(本发明)技术的示例性译码系统 10,例如视频译码系统10。视频译码系统10的编码器20(例如,视频编码器20)和解码器 30(例如,视频解码器30)代表可以用于根据本申请中描述的各种示例执行各技术的设备示例。如图11A所示,译码系统10包括源设备12,所述源设备12用于将编码数据13(例如编码图像13)提供到例如目的设备14以对编码数据13进行解码。
源设备12包括编码器20,并且可以另外(即可选地)包括图像源16、预处理单元18(例如,图像预处理单元18)和通信接口或通信单元22。
图像源16可以包括或可以是任何类型的图像捕获设备,例如用于捕获真实世界图像的设备,和/或任何类型的图像或评论(对于屏幕内容译码,屏幕上的一些文本也被认为是待编码的图像(picture/image)的一部分)生成设备,例如用于生成计算机动画图像的计算机图形处理器,或用于获取和/或提供真实世界图像、计算机动画图像(例如,屏幕内容、虚拟现实(virtual reality,VR)图像)和/或其任何组合(例如,增强现实(augmentedreality,AR)图像)的任何类型的设备。所述图像源可以为存储任一上述图像的任何类型的存储器(memory/storage)。
(数字)图像为或可以看作具有强度值的像素点的二维阵列或矩阵。阵列中的像素点也可以称为像素(pixel/pel)(图像元素的简称)。图像的大小和/或分辨率由阵列或图像在水平和垂直方向(或轴)上的像素点数量定义。通常采用三种颜色分量来表示颜色,即该图像可表示为三个像素点阵列或包括三个像素点阵列。在RGB格式或颜色空间中,图像包括对应的红色、绿色和蓝色像素点阵列。然而,在视频译码中,每个像素通常由亮度/色度格式或在颜色空间中表示,例如,YCbCr,包括Y指示的亮度分量(有时也用L指示)和Cb和Cr指示的两个色度分量。亮度(或简称luma)分量Y表示亮度或灰度级强度(例如,在灰度图像中),而两个色度(或简称chroma)分量Cb和Cr表示色度或颜色信息分量。因此,YCbCr格式的图像包括亮度像素点值(Y)的亮度像素点阵列和色度值(Cb和Cr)的两个色度像素点阵列。 RGB格式的图像可转换或变换成YCbCr格式,反之亦然,该过程也称为颜色转换或颜色变换。如果图像是单色的,则该图像可以仅包括亮度像素点阵列。
图像源16(例如,视频源16)可以是用于捕获图像的摄像机、包括或存储先前捕获或生成的图像的存储器(例如,图像存储器),和/或用于获取或接收图像的任何类型的(内部或外部)接口等。例如,所述摄像机可以是集成在源设备中的本地或集成摄像机,所述存储器可以是(例如,集成在源设备中的)本地或集成存储器。例如,所述接口可以是从外部视频源接收图像的外部接口,其中,所述外部视频源如摄像机等外部图像捕获设备、外部存储器,或外部计算机图形处理器、计算机或服务器等外部图像生成设备。所述接口可以是根据任何专有或标准化接口协议的任何类型的接口,例如有线或无线接口、光接口。用于获取图像数据17的接口可以是与通信接口22相同的接口,或作为通信接口22的一部分。
区别于预处理单元18和预处理单元18执行的处理,图像或图像数据17(例如,视频数据16)也可以称为原始图像或原始图像数据17。
预处理单元18用于接收(原始)图像数据17,对图像数据17进行预处理,以获得经预处理的图像19或经预处理的图像数据19。预处理单元18执行的预处理可以包括修剪(trimming)、颜色格式转换(例如,从RGB转换为YCbCr)、颜色校正或去噪等。可以理解的是,预处理单元18可以是可选组件。
编码器20(例如,视频编码器20)用于接收经预处理的图像数据19并提供经编码的图像数据21(下文将根据图12或图14等进一步详细描述)。
源设备12的通信接口22可用于接收经编码的图像数据21并通过通信信道13将经编码的图像数据21(或其任何其它经处理版本)发送到其它设备,例如目的设备14或用于存储或直接重建的任何其它设备。
源设备12的通信接口22可以用于接收经编码的图像数据21,并将其发送到其它设备(例如,目的设备14或用于存储或直接重建的任何其它设备);或分别在存储编码数据13和/或将编码数据13发送到其它设备(例如目的设备14,或用于解码或存储的任何其它设备)之前处理经编码的图像数据21。
目的设备14包括解码器30(例如,视频解码器30),并且可以另外(即,可选地)包括通信接口或通信单元28、后处理单元32和显示设备34。
目的设备14的通信接口28用于接收经编码的图像数据21(或其任何其它经处理版本),例如,直接从源设备12或任何其它源(例如,编码图像数据存储设备等存储设备)接收,并将经编码的图像数据21提供给解码器30。
目的设备14的通信接口28用于接收经编码的图像数据21或编码数据13,例如,直接从源设备12或任何其它源(例如,编码图像数据存储设备等存储设备)接收。
通信接口22和通信接口28可以用于通过源设备12与目的设备14之间的直接通信链路 (例如,直接有线或无线连接),或通过任何类型的网络(例如,有线或无线网络或其任意组合,或任何类型的专用和公共网络),或其任意组合发送或接收经编码的图像数据21或编码数据13。
例如,通信接口22可用于将经编码的图像数据21封装为数据包等合适的格式,和/或采用任何类型的发送编码或处理来处理所述经编码的图像数据,以便通过通信链路或通信网络进行发送。
例如,与通信接口22对应的通信接口28可以用于解封装编码数据13以获得经编码的图像数据21。
例如,与通信接口22对应的通信接口28可用于接收传输数据,并采用任何类型的对应传输解码或处理和/或解封装对传输数据进行处理,以获得经编码的图像数据21。
通信接口22和通信接口28均可配置为单向通信接口(如图11A中从源设备12指向目的设备14的经编码的图像数据13的箭头所指示),或双向通信接口,并可用于发送和接收消息等,例如,建立连接,确认和交互与通信链路和/或数据传输(例如,经编码的图像数据传输)相关的任何其它信息。
解码器30用于接收经编码的图像数据21并提供经解码的图像数据31或解码图像31(下文将根据图13或图15等进一步详细描述)。
目的设备14的后处理器32用于对经解码的图像数据31(也称为重建图像数据)(例如,解码图像31)进行后处理,以获得经后处理的图像数据33(例如,后处理图像33)。例如,由后处理单元32执行的后处理可以包括颜色格式转换(例如从YCbCr转换为RGB)、颜色校正、修剪或重采样,或任何其它处理,例如,用于准备经解码的图像数据31以供显示设备 34等显示。
目的设备14的显示设备34用于接收经后处理的图像数据33,以向用户或观看者等显示所述图像。显示设备34可以是或包括用于显示重建图像的任何类型的显示器,例如,集成或外部的显示器或监视器。例如,显示器可以包括液晶显示器(liquid crystaldisplay,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微型LED显示器、硅基液晶显示器(liquid crystal on silicon,LCoS)、数字光处理器(digital light processor,DLP)或任意类型的其它显示器。
尽管图11A将源设备12和目的设备14作为单独的设备进行描述,但是设备实施例还可以包括两种设备或两种功能,即源设备12或对应功能以及目的设备14或对应功能。在这类实施例中,源设备12或对应功能以及目的设备14或对应功能可以使用相同的硬件和/或软件或通过单独的硬件和/或软件或其任意组合来实现。
根据描述,技术人员显而易见的是,图11A所示的源设备12和/或目的设备14中的不同单元或功能的存在和(精确)划分可以根据实际设备和应用而不同。
编码器20(例如视频编码器20)和解码器30(例如视频解码器30)可以各自实现为各种合适电路中的任一种,如一个或多个微处理器、数字信号处理器(digital signalprocessor, DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列 (field-programmable gate array,FPGA)、离散逻辑、硬件或其任何组合。如果所述技术部分地以软件形式实现,则设备可以将软件的指令存储在合适的非瞬时性计算机可读介质中,并且可以使用一个或多个处理器执行硬件中的指令,以执行本发明的技术。上述任一种(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。视频编码器20和视频解码器30可以分别包括在一个或多个编码器或解码器中,其中任一者可以作为组合式编码器/解码器(编解码器)的一部分集成在对应设备中。
编码器20可以由处理电路46实现,以体现结合图12的编码器20所描述的各种模块和/ 或本文描述的任何其它编码器系统或子系统。解码器30可以由处理电路46实现,以体现结合图13的解码器30所描述的各种模块和/或本文描述的任何其它解码器系统或子系统。所述处理电路可用于执行下文描述的各种操作。如图15所示,如果所述技术部分地以软件形式实现,则设备可以将软件的指令存储在合适的非瞬时性计算机可读介质中,并且可以使用一个或多个处理器执行硬件中的指令,以执行本发明的技术。视频编码器20和视频解码器30中的任一个可作为组合编解码器(encoder/decoder,CODEC)的一部分集成在单个设备中,如图11B所示。
源设备12可以称为视频编码设备或视频编码装置。目的设备14可以称为视频解码设备或视频解码装置。源设备12和目的设备14可以是视频译码设备或视频译码装置的示例。
源设备12和目的设备14可以包括多种设备中的任一种,包括任何类型的手持或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板电脑(tablet/tabletcomputer)、摄像机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏机、视频流设备(如内容服务服务器或内容分发服务器)、广播接收器设备、广播发射器设备等,并且可以不使用或使用任何类型的操作系统。
在某些情况下,可以配备源设备12和目的设备14以用于无线通信。因此,源设备12和目的设备14可以是无线通信设备。
在某些情况下,图11A所示的视频译码系统10仅仅是示例,本申请的技术可适用于在编码设备与解码设备之间不一定包括任何数据通信的视频译码设置(例如,视频编码或视频解码)。在其它示例中,数据从本地存储器中检索,通过网络流式传输,等等。视频编码设备可以对数据进行编码并将数据存储到存储器中,和/或视频解码设备可以从存储器中检索数据并对数据进行解码。在一些示例中,编码和解码由相互不通信而只是将数据编码到存储器和/ 或从存储器中检索数据并对数据进行解码的设备来执行。
为便于描述,本文参考由ITU-T视频译码专家组(Video Coding Experts Group,VCEG) 和ISO/IEC运动图像专家组(Motion Picture Experts Group,MPEG)的视频译码联合工作组 (Joint Collaboration Team on Video Coding,JCT-VC)开发的高效视频译码(High-Efficiency Video Coding,HEVC)或通用视频译码(Versatile Video Coding,VVC)(下一代视频译码标准)参考软件等描述本发明实施例。本领域普通技术人员应理解本发明实施例不限于HEVC 或VVC。应理解,对于结合视频编码器20描述的上述每个示例,视频解码器30可用于执行逆过程。视频解码器30可用于接收和解析信令语法元素,并相应地对相关视频数据进行解码。在一些示例中,视频编码器20可以将一个或多个语法元素熵编码到经编码的视频码流中。在这类示例中,视频解码器30可以解析此类语法元素并相应地对相关视频数据进行解码。
图11B为示例性实施例提供的包括图12的编码器20和/或图13的解码器30的另一示例性视频译码系统40的说明性图。系统40可以实现本申请中描述的各种示例提供的技术。在所示实现方式中,视频译码系统40可以包括一个或多个成像设备41、视频编码器100、视频解码器30(和/或由一个或多个处理单元46的逻辑电路47实现的视频译码器)、天线42、一个或多个处理器43、一个或多个存储器44和/或显示设备45。
如图所示,一个或多个成像设备41、天线42、一个或多个处理单元46、逻辑电路47、视频编码器20、视频解码器30、一个或多个处理器43、一个或多个存储器44和/或显示设备45能够彼此通信。如上所述,尽管示出具有视频编码器20和视频解码器30两者,但是在各种示例中,视频译码系统40可以仅包括视频编码器20或仅包括视频解码器30。
如图所示,在一些示例中,视频译码系统40可以包括天线42。例如,天线42可用于发送或接收视频数据的经编码码流。此外,在一些示例中,视频译码系统40可以包括显示设备 45。显示设备45可用于呈现视频数据。如图所示,在一些示例中,可以由一个或多个处理单元46实现逻辑电路47。一个或多个处理单元46可以包括专用集成电路(application-specific integrated circuit,ASIC)逻辑、一个或多个图形处理器、或一个或多个通用处理器等。视频译码系统40还可以包括一个或多个可选的处理器43,所述一个或多个可选的处理器43可以类似地包括专用集成电路(application-specific integrated circuit,ASIC)逻辑、一个或多个图形处理器、一个或多个通用处理器等。在一些示例中,逻辑电路47可以由硬件、或视频译码专用硬件等实现,一个或多个处理器43可以实现通用软件、或操作系统等。此外,一个或多个存储器44可以是任何类型的存储器,如易失性存储器(例如,静态随机存取存储器(Static Random Access Memory,SRAM)、动态随机存取存储器(DynamicRandom Access Memory, DRAM)等)或非易失性存储器(例如,闪存等)等等。在非限制性示例中,一个或多个存储器44可以由高速缓冲存储器实现。在一些示例中,逻辑电路47可以访问一个或多个存储器44(例如,用于实现图像缓冲器)。在其它示例中,逻辑电路47和/或一个或多个处理单元 46可以包括用于实现图像缓冲器等的存储器(例如,高速缓存等)。
在一些示例中,由逻辑电路实现的视频编码器100可以包括图像缓冲器(例如,由一个或多个处理单元46或一个或多个存储器44实现)和图形处理单元(例如,由一个或多个处理单元46实现)。所述图形处理单元可以以通信方式耦合到所述图像缓冲器。所述图形处理单元可以包括由逻辑电路47实现的视频编码器100,以体现结合图12所描述的各种模块和/ 或本文描述的任何其它编码器系统或子系统。所述逻辑电路可用于执行本文描述的各种操作。
视频解码器30的实现方式可以与由逻辑电路47实现的方式类似,以体现结合图13的解码器30所描述的各种模块和/或本文描述的任何其它解码器系统或子系统。在一些示例中,可以由逻辑电路实现的视频解码器30可以包括图像缓冲器(例如,由一个或多个处理单元 46或一个或多个存储器44实现)和图形处理单元(例如,由一个或多个处理单元46实现)。所述图形处理单元可以以通信方式耦合到所述图像缓冲器。所述图形处理单元可以包括由逻辑电路47实现的视频解码器30,以体现结合图13所描述的各种模块和/或本文描述的任何其它解码器系统或子系统。
在一些示例中,视频译码系统40的天线42可用于接收视频数据的经编码码流。如上所述,经编码码流可以包括与本文所描述的视频帧的编码相关联的数据、指示符、索引值、模式选择数据等,如与译码分割相关联的数据(例如,变换系数或量化变换系数、可选指示符 (如上所述)和/或定义译码分割的数据)。视频译码系统40还可以包括与天线42耦合并用于对经编码码流进行解码的视频解码器30。显示设备45用于呈现视频帧。
图12示出了用于实现本申请技术的示例性视频编码器20的示意性/概念性框图。在图12 的示例中,视频编码器20包括残差计算单元204、变换处理单元206、量化单元208、反量化单元210和逆变换处理单元212、重建单元214、缓冲器216、环路滤波单元220、解码图像缓冲器(decoded picture buffer,DPB)230、预测处理单元260和熵编码单元270。预测处理单元260可以包括帧间预测单元244、帧内预测单元254和模式选择单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(未示出)。图12所示的视频编码器20也可以称为混合视频编码器或基于混合视频编解码器的视频编码器。
例如,残差计算单元204、变换处理单元206、量化单元208、预测处理单元260和熵编码单元270形成编码器20的正向信号路径,而反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、预测处理单元260等形成编码器的反向信号路径。编码器的反向信号路径与解码器(参见图 13中的解码器30)的信号路径对应。
反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。编码器20用于通过输入端202等接收图像201或图像201(例如,形成视频或视频序列的图像序列的图像)的块203。图像块203也可以称为当前图像块或待译码图像块,图像201也可以称为当前图像或待译码图像(特别是在视频译码中,以便将当前图像与其它图像(例如,同一视频序列(即,也包括当前图像的视频序列)的先前编码和/ 或解码的图像))区分开。
(数字)图像为或可以看作具有强度值的像素点的二维阵列或矩阵。阵列中的像素点也可以称为像素(pixel/pel)(图像元素的简称)。图像的大小和/或分辨率由阵列或图像在水平和垂直方向(或轴)上的像素点数量定义。通常采用三种颜色分量来表示颜色,即该图像可表示为三个像素点阵列或包括三个像素点阵列。在RGB格式或颜色空间中,图像包括对应的红色、绿色和蓝色像素点阵列。然而,在视频译码中,每个像素通常由亮度和色度格式或在颜色空间中表示,例如,YCbCr,包括Y指示的亮度分量(有时也用L指示)和Cb和Cr指示的两个色度分量。亮度(或简称luma)分量Y表示亮度或灰度级强度(例如,在灰度图像中),而两个色度(或简称chroma)分量Cb和Cr表示色度或颜色信息分量。因此,YCbCr 格式的图像包括亮度像素点值(Y)的亮度像素点阵列和色度值(Cb和Cr)的两个色度像素点阵列。RGB格式的图像可转换或变换成YCbCr格式,反之亦然,该过程也称为颜色转换或颜色变换。如果图像是单色的,则该图像可以仅包括亮度像素点阵列。相应地,例如,图像可以为单色格式的亮度像素点阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度像素点阵列和两个对应的色度像素点阵列。
分割
编码器20的实施例可包括分割单元(图12中未示出),所述分割单元用于将图像201分割成多个(通常非重叠的)图像块203。这些块也可以称为根节点图像块、宏块(H.264/AVC) 或译码树块(coding tree block,CTB),或译码树单元(coding tree unit,CTU)(H.265/HEVC 和VVC)。分割单元可用于对视频序列的所有图像使用相同的块大小和定义块大小的对应网格,或者用于改变图像或图像子集或组之间的块大小,并将每个图像分割成对应块。
在其它实施例中,视频编码器可用于直接接收图像201的块203,例如,组成图像201 的一个、几个或所有块。图像块203也可以称为当前图像块或待译码图像块。在一个示例中,视频编码器20的预测处理单元260可以用于执行上文描述的分割技术的任意组合。
与图像201类似,块203同样是或可以看作是具有强度值(像素点值)的像素点的二维阵列或矩阵,但是,块203的尺寸比图像201小。换句话说,例如,根据所应用的颜色格式,块203可以包括一个像素点阵列(例如,图像201是单色情况下的亮度阵列)或三个像素点阵列(例如,图像201是彩色情况下的一个亮度阵列和两个色度阵列)或任何其它数量和/或类型的阵列。块203的水平方向和垂直方向(或轴线)上的像素点数量决定了块203的大小。相应地,块可以为M×N(M列×N行)个像素点阵列,或M×N个变换系数阵列等。
图12所示的编码器20用于逐块对图像201进行编码,例如按块203进行编码和预测。
图12所示的视频编码器20的实施例还可以用于使用条带(也称为视频条带)对图像进行分割和/或编码,其中,可以使用一个或多个条带(通常为非重叠的)对图像进行分割或编码。每个条带可以包括一个或多个块(例如,CTU)或一个或多个块组(例如,分块tile(H.265/HEVC和VVC)或砖brick(VVC))。
图12所示的视频编码器20的实施例还可以用于使用条带/分块组(也称为视频分块组) 和/或分块(也称为视频分块)对图像进行分割和/或编码,其中,可以使用一个或多个条带/ 分块组(通常为非重叠的)对图像进行分割或编码。每个条带/分块组可以包括一个或多个块 (例如CTU)或一个或多个分块等,其中,每个分块可以为矩形等形状,可以包括一个或多个块(例如CTU),例如完整或部分块。
残差计算
残差计算单元204用于通过如下等方式根据图像块203和预测块265(下文将详细描述预测块265)来计算残差块205:逐个像素点(逐个像素)从图像块203的像素点值中减去预测块265的像素点值,以获得像素点域中的残差块205。
变换
变换处理单元206用于对残差块205的像素点值应用离散余弦变换(discretecosine transform,DCT)或离散正弦变换(discrete sine transform,DST)等变换,以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,表示变换域中的残差块205。
变换处理单元206可用于应用DCT/DST的整数化近似法,如针对HEVC/H.265指定的变换。与正交DCT变换相比,该整数近似法通常通过某一因子按比例缩放。为了保持经过正变换和逆变换处理的残差块的范数,在变换过程中应用了其它缩放因子。缩放因子通常是基于某些约束条件来选择的,例如缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实施成本之间的权衡等。例如,在解码器30侧通过逆变换处理单元212等为逆变换(以及在编码器20侧通过逆变换处理单元212等为对应逆变换)指定具体的缩放因子,以及相应地,可以在编码器20侧通过变换处理单元206等为正变换指定对应的缩放因子。
视频编码器20(具体是变换处理单元206)的实施例可以用于直接或通过熵编码单元270 编码或压缩等输出变换参数(例如,一种或多种变换的类型),使得例如视频解码器30可以接收并使用变换参数进行解码。
量化
量化单元208用于通过应用标量量化或矢量量化等对变换系数207进行量化,以获得量化变换系数209。量化变换系数209也可以称为量化残差系数209。量化过程可减少与部分或全部变换系数207有关的位深度。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m。可以通过调整量化参数(quantization parameter,QP)修改量化程度。例如,对于标量量化,可以应用不同程度的缩放来实现较细或较粗的量化。较小量化步长对应较细量化,而较大量化步长对应较粗量化。可以通过量化参数(quantizationparameter,QP) 指示合适的量化步长。例如,量化参数可以为合适的量化步长的预定义集合的索引。例如,较小的量化参数可对应精细量化(较小量化步长),较大的量化参数可对应粗糙量化(较大量化步长),反之亦然。量化可以包括除以量化步长,而反量化单元210等执行的对应或反量化可包括乘以量化步长。根据HEVC等一些标准的实施例可用于使用量化参数来确定量化步长。通常,可以根据量化参数使用包括除法的等式的定点近似来计算量化步长。可以引入其它缩放因子来进行量化和解量化,以恢复可能由于在用于量化步长和量化参数的等式的定点近似中使用的缩放而修改的残差块的范数。在一种示例性实现方式中,可以合并逆变换和解量化的缩放。或者,可以使用自定义量化表并在码流中等将其从编码器向解码器指示。量化是有损操作,其中量化步长越大,损耗越大。
视频编码器20(具体是量化单元208)的实施例可以用于直接或通过熵编码单元270编码等输出量化参数(quantization parameter,QP),使得例如视频解码器30可以接收并使用量化参数进行解码。
反量化单元210用于通过根据或使用与量化单元208相同的量化步长应用量化单元208 所应用的量化方案的逆过程等,对量化系数应用量化单元208的反量化,以获得解量化系数 211。解量化系数211也可以称为解量化残差系数211,对应于变换系数207,但是由于量化造成的损耗,解量化系数211通常与变换系数不同。
逆变换处理单元212用于应用变换处理单元206所应用的变换的逆变换,例如逆离散余弦变换(discrete cosine transform,DCT)或逆离散正弦变换(discrete sinetransform,DST),以在像素点域中获得逆变换块213。逆变换块213也可以称为逆变换解量化块213或逆变换残差块213。
重建单元214(例如,求和器214)用于通过例如将重建残差块213的像素点值和预测块 265的像素点值相加,将逆变换块213(即重建残差块213)添加到预测块265,以在像素点域中获得重建块215。
可选的,缓冲单元216(或简称“缓冲器”216)(例如线缓冲器216)用于缓冲或存储重建块215和相应的像素点值,以进行帧内预测等。在其它实施例中,编码器可用于使用存储在缓冲单元216中的未滤波的重建块和/或相应的像素点值进行任何类型的估计和/或预测(例如,帧内预测)。
编码器20的实施例可用于使得,例如缓冲单元216不仅用于存储用于帧内预测254的重建块215,还用于存储用于环路滤波单元220(图12中未示出)的重建块215,和/或用于使得,例如缓冲单元216和解码图像缓冲单元230形成一个缓冲器。其它实施例可用于使用滤波块221和/或解码图像缓冲器230中的块或像素点(两者都未在图12中示出)作为帧内预测254的输入或基础。
环路滤波单元220(或简称“环路滤波器”220)用于对重建块215进行滤波以获得滤波块221,从而平滑像素转变或提高视频质量等。环路滤波单元220用于表示一个或多个环路滤波器,如去块滤波器、像素点自适应偏移(sample-adaptive offset,SAO)滤波器或其它滤波器,例如双边滤波器或自适应环路滤波器(adaptive loop filter,ALF)或锐化或平滑滤波器或协作滤波器。虽然环路滤波单元220在图12中示为环内滤波器,但是在其它配置中,环路滤波单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。解码图像缓冲器230可以在环路滤波单元220对重建译码块进行滤波操作之后存储重建译码块。
环路滤波单元220(或简称“环路滤波器”220)用于对重建块215进行滤波以获得滤波块221,或通常用于对重建像素点进行滤波以获得滤波像素点值。例如,环路滤波单元用于平滑像素转变或提高视频质量。环路滤波单元220可以包括一个或多个环路滤波器,如去块滤波器、像素点自适应偏移(sample-adaptive offset,SAO)滤波器或一个或多个其它滤波器,例如自适应环路滤波器(adaptive loop filter,ALF)、噪声抑制滤波器(noisesuppression filter, NSF)或其任意组合。在一个示例中,环路滤波单元220可以包括去块滤波器、SAO滤波器和ALF。滤波过程的顺序可以是去块滤波器、SAO滤波器和ALF滤波器。在另一示例中,增加称为具有色差缩放的亮度映射(luma mapping with chroma scaling,LMCS)(即,自适应环内整形器)的过程。该过程在去块之前执行。在另一示例中,去块滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、ATMVP子块边缘、子块变换(sub-blocktransform,SBT) 边缘和内子分割(intra sub-partition,ISP)边缘。虽然环路滤波单元220在图12中示为环内滤波器,但是在其它配置中,环路滤波单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。
视频编码器20(具体是环路滤波单元220)的实施例可用于直接或通过熵编码单元270 编码等输出环路滤波器参数(如SAO滤波器参数或ALF滤波器参数或LMCS参数),使得例如解码器30可以接收和应用相同环路滤波器参数或相应的环路滤波器进行解码。
解码图像缓冲器(decoded picture buffer,DPB)230可以是参考图像存储器,存储用于由视频编码器20对视频数据进行编码的参考图像数据。DPB 230可以由多种存储设备中的任一种组成,如动态随机存取存储器(dynamic random access memory,DRAM),包括同步DRAM (synchronous DRAM,SDRAM)、磁阻RAM(magnetoresistive RAM,MRAM)、电阻RAM(resistive RAM,RRAM)或其它类型的存储设备。DPB 230和缓冲器216可以由相同的存储设备或单独的存储设备提供。在一些示例中,解码图像缓冲器(decoded picture buffer,DPB) 230用于存储滤波块221。解码图像缓冲器230还可用于存储同一当前图像或不同图像(例如,先前重建的图像)的其它先前滤波块(例如,先前重建和滤波块221),并且可提供完整的先前重建(即解码)的图像(和对应的参考块和像素点)和/或部分重建的当前图像(和对应的参考块和像素点),用于帧间预测等。在一些示例中,在对重建块215进行重建但不进行环内滤波时,例如,在重建块215未通过环路滤波单元220进行滤波时,解码图像缓冲器(decoded picture buffer,DPB)230用于存储一个或多个未滤波的重建块215,或通常存储未滤波的重建像素点,或重建块或重建像素点的任何其它进一步处理的版本。
预测处理单元260(也称为块预测处理单元260)用于:接收或获取块203(当前图像201 的当前块203)和重建图像数据,例如,来自缓冲器216的相同(当前)图像的参考像素点和/或来自解码图像缓冲器230的一个或多个先前解码图像的参考图像数据231,并处理此类数据以进行预测,即提供预测块265,其中,所述预测块265可以是帧间预测块245或帧内预测块255。
模式选择单元262可用于选择预测模式(例如,帧内预测或帧间预测模式)和/或对应的预测块245或255,用作预测块265以用于计算残差块205和重建重建块215。
模式选择单元262的实施例可用于选择预测模式(例如,从预测处理单元260支持的预测模式中选择),所述预测模式提供最佳匹配或者说最小残差(最小残差意味着传输或存储中更好的压缩),或具有最小信令开销(最小信令开销意味着传输或存储中更好的压缩),或者同时考虑或平衡以上两者。模式选择单元262可用于根据率失真优化(ratedistortion optimization,RDO)确定预测模式,即选择提供最小率失真优化的预测模式,或者选择至少满足预测模式选择标准的关联率失真的预测模式。
下文将详细描述由示例性编码器20执行的预测处理(例如,由预测处理单元260执行) 和模式选择(例如,由模式选择单元262执行)。
除了上述实施例或替代上述实施例,在图25提供的其它实施例中,模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,用于从解码图像缓冲器230或其它缓冲器(例如,线缓冲器,未示出)等接收或获得原始图像数据(例如,原始块203(当前图像17的当前块203))和重建图像数据(例如,相同(当前)图像和/或一个或多个先前解码图像的滤波和/或未经滤波的重建像素点或重建块)。重建图像数据用作参考图像数据进行帧间预测或帧内预测等预测,以获得预测块265或预测值265。
模式选择单元260可用于为当前块预测模式(不包括分割)和预测模式(例如帧内或帧间预测模式)确定或选择分割类型,并生成对应的预测块265,以对残差块205进行计算和对重建块215进行重建。
模式选择单元260的实施例可用于选择分割和预测模式(例如,从模式选择单元260支持或可用于模式选择单元260的预测模式中选择),所述预测模式提供最佳匹配或者说最小残差(最小残差意味着传输或存储中更好的压缩),或提供最小信令开销(最小信令开销意味着传输或存储中更好的压缩),或者同时考虑或平衡以上两者。模式选择单元260可用于根据率失真优化(rate distortion optimization,RDO)确定分割和预测模式,即选择提供最小率失真的预测模式。本上下文中如“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准,例如,值超过或低于阈值或其它约束条件,可能会进行“次优选择”,但是降低了复杂度和处理时间。
换句话说,分割单元262可以用于将视频序列的图像分割成一系列译码树单元(coding tree unit,CTU),还可以将CTU 203分割成更小的分割块或子块(再次形成块),例如,使用四叉树(quad-tree,QT)分割、二叉树(binary-tree,BT)分割或三叉树(triple-tree,TT) 分割或其任何组合迭代地进行,并例如,对每个分割块或子块进行预测,其中,所述模式选择包括选择分割块203的树结构并将预测模式应用于每个分割块或子块。
下文将详细地描述由示例性视频编码器20执行的分割(例如,由分割单元260执行)和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。
分割
分割单元262可以用于将视频序列的图像分割为译码树单元(coding tree unit,CTU)序列,分割单元262可以将译码树单元(coding tree unit,CTU)203分割(或划分)为较小的分割块,例如正方形或矩形小块。对于具有三个像素点阵列的图像,一个CTU由N×N个亮度像素点块和两个对应的色度像素点块组成。CTU中亮度块的最大允许大小在正在开发的通用视频译码(Versatile Video Coding,VVC)中被指定为128×128,但是将来可指定为不同于128×128的值,例如256×256。图像的CTU可以集中/分组为条带/分块组、分块或砖。一个分块覆盖一个图像的矩形区域,一个分块可以分成一个或多个砖。一个砖由一个分块内的多个CTU行组成。没有分割为多个砖的分块可以称为砖。然而,砖是分块的真正子集,不称为分块。VVC支持两种分块组模式,即光栅扫描条带/分块组模式和矩形条带模式。在光栅扫描分块组模式,条带/分块组包含图像的分块光栅扫描中的分块序列。在矩形条带模式中,条带包含图像的多个砖,这些砖共同组成图像的矩形区域。矩形条带内的砖按照条带的砖光栅扫描顺序排列。可以将这些较小块(也可以称为子块)进一步分割为甚至更小的分割块。这也称为树分割或层次树分割,其中,可以递归地分割例如根树层次0(层次级别0,深度0) 的根节点图像块,例如分割为两个或两个以上下一较低树层次的块,例如树层次1(层次级别1,深度1)的节点。可以再次将这些块分割为两个或两个以上下一较低层次,例如树层次 2(层次级别2、深度2)的块等,直到例如因为满足结束标准,例如达到最大树深度或最小块大小,分割结束。未进一步分割的块也称为树的叶节点图像块或叶节点。分割为两个部分的树称为二叉树(binary-tree,BT),分割为三个部分的树称为三叉树(ternary-tree,TT),分割为四个部分的树称为四叉树(quad-tree,QT)。
例如,译码树单元(coding tree unit,CTU)可以为或包括具有三个像素点阵列的图像的亮度像素点的一个CTB、色度像素点的两个对应CTB,或单色图像或使用用于对像素点进行译码的三个独立颜色平面和语法结构译码的图像的像素点的一个CTB。相应地,译码树块 (coding tree block,CTB)可以为N×N个像素点块,其中N可以设为某个值从而将分量划分为多个CTB,这就是分割。译码单元(coding unit,CU)可以为或包括具有三个像素点阵列的图像的亮度像素点的一个译码块、色度像素点的两个对应译码块,或单色图像或使用用于对像素点进行译码的三个独立颜色平面和语法结构译码的图像的像素点的一个译码块。相应地,译码块(coding block,CB)可以为M×N个像素点块,其中M和N可以设为某个值从而将CTB划分为多个译码块,这就是分割。
在实施例中,例如根据HEVC,可以通过表示为译码树的四叉树结构将译码树单元(coding tree unit,CTU)划分为多个CU。在叶CU级决定是使用帧间(时间)预测还是帧内(空间) 预测对图像区域进行译码。可以根据PU划分类型将每个叶CU进一步划分为一个、两个或四个PU。一个PU内应用相同的预测过程,并以PU为单位向解码器发送相关信息。在根据PU划分类型应用预测过程获得残差块之后,可以根据与用于叶CU的译码树类似的另一种四叉树结构将叶CU分割为变换单元(transform unit,TU)。
例如,在实施例中,根据当前正在开发的最新视频译码标准(称为通用视频译码(Versatile Video Coding,VVC)),例如,四叉树嵌套多类型树(使用二叉树和三叉树)的组合可以划分分割结构,例如用于分割译码树单元。在译码树单元内的译码树结构中,CU可以为正方形或矩形。例如,首先通过四叉树分割译码树单元(coding tree unit,CTU)。然后,可以通过多类型树结构进一步分割四叉树叶节点。多类型树结构有四种划分类型:垂直二叉树划分(SPLIT_BT_VER)、水平二叉树划分(SPLIT_BT_HOR)、垂直三叉树划分(SPLIT_TT_VER) 和水平三叉树划分(SPLIT_TT_HOR)。多类型树叶节点称为译码单元(coding unit,CU),除非CU大于最大变换长度,否则在无需任何进一步分割的情况下将该分割用于预测和变换处理。即,在大多数情况下,CU、PU和TU在四叉树嵌套多类型树的译码块结构中的块大小相同。当最大支持变换长度小于CU的颜色分量的宽度或高度时,发生异常。VVC开发了一种四叉树嵌套多类型树的译码树结构中分割划分信息的独特信令机制。在该信令机制中,译码树单元(coding tree unit,CTU)作为四叉树的根进行处理,首先通过四叉树结构分割。然后,进一步通过多类型树结构分割每个四叉树叶节点(当大到足以进行分割时)。在多类型树结构中,指示第一标志(mtt_split_cu_flag)来表示是否进一步分割节点;当进一步分割节点时,指示第二标志(mtt_split_cu_vertical_flag)来表示划分方向,然后指示第三标志 (mtt_split_cu_binary_flag)来表示划分为二叉树划分还是三叉树划分。根据mtt_split_cu_vertical_flag和mtt_split_cu_binary_flag的值,解码器可以根据预定义规则或表格推导出CU的多类型树划分模式(MttSplitMode)。需要说明的是,对于某种设计,例如VVC 硬件解码器中的64×64亮度块和32×32色度流水线设计,当亮度译码块的宽度或高度大于 64时,禁止进行TT划分,如图6所示。当色度译码块的宽度或高度大于32时,也禁止TT 划分。流水线设计将图像分为多个虚拟流水线数据单元(virtual pipeline dataunit,VPDU),每个VPDU在图像中定义为互不重叠的单元。在硬件解码器中,多个流水线阶段同时处理连续的VPDU。在大多数流水线阶段,VPDU大小与缓冲器大小大致成正比,因此需要保持较小的VPDU。在大多数硬件解码器中,可以将VPDU大小设置为最大变换块(transformblock, TB)大小。然而,在VVC中,三叉树(ternary tree,TT)和二叉树(binary tree,BT)分割可能会增加VPDU的大小。
另外,需要说明的是,当树节点块的一部分超出底部或右侧图像边界时,对该树节点块进行强制划分,直到每个译码CU的所有像素点都位于图像边界内。
例如,帧内子分割(Intra Sub-Partitions,ISP)工具可以根据块大小将亮度帧内预测块垂直或水平分为两个或四个子分割。
在一个示例中,视频编码器20的模式选择单元260可以用于执行本文描述的分割技术的任意组合。如上所述,编码器20用于从(预定的)预测模式集合中确定或选择最佳或最优的预测模式。预测模式集合可以包括帧内预测模式和/或帧间预测模式等。
帧内预测模式集合可以包括35种不同的帧内预测模式,例如,如DC(或均值)模式和平面模式等非方向性模式,或如H.265中定义的方向性模式,或者可以包括67种不同的帧内预测模式,例如,如DC(或均值)模式和平面模式等非方向性模式,或如针对VVC定义的方向性模式。在一个示例中,若干传统角度帧内预测模式自适应地替换为VVC中定义的非正方形块的广角帧内预测模式。在另一示例中,为了避免DC预测的除法运算,仅使用较长边来计算非正方形块的平均值。并且,还可以通过位置决定的帧内预测组合(position dependentintra prediction combination,PDPC)方法修改平面模式的帧内预测结果。
帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式,使用同一当前图像的邻块的重建像素点来生成帧内预测块265。
帧内预测单元254(或通常为模式选择单元260)还用于将帧内预测参数(或通常为指示块的所选帧内预测模式的信息)以语法元素266的形式输出到熵编码单元270,以包括到经编码的图像数据21中,使得例如视频解码器30可以接收并使用用于解码的预测参数。
(或可能的)帧间预测模式的集合取决于可用参考图像(即,例如存储在DPB 230中的先前至少部分解码的图像)和其它帧间预测参数,例如取决于是否使用整个参考图像或只使用参考图像的一部分(例如当前块的区域附近的搜索窗口区域)来搜索最佳匹配参考块,和/ 或例如取决于是否应用像素插值(例如二分之一/半像素、四分之一像素和/或1/16像素插值)。
除上述预测模式外,还可以应用跳过模式、直接模式和/或其它帧间预测模式。
例如,扩展融合预测,这种模式的融合候选列表由以下五种候选类型按顺序组成:空间相邻CU的空间MVP、并置CU的时间MVP、FIFO表的基于历史的MVP、成对平均MVP 和0MV。可以应用基于双边匹配的解码端运动矢量修正(decoder side motion vectorrefinement, DMVR)来提高融合模式的MV的准确度。带有MVD的融合模式(merge mode withMVD, MMVD)来自有运动矢量差值的融合模式。在发送跳过标志和融合标志之后立即指示MMVD 标志,以表示是否对CU使用MMVD模式。可以应用CU级自适应运动矢量分辨率(adaptive motion vector resolution,AMVR)方案。AMVR支持以不同的精度对CU的MVD进行译码。根据当前CU的预测模式,可以自适应地选择当前CU的MVD。当以融合模式对CU进行译码时,可以将合并的帧间/帧内预测(combined inter/intra prediction,CIIP)模式应用于当前 CU。对帧间和帧内预测信号进行加权平均,得到CIIP预测。对于仿射运动补偿预测,通过2 个控制点(4参数)或3个控制点(6参数)运动矢量的运动信息来描述块的仿射运动场。基于子块的时间运动矢量预测(subblock-based temporal motion vectorprediction,SbTMVP)与 HEVC中的时间运动矢量预测(temporal motion vectorprediction,TMVP)类似,但预测的是当前CU内子CU的运动矢量。双向光流(bi-directionaloptical flow,BDOF)以前称为BIO,是一种所需计算减少的简化版本,特别是乘法次数和乘数大小的计算减少。在三角形分割模式中,使用对角线划分或反对角线划分将CU均匀划分为两个三角形分割。此外,双向预测模式在简单平均的基础上进行了扩展,以支持两个预测信号的加权平均。
除上述预测模式外,还可以应用跳过模式和/或直接模式。
预测处理单元260还可以用于将块203分割成更小的分割块或子块,例如,使用四叉树 (quad-tree,QT)分割、二叉树(binary-tree,BT)分割或三叉树(triple-tree,TT)分割或其任何组合迭代地进行,并例如对每个分割块或子块进行预测,其中,所述模式选择包括选择分割块203的树结构以及应用于每个分割块或子块的预测模式。
帧间预测单元244可以包括运动估计(motion estimation,ME)单元(图2中未示出) 和运动补偿(motion compensation,MC)单元(图2中未示出)。运动估计单元用于接收或获取图像块203(当前图像201的当前图像块203)和解码图像231,或至少一个或多个先前重建块,例如,一个或多个其它/不同先前解码图像231的重建块,以进行运动估计。例如,视频序列可以包括当前图像和先前解码图像231,或换句话说,当前图像和先前解码图像231可以为形成视频序列的图像序列的一部分或形成该图像序列。
例如,编码器20可用于从多个其它图像中的相同或不同图像的多个参考块中选择参考块,并将参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元(图2中未示出)。该偏移也称为运动矢量(motion vector,MV)。
运动补偿单元用于获取例如接收帧间预测参数,并根据或使用帧间预测参数进行帧间预测,以获得帧间预测块265。由运动补偿单元执行的运动补偿可能涉及根据通过运动估计确定的运动/块矢量来提取或生成预测块,还可能涉及对子像素精度进行插值。插值滤波可以从已知像素的像素点中生成额外像素的像素点,从而可能增加可用于对图像块进行译码的候选预测块的数量。一旦接收到当前图像块的PU的运动矢量,运动补偿单元可以定位在其中一个参考图像列表中运动矢量指向的预测块。
帧内预测单元254用于获取例如接收图像块203(当前图像块)和相同图像的一个或多个先前重建块(例如,重建相邻块),以进行帧内估计。例如,编码器20可用于从多个(预定的)帧内预测模式中选择帧内预测模式。
编码器20的实施例可用于根据优化标准(例如,最小残差(例如,提供与当前图像块 203最相似的预测块255的帧内预测模式)或最小率失真)选择帧内预测模式。
帧内预测单元254还用于根据帧内预测参数(例如,所选帧内预测模式)确定帧内预测块255。在任何情况下,在对块选择帧内预测模式之后,帧内预测单元254还用于向熵编码单元270提供帧内预测参数,即指示块的所选帧内预测模式的信息。在一个示例中,帧内预测单元254可用于执行下文描述的帧内预测技术的任何组合。
熵编码单元270用于单独或联合(或完全不联合)对量化残差系数209、帧间预测参数、帧内预测参数和/或环路滤波器参数应用熵编码算法或方案(例如,可变长度译码(variable length coding,VLC)方案、上下文自适应VLC(context adaptive VLC,CAVLC)方案、算术译码方案、上下文自适应二进制算术译码(context adaptive binaryarithmetic coding,CABAC)、基于语法的上下文自适应二进制算术译码(syntax-basedcontext-adaptive binary arithmetic coding,SBAC)、概率区间分割熵(probabilityinterval partitioning entropy,PIPE)译码或其它熵编码方法或技术),以获得可由输出端272输出的经编码的图像数据21,例如,以经编码码流21的形式输出。可以将经编码码流21发送到视频解码器30,或将其存档以供稍后发送或由视频解码器30检索。熵编码单元270还可以用于对正在译码的当前视频条带的其它语法元素进行熵编码。
视频编码器20的其它结构变体可用于对视频流进行编码。例如,基于非变换的编码器 20可以在没有变换处理单元206的情况下直接量化某些块或帧的残差信号。在另一种实现方式中,编码器20中,量化单元208和反量化单元210可以组合成一个单元。
图13示出了用于实现本申请技术的示例性视频解码器30。视频解码器30用于接收例如由编码器100编码的经编码的图像数据(例如,经编码码流)21以获得解码图像131。在解码过程中,视频解码器30从视频编码器100接收视频数据,例如表示编码视频条带的图像块的经编码的视频码流以及相关联的语法元素。
在图13的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如,求和器314)、缓冲器316、环路滤波器320、解码图像缓冲器330 和预测处理单元360。预测处理单元360可以包括帧间预测单元344、帧内预测单元354和模式选择单元362。在一些示例中,视频解码器30可执行通常与针对图12的视频编码器100 描述的编码过程相反的解码过程。
如针对编码器20的描述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。相应地,反量化单元310的功能可以与反量化单元110相同;逆变换处理单元312的功能可以与逆变换处理单元212相同;重建单元314的功能可以与重建单元214相同;环路滤波器320的功能可以与环路滤波器220相同;解码图像缓冲器330的功能可以与解码图像缓冲器230相同。因此,针对视频编码器20 的相应单元和功能进行的描述对应地适用于视频解码器30的相应单元和功能。
熵解码单元304用于对经编码的图像数据21进行熵解码以获得量化系数309和/或经解码的译码参数(图13中未示出)等,例如帧间预测参数、帧内预测参数、环路滤波器参数和 /或其它语法元素中的(解码的)任一者或全部。熵解码单元304还用于将帧间预测参数、帧内预测参数和/或其它语法元素转发给预测处理单元360。视频解码器30可以接收视频条带级和/或视频块级的语法元素。
熵解码单元304用于解析码流21(或通常为经编码的图像数据21)并例如对经编码的图像数据21进行熵解码,以获得量化系数309和/或经解码的译码参数(图13中未示出)等,例如帧间预测参数(例如参考图像索引和运动矢量)、帧内预测参数(例如帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其它语法元素中的任一个或全部。熵解码单元304可用于应用与针对编码器20的熵编码单元270所描述的编码方案相对应的解码算法或方案。熵解码单元304还可以用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,并向解码器30的其它单元提供其它参数。视频解码器30可以接收视频条带级和/或视频块级的语法元素。除了条带和相应语法元素或作为条带和相应语法元素的替代,还可以接收和/或使用分块组和/或分块以及相应语法元素。
反量化单元310的功能可以与反量化单元110相同;逆变换处理单元312的功能可以与逆变换处理单元112相同;重建单元314的功能可以与重建单元114相同;缓冲器316的功能可以与缓冲器116相同;环路滤波器320的功能可以与环路滤波器120相同;解码图像缓冲器330的功能可以与解码图像缓冲器130相同。
解码器30的实施例可以包括分割单元(图13中未示出)。在一个示例中,视频解码器 30的预测处理单元360可以用于执行上文描述的分割技术的任意组合。
预测处理单元360可以包括帧间预测单元344和帧内预测单元354,其中,帧间预测单元344的功能可以与帧间预测单元144类似,帧内预测单元354的功能可以与帧内预测单元 154类似。预测处理单元360通常用于根据编码数据21进行块预测和/或获得预测块365,并用于从熵解码单元304等接收或获得(显式或隐式地)预测相关参数和/或关于所选预测模式的信息。
当将视频条带译码为帧内译码(I)条带时,预测处理单元360的帧内预测单元354用于根据指示的帧内预测模式和来自当前帧或图像的先前解码块的数据生成当前视频条带的图像块的预测块365。当将视频帧译码为帧间译码(即,B或P)条带时,预测处理单元360的帧间预测单元344(例如,运动补偿单元)用于根据运动矢量和从熵解码单元304接收的其它语法元素产生当前视频条带的视频块的预测块365。对于帧间预测,可从其中一个参考图像列表中的其中一个参考图像产生这些预测块。视频解码器30可以根据存储在DPB 330中的参考图像,使用默认构建技术来构建参考帧列表:列表0和列表1。
预测处理单元360用于通过解析运动矢量和其它语法元素来确定当前视频条带的视频块的预测信息,并使用所述预测信息针对所解码的当前视频块生成预测块。例如,预测处理单元360使用接收到的一些语法元素确定用于对视频条带的视频块进行译码的预测模式(例如,帧内预测或帧间预测)、帧间预测条带类型(例如B条带、P条带或GPB条带)、条带的一个或多个参考图像列表的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态、以及其它信息,以对当前视频条带内的视频块进行解码。
反量化单元310用于对码流中提供并由熵解码单元304解码的量化变换系数进行反量化,即解量化。反量化过程可以包括使用视频编码器100对视频条带中的每个视频块计算的量化参数来确定量化程度,同样确定需要应用的反量化的程度。
反量化单元310可用于从经编码的图像数据21(例如,通过熵解码单元304等解析和/ 或解码)接收量化参数(quantization parameter,QP)(或通常为与反量化相关的信息)和量化系数,并根据所述量化参数对经解码的量化系数309应用反量化以获得解量化系数311,所述解量化系数311也可以称为变换系数311。
逆变换处理单元312用于对变换系数应用逆变换,例如逆DCT、逆整数变换或概念上类似的逆变换过程,以在像素域中产生残差块。
逆变换处理单元312可用于接收解量化系数311,也称为变换系数311,并对解量化系数 311应用变换以在像素点域中获得重建残差块213。重建残差块213也可以称为变换块313。变换可以为逆变换,例如逆DCT、逆DST、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从经编码的图像数据21接收变换参数或对应信息(例如,通过熵解码单元304等解析和/或解码),以确定将应用于解量化系数311的变换。
重建单元314(例如,求和器314)用于通过例如将重建残差块313的像素点值和预测块 365的像素点值相加,将逆变换块313(即重建残差块313)添加到预测块365,以在像素点域中获得重建块315。
环路滤波单元320(在译码环路中或译码环路之后)用于对重建块315进行滤波,以获得滤波块321,以平滑像素转变或提高视频质量等。环路滤波单元320可以包括一个或多个环路滤波器,如去块滤波器、像素点自适应偏移(sample-adaptive offset,SAO)滤波器或一个或多个其它滤波器,例如自适应环路滤波器(adaptive loop filter,ALF)、噪声抑制滤波器 (noise suppression filter,NSF)或其任意组合。在一个示例中,环路滤波单元220可以包括去块滤波器、SAO滤波器和ALF。滤波过程的顺序可以是去块滤波器、SAO滤波器和ALF 滤波器。在另一示例中,增加称为具有色差缩放的亮度映射(luma mapping withchroma scaling, LMCS)(即,自适应环内整形器)的过程。该过程在去块之前执行。在另一示例中,去块滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、ATMVP子块边缘、子块变换 (sub-block transform,SBT)边缘和内子分割(intra sub-partition,ISP)边缘。虽然环路滤波器单元320在图13中示为环内滤波器,但是在其它配置中,环路滤波器单元320可以实现为后环路滤波器。
然后,将给定帧或图像中的解码视频块321存储在解码图像缓冲器330中,所述解码图像缓冲器330存储用于后续运动补偿的参考图像。
然后,将图像的解码视频块321存储在解码图像缓冲器330中,所述解码图像缓冲器330 存储作为参考图像的解码图像331,这些参考图像用于其它图像的后续运动补偿和/或用于分别输出到显示器。
解码器30用于通过输出端332等输出解码图像331,向用户呈现或供用户观看。
可以使用视频解码器30的其它变体对压缩码流进行解码。例如,解码器30可以在没有环路滤波单元320的情况下产生输出视频流。例如,基于非变换的解码器30可以在某些块或帧没有逆变换处理单元312的情况下直接反量化残差信号。在另一种实现方式中,视频解码器30中,反量化单元310和逆变换处理单元312可以组合成一个单元。
除了上述实施例或替代上述实施例,在图26提供的其它实施例中,帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同,帧内预测单元354的功能可以与帧间预测单元254相同,并根据从经编码的图像数据21接收的分割和/或预测参数或相应信息(例如,通过熵解码单元304等解析和/或解码)决定划分或分割并执行预测。模式应用单元360可用于根据重建图像、块或相应像素点(经滤波或未经滤波)对每个块执行预测(帧内或帧间预测),以获得预测块365。
当将视频条带译码为帧内译码(I)条带时,模式应用单元360的帧内预测单元354用于根据指示的帧内预测模式和来自当前图像的先前解码块的数据生成当前视频条带的图像块的预测块365。当将视频图像译码为帧间译码(即,B或P)条带时,模式应用单元360的帧间预测单元344(例如,运动补偿单元)用于根据运动矢量和从熵解码单元304接收的其它语法元素产生当前视频条带的视频块的预测块365。对于帧间预测,可从其中一个参考图像列表中的其中一个参考图像产生这些预测块。视频解码器30可以根据存储在DPB 330中的参考图像,使用默认构建技术来构建参考帧列表:列表0和列表1。除了条带(例如视频条带)或作为条带的替代,相同或类似的过程可应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例或由这些实施例应用,例如可以使用I、P或B分块组和/或分块对视频进行译码。
模式应用单元360用于通过解析运动矢量或相关信息和其它语法元素来确定当前视频条带的视频块的预测信息,并使用所述预测信息针对所解码的当前视频块生成预测块。例如,模式应用单元360使用接收到的一些语法元素确定用于对视频条带的视频块进行译码的预测模式(例如,帧内预测或帧间预测)、帧间预测条带类型(例如B条带、P条带或GPB条带)、条带的一个或多个参考图像列表的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态、以及其它信息,以对当前视频条带内的视频块进行解码。除了条带(例如视频条带)或作为条带的替代,相同或类似的过程可应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例或由这些实施例应用,例如可以使用I、P或B分块组和/或分块对视频进行译码。
图13所示的视频解码器30的实施例可以用于使用条带(也称为视频条带)对图像进行分割和/或解码,其中,可以使用一个或多个条带(通常为非重叠的)对图像进行分割或解码。每个条带可以包括一个或多个块(例如,CTU)或一个或多个块组(例如,分块(H.265/HEVC 和VVC)或砖(VVC))。
图13所示的视频解码器30的实施例可以用于使用条带/分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码,其中,可以使用一个或多个条带/分块组(通常为非重叠的)对图像进行分割或解码。每个条带/分块组可以包括一个或多个块(例如CTU)或一个或多个分块等,其中,每个分块可以为矩形等形状,可以包括一个或多个块 (例如CTU),例如完整或部分块。
可以使用视频解码器30的其它变体对经编码的图像数据21进行解码。例如,解码器30 可以在没有环路滤波单元320的情况下产生输出视频流。例如,基于非变换的解码器30可以在某些块或帧没有逆变换处理单元312的情况下直接反量化残差信号。在另一种实现方式中,视频解码器30中,反量化单元310和逆变换处理单元312可以组合成一个单元。
应理解,在编码器20和解码器30中,可以对当前步骤的处理结果进一步处理,然后输出到下一步骤。例如,在插值滤波、运动矢量推导或环路滤波之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进行进一步运算,如修正(clip)或移位运算(shift)。
图14为本发明实施例提供的视频译码设备400的示意图。视频译码设备400适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备400可以是解码器(如图11A的视频解码器30)或编码器(如图11A的视频编码器20)。在一个实施例中,视频译码设备400可以是如上所述的图11A的视频解码器30或图11A的视频编码器20的一个或多个组件。
视频译码设备400包括:入端口410和接收单元(Rx)420,用于接收数据;处理器、逻辑单元或中央处理单元(central processing unit,CPU)430,用于处理数据;发送单元(Tx) 440和出端口450,用于发送数据;存储器460,用于存储数据。视频译码设备400还可以包括与入端口410、接收单元420、发送单元440和出端口450耦合的光电(optical-to-electrical, OE)组件和电光(electrical-to-optical,EO)组件,用作光信号或电信号的出口或入口。
处理器430通过硬件和软件实现。处理器430可实现为一个或多个CPU芯片、核(例如,多核处理器)、FPGA、ASIC和DSP。处理器430与入端口410、接收单元420、发送单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470用于实施上述公开的实施例。例如,译码模块470用于实施、处理、准备或提供各种译码操作。因此,包括译码模块470使得视频译码设备400功能得到了显著改进,实现了视频译码设备400不同状态的转换。或者,以存储在存储器460中并由处理器430执行的指令来实现译码模块470。
存储器460包括一个或多个磁盘、磁带机和固态硬盘,可用作溢出数据存储设备,以在选择执行程序时存储这类程序,并存储在程序执行期间读取的指令和数据。存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternary content-addressable memory, TCAM)和/或静态随机存取存储器(static random-access memory,SRAM)。
图15为示例性实施例提供的装置500的简化框图,其中,装置500可用作图11中的源设备310和目的设备320中的任一个或两个。装置500可以实现上述本申请的技术。装置500 可以是包括多个计算设备的计算系统的形式,也可以是单个计算设备的形式,例如手机、平板电脑、膝上型电脑、笔记本电脑、台式计算机等。
装置500中的处理器502可以是中央处理单元。或者,处理器502可以是现有的或今后将开发出的能够操控或处理信息的任何其它类型的设备或多个设备。虽然可以使用如图所示的处理器502等单个处理器来实施所公开的实现方式,但使用多于一个处理器可以提高速度和效率。
在一种实现方式中,装置500中的存储器504可以是只读存储器(read onlymemory,ROM) 设备或随机存取存储器(random access memory,RAM)设备。任何其它合适类型的存储设备都可以用作存储器504。存储器504可以包括处理器502通过总线512访问的代码和数据 506。存储器504还可包括操作系统508和应用程序510,其中,应用程序510包括允许处理器502执行本文所述方法的至少一个程序。例如,应用程序510可以包括应用1至N,还可以包括执行本文所述方法的视频译码应用。装置500还可以包括辅助存储器514形式的其它存储器,辅助存储器514可以是与移动计算设备一起使用的存储卡等。由于视频通信会话可能包括大量信息,因此可以全部或部分地存储在辅助存储器514中,并根据需要加载到存储器504中进行处理。装置500还可以包括一个或多个输出设备,如显示器518。在一个示例中,显示器518可以是将显示器与可用于感测触摸输入的触敏元件组合的触敏显示器。显示器518可以通过总线512耦合到处理器502。
装置500还可以包括一个或多个输出设备,如显示器518。在一个示例中,显示器518 可以是将显示器与可用于感测触摸输入的触敏元件组合的触敏显示器。显示器518可以通过总线512耦合到处理器502。除了显示器518或作为显示器518的替代,可以提供允许用户对装置500进行编程或以其它方式使用装置500的其它输出设备。当所述输出设备是显示器或包括显示器时,所述显示器可以通过各种方式实现,包括通过液晶显示器(liquidcrystal display,LCD)、阴极射线管(cathode-ray tube,CRT)显示器、等离子显示器或发光二极管 (light emitting diode,LED)显示器,如有机LED(organic LED,OLED)显示器实现。
装置500还可以包括图像传感设备520或与图像传感设备520通信,所述图像传感设备 520例如摄像机,或现有的或今后将开发出的能够感测图像(如操作装置500的用户的图像) 的任何其它图像传感设备520。可以对图像传感设备520进行定位,使得其朝向操作装置500 的用户。在一个示例中,可以配置图像传感设备520的位置和光轴,使得视野包括与显示器 518直接相邻并且可以看到显示器518的区域。
装置500还可以包括声音传感设备522或与声音传感设备522通信,所述声音传感设备 522例如麦克风,或现有的或今后将开发出的能够感测装置500附近声音的任何其它声音传感设备。可以对声音传感设备522进行定位,使得其朝向操作装置500的用户,并且可以用于接收用户在操作装置500时发出的语音或其它话语等声音。
虽然图15描述了装置500的处理器502和存储器504集成到一个单元中,但是还可以有其它配置。处理器502的操作可以分布在多个机器(每个机器具有一个或多个处理器)中,这些机器可以直接耦合或通过局域网或其它网络耦合。存储器504可以分布在多个机器中,如基于网络的存储器或执行装置500的操作的多个机器中的存储器。虽然装置500的总线512 在本文中描述为单个总线,但是总线512可以包括多个总线。此外,辅助储存器514可以直接耦合到装置500的其它组件或可以通过网络访问,并且可以包括存储卡等单个集成单元或多个存储卡等多个单元。因此,装置500可以通过多种配置实现。
关于各分割约束元素之间关系的实施例
本发明涉及各分割约束元素之间的关系(为不同的图像分割方法设置分割规则),可以通过包括多个编码图像的码流来指示所述约束元素。因此,本发明提供了用于生成、解码或处理这类码流,特别是用于将分割约束元素添加到码流中,并根据新的分割规则提取分割约束的设备和方法。
需要说明的是,上述语法元素的名称(在本文中)与传统方案中使用的一样。然而,应当清楚的是,这些名称可以在不改变技术背景的情况下加以改变。因此,重要的是语法元素的逻辑意义。
目前,分割约束元素(例如,MaxBtSizeY、MaxMttDepth和MinQtSizeY)在其定义范围内单独指示。具体地,目前,CtbSizeY的语法元素(即log2_ctu_size_minus2),以及MinQtSizeY 的语法元素(即log2_min_qt_size_intra_slices_minus2和log2_min_qt_size_inter_slices_minus2),以及MaxMttDepth的语法元素(即max_mtt_hierarchy_depth_inter_slices和 max_mtt_hierarchy_depth_intra_slices)在序列参数集(Sequence Parameter Set,SPS)中指示。此外,亮度CTB大小与MaxBtSizeY之间差值的语法元素(即log2_diff_ctu_max_bt_size)在条带头中指示。可以将SPS和条带头添加到图像码流中。
图8示出了示例性SPS语法,具体是SPS原始字节序列有效载荷(Raw ByteSequence Payload,RBSP)语法。该语法的SPS RBSP语义如下。
‘pic_width_in_luma_samples’表示以亮度像素点为单位的每个解码图像的宽度,不得等于0且应为MinCbSizeY的整数倍。
‘pic_height_in_luma_samples’表示以亮度像素点为单位的每个解码图像的高度,不得等于0且应为MinCbSizeY的整数倍。
‘log2_ctu_size_minus2’+2表示每个CTU的亮度CTB大小。
元素CtbLog2SizeY、CtbSizeY、MinCbLog2SizeY、MinCbSizeY、MinTbLog2SizeY、MaxTbLog2SizeY、PicWidthInCtbsY、PicHeightInCtbsY、PicSizeInCtbsY、PicWidthInMinCbsY、 PicHeightInMinCbsY、PicSizeInMinCbsY、PicSizeInSamplesY、PicWidthInSamplesC和 PicHeightInSamplesC通常推导如下:
●CtbLog2SizeY=log2_ctu_size_minus2+2
●CtbSizeY=1<<CtbLog2SizeY
●MinCbLog2SizeY=2
●MinCbSizeY=1<<MinCbLog2SizeY
●MinTbSizeY=4
●MaxTbSizeY=64
●PicWidthInCtbsY=Ceil(pic_width_in_luma_samples÷CtbSizeY)
●PicHeightInCtbsY=Ceil(pic_height_in_luma_samples÷CtbSizeY)
●PicSizeInCtbsY=PicWidthInCtbsY*PicHeightInCtbsY
●PicWidthInMinCbsY=pic_width_in_luma_samples/MinCbSizeY
●PicHeightInMinCbsY=pic_height_in_luma_samples/MinCbSizeY
●PicSizeInMinCbsY=PicWidthInMinCbsY*PicHeightInMinCbsY
●PicSizeInSamplesY=pic_width_in_luma_samples*pic_height_in_luma_samples
●PicWidthInSamplesC=pic_width_in_luma_samples/SubWidthC
●PicHeightInSamplesC=pic_height_in_luma_samples/SubHeightC
‘log2_min_qt_size_intra_slices_minus2’+2表示在slice_type等于2(I)的条带中,对 CTU进行四叉树划分得到的叶节点图像块的最小亮度分量尺寸。 log2_min_qt_size_intra_slices_minus2的取值范围应为0到CtbLog2SizeY–2(包括端值)。
●MinQtLog2SizeIntraY=log2_min_qt_size_intra_slices_minus2+2
‘log2_min_qt_size_inter_slices_minus2’+2表示在slice_type等于0(B)或1(P)的条带中,对CTU进行四叉树划分得到的叶节点图像块的最小亮度分量尺寸。 log2_min_qt_size_inter_slices_minus2的取值范围应为0到CtbLog2SizeY–2(包括端值)。
●MinQtLog2SizeInterY=log2_min_qt_size_inter_slices_minus2+2
‘max_mtt_hierarchy_depth_inter_slices’表示在slice_type等于0(B)或1(P)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。 max_mtt_hierarchy_depth_inter_slices的取值范围应为0到CtbLog2SizeY–MinTbLog2SizeY (包括端值)。
‘max_mtt_hierarchy_depth_intra_slices’表示在slice_type等于2(I)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。max_mtt_hierarchy_depth_intra_slices 的取值范围应为0到CtbLog2SizeY–MinTbLog2SizeY(包括端值)。
此外,图9示出了示例性条带头语法。该语法的条带头语义如下。
‘log2_diff_ctu_max_bt_size’表示可以使用二叉树划分进行划分的译码块的亮度CTB大小与最大亮度分量尺寸(宽度或高度)之间的差值。log2_diff_ctu_max_bt_size的取值范围应为0到CtbLog2SizeY–MinCbLog2SizeY(包括端值)。
当log2_diff_ctu_max_bt_size不存在时,推断log2_diff_ctu_max_bt_size的值等于2。
元素MinQtLog2SizeY、MaxBtLog2SizeY、MinBtLog2SizeY、MaxTtLog2SizeY、MinTtLog2SizeY、MaxBtSizeY、MinBtSizeY、MaxTtSizeY、MinTtSizeY和MaxMttDepth通常推导如下:
●MinQtLog2SizeY=(slice_type==I)?MinQtLog2SizeIntraY:MinQtLog2SizeInterY
●MaxBtLog2SizeY=CtbLog2SizeY–log2_diff_ctu_max_bt_size
●MinBtLog2SizeY=MinCbLog2SizeY
●MaxTtLog2SizeY=(slice_type==I)?5:6
●MinTtLog2SizeY=MinCbLog2SizeY
●MinQtSizeY=1<<MinQtLog2SizeY
●MaxBtSizeY=1<<MaxBtLog2SizeY
●MinBtSizeY=1<<MinBtLog2SizeY
●MaxTtSizeY=1<<MaxTtLog2SizeY
●MinTtSizeY=1<<MinTtLog2SizeY
●MaxMttDepth=(slice_type==I)?max_mtt_hierarchy_depth_intra_slices:
max_mtt_hierarchy_depth_inter_slices
如图8所示,目前图像序列(例如,视频序列的图像)的宽度和高度使用语法元素‘pic_width_in_luma_samples’和‘pic_height_in_luma_samples’表示。传统方案中,这些语法元素需要是MinCbSizeY的倍数,以确保图像可以分割成最小大小的译码块。然而,虽然pic_height_in_luma_samples和pic_width_in_luma_samples必须是MinCbSizeY的倍数,仍然不能保证分别使用可用的四叉树、二叉树和三叉树划分方法可以将图像完全分割成块。如下说明这个问题的示例:
示例性地假设:
●MinCbSizeY等于4
●MinQtSizeY等于32
●MaxBtSizeY等于16
在该示例中,如果pic_width_in_luma_samples=132,pic_width_in_luma_samples=132,虽然图像的宽度和高度是4的倍数,但是仍然不能完全分割该图像。原因在于,如果应用四叉树划分,将违反MinQtSizeY的限制,如果应用二叉树划分,将违反MaxBtSizeY的限制,因此,不能使用二叉树划分或四叉树划分来分割例如大小为32×32的父块。换句话说,无法生成宽度或高度等于4的块,但图像的完全分割需要实现这一点。
因此,如上文所例示的,当前的问题在于无法在遵循传统分割规则的前提下完全分割图像。这实际上是一个重大问题,因为这意味着不能对某些图像尺寸进行编码和解码。
图1示出了本发明通用实施例提供的设备100。设备100适用于生成或处理(即操作) 包括编码图像的码流101,例如视频码流。设备100可以包括在编码器中,或者可以包括编码器,其中,该编码器用于对图像进行编码并生成码流101。设备100可以确定各分割约束元素之间的关系,并且可以将这些分割约束元素和/或它们之间的关系添加到码流101中。因此,设备100可以将分割约束元素和/或关系添加到码流101中的SPS语法和/或条带头语法中。
以类似的方式,解码器设备解析码流和/或通过应用预定义规则,从码流中推断与分割相关的约束参数。然后,约束参数有助于正确解码和还原分割。编码器和解码器对相同的语法进行操作(处理)。
具体地,设备100用于确定MaxBtSizeY 102和/或确定MaxMttDepth 103和MinCbSizeY 104。然后,设备100用于根据MaxBtSizeY 102和/或根据MaxMttDepth 103和MinCbSizeY 104 确定MinQtSizeY 105。最后,设备100用于间接(即,通过添加可以推导出MinQtSizeY 105 的信息)或直接将确定的MinQtSizeY 105添加到码流101中。
在本发明的第一具体实施例提供、基于图1所示的设备100构建的设备100中,可以根据MaxBtSizeY 102的值限定MinQtSizeY 105的取值范围。例如,MinQtSizeY 105的上限可以限定为MaxBtSizeY 102。换句话说,在第一具体实施例提供的设备100中,MinQtSizeY105 的最小值不能大于MaxBtSizeY 102。
可选地,或除了上述之外,在第一具体实施例提供的设备100中,可以根据MaxMttDepth 103限定MinQtSizeY 105的取值范围。在这种情况下,例如:
●如果MaxMttDepth 103等于0,则MinQtSizeY 105可以等于(或可以推断为)MinCbSizeY 104。
●如果MaxMttDepth 103大于0,则MinQtSizeY 105的上限可以等于(MinCbSizeY104 <<MaxMttDepth 103)。换句话说,MinQtSizeY 105不应大于(MinCbSizeY 104<<MaxMttDepth 103)。
需要说明的是,在本文中,运算x<<y可以以数学方式描述为xy,其中x为2的n次方,其中n是非负整数。换句话说,x<<y表示x向左移y位。
因此,第一具体实施例提供的设备100用于设置MinQtSizeY 105与MinCbSizeY104、 MaxBtSizeY 102和/或MaxMttDepth 103之间的关系,尤其是,使得可以通过使用四叉树或二叉树划分方法的组合递归地划分父块来实现最小分割块。由于可以使用可用的划分方法生成最小块(其大小由MinCbSizeY 104表示),因此可以完全分割大小为MinCbSizeY104倍数的图像。
图2和图3示出了本发明的第二具体实施例提供的设备的SPS RPBS语法200和条带头语法300。具体地,将图8所示的常规SPS RBSP语法更改为图2所示的语法200(新元素用粗体标记,删除的元素被划掉)。此外,将图9所示的常规条带头语法更改为图3所示的语法300(新元素用粗体标记,删除的元素被划掉)。第二具体实施例提供的设备可以基于图1所示的设备100构建,也可以为本发明的单独实施例。在第二具体实施例提供的设备中,实现以下内容:
●在码流101中相对于MinQtSizeY 105指示MaxBtSizeY 102。换句话说,如图3所示,可以在码流101中指示MaxBtSizeY 102与MinQtSizeY 105之间的差值的语法元素 301(例如,使用log2_diff_max_bt_size_min_qt_size等语法元素),并且可以根据MinQtSizeY 105和log2_diff_max_bt_size_min_qt_size推导MaxBtSizeY 102(例如,在码流101的解码器侧)。在这种情况下,在一个示例中:
■MaxBtSizeY 102=MinQtSizeY 105<<log2_diff_max_bt_size_min_qt_size
■需要说明的是,在该示例中,MaxBtSizeY 102与MinQtSizeY 105之间的差值的语法元素301以对数尺度(特别是以2为底数)指示。在该示例中, log2_diff_max_bt_size_min_qt_size只能具有正整数值或0值。
●在码流101中相对于MinQtSizeY 105和MinCbSizeY 104指示MaxMttDepth 103。如图2所示,可以在码流101中指示MaxMttDepth 103与MinQtSizeY 105的log-2值之间的差值的语法元素201(例如,使用语法元素:
diff_max_mtt_hierarchy_depth_log2_min_qt_size)。图2示出了两个语法元素201:一个对应inter_slices,一个对应intra_slices。在这种情况下,在示例中:
■MaxMttDepth 103=diff_max_mtt_hierarchy_depth_log2_min_qt_size+log2(MinQtSizeY)–log2(MinCbSizeY)。
■需要说明的是,在该示例中,同样假设 diff_max_mtt_hierarchy_depth_log2_min_qt_size以对数尺度指示。函数log2(x) 对应于以2为底的x的对数。
在图3中,‘log2_diff_max_bt_size_min_qt_size’表示可以使用二叉树划分来划分的译码块的最大亮度分量尺寸(宽度或高度)与可以使用四叉树划分来划分的译码块的最小亮度分量尺寸(宽度或高度)之间的差值。log2_diff_ctu_max_bt_size的取值范围应为0到 CtbLog2SizeY–MinQtLog2SizeY(包括端值)。
图4示出了本发明的第三具体实施例提供的设备的SPS RBSP语法400。第三具体实施例提供的设备可以基于图1所示的设备100构建,也可以为本发明的单独实施例。如前所述,传统方案中将指示的图像大小元素405和406(pic_width_in_luma_samples和 pic_height_in_luma_samples)分别表示为MinCbSizeY 104的整数倍值。
相比之下,在第三具体实施例提供的设备的第一种实现方式中,可以将图像大小元素405 和406限制为值只能是MinQtSizeY 105的整数倍。这样的好处是,边界块可以始终使用四叉树划分作为可用的分割方法。
在第三具体实施例提供的设备的第二种实现方式中,可以根据MinQtSizeY 105在码流 101中指示图像的宽度和高度。具体地,将图8所示的常规SPS RBSP语法更改为图4所示的语法400(新元素用粗体标记,删除的元素被划掉)。
在这种情况下,在图4所示的SPS语法400中,可以指示四个语法元素401-404(例如, log2_diff_pic_height_min_Qt和log2_diff_pic_width_min_Qt),具体是每个intra_slice有两个语法元素(高度/宽度),每个inter_slice有两个语法元素(高度/宽度)。优选地,指示这些语法元素401-404而非实际图像大小元素405和406,可以使用以下关系确定图像的宽度和高度:
●以亮度像素点计算的图像宽度=MinQtSizeY 105<<log2_diff_pic_width_min_Qt
●以亮度像素点计算的图像高度=MinQtSizeY 105<<log2_diff_pic_height_min_Qt
可以根据对数尺度在SPS语法400中指示语法元素401-404,特别是差值。
图5和图6分别示出了本发明的第四具体实施例提供的两个条带头元素5000和600。第四具体实施例提供的设备可以基于图1所示的设备100构建,也可以为本发明的单独实施例。
本发明的第四具体实施例提供的设备所涉及的问题是:如果推断、指示或表示MaxMttDepth 103等于0,则MaxBtSizeY 102(或MaxTtSizeY)仍然可以存在于码流101中,并且可以具有大于MinCbSizeY 104的值,MinBtSizeY(或MinTtSizeY)仍然可以具有等于MinCbSizeY 104的值。该条件可能会在编码器和/或解码器的操作中产生歧义,使得可能仍然无法完全分割图像帧。
在第四具体实施例提供的设备的第一种实现方式中,根据MaxMttDepth 103的值在码流 101中指示或表示MaxBtSizeY 102(或MaxTtSizeY)。具体地,将图9所示的常规条带头语法更改为图5所示的语法5000(新元素用粗体标记)。也就是说,该设备用于将基于MaxMttDepth 103的MaxBtSizeY 102(或MaxTtSizeY)的语法元素5001添加到码流101中。
具体地,当MaxMttDepth 103等于0时,可以不在码流101中指示MaxBtSizeY 102(或 MaxTtSizeY),但是可以推断(例如,在解码器侧)MaxBtSizeY 102(或MaxTtSizeY)等于MinCbSizeY 104。或者,如果MaxMttDepth 103等于0,则推断(例如,在解码器侧)MaxBtSizeY 102(或MaxTtSizeY)等于默认预定义值,如4或8。
‘log2_diff_ctu_max_bt_size’同样表示可以使用二叉树划分进行划分的译码块的亮度 CTB大小与最大亮度分量尺寸(宽度或高度)之间的差值。log2_diff_ctu_max_bt_size的取值范围应为0到CtbLog2SizeY–MinCbLog2SizeY(包括端值)。
当log2_diff_ctu_max_bt_size不存在时,以下情况适用:如果slice_type等于2(I),且 max_mtt_hierarchy_depth_intra_slices等于1,则log2_diff_ctu_max_bt_size的值可以推断为等于2。否则,log2_diff_ctu_max_bt_size的值可以推断为等于CtbLog2SizeY–MinCbLog2SizeY。
在第四具体实施例提供的设备的第二种实现方式中,根据MaxBtSizeY 102(或MaxTtSizeY)的值在码流101中指示(signal/indicate)MaxMttDepth 103。具体地,将图9所示的常规条带头语法更改为图6所示的语法600(新元素用粗体标记)。也就是说,该设备用于将基于MaxBtSizeY 102或MaxTtSizeY的MaxMttDepth 103的语法元素601添加到码流101中。
具体地,当MaxBtSizeY 102(或MaxTtSizeY)等于0时,可以不指示MaxMttDepth103,但是可以例如在解码器侧推断为等于0。如果MaxMttDepth 103的值等于0,则表示不允许应用二叉树划分。在该方案中,应在MaxMttDepth 103之前指示MaxBtSizeY 102和MaxTtSizeY 的语法元素,但不限于任何参数集报头。
‘MaxTtSizeY’定义为以像素点数表示,可以使用三叉树划分进行划分的译码块的最大亮度分量尺寸(宽度或高度)。‘MinTtSizeY’定义为以像素点数表示,可以使用三叉树划分进行划分的译码块的最小亮度分量尺寸(宽度或高度)。
在图6中,‘max_mtt_hierarchy_depth’表示在条带中对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。max_mtt_hierarchy_depth_inter_slices的取值范围应为0到 CtbLog2SizeY–MinTbLog2SizeY(包括端值)。当max_mtt_hierarchy_depth不存在时,推断 max_mtt_hierachiy_depth的值为0。
图7示出了本发明实施例提供的方法7000。方法7000具体用于对码流101进行操作,可以由图1所示的设备100执行。方法7000也可以由编码器执行,该编码器将码流101的图像编码到码流101中,即生成码流101。
方法7000包括步骤7001:确定MaxBtSizeY 102和/或确定MaxMttDepth 103和MinCbSizeY 104。此外,方法7000包括步骤7002:根据MaxBtSizeY 102和/或根据MaxMttDepth 103和MinCbSizeY 104确定MinQtSizeY 105。最后,方法7000包括步骤7003:将确定的MinQtSizeY 105添加到码流101中。
图10示出了本发明通用实施例提供的设备1000。设备1000适于生成或处理(即操作) 包括编码图像的码流101,例如视频码流。设备1000可以包括在编码器中,或者可以包括编码器,其中,该编码器用于对图像进行编码并生成码流101。设备1000可以确定各分割约束元素之间的关系,并且可以将这些分割约束元素和/或它们之间的关系添加到码流101中。因此,设备1000可以将分割约束元素和/或关系添加到码流101中的SPS语法和/或条带头语法中。设备1000是图1所示的设备100的替代方案。然而,下文结合图10所述的设备1000的特征可以与第一、第二、第三或第四具体实施例提供的设备的上述特征组合(如果它们不是基于图1的设备100构建的)。
特别地,设备1000用于确定MinQtSizeY(105)。此外,设备1000用于根据MinQtSizeY 105确定MaxBtSizeY 102和/或MaxMttDepth 103。最后,设备1000用于间接(即,通过添加可以推导出MaxBtSizeY 102和/或MaxMttDepth 103的信息)或直接将确定的MaxBtSizeY 102和/或确定的MaxMttDepth 103添加到码流(101)中。
例如,设备1000可以在考虑到MaxBtSizeY 102的下限是MinQtSizeY 105的情况下,确定MaxBtSizeY 102。也就是说,MaxBtSizeY 102的取值范围可以限定于MinQtSizeY105的值。例如,MaxBtSizeY 102的上限可以限定为MinQtSizeY 105。换句话说,在设备1000中, MaxBtSizeY 102的最小值不能小于MinQtSizeY 105。
或者,或除了上述之外,在设备1000中,可以在考虑MaxMttDepth 103的上限是MinQtSizeY 105的log2值与MinCbSizeY 104的log2值的差值的情况下,确定MaxMttDepth103。也就是说,MaxMttDepth 103的最大值不能大于MinQtSizeY 105的log2值与MinCbSizeY 104的log2值的差值。
总之,本发明的第一方面提供一种用于生成或处理包括编码图像的码流的设备,其中,所述设备用于:确定MaxBtSizeY和/或确定MaxMttDepth和MinCbSizeY;根据MaxBtSizeY 和/或根据MaxMttDepth和MinCbSizeY确定MinQtSizeY;将确定的MinQtSizeY添加到码流中。
通过根据MaxBtSizeY和/或根据MaxMttDepth和MinCbSizeY确定MinQtSizeY,即通过设置这些分割约束元素之间的关系来定义新的分割规则,第一方面的设备提高了不同图像分割方法,特别是四叉树和二叉树划分的可用性和灵活性。
在第一方面的一种实现方式中,所述设备用于在考虑到MinQtSizeY的上限是MaxBtSizeY的情况下确定MinQtSizeY,和/或在考虑到MinQtSizeY的上限是MinCbSizeY的MaxMttDepth次方的情况下确定MinQtSizeY。
通过分别设置分割约束元素MinQtSizeY、MinCbSizeY、MaxBtSizeY和MaxMttDepth之间的这类关系,确保可以通过使用四叉树或二叉树划分方法的组合递归划分父块来获得最小分割块。由于可以使用可用的划分方法生成最小块(其大小由MinCbSizeY表示),因此可以完全分割大小为MinCbSizeY倍数的图像。
在第一方面的另一种实现方式中,所述设备用于:如果MaxMttDepth等于0,则确定MinQtSizeY为MinCbSizeY;如果MaxMttDepth大于0,则确定MinQtSizeY为MinCbSizeY 的MaxMttDepth次方。
这有效实现了上述实现方式,从而可以分别使用四叉树和二叉树分割来完全分割图像。
本发明的第二方面提供一种用于生成或处理包括编码图像的码流的设备,其中,所述设备用于:确定MinQtSizeY;根据MinQtSizeY确定MaxBtSizeY和/或MaxMttDepth;
将确定的MaxBtSizeY和/或确定的MaxMttDepth添加到码流中。
在第二方面的一种实现方式中,所述设备用于:在考虑到MaxBtSizeY的下限为MinQtSizeY的情况下确定MaxBtSizeY;和/或在考虑到MaxMttDepth的上限为MinQtSizeY的log2值与MinCbSizeY的log2值的差值的情况下,确定MaxMttDepth。
与第一方面类似,第二方面通过设置各分割约束元素之间的关系来定义新的分割规则。因此,第二方面的设备提高了不同图像分割方法,特别是四叉树和二叉树划分的可用性和灵活性。
在第一或第二方面的另一种实现方式中,所述设备用于将MinQtSizeY与MaxBtSizeY之间的关系(特别是差值)的指示添加到码流中。
因此,例如在解码端,可以容易地推断出相关的分割约束元素,同时减少码流中的信息开销。差值是关系的一个示例。然而,该关系也可以是可以从MinQtSizeY推断出MaxBtSizeY 的比例因子、计算方案等。
在第一或第二方面的另一种实现方式中,所述设备用于将MinQtSizeY与MaxBtSizeY的 log 2值之间的关系(特别是差值)添加到码流中。
因此,例如在解码端,可以推断出相关的分割约束元素,同时减少码流中的信息开销。
在第一或第二方面的另一种实现方式中,所述设备用于:确定一个或多个图像大小元素为MinQtSizeY的整数倍,其中,所述一个或多个图像大小元素指示码流的图像的大小,特别是高度和宽度;并将一个或多个图像大小元素添加到码流中。
因此,边界块可以始终使用四叉树划分作为可用的分割方法。
在第一或第二方面的另一种实现方式中,所述设备用于:确定一个或多个图像大小元素,其中,所述一个或多个图像大小元素指示码流的图像的大小,特别是高度和宽度;并将所述图像大小元素与MinQtSizeY之间的关系指示添加到码流中。
因此,例如在解码端,可以推断出相关的分割约束元素,同时减少码流中的信息开销。
在第一或第二方面的另一种实现方式中,图像大小元素与MinQtSizeY之间的关系指示是基于对数尺度。
在第一或第二方面的另一种实现方式中,所述设备用于将基于MaxMttDepth的MaxBtSizeY或MaxTtSizeY的指示添加到码流中。
这样一来,消除了在编码器和/或解码器的操作中通常产生的歧义,从而可以完全分割图像帧。
在第一或第二方面的另一种实现方式中,所述设备用于:如果MaxMttDepth等于0,则不将MaxBtSizeY或MaxTtSizeY的任何指示添加到码流中。
这可以减少码流中的信息开销。
在第一或第二方面的另一种实现方式中,所述设备用于将基于MaxBtSizeY或MaxTtSizeY的MaxMttDepth的指示添加到码流中。
这样一来,消除了在编码器和/或解码器的操作中通常产生的歧义,从而可以完全分割图像帧。
在第一或第二方面的另一种实现方式中,所述设备用于:如果MaxBtSizeY或MaxTtSizeY 等于0,则不将MaxMttDepth的任何指示添加到码流中。
这可以减少码流中的信息开销。
在第一或第二方面的另一种实现方式中,所述设备包括编码器,或包含在编码器中,所述编码器用于对码流的图像进行编码。
本发明的第三方面提供一种用于生成或处理包括编码图像的码流的方法,其中,所述方法包括:确定MaxBtSizeY和/或确定MaxMttDepth和MinCbSizeY;根据MaxBtSizeY和/或根据MaxMttDepth和MinCbSizeY确定MinQtSizeY;将确定的MinQtSizeY添加到码流中。
在第三方面的一种实现方式中,所述方法包括在考虑到MinQtSizeY的上限是MaxBtSizeY的情况下确定MinQtSizeY,和/或在考虑到MinQtSizeY的上限是MinCbSizeY的MaxMttDepth次方的情况下确定MinQtSizeY。
在第三方面的另一种实现方式中,所述方法包括:如果MaxMttDepth等于0,则确定MinQtSizeY为MinCbSizeY;如果MaxMttDepth大于0,则确定MinQtSizeY为MinCbSizeY 的MaxMttDepth次方。
在第三方面的另一种实现方式中,所述方法包括将MinQtSizeY与MaxBtSizeY之间的关系(特别是差值)的指示添加到码流中。
在第三方面的另一种实现方式中,所述方法包括将MinQtSizeY与MaxMttDepth之间的关系(特别是差值)的指示添加到码流中。
在第三方面的另一种实现方式中,所述方法包括:确定一个或多个图像大小元素为 MinQtSizeY的整数倍,其中,所述一个或多个图像大小元素指示码流的图像的大小,特别是高度和宽度;并将一个或多个图像大小元素添加到码流中。
在第三方面的另一种实现方式中,所述方法包括:确定一个或多个图像大小元素,其中,所述一个或多个图像大小元素指示码流的图像的大小,特别是高度和宽度;并将所述图像大小元素与MinQtSizeY之间的关系指示添加到码流中。
在第三方面的另一种实现方式中,图像大小元素与MinQtSizeY之间的关系指示是基于对数尺度。
在第三方面的另一种实现方式中,所述方法包括将基于MaxMttDepth的MaxBtSizeY或 MaxTtSizeY的指示添加到码流中。
在第三方面的另一种实现方式中,所述方法包括:如果MaxMttDepth等于0,则不将MaxBtSizeY或MaxTtSizeY的任何指示添加到码流中。
在第三方面的另一种实现方式中,所述方法包括将基于MaxBtSizeY或MaxTtSizeY的 MaxMttDepth的指示添加到码流中。
在第三方面的另一种实现方式中,所述方法包括:如果MaxBtSizeY或MaxTtSizeY等于 0,则不将MaxMttDepth的任何指示添加到码流中。
在第三方面的另一种实现方式中,所述方法在对码流的图像进行编码的编码器中执行。
通过第三方面及其实现方式的方法,可以实现上文针对第一方面及其相应实现方式的对应设备所述的所有优点和效果。本发明的又一方面是一种用于生成或处理码流的方法,对应于第二方面的设备。
本发明的第四方面提供一种用于生成或处理包括编码图像的码流的设备,其中,所述设备用于将MinQtSizeY与MaxBtSizeY之间的关系(特别是差值)的指示添加到码流中;和/ 或将MinQtSizeY与MaxMttDepth之间的关系(特别是差值)的指示添加到码流中。
通过第四方面的设备,可以指示相关的分割约束元素,同时减少码流中的信息开销。例如,可以在解码器侧推断分割约束元素。第四方面的设备提高了不同图像分割方法,特别是四叉树和二叉树划分的可用性和灵活性。
本发明的第五方面提供一种用于生成或处理包括编码图像的码流的设备,其中,所述设备用于:确定一个或多个图像大小元素为MinQtSizeY的整数倍,其中,所述一个或多个图像大小元素指示码流的图像的大小,特别是高度和宽度,并将一个或多个图像大小元素添加到码流中;或者确定一个或多个图像大小元素,其中,所述一个或多个图像大小元素指示码流的图像的大小,特别是高度和宽度,并将所述图像大小元素与MinQtSizeY之间的关系指示添加到码流中。
通过第五方面的设备,边界块可以始终使用四叉树划分作为可用的分割方法。此外,例如在解码端,可以推断出相关的分割约束元素,同时减少码流中的信息开销。第五方面的设备提高了不同图像分割方法,特别是四叉树和二叉树划分的可用性和灵活性。
本发明的第六方面提供一种用于生成或处理包括编码图像的码流的设备,其中,所述设备用于:将基于MaxMttDepth的MaxBtSizeY或MaxTtSizeY的指示添加到码流中;或者,将基于MaxBtSizeY或MaxTtSizeY的MaxMttDepth的指示添加到码流中。
第六方面的设备减少或消除了在编码器和/或解码器的操作中通常产生的歧义,从而支持图像帧的完全分割。第六方面的设备提高了不同图像分割方法,特别是四叉树和二叉树划分的可用性和灵活性。
本发明的第七方面提供一种计算机程序产品,包括程序代码,其中,当设备的一个或多个处理器执行所述程序代码时,用于控制所述设备执行第三方面及其相应实现方式的方法。所述设备可以是第一、第二、第四、第五或第六方面或其任意实现方式的设备。
本发明的第八方面提供一种用于解码由第一、第二、第四、第五或第六方面或其任意实现方式所述的设备生成或处理的码流的设备。
与边界分割有关的实施例
通用视频译码(Versatile Video Coding,VVC)下一代标准是国际电联电信标准化部门 (International Telecommunications Union TelecommunicationStandardization Sector,ITU-T)视频译码专家组(Video Coding Experts Group,VCEG)和国际标准化组织/国际电工委员会 (International Organization forStandardization/International Electrotechnical Commission, ISO/IEC)运动图像专家组(Moving Picture Experts Group,MPEG)最近的联合视频项目,这两个标准化组织共同合作,其伙伴关系称为联合视频探索小组(Joint Video Exploration Team, JVET)。在VVC中,多类型(二叉/三叉/四叉)树(BT/TT/QT或二叉树/三叉树/四叉树)分割结构将取代,或可能取代多种分割单元类型的概念,即,不区分CU、PU和TU概念(根据需要CU的大小大于最大变换长度的情况仍需要区分这些概念),并支持更灵活的CU分割形状。[JVET-J1002]。
图16A-图16F举例说明了VTM中当前使用的分割模式。图16A示出了未划分块(不划分);图16B示出了四叉树(quaternary/quadtree,QT)分割;图16C示出了水平二叉树(binary tree,BT)分割;图16D示出了垂直二叉树(binary tree,BT)分割;图16E示出了水平三叉树(ternary tree,TT)分割;图16F示出了例如CU或CTU的块的垂直三叉树(ternarytree, TT)分割。实施例可以用于实现如图16A至图16F所示的分割模式。
在实施例中,可以通过BT/TT/QT译码树方案的序列参数集(sequence parameterset,SPS) 语法元素来定义和表示以下参数:
CTU大小:四叉树的根节点大小
MinQTSize:最小允许四叉树叶节点大小
MaxBTTSize:最大允许二叉树和三叉树根节点大小
MaxBTTDepth:最大允许二叉树和三叉树深度
MinBTTSize:最小允许二叉树和三叉树叶节点大小
在其它实施例中,最小允许四叉树叶节点大小MinQTSize参数也可以包含在其它报头或集合中,例如,条带头(slice header,SH)或图像参数集(picture parameter set,PPS)。
在HEVC标准中,将使用四叉树(quadtree,QT)强制划分位于条带/图像边界上的译码树单元(coding tree unit,CTU)或译码单元(coding unit,CU),直到叶节点的右下侧像素点位于条带/图像边界内。不需要在码流中指示强制QT分割,因为编码器和解码器(例如视频编码器20和视频解码器30)都了解何时应用强制QT。强制分割是为了使视频编码器20/视频解码器30可以处理边界CTU/CU。
国际专利公开号WO 2016/090568公开了四叉树加二叉树(quadtree plus binarytree,QTBT) 结构,并且在VTM 1.0中,从HEVC继承边界CTU/CU强制分割过程。即通过四叉树(quadtree, QT)结构强制分割位于帧边界上的CTU/CU,而不考虑率失真(Rate-Distortion,RD)优化,直到整个当前CU位于图像边界内。不在码流中指示这些强制分割。
图7A示出了由强制QT分割的高清晰度(high definition,HD)(1920×1080个像素) 底边界CTU(128×128)的强制分割示例。在图17中,HD图像具有或HD图像为1920×1080个像素,CTU具有或CTU为128×128个像素。
在2018年04月举办的圣地亚哥会议上CE1(分割)的SubCE2(图像边界处理)[JVET-J1021]中,针对使用BT、TT、或非对称BT(Asymmetric BT,ABT)的图像边界处理提出了15项测试。例如,在JVET-K0280和JVET-K0376中,边界如图18所示定义。图18 用点散线示出图像的边界,用直线示出角落情况区域,即底边界情况、角边界情况和右边界情况。底边界可以通过水平强制BT或强制QT分割;右边界可以通过垂直强制BT或强制 QT分割;角落情况只能通过强制QT划分,其中,根据率失真优化准则决策是否使用强制 BT或强制QT分割中的任一种,并在码流中指示该决策。强制分割意味着必须分割块,例如,将强制分割应用于不能使用图16A所示的“未划分”进行译码的边界块。
如果在强制边界分割中使用强制QT划分,则忽略MinQTSize的分割约束。例如,在图 19A中,如果在SPS中指示MinQTSize为32,为了使边界与强制QT方法匹配,需要QT划分成块大小8×8,从而忽略MinQTSize为32的约束。
根据本方法的实施例,如果将强制QT用于图像边界分割,则强制QT划分服从(例如不忽略)例如在SPS中指示的划分约束。如果需要进一步强制划分,则仅使用强制BT,与强制QT可以合称为强制QTBT。在本发明的实施例中,例如,针对图像边界处的强制QT分割考虑分割约束MinQTSize,并且不需要对强制BT分割进行附加指示。实施例还可以协调正常(非边界)块和边界块的分割。例如,在传统解决方案中,需要两个“MinQTSize”参数,一个对应正常块分割,另一个对应边界块分割。实施例仅需要一个公共“MinQTSize”参数用于正常块和边界块分割,可以通过指示一个“MinQTSize”参数等方式在编码器与解码器之间灵活设置该参数。此外,实施例所需要的分割少于强制QT等。
底边界情况和右边界情况的解决方案
在底边界情况和右边界情况中,如果块大小大于MinQTSize,则可以例如根据率失真优化(rate-distortion optimization,RDO)在强制BT分割与强制QT分割之间选择图像边界分割的分割模式。否则(即,如果块大小等于或小于MinQTSize),则仅使用强制BT分割用于图像边界分割,更具体地,对位于图像底边界上的边界块相应使用针对底边界的水平强制BT,对位于图像右边界上的边界块相应使用针对右边界的垂直强制BT。
所述强制BT分割可以包括通过水平强制边界分割递归分割当前块,直到当前块的子分割位于图像的底边界处,并通过垂直强制边界分割递归分割子分割,直到叶节点完全位于图像的右边界处。或者,所述强制BT分割可以包括通过垂直强制边界分割递归分割当前块,直到当前块的子分割位于底边界处,并通过水平强制边界分割递归分割子分割,直到叶节点完全位于右边界处。MinQTSize还可以用于控制非边界块的分割。
例如,在图17A所示的情况下,如果MinQTSize为32,或限制为32,而需要高度或宽度为8个像素点的矩形(非正方形)块的大小来匹配图像边界,将使用强制BT分割来分割 32×32边界定位块。可以使用相同类型的强制BT分割进一步分割BT分割,例如,在已应用强制垂直BT分割的情况下,仅应用进一步强制垂直BT分割;在已应用强制水平BT分割的情况下,仅应用进一步强制水平BT分割。继续强制BT分割,直到叶节点完全处于图像内。
图17B示出了本发明实施例提供的大小为128×128个像素点的底边界CTU的示例性分割。将构成分割树的根节点图像块或根节点的底边界CTU分割成更小的分割,例如正方形或矩形大小的更小块。可以将这些较小的分割或块进一步分割成甚至更小的分割或块。在图17B 中,首先将CTU四叉树分割成四个大小各自为64×64个像素点的正方形块710、720、730 和740。在这些块中,块710和720再次为底边界块,而块730和740在图像外部(分别位于图像外部),不进行处理。
使用四叉树分割将块710进一步分割成四个大小各自为32×32个像素点的正方形块750、 760、770和780。块750和760位于图像内部,而块770和780再次构成底边界块。在块770 的大小不大于MinQTSize(例如为32)时,对块770应用递归的水平强制二叉树分割,直到叶节点完全处于或完全位于图像内,例如,直到叶节点块772(具有32×16个像素点的矩形非正方形块)(在一次水平二叉树分割之后)处于图像内,或叶节点块774(位于图像的底边界处且具有32×8个像素点的矩形非方形块)(在两次水平二叉树分割之后)位于图像内。块 780也是如此。
本发明的实施例可以协调完全位于图像内的正常块的分割与边界块的分割。边界块是不完全处于图像内部,且不完全处于图像外部的块。换句话说,边界块是包括位于图像内的一部分和位于图像外的一部分的块。此外,本发明的实施例可以减少指示,因为不需要指示等于或低于MinQTSize的强制BT分割。
角落情况的解决方案
在角落情况下,有些方法只允许使用强制QT划分,这也忽略了MinQTSize的约束。本发明的实施例针对角落情况提供了两种解决方案。当当前处理块位于图像角落时会出现角落情况。这种情况是当前块由两个图像边界交叉或与两个图像边界相邻(垂直和水平)。
解决方案1:
角落情况看作是底边界情况或右边界情况。图20示出了边界定义的实施例。图20用点散线示出图像的边界,用直线示出边界情况区域。如图所示,角落情况定义为底边界情况。因此,解决方案与上文针对底边界情况和右边界情况所述的解决方案相同。换句话说,首先应用水平分割(如针对底边界情况所述),直到块或分割完全位于图像内(沿垂直方向),然后应用垂直分割(如针对右边界情况所述),直到叶节点完全位于图像内(水平方向)。
解决方案2:
边界情况的定义仍然保持不变。如果强制QT受MinQTSize约束(当前块大小等于或小于MinQTSize),则使用水平强制BT来匹配底边界,当底边界匹配时,使用垂直强制BT来匹配右边界。
例如,在图19A中,示出了位于图像角落处的块的强制QTBT实施例,如果针对角落情况强制QT分割,MinQTSize为32,或限制为32,则在分割32×32块之后将使用进一步BT 分割,直到强制分割终止。
图19B示出了本发明实施例提供的在图像角落处或角落中的边界CTU的示例性分割的进一步细节,其中,所述CTU的大小为128×128个像素点。首先将CTU四叉树分割成四个大小各自为64×64个像素点的正方形块。在这些块中,只有左上角块910是边界块,而其它三个块位于图像外部(完全位于外部),不进行进一步处理。使用四叉树分割将块910进一步分割成四个大小各自为32×32个像素点的正方形块920、930、940和950。块920位于图像内部,而块930、940和950再次构成边界块。由于这些块930、940和950的大小不大于MinQTSize(为32),因此对块930、940和950应用强制二叉树分割。
块930位于右边界上,并使用递归的垂直强制二叉树分割进行分割,直到叶节点位于图像内,例如位于图像右边界处的块932(这里是在两次垂直二叉树分割之后)。
块940位于底边界上,并使用递归的水平强制二叉树分割进行分割,直到叶节点位于图像内,例如位于图像右边界处的块942(这里是在两次水平二叉树分割之后)。
块950位于角边界处,并首先使用递归的水平强制二叉树分割进行分割,直到子分割或块(这里为块952)位于图像的底边界处(这里是在两次水平二叉树分割之后),然后通过垂直强制边界分割递归分割子分割,直到叶节点或块(例如块954)位于图像的右边界处(这里是在两次垂直二叉树分割之后),或者直到叶节点位于图像内部。
上述方法可以应用于解码和编码。对于解码,可以通过SPS接收MinQTSize。对于编码,可以通过SPS发送MinQTSize。实施例可以使用图18或图20所示的边界定义,也可以使用其它边界定义。
下文提供本发明的其它实施例。需要说明的是,以下部分使用的编号不一定需要与上述部分使用的编号保持一致。
实施例1:一种分割方法,包括:
确定图像的当前块是否为边界块;
如果所述当前块为边界块,则确定所述当前块的大小是否大于最小允许四叉树叶节点大小;
如果所述当前块的所述大小不大于所述最小允许四叉树叶节点大小,则对所述当前块应用强制二叉树分割。
实施例2:根据实施例1所述的分割方法,其特征在于,在所述当前块位于所述图像的底边界上的情况下,所述强制二叉树分割为递归的水平强制二叉树分割;或在所述当前块位于图像的右边界上的情况下,所述强制二叉树分割为递归的垂直强制边界分割。
实施例3:根据实施例1或2所述的分割方法,其特征在于,所述强制二叉树分割包括通过水平强制边界分割递归分割所述当前块,直到所述当前块的子分割直接位于图像的底边界处,并通过垂直强制边界分割递归分割所述子分割,直到叶节点直接完全位于图像的右边界处,或反之亦然。
实施例4:根据实施例1至3中任一项所述的分割方法,其特征在于,所述最小允许四叉树叶节点大小为也用于控制非边界块的分割的最小允许四叉树叶节点大小。
实施例5:一种解码方法,用于根据实施例1至4中任一项所述的分割方法,通过分割块对块进行解码。
实施例6:根据实施例5所述的解码方法,其特征在于,通过SPS接收所述最小允许四叉树叶节点大小。
实施例7:一种编码方法,用于根据实施例1至4中任一项所述的分割方法,通过分割块对块进行编码。
实施例8:根据实施例7所述的编码方法,其特征在于,通过SPS发送所述最小允许四叉树叶节点大小。
实施例9:一种解码设备,包括逻辑电路,所述逻辑电路用于执行根据实施例5或6所述的任一种方法。
实施例10:一种编码设备,包括逻辑电路,所述逻辑电路用于执行根据实施例7或8所述的任一种方法。
实施例11:一种用于存储指令的非瞬时性存储介质,其中,当处理器执行所述指令时,所述处理器执行根据实施例1至8所述的任一种方法。
在一个或多个示例中,所描述的功能可以在硬件、软件、固件或其任意组合中实现。如果以软件实现,则这些功能可以作为一个或多个指令或代码存储在计算机可读介质中或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括与有形介质 (如数据存储介质)对应的计算机可读存储介质,或包括任何便于将计算机程序从一处传送到另一处的介质(例如根据通信协议)的通信介质。以此方式,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质,或(2)如信号或载波等通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明中描述的技术的指令、代码或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这类计算机可读存储介质可以包括RAM、ROM、电可擦除可编程只读存储器(electrically-erasable programmable read-only memory,EEPROM)、CD-ROM或其它光盘存储器、磁盘存储器、其它磁性存储设备、闪存或可用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴电缆、光缆、双绞线、数字用户线(digitalsubscriber line, DSL)或如红外线、无线电和微波等无线技术从网站、服务器或其它远程资源传输指令,则在介质定义中包括同轴电缆、光缆、双绞线、DSL或如红外线、无线电和微波等无线技术。然而,应理解,计算机可读存储介质和数据存储介质并不包括连接、载波、信号或其它瞬时性介质,而是针对非瞬时性有形存储介质。本文所使用的磁盘和光盘包括压缩光盘(compact disc,CD)、激光光盘、光学光盘、数字多功能光盘(digital versatiledisc,DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包括在计算机可读介质的范围内。
可通过如一个或多个数字信号处理器(digital signal processor,DSP)、通用微处理器、专用集成电路(application specific integrated circuit,ASIC)、现场可编程逻辑阵列(field programmable logic array,FPGA)或其它等效集成或离散逻辑电路等一个或多个处理器来执行指令。因此,如本文所使用的术语“处理器”可指前述结构或适合于实现本文描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文描述的各种功能可以提供在用于编码和解码的专用硬件和/或软件模块内,或者并入到组合编解码器中。而且,所述技术可以完全在一个或多个电路或逻辑元件中实现。
本发明的技术可以在多种设备或装置中实现,这些设备或装置包括无线手机、集成电路 (integrated circuit,IC)或一组IC(例如芯片组)。本发明中描述各种组件、模块或单元是为了强调用于执行所公开技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上所述,各种单元可以结合合适的软件和/或固件组合在编解码器硬件单元中,或者通过互操作硬件单元(包括如上所述的一个或多个处理器)的集合来提供。
一种装置,包括存储元件;处理器元件,与所述存储元件耦合,用于:确定图像的当前块是否为边界块;当所述当前块为边界块时,确定所述当前块的大小是否大于最小允许四叉树(quadtree,QT)叶节点大小(MinQTSize);当所述当前块的大小不大于MinQTSize时,对所述当前块应用强制二叉树(binary tree,BT)分割。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以以许多其它特定形式来体现。本发明示例应被视为说明性而非限制性的,且本发明并不限于本文所给出的细节。例如,可以在另一系统中结合或集成各种元件或组件,或者可以省略或不实现某些特征。
另外,在不脱离本发明范围的情况下,各种实施例中描述及图示为独立或分离的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或集成。示出或描述为彼此耦合、或直接耦合、或相互通信的其它项目可通过某种接口、设备或中间组件以电方式、机械方式等间接耦合或通信。变化、替换和变更的其它示例可由本领域技术人员确定,并可在不脱离本文公开的精神和范围的情况下举例。
本申请(或本发明)的实施例提供了编码和解码装置及方法。
第一方面涉及一种分割方法,包括:确定图像的当前块是否为边界块,所述当前块的大小是否大于最小允许四叉树叶节点大小;如果所述当前块是边界块,且所述当前块的大小不大于所述最小允许四叉树叶节点大小(MinQTSize),则对所述当前块应用强制二叉树(binary tree,BT)分割。
根据所述第一方面,在所述方法的第一种实现方式中,在所述当前块位于所述图像的底边界上的情况下,所述强制二叉树分割为递归的水平强制二叉树分割;或在所述当前块位于图像的右边界上的情况下,所述强制二叉树分割为递归的垂直强制边界分割。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第二种实现方式中,继续所述强制二叉树分割,直到叶节点块位于所述图像内。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第三种实现方式中,所述强制二叉树分割包括通过水平强制边界分割递归分割所述当前块,直到所述当前块的子分割位于图像的底边界处;通过垂直强制边界分割递归分割所述子分割,直到叶节点完全位于图像的右边界处。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第四种实现方式中,所述强制BT分割包括通过垂直强制边界分割递归分割所述当前块,直到所述当前块的子分割位于底边界处;通过水平强制边界分割递归分割所述子分割,直到叶节点完全位于右边界处。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第五种实现方式中,所述方法还包括应用所述最小允许四叉树叶节点大小来控制非边界块的分割。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第六种实现方式中,所述边界块是不完全处于图像内部,且不完全处于图像外部的块。
第二方面涉及一种解码方法,用于根据所述第一方面或所述第一方面的任一上述实现方式,通过分割所述块对块进行解码。
根据所述第二方面,在所述方法的第一种实现方式中,所述方法还包括通过序列参数集(sequence parameter set,SPS)接收所述最小允许四叉树叶节点大小。
第三方面涉及一种编码方法,用于根据所述第一方面或所述第一方面的任一上述实现方式,通过分割所述块对块进行编码。
根据所述第三方面,在所述方法的第一种实现方式中,所述方法还包括通过序列参数集 (sequence parameter set,SPS)发送所述最小允许四叉树叶节点大小。
第四方面涉及一种解码设备,包括逻辑电路,所述逻辑电路用于根据所述第一方面或所述第一方面的任一上述实现方式的分割方法,通过分割所述块对块进行解码。
根据所述第四方面,在所述解码设备的第一种实现方式中,所述逻辑电路还用于通过序列参数集(sequence parameter set,SPS)接收所述最小允许四叉树叶节点大小。
第五方面涉及一种编码设备,包括逻辑电路,所述逻辑电路用于根据所述第一方面或所述第一方面的任一上述实现方式的分割方法,通过分割所述块对块进行编码。
根据所述第五方面,在所述解码设备的第一种实现方式中,所述逻辑电路还用于通过序列参数集(sequence parameter set,SPS)发送所述最小允许四叉树叶节点大小。
第六方面涉及一种用于存储指令的非瞬时性存储介质,其中,处理器执行所述指令时,所述处理器执行所述第一方面、第二方面或第三方面或第一方面、第二方面或第三方面的任一上述实现方式中的任一种。
第七方面涉及一种方法,包括:确定图像的当前块为边界块,并且所述当前块的大小小于或等于最小允许四叉树(quadtree,QT)叶节点大小(MinQTSize);响应于所述确定,对所述当前块应用强制二叉树(binary tree,BT)分割。
根据所述第七方面,在所述方法的第一种实现方式中,所述当前块位于所述图像的底边界上,其中,所述强制BT分割为递归的水平强制BT分割。
根据所述第七方面或所述第七方面的任一上述实现方式,在所述方法的第二种实现方式中,所述当前块位于所述图像的右边界上,其中,所述强制BT分割为递归的垂直强制BT分割。
根据所述第七方面或所述第七方面的任一上述实现方式,在所述方法的第三种实现方式中,所述强制BT分割包括通过水平强制边界分割递归分割所述当前块,直到所述当前块的子分割位于底边界处;通过垂直强制边界分割递归分割所述子分割,直到叶节点完全位于右边界处。
根据所述第七方面或所述第七方面的任一上述实现方式,在所述方法的第四种实现方式中,所述强制BT分割包括通过垂直强制边界分割递归分割所述当前块,直到所述当前块的子分割位于底边界处;通过水平强制边界分割递归分割所述子分割,直到叶节点完全位于右边界处。
根据所述第七方面或所述第七方面的任一上述实现方式,在所述方法的第五种实现方式中,所述方法还包括应用MinQTSize来控制非边界块的分割。
根据所述第七方面或所述第七方面的任一上述实现方式,在所述方法的第六种实现方式中,所述方法还包括通过序列参数集(sequence parameter set,SPS)接收MinQTSize。
根据所述第七方面或所述第七方面的任一上述实现方式,在所述方法的第七种实现方式中,所述方法还包括通过序列参数集(sequence parameter set,SPS)发送MinQTSize。
第八方面涉及一种装置,包括存储器;处理器,与所述存储器耦合,用于:确定图像的当前块是否为边界块;当所述当前块为边界块时,确定所述当前块的大小是否大于最小允许四叉树(quadtree,QT)叶节点大小(MinQTSize);当所述当前块的大小不大于MinQTSize 时,对所述当前块应用强制二叉树(binary tree,BT)分割。
根据所述第八方面,在所述装置的第一种实现方式中,当所述当前块位于所述图像的底边界上时,所述强制BT分割为递归的水平强制BT分割;或在所述当前块位于图像的右边界上时,所述强制BT分割为递归的垂直强制BT分割。
根据所述第八方面或所述第八方面的任一上述实现方式,在所述装置的第二种实现方式中,所述强制BT分割包括通过水平强制边界分割递归分割所述当前块,直到所述当前块的子分割位于底边界处;通过垂直强制边界分割递归分割所述子分割,直到叶节点完全位于右边界处。
根据所述第八方面或所述第八方面的任一上述实现方式,在所述装置的第三种实现方式中,所述强制BT分割包括通过垂直强制边界分割递归分割所述当前块,直到所述当前块的子分割位于底边界处;通过水平强制边界分割递归分割所述子分割,直到叶节点完全位于右边界处。
根据所述第八方面或所述第八方面的任一上述实现方式,在所述装置的第四种实现方式中,所述处理器还用于应用MinQTSize来控制非边界块的分割。
根据所述第八方面或所述第八方面的任一上述实现方式,在所述装置的第五种实现方式中,所述装置还包括与所述处理器耦合的接收器,所述接收器用于通过序列参数集(sequence parameter set,SPS)接收MinQTSize。
根据所述第八方面或所述第八方面的任一上述实现方式,在所述装置的第六种实现方式中,所述装置还包括与所述处理器耦合的发送器,所述发送器用于通过序列参数集(sequence parameter set,SPS)发送MinQTSize。
第九方面涉及一种计算机程序产品,包括存储在非瞬时性介质中的计算机可执行指令,其中,处理器执行所述计算机可执行指令时,使装置确定图像的当前块是否为边界块;当所述当前块为边界块时,确定所述当前块的大小是否大于最小允许四叉树(quadtree,QT)叶节点大小(MinQTSize);当所述当前块的大小不大于MinQTSize时,对所述当前块应用强制二叉树(binary tree,BT)分割。
根据所述第八方面,在所述装置的第一种实现方式中,当所述当前块位于所述图像的底边界上时,所述强制BT分割为递归的水平强制BT分割;或在所述当前块位于图像的右边界上时,所述强制BT分割为递归的垂直强制BT分割。
根据所述第九方面或所述第九方面的任一上述实现方式,在所述装置的第二种实现方式中,所述强制BT分割包括通过水平强制边界分割递归分割所述当前块,直到所述当前块的子分割位于底边界处;通过垂直强制边界分割递归分割所述子分割,直到叶节点完全位于右边界处。
根据所述第九方面或所述第九方面的任一上述实现方式,在所述装置的第三种实现方式中,所述强制BT分割包括通过垂直强制边界分割递归分割所述当前块,直到所述当前块的子分割位于底边界处;通过水平强制边界分割递归分割所述子分割,直到叶节点完全位于右边界处。
根据所述第九方面或所述第九方面的任一上述实现方式,在所述装置的第四种实现方式中,所述指令还使所述装置应用MinQTSize来控制非边界块的分割。
根据所述第九方面或所述第九方面的任一上述实现方式,在所述装置的第五种实现方式中,所述指令还使所述装置通过序列参数集(sequence parameter set,SPS)接收MinQTSize。
根据所述第九方面或所述第九方面的任一上述实现方式,在所述装置的第六种实现方式中,所述指令还使所述装置通过序列参数集(sequence parameter set,SPS)发送MinQTSize。
关于非边界块和边界块的各分割约束之间的关系的实施例
下一代视频译码(Next Generation Video Coding,NGVC)不区分CU、PU和TU的概念,使CU分割形状具有更多灵活性。CU的大小与译码节点的大小相对应,可以是正方形或非正方形(例如,矩形)。
在J.An等人于2015年9月发表的《下一代视频译码的块分割结构(Blockpartitioning structure for next generation video coding)》,国际电信联盟,COM16-C966(以下称为“VCEG 建议书COM16-C966”中,提出将四叉树-二叉树(quad-tree-binary-tree,QTBT)分割技术用于HEVC之外的未来视频译码标准。模拟结果表明,在所使用的HEVC中,提出的QTBT结构比四叉树结构更高效。在HEVC中,限制了对小块的帧间预测,以减少运动补偿的内存访问,且不支持4×4块的帧间预测。在JEM的QTBT中,取消了这些限制。
在QTBT中,CU可以为正方形或矩形。如图21所示,首先通过四叉树结构分割译码树单元(coding tree unit,CTU)。可以通过二叉树结构进一步分割四叉树叶节点。有两种二叉树划分类型:对称水平划分和对称垂直划分。在每种情况下,都是沿中间水平或垂直地划分节点。二叉树叶节点称为译码单元(coding unit,CU),该分割用于预测和变换处理,而不进行任何进一步分割。即在QTBT译码块结构中,CU、PU和TU的块大小相同。CU有时由不同颜色分量的译码块(coding block,CB)组成,例如,对于4:2:0色度格式的P条带和B条带,一个CU包含一个亮度CB和两个色度CB;有时由单一分量的CB组成,例如,对于I 条带,一个CU仅包含一个亮度CB或仅包含两个色度CB。
QTBT分割方案的参数如下:
–CTU大小:四叉树的根节点大小,与HEVC中的概念相同
–MinQTSize:最小允许四叉树叶节点大小
–MaxBTSize:最大允许二叉树根节点大小
–MaxBTDepth:最大允许二叉树深度
–MinBTSize:最小允许二叉树叶节点大小
在QTBT分割结构的一个示例中,当四叉树节点的大小等于或小于MinQTSize时,不考虑进一步的四叉树。在大小(MinQTSize)超过MaxBTSize时不通过二叉树进一步划分。否则,可以通过二叉树进一步分割四叉树叶节点。因此,四叉树叶节点也是二叉树的根节点,其二叉树深度为0(零)。当二叉树深度达到MaxBTDepth(即4)时,不再考虑进一步划分。当二叉树节点的宽度等于MinBTSize(即4)时,不再考虑进一步水平划分。同理,当二叉树节点的高度等于MinBTSize时,不再考虑进一步垂直划分。通过预测和变换处理进一步处理二叉树的叶节点,而无需任何进一步分割。在JEM中,最大CTU大小为256×256个亮度像素点。可以对二叉树(binary-tree,CU)的叶节点进行进一步处理(例如,执行预测过程和变换过程),而无需任何进一步分割。
图21示出了使用QTBT分割技术分割的块30(例如,CTB)的示例。如图21所示,使用QTBT分割技术,经过每个块的中心对称划分每个块。图22示出了与图21的块分割对应的树结构。图22中的实线表示四叉树划分,虚线表示二叉树划分。在一个示例中,在二叉树的每个划分(即,非叶)节点中,指示语法元素(例如,标志)以表示所执行的划分类型(例如,水平或垂直),其中,0表示水平划分,1表示垂直划分。对于四叉树划分,不需要表示划分类型,因为四叉树划分总是将一个块水平并垂直划分为4个大小相等的子块。
如图22所示,在节点50处,使用QT分割将块30(对应于根50)划分为图21所示的四个块31、32、33和34。不再进一步划分块34,因此块34是叶节点。在节点52处,使用 BT分割将块31进一步划分为两个块。如图22所示,节点52标记为1,表示垂直划分。因此,节点52处的划分得到块37和包括块35和36的块。块35和36是通过在节点54处进一步垂直划分而形成的。在节点56处,使用BT分割将块32进一步划分为两个块38和39。
在节点58处,使用QT分割将块33划分成4个大小相等的块。通过该QT分割产生块43和44,并且不再进一步划分块43和44。在节点60处,首先使用垂直二叉树划分来划分左上块,从而产生块40和右垂直块。然后使用水平二叉树划分将右垂直块划分成块41和42。在节点58处通过四叉树划分得到右下块,在节点62处,使用水平二叉树划分将该右下块划分为块45和46。如图22所示,节点62标记为0,表示水平划分。
除了QTBT之外,还提出了一种称为多类型树(multi-type-tree,MTT)的块分割结构来取代基于QTBT的CU结构中的BT,也就是说,可以首先通过QT分割对CTU进行划分以获得CTU的块,然后通过MTT分割对该块进行划分。
MTT分割结构仍为递归树结构。在MTT中,使用多种不同的分割结构(例如,两种或两种以上)。例如,根据MTT技术,在树结构的每个深度处,可以对树结构的每个相应的非叶节点使用两种或两种以上不同的分割结构。树结构中某一节点的深度可以指从该节点到树结构的根的路径长度(例如,划分次数)。
MTT中有两种分割类型:BT分割和三叉树(ternary-tree,TT)分割。分割类型可以从 BT分割和TT分割中选择。TT分割结构与QT或BT结构的不同之处在于TT分割结构不沿中心对块进行划分。该块的中心区域完全处于同一子块内。与产生四个块的QT或产生两个块的二叉树不同,根据TT分割结构进行划分得到三个块。根据TT分割结构的示例性分割类型包括对称分割类型(水平和垂直)和非对称分割类型(水平和垂直)。此外,根据TT分割结构的对称分割类型可以是非平均/非均匀的或平均/均匀的。根据TT分割结构的非对称分割类型是非平均/非均匀的。在一个示例中,TT分割结构可以包括以下分割类型中的至少一种:水平平均/均匀对称三叉树、垂直平均/均匀对称三叉树、水平非平均/非均匀对称三叉树、垂直非平均/非均匀对称三叉树、水平非平均/非均匀非对称三叉树、或垂直非平均/非均匀非对称三叉树分割类型。
通常,非平均/非均匀对称三叉树分割类型是围绕块的中心线对称的分割类型,但是得到的三个块中的至少一个块的大小与其它两个块的大小不相同。在一个优选的示例中,侧块为块大小的1/4,而中心块为块大小的1/2。平均/均匀对称三叉树分割类型是围绕块的中心线对称的分割类型,且得到的块大小都相同。如果根据垂直或水平划分,块高度或宽度为3的倍数,则可以使用这种分割。非平均/非均匀非对称三叉树分割类型是围绕块的中心线不对称的分割类型,且得到的块中的至少一个块的大小与其它两个块的大小不相同。
图23为可选的示例性水平三叉树分割类型的概念图。图24为可选的示例性垂直三叉树分割类型的概念图。在图23和图24中,h表示以亮度或色度像素点为单位的块高度,w表示以亮度或色度像素点为单位的块宽度。需要说明的是,块的相应中心线并不表示块边界(即,三叉树分割不经过中心线对块进行划分)。而是使用中心线来描述特定分割类型相对于原始块的中心线是对称还是非对称的。中心线也是沿着划分的方向。
如图23所示,采用水平平均/均匀对称分割类型对块71进行分割。水平平均/均匀对称分割类型产生相对于块71的中心线对称的上半部和下半部。水平平均/均匀对称分割类型产生三个大小相等的子块,每个子块的高度为h/3,宽度为w。当块71的高度可被3均匀整除时,可以使用水平平均/均匀对称分割类型。
采用水平非平均/非均匀对称分割类型对块73进行分割。水平非平均/非均匀对称分割类型产生相对于块73的中心线对称的上半部和下半部。水平非平均/非均匀对称分割类型产生大小相等的两个块(例如,高度为h/4的顶部块和底部块)和一个大小不同的中心块(例如,高度为h/2的中心块)。在一个示例中,根据水平非平均/非均匀对称分割类型,中心块的面积等于顶部块和底部块的组合面积。在一些示例中,高度为2的次幂(例如,2、4、8、16、32 等)的块可以优选采用水平非平均/非均匀对称分割类型。
采用水平非平均/非均匀非对称分割类型对块75进行分割。水平非平均/非均匀非对称分割类型不会产生相对于块75的中心线对称的上半部和下半部(即,上半部和下半部不对称)。在图23的示例中,水平非平均/非均匀非对称分割类型产生高度为h/4的顶部块、高度为3h/8 的中心块和高度为3h/8的底部块。当然,可以使用其它非对称布置。
如图24所示,采用垂直平均/均匀对称分割类型对块81进行分割。垂直平均/均匀对称分割类型产生相对于块81的中心线对称的左半部和右半部。垂直平均/均匀对称分割类型产生三个大小相等的子块,每个子块的宽度为w/3,高度为h。当块81的宽度可被3均匀整除时,可以使用垂直平均/均匀对称分割类型。
采用垂直非平均/非均匀对称分割类型对块83进行分割。垂直非平均/非均匀对称分割类型产生相对于块83的中心线对称的左半部和右半部。垂直非平均/非均匀对称分割类型产生相对于83的中心线对称的左半部和右半部。垂直非平均/非均匀对称分割类型产生大小相等的两个块(例如,宽度为h/4的左侧块和右侧块)和一个大小不同的中心块(例如,宽度为 w/2的中心块)。在一个示例中,根据垂直非平均/非均匀对称分割类型,中心块的面积等于左侧块和右侧块的组合面积。在一些示例中,宽度为2的次幂(例如,2、4、8、16、32等) 的块可以优选采用垂直非平均/非均匀对称分割类型。
采用垂直非平均/非均匀非对称分割类型对块85进行分割。垂直非平均/非均匀非对称分割类型不会产生相对于块85的中心线对称的左半部和右半部(即,左半部和右半部不对称)。在图24的示例中,垂直非平均/非均匀非对称分割类型产生宽度为w/4的左侧块、宽度为3w/8 的中心块和宽度为3w/8的右侧块。当然,可以使用其它非对称布置。
除了上文定义的QTBT的参数之外(或替代这些参数),针对MTT分割方案定义了以下参数。
–MaxBTSize:最大允许二叉树根节点大小
–MinBtSize:最小允许二叉树根节点大小
–MaxMttDepth:最大多类型树深度
–MaxMttDepth offset:最大多类型树深度偏移
–MaxTtSize:最大允许三叉树根节点大小
–MinTtSize:最小允许三叉树根节点大小
–MinCbSize:最小允许译码块大小
根据本申请的实施例,本发明的实施例可以由视频编码器或视频解码器,如图12的视频编码器20或图13的视频解码器30实现。视频编码器20或视频解码器30的一个或多个结构元件(包括分割单元)可用于执行本发明实施例的技术。
在本发明的一个实施例中:
在JVET-K1001-v4中,在SPS中指示log2_ctu_size_minus2、log2_min_qt_size_intra_slices_minus2和log2_min_qt_size_inter_slices_minus2(作为语法元素)。
参数log2_ctu_size_minus2+2表示每个CTU的亮度译码树块大小。具体地:
CtbLog2SizeY=log2_ctu_size_minus2+2 (7-5)
CtbSizeY=1<<CtbLog2SizeY (7-6)
换句话说,CtbLog2SizeY表示CTU大小CtbSizeY的log2值,对应亮度(Y)的译码树块(coding tree block,CTB)大小。
其它设置如下:
MinCbLog2SizeY=2 (7-7)
MinCbSizeY=1<<MinCbLog2SizeY (7-8)
MinTbSizeY=4 (7-9)
MaxTbSizeY=64 (7-10)
参数log2_min_qt_size_intra_slices_minus2+2表示在slice_type等于2(I)的条带(即帧内条带)中,对CTU进行四叉树划分得到的叶节点图像块的最小亮度分量尺寸。log2_min_qt_size_intra_slices_minus2的取值范围应为0到CtbLog2SizeY–2(包括端值)。
MinQtLog2SizeIntraY=log2_min_qt_size_intra_slices_minus2+2 (7-22)
参数log2_min_qt_size_inter_slices_minus2+2表示在slice_type等于0(B)或1(P)的条带(即帧间条带)中,对CTU进行四叉树划分得到的叶节点图像块的最小亮度分量尺寸。 log2_min_qt_size_inter_slices_minus2的取值范围应为0到CtbLog2SizeY–2(包括端值)。
MinQtLog2SizeInterY=log2_min_qt_size_inter_slices_minus2+2 (7-23)
MinQtSizeY在(7-30)中进行了定义,表示以亮度像素点计算的最小允许四叉树划分大小。如果译码块大小小于或等于MinQtSizeY,则不允许进行四叉树划分。其它设置如下:
MinQtLog2SizeY=(slice_type==I)?MinQtLog2SizeIntraY:MinQtLog2SizeInterY (7-25)
MaxBtLog2SizeY=CtbLog2SizeY–log2_diff_ctu_max_bt_size (7-26)
MinBtLog2SizeY=MinCbLog2SizeY (7-27)
MaxTtLog2SizeY=(slice_type==I)?5:6 (7-28)
MinTtLog2SizeY=MinCbLog2SizeY (7-29)
MinQtSizeY=1<<MinQtLog2SizeY (7-30)
MaxBtSizeY=1<<MaxBtLog2SizeY (7-31)
MinBtSizeY=1<<MinBtLog2SizeY (7-32)
MaxTtSizeY=1<<MaxTtLog2SizeY (7-33)
MinTtSizeY=1<<MinTtLog2SizeY (7-34)
MaxMttDepth=(slice_type==I)?max_mtt_hierarchy_depth_intra_slices:max_mtt_hierarchy_depth_inter_slices (7-35)
参数max_mtt_hierarchy_depth_intra_slices和max_mtt_hierarchy_depth_inter_slices分别表示帧内条带和帧间条带的MTT类型划分的最大层级深度。
根据log2_min_qt_size_intra_slices_minus2和log2_min_qt_size_inter_slices_minus2的语义,log2_min_qt_size_intra_slices_minus2和log2_min_qt_size_inter_slices_minus2的范围为0到 CtbLog2SizeY–2。
这里,CtbLog2SizeY在log2_ctu_size_minus2的语义中进行了定义,表示每个CTU的亮度译码树块大小的log2值,其中VTM2.0中的CtbLog2SizeY等于7。
根据(7-22)和(7-23),MinQtLog2SizeIntraY和MinQtLog2SizeInterY的范围为2到 CtbLog2SizeY。
根据(7-25),MinQtLog2SizeY的范围为2到CtbLog2SizeY。
根据(7-30),在JVET-K1001-v4中,MinQtSizeY的范围为(1<<2)到(1<<CtbLog2SizeY);在VTM2.0中,范围为(1<<2)到(1<<7),等于4到128。
在JVET-K1001-v4中,在条带头中有条件地指示log2_diff_ctu_max_bt_size。
参数log2_diff_ctu_max_bt_size表示可以使用二叉树划分进行划分的译码块的亮度CTB 大小与最大亮度分量尺寸(宽度或高度)之间的差值。log2_diff_ctu_max_bt_size的取值范围应为0到CtbLog2SizeY–MinCbLog2SizeY(包括端值)。
当log2_diff_ctu_max_bt_size不存在时,推断log2_diff_ctu_max_bt_size的值等于2。
MinCbLog2SizeY在(7-7)中进行了定义,表示最小允许译码块大小。
根据log2_diff_ctu_max_bt_size的语义,log2_diff_ctu_max_bt_size的范围为0到 CtbLog2SizeY–MinCbLog2SizeY。
根据(7-26),MaxBtLog2SizeY的范围为CtbLog2SizeY到MinCbLog2SizeY。
根据(7-31),MaxBtSizeY的范围为(1<<CtbLog2SizeY)到(1<<MinCbLog2SizeY)。
根据(7-7),在JVET-K1001-v4中,MaxBtSizeY的范围为(1<<CtbLog2SizeY)到(1<<2),因为在VTM2.0中,CtbLog2SizeY等于7,所以VTM2.0中MaxBtSizeY的范围等于128 到4。
因此,MinQtSizeY的范围为4到(1<<CtbLog2SizeY),在VTM2.0中为4到128;MaxBtSizeY的范围为(1<<CtbLog2SizeY)到4,在VTM2.0中为128到4。
因此,MinQtSizeY可能大于MaxBtSizeY。
另外,根据VVC 2.0中的当前边界处理,只允许对边界定位块进行QT和BT分割(不允许进行TT,却又必须进行划分)。
如果当前译码块位于边界,则当前译码块大小cbSizeY满足以下条件:
MinQtSizeY>cbSizeY>MaxBtSizeY,
不可能对当前译码块进行QT和BT划分。因此,当前块没有可用的分割模式。
实施例1
下文更详细地描述了上述问题的解决方案(本发明的实施例),包括边界情况问题。
根据一个实施例,为了解决上述问题,MaxBtSizeY的下限应限制为MinQtSizeY,以确保MaxBtSizeY不小于MinQtSizeY。具体地,MaxBtSizeY的下限可以等于MinQtSizeY,因此MaxBtSizeY的范围应为(1<<CtbLog2SizeY)到(1<<MinQtLog2SizeY),则 MaxBtLog2SizeY的范围应为CtbLog2SizeY到MinQtLog2SizeY,因此, log2_diff_ctu_max_bt_size的范围应为0到CtbLog2SizeY–MinQtLog2SizeY。
(视频标准)初稿的对应变化在于以下log2_diff_ctu_max_bt_size的语义:
log2_diff_ctu_max_bt_size表示可以使用二叉树划分进行划分的译码块的亮度CTB大小与最大亮度分量尺寸(宽度或高度)之间的差值。log2_diff_ctu_max_bt_size的取值范围应为 0到CtbLog2SizeY–MinQtLog2SizeY(包括端值)。因此,可以使用MinQtSizeY的信息来确定MaxBtSizeY的有效性。换句话说,可以根据MinQtSizeY的信息确定MaxBtSizeY。
译码设备(解码器或编码器)实现的对应译码方法如下:
确定图像的当前块是否为边界块;
确定当前块的大小是否大于最小允许四叉树叶节点大小;
如果所述当前块为边界块且所述当前块的所述大小不大于所述最小允许四叉树叶节点大小,则对所述当前块应用二叉树划分,其中,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小。
其中,对当前块应用二叉树划分可以包括对当前块应用强制二叉树划分。
可以通过对图像或译码树单元(coding tree unit,CTU)进行划分来获得所述当前块。
所述方法可以包括两种情况:(1)树类型为SINGLE_TREE或DUAL_TREE_LUMA;(2)树类型为DUAL_TREE_CHROMA。对于情况(1),所述当前块为亮度块;对于情况(2),所述当前块为色度块。
所述最大允许二叉树根节点大小可以是可以使用二叉树划分来划分的亮度译码根节点图像块以亮度像素点计算的最大亮度分量尺寸。
所述最大允许三叉树根节点大小可以是可以使用三叉树划分来划分的亮度译码根节点图像块以亮度像素点计算的最大亮度分量尺寸。
所述最小允许四叉树叶节点大小可以是四叉树划分得到的亮度叶节点图像块以亮度像素点计算的最小亮度分量尺寸。
这里,译码对应于图像、视频或运动图像译码。
边界块意味着图像/帧边界切割该块,或换句话说,该块位于图像/帧边界处。在上述实施例中,如果当前块是边界块(条件1)且其大小不大于最小允许四叉树叶节点大小(条件2),则对当前块应用二叉树划分。需要说明的是,在一些实施例中,可以使用三叉树或其它划分来代替二叉树划分。此外,在一些实施例中,无论条件1如何,都可以在条件2下应用二叉树划分。也就是说,不需要评估条件1。如果当前块的大小实际上大于最小允许四叉树叶节点大小(即,不满足条件2),则可以应用四叉树划分。
需要说明的是,在有些实施例中,仅对边界块使用二叉树划分(条件1)。对于非边界块,仅可以使用四叉树划分进行划分。在图像/帧的边界处应用二叉树(或三叉树)划分可能有利于更高效的划分,例如,在水平边界处的水平二叉树/三叉树分割和在垂直边界处的垂直二叉树/三叉树分割。
译码设备(解码器或编码器)实现的另一种对应译码方法如下:确定边界块的大小是否大于最小允许四叉树叶节点大小。如果边界块的大小不大于最小允许四叉树叶节点大小,则最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小(例如,根据标准规范),对边界块应用二叉树划分。
可选地,边界块可以不包括角块。换句话说,为了上述条件1,不将由垂直和水平图像/ 帧边界切割的角块视为边界块。
实施例2
下文描述本发明的其它实施例(可与上述实施例结合)。
在JVET-K1001-v4中,在SPS中指示max_mtt_hierarchy_depth_inter_slices和max_mtt_hierarchy_depth_intra_slices。换句话说,max_mtt_hierarchy_depth_inter_slices和 max_mtt_hierarchy_depth_intra_slices为语法元素,意味着它们的值包含在码流中,所述码流还包括编码图像或视频。
具体地,max_mtt_hierarchy_depth_inter_slices表示在slice_type等于0(B)或1(P)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。 max_mtt_hierarchy_depth_inter_slices的取值范围应为0到CtbLog2SizeY–MinTbLog2SizeY (包括端值)。
max_mtt_hierarchy_depth_intra_slices表示在slice_type等于2(I)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。max_mtt_hierarchy_depth_intra_slices的取值范围应为0到CtbLog2SizeY–MinTbLog2SizeY(包括端值)。
MinTbSizeY在(7-9)中进行了定义,固定为4,因此MinTbLog2SizeY=log2MinTbSizeY,固定为2。
定义了MaxMttDepth,表示多类型树分割的最大允许深度。如果当前多类型树分割深度大于或等于MaxMttDepth,则不允许进行(不应用)多类型树分割。
根据max_mtt_hierarchy_depth_inter_slices和max_mtt_hierarchy_depth_intra_slices的语义, max_mtt_hierarchy_depth_inter_slices和max_mtt_hierarchy_depth_intra_slices的范围为0到 CtbLog2SizeY–MinTbLog2SizeY。
根据(7-35),MaxMttDepth的范围为0到CtbLog2SizeY–MinTbLog2SizeY。由于在VTM2.0中CtbLog2SizeY等于7,因此MaxMttDepth的范围为0到5。
因此,MaxMttDepth的范围为0到CtbLog2SizeY–MinTbLog2SizeY,在VTM2.0中为0到5。
根据VVC 2.0中的当前边界处理,只允许对边界定位块进行QT和BT分割(不允许进行TT,却又必须进行划分)。
如果上述第一个问题得到解决(MaxBtSizeY≥MinQtSizeY),则仍然满足以下条件:
cbSizeY≤MinQtSizeY
MaxMttDepth=0
边界处理没有足够的BT(通常为任何MTT,包括TT)分割层次。
例如,MinQtSizeY等于16,MinTbSizeY等于4,MaxMttDepth等于0。
如果边界块的cbSizeY=16,父分割为QT,且该块仍然位于边界上,则由于当前块的 Mttdepth达到MaxMttDepth,因此可以不再进一步分割。
该边界情况问题的解决方案(本发明实施例):为了解决上述问题,MaxMttDepth的下限应限制为1(换句话说,值不能取为0),以确保在QT分割之后,边界情况有足够的多类型树分割层次。或者,甚至进一步地,MaxMttDepth的下限应限制为(MinQtLog2SizeY–MinTbLog2SizeY),以确保在QT分割之后,边界情况和非边界情况都有足够的多类型树分割层次。
(标准)初稿的对应变化在于以下max_mtt_hierarchy_depth_inter_slices和max_mtt_hierarchy_depth_intra_slices的语义:
max_mtt_hierarchy_depth_inter_slices表示在slice_type等于0(B)或1(P)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。max_mtt_hierarchy_depth_inter_slices的取值范围应为1到CtbLog2SizeY–MinTbLog2SizeY (包括端值)。
max_mtt_hierarchy_depth_intra_slices表示在slice_type等于2(I)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。max_mtt_hierarchy_depth_intra_slices的取值范围应为1到CtbLog2SizeY–MinTbLog2SizeY(包括端值)。
或者,
max_mtt_hierarchy_depth_inter_slices表示在slice_type等于0(B)或1(P)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。 max_mtt_hierarchy_depth_inter_slices的取值范围应为MinQtLog2SizeY–MinTbLog2SizeY到CtbLog2SizeY–MinTbLog2SizeY(包括端值)。
max_mtt_hierarchy_depth_intra_slices表示在slice_type等于2(I)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。max_mtt_hierarchy_depth_intra_slices的取值范围应为MinQtLog2SizeY–MinTbLog2SizeY到CtbLog2SizeY–MinTbLog2SizeY(包括端值)。
译码设备(解码器或编码器)实现的对应译码方法如下:
将图像划分为块,其中,所述块包括边界块;对具有最大边界多类型分割深度的边界块应用二叉树划分,其中,所述最大边界多类型分割深度至少为最大多类型树深度与最大多类型树深度偏移量之和,其中,所述最大多类型树深度大于0。该实施例可以与实施例1结合,也可以不与实施例1一起应用。
可选地,当对边界块应用二叉树划分时,最大多类型树深度大于0。
可选地,边界块可以不包括角块。
实施例3
在本发明的另一个实施例中:
在JVET-K1001-v4中,如果MinQtSizeY>MaxBtSizeY且MinQtSizeY>MaxTtSizeY。
如果cbSize=MinQtsizeY,则由于没有可用的分割模式,分割无法达到MinCbSizeY (MinTbSizeY和MinCbsizeY是固定的,等于4)。
该非边界情况或边界情况的解决方案:为了解决上述问题,MaxBtSizeY的下限应限制为 MinQtSizeY,以确保MaxBtSizeY不小于MinQtSizeY。或者,MaxTtSizeY的下限应限制为 MinQtSizeY,以确保MaxTtSizeY不小于MinQtSizeY。
初稿的对应变化在于
log2_diff_ctu_max_bt_size的语义表示可以使用二叉树划分进行划分的译码块的亮度 CTB大小与最大亮度分量尺寸(宽度或高度)之间的差值。log2_diff_ctu_max_bt_size的取值范围应为0到CtbLog2SizeY–MinQtLog2SizeY(包括端值)。
和/或,
log2_min_qt_size_intra_slices_minus2+2表示在slice_type等于2(I)的条带中,对CTU 进行四叉树划分得到的叶节点图像块的最小亮度分量尺寸。 log2_min_qt_size_intra_slices_minus2的取值范围应为0到MaxTtLog2SizeY–2(包括端值)。
log2_min_qt_size_inter_slices_minus2+2表示在slice_type等于0(B)或1(P)的条带中,对CTU进行四叉树划分得到的叶节点图像块的最小亮度分量尺寸。log2_min_qt_size_inter_slices_minus2的取值范围应为0到MaxTtLog2SizeY–2(包括端值)。
译码设备(解码器或编码器)实现的对应译码方法如下:
确定当前块的大小是否大于最小允许四叉树叶节点大小;
如果所述当前块的所述大小不大于所述最小允许四叉树叶节点大小,则对所述当前块应用多类型树划分;
其中,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小,或所述最小允许四叉树叶节点大小不大于最大允许三叉树根节点大小。
可选地,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小,且所述最小允许四叉树叶节点大小不大于最大允许三叉树根节点大小。
可选地,对所述当前块应用多类型树划分包括对所述当前块应用三叉树划分,或对所述当前块应用二叉树划分。
可选地,边界块可以不包括角块。
实施例4
在本发明的另一个实施例中:
如果MaxBtSizeY≥MinQtSizeY,MinQtSizeY>MinTbLog2SizeY且MaxMttDepth<(MinQtLog2SizeY–MinTbLog2SizeY),
如果cbSize=MinQtsizeY,则由于没有足够的多类型树分割层次可用,分割无法达到 MinCbSizeY。
该非边界情况或边界情况问题的解决方案:为了解决上述问题,MaxMttDepth的下限应限制为(MinQtLog2SizeY–MinTbLog2SizeY),以确保在QT分割之后,边界情况和非边界情况都有足够的多类型树分割层次。
初稿的对应变化在于以下max_mtt_hierarchy_depth_inter_slices和 max_mtt_hierarchy_depth_intra_slices的语义:
max_mtt_hierarchy_depth_inter_slices表示在slice_type等于0(B)或1(P)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。 max_mtt_hierarchy_depth_inter_slices的取值范围应为MinQtLog2SizeY–MinTbLog2SizeY到CtbLog2SizeY–MinTbLog2SizeY(包括端值)。
max_mtt_hierarchy_depth_intra_slices表示在slice_type等于2(I)的条带中,对四叉树叶进行多类型树划分得到的译码单元的最大层级深度。max_mtt_hierarchy_depth_intra_slices的取值范围应为MinQtLog2SizeY–MinTbLog2SizeY到CtbLog2SizeY–MinTbLog2SizeY(包括端值)。
译码设备(解码器或编码器)实现的对应译码方法如下:
将图像划分成块;
对具有最终最大多类型树深度的块的块应用多类型树划分,其中,所述最终最大多类型树深度至少为最大多类型树深度与最大多类型树深度偏移量之和,其中,所述最大多类型树深度大于或等于最小允许四叉树叶节点大小的Log2值减去最小允许变换块大小的Log2值,或所述最大多类型树深度大于或等于最小允许四叉树叶节点大小的Log2值减去最小允许译码块大小的Log2值。
可选地,所述块为非边界块。
可选地,所述最大多类型树深度偏移量为0。
可选地,所述块为边界块,所述多类型树划分为二叉树划分。
可选地,所述多类型树划分为(或包括)三叉树划分。
可选地,边界块可以不包括角块。
实施例1至4可以应用在编码端,用于将图像/帧分割成译码单元并对译码单元进行译码。实施例1至4可以应用在解码端,用于提供图像/帧的分割,即译码单元,并相应地对译码单元进行解码(例如,从流中正确解析出译码单元并对译码单元进行解码)。
根据一些实施例,提供了一种解码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述处理器耦合并存储由所述处理器执行的程序,其中,当所述处理器执行所述程序代码时,配置所述解码器以执行上文结合实施例1至4所述的任一种方法。
此外,提供了一种编码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述处理器耦合并存储由所述处理器执行的程序,其中,当所述处理器执行所述程序代码时,配置所述编码器以执行上文结合实施例1至4所述的任一种方法。
总之,提供了一种由解码设备实现的译码方法,其中,所述方法包括:确定当前块的大小是否大于最小允许四叉树叶节点大小;如果所述当前块的所述大小不大于所述最小允许四叉树叶节点大小,则对所述当前块应用多类型树划分;其中,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小,或所述最小允许四叉树叶节点大小不大于最大允许三叉树根节点大小。
这种方法有助于对图像/视频块的划分参数进行高效划分和指示。
此外,在一些实现方式中,所述方法还包括确定图像的当前块是否为边界块的步骤。如果当前块为边界块,且当前块的大小不大于最小允许四叉树叶节点大小,则所述方法还包括对当前块应用二叉树划分。需要说明的是,在这种情况下,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小。例如,如果当前块的大小不大于最小允许四叉树叶节点大小,则上述对当前块应用多类型树划分包括:如果所述当前块为边界块且所述当前块的大小不大于所述最小允许四叉树叶节点大小,则对所述当前块应用二叉树划分。
提供二叉树划分可以特别有利于图像/视频帧边界处的块,例如由边界切割的块。因此,在一些实现方式中,将该方法应用于边界块而不是应用于剩余块,这样做是有利的。然而,本发明并不限于此,如上所述,应用二叉树划分以获得更大划分深度的方法也可以适用于非边界块并进行高效指示。
除了上述实施例或替代上述实施例,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小,且所述最小允许四叉树叶节点大小不大于最大允许三叉树根节点大小。
对所述当前块应用多类型树划分可以包括对所述当前块应用三叉树划分,或对所述当前块应用二叉树划分。然而,本发明并不限于此,通常,所述多类型树划分还可以包括其它不同种类的划分。
所述方法还可以包括根据所述最小允许四叉树叶节点大小,确定所述最大允许二叉树根节点大小。这有利于参数的高效指示/存储。例如,可以认为所述最大允许二叉树根节点大小等于所述最小允许四叉树叶节点大小。然而,本发明并不限于此,可以假设其它关系来推导最大允许二叉树根节点大小。
根据一个示例性实施例,除了上述实施例之外或替代上述实施例,所述方法可以包括将图像划分为块的步骤,其中,所述块包括所述当前块。对当前块应用二叉树划分包括:对具有最大边界多类型分割深度的边界块应用二叉树划分,其中,所述最大边界多类型分割深度至少为最大多类型树深度与最大多类型树深度偏移量之和,其中,所述最大多类型树深度大于0。此外,在一些实现方式中,当对所述边界块应用所述二叉树划分时,所述最大多类型树深度大于0。
根据一个实施例,所述方法包括将图像划分为块(包括当前块的块)。对当前块应用多类型树划分包括:对具有最终最大多类型树深度的块的当前块应用多类型树划分,其中,所述最终最大多类型树深度至少为最大多类型树深度与最大多类型树深度偏移量之和,其中,所述最大多类型树深度大于或等于最小允许四叉树叶节点大小的Log2值减去最小允许变换块大小的Log2值,或所述最大多类型树深度大于或等于最小允许四叉树叶节点大小的Log2值减去最小允许译码块大小的Log2值。这对于更大的分割深度也有利于进一步划分。
所述当前块可以是非边界块。所述最大多类型树深度偏移量可以为0。或者或另外,所述当前块可以是边界块,所述多类型树划分为二叉树划分。所述多类型树划分可以是或包括三叉树划分。
根据一个实施例,提供了一种编码方法,其中,所述方法包括以下步骤:确定当前块的大小是否大于最小允许四叉树叶节点大小;如果所述当前块的所述大小不大于所述最小允许四叉树叶节点大小,则对所述当前块应用多类型树划分;其中,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小,或所述最小允许四叉树叶节点大小不大于最大允许三叉树根节点大小。
所述编码方法可以应用关于解码方法所述的任何上述规则和约束。因为编码端和解码端需要共享码流。具体地,编码端在对上述分割产生的分区进行译码之后生成码流,而解码端相应地解析码流并重建解码的分割。下文描述的与编码设备(编码器)和解码设备(解码器) 相关的实施例也同样适用。
根据一个实施例,提供了一种解码设备,包括电路,其中,所述电路用于:确定当前块的大小是否大于最小允许四叉树叶节点大小;如果所述当前块的所述大小不大于所述最小允许四叉树叶节点大小,则对所述当前块应用多类型树划分;其中,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小,或所述最小允许四叉树叶节点大小不大于最大允许三叉树根节点大小。需要说明的是,可以根据解码端码流中的指示确定当前块的大小是否大于最小允许四叉树叶节点大小。
还提供了一种编码设备,包括电路,其中,所述电路用于:确定当前块的大小是否大于最小允许四叉树叶节点大小;如果所述当前块的所述大小不大于所述最小允许四叉树叶节点大小,则对所述当前块应用多类型树划分;其中,所述最小允许四叉树叶节点大小不大于最大允许二叉树根节点大小,或所述最小允许四叉树叶节点大小不大于最大允许三叉树根节点大小。
根据一个实施例,提供了一种非瞬时性计算机可读存储介质,存储由处理电路执行的程序,其中,所述处理电路执行所述程序时,所述处理电路执行上述任一种方法。
本发明中描述的设备可以包括用于执行本文描述的各种操作和方法的处理电路。所述处理电路可以包括硬件和软件。例如,所述处理电路可以包括一个或多个处理器和与所述一个或多个处理器连接的非易失性存储器。所述存储器可以携带程序代码,当一个或多个处理器执行所述程序代码时,使所述设备执行所述操作或方法。
已经结合作为实例的不同实施例以及实现方式描述了本发明。然而,根据对附图、本发明和独立权利要求的研究,本领域技术人员在实践所要求保护的发明时,能够理解和实现其它变化。在权利要求以及说明书中,词语“包括”不排除其它元件或步骤,且不定冠词“一”或“一个”不排除多个。单个元件或其它单元可满足权利要求书中所叙述的若干实体或项目的功能。在互不相同的从属权利要求中列举某些措施并不表示这些措施的组合不能用于有益的实现方式。
下面描述上述实施例中所示的编码方法和解码方法以及使用这些方法的系统的应用。
图27为示出用于实现内容分发业务的内容供应系统3100的框图。该内容供应系统3100 包括捕获设备3102、终端设备3106,并可选地包括显示器3126。捕获设备3102通过通信链路3104与终端设备3106通信。所述通信链路可以包括上述通信信道13。通信链路3104包括但不限于WIFI、以太网、有线、无线(3G/4G/5G)、USB或其任意类型组合等。
捕获设备3102用于生成数据,并可通过上文实施例中所示的编码方法对数据进行编码。或者,捕获设备3102可以将数据分发到流媒体服务器(图中未示出),该服务器对数据进行编码,并将编码数据发送到终端设备3106。捕获设备3102包括但不限于摄像机、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、PDA、车载设备或其任意组合等。例如,捕获设备3102可以包括上述源设备12。当数据包括视频时,捕获设备3102中包括的视频编码器20实际上可执行视频编码处理。当数据包括音频(即声音)时,捕获设备3102中包括的音频编码器实际上可执行音频编码处理。在一些实际场景中,捕获设备3102通过将编码视频数据和编码音频数据复用在一起来分发编码视频数据和编码音频数据。在其它实际场景中,例如在视频会议系统中,不复用编码音频数据和编码视频数据。捕获设备3102将编码音频数据和编码视频数据分别分发到终端设备3106。
在内容供应系统3100中,终端设备310接收并再现编码数据。终端设备3106可以为具有数据接收和恢复能力的设备,如智能手机或平板电脑3108、计算机或膝上型电脑3110、网络视频录像机(network video recorder,NVR)/数字视频录像机(digital videorecorder,DVR) 3112、电视3114、机顶盒(set top box,STB)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,PDA)3122、车载设备3124或其任意组合,或能够对上述编码数据进行解码的此类设备。例如,终端设备3106可以包括上述目的设备14。当编码数据包括视频时,终端设备中的视频解码器30优先进行视频解码。当编码数据包括音频时,终端设备中包括的音频解码器优先进行音频解码处理。
对于带显示器的终端设备,如智能手机或平板电脑3108、计算机或膝上型电脑3110、网络视频录像机(network video recorder,NVR)/数字视频录像机(digital videorecorder,DVR) 3112、电视3114、个人数字助理(personal digital assistant,PDA)3122、或车载设备3124,终端设备可以将解码数据发送到其显示器。对于不带显示器的终端设备,如STB 3116、视频会议系统3118或视频监控系统3120,将外接显示器3126与终端设备连接,以接收并显示解码数据。
本系统中的各个设备进行编码或解码时,可以使用上述实施例所示的图像编码设备或图像解码设备。
图28为示出终端设备3106的示例结构的图。在终端设备3106从捕获设备3102接收流后,协议处理单元3202对该流的传输协议进行分析。所述协议包括但不限于实时流传输协议 (Real Time Streaming Protocol,RTSP)、超文本传输协议(Hyper Text TransferProtocol,HTTP)、 HTTP直播流传输协议(HTTP Live Streaming protocol,HLS)、MPEG-DASH、实时传输协议(Real-time Transport Protocol,RTP)、实时消息传输协议(RealTime Messaging Protocol,RTMP) 或其任意组合等。
在协议处理单元3202对流进行处理之后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分离为编码音频数据和编码视频数据。如上所述,在一些实际场景中,例如在视频会议系统中,不复用编码音频数据和编码视频数据。在这种情况下,不通过解复用单元3204,将编码数据发送到视频解码器3206和音频解码器3208。
通过解复用处理,生成视频基本码流(elementary stream,ES)、音频ES和可选的字幕。视频解码器3206,包括如上述实施例所解释的视频解码器30,通过如上述实施例所示的解码方法对视频ES进行解码以生成视频帧,并将该数据发送到同步单元3212。音频解码器3208 对音频ES进行解码以生成音频帧,并将该数据发送至同步单元3212。或者,可以在将视频帧发送至同步单元3212之前存储在缓冲器(图28中未示出)中。类似地,可以在将音频帧发送至同步单元3212之前存储在缓冲器(图28中未示出)中。
同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。信息可以使用与译码音频和可视数据呈现相关的时间戳和与数据流发送相关的时间戳,在语法中进行译码。
如果流中包括字幕,则字幕解码器3210对字幕进行解码,并使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以包括在汽车系统等其它系统中。
尽管本发明实施例主要根据视频译码进行了描述,但需要说明的是,译码系统10、编码器20和解码器30(相应地,系统10)的实施例以及本文描述的其它实施例也可以用于静止图像处理或译码,即,对视频译码中独立于任何先前或连续图像的单个图像进行处理或译码。通常,如果图像处理译码限于单个图像27,仅帧间预测单元244(编码器)和344(解码器) 不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)同样可用于静止图像处理,例如残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内预测254/354和/或环路滤波220/320、熵编码270和熵解码304。
编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任意组合来实现。如果以软件来实现,则各种功能可作为一个或多个指令或代码存储在计算机可读介质中或通过通信介质传输,且由基于硬件的处理单元执行。计算机可读介质可以包括与有形介质(如数据存储介质)对应的计算机可读存储介质,或包括任何便于将计算机程序从一处传送到另一处的介质(例如根据通信协议)的通信介质。以此方式,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质,或(2)如信号或载波等通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
以下逻辑运算符或数学运算符定义如下:
本申请中使用的数学运算符与C编程语言中使用的数学运算符类似。然而,对整数除法和算术移位运算的结果进行了更准确的定义,并且定义了其它运算,如幂运算和实值除法。编号和计数规范通常从0开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。
算术运算符
以下算术运算符定义如下:
+ 加法
– 减法(作为双参数运算符)或者非运算(作为一元前缀运算符)
* 乘法,包括矩阵乘法
Figure BDA0003763812030000571
Figure BDA0003763812030000572
÷ 用来表示数学等式中的除法,没有截断或四舍五入。
Figure BDA0003763812030000573
用来表示数学等式中的除法,没有截断或四舍五入。/>
Figure BDA0003763812030000574
f(i)的求和,其中i取从x到y(包括y)的所有整数值。
x%y 模数。x除以y的余数,仅对x≥0且y>0的整数x和y定义。
逻辑运算符
以下逻辑运算符定义如下:
x&&y x和y的布尔逻辑“与”
x||y x和y的布尔逻辑“或”
! 布尔逻辑“非”
x?y:z 如果x为TRUE或不等于0,则求y的值,否则,求z的值。
关系运算符
以下关系运算符定义如下:
> 大于
≥ 大于或等于
< 小于
≤ 小于或等于
== 等于
!= 不等于
当一个关系运算符应用于一个已被赋值“na”(不适用,not applicable)的语法元素或变量时,值“na”被视为该语法元素或变量的不同值。值“na”被视为不等于任何其它值。
逐位运算符
以下逐位运算符定义如下:
& 逐位“与”。当对整数参数运算时,运算的是整数值的二的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于 0的有效位来扩展较短的参数。
| 逐位“或”。当对整数参数运算时,运算的是整数值的二的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于 0的有效位来扩展较短的参数。
^ 逐位“异或”。当对整数参数运算时,运算的是整数值的二的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。
x>>y x的二的补码整数表示算术右移y个二进制位。只有y为非负整数值时才定义该函数。由于右移而移进最高有效位(most significant bit,MSB)的位的值等于移位运算之前的x的MSB。
x<<y x的二的补码整数表示算术左移y个二进制位。只有y为非负整数值时才定义该函数。由于左移而移进最低有效位(least significant bit,LSB)的位的值等于0。
赋值运算符
以下算术运算符定义如下:
= 赋值运算符
++ 增,即,x++等于x=x+1;当在数组索引中使用时,等于增运算之前变量的值。
++ 减,即,x––等于x=x–1;当在数组索引中使用时,等于减运算之前变量的值。
+= 增加指定量,即,x+=3等于x=x+3,x+=(–3)等于x=x+(–3)。
–= 减少指定量,即,x–=3等于x=x–3,x–=(–3)等于x=x–(–3)。
范围符号
以下符号用来说明值的范围:
x=y..z x取从y到z(包括端值)的整数值,其中x、y和z是整数,z大于y。
数学函数
定义了以下数学函数:
Figure BDA0003763812030000581
Asin(x) 三角反正弦函数,对参数x运算,x在–1.0至1.0(包括端值)范围之间,输出值在-π÷2至π÷2(包括端值)范围之间,单位为弧度。
Atan(x) 三角反正切函数,对参数x运算,输出值在-π÷2至π÷2(包括端值)范围之间,单位为弧度。
Figure BDA0003763812030000582
Ceil(x) 大于或等于x的最小整数。
Clip1Y(x)=Clip3(0,(1<<BitDepthY)–1,x)
Clip1C(x)=Clip3(0,(1<<BitDepthC)–1,x)
Figure BDA0003763812030000591
Cos(x) 三角余弦函数,对参数x运算,单位为弧度。
Floor(x) 小于或等于x的最大整数。
Figure BDA0003763812030000592
Ln(x) x的自然对数(以e为底的对数,其中e是自然对数底数常数2.718 281828……)。
Log2(x) x以2为底的对数。
Log10(x) x以10为底的对数。
Figure BDA0003763812030000593
Figure BDA0003763812030000594
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
Figure BDA0003763812030000595
Sin(x) 三角正弦函数,对参数x运算,单位为弧度。
Figure BDA0003763812030000596
Swap(x,y)=(y,x)
Tan(x) 三角正切函数,对参数x运算,单位为弧度。
运算顺序优先级
当没有使用括号来显式指示表达式中的优先顺序时,适应以下规则:
–高优先级的运算在低优先级的任何运算之前计算。
–相同优先级的运算从左到右依次计算。
下表从最高到最低说明运算的优先级,表中位置越高,优先级越高。
对于C编程语言中也使用的运算符,本规范中使用的优先级顺序与在C编程语言中使用的优先级顺序相同。
表:从最高(表格顶部)到最低(表格底部)的运算优先级
Figure BDA0003763812030000597
/>
Figure BDA0003763812030000601
逻辑运算的文本说明
在文本中,逻辑运算的语句用数学形式描述如下:
Figure BDA0003763812030000602
可以采用如下方式描述:
...as follows/...the following applies:
–If condition 0,statement 0
–Otherwise,if condition 1,statement 1
-...
–Otherwise(informative remark on remaining condition),statement n
文本中的每个“If...Otherwise,if...Otherwise,...”语句都以“...asfollows”或“...the following applies”引入,紧接“If...”。“If...Otherwise,if...Otherwise,...”的最后一个条件始终是“Otherwise,...”。间插的“If...Otherwise,if...Otherwise,...”语句可以通过使“...as follows”或“...the following applies”与结尾“Otherwise,...”匹配来标识。
在文本中,逻辑运算的语句用数学形式描述如下:
Figure BDA0003763812030000603
/>
Figure BDA0003763812030000611
可以采用如下方式描述:
Figure BDA0003763812030000613
在文本中,逻辑运算的语句用数学形式描述如下:
Figure BDA0003763812030000612
可以采用如下方式描述:
When condition 0,statement 0
When condition 1,statement 1
缩略语和术语定义
HEVC - 高效视频译码
VVC - 通用视频译码
VTM - VVC测试模型
JEM - 联合探索模型
CTU - 译码树单元
CU - 译码单元
BT - 二叉树
TT - 三叉树
QT - 四叉树(Quad Tree/Quaternary Tree)
ABT - 非对称BT
MTT - 多类型树
AMP - 非对称分割
SH - 条带头
SPS - 序列参数集
PPS - 图像参数集
CE - 核心实验
SubCE - 子核心实验(核心实验的一部分)。

Claims (13)

1.一种用于对码流进行解码的方法,其特征在于,包括:
从所述码流获得语法元素;
获取四叉树划分得到的亮度叶节点图像块最小尺寸MinQtSizeY相关的信息,所述亮度叶节点图像块最小尺寸MinQtSizeY用亮度像素点数量表示;
根据所述MinQtSizeY相关的信息和所述获得的语法元素,确定允许使用二叉树划分进行划分的亮度根节点图像块的最大尺寸MaxBtSizeY,所述亮度根节点图像块的最大尺寸MaxBtSizeY用亮度像素点数量表示。
2.根据权利要求1所述的方法,其特征在于,所述MaxBtSizeY的下限为所述MinQtSizeY。
3.根据权利要求1或2所述的方法,其特征在于,所述语法元素表示所述MaxBtSizeY的底为2的对数与所述MinQtSizeY的底为2的对数之间的差值;或所述语法元素表示所述MaxBtSizeY与所述MinQtSizeY之间的差值。
4.根据权利要求1或2所述的方法,其特征在于,所述语法元素为所述MinQtSizeY与所述MaxBtSizeY之间的差值的语法元素,所述差值的语法元素发送所述差值以2为底数的对数值。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述从所述码流获得所述语法元素包括:根据译码单元的最大层级深度从所述码流获得所述语法元素,其中,所述译码单元由四叉树叶节点图像块经多类型树划分得到。
6.根据权利要求5所述的方法,其特征在于,所述根据译码单元的最大层级深度从所述码流获得所述语法元素包括:
如果MaxMttDepth不等于0,则从所述码流获得所述语法元素,其中,所述MaxMttDepth为所述译码单元的最大层级深度。
7.根据权利要求1至3中任一项所述的方法,其特征在于,所述MinQtSizeY相关的信息为MinQtSizeY或MinQtLog2SizeY。
8.一种对码流进行解码的装置,其特征在于,包括处理器和存储器,所述存储器用于存储码流或对所述码流进行解码后的数据的至少一项;
所述处理器用于执行程序指令,以执行如权利要求1至7任一项所述的解码方法。
9.一种存储码流的设备,其特征在于,包括存储介质和通信接口,所述通信接口用于接收通过网络传输的码流,所述码流包括多个语法元素,所述多个语法元素包括MinQtSizeY的底为2的对数与MaxBtSizeY的底为2的对数之间的差值的语法元素,其中所述MinQtSizeY代表四叉树划分得到的亮度叶节点图像块最小尺寸,所述MaxBtSizeY代表二叉树划分进行划分的亮度根节点图像块的最大尺寸,所述尺寸用亮度像素点数量表示。
所述存储介质用于存储所述码流。
10.根据权利要求9所述的存储码流的设备,其特征在于,还包括处理器,用于从所述存储介质中检索目标码流,并将所述目标码流传输到目的设备。
11.根据权利要求9或10所述的存储码流的设备,其特征在于,所述MaxBtSizeY的下限为所述MinQtSizeY。
12.根据权利要求9至11任一项所述的存储码流的设备,其特征在于,所述多个语法元素还包括译码单元的最大层级深度MaxMttDepth,其中,所述译码单元由四叉树叶节点图像块经多类型树划分得到,如果MaxMttDepth不等于0,则从所述码流获得所述MinQtSizeY的底为2的对数与MaxBtSizeY的底为2的对数之间的差值的语法元素。
13.一种非易失性可读存储介质,其特征在于,包括包含计算机程序指令的码流,所述计算机程序指令由一个或多个处理器执行时,使得解码器执行如权利要求1至7任一项所述的解码方法。
CN202210879998.1A 2018-09-03 2019-09-03 一种对码流进行解码的方法、装置以及存储码流的设备 Active CN116208767B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210879998.1A CN116208767B (zh) 2018-09-03 2019-09-03 一种对码流进行解码的方法、装置以及存储码流的设备

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201862726423P 2018-09-03 2018-09-03
US62/726,423 2018-09-03
US201862733053P 2018-09-18 2018-09-18
US62/733,053 2018-09-18
US201962818996P 2019-03-15 2019-03-15
US62/818,996 2019-03-15
CN201980057718.5A CN112673626B (zh) 2018-09-03 2019-09-03 各分割约束元素之间的关系
PCT/CN2019/104260 WO2020048466A1 (en) 2018-09-03 2019-09-03 Relation between partition constraint elements
CN202210879998.1A CN116208767B (zh) 2018-09-03 2019-09-03 一种对码流进行解码的方法、装置以及存储码流的设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201980057718.5A Division CN112673626B (zh) 2018-09-03 2019-09-03 各分割约束元素之间的关系

Publications (2)

Publication Number Publication Date
CN116208767A true CN116208767A (zh) 2023-06-02
CN116208767B CN116208767B (zh) 2023-11-28

Family

ID=69722985

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201980057718.5A Active CN112673626B (zh) 2018-09-03 2019-09-03 各分割约束元素之间的关系
CN202210879998.1A Active CN116208767B (zh) 2018-09-03 2019-09-03 一种对码流进行解码的方法、装置以及存储码流的设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201980057718.5A Active CN112673626B (zh) 2018-09-03 2019-09-03 各分割约束元素之间的关系

Country Status (11)

Country Link
US (2) US11477494B2 (zh)
EP (1) EP3808081A4 (zh)
JP (2) JP7286757B2 (zh)
KR (2) KR20230054917A (zh)
CN (2) CN112673626B (zh)
AU (1) AU2019334017B2 (zh)
BR (1) BR112021003999A2 (zh)
CA (1) CA3111043C (zh)
MX (1) MX2021002284A (zh)
WO (1) WO2020048466A1 (zh)
ZA (1) ZA202101704B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113273197A (zh) * 2019-02-03 2021-08-17 北京字节跳动网络技术有限公司 视频块分割模式的信令通知
US11496774B2 (en) * 2019-08-27 2022-11-08 Tencent America LLC Header syntax for QT/BT/TT size
US11399195B2 (en) * 2019-10-30 2022-07-26 Tencent America LLC Range of minimum coding block size in video coding
FI4044599T3 (fi) * 2019-11-05 2024-03-25 Lg Electronics Inc Kuva/videokoodausmenetelmä ja -laite
WO2021207055A1 (en) 2020-04-05 2021-10-14 Bytedance Inc. High level control of filtering in video coding
WO2023236775A1 (en) * 2022-06-06 2023-12-14 Mediatek Inc. Adaptive coding image and video data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170208336A1 (en) * 2016-01-15 2017-07-20 Qualcomm Incorporated Multi-type-tree framework for video coding
CN107566848A (zh) * 2016-06-30 2018-01-09 华为技术有限公司 编解码的方法及装置
TW201813386A (zh) * 2016-09-07 2018-04-01 美商高通公司 用於視訊寫碼之樹型寫碼
WO2018064948A1 (en) * 2016-10-04 2018-04-12 Mediatek Inc. Method and apparatus for intra chroma coding in image and video coding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8761245B2 (en) 2010-12-21 2014-06-24 Intel Corporation Content adaptive motion compensation filtering for high efficiency video coding
TWI638564B (zh) 2011-12-21 2018-10-11 Jvc建伍股份有限公司 Dynamic image decoding device, dynamic image decoding method, and recording medium recorded with dynamic image decoding program
US20140254661A1 (en) * 2013-03-08 2014-09-11 Samsung Electronics Co., Ltd. Method and apparatus for applying secondary transforms on enhancement-layer residuals
WO2016074147A1 (en) * 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
WO2016090568A1 (en) 2014-12-10 2016-06-16 Mediatek Singapore Pte. Ltd. Binary tree block partitioning structure
WO2017008263A1 (en) 2015-07-15 2017-01-19 Mediatek Singapore Pte. Ltd. Conditional binary tree block partitioning structure
MX2021012481A (es) 2016-03-16 2022-05-30 Hfi Innovation Inc Metodo y aparato de procesamiento de datos de video con tama?o restringido de bloque en codificacion de video.
JP7173961B2 (ja) 2016-08-21 2022-11-16 エルジー エレクトロニクス インコーポレイティド 映像符号化/復号化方法及びそのための装置
JP2018085660A (ja) 2016-11-25 2018-05-31 キヤノン株式会社 画像符号化装置
US10560723B2 (en) * 2017-05-08 2020-02-11 Qualcomm Incorporated Context modeling for transform coefficient coding
US10911757B2 (en) * 2017-09-08 2021-02-02 Mediatek Inc. Methods and apparatuses of processing pictures in an image or video coding system
CN111819851A (zh) * 2018-01-30 2020-10-23 夏普株式会社 用于使用预测运动向量起点对视频编码执行运动向量预测的系统和方法
WO2019194147A1 (en) * 2018-04-02 2019-10-10 Sharp Kabushiki Kaisha Systems and methods for deriving quantization parameters for video blocks in video coding
CN112204967A (zh) * 2018-05-31 2021-01-08 夏普株式会社 用于划分视频数据的帧间预测片段中的视频块的系统和方法
WO2020004987A1 (ko) * 2018-06-27 2020-01-02 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170208336A1 (en) * 2016-01-15 2017-07-20 Qualcomm Incorporated Multi-type-tree framework for video coding
CN108464001A (zh) * 2016-01-15 2018-08-28 高通股份有限公司 用于视频译码的多类型树框架
CN107566848A (zh) * 2016-06-30 2018-01-09 华为技术有限公司 编解码的方法及装置
TW201813386A (zh) * 2016-09-07 2018-04-01 美商高通公司 用於視訊寫碼之樹型寫碼
WO2018064948A1 (en) * 2016-10-04 2018-04-12 Mediatek Inc. Method and apparatus for intra chroma coding in image and video coding

Also Published As

Publication number Publication date
CA3111043C (en) 2023-08-15
JP2023111927A (ja) 2023-08-10
EP3808081A1 (en) 2021-04-21
CN116208767B (zh) 2023-11-28
WO2020048466A1 (en) 2020-03-12
AU2023202264A1 (en) 2023-05-04
US11910027B2 (en) 2024-02-20
CN112673626B (zh) 2024-04-26
EP3808081A4 (en) 2021-07-21
JP7286757B2 (ja) 2023-06-05
MX2021002284A (es) 2021-05-27
AU2019334017B2 (en) 2023-01-12
BR112021003999A2 (pt) 2021-05-25
ZA202101704B (en) 2022-04-28
US11477494B2 (en) 2022-10-18
JP2021535645A (ja) 2021-12-16
AU2019334017A1 (en) 2021-04-08
CA3111043A1 (en) 2020-03-12
KR102525179B1 (ko) 2023-04-21
US20230171437A1 (en) 2023-06-01
CN112673626A (zh) 2021-04-16
KR20210024114A (ko) 2021-03-04
US20210258618A1 (en) 2021-08-19
KR20230054917A (ko) 2023-04-25

Similar Documents

Publication Publication Date Title
CN116208767B (zh) 一种对码流进行解码的方法、装置以及存储码流的设备
CN113748677A (zh) 编码器、解码器及对应的帧内预测方法
CN112690000A (zh) 用于进行反量化的装置和方法
CN112868232B (zh) 使用插值滤波器进行帧内预测的方法和装置
CN115209153B (zh) 编码器、解码器及对应方法
CN113597761A (zh) 帧内预测方法和装置
CN114450958B (zh) 用于减小增强插值滤波器的内存带宽的仿射运动模型限制
CN113660489B (zh) 用于帧内子划分的解码方法、装置、解码器和存储介质
CN116567207B (zh) 用于帧内预测的方法和装置
CN115349257B (zh) 基于dct的内插滤波器的使用
CN114679583B (zh) 视频编码器、视频解码器及对应方法
CN114946181A (zh) 用于视频译码的参考图像管理方法
CN114586362A (zh) 色度量化参数指示方法和装置
CN113228632B (zh) 用于局部亮度补偿的编码器、解码器、以及对应方法
CN113692740B (zh) 用于无除法帧内预测的方法和装置
CN114930834A (zh) 编码器、解码器及灵活档次配置的对应方法
CN115278227A (zh) 一种由解码设备或编码设备实现的译码方法,编码器和解码器
CN114900702B (zh) 降低平面模式的帧内预测的复杂度的编解码器和对应方法
CN116489389B (zh) 编码器、解码器及对应方法
CN114424554B (zh) 色度qp偏移表指示和推导的方法和装置
CN114503593B (zh) 编码器、解码器及对应方法
CN114830654A (zh) 译码块分割限制推导的编码器、解码器和对应方法
CN115211109A (zh) 对通用帧内预测过程的滤波器修改的编码器、解码器及相应方法
CN113330741A (zh) 从帧内子划分译码模式工具限制子分区的尺寸的编码器、解码器、及对应方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant