对环路内滤波的限制
阅读说明:本技术 对环路内滤波的限制 (Limiting in-loop filtering ) 是由 张莉 张凯 刘鸿彬 许继征 王悦 于 2020-03-02 设计创作,主要内容包括:用于数字视频编解码的设备、系统和方法,包括:在应用子块变换的情况下,确定样点是否位于子块变换边界;如果确定样点位于子块变换边界,则应用去方块滤波处理;以及执行视频和视频的比特流表示之间的转换。(Apparatus, systems, and methods for digital video encoding and decoding, comprising: determining whether a sampling point is located at a sub-block transform boundary in case of applying the sub-block transform; if the sampling point is determined to be positioned at the sub-block transformation boundary, the deblocking filtering processing is applied; and performing a conversion between the video and a bitstream representation of the video.)
相关申请的交叉引用
本申请要求于2019年3月2日提交的题为“对分割结构的限制”的PCT/CN2019/076785的优先权。出于所有目的,前述申请的全部公开内容通过引用而并入,作为本申请的公开内容的一部分。
技术领域
本专利文件涉及视频编解码技术、设备和系统。
背景技术
目前,正在努力提高当前视频编解码器技术的性能,以提供更好的压缩比或提供允许更低复杂性或并行实施方式的视频编码和解码方案。行业专家最近提出了几种新的视频编解码工具,目前正在进行测试以确定其有效性。
发明内容
描述了涉及数字视频编解码,并且具体地,涉及推导运动矢量的设备、系统和方法。所描述的方法可以应用于现有的视频编解码标准(例如,高效视频编解码(highefficiency video coding,HEVC)或多功能视频编解码)以及未来的视频编解码标准或视频编解码器。
在一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括至少部分地基于虚拟流水线数据单元(virtual pipeline data unit,VPDU)尺寸来确定与分割树相关联的分割类型对于视频块是允许的还是不允许的,其中VPDU尺寸包括VPDU高度和VPDU宽度,其中,响应于不允许分割类型,在比特流中不存在该分割类型的指示。
在另一个代表性方面,所公开的技术可以用于提供另一种用于视频处理的方法。该方法包括至少部分地基于最大允许的子块变换尺寸来确定与分割树相关联的分割类型对于视频块是允许的还是不允许的,其中最大允许的子块变换尺寸包括最大允许的子块变换高度和最大允许的子块变换宽度,其中响应于不允许分割类型,在比特流中不存在该分割类型的指示。
在又一个代表性方面,所公开的技术可以用于提供又一种用于视频处理的方法。该方法包括至少部分地基于最大允许的变换尺寸和虚拟流水线数据单元(VPDU)尺寸,或者至少部分地基于最大允许的子块变换尺寸和虚拟流水线数据单元(VPDU)尺寸,来确定与分割树相关联的分割类型对于视频块是允许的还是不允许的,其中VPDU尺寸包括VPDU高度和VPDU宽度,其中最大允许的变换尺寸包括最大允许的变换高度和最大允许的变换宽度,其中,响应于不允许分割类型,在比特流中不存在该分割类型的指示。
在又一个代表性方面,所公开的技术可以用于提供又一种用于视频处理的方法。该方法包括:在应用子块变换的情况下,确定样点是否位于子块变换边界;如果确定样点位于子块变换边界,则应用去方块滤波处理;以及执行视频和视频的比特流表示之间的转换。
在又一个代表性方面,所公开的技术可以用于提供又一种用于视频处理的方法。该方法包括:基于是否应用子块变换来确定如何对视频块应用滤波处理;基于该确定来执行滤波处理;以及执行视频块和视频的比特流表示之间的转换。
此外,在一个代表性方面,公开了一种视频解码装置,包括被配置为实施任何一种或多种所公开的方法的处理器。
此外,在一个代表性方面,公开了一种视频编码装置,包括被配置为实施任何一种或多种所公开的方法的处理器。
此外,在一个代表性方面,公开了一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器。该指示在由处理器执行时,使得处理器实施任何一种或多种所公开的方法。
此外,公开了一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行任何一种或多种所公开的方法的程序代码。
在附图、说明书和权利要求书中更详细地描述了所公开技术的以上和其他方面和特征。
附图说明
图1示出了宏块分割的示例。
图2示出了用于将编解码块(coding blocks,CB)划分成预测块(predictionblock,PB)的模式的示例。
图3A示出了编解码树块(coding tree block,CTB)及其分割的示例。
图3B示出了与图3A中的CTB相对应的四叉树的示例。
图4A和图4B示出了结合四叉树加二叉树(quadtree plus binary tree,QTBT)块结构的图示。
图5A-图5E示出了分割类型的示例。
图6示出了子块变换模式的示例。
图7是用于实施本文中描述的视觉媒体解码或视觉媒体编码技术的硬件平台的示例的框图。
图8示出了用于视频编解码的示例方法的流程图。
图9示出了用于视频编解码的示例方法的流程图。
图10示出了用于视频编解码的示例方法的流程图。
图11示出了用于视频编解码的示例方法的流程图。
图12示出了用于视频编解码的示例方法的流程图。
图13示出了用于视频编解码的示例方法的流程图。
具体实施方式
1.H.264/AVC中的视频编解码
视频编解码标准主要是通过众所周知的ITU-T和ISO/IEC标准的发展而演变的。ITU-T制定了H.261和H.263,ISO/IEC制定了MPEG-1和MPEG-4可视化,并且这两个组织联合制定了H.262/MPEG-2视频和H.264/MPEG-4高级视频编解码(Advanced Video Coding,AVC)和H.265/HEVC标准。自H.262以来,视频编解码标准是基于混合视频编解码结构,其中利用了时域预测加变换编解码。为了探索HEVC以外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(Joint Video Exploration Team,JVET)。此后,JVET采用了许多新方法,并将其输入到称为联合探索模型(Joint Exploration Model,JEM)的参考软件中。2018年4月,创建了VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间的联合视频专家团队(JVET),致力于VVC标准,目标是与HEVC相比,比特率降低50%。
VVC草案的最新版本,即多功能视频编解码(草案4)可以在以下网址找到:http://phenix.it-sudparis.eu/jvet/doc_end_user/current_document.php?id=5755。VVC的最新参考软件,名为VTM,可以在以下网址找到:https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-3.1。
2.1H.264/AVC中的分割树结构
H.264/AVS中使用的术语是宏块和MB模式/8×8模式(分割)。宏块是其中每个图片/条带被划分并且应用了帧内/帧间模式决策的单元。分割定义了其中运动信息被信令通知的级别。
H.264/AVC中的编解码层依赖于宏块,该宏块包括16×16亮度样点块,并且在4:2:0颜色采样的通常情况下,包括两个对应的8×8色度样点块。
2.1.1H.264/AVC主档次
在该档次中,帧内编解码块使用空域预测来利用像素之间的空域相关性。定义了两个分割:16×16和4×4。
帧间编解码块通过估计图片间的运动来使用时域预测,而不是空域预测。对于16×16宏块或其任何宏块分割:16×8、8×16、8×8,可以被独立地估计运动。信令通知语法元素(MB模式)来指示是选择16×16、16×8、8×16还是8×8。如果选择了8×8,则进一步信令通知另一语法元素(8×8模式)以指示是否使用了8×8、8×4、4×8、4×4(例如,如图1所示)。每个分割只允许一个运动矢量(motion vector,MV)。
只使用了4×4变换。
2.1.2 H.264/AVC高档次
在高档次中,引入了8×8变换和I_8×8(8×8帧内预测)。对于帧内编解码宏块,变换尺寸是固定的。I_16×16和I_4×4使用4×4变换;I_8×8使用8×8变换。
对于帧间编解码宏块,可以选择4×4或8×8变换。然而,变换尺寸不能超过分割尺寸。例如,如果一个宏块选择8×8分割,并且还选择8×4子模式,则只能应用4×4变换。如果一个宏块选择16×16、16×8、8×16、8×8分割和8×8子模式,则可以选择4×4或8×8变换。
2.1.3总结
模式选择在宏块级别决定。变换尺寸不得大于分割尺寸。
2.2 HEVC中的分割树结构
在HEVC中,通过使用表示为编解码树的四叉树结构将编解码树单元(coding treeunit,CTU),最大编解码单元(largest coding unit,LCU)划分成编解码单元(codingunit,CU),以适应各种本地特性。在CU级别做出是使用图片间(时域)还是图片内(空域)预测来编解码图片区域的决策。根据PU划分类型,每个CU可以进一步划分成一个、两个或四个PU。在一个PU内,应用相同的预测过程,并且相关信息在PU的基础上被传输到解码器。在通过应用基于PU划分类型的预测过程获得残差块之后,可以根据类似于CU的编解码树的另一个四叉树结构将CU分割成变换单元(transform unit,TU)。HEVC结构的重要特征中的一个是它具有多重分割概念,包括CU、PU和TU。
在下文中,使用HEVC的混合视频编解码中涉及的各种特征被强调如下。
1)编解码树单元和编解码树块(coding tree block,CTB)结构:HEVC中的相似结构是编解码树单元(CTU),其具有由编码器选择的尺寸,并且可以大于传统的宏块。CTU包括亮度CTB和对应的色度CTB和语法元素。亮度CTB的尺寸L×L可以选择为L=16、32或64个样点,其中较大的尺寸通常使能更好的压缩。然后,HEVC支持使用树形结构和像四叉树的信令将CTB分割成更小的块。
2)编解码单元(CU)和编解码块(CB):CTU的四叉树语法规定其亮度CB和色度CB的尺寸和位置。四叉树的根与CTU相关联。因此,亮度CTB的尺寸是亮度CB的最大支持尺寸。将CTU分割成亮度CB和色度CB被联合地信令通知。一个亮度CB和一般两个色度CB,连同相关联的语法,形成一个编解码单元(CU)。CTB可以仅包含一个CU或者可以被划分以形成多个CU,并且每个CU相关联地分割成预测单元(PU)和变换单元(TU)的树。
3)预测单元(PU)和预测块(PB):在CU级别做出是使用图片间还是图片内预测来编解码图片区域的决策。PU分割结构的根在CU级别。取决于基本的预测类型决策,亮度CB和色度CB可以进一步在尺寸上进行划分,并从预测块(PB)亮度和色度预测块(PB)进行预测。HEVC支持从64×64到4×4样点的可变PB尺寸。图2示出了被允许的PB。
4)变换单元(TU)和变换块(TB):使用块变换对预测残差进行编解码。TU树结构的根在CU级别。亮度CB残差可以与亮度变换块(TB)相同,或者可以进一步划分成更小的亮度TB。这同样适用于色度TB。对于尺寸为4×4、8×8、16×16和32×32的正方形TB,定义了类似于离散余弦变换(discrete cosine transform,DCT)的整数基函数。对于亮度图片内预测残差的4×4变换,可选地规定从离散正弦变换(discrete sine transform,DST)的形式推导的整数变换。
2.2.1四叉树的深度
对于尺寸为M×M的给定亮度CB,标志信令通知它是否被划分成尺寸为M/2×M/2的四个块。如果可以进一步划分,如由SPS中指示的残差四叉树的最大深度所信令通知的,每个象限被分配一个标志,该标志指示它是否被划分为四个象限。由残差四叉树导致的叶节点块是通过变换编解码进一步处理的变换块。编码器指示它可以使用的最大和最小亮度TB尺寸。当CB尺寸大于最大TB尺寸时,划分是隐含的。当划分会导致亮度TB尺寸小于所指示的最小值时,不划分是隐含的。色度TB尺寸在每个维度中是亮度TB尺寸的一半,除了亮度TB尺寸为4×4的情况,在这种情况下,单个4×4色度TB用于由4个4×4亮度TB覆盖的区域。在图片内预测的CU的情况下,最近邻的TB(在CB内或外)的解码样点被用作图片内预测的参考数据。
2.2.2总结
基于增加的四叉树深度,一个CTU可以被递归地划分成多个CU。如图3A和3B所示,仅规定了正方形CB和TB分割,其中块可以被递归地划分成象限。
模式选择在CU级别决定。根据所选模式的边信息(side information)(诸如运动信息、帧内预测模式)在PU级别信令通知。残差在TU级别信令通知。
对于帧间编解码块,一个PU不得大于CU,并且对于帧内编解码块,一个PU等于CU。
对于帧间编解码块,TU可以超过PU,但是对于帧内编解码块,TU等于PU。
2.3在JEM中具有较大CTU的四叉树加二叉树块结构
为了探索HEVC以外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索团队(JVET)。此后,JVET采用了许多新方法,并将其输入到称为联合探索模型(JEM)的参考软件中。
2.3.1四叉树加二叉树(QTBT)块分割结构
与HEVC不同,QTBT结构移除了多重分割类型的概念,即它移除了CU、PU和TU概念的分离,并支持CU分割形状的更大灵活性。在QTBT块结构中,CU可以是正方形或矩形。如图5A-图5E所示,编解码树单元(CTU)首先通过四叉树结构分割。四叉树叶节点通过二叉树结构进一步分割。在二叉树划分中存在两种划分类型,对称水平划分和对称垂直划分。二叉树叶节点被称为编解码单元(CU),并且该分割被用于预测和变换过程,而无需任何进一步的分割。这意味着在QTBT编解码块结构中,CU、PU和TU具有相同的块尺寸。在JEM,CU有时包括不同颜色分量的编解码块(CB),例如,在4:2:0色度格式的P条带和B条带的情况下,一个CU包含一个亮度CB和两个色度CB,并且一个CU有时包括单个分量的CB,例如,在I条带的情况下,一个CU仅包含一个亮度CB,或者仅包含两个色度CB。
对于QTBT分割方案,定义了以下参数。
–CTU尺寸:四叉树的根节点尺寸(例如,与HEVC中的概念相同)
–MinQTSize:最小允许的四叉树叶节点尺寸
–MaxBTSize:最大允许的二叉树根节点尺寸
–MaxBTDepth:最大允许的二叉树深度
–MinBTSize:最小允许的二叉树叶节点尺寸
在QTBT分割结构的一个示例中,CTU尺寸被设置为128×128亮度样点,并且具有两个对应的64×64色度样点块,MinQTSize被设置为16×16,MaxBTSize被设置为64×64,MinBTSize(对于宽度和高度两者)被设置为4×4,并且MaxBTDepth被设置为4。四叉树分割首先应用于CTU以生成四叉树叶节点。四叉树叶节点可以具有从16×16(即,MinQTSize)到128×128(即,CTU尺寸)的尺寸。如果叶四叉树节点是128×128,它将不会由二叉树进一步划分,因为它的尺寸超过了MaxBTSize(即,64×64)。否则的话,叶四叉树节点可以由二叉树进一步分割。因此,四叉树叶节点也是二叉树的根节点,并且它的二叉树深度为0。当二叉树深度达到MaxBTDepth(即4)时,不再考虑进一步的划分。当二叉树节点的宽度等于MinBTSize(即4)时,不再考虑进一步的水平划分。类似地,当二叉树节点的高度等于MinBTSize时,不再考虑进一步的垂直划分。二叉树的叶节点通过预测和变换过程被进一步处理,无需任何进一步的分割。在JEM,最大CTU尺寸为256×256亮度样点。
图4A示出了使用QTBT进行块分割的示例,并且图4B示出了对应的树表示。实线指示四叉树划分,并且虚线指示二叉树划分。在二叉树的每个划分(即,非叶)节点中,信令通知一个标志来指示使用哪种划分类型(即,水平或垂直),其中0指示水平划分,并且1指示垂直划分。对于四叉树划分,不需要指示划分类型,因为四叉树划分总是水平和垂直地划分块,以产生4个尺寸相等的子块。
此外,QTBT方案支持亮度和色度具有分离的QTBT结构的能力。目前,对于P条带和B条带,一个CTU中的亮度CTB和色度CTB共享相同的QTBT结构。然而,对于I条带,亮度CTB通过QTBT结构被分割成CU,并且色度CTB通过另一QTBT结构被分割成色度CU。这意味着,I条带中的CU包括亮度分量的编解码块或两个色度分量的编解码块,并且P条带或B条带中的CU包括所有三种颜色分量的编解码块。
在HEVC中,小块的帧间预测被限制以减少运动补偿的存储器访问,诸如4×8和8×4块不支持双向预测,以及4×4块不支持帧间预测。在JEM的QTBT中,这些限制被移除了。
2.3.2 QTBT的总结
基于增加的四叉树或二叉树的深度,一个CTU可以被递归地划分成多个CU。规定了正方形和矩形CB(其宽度/高度等于1/2或2)。
模式选择在CU级别决定。PU和TU总是等于CU。
2.4 VVC的多类型树
2.4.1提议
按照提议,支持除了四叉树和二叉树以外的树类型。在该实施方式中,如图5D和图5E所示,引入了另外两种三叉树(ternary tree,TT)分割,即水平和垂直中心侧三叉树。
存在两种级别(level)的树,区域树(四叉树)和预测树(二叉树或三叉树)。首先通过区域树(region tree,RT)分割CTU。可以用预测树(prediction tree,PT)来进一步划分RT叶。还可以用PT进一步划分PT叶,直到达到最大PT深度。PT叶是基本的编解码单元。为了方便起见,它仍被称为CU。CU不能被进一步划分。预测和变换都以与JEM相同的方式应用于CU。整个分割结构被命名为“多类型树”。
2.4.2 VVC中的分割树
在VVC中定义/信令通知了几个语法元素,以指示不同分割树的使用。
例如:
–具有偏移的最大多类型树深度maxMttDepth,
–最大二叉树尺寸maxBtSize
–MinBtSizeY
–最大二叉树尺寸maxBtSize
–最大三叉树尺寸maxTtSize
2.4.2.1 BT和TT的使用限制
2.4.2.1.1变量定义
log2_ctu_size_minus2,log2_min_luma_coding_block_size_minus2可以在SPS中信令通知。
log2_ctu_size_minus2加2指定每个CTU的亮度编解码树块尺寸。
log2_min_luma_coding_block_size_minus2加2指定最小亮度编解码块尺寸。
变量CtbLog2SizeY、CtbSizeY、MinCbLog2SizeY、MinCbSizeY、MinTbLog2SizeY、MaxTbLog2SizeY、MinTbSizeY、MaxTbSizeY、PicWidthInCtbsY、PicHeightInCtbsY、PicSizeInCtbsY、PicWidthInMinCbsY、PicHeightInMinCbsY、PicSizeInMinCbsY、PicSizeInSamplesY、PicWidthInSamplesC和PicHeightInSamplesC推导如下:
CtbLog2SizeY=log2_ctu_size_minus2+2
CtbSizeY=1<<CtbLog2SizeY
MinCbLog2SizeY=log2_min_luma_coding_block_size_minus2+2
MinCbSizeY=1<<MinCbLog2SizeY
MinTbLog2SizeY=2
MaxTbLog2SizeY=6
MinTbSizeY=1<<MinTbLog2SizeY
MaxTbSizeY=1<<MaxTbLog2SizeY
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
2.4.2.1.2允许的二元划分过程
对该过程的输入是:
–二元划分模式btSplit,
–编解码块宽度cbWidth,
–编解码块高度cbHeight,
–所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0),
–多类型树深度mttDepth,
–具有偏移的最大多类型树深度maxMttDepth,
–最大二叉树尺寸maxBtSize,
–分割索引partIdx。
该过程的输出是变量allowBtSplit。
表1基于btSplit的parallelTtSplit和cbSize的规范。
按照表1中所规定的,推导变量parallelTtSplit和cbSize。
对于不同的实施例,变量allowBtSplit(例如,采用布尔真或假值的划分变量)可以根据或基于不同的条件。使用这些条件,该变量的值可以如下推导:
–如果以下的一个或多个条件为真,则allowBtSplit设置为等于FALSE:
//根据允许的BT块尺寸和最大允许的MTT深度条件
–cbSize小于或等于MinBtSizeY
–cbWidth大于maxBtSize
–cbHeight大于maxBtSize
–mttDepth大于或等于maxMttDepth
–否则,如果以下所有条件都为真,则allowBtSplit设置为等于FALSE
//根据图片边界(底部图片边界和底部右侧图片边界没有垂直BT)条件
–btSplit等于SPLIT_BT_VER
–y0+cbHeight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit设置为等于FALSE
//根据画面边界(底部右侧图片边界没有水平BT)条件
–btSplit等于SPLIT_BT_HOR
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight小于或等于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit设置为等于FALSE:
//根据父TT划分方向(例如,对于垂直TT,中间分割没有垂直BT;对于水平TT,中间分割没有水平BT)条件,决定TT分割索引1(中间分割)
–mttDepth大于0
–partIdx等于1
–MttSplitMode[x0][y0][mttDepth-1]等于parallelTtSplit
–否则,如果以下所有条件都为真,则allowBtSplit设置为等于FALSE
//根据最大允许的变换尺寸(例如,当MaxTbSizeY等于64时,对于64×128,没有垂直BT;对于128×64,没有水平BT)条件
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于MaxTbSizeY
–cbHeight大于MaxTbSizeY
–否则,如果以下所有条件都为真,则allowBtSplit设置为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于MaxTbSizeY
–cbHeight小于或等于MaxTbSizeY
–否则,allowBtSplit设置为等于TRUE。
2.4.2.1.3允许的三元划分过程
对该过程的输入是:
–三元划分模式ttSplit,
–编解码块宽度cbWidth,
–编解码块高度cbHeight,
–所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0),
–多类型树深度mttDepth,
–具有偏移的最大多类型树深度maxMttDepth,
–最大二叉树尺寸maxTtSize。
该过程的输出是划分变量allowTtSplit(例如,它取布尔真或假值)。划分变量allowTtSplit的值可以根据或基于不同的条件。使用这些条件,该变量的值可以如下推导出:
表2基于ttSplit的cbSize的规范
如表2中所规定的,推导出变量cbSize。
变量allowTtSplit推导如下:
–如果以下一个或多个条件为真,则allowTtSplit设置为等于FALSE:
//根据允许的TT块尺寸和最大允许的变换尺寸条件
–cbsize小于或等于2*MinTtSizeY
–cbWidth大于Min(MaxTbSizeY,maxTtSize)
–cbheight大于Min(MaxTbSizeY,maxTtSize)
//根据最大允许的MTT深度条件
–mttDepth大于或等于maxMttDepth
//根据它是否位于图片边界条件
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–否则,allowTtSplit设置为等于TRUE。
2.4.2.1.4语义
VVC规范子条款7.4.5.5多类型树语义
变量allowSplitBtVer、allowSpliBtHor、allowSplitTtVer、allowSplitTtHor的推导如下:
–变量maxBtSize、maxTtSize和maxMttDepth的推导如下:
–如果treeType等于DUAL_TREE_CHROMA,则maxBtSize、maxTtSize和maxMttDepth分别被设置为等于MaxBtSizeC、MaxTtSizeC和MaxMttDepthC+depthOffset。
–否则,maxBtSize、maxTtSize和maxMttDepth分别被设置为等于MaxBtSizeY、MaxTtSizeY和MaxMttDepthY+depthOffset。
–如条款2.4.2.1.1中规定的,所允许的二元划分过程是以二元划分模式SPLIT_BT_VER、编解码块宽度cbWidth、编解码块高度cbHeight、位置(x0,y0)、当前多类型树深度mttDepth、具有偏移的最大多类型树深度maxMttDepth、最大二叉树尺寸maxBtSize和当前分割索引partIdx作为输入来调用的,并且输出被分配给allowSplitBtVer。
–如条款2.4.2.1.1中规定的,所允许的二元划分过程是以二元划分模式SPLIT_BT_HOR、编解码块高度cbHeight、编解码块宽度cbWidth、位置(x0,y0)、当前多类型树深度mttDepth、具有偏移的最大多类型树深度maxMttDepth、最大二叉树尺寸maxBtSize和当前分割索引partIdx作为输入来调用的,并且输出被分配给allowSplitBtHor。
–如条款2.4.2.1.3中规定的,所允许的三元划分过程是以三元划分模式SPLIT_TT_VER、编解码块宽度cbWidth、编解码块高度cbHeight、位置(x0,y0)、当前多类型树深度mttDepth、具有偏移的最大多类型树深度maxMttDepth和最大三叉树尺寸maxTtSize作为输入来调用的,并将输出分配给allowSplitTtVer。
–如条款2.4.2.1.3中规定的,所允许的三元划分过程是以三元划分模式SPLIT_TT_HOR、编解码块高度cbHeight、编解码块宽度cbWidth、位置(x0,y0)、当前多类型树深度mttDepth、具有偏移的最大多类型树深度maxMttDepth和最大三叉树尺寸maxTtSize作为输入来调用的,并将输出分配给allowSplitTtHor。
2.4.3.子块变换
对于cu_cbf等于1的帧间预测CU,可以信令通知cu_sbt_flag来指示是解码整个残差块还是残差块的子部分。在前一种情况下,进一步解析帧间多重变换选择(MTS,又名,EMT)信息以确定CU的变换类型。在后一种情况下,残差块的一部分用推断的自适应变换来进行编解码,并且残差块的另一部分被清零。
2.4.3.1.子块TU拼接
当SBT用于帧间CU时,SBT类型和SBT位置信息被进一步从比特流解码。如图6所示,有两种SBT类型和两种SBT位置。对于SBT-V(或SBT-H),TU宽度(或高度)可以等于CU宽度(或高度)的一半或CU宽度(或高度)的1/4,由另一个标志信令通知,导致2:2划分或1:3/3:1划分。2:2划分类似于二叉树(BT)划分,而1:3/3:1划分类似于非对称二叉树(ABT)划分。如果亮度样点中CU的一侧为8,则不允许沿该侧进行1:3/3:1划分。因此,对于CU最多有8种SBT模式。
对于宽度和高度两者都不大于maxSbtSize的CU而言,SBT-V和SBT-H是被允许的。在SPS中信令通知maxSbtSize。对于HD和4K序列,编码器将maxSbtSize设置为64;对于其他较小分辨率序列,maxSbtSize设置为32。
2.5.子块的变换类型
在JVET-M0140中,位置相关变换应用于SBT-V和SBT-H中的亮度变换块(色度TB始终使用DCT-2)。SBT-H和SBT-V的两个位置与不同的核心变换相关联。更具体地,图1中指定了每个SBT位置的水平和垂直变换。例如,SBT-V位置0的水平和垂直变换分别是DCT-8和DST-7。当残差TU的一侧大于32时,相应的变换被设置为DCT-2。因此,子块变换联合指定了残差块的TU拼接、cbf以及水平和垂直变换,对于块的主要残差部分在块的一侧的情况,这可以被认为是语法快捷方式。
对于帧间块,从SBT采用部分的总结:
-1-d划分(对称或1/4)
-如果对称,信令通知哪一半;其他使用1/4
-推断的残差TU的变换类型
3.问题
分割树限制的当前设计是基于全块变换和通用测试条件的假设。它可能有以下问题:
i.是否根据一个分割结构启用或禁用划分取决于最大允许的变换尺寸。启用/禁用一个分割结构的动机主要是由于硬件实施方式的考虑,即较大的块(诸如128×128)很难实施。在多功能视频编解码(VVC)中,使用了VPDU(virtual pipeline data unit,虚拟流水线数据单元)的概念,其中定义了用于运动补偿的最大允许块。在当前常见的测试条件下,VPDU尺寸等于最大允许的变换尺寸。然而,最大允许的变换尺寸在高级语法元素(诸如,序列参数)中自适应地信令通知。
ii.假设最大允许的变换尺寸是64×64,如果一个编解码块是64×128,则不允许垂直BT。然而,由于采用了子块变换,在子块变换尺寸设置为32×64的情况下,仍然可以应用垂直BT。
iii.如何处理用子块变换编解码的块的边界还没有在本领域中解决。
4.示例技术和实施例
下面描述的详细实施例应该被认为是解释一般概念的示例。这些实施例不应被狭义地解释。此外,这些实施例可以以任何方式组合。
1.代替使用最大允许的变换尺寸,提出是否允许一个分割树可以取决于VPDU尺寸。
a.在一个示例中,如果块宽度不大于VPDU宽度并且块高度大于VPDU高度,则不允许垂直BT。
b.在一个示例中,如果块宽度大于VPDU宽度并且块高度不大于VPDU高度,则不允许水平BT。
c.类似地,对于TT划分,如果以下条件中的一个(或一些\或全部)为真,则它可能不被允许:
–cbSize小于或等于2*MinTtSizeY
–cbWidth大于Min(VPDUSizeX,maxTtSize)
–cbHeight大于Min(VPDUSizeY,maxTtSize)
其中MinTtSizeY和maxTtSize分别表示最小和最大允许的TT尺寸;cbWidth和cbHeight分别表示编解码块的宽度和高度,VPDUSizeX和VPDUSizeY分别表示VPDU的宽度和高度。
d.在一个示例中,VPDU高度等于VPDU宽度。
i.在一个示例中,VPDU高度和宽度中的仅一个从编码器信令通知到解码器。另一个则被设置为等于被信令通知的那一个。
ii.在可替换的示例中,VPDU高度可以不等于VPDU宽度。
a)在一个示例中,VPDU的高度和宽度两者都从编码器信令通知到解码器。
2.代替使用最大允许的变换尺寸,提出是否允许一个分割树可以取决于分割树的最大允许的子块变换尺寸。
a.在一个示例中,即使块宽度不大于最大允许的变换宽度并且块高度大于最大允许的变换高度,也可以允许垂直BT。
i.可替换地,此外,子块变换可以应用于上述情况,即,变换被应用于由于垂直BT产生的子块的部分。
ii.在一个示例中,如果块宽度不大于最大允许的变换宽度并且块高度大于最大允许的变换高度,但是由于垂直BT划分产生的子块支持至少一个子块变换尺寸,则可以允许垂直BT。
iii.在一个示例中,如果块宽度不大于最大允许的变换宽度并且块高度大于最大允许的变换高度,但是块高度不大于最大允许的子块变换高度,则可以允许垂直BT。
iv.可替换地,此外,如果块宽度不大于最大允许的子块变换宽度,并且块高度大于最大允许的子块变换高度,则可以不允许垂直BT。
a)在一个示例中,指定的最大允许子块变换宽度/高度是针对垂直BT(V-BT)的。
v.在一个示例中,V-BT的最大允许子块变换宽度可以被定义为最大允许变换宽度的一半或四分之一。
vi.在一个示例中,V-BT的最大允许子块变换高度可以被定义为最大允许变换高度的一半或四分之一,或者大于最大允许变换高度。
b.在一个示例中,即使块宽度大于最大允许变换宽度并且块高度不大于最大允许变换高度,也可以允许水平BT。
i.可替换地,此外,子块变换可以应用于上述情况,即,该变换被应用于由于垂直BT产生的子块的部分。
ii.可替换地,此外,如果块宽度大于最大允许的子块变换宽度并且块高度不大于最大允许的子块变换高度,则不允许水平BT。
a)在一个例子中,指定的最大允许子块变换宽度/高度是针对水平BT(H-BT)的。
iii.在一个示例中,V-BT的最大允许子块变换宽度可以被定义为最大允许变换宽度的一半或四分之一。
iv.在一个示例中,V-BT的最大允许子块变换高度可以被定义为最大允许变换高度的一半或四分之一。
c.在一个示例中,设置Tx=maximum{最大允许的变换宽度,最大允许的子块宽度},Ty=maximum{最大允许的变换高度,最大允许的子块高度},则提出是否允许划分可以取决于Tx和/或Ty。
i.在一个示例中,如果块宽度不大于Tx并且块高度大于Ty,则可以不允许垂直的BT。
ii.如果块宽度大于Tx并且块高度不大于Ty,则不允许水平BT。
d.可替换地,此外,当子块变换技术被启用时,诸如SPS标志为真,可以应用这样的方法。
3.是否允许一个分割树可以取决于VPDU尺寸和最大允许子块变换尺寸两者。
a.可替换地,是否允许一个分割树可以取决于VPDU尺寸和最大允许子块变换尺寸两者。
b.在一个示例中,如果块宽度不大于f(VPDU宽度,最大允许变换宽度),并且块高度大于f(VPDU高度,最大允许变换高度),则不允许垂直BT。
c.在一个示例中,如果块宽度大于f(VPDU宽度,最大允许变换宽度),并且块高度不大于f(VPDU高度,最大允许变换高度),则不允许水平BT。
d.在一个示例中,函数f(x,y)返回x和y的较大值。
e.在一个示例中,函数f(x,y)返回x和y的较小值。
f.在一个示例中,VPDU高度等于VPDU宽度。
g.在一个示例中,最大允许变换宽度等于最大允许变换高度。
4.上述VPDU尺寸(包括宽度和高度)可以预先定义,例如64×64。
a.可替换地,它可以在SPS/VPS/PPS/序列报头/图像报头/片组报头/条带报头/CTU行/区域/其他类型的视频处理数据单元中信令通知。
5.提出了如何应用滤波处理,例如去方块滤波、SAO和/或ALF可以取决于子块变换尺寸。
a.在一个示例中,子块变换的边界可以在去方块滤波处理中被滤波。
b.在一个示例中,去方块滤波的决策(诸如滤波与否、强滤波器还是弱滤波器、或者哪个滤波器或者如何对滤波后的样点应用限幅)可以取决于样点是否位于子块变换边界。
5.附加示例实施例
5.1.1.1.1允许的二元划分过程
该过程的输入:
–二元划分模式btSplit,
–编解码块宽度cbWidth,
–编解码块高度cbHeight,
–所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0),
–多类型树深度mttDepth,
–具有偏移的最大多类型树深度maxMttDepth,
–最大二叉树尺寸maxBtSi ze,
–分割索引partIdx。
该过程的输出是变量allowBtSplit(例如,取值为真或假的布尔变量)。
否则,如果以下所有条件都为真,则allowBtSplit设置为等于FALSE:
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于VPDUSizeY
–cbHeight大于VPDUSizeY
否则,如果以下所有条件都为真,则allowBtSplit设置为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于VPDUSizeY
–cbHeight小于或等于VPDUSizeY
5.1.1.1.2允许的三元划分过程
该过程的输入是:
–三元划分模式ttSplit,
–编解码块宽度cbWidth,
–编解码块高度cbHeight,
–所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0),
–多类型树深度mttDepth
–具有偏移的最大多类型树深度maxMttDepth,
–最大二叉树尺寸maxTtSize。
该过程的输出是变量allowTtSplit。
表3基于ttSplit的cbSize的规范
变量cbSize可以基于表3中规定的信息来推导。
变量allowTtSplit可以基于或根据以下各种条件来推导:
–如果以下一个或多个条件为真,则allowTtSplit设置为等于FALSE:
//根据允许的TT块尺寸和最大允许的变换尺寸条件
–cbSize小于或等于2*MinTtSizeY
–cbWidth大于Min(VPDUSizeX,maxTtSize)
–cbHeight大于Min(VPDUSizeY,maxTtSize)
//根据最大允许的MTT深度条件
–mttDepth大于或等于maxMttDepth
//根据它是否位于图片边界条件
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–否则,allowTtSplit设置为等于TRUE。
6.所公开技术的示例实施方式
图7是视频处理装置700的框图。装置700可以用于实施本文描述的一种或多种方法。装置700可以体现在智能手机、平板电脑、计算机、物联网(IOT)接收器等中。装置700可以包括一个或多个处理器702、一个或多个存储器704和视频处理硬件706。(多个)处理器702可以被配置为实施本文中描述的一种或多种方法。(多个)存储器704可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件706可以用于在硬件电路系统中实施本文中描述的一些技术,并且可以部分或完全是处理器702的一部分(例如,图形处理器核心GPU或其他信号处理电路系统)。
在本文中,术语“视频处理”可以指代视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示到相应比特流表示的转换期间应用,反之亦然。当前视频块的比特流表示可以例如对应于比特流中的共位的或分布在不同地方的比特,如语法所定义的。例如,宏块可以根据变换后和编解码后的误差残差值来编码,并且还可以使用比特流中的报头和其他字段中的比特来编码。
应当理解,通过允许使用本文中公开的技术,所公开的方法和技术将有益于包含在视频处理设备(诸如智能手机、膝上型电脑、台式机和类似设备)中的视频编码器和/或解码器实施例。
图8是视频处理的示例方法800的流程图。方法800包括,在810,计算(至少部分基于虚拟流水线数据单元(VPDU)的尺寸和分割树的一个或多个参数)与视频块相关联的划分变量的值,以用于在视觉媒体数据的视频块和视频块的相应比特流之间进行转换,其中VPDU的尺寸包括高度和宽度。方法800还包括,在820,响应于确定该划分变量的值为布尔真,允许根据分割树来划分视频块。方法800还包括,在830,响应于确定该划分变量的值为布尔假,不允许划分视频块。本文使用的术语视频块可以应用于任何形式的媒体块,包括(但不限于)编解码块、预测块、宏块等。此外,在各种实施例中,这些块可以是帧内块或帧间块。
图9是视频处理的示例方法900的流程图。方法900包括,在910,至少部分地基于虚拟流水线数据单元(VPDU)尺寸,确定与分割树相关联的分割类型对于视频块是允许的还是不允许的,其中VPDU尺寸包括VPDU高度和VPDU宽度,其中,响应于不允许分割类型,在比特流中不存在该分割类型的指示。
图10是视频处理的示例方法1000的流程图。方法1000包括,在1010,至少部分地基于最大允许的子块变换尺寸,确定与分割树相关联的分割类型对于视频块是允许的还是不允许的,其中最大允许的子块变换尺寸包括最大允许的子块变换高度和最大允许的子块变换宽度,其中,响应于不允许分割类型,在比特流中不存在该分割类型的指示。
图11是视频处理的示例方法1100的流程图。方法1100包括,在1110,至少部分地基于最大允许的变换尺寸和虚拟流水线数据单元(VPDU)尺寸,或者至少部分地基于最大允许的子块变换尺寸和虚拟流水线数据单元(VPDU)尺寸,确定与分割树相关联的分割类型对于视频块是允许的还是不允许的,其中VPDU尺寸包括VPDU高度和VPDU宽度,其中最大允许的变换尺寸包括最大允许的变换高度和最大允许的变换宽度,其中,响应于不允许分割类型,在比特流中不存在该分割类型的指示。
图12是视频处理的示例方法1200的流程图。方法1200包括,在1210,在应用子块变换的情况下,确定样点是否位于子块变换边界;在1220,如果确定样点位于子块变换边界,则应用去方块滤波处理;以及在1230,执行视频和视频的比特流表示之间的转换。
图13是视频处理的示例方法1300的流程图。方法1300包括,在1310,基于是否应用子块变换来确定如何对视频块应用滤波处理;在1320,基于该确定执行滤波处理;以及在1330,执行视频块和视频的比特流表示之间的转换。
一些实施例可以使用以下基于条款的格式来描述。
1.一种视频处理的方法,包括:
在应用子块变换的情况下,确定样点是否位于子块变换边界;
如果确定样点位于子块变换边界,则应用去方块滤波处理;和
执行视频和视频的比特流表示之间的转换。
2.根据条款1所述的方法,还包括:基于样点位于子块变换边界来确定应用强去方块滤波器。
3.根据条款1所述的方法,还包括:基于样点位于子块变换边界来确定应用弱去方块滤波器。
4.根据条款1所述的方法,还包括:基于样点位于子块变换边界来确定要应用的滤波器类型。
5.根据条款1所述的方法,还包括:确定如何对滤波后的样点应用限幅。
6.一种视频处理的方法,包括:
基于是否应用子块变换来确定如何应用视频块的滤波处理;
基于所述确定来执行所述滤波处理;和
执行在视频块和视频的比特流表示之间的转换。
7.根据条款6所述的方法,其中,所述滤波处理包括以下中的至少一个:去方块滤波处理、样点自适应偏移(SAO)滤波处理或自适应环路滤波(ALF)过程。
8.根据条款7所述的方法,其中,子块变换的边界被视为在所述去方块滤波处理中的变换边界。
9.根据条款8所述的方法,其中,如果应用子块变换,则在去方块滤波处理中至少对子块变换的边界进行滤波。
10.根据条款1至9中任一项所述的方法,当子块变换被应用于视频块时,所述视频块被划分成多于一个子块,并且所述子块中仅一个子块具有非零变换系数,而其他子块不具有所述非零变换系数;并且对于所述仅一个子块,仅仅信令通知变换系数。
11.一种视频解码装置,包括被配置为实施条款1至10中的一个或多个所列举的方法的处理器。
12.一种视频编码装置,包括被配置为实施条款1至10中的一个或多个所列举的方法的处理器。
13.一种其上存储有计算机代码的计算机程序产品,所述代码在由处理器执行时,使所述处理器实施条款1至10中任一项所列举的方法。
14.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,所述指令在由所述处理器执行时,使所述处理器实施条款1至10中任一项的方法。
本文中描述的公开的和其它解决方案、示例、实施例、模块和功能性操作可以在数字电子电路系统中实施,或者在计算机软件、固件、或硬件中实施,包括本文中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实施。公开的和其它实施例可以实施为一个或多个计算机程序产品,即,在计算机可读介质上编码的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或者它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,示例地包括可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如机器生成的电信号、光信号、或电磁信号,生成信号以编码信息以便传输到合适的接收器装置。
计算机程序(也被称为程序、软件、软件应用、脚本、或代码)可以用任何形式的编程语言编写,包括编译或解释语言,并且其可以以任何形式部署,包括作为独立程序或作为适合于在计算环境中使用的模块、组件、子例程、或其它单元。计算机程序不必对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文档的部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文档中,或存储在多个协调文档(例如,存储一个或多个模块、子程序、或代码的部分的文档)中。可以部署计算机程序以在一个计算机上运行或者在定位在一个站点处或跨多个站点分布并且通过通信网络互连的多个计算机上运行。
本文中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据操作并且生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路系统执行,并且装置也可以实施为专用逻辑电路系统,例如FPGA(field programmable gate array,现场可编程门阵列)或ASIC(application specificintegrated circuit,专用集成电路)。
适合于计算机程序的运行的处理器示例地包括通用和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机也将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,以从其接收数据或向其传送数据或者进行接收数据和传送数据两者。但是,计算机不需要具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,示例地包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;和CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路系统补充或者被并入到专用逻辑电路系统中。
虽然本专利文档包含许多细节,但是这些细节不应该解释为对任何主题的范围或可以要求保护的范围的限制,而是作为可以指定于特定技术的特定实施例的特征的描述。在本专利文档中、在分离的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以分离地或以任何合适的子组合在多个实施例中实施。此外,尽管以上特征可以描述为以某些组合起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征可以在一些情况下从组合中切除,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然在附图中以特地顺序描绘了操作,但是这不应该理解为要求以所示的特定顺序或按次序顺序执行这样的操作,或者执行所有示出的操作,以达到期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应该理解为在所有实施例中要求这样的分离。
仅描述了少数实施方式和示例,并且可以基于本专利文档中描述和示出的内容做出其它实施方式、增强和变化。
- 上一篇:一种医用注射器针头装配设备
- 下一篇:视频码流中自适应图片尺寸的信令