CN116325750A - 用于具有自适应内核选项的二次变换的方法和装置 - Google Patents

用于具有自适应内核选项的二次变换的方法和装置 Download PDF

Info

Publication number
CN116325750A
CN116325750A CN202280006610.5A CN202280006610A CN116325750A CN 116325750 A CN116325750 A CN 116325750A CN 202280006610 A CN202280006610 A CN 202280006610A CN 116325750 A CN116325750 A CN 116325750A
Authority
CN
China
Prior art keywords
transform
block
video
intra
kernels
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.)
Pending
Application number
CN202280006610.5A
Other languages
English (en)
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.)
Tencent America LLC
Original Assignee
Tencent America LLC
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 Tencent America LLC filed Critical Tencent America LLC
Priority claimed from PCT/US2022/041913 external-priority patent/WO2023034225A1/en
Publication of CN116325750A publication Critical patent/CN116325750A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开涉及具有自适应内核选项的视频块的二次变换。例如,公开了一种用于对视频流中的视频块进行解码的方法。该方法可包括:解析并处理视频流,以生成:与视频块相关联的二次变换系数集;与视频块相关联的帧内预测模式;和指示二次变换内核组中的二次变换内核的内核索引。该方法还包括:基于帧内预测模式识别二次变换内核组;以及执行二次变换系数集的逆二次变换,以基于由内核索引识别的二次变换内核组中的二次变换内核来生成视频块的主变换系数。二次变换内核组中的内核的数量取决于以下至少一项:与视频块相关联的帧内预测模式;视频块的大小;和与视频块相关联的主变换类型。

Description

用于具有自适应内核选项的二次变换的方法和装置
援引并入
本申请基于并要求于2022年8月29日提交的美国非临时专利申请No.17/897,815的优先权权益,美国非临时专利申请No.17/897,815基于并要求于2021年8月30日提交的美国临时申请No.63/238,635的优先权权益,这两个专利申请的标题均为“METHOD ANDAPPARATUS FOR SECONDARY TRANSFORM WITH ADAPTIVE KERNEL OPTIONS”。这些在先专利申请通过引用整体并入本文中。
技术领域
本公开描述了一组高级视频编码技术。更具体地,所公开的技术涉及具有自适应内核选项的二次变换。
背景技术
本文所提供的背景描述是出于总体上呈现本公开内容的目的。在该背景技术部分以及本说明书的各个方面中所描述的、目前已署名的发明人的工作所进行的程度,并不表明其在本申请提交时有资格作为现有技术,且从未明示或暗示其被承认为本公开内容的现有技术。
视频编码和解码可使用带有运动补偿的帧间图像预测(inter-pictureprediction)来执行。未压缩的数字视频可包括一系列图像,每个图像具有例如为1920×1080的亮度样本及相关联的完整或子采样的色度样本的空间大小。该一系列图像可具有例如每秒60幅图像或每秒60帧的固定或可变的图像速率(替代地,称为帧率)。对于流式传输或数据处理,未压缩的视频具有特定的比特率要求。例如,具有像素分辨率为1920×1080、帧率为60帧/秒和每像素8比特/每颜色通道下4:2:0色度子采样的视频需要接近1.5Gbit/s的带宽。一小时的此类视频需要600GB以上的存储空间。
视频编码和解码的一个目的可以是通过压缩来减少未压缩的输入视频信号中的冗余。压缩可有助于减小上述带宽和/或存储空间需求,在一些情况下可减小两个数量级或大于两个数量级。可采用无损压缩和有损压缩以及它们的组合。无损压缩指的是可通过解码过程从已压缩的原始信号中重建原始信号的精确副本的技术。有损压缩指的是原始视频信息在编码期间未被完全保留且在解码期间无法完全恢复的编码/解码过程。当使用有损压缩时,已重建的信号可能与原始信号不同,但是原始信号和已重建信号之间的失真足够小,以使已重建的信号可用于预期的应用,尽管会丢失一些信息。在视频的情况下,在许多应用中广泛采用有损压缩。可容忍的失真量取决于应用。例如,某些消费视频流式应用的用户相比电影或电视广播应用的用户来说可以容忍更高的失真。可选择或调节特定编码算法可实现的压缩率,以反映各种失真容忍度:更高的可容忍的失真通常允许产生更高的损失和更高的压缩率的编码算法。
视频编码器和解码器可利用来自多个宽泛类别的技术和手段,这些技术和手段包括例如运动补偿、傅里叶变换、量化和熵编码。
视频编解码技术可包括称为帧内编码的技术。在帧内编码中,在不参考来自先前重建的参考图像的样本或其它数据的情况下表示样本值。在一些视频编解码器中,图像在空间上细分成样本块。当所有样本块都以帧内模式编码时,该图像可称为帧内图像。帧内图像及其派生物(例如,独立解码器刷新图像)可用于重置解码器状态,因此可用作已编码视频码流和视频会话中的第一图像,或者用作静止图像。然后,帧内预测之后的块的样本可经过变换而变换到频域中,且可以在熵编码之前对如此生成的变换系数进行量化。帧内预测表示一种使预变换域中的样本值最小化的技术。在一些情况下,变换之后的DC值越小,且AC系数越小,则在给定的量化步长下表示熵编码之后的块所需的比特位越少。
例如从诸如MPEG-2代编码技术已知的传统帧内编码不使用帧内预测。然而,一些更新的视频压缩技术包括基于例如在空间相邻的编码和/或解码期间获得的、按解码顺序在正在进行帧内编码或解码的数据块之前的周围样本数据和/或元数据来尝试块的编码/解码的技术。在下文中这样的技术称为“帧内预测”技术。应注意,至少在一些情况下,帧内预测仅使用来自正在重建的当前图像的参考数据,而不使用来自其它参考图像的参考数据。
帧内预测可以有许多不同形式。当在给定的视频编码技术中可使用不止一种这样的技术时,使用中的技术可称为帧内预测模式。在特定编解码器中,可提供一种或多种帧内预测模式。在一些情况下,模式可具有子模式,和/或可与各种参数相关联,且视频块的模式/子模式信息和帧内编码参数可单独编码或共同包含在模式码字中。给定的模式、子模式和/或参数组合使用的码字会影响通过帧内预测的编码效率增益,因此会影响用于将码字转换成码流的熵编码技术。
H.264引入了某种帧内预测模式,该帧内预测模式在H.265中得到完善,且在诸如联合探索模型(JEM)、下一代视频编码(VVC)和基准集(BMS)的更新的编码技术中进一步得到完善。通常,对于帧内预测,可使用已经可用的相邻样本值来形成预测块。例如,沿一定方向和/或线路的特定相邻样本集的可用值可被复制到预测块中。对使用中的方向的参考可以在码流中进行编码,或者可以对其本身进行预测。
参考图1A,在右下方描绘了从H.265的33种可能的帧内预测方向(对应于H.265中指定的35个帧内模式的33个角模式)中指定的9个预测方向的子集。箭头汇聚的点(101)表示正在被预测的样本。箭头表示相邻样本用于预测101处的样本所沿的方向。例如,箭头(102)指示从在右上方、与水平方向成45度角的一个或多个相邻样本预测样本(101)。类似地,箭头(103)指示从在样本(101)的左下方、与水平方向成22.5度角的一个或多个相邻样本预测样本(101)。
仍然参考图1A,在左上方描绘了4×4个样本的正方形块(104)(由粗体虚线指示)。正方形块(104)包括16个样本,每个样本用“S”、其在Y维度上的位置(例如,行索引)和其在X维度上的位置(例如,列索引)来标记。例如,样本S21是在Y维度上(从顶部开始)的第二个样本和在X维度上(从左侧开始)的第一个样本。类似地,样本S44是在Y和X维度上、块(104)中的第四个样本。由于块的大小为4×4个样本,因此S44位于右下角。还示出了遵循类似编号方案的示例参考样本。参考样本用R、其相对于块(104)的Y位置(例如,行索引)和X位置(列索引)来标记。在H.264和H.265中,使用与正在重建的块相邻的预测样本。
块104的帧内图像预测可始于通过根据用信号发送的预测方向从相邻样本复制参考样本值。例如,假设已编码视频码流包括信令,该信令针对块104指示箭头(102)的预测方向,即从在右上方、与水平方向成45度角的一个或多个预测样本来预测样本。在这种情况下,从同一个参考样本R05预测样本S41、S32、S23和S14。然后从参考样本R08预测样本S44。
在一些情况下,可例如通过插值来组合多个参考样本的值,以计算参考样本;尤其是当方向无法以45度均分时。
随着视频编码技术继续发展,可能的方向的数量增加。在H.264(2003年)中,例如九个不同的方向可用于帧内预测。在H.265(2013年)中,增加到33个方向,以及在本公开时,JEM/VVC/BMS可支持多达65个方向。已进行实验研究来帮助识别最合适的帧内预测方向,且熵编码中的一些技术可用于以少量比特对那些最合适的方向进行编码,对于方向,接受一定的比特代价。此外,有时可以从已解码的相邻块的帧内预测中使用的相邻方向来预测方向本身。
图1B示出了示意图(180),其描绘了根据JEM的65个帧内预测方向,以说明随着时间的推移而开发的各种编码技术中,预测方向的数量增加。
已编码视频码流中表示帧内预测方向的比特到预测方向的映射方式,可能因视频编码技术的不同而不同;例如,其范围可以从预测方向简单直接映射到帧内预测模式,映射到码字,映射到涉及最可能模式的复杂自适应方案,以及类似技术。然而,在所有情况下,可存在用于帧内预测的某些方向,这些方向与某些其它方向相比,在统计上在视频内容中出现的可能性较小。由于视频压缩的目标是减少冗余,因此在一种设计良好的视频编码技术中,那些不太可能的方向相比更可能的方向来说,可由更多的位数表示。
帧间图像预测或帧间预测可基于运动补偿。在运动补偿中,来自先前重建的图像或其部分(参考图像)的样本数据块在沿着由运动矢量(此后称为MV)指示的方向在空间上偏移之后,可用于预测新重建的图像或图像部分(例如,块)。在一些情况下,参考图像可与当前正在重建的图像相同。MV可具有X和Y两个维度,或具有三个维度,第三个维度指示正在使用的参考图像(类似于时间维度)。
在一些视频压缩技术中,可根据其它MV,例如根据在空间上与正在重建的区域相邻的样本数据的另一区域相关的、且按解码次序在当前MV之前的其它MV来预测适用于样本数据的某个区域的当前MV。这样做可通过消除相关MV中的冗余来大大减少对MV进行编码所需的数据总量,从而提高压缩效率。MV预测可有效地工作,例如,由于在对从相机获得的输入视频信号(称为自然视频)进行编码时,存在以下统计可能性:在视频序列中,比适用单个MV的区域更大的区域沿着相似的方向移动,因此在一些情况下,可使用从相邻区域的MV导出的相似运动矢量来预测该更大的区域。这使得用于给定区域的实际MV与根据周围MV所预测的MV相似或相同。进而在熵编码之后,该MV可以用比直接对MV进行编码(而非根据相邻MV来预测MV)时使用的位数更少的位数来表示。在一些情况下,MV预测可以是从原始信号(即:样本流)中导出的信号(即:MV)的无损压缩的示例。在其它情况下,例如由于根据多个周围MV计算预测值时出现取整误差,使得MV预测本身可以是有损的。
H.265/HEVC(ITU-T H.265建议书,“High Efficiency Video Coding(高效视频编码)”,2016年12月)中描述了各种MV预测机制。在H.265指定的多种MV预测机制中,本文描述的是下文称为“空间合并”的技术。
具体地,参考图2,当前块(201)包括在运动搜索过程期间已由编码器找到的样本,可根据已产生空间偏移的相同大小的先前块来预测该样本。可以从与一个或多个参考图像相关联的元数据中导出MV,而非直接对该MV进行编码,例如使用与被标记为A0、A1和B0、B1、B2(分别对应202到206)的五个周围样本中的任一样本相关联的MV,(按解码次序)从最近的参考图像中导出该MV。在H.265中,MV预测可使用来自相邻块使用的相同参考图像的预测值。
发明内容
本公开的各方面提供用于具有自适应内核选项的二次变换的方法和装置。
在一些实现方式中,公开了一种用于处理编码视频流中的视频块的方法。该方法可包括:解析并处理编码视频流,以生成:与视频块相关联的二次变换系数集;与视频块相关联的帧内预测模式;和指示二次变换内核组中的二次变换内核的内核索引。该方法可进一步包括:基于帧内预测模式识别二次变换内核组;以及执行二次变换系数集的逆二次变换,以基于由内核索引识别的二次变换内核组中的二次变换内核来生成视频块的主变换系数。二次变换内核组中的内核的数量取决于以下至少一项:与视频块相关联的帧内预测模式;视频块的大小;以及与视频块相关联的主变换类型。
在一些其它实现方式中,公开了另一种用于处理帧内预测视频块的方法。该方法可包括:使用至少一个主变换内核来对帧内预测视频块的残差块进行变换,以生成主变换系数集;在二次变换内核组中选择当前二次变换内核,其中,二次变换内核组中的内核的数量取决于以下至少一项:用于帧内预测视频块的帧内预测模式;帧内预测视频块的大小;以及至少一个主变换内核的主变换类型。该方法可进一步包括:确定二次变换内核组内的当前二次变换内核的内核索引;使用当前二次变换内核来对主变换系数集进行变换,以生成二次变换系数集;以及将内核索引和二次变换系数集编码成与帧内预测视频块相关联的编码视频流。
在上述任一实现方式中,二次变换内核组中的内核的数量取决于与视频块相关联的主变换类型。
在上述任一实现方式中,当对于视频块的垂直维度和水平维度,主变换类型均是ADST时,二次变换内核组中的内核的数量为N,否则二次变换内核组中的内核的数量为K,以及N和K是介于0和6之间的不同的非负整数。
在上述任一实现方式中,当视频块的大小小于预定大小阈值时,二次变换内核组中的内核的数量为N,否则二次变换内核组中的内核的数量为K,以及N和K是介于0和6之间的不同的非负整数。
在上述任一实现方式中,对于视频块的水平维度和垂直维度中的任一个,预定大小阈值为8×8或8。
在上述任一实现方式中,如果视频块由预定的帧内预测模式子集中的任一帧内预测模式、预定的主变换类型子集中的任一主变换类型、以及预定的块大小子集中的任一块大小表征时,二次变换内核组中的内核的数量为N,否则二次变换内核组中的内核的数量为K,以及N和K是介于0和6之间的不同的非负整数。
在上述任一实现方式中,当视频块由垂直帧内预测模式、水平帧内预测模式、平滑水平帧内预测模式和平滑垂直帧内预测模式、垂直维度和水平维度中的ADST_ADST主变换模式、以及小于预定大小阈值的块大小之一表征时,二次变换内核组中的内核的数量为N,否则,二次变换内核组中的内核的数量为K。
在上述任一实现方式中,其中,当二次变换内核组仅包括N个或K个二次变换内核时,编码视频流中的内核索引的信令方案仅支持多达N个或K个索引选项。
在上述任一实现方式中,当二次变换内核组中的内核的数量为N时,以及当二次变换内核组中的内核的数量为K时,在编码视频流中使用不同的上下文模型来对内核索引进行熵编码。
在上述任一实现方式中,当二次变换内核组中用于不同视频块的内核的数量不同时,不同视频块的内核索引的二值化码字的熵编码共享二值化码字中的至少一个二进制的上下文建模。
在一些其它实现方式中,公开了一种用于处理视频信息的设备。该设备可包括电路,电路配置成执行上述方法的实现方式中的任一个。
本公开的各方面还提供一种非暂时性计算机可读存储介质,非暂时性计算机可读存储介质存储有指令,当指令由用于视频解码和/或编码的计算机执行时,指令使得计算机执行用于视频解码和/或编码的方法。
附图说明
根据以下详细描述和附图,所公开的主题的其他特征、性质和各种优点将更加明显,在附图中:
图1A示出了帧内预测定向模式的示例性子集的示意性图示。
图1B示出了示例性帧内预测方向的图示。
图2示出了在一个示例中,用于运动矢量预测的当前块及其周围空间合并候选的示意性图示。
图3示出了根据一个示例性实施例的通信系统(300)的简化框图的示意性图示。
图4示出了根据一个示例性实施例的通信系统(400)的简化框图的示意性图示。
图5示出了根据一个示例性实施例的视频解码器的简化框图的示意性图示。
图6示出了根据一个示例性实施例的视频编码器的简化框图的示意性图示。
图7示出了根据另一示例性实施例的视频编码器的框图。
图8示出了根据另一示例性实施例的视频解码器的框图。
图9示出了根据本公开的示例性实施例的编码块划分的方案。
图10示出了根据本公开的示例性实施例的编码块划分的另一方案。
图11示出了根据本公开的示例性实施例的编码块划分的另一方案。
图12示出了根据示例性划分方案将基本块分成编码块的示例性划分。
图13示出了示例性三叉树划分方案。
图14示出了示例性四叉树二叉树编码块划分方案。
图15示出了根据本公开的示例性实施例的将编码块划分成多个变换块的方案和变换块的编码顺序。
图16示出了根据本公开的示例性实施例的将编码块划分成多个变换块的另一方案和变换块的编码顺序。
图17示出了根据本公开的示例性实施例的将编码块划分成多个变换块的另一方案。
图18示出了定向帧内预测中的示例性细分角度。
图19示出了定向帧内预测中的标称角度。
图20示出了块的PAETH模式的上位置、左位置和左上位置。
图21示出了示例性递归帧内滤波模式。
图22示出了块的示例性四参考线帧内编码。
图23示出了根据本公开的示例性实施例的帧内预测块的扫描和变换块划分。
图24示出了根据本公开的示例性实施例的帧间预测块的扫描和变换块划分。
图25示出了根据本公开的示例性实施例的低频不可分离变换过程。
图26示出了根据本公开的一个示例性实施例的流程图。
图27示出了根据本公开的另一示例性实施例的流程图。
图28示出了根据本公开的示例性实施例的计算机系统的示意性图示。
具体实施方式
图3示出了根据本公开的一个实施例的通信系统(300)的简化框图。通信系统(300)包括多个终端设备,该多个终端设备可通过例如网络(350)彼此通信。例如,通信系统(300)包括通过网络(350)互连的第一终端设备对(310)和(320)。在图3的示例中,第一终端设备对(310)和(320)可执行单向数据传输。例如,终端设备(310)可以对视频数据(例如,由终端设备(310)采集的视频图像流)进行编码,以通过网络(350)传输到另一终端设备(320)。已编码视频数据可以以一个或多个已编码视频码流的形式传输。终端设备(320)可以从网络(350)接收已编码视频数据,对已编码视频数据进行解码以恢复视频图像,以及根据所恢复的视频数据显示视频图像。单向数据传输可以在媒体服务等应用中实现。
在另一示例中,通信系统(300)包括执行已编码视频数据的双向传输的第二终端设备对(330)和(340),该双向传输可例如在视频会议应用期间实现。对于双向数据传输,在一个示例中,终端设备(330)和(340)中的每个终端设备可以对视频数据(例如,由终端设备采集的视频图像流)进行编码,以通过网络(350)传输到终端设备(330)和(340)中的另一终端设备。终端设备(330)和(340)中的每个终端设备还可接收由终端设备(330)和(340)中的另一终端设备传输的已编码视频数据,且可以对已编码视频数据进行解码以恢复视频图像,以及可根据所恢复的视频数据在可访问的显示设备上显示视频图像。
在图3的示例中,终端设备(310)、终端设备(320)、终端设备(330)和终端设备(340)可实现为服务器、个人计算机和智能电话,但是本公开的基本原理的适用性可不限于此。本公开的实施例可以在台式计算机、膝上型计算机、平板电脑、媒体播放器、可穿戴计算机、专用视频会议设备等中实现。网络(350)表示在终端设备(310)、终端设备(320)、终端设备(330)和终端设备(340)之间传送已编码视频数据的任何数量或类型的网络,包括例如有线(连线的)和/或无线通信网络。通信网络(350)可以在电路交换信道、分组交换信道和/或其它类型的信道中交换数据。代表性的网络包括电信网络、局域网、广域网和/或互联网。出于本讨论的目的,除非在下文中予以明确说明,否则网络(350)的架构和拓扑对于本公开的操作来说可能是无关紧要的。
作为用于所公开的主题的应用的示例,图4示出了视频编码器和视频解码器在视频流式传输环境中的放置方式。所公开的主题可同等地适用于其它视频应用,包括例如视频会议、数字TV广播、游戏、虚拟现实、在包括CD、DVD、存储棒等的数字介质上存储压缩视频等等。
视频流式传输系统可包括视频采集子系统(413),视频采集子系统(413)可包括诸如数码相机的视频源(401),视频源(401)创建未压缩的视频图片或图像流(402)。在一个示例中,视频图像流(402)包括由视频源401的数码相机记录的样本。相较于已编码视频数据(404)(或已编码视频码流),被描绘为粗线以强调高数据量的视频图像流(402)可由电子设备(420)处理,电子设备(420)包括耦接到视频源(401)的视频编码器(403)。视频编码器(403)可包括硬件、软件或软硬件组合,以实现或实施如下文更详细地描述的所公开的主题的各方面。相较于未压缩的视频图像流(402),被描绘为细线以强调较低数据量的已编码视频数据(404)(或已编码视频码流(404))可存储在流式传输服务器(405)上以供将来使用,或者直接存储于下游视频设备(未示出)中。一个或多个流式传输客户端子系统,例如图4中的客户端子系统(406)和客户端子系统(408)可访问流式传输服务器(405)以检索已编码视频数据(404)的副本(407)和副本(409)。客户端子系统(406)可包括例如电子设备(430)中的视频解码器(410)。视频解码器(410)对已编码视频数据的传入副本(407)进行解码,且创建可以在显示器(412)(例如,显示屏)或其它呈现设备(未描绘)上呈现的未压缩的输出视频图像流(411)。视频解码器410可配置成执行本公开中描述的各种功能中的一些或全部功能。在一些流式传输系统中,可根据某些视频编码/压缩标准对已编码视频数据(404)、(407)和(409)(例如,视频码流)进行编码。这些标准的示例包括ITU-T H.265建议书。在一个示例中,正在开发的视频编码标准非正式地称为下一代视频编码(VVC)。所公开的主题可用于VVC的上下文中,且可用于其它视频编码标准。
应注意,电子设备(420)和电子设备(430)可包括其它组件(未示出)。例如,电子设备(420)可包括视频解码器(未示出),且电子设备(430)还可包括视频编码器(未示出)。
图5示出了根据本公开的如下任一实施例的视频解码器(510)的框图。视频解码器(510)可包括在电子设备(530)中。电子设备(530)可包括接收器(531)(例如,接收电路)。视频解码器(510)可用于代替图4的示例中的视频解码器(410)。
接收器(531)可接收将由视频解码器(510)解码的一个或多个已编码视频序列。在同一实施例或另一实施例中,一次可以对一个已编码视频序列进行解码,其中每个已编码视频序列的解码独立于其它已编码视频序列。每个视频序列可与多个视频帧或图像相关联。可以从信道(501)接收已编码视频序列,信道(501)可以是硬件/软件链路,其通向存储已编码视频数据的存储设备或传输已编码视频数据的流式传输源。接收器(531)可接收已编码视频数据和其它数据(可转发到它们各自的处理电路(未描绘)),例如已编码音频数据和/或辅助数据流。接收器(531)可以将已编码视频序列与其它数据分开。为了防止网络抖动,缓冲存储器(515)可设置在接收器(531)和熵解码器/解析器(520)(此后称为“解析器(520)”)之间。在某些应用中,缓冲存储器(515)可实现为视频解码器(510)的一部分。在其它应用中,缓冲存储器(515)可位于视频解码器(510)的外部并与视频解码器(510)分开(未描绘)。在另一些其它应用中,在视频解码器(510)的外部可设置缓冲存储器(未描绘)以例如防止网络抖动,且在视频解码器(510)的内部可设置另一附加的缓冲存储器(515)以例如处理播放定时。当接收器(531)从具有足够带宽和可控性的存储/转发设备或从等时同步网络接收数据时,可能不需要缓冲存储器(515),或可以将缓冲存储器做得较小。为了在诸如互联网等业务分组网络上使用,可能需要足够大小的缓冲存储器(515),缓冲存储器(515)的大小可相对较大。这种缓冲存储器可实现为具有自适应大小,且可至少部分地在操作系统或视频解码器(510)外部的类似元件(未描绘)中实现。
视频解码器(510)可包括解析器(520),以根据已编码视频序列重建符号(521)。这些符号的类别包括用于管理视频解码器(510)的操作的信息,以及用于控制诸如显示器(512)(例如,显示屏)之类的呈现设备的潜在信息,该呈现设备可以是或不是电子设备(530)的组成部分,但是可耦接到电子设备(530),如图5所示。用于呈现设备的控制信息可以是辅助增强信息(Supplemental Enhancement Information,SEI消息)或视频可用性信息(Video Usability Information,VUI)参数集片段(未描绘)的形式。解析器(520)可以对解析器(520)接收到的已编码视频序列进行解析/熵解码。已编码视频序列的熵编码可根据视频编码技术或标准进行,且可遵循各种原理,包括可变长度编码、霍夫曼(Huffman)编码、具有或不具有上下文敏感度的算术编码等。解析器(520)可基于对应于子组的至少一个参数,从已编码视频序列提取用于视频解码器中的像素的子组中的至少一个子组的子组参数集。子组可包括图像组(GOP)、图像、图块(tile)、条带(slice)、宏块、编码单元(CU)、块、变换单元(TU)、预测单元(PU)等。解析器(520)还可以从已编码视频序列提取信息,例如变换系数(例如,傅里叶变换系数),量化器参数值,运动矢量等。
解析器(520)可以对从缓冲存储器(515)接收的视频序列执行熵解码/解析操作,从而创建符号(521)。
取决于已编码视频图像或一部分已编码视频图像(例如:帧间图像和帧内图像,帧间块和帧内块)的类型以及其它因素,符号(521)的重建可涉及多个不同的处理或功能单元。涉及的单元以及涉及方式可由解析器(520)通过从已编码视频序列解析得到的子组控制信息来控制。为了简单起见,未描绘解析器(520)与下文的多个处理或功能单元之间的此类子组控制信息流。
除了已提及的功能块之外,视频解码器(510)可以在概念上细分成如下文所描述的多个功能单元。在商业约束下运行的实际实现方式中,这些功能单元中的许多功能单元彼此紧密交互且可至少部分地彼此集成。然而,出于清楚地描述所公开的主题的各种功能的目的,在本公开的下文中采用在概念上细分成多个功能单元。
第一单元可包括缩放器/逆变换单元(551)。缩放器/逆变换单元(551)可以从解析器(520)接收作为符号(521)的量化变换系数以及控制信息,包括指示要使用哪种类型的逆变换、块大小、量化因子/参数、量化缩放矩阵等的信息。缩放器/逆变换单元(551)可输出包括样本值的块,样本值可输入到聚合器(555)中。
在一些情况下,缩放器/逆变换单元(551)的输出样本可属于帧内编码块,即:不使用来自先前重建的图像的预测信息,但是可使用来自当前图像的先前重建部分的预测信息的块。此类预测信息可由帧内图像预测单元(552)提供。在一些情况下,帧内图像预测单元(552)可使用已重建且存储在当前图像缓冲器(558)中的周围块信息来生成大小和形状与正在重建的块相同的块。例如,当前图像缓冲器(558)缓冲部分重建的当前图像和/或完全重建的当前图像。在一些实现方式中,聚合器(555)可基于每个样本,将帧内预测单元(552)生成的预测信息添加到由缩放器/逆变换单元(551)提供的输出样本信息中。
在其它情况下,缩放器/逆变换单元(551)的输出样本可属于帧间编码和潜在运动补偿的块。在这种情况下,运动补偿预测单元(553)可访问参考图像存储器(557)以提取用于帧间图像预测的样本。在根据属于块的符号(521)对所提取的样本进行运动补偿之后,这些样本可由聚合器(555)添加到缩放器/逆变换单元(551)的输出(单元551的输出可称为残差样本或残差信号),从而生成输出样本信息。运动补偿预测单元(553)从参考图像存储器(557)内提取预测样本的地址可受到运动矢量控制,该运动矢量可以以符号(521)的形式提供给运动补偿预测单元(553)使用,符号(521)可具有例如X分量(偏移)、Y分量(偏移)和参考图像分量(时间)。运动补偿还可包括在使用子样本精确运动矢量时,从参考图像存储器(557)提取的样本值的内插,运动补偿还可与运动矢量预测机制等相关联。
聚合器(555)的输出样本可经受环路滤波器单元(556)中的各种环路滤波技术。视频压缩技术可包括环路内滤波器技术,该环路内滤波器技术受控于包括在已编码视频序列(还称为已编码视频码流)中且作为来自解析器(520)的符号(521)而可用于环路滤波器单元(556)的参数,然而,视频压缩技术还可响应于在对已编码图像或已编码视频序列的先前(按解码次序)部分进行解码期间获得的元信息,以及响应于先前重建且经过环路滤波的样本值。可以以各种顺序包括多种类型的环路滤波器,来作为环路滤波器单元556的一部分,如将在下文进一步详细描述的那样。
环路滤波器单元(556)的输出可以是样本流,该样本流可输出到呈现设备(512)以及存储在参考图像存储器(557)中,以用于将来的帧间图像预测。
一旦完全重建,某些已编码图像就可用作参考图像以用于将来的帧间图像预测。例如,一旦对应于当前图像的已编码图像被完全重建,且已编码图像(通过例如解析器(520))被识别为参考图像,则当前图像缓冲器(558)可变成参考图像存储器(557)的一部分,且可以在开始重建后续已编码图像之前重新分配新的当前图像缓冲器。
视频解码器(510)可根据诸如ITU-T H.265建议书的标准中采用的预定视频压缩技术执行解码操作。在已编码视频序列遵循视频压缩技术或标准的语法以及视频压缩技术或标准中记录的配置文件的意义上,已编码视频序列可符合所使用的视频压缩技术或标准指定的语法。具体而言,配置文件可以从视频压缩技术或标准中可用的所有工具中选择某些工具作为在该配置文件下可供使用的仅有工具。为了符合标准,已编码视频序列的复杂度可处于视频压缩技术或标准的层级所限定的范围内。在一些情况下,层级限制最大图像大小、最大帧率、最大重建采样率(以例如每秒兆(mega)个样本为单位进行测量)、最大参考图像大小等。在一些情况下,由层级设定的限制可通过假想参考解码器(HypotheticalReference Decoder,HRD)规范和在已编码视频序列中用信号发送的HRD缓冲器管理的元数据来进一步限定。
在一些示例性实施例中,接收器(531)可以在接收已编码视频时接收附加(冗余)数据。附加数据可以被包括作为已编码视频序列的一部分。附加数据可由视频解码器(510)使用来对数据进行适当解码和/或更准确地重建原始视频数据。附加数据可采用例如时间、空间或信噪比(SNR)增强层、冗余条带、冗余图像、前向纠错码等形式。
图6示出了根据本公开的一个示例性实施例的视频编码器(603)的框图。视频编码器(603)可包括在电子设备(620)中。电子设备(620)可进一步包括传输器(640)(例如,传输电路)。视频编码器(603)可用于代替图4的示例中的视频编码器(403)。
视频编码器(603)可以从视频源(601)(并非图6的示例中的电子设备(620)的一部分)接收视频样本,视频源(601)可采集将由视频编码器(603)编码的视频图像。在另一示例中,视频源(601)可实现为电子设备(620)的一部分。
视频源(601)可提供将由视频编码器(603)编码的呈数字视频样本流形式的源视频序列,该数字视频样本流可具有任何合适的位深度(例如:8位、10位、12位......)、任何色彩空间(例如BT.601YCrCb,RGB,XYZ......)和任何合适的采样结构(例如YCrCb 4:2:0,YCrCb 4:4:4)。在媒体服务系统中,视频源(601)可以是能够存储先前已准备的视频的存储设备。在视频会议系统中,视频源(601)可以是采集本地图像信息作为视频序列的相机。视频数据可作为多个单独的图像或图像来提供,当按顺序观看时,这些图像或图像被赋予运动。图像本身可组织成空间像素阵列,其中取决于所使用的采样结构、色彩空间等,每个像素可包括一个或多个样本。本领域的普通技术人员可容易地理解像素和样本之间的关系。下文侧重于描述样本。
根据一些示例性实施例,视频编码器(603)可实时地或在应用所要求的任何其它时间约束下,将源视频序列的图像编码并压缩成已编码视频序列(643)。施行适当的编码速度构成了控制器(650)的一个功能。在一些实施例中,控制器(650)可以在功能上耦接到如下文所描述的其它功能单元且控制所述的其它功能单元。为了简单起见,图中未描绘耦接。由控制器(650)设置的参数可包括速率控制相关参数(图像跳过、量化器、率失真优化技术的λ值......)、图像大小、图像组(GOP)布局、最大运动矢量搜索范围等。控制器(650)可配置成具有其它合适的功能,这些功能涉及针对某一系统设计优化的视频编码器(603)。
在一些示例性实施例中,视频编码器(603)可配置成在编码环路中进行操作。作为过于简化的描述,在一个示例中,编码环路可包括源编码器(630)(例如,负责基于待编码的输入图像和参考图像来创建符号,例如符号流)和嵌入于视频编码器(603)中的(本地)解码器(633)。解码器(633)重建符号以用类似于(远程)解码器还可创建样本数据的方式创建样本数据,即使嵌入的解码器633处理由源编码器630编码(但不是熵编码)的视频流(因为在所公开的主题中考虑的视频压缩技术中,熵编码中的已编码视频码流与符号之间的任何压缩可以是无损的)。重建的样本流(样本数据)输入到参考图像存储器(634)。由于符号流的解码产生与解码器位置(本地或远程)无关的位精确结果,因此参考图像存储器(634)中的内容在本地编码器和远程编码器之间也是按比特位精确对应的。换句话说,编码器的预测部分“看到”的参考图像样本与解码器将在解码期间使用预测时所“看到”的样本值完全相同。这种参考图像同步性基本原理(以及在例如因信道误差而无法维持同步性的情况下产生的漂移)用于提高编码质量。
“本地”解码器(633)的操作可与诸如已在上文结合图5详细描述的视频解码器(510)的“远程”解码器相同。然而,另外简要参考图5,由于符号可用且熵编码器(645)和解析器(520)可无损地将符号编码/解码成已编码视频序列,因此包括缓冲存储器(515)和解析器(520)的视频解码器(510)的熵解码部分可能无法完全在编码器中的本地解码器(633)中实现。
此时可以注意到,除了可能仅存在于解码器中的解析/熵解码之外的任何解码器技术,还可能需要以基本上相同的功能形式存在于对应的编码器中。为此,所公开的主题有时可侧重于与编码器的解码部分相关的解码器操作。因此,可简化编码器技术的描述,因为编码器技术与全面地描述的解码器技术互逆。仅在某些区域或方面,在下文中提供编码器的更详细的描述。
在操作期间,在一些示例性实现方式中,源编码器(630)可执行运动补偿预测编码,通过参考来自视频序列中被指定为“参考图像”的一个或多个先前已编码图像,该运动补偿预测编码对输入图像进行预测性编码。以这种方式,编码引擎(632)对输入图像的像素块和参考图像的像素块之间的颜色通道的差异(或残差)进行编码,该参考图像可被选作该输入图像的预测参考。术语“残差”及其形容词形式“残差的”可以互换地使用。
本地视频解码器(633)可基于源编码器(630)创建的符号,对可指定为参考图像的图像的已编码视频数据进行解码。编码引擎(632)的操作有利地可以是有损过程。当已编码视频数据可以在视频解码器(图6未示出)处被解码时,已重建视频序列通常可以是带有一些误差的源视频序列的副本。本地视频解码器(633)复制解码过程,该解码过程可由视频解码器对参考图像执行,且可使已重建参考图像存储在参考图像缓存(634)中。以这种方式,视频编码器(603)可以在本地存储已重建参考图像的副本,该副本与将由远端(远程)视频解码器获得的已重建参考图像具有共同内容(不存在传输误差)。
预测器(635)可针对编码引擎(632)执行预测搜索。即,对于待编码的新图像,预测器(635)可以在参考图像存储器(634)中搜索可用作新图像的适当预测参考的样本数据(作为候选参考像素块)或某些元数据,例如参考图像运动矢量、块形状等。预测器(635)可基于样本块逐像素块操作,以找到合适的预测参考。在一些情况下,如由预测器(635)获得的搜索结果所确定的,输入图像可具有从参考图像存储器(634)中存储的多个参考图像取得的预测参考。
控制器(650)可管理源编码器(630)的编码操作,包括例如设置用于对视频数据进行编码的参数和子组参数。
可以在熵编码器(645)中对所有上述功能单元的输出进行熵编码。熵编码器(645)根据诸如霍夫曼编码、可变长度编码、算术编码等技术来对各种功能单元生成的符号进行无损压缩,从而将该符号转换成已编码视频序列。
传输器(640)可缓冲由熵编码器(645)创建的已编码视频序列,从而为通过通信信道(660)进行传输做准备,通信信道(660)可以是通向存储已编码视频数据的存储设备的硬件/软件链路。传输器(640)可以将来自视频编码器(603)的已编码视频数据与待传输的其它数据合并,其它数据例如是已编码音频数据和/或辅助数据流(未示出来源)。
控制器(650)可管理视频编码器(603)的操作。在编码期间,控制器(650)可以向每个已编码图像分配某一已编码图像类型,但这可能影响可应用于相应的图像的编码技术。例如,通常可以将图像分配为以下任一种图像类型:
帧内图像(I图像),其可以是不将序列中的任何其它图像用作预测源就可被编码和解码的图像。一些视频编解码器允许不同类型的帧内图像,包括例如独立解码器刷新(“IDR”)图像。本领域的普通技术人员了解I图像的这些变体及其相应的应用和特征。
预测性图像(P图像),其可以是可使用帧内预测或帧间预测进行编码和解码的图像,该帧内预测或帧间预测使用至多一个运动矢量和参考索引来预测每个块的样本值。
双向预测性图像(B图像),其可以是可使用帧内预测或帧间预测进行编码和解码的图像,该帧内预测或帧间预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,多个预测性图像可使用多于两个参考图像和相关联的元数据来用于重建单个块。
源图像通常可以在空间上细分成多个样本编码块(例如,4×4、8×8、4×8或16×16个样本的块),且逐块进行编码。这些块可参考其它(已编码)块进行预测性编码,其它(已编码)块由应用于块的相应图像的编码分配来确定。例如,I图像的块可进行非预测性编码,或者I图像的块可参考同一图像的已编码块来进行预测性编码(空间预测或帧内预测)。P图像的像素块可参考一个先前编码的参考图像通过空间预测或通过时间预测来进行预测性编码。B图像的块可参考一个或两个先前编码的参考图像通过空间预测或通过时间预测来进行预测性编码。源图像或中间处理图像可细分成其它类型的块,以用于其它目的。编码块和其它类型的块的划分可遵循或可以不遵循相同的方式,如下文进一步详细描述的。
视频编码器(603)可根据诸如ITU-T H.265建议书的预定视频编码技术或标准执行编码操作。在操作中,视频编码器(603)可执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测性编码操作。因此,已编码视频数据可符合所使用的视频编码技术或标准指定的语法。
在一些示例性实施例中,传输器(640)可以在传输已编码视频时传输附加数据。源编码器(630)可包括此类数据作为已编码视频序列的一部分。附加数据可包括时间/空间/SNR增强层、诸如冗余图像和条带的其它形式的冗余数据、SEI消息、VUI参数集片段等。
所采集的视频可作为呈时间序列的多个源图像(视频图像)。帧内图像预测(通常简化为帧内预测)利用给定图像中的空间相关性,而帧间图像预测则利用图像之间的时间或其它相关性。例如,可以将正在编码/解码的特定图像划分成块,正在编码/解码的特定图像称为当前图像。在当前图像中的块类似于视频中先前已编码且仍被缓冲的参考图像中的参考块时,可通过称为运动矢量的矢量对当前图像中的块进行编码。运动矢量指向参考图像中的参考块,且在使用多个参考图像的情况下,运动矢量可具有识别参考图像的第三维度。
在一些示例性实施例中,双向预测技术可用于帧间图像预测。根据该双向预测技术,使用两个参考图像,例如按解码次序在视频中的当前图像之前(但是按显示次序可能分别是过去和将来)的第一参考图像和第二参考图像。可通过指向第一参考图像中的第一参考块的第一运动矢量和指向第二参考图像中的第二参考块的第二运动矢量来对当前图像中的块进行编码。可通过第一参考块和第二参考块的组合来联合预测该块。
此外,合并模式技术可用于帧间图像预测以改善编码效率。
根据本公开的一些示例性实施例,诸如帧间图像预测和帧内图像预测的预测以块为单位来执行。例如,将视频图像序列中的图像划分成编码树单元(CTU)以用于压缩,图像中的CTU可具有相同大小,例如64×64像素、32×32像素或16×16像素。通常,CTU可包括三个平行的编码树块(CTB),这三个平行的编码树块是一个亮度CTB和两个色度CTB。可以将每个CTU递归地以四叉树划分成一个或多个编码单元(CU)。例如,可以将64×64像素的CTU划分成一个64×64像素的CU,或4个32×32像素的CU。一个或多个32×32块中的每个块可进一步划分成4个16×16像素的CU。在一些示例性实施例中,可以在编码期间分析每个CU以在各种预测类型之中确定用于CU的预测类型,例如帧间预测类型或帧内预测类型。可根据时间和/或空间可预测性,将CU划分成一个或多个预测单元(PU)。通常,每个PU包括亮度预测块(PB)和两个色度PB。在一个实施例中,编码(编码/解码)中的预测操作以预测块为单位来执行。可以以各种空间图案执行将CU划分成PU(或不同颜色通道的PB)。例如,亮度或色度PB可包括针对样本的值(例如,亮度值)的矩阵,所述的样本例如是8×8像素、16×16像素、8×16像素、16×8样本等。
图7示出了根据本公开的另一示例性实施例的视频编码器(703)的图。视频编码器(703)配置成接收视频图像序列中的当前视频图像内的样本值的处理块(例如,预测块),且将处理块编码到作为已编码视频序列的一部分的已编码图像中。示例性视频编码器(703)可用于代替图4的示例中的视频编码器(403)。
例如,视频编码器(703)接收用于处理块的样本值的矩阵,该处理块例如是8×8样本的预测块等。然后,视频编码器(703)使用例如率失真优化(rate-distortionoptimization,RDO)来确定是否使用帧内模式、帧间模式或双向预测模式来最佳地对处理块进行编码。当确定在帧内模式中对处理块进行编码时,视频编码器(703)可使用帧内预测技术将处理块编码到已编码图像中;以及当确定在帧间模式或双向预测模式中对处理块进行编码时,视频编码器(703)可分别使用帧间预测或双向预测技术将处理块编码到已编码图像中。在一些示例性实施例中,合并模式可用作帧间图像预测子模式,其中,在不借助预测器外部的已编码运动矢量分量的情况下,从一个或多个运动矢量预测器导出运动矢量。在一些其它示例性实施例中,可存在适用于主题块的运动矢量分量。相应地,视频编码器(703)可包括未在图7中明确示出的组件,例如用于确定处理块的预测模式的模式决策模块。
在图7的示例中,视频编码器(703)包括如图7的示例性布置所示的耦接在一起的帧间编码器(730)、帧内编码器(722)、残差计算器(723)、开关(726)、残差编码器(724)、通用控制器(721)和熵编码器(725)。
帧间编码器(730)配置成接收当前块(例如,处理块)的样本,将该块与参考图像中的一个或多个参考块(例如,按显示次序是先前图像和后来图像中的块)进行比较,生成帧间预测信息(例如,根据帧间编码技术的冗余信息描述、运动矢量、合并模式信息),以及基于帧间预测信息使用任何合适的技术来计算帧间预测结果(例如,预测块)。在一些示例中,参考图像是基于已编码视频信息使用解码单元633解码的已解码参考图像,解码单元633嵌入在图6的示例性编码器620中(示出为图7的残差解码器728,如下文进一步详细描述的)。
帧内编码器(722)配置成接收当前块(例如,处理块)的样本,将该块与同一图像中已编码的块进行比较,在变换之后生成量化系数,以及在一些情况下还生成帧内预测信息(例如,根据一个或多个帧内编码技术的帧内预测方向信息)。帧内编码器(722)可基于帧内预测信息和同一图像中的参考块计算帧内预测结果(例如,预测块)。
通用控制器(721)可配置成确定通用控制数据,且基于该通用控制数据控制视频编码器(703)的其它组件。在一个示例中,通用控制器(721)确定块的预测模式,且基于预测模式将控制信号提供给开关(726)。例如,当预测模式是帧内模式时,通用控制器(721)控制开关(726)以选择供残差计算器(723)使用的帧内模式结果,且控制熵编码器(725)以选择帧内预测信息并将帧内预测信息包括在码流中;以及当块的预测模式是帧间模式时,通用控制器(721)控制开关(726)以选择供残差计算器(723)使用的帧间预测结果,且控制熵编码器(725)以选择帧间预测信息并将帧间预测信息包括在码流中。
残差计算器(723)可配置成计算所接收的块与从帧内编码器(722)或帧间编码器(730)选择的块的预测结果之间的差(残差数据)。残差编码器(724)可配置成对残差数据进行编码以生成变换系数。例如,残差编码器(724)可配置成将残差数据从空间域转换到频域,以生成变换系数。变换系数随后经受量化处理以获得量化变换系数。在各种示例性实施例中,视频编码器(703)还包括残差解码器(728)。残差解码器(728)配置成执行逆变换,且生成已解码残差数据。已解码残差数据可适当地由帧内编码器(722)和帧间编码器(730)使用。例如,帧间编码器(730)可基于已解码残差数据和帧间预测信息生成已解码块,且帧内编码器(722)可基于已解码残差数据和帧内预测信息生成已解码块。适当地处理已解码块以生成已解码图像,且已解码图像可以在存储器电路(未示出)中缓冲并用作参考图像。
熵编码器(725)可配置成将码流格式化以包括已编码块,并执行熵编码。熵编码器(725)配置成将各种信息包括在码流中。例如,熵编码器(725)可配置成将通用控制数据、所选预测信息(例如,帧内预测信息或帧间预测信息)、残差信息和其它合适的信息包括在码流中。当在帧间模式或双向预测模式的合并子模式中对块进行编码时,可能不存在残差信息。
图8示出了根据本公开的另一实施例的示例性视频解码器(810)的图。视频解码器(810)配置成接收作为已编码视频序列的一部分的已编码图像,且对已编码图像进行解码以生成已重建图像。在一个示例中,视频解码器(810)可用于代替图4的示例中的视频解码器(410)。
在图8的示例中,视频解码器(810)包括如图8的示例性布置所示的耦接在一起的熵解码器(871)、帧间解码器(880)、残差解码器(873)、重建模块(874)和帧内解码器(872)。
熵解码器(871)可配置成根据已编码图像来重建某些符号,这些符号表示构成已编码图像的语法元素。此类符号可包括例如对块进行编码的模式(例如,帧内模式、帧间模式、双向预测模式、合并子模式或另一子模式)、可识别供帧内解码器(872)或帧间解码器(880)使用以进行预测的某些样本或元数据的预测信息(例如,帧内预测信息或帧间预测信息)、呈例如量化变换系数形式的残差信息等。在一个示例中,当预测模式是帧间或双向预测模式时,将帧间预测信息提供给帧间解码器(880);以及当预测类型是帧内预测类型时,将帧内预测信息提供给帧内解码器(872)。残差信息可经受逆量化并提供给残差解码器(873)。
帧间解码器(880)可配置成接收帧间预测信息,且基于该帧间预测信息生成帧间预测结果。
帧内解码器(872)可配置成接收帧内预测信息,且基于该帧内预测信息生成预测结果。
残差解码器(873)可配置成执行逆量化以提取解量化的变换系数,且处理该解量化的变换系数,以将残差从频域转换到空间域。残差解码器(873)还可能利用某些控制信息(用以包括量化器参数(Quantizer Parameter,QP)),该控制信息可由熵解码器(871)提供(未描绘数据路径,因为这可能仅仅是低数据量控制信息)。
重建模块(874)可配置成在空间域中组合由残差解码器(873)输出的残差与预测结果(可由帧间预测模块或帧内预测模块输出,视情况而定)以形成已重建块,已重建块形成已重建图像的一部分,已重建图像是已重建视频的一部分。应注意,还可执行诸如去块操作等其它合适的操作来改善视觉质量。
应注意,可使用任何合适的技术来实现视频编码器(403)、视频编码器(603)和视频编码器(703)以及视频解码器(410)、视频解码器(510)和视频解码器(810)。在一些示例性实施例中,可使用一个或多个集成电路来实现视频编码器(403)、视频编码器(603)和视频编码器(703)以及视频解码器(410)、视频解码器(510)和视频解码器(810)。在另一实施例中,可使用执行软件指令的一个或多个处理器来实现视频编码器(403)、视频编码器(603)和视频编码器(603)以及视频解码器(410)、视频解码器(510)和视频解码器(810)。
转到用于编码和解码的块划分,常规划分可以从基本块开始,且可遵循预定规则集、特定图案、划分树、或者任何划分结构或方案。划分可以是分层的和递归的。在按照下文描述的任何示例性划分过程或其它过程或其组合来划分或分割基本块之后,可获得最终的一组分区或编码块。这些分区中的每个分区可处于划分层次中的各种划分层级之一,且可具有各种形状。每个分区可称为编码块(CB)。对于下文进一步描述的各种示例性划分实现方式,所生成的每个CB可具有任何允许的大小和划分层级。这种分区称为编码块,因为这种分区可形成如下单元:可以对该单元进行一些基本编码/解码决策,且可以在已编码视频码流中优化、确定和用信号发送编码/解码参数。最终分区中的最高或最深层级表示树的编码块划分结构的深度。编码块可以是亮度编码块或色度编码块。每种颜色的CB树结构可称为编码块树(CBT)。
所有颜色通道的编码块可统称为编码单元(CU)。所有颜色通道的分层结构可统称为编码树单元(CTU)。CTU中的各个颜色通道的划分图案或结构可以相同或者可以不同。
在一些实现方式中,用于亮度通道和色度通道的划分树方案或结构不需要相同。换句话说,亮度通道和色度通道可具有不同的编码树结构或图案。此外,亮度通道和色度通道是否使用相同或不同的编码划分树结构以及要使用的实际编码划分树结构,可取决于被编码的条带是P条带、B条带还是I条带。例如,对于I条带,色度通道和亮度通道可具有不同的编码划分树结构或编码划分树结构模式,而对于P条带或B条带,亮度通道和色度通道可共享相同的编码划分树方案。当应用不同的编码划分树结构或模式时,亮度通道可通过一个编码划分树结构被划分成CB,且色度通道可通过另一编码划分树结构被划分成色度CB。
在一些示例性实现方式中,预定划分图案可应用于基本块。如图9所示,示例性4路划分树可以从第一预定层级(例如,64×64块层级或其它大小,作为基本块大小)开始,且基本块可以分层地向下划分到预定最低层级(例如,4×4层级)。例如,基本块可经受由902、904、906和908指示的四个预定划分选项或图案,其中指定为R的分区允许进行递归划分,因为可以以较低的规模重复如图9所指示的相同划分选项,直到最低层级(例如,4×4层级)。在一些实现方式中,可以对图9的划分方案应用附加限制。在图9的实现方式中,可允许矩形分区(例如,1:2/2:1矩形分区),但是不允许矩形分区是递归的,而是允许正方形分区是递归的。如果需要的话,按照图9的递归划分生成最终的一组编码块。可进一步限定编码树深度,以指示来自根节点或根块的划分深度。例如,根节点或根块(例如,64×64块)的编码树深度可设置为0,且在根块按照图9进一步划分一次之后,编码树深度增加1。对于上述方案,从64×64基本块到4×4最小分区的最大或最深层级可以是4(从层级0开始)。这种划分方案可应用于一个或多个颜色通道。可按照图9的方案独立地划分每个颜色通道(例如,可针对每个分层层级的每个颜色通道独立地确定预定图案中的划分图案或选项)。替代地,两个或更多个颜色通道可共享图9的相同分层图案树(例如,可以对每个分层层级的两个或更多个颜色通道选择预定图案中的相同划分图案或选项)。
图10示出了允许递归划分以形成划分树的另一示例性预定划分图案。如图10所示,可预定义示例性10路划分结构或图案。根块可以在预定层级开始(例如,从128×128层级或64×64层级的基本块开始)。图10的示例性划分结构包括各种2:1/1:2和4:1/1:4矩形分区。在图10的第二行中被指示为1002、1004、1006和1008的具有3个子分区的划分类型可称为“T型”划分。“T型”划分1002、1004、1006和1008可称为左T型、上T型、右T型和下T型。在一些示例性实现方式中,不允许进一步细分图10的矩形分区。可进一步限定编码树深度,以指示来自根节点或根块的划分深度。例如,根节点或根块(例如,128×128块)的编码树深度可设置为0,且在根块按照图10进一步划分一次之后,编码树深度增加1。在一些实现方式中,可以只允许1010中的所有正方形分区按照图10的图案递归地划分到划分树的下一层级中。换句话说,对于T型图案1002、1004、1006和1008内的正方形分区,可能不允许递归划分。如果需要的话,按照图10的递归划分过程生成最终的一组编码块。这种方案可应用于一个或多个颜色通道。在一些实现方式中,可以给使用低于8×8层级的划分增加更大的灵活性。例如,在某些情况下,可使用2×2色度帧间预测。
在编码块划分的一些其它示例性实现方式中,四叉树结构可用于将基本块或中间块划分成四叉树分区。这种四叉树划分可以分层地和递归地应用于任何正方形分区。基本块或中间块或分区是否被进一步四叉树划分,可适应于基本块或中间块/分区的各种局部特性。可进一步调整图像边界处的四叉树划分。例如,可以在图像边界处执行隐式四叉树划分,使得块将保持四叉树划分,直到大小符合图像边界。
在一些其它示例性实现方式中,可使用来自基本块的分层二叉树划分。对于这种方案,基本块或中间层级块可划分成两个分区。二叉树划分可以是水平的或垂直的。例如,水平二叉树划分可以将基本块或中间块划分成相等的右分区和左分区。同样,垂直二叉树划分可以将基本块或中间块划分成相等的上分区和下分区。这种二叉树划分可以是分层的和递归的。可以在基本块和中间块中的每一个处决定二叉树划分方案是否应继续下去,且如果该方案进一步继续下去,则应使用水平或垂直二叉树划分。在一些实现方式中,进一步的划分可以在预定最小分区大小(在一个或两个维度中)处停止。替代地,一旦达到距基本块的预定划分层级或深度,进一步的划分就可以停止。在一些实现方式中,分区的纵横比可受到限制。例如,分区的纵横比可以不小于1:4(或大于4:1)。因此,垂直与水平纵横比为4:1的垂直条形分区只能进一步垂直地二叉树划分成上分区和下分区,上分区和下分区中的每一个的垂直与水平纵横比为2:1。
在又一些其它示例中,三叉树划分方案可用于划分基本块或任何中间块,如图13所示。如图13的1302所示,三叉树图案可实现为垂直的,或者如图13的1304所示,三叉树图案可实现为水平的。虽然在图13中,不管垂直还是水平,示例性划分比率示出为1:2:1,但是可预定义其它比率。在一些实现方式中,可预定义两个或更多个不同的比率。这种三叉树划分方案可用于补充四叉树或二叉树划分结构,因为这种三叉树划分能够捕获位于一个连续分区中的块中心的对象,而四叉树和二叉树总是沿着块中心划分,由此将对象划分成不同的分区。在一些实现方式中,示例性三叉树的划分宽度和高度总是2的幂,以避免额外的变换。
上述划分方案可以在不同的划分层级以任何方式组合。作为一个示例,上述四叉树和二叉树划分方案可以组合,以将基本块划分成四叉树+二叉树(quadtree-binary-tree,QTBT)结构。在这种方案中,基本块或中间块/分区可以是四叉树划分或二叉树划分,其受到一组预定条件的约束(如果指定的话)。在图14中示出了特定示例。在图14的示例中,基本块首先被四叉树划分成四个分区,如1402、1404、1406和1408所示。之后,所生成的每个分区要么被四叉树划分成四个进一步的分区(例如1408),要么被二叉树划分成下一层级的两个进一步的分区(水平或垂直,例如1402或1406,例如两个进一步的分区是对称的),要么不被划分(例如1404)。对于正方形分区,可递归地允许二叉树或四叉树划分,如1410的整个示例性划分图案和1420中的对应树结构/表示所示,其中实线表示四叉树划分,虚线表示二叉树划分。标志可用于每个二叉树划分节点(非叶二叉树分区),以指示二叉树划分是水平的还是垂直的。例如,如与1410的划分结构一致的1420所示,标志“0”可表示水平二叉树划分,标志“1”可表示垂直二叉树划分。对于四叉树划分的分区,无需指示划分类型,这是因为四叉树划分总是水平地和垂直地划分块或分区,以产生4个大小相等的子块/分区。在一些实现方式中,标志“1”可表示水平二叉树划分,标志“0”可表示垂直二叉树划分。
在QTBT的一些示例性实现方式中,四叉树和二叉树划分规则集可由以下预定义参数及与之相关联的对应函数表示:
–CTU size:四叉树的根节点大小(基本块的大小)
–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)。否则,未超过MaxBTSize的节点可通过二叉树来划分。在图14的示例中,基本块是128×128。根据预定规则集,基本块只能被四叉树划分。基本块的划分深度为0。所生成的四个分区中的每一个是64×64,未超过MaxBTSize,可以在层级1进一步进行四叉树或二叉树划分。过程继续下去。当二叉树深度达到MaxBTDepth(即,4)时,可以不考虑进一步的划分。当二叉树节点的宽度等于MinBTSize(即,4)时,可以不考虑进一步的水平划分。类似地,当二叉树节点的高度等于MinBTSize时,不考虑进一步的垂直划分。
在一些示例性实现方式中,上述QTBT方案可配置成支持亮度和色度具有相同QTBT结构或不同QTBT结构的灵活性。例如,对于P条带和B条带,一个CTU中的亮度CTB和色度CTB可共享相同QTBT结构。然而,对于I条带,亮度CTB可通过QTBT结构划分成CB,而色度CTB可通过另一QTBT结构划分成色度CB。这意味着CU可用于指代I条带中的不同颜色通道,例如,I条带可由亮度分量的编码块或两个色度分量的编码块组成,而P条带或B条带中的CU可由所有三个颜色分量的编码块组成。
在一些其它实现方式中,QTBT方案可使用上述三叉树方案来补充。这种实现方式可称为多类型树(multi-type-tree,MTT)结构。例如,除了节点的二叉树划分之外,可选择图13的三叉树划分图案之一。在一些实现方式中,只有正方形节点可进行三叉树划分。可使用附加标志来指示三叉树划分是水平的还是垂直的。
两层级或多层级树(例如,QTBT实现方式和由三叉树划分补充的QTBT实现方式)的设计可能主要受到复杂性降低的推动。理论上,遍历树的复杂性是TD,其中T指示划分类型的数量,D是树的深度。可通过使用多种类型(T)同时减小深度(D)来进行权衡。
在一些实现方式中,CB可被进一步划分。例如,为了在编码和解码过程期间进行帧内或帧间预测,CB可被进一步划分成多个预测块(PB)。换句话说,CB可被进一步划分成不同的子分区,在这些子分区中可进行独立的预测决策/配置。并行地,为了描绘执行视频数据的变换或逆变换的层级,CB可被进一步划分成多个变换块(TB)。将CB划分成PB和TB的划分方案可以相同或者可以不同。例如,可基于例如视频数据的各种特性使用它自己的过程来执行每个划分方案。在一些示例性实现方式中,PB划分方案和TB划分方案可以是独立的。在一些其它示例性实现方式中,PB划分方案和边界与TB划分方案和边界可以相关联。例如,在一些实现方式中,TB可以在PB划分之后划分,具体地,在遵循编码块的划分确定每个PB之后,每个PB可进一步划分成一个或多个TB。例如,在一些实现方式中,PB可划分成一个TB、两个TB、四个TB或其它数量的TB。
在一些实现方式中,为了将基本块划分成编码块并进一步划分成预测块和/或变换块,可以不同地处理亮度通道和色度通道。例如,在一些实现方式中,对于亮度通道,可允许将编码块划分成预测块和/或变换块,而对于色度通道,可以不允许这样将编码块划分成预测块和/或变换块。在这种实现方式中,亮度块的变换和/或预测因此可以仅在编码块层级执行。对于另一示例,亮度通道和色度通道的最小变换块大小可以不同,例如,与色度通道相比,可允许将亮度通道的编码块划分成更小的变换块和/或预测块。对于又一示例,将编码块划分成变换块和/或预测块的最大深度在亮度通道和色度通道之间可以不同,例如,与色度通道相比,可允许将亮度通道的编码块划分成更深的变换块和/或预测块。对于特定示例,亮度编码块可划分成多个大小的变换块,这些变换块可由向下进行多达2个层级的递归划分来表示,且可允许诸如正方形、2:1/1:2和4:1/1:4的变换块形状以及从4×4到64×64的变换块大小。然而,对于色度块,只可允许对亮度块指定的最大可能变换块。
在将编码块划分成PB的一些示例性实现方式中,PB划分的深度、形状和/或其它特性可取决于PB是帧内编码还是帧间编码。
可以在各种示例性方案中实现将编码块(或预测块)划分成变换块,这些方案包括但不限于递归或非递归的四叉树划分和预定图案划分,而且还考虑了编码块或预测块的边界处的变换块。通常,所生成的变换块可处于不同的划分层级,可以不具有相同的大小,且可以不需要是正方形形状(例如,所生成的变换块可以是具有一些允许的大小和纵横比的矩形)。在与图15、图16和图17相关的下文中进一步详细地描述其他示例。
然而,在一些其它实现方式中,通过上述任一划分方案获得的CB可用作预测和/或变换的基本编码块或最小编码块。换句话说,为了执行帧间预测/帧内预测和/或为了变换,不执行进一步的划分。例如,从上述QTBT方案获得的CB可直接用作执行预测的单元。具体地,这种QTBT结构消除了多个分区类型的概念,即,消除了CU、PU和TU的分离,并支持如上所述的CU/CB分区形状的更大灵活性。在这种QTBT块结构中,CU/CB可具有正方形或矩形形状。这种QTBT的叶节点用作预测和变换处理的单元,而无需任何进一步的划分。这意味着CU、PU和TU在这种示例性QTBT编码块结构中具有相同的块大小。
上述各种CB划分方案以及将CB划分成PB和/或TB的进一步划分(包括非PB/TB划分)可以以任何方式组合。提供以下特定实现方式作为非限制性示例。
下文描述了编码块和变换块划分的特定示例性实现方式。在这种示例性实现方式中,可使用递归四叉树划分或上述预定划分图案(例如图9和图10中的划分图案)将基本块划分成编码块。在每一层级,可由本地视频数据特性确定是否应继续特定分区的进一步四叉树划分。所生成的CB可处于各种四叉树划分层级,且具有各种大小。关于是否使用帧间图像(时间)预测或帧内图像(空间)预测对图像区域进行编码的决定,可以在CB级(或CU级,对于所有三个颜色通道)做出。根据预定PB划分类型,每个CB可进一步划分成一个PB、两个PB、四个PB或其它数量的PB。在一个PB内,可应用相同的预测过程,且可基于PB向解码器发送相关信息。在通过基于PB划分类型应用预测过程来获得残差块之后,可根据与CB的编码树类似的另一四叉树结构,将CB划分成TB。在该特定实现方式中,CB或TB可以但不是必须限于正方形形状。此外,在该特定示例中,对于帧间预测,PB可以是正方形或矩形形状,而对于帧内预测,PB只可以是正方形。编码块可划分成例如四个正方形的TB。每个TB可进一步递归地(使用四叉树划分)划分成更小的TB,其称为残差四叉树(Residual Quadtree,RQT)。
下文进一步描述将基本块划分成CB、PB和/或TB的另一示例性实现方式。例如,与使用诸如图9或图10所示的多个划分单元类型不同,可使用具有嵌套多类型树的四叉树,嵌套多类型树使用二叉树和三叉树划分段结构(例如,如上所述的QTBT或具有三叉树划分的QTBT)。可舍弃CB、PB和TB的分离(即,将CB划分成PB和/或TB,以及将PB划分成TB),除非在需要尺寸远大于最大变换长度的CB时,其中这种CB可能需要进一步划分。该示例性划分方案可设计成支持CB划分形状的更大灵活性,使得可以在CB级上执行预测和变换,而无需进一步划分。在这种编码树结构中,CB可具有正方形或矩形形状。具体地,编码树块(CTB)首先可通过四叉树结构来划分。然后,四叉树叶节点可通过嵌套多类型树结构来进一步划分。图11示出了使用二叉树或三叉树划分的嵌套多类型树结构的示例。具体地,图11的示例性多类型树结构包括四种划分类型,称为垂直二叉树划分(SPLIT_BT_VER)(1102)、水平二叉树划分(SPLIT_BT_HOR)(1104)、垂直三叉树划分(SPLT_TT_VER)(1106)和水平三叉树划分(1108)。然后,CB对应于多类型树的叶。在该示例性实现方式中,除非CB远大于最大变换长度,否则该段用于预测和变换处理,而无需任何进一步的划分。这意味着在大多数情况下,CB、PB和TB在具有嵌套多类型树编码块结构的四叉树中具有相同的块大小。当支持的最大变换长度小于CB的颜色分量的宽度或高度时,会出现例外。在一些实现方式中,除了二叉树或三叉树划分之外,图11的嵌套图案还可包括四叉树划分。
图12示出了四叉树的一个特定示例,该四叉树具有用于一个基本块的块分区的嵌套多类型树编码块结构(包括四叉树、二叉树和三叉树划分选项)。更详细地,图12示出了基本块1200被四叉树划分成四个正方形分区1202、1204、1206和1208。对于四叉树划分的分区中的每一个,做出进一步使用图11的多类型树结构和四叉树进行进一步划分的决定。在图12的示例中,分区1204没有进一步划分。分区1202和1208中的每一个采用另一四叉树划分。对于分区1202,第二层级四叉树划分的左上分区、右上分区、左下分区和右下分区分别采用第三层级四叉树划分、图11的水平二叉树划分1104、无划分和图11的水平三叉树划分1108。分区1208采用另一四叉树划分,第二层级四叉树划分的左上分区、右上分区、左下分区和右下分区分别采用图11的垂直三叉树划分1106的第三层级划分、无划分、无划分和图11的水平二叉树划分1104。1208的第三层级左上分区的两个子分区分别根据图11的水平二叉树划分1104和水平三叉树划分1108来进一步划分。分区1206采用遵循图11的垂直二叉树划分1102划分成两个分区的第二层级划分图案,这两个分区根据图11的水平三叉树划分1108和垂直二叉树划分1102在第三层级中进一步划分。根据图11的水平二叉树划分1104,第四层级划分进一步应用于这两个分区之一。
对于上述特定示例,最大亮度变换大小可以是64×64,支持的最大色度变换大小可不同于亮度,例如32×32。即使图12中的上述示例性CB通常不会进一步划分成更小的PB和/或TB,当亮度编码块或色度编码块的宽度或高度大于最大变换宽度或高度时,亮度编码块或色度编码块可以在水平方向和/或垂直方向上自动地划分,以满足该方向上的变换大小限制。
在上述将基本块划分成CB的特定示例中,如上所述,编码树方案可支持亮度和色度具有不同的块树结构的能力。例如,对于P条带和B条带,一个CTU中的亮度CTB和色度CTB可共享相同的编码树结构。例如,对于I条带,亮度和色度可具有不同的编码块树结构。当应用不同的块树结构时,亮度CTB可通过一个编码树结构被划分成亮度CB,且色度CTB通过另一编码树结构被划分成色度CB。这意味着I条带中的CU可由亮度分量的编码块或两个色度分量的编码块组成,而P条带或B条带中的CU总是由所有三个颜色分量的编码块组成,除非视频是单色的。
当编码块进一步划分成多个变换块时,其中的变换块可按照各种顺序或扫描方式在码流中排序。下文进一步详细描述用于将编码块或预测块划分成变换块以及变换块的编码顺序的示例性实现方式。在一些示例性实现方式中,如上所述,变换划分可支持多种形状的变换块,例如1:1(正方形)、1:2/2:1和1:4/4:1,而变换块大小的范围从例如4×4到64×64。在一些实现方式中,如果编码块小于或等于64×64,则变换块划分可仅应用于亮度分量,使得对于色度块,变换块大小与编码块大小相同。否则,如果编码块宽度或高度大于64,则亮度编码块和色度编码块可分别隐式地划分成min(W,64)×min(H,64)的倍数个变换块和min(W,32)×min(H,32)的倍数个变换块。
在变换块划分的一些示例性实现方式中,对于帧内编码块和帧间编码块,编码块可进一步划分成多个变换块,其中划分深度多达预定数量的层级(例如,2个层级)。变换块划分深度和大小可以是相关的。对于一些示例性实现方式,从当前深度的变换大小到下一深度的变换大小的映射如下面的表1所示。
表1:变换划分大小设置
当前深度的变换大小 下一深度的变换大小
TX_4×4 TX_4×4
TX_8×8 TX_4×4
TX_16×16 TX_8×8
TX_32×32 TX_16×16
TX_64×64 TX_32×32
TX_4×8 TX_4×4
TX_8×4 TX_4×4
TX_8×16 TX_8×8
TX_16×8 TX_8×8
TX_16×32 TX_16×16
TX_32×16 TX_16×16
TX_32×64 TX_32×32
TX_64×32 TX_32×32
TX_4×16 TX_4×8
TX_16×4 TX_8×4
TX_8×32 TX_8×16
TX_32×8 TX_16×8
TX_16×64 TX_16×32
TX_64×16 TX_32×16
基于表1的示例性映射,对于1:1正方形块,下一层级变换划分可创建四个1:1正方形子变换块。变换划分可例如在4×4处停止。因此,当前深度的变换大小4×4对应于下一深度的相同大小4×4。在表1的示例中,对于1:2/2:1非正方形块,下一层级变换划分可创建两个1:1正方形子变换块,而对于1:4/4:1非正方形块,下一层级变换划分可创建两个1:2/2:1子变换块。
在一些示例性实现方式中,对于帧内编码块的亮度分量,可针对变换块划分应用额外的限制。例如,对于变换划分的每个层级,所有子变换块可被限制为具有相等大小。例如,对于32×16编码块,层级1变换划分创建两个16×16子变换块,层级2变换划分创建八个8×8子变换块。换句话说,必须将第二层级划分应用于所有第一层级子块,以保持变换单元的大小相等。图15示出了遵循表1的帧内编码正方形块的变换块划分的示例,以及由箭头示出的编码顺序。具体地,1502示出了正方形编码块。1504示出了根据表1划分成4个大小相等的变换块的第一层级划分,变换块的编码顺序由箭头指示。1506示出了根据表1将所有第一层级大小相等的块划分成16个大小相等的变换块的第二层级划分,变换块的编码顺序由箭头指示。
在一些示例性实现方式中,对于帧间编码块的亮度分量,可以不应用帧内编码的上述限制。例如,在第一层级变换划分之后,可通过再一个层级进一步独立地划分任一子变换块。因此,所生成的变换块可具有或者可以不具有相同大小。图16示出了将帧间编码块划分成变换块的示例性划分,及变换块的编码顺序。在图16的示例中,根据表1,帧间编码块1602划分成两个层级的变换块。在第一层级,帧间编码块划分成四个大小相等的变换块。然后,四个变换块中只有一个变换块(而不是所有变换块)进一步划分成四个子变换块,产生总共7个具有两种不同大小的变换块,如1604所示。这7个变换块的示例性编码顺序由图16的1604中的箭头示出。
在一些示例性实现方式中,对于色度分量,可应用变换块的一些附加限制。例如,对于色度分量,变换块大小可以与编码块大小一样大,但不小于预定大小,例如8×8。
在一些其它示例性实现方式中,对于宽度(W)或高度(H)大于64的编码块,亮度编码块和色度编码块可分别隐式地划分成min(W,64)×min(H,64)的倍数个变换单元和min(W,32)×min(H,32)的倍数个变换单元。这里,在本公开中,“min(a,b)”可返回a和b之中的较小值。
图17进一步示出了将编码块或预测块划分成变换块的另一替代性示例方案。如图17所示,代替使用递归变换划分,可根据编码块的变换类型将预定的一组划分类型应用于编码块。在图17所示的特定示例中,可应用6种示例性划分类型之一,以将编码块划分成各种数量的变换块。生成变换块划分的这种方案可应用于编码块或预测块。
更详细地说,图17的划分方案为任何给定的变换类型提供多达6种示例性划分类型(变换类型指的是例如主变换的类型,例如ADST等)。在该方案中,可基于例如率失真代价给每个编码块或预测块分配变换划分类型。在一个示例中,可基于编码块或预测块的变换类型来确定分配给编码块或编码块的变换划分类型。特定变换划分类型可对应于变换块划分大小和图案,如图17中示出的6个变换划分类型所示。可预定义各种变换类型和各种变换划分类型之间的对应关系。下文示出了一个示例,其中大写的标记指示可基于率失真代价分配给编码块或预测块的变换划分类型:
·PARTITION_NONE:指定等于块大小的变换大小。
·PARTITION_SPLIT:指定一个变换大小,该变换大小为块大小的宽度的1/2和块大小的高度的1/2。
·PARTITION_HORZ:指定一个变换大小,该变换大小与块大小的宽度相同且为块大小的高度的1/2。
·PARTITION_VERT:指定一个变换大小,该变换大小为块大小的宽度的1/2且与块大小的高度相同。
·PARTITION_HORZ4:指定一个变换大小,该变换大小与块大小的宽度相同且为块大小的高度的1/4。
·PARTITION_VERT4:指定一个变换大小,该变换大小为块大小的宽度的1/4且与块大小的高度相同。
在上述示例中,如图17所示的变换划分类型均包含用于已划分的变换块的统一变换大小。这仅仅是示例,而非限制。在一些其它实现方式中,混合变换块大小可用于处于特定划分类型(或图案)的已划分的变换块。
视频块(PB或CB,当未进一步划分成多个预测块时,还称为PB)可以以各种方式进行预测,而非直接进行编码,从而利用视频数据中的各种相关性和冗余来改善压缩效率。相应地,可以以各种模式执行这种预测。例如,可经由帧内预测或帧间预测来预测视频块。特别是在帧间预测模式中,视频块可由来自一个或多个其它帧的一个或多个其它参考块或帧间预测块通过单步参考或复合参考帧间预测来预测。为了实现帧间预测,参考块可由其帧标识符(参考块的时间位置)和运动矢量来指定,运动矢量指示正在编码或解码的当前块与参考块(参考块的空间位置)之间的空间偏移。可以在码流中用信号发送参考帧标识和运动矢量。作为空间块偏移的运动矢量可直接用信号发送,或者本身可由另一参考运动矢量或预测运动矢量预测。例如,当前运动矢量可直接由(例如,候选相邻块的)参考运动矢量预测,或者通过参考运动矢量和当前运动矢量与参考运动矢量之间的运动矢量差(motionvector difference,MVD)的组合来预测。后者可称为具有运动矢量差的合并模式(MMVD)。参考运动矢量可以在码流中标识为指针,该指针指向例如当前块的空间相邻块或者时间相邻但空间上并置的块。
返回到帧内预测过程,其中块(例如,亮度或色度预测块,或编码块(如果未进一步划分成预测块的话))中的样本由相邻的样本、下一相邻的样本、或者其它一行或多行的样本或其组合预测,以生成预测块。然后,可通过变换随后量化来处理正在编码的实际块和预测块之间的残差。使得各种帧内预测模式可用,且可以在码流中用信号发送与帧内模式选择相关的参数和其它参数。例如,各种帧内预测模式可涉及用于预测样本的一个或多个行位置、从一个或多个预测行选择预测样本所沿的方向、以及其它特殊的帧内预测模型。
例如,一组帧内预测模式(可互换地称为“帧内模式”)可包括预定数量的定向帧内预测模型。如上文关于图1的示例性实现方式所描述的,这些帧内预测模式可对应于预定数量的方向,沿着这些方向,选择块外样本作为在特定块中正在预测的样本的预测。在另一特定示例性实现方式中,可支持和预定义与水平轴成45度至207度的角度相对应的八(8)个主定向模式。
在帧内预测的一些其它实现方式中,为了进一步利用定向纹理中更多种类的空间冗余,可以将定向帧内模式进一步扩展到具有更细粒度的角度集。例如,如图19所示,上述8角度实现方式可配置成提供八个标称角度,称为V_PRED、H_PRED、D45_PRED、D135_PRED、D113_PRED、D157_PRED、D203_PRED和D67_PRED,且对于每个标称角度,可添加预定数量的(例如,7个)更细分角度。通过这种扩展,与相同数量的预定定向帧内模式相对应地,更大总数的(例如,在该示例中为56个)定向角度可用于帧内预测。预测角度可由标称帧内角度加上角度增量(angle delta)来表示。对于上述7个更细分角度方向用于每个标称角度的特定示例,角度增量可以是3度的步长的-3~3倍。可使用一些作为角度方案,如图18所示,其中具有65个不同的预测角度。
在一些实现方式中,作为上述定向帧内模式的替代或者除了上述定向帧内模式之外,还可预定义预定数量的非定向帧内预测模式并使预定数量的非定向帧内预测模式可用。例如,可指定被称为平滑帧内预测模式的5个非定向帧内模式。这些非定向帧内模式预测模式可具体地称为DC、PAETH、SMOOTH、SMOOTH_V和SMOOTH_H帧内模式。图20示出了在这些示例性非定向模式下对特定块的样本的预测。作为示例,图20示出了由来自顶部相邻行和/或左侧相邻行的样本预测4×4块2002。块2002中的特定样本2010可对应于块2002的上方相邻行中样本2010的正上方样本2004、作为上方相邻行和左侧相邻行的交叉点的样本2010的左上样本2006、以及块2002的左侧相邻行中样本2010的正左侧样本2008。对于示例性DC帧内预测模式,左侧相邻样本2008和上方相邻样本2004的平均值可用作样本2010的预测值。对于示例性PAETH帧内预测模式,可提取上方参考样本2004、左侧参考样本2008和左上参考样本2006,然后可以将这三个参考样本之中最接近(上方+左侧-左上)的那个值设置为样本2010的预测值。对于示例性SMOOTH_V帧内预测模式,可通过沿着左上相邻样本2006和左侧相邻样本2008的垂直方向的二次插值来预测样本2010。对于示例性SMOOTH_H帧内预测模式,可通过沿着左上相邻样本2006和上方相邻样本2004的水平方向的二次插值来预测样本2010。对于示例性SMOOTH帧内预测模式,可通过沿着垂直方向和水平方向的二次插值的平均值来预测样本2010。上述非定向帧内模式实现方式仅作为非限制性示例示出。还设想其它相邻行、以及样本的其它非定向选择、以及组合预测样本以对预测块中的特定样本进行预测的方式。
编码器在各种编码层级(图像、条带、块、单元等)从上述定向或非定向模式中选择特定帧内预测模式,可以在码流中用信号发送。在一些示例性实现方式中,首先可用信号发送示例性8个标称定向模式以及5个非角度平滑模式(总共13个选项)。然后,如果用信号发送的模式是8个标称角度帧内模式之一,则进一步用信号发送索引,以向对应用信号发送的标称角度指示所选择的角度增量。在一些其它示例性实现方式中,所有帧内预测模式可一起被索引(例如,56个定向模式加上5个非定向模式以产生61个帧内预测模型)以用于用信号发送。
在一些示例性实现方式中,示例性56个或其它数量的定向帧内预测模式可以用统一定向预测器来实现,该统一定向预测器将块的每个样本投影到参考子样本位置,并通过2抽头双线性滤波器对参考样本进行插值。
在一些实现方式中,为了捕获与边缘上的参考的衰变空间相关性,可设计称为FILTER INTRA模式的附加滤波器模式。对于这些模式,除了块外样本之外,块内的预测样本可用作块内某些图像片的帧内预测参考样本。例如,这些模式可以是预定的,且可用于至少亮度块(或仅亮度块)的帧内预测。可预先设计预定数量的(例如,五个)滤波器帧内模式,每个滤波器帧内模式由一组n抽头滤波器(例如,7抽头滤波器)表示,来反映例如4×2图像片中的样本和与之相邻的n个邻居之间的相关性。换句话说,n抽头滤波器的权重因子可取决于位置。以8×8块、4×2图像片和7抽头滤波为例,如图21所示,8×8块2002可划分成8个4×2图像片。这些图像片在图21中由B0、B1、B1、B3、B4、B5、B6和B7表示。对于每个图像片,该图像片的7个邻居在图21中由R0~R7指示,可用于预测当前图像片中的样本。对于图像片B0,所有邻居可能已重建。然而,对于其它图像片,一些邻居在当前块中,因此可能尚未重建,于是直接邻居的预测值用作参考。例如,如图21中所指示的图像片B7的所有邻居均未重建,因此转而使用邻居的预测样本。
在帧内预测的一些实现方式中,可使用一个或多个其它颜色分量来预测一个颜色分量。颜色分量可以是YCrCb、RGB、XYZ颜色空间等中的任一分量。例如,可实现来自亮度分量(例如,亮度参考样本)的色度分量(例如,色度块)的预测,来自亮度分量的色度分量称为来自亮度的色度或CfL。在一些示例性实现方式中,只可允许从亮度到色度进行跨颜色预测。例如,可以将色度块中的色度样本建模成一致重建的亮度样本的线性函数。CfL预测可如下实现:
CfL(α)=α×LAC+DC (1)
其中,LAC表示亮度分量的AC贡献,α表示线性模型的参数,DC表示色度分量的DC贡献。例如,对于块的每个样本,获得AC分量,而对于整个块,获得DC分量。具体地,重建亮度样本可子采样到色度分辨率,然后可以从每个亮度值减去平均亮度值(亮度的DC)以形成亮度的AC贡献。然后,在等式(1)的线性模式下使用亮度的AC贡献来预测色度分量的AC值。为了从亮度AC贡献近似或预测色度AC分量,与需要解码器计算缩放参数不同,示例性CfL实现方式可基于原始色度样本确定参数α,并在码流中用信号发送参数。这降低了解码器复杂度并产生更精确的预测。对于色度分量的DC贡献,在一些示例性实现方式中,可以在色度分量内使用帧内DC模式来计算色度分量的DC贡献。
在帧内预测中参考行的一些示例性实现方式中,可使用多行帧内预测。在这些实现方式中,在帧内预测中多于一个参考行可供选择,且编码器决定并用信号发送哪个参考行用于生成帧内预测值。可以在帧内预测模式之前用信号发送参考行索引,且仅在用信号发送非零参考行索引的情况下,才允许最可能的预测模式。参考图22,描绘了4个参考行(从参考行0到参考行3)以及左上参考样本的示例,其中每个参考行由六个段组成,这六个段即段A至段F(如2202-2212指示的)。另外,段A和段F可分别用来自段B和段E的最近样本填充。多参考行帧内预测可与定向帧内预测和非定向帧内预测一起使用。
然后,可实现帧内预测块或帧间预测块的残差的变换,然后,实现变换系数的量化。为了执行变换,帧内编码块和帧间编码块可以在变换之前进一步划分成多个变换块(有时可互换地用作“变换单元”,即使术语“单元”通常用于表示三个颜色通道的集合,例如,“编码单元”可包括亮度编码块和色度编码块)。在一些实现方式中,可指定已编码块(或预测块)的最大划分深度(术语“已编码块”可与“编码块“互换地使用)。例如,这种划分不会超过2个层级。可以在帧内预测块和帧间预测块之间不同地处理将预测块分成变换块的划分。然而,在一些实现方式中,这种划分可以在帧内预测块和帧间预测块之间类似。
在一些示例性实现方式中,对于帧内编码块,可以以所有变换块具有相同大小的方式进行变换划分,且以光栅扫描顺序对变换块进行编码。图23示出了帧内编码块的这种变换块划分的示例。具体地,图23示出了编码块2302通过中间层级四叉树划分2304划分成16个相同块大小的变换块,如2306所示。用于编码的示例性光栅扫描顺序由图23中的有序箭头示出。
在一些示例性实现方式中,对于帧间编码块,变换单元划分可以以递归方式进行,其中划分深度多达预定数量的层级(例如,2个层级)。如图23所示,对于任何子分区和任何层级,划分可停止或递归地继续下去。具体地,图24示出了一个示例,其中块2402划分成四个四叉树子块2404,且其中一个子块进一步划分成四个第二层级变换块,而其它子块的划分在第一层级之后停止,从而产生总共7个具有两种不同大小的变换块。用于编码的示例性光栅扫描顺序进一步由图24中的有序箭头示出。虽然图24示出了正方形变换块的多达两个层级的四叉树划分的示例性实现方式,但是在一些生成实现方式中,变换划分可支持1:1(正方形)、1:2/2:1和1:4/4:1变换块形状和范围从4×4到64×64的大小。在一些示例性实现方式中,如果编码块小于或等于64×64,则变换块划分可仅应用于亮度分量(换句话说,在该条件下,色度变换块可与编码块相同)。否则,如果编码块宽度或高度大于64,则亮度编码块和色度编码块可分别隐式地划分成min(W,64)×min(H,64)的倍数个变换块和min(W,32)×min(H,32)的倍数个变换块。
然后,可以对上述每个变换块进行主变换。主变换基本上将变换块中的残差从空间域移动到频域。在实际主变换的一些实现方式中,为了支持上述示例性扩展编码块划分,可允许多个变换大小(对于两个维度中的每个维度,范围从4点到64点)和变换形状(正方形;宽度/高度之比为2:1/1:2和4:1/1:4的矩形)。
转到实际主变换,在一些示例性实现方式中,2D变换过程可涉及使用混合变换内核(例如,混合变换内核可由已编码残差变换块的每个维度的不同1D变换组成)。示例性1D变换内核可包括但不限于:a)4点、8点、16点、32点、64点DCT-2;b)4点、8点、16点不对称DST(DST-4、DST-7)及其翻转版本;c)4点、8点、16点、32点恒等变换。用于每个维度的变换内核的选择可基于率失真(RD)标准。例如,表2列出了可实现的DCT-2和不对称DST的基函数。
表2:示例性主变换基函数(用于N点输入的DCT-2、DST-4和DST-7)
Figure BDA0004141906410000321
在一些示例性实现方式中,用于特定主变换实现方式的混合变换内核的可用性可基于变换块大小和预测模式。表3列出了示例性依赖性,其示出了示例性AV1混合变换内核及其基于预测模式和块大小的可用性。这里,→和↓表示水平维度和垂直维度;√和×表示该块大小和预测模式的内核的可用性。对于色度分量,可以以隐式方式执行变换类型选择。例如,对于帧内预测残差,如表4所指定的,可根据帧内预测模式来选择变换类型。对于帧间预测残差,可根据共址的亮度块的变换类型选择来选择色度块的变换类型。因此,对于色度分量,在码流中不存在变换类型信令。
表3:AV1混合变换内核及其基于预测模式和块大小的可用性
Figure BDA0004141906410000322
/>
Figure BDA0004141906410000331
表4:色度分量帧内预测残差的变换类型选择
Figure BDA0004141906410000332
Figure BDA0004141906410000341
/>
在一些实现方式中,可以对主变换系数执行二次变换。例如,如图25所示,可以在正向主变换和量化(在编码器处)之间以及在解量化和逆主变换(在解码器侧)之间应用LFNST(low-frequency non-separable transform,低频不可分离变换),LFNST称为缩减二次变换,以进一步对主变换系数进行解相关。本质上,LFNST可以取主变换系数的一部分,例如低频部分(因此,从变换块的整组主变换系数“缩减”)以进行二次变换。在示例性LFNST中,可根据变换块大小应用4×4不可分离变换或8×8不可分离变换。例如4×4LFNST可应用于小变换块(例如,min(宽度,高度)<8),而8×8LFNST可应用于较大变换块(例如,min(宽度,高度)>8)。例如,如果8×8变换块经受4×4LFNST,则只有8×8主变换系数的低频4×4部分进一步经受二次变换。
如图25具体示出的,变换块可以是8×8(或16×16)。因此,变换块的正向主变换2502产生8×8(或16×16)主变换系数矩阵2504,其中每个正方形单元表示2×2(或4×4)部分。例如,正向LFNST的输入可以不是完整的8×8(或16×16)主变换系数。例如,4×4(或8×8)LFNST可用于二次变换。因此,如阴影部分(左上)2506所指示的,仅主变换系数矩阵2504的4×4(或8×8)低频主变换系数可用作LFNST的输入。主变换系数矩阵的其余部分可以不进行二次变换。因此,在二次变换之后,主变换系数的经受LFNST的部分变成二次变换系数,而不经受LFNST的剩余部分(例如,矩阵2504的非阴影部分)保持对应的主变换系数。在一些示例性实现方式中,不经受二次变换的剩余部分可全部设置为零系数。
下文描述了用于LFNST的不可分离变换的应用示例。为了应用示例性4×4LFNST,4×4输入块X(表示例如主变换系数块的4×4低频部分,例如图25的主变换矩阵1404的阴影部分2506)可表示为:
Figure BDA0004141906410000342
该2D输入矩阵首先可以以示例性顺序线性化或扫描成向量
Figure BDA0004141906410000343
Figure BDA0004141906410000344
然后,可以将4×4LFNST的不可分离变换计算成
Figure BDA0004141906410000345
其中/>
Figure BDA0004141906410000346
指示输出变换系数矢量,T是16×16变换矩阵。随后,所生成的16×1系数矢量/>
Figure BDA0004141906410000347
使用该块的扫描顺序(例如,水平、垂直或对角线)反向扫描成4×4块。具有较小索引的系数可与较小扫描索引一起放置在4×4系数块中。以这种方式,可通过第二变换T进一步利用主变换系数X中的冗余,从而提供额外的压缩增强。
上述示例性LFNST基于直接矩阵相乘方法,以应用不可分离变换,从而在不进行多次迭代的情况下一次实现不可分离变换。在一些其他示例性实现方式中,可进一步减小示例性4×4LFNST的不可分离变换矩阵(T)的维度,以最小化计算复杂度和用于存储变换系数的存储器空间需求。这种实现方式可称为缩减不可分离变换(reduced non-separatetransform,RST)。更详细地说,RST的主要思想是将N(在上述示例中,N为4×4=16,但是对于8×8块,N可等于64)维矢量映射到不同空间中的R维矢量,其中N/R(R<N)表示维度缩减因子。因此,代替N×N变换矩阵,RST矩阵变成R×N矩阵,如下:
Figure BDA0004141906410000351
其中变换矩阵的R行是N维空间的缩减R基。因此,变换将N维输入矢量转换成缩减R维的输出矢量。因此,如图25所示,从主系数2506变换的二次变换系数2508在维度上按一定因子或N/R缩减。图25中围绕2508的三个正方形可以用零填充。
RTS的逆变换矩阵可以是其正向变换的转置。对于示例性8×8LFNST(与上述4×4LFNST相比,这里的描述更为多样),可应用示例性缩减因子4,因此64×64直接不可分离变换矩阵相应地缩减成16×64直接矩阵。此外,在一些实现方式中,可以将输入主系数的一部分(而不是全部输入主系数)线性化成LFNST的输入矢量。例如,仅示例性8×8输入主变换系数的一部分可线性化成上述X矢量。对于特定示例,在8×8主变换系数矩阵的四个4×4象限中,右下角(高频系数)可以忽略,只有其它三个象限使用预定扫描顺序线性化成48×1矢量(而不是64×1矢量)。在这种实现方式中,不可分离变换矩阵可进一步从16×64缩减到16×48。
因此,可以在解码器侧使用示例性缩减48×16逆RST矩阵来生成8×8核心(主)变换系数的左上、右上和左下4×4象限。具体地,当应用进一步缩减的16×48RST矩阵(而不是具有相同变换集配置的16×64RST)时,不可分离二次变换可以从8×8主系数块的三个4×4象限块(不包括右下4×4块)中获取矢量化的48个矩阵元素作为输入。在这种实现方式中,省略的右下4×4主变换系数可以在二次变换中忽略掉。这种进一步缩减的变换将48×1矢量转换成16×1输出矢量,该输出矢量反向扫描成4×4矩阵以填充图25的2508。围绕2508的二次变换系数的三个正方形可以用零填充。
借助于RST的维度的这种缩减,减少了存储所有LFNST矩阵的存储器使用。在上述示例中,例如,与未进行维度缩减的实现方式相比,存储器使用可以从10KB减少到8KB,但性能下降相当小。
在一些实现方式中,为了降低复杂度,可进一步限制LFNST,以仅在要进行LFNST的主变换系数部分之外(例如,图25中1404的2506部分之外)的所有系数都不重要时才可应用LFNST。因此,当应用LFNST时,所有仅主变换系数(例如,图25的主系数矩阵2504的非阴影部分)可接近零。这种限制允许对最后有效位置上的LFNST索引信令进行调节,因此避免一些额外的系数扫描,当不应用该限制时,可能需要这些额外的系数扫描来检查特定位置处的有效系数。在一些实现方式中,LFNST的最坏情况处理(就每像素的乘法而言)可分别限制用于将4×4和8×8块变换为8×16和8×48的不可分离变换。在这些情况下,对于小于16的其它尺寸,当应用LFNST时,最后有效扫描位置必须小于8。对于形状为4×N和N×4且N>8的块,上述限制意味着LFNST现在仅在左上4×4区域应用一次。由于当应用LFNST时,所有仅主变换系数均为零,因此在这种情况下,主变换所需的操作量减少。从编码器的角度来看,当测试LFNST变换时,可简化系数的量化。必须对前16个系数(按扫描顺序)最大程度地进行率失真优化量化(RDO),剩余系数可强制为零。
在一些示例性实现方式中,可用的RST内核可指定为多个变换集,每个变换集包括多个不可分离变换矩阵。例如,用于LFNST的每个变换集可能总共有4个变换集和2个不可分离变换矩阵(内核)。这些内核可以预先离线训练,因此这些内核是数据驱动的。离线训练的变换内核可存储在存储器中或硬编码在编码或解码设备中,以在编码/解码过程期间使用。在编码或解码过程期间对变换集的选择可由帧内预测模式确定。可预定义从帧内预测模式到变换集的映射。这种预定映射的示例如表5所示。例如,如表5所示,如果三个跨分量线性模型(CCLM)模式(INTRA_LT_CLM、INTRA_T_CCLM或INTRA_L_CCLM)之一用于当前块(即,81<=predModeIntra<=83),则可以给当前色度块选择变换集0。对于每个变换集,所选择的不可分离二次变换候选可进一步由显式地用信号发送的LFNST索引来指定。例如,在变换系数之后,可针对每个帧内CU在码流中用信号发送索引一次。
表5:变换选择表
Figure BDA0004141906410000361
Figure BDA0004141906410000371
由于LFNST限制为仅在第一系数子组或部分之外的所有系数在上述示例性实现方式中都不重要时才可应用,因此LFNST索引编码取决于最后有效系数的位置。此外,LFNST索引可进行上下文编码,但不取决于帧内预测模式,且可仅对第一二进制(bin)进行上下文编码。此外,LFNST可应用于帧内条带和帧间条带中的帧内CU,以及应用于亮度和色度。如果启用双树,则可分别用信号发送用于亮度和色度的LFNST索引。对于帧间条带(禁用双树),单个LFNST索引可以用信号发送并用于亮度和色度。
在一些示例性实现方式中,当选择帧内子划分(Intra Sub-Partitioning,ISP)模式时,可禁用LFNST,且可以不用信号发送RST索引,因为即使RST应用于每个可行的划分块,性能改进也可能微不足道。此外,禁止RST用于ISP预测残差,可降低编码复杂度。在一些进一步的实现方式中,当选择多线性回归帧内预测(MIP)模式时,也可禁用LFNST,且可以不用信号发送RST索引。
考虑到由于现有的最大变换大小限制(例如,64×64),导致大于64×64(或表示最大变换块大小的任何其它预定大小)的大CU被隐式地划分(例如,TU平铺),因此LFNST索引搜索可针对特定数量的解码流水线阶段将数据缓冲增加四倍。因此,在一些实现方式中,允许LFNST的最大大小可限制为例如64×64。在一些实现方式中,可以仅在DCT2用作主变换时才启用LFNST。
在一些其它实现方式中,通过定义例如12个二次变换集,来给亮度分量提供帧内二次变换(intra secondary transform,IST),其中,每个集中具有例如3个内核。帧内模式相关索引可用于变换集选择。集内的内核选择可基于用信号发送的语法元素。当DCT2或ADST用作水平和垂直主变换时,可启用IST。
在一些实现方式中,根据块大小,可选择4×4不可分离变换或8×8不可分离变换。如果min(tx_width,tx_height)<8,则可选择4×4IST。对于较大的块,可使用8×8IST。这里,tx_width和tx_height分别对应于变换块宽度和高度。IST的输入可以是处于Z字形扫描顺序的低频主变换系数。
在一些其它示例性实现方式中,非限制性地,内核集的数量可以不是12,例如可存在14个二次变换内核集。二次内核集与各种帧内预测模式之间的映射可以是预定的或预配置的。例如,特定的帧内预测模式可映射到12个或14个集中的一个集。每个内核集可包含除了3之外的多个二次内核。例如,可以在每个二次变换内核集中存在6个二次内核。每个集中的内核的数量可基于与增加二次内核的数量相关的开销和潜在的额外编码增益之间的折衷来确定。在一些实现方式中,每个内核集中的内核数量可以是3至6。从实际和统计的角度来看,与编码开销的增加相比,在每个内核集中具有6个可选的二次变换内核之外的编码增益会变得足够小。
然而,在可分离二次变换或不可分离二次变换(为了更好地捕捉定向纹理图案)的传统实现方式中,由帧内预测模式到内核集映射(对应于帧内预测模式、主变换类型和块大小的某种组合)预定的每个二次内核集中可用的二次变换内核选项(或候选)的数量可以固定,且不是自适应的。关于内核使用的一些统计研究表明:对于帧内预测模式、主变换类型和块大小以及其他参数的某些组合,仅需要减少数量的内核选项(或候选)用于二次变换,来捕获定向信息。内核选项(或候选)的这种减少可减少所提出的方案的信令开销。下文的各种示例性实现方式提供根据帧内预测模式、主变换类型、块大小和其它潜在相关参数的组合的自适应二次内核选项的方案。
这些示例性实现方式可单独地使用或以任何顺序组合。此外,每个实现方式或实现方式的每种组合可应用于编码器,以确定二次变换内核,并在各种编码层级(块、宏块、条带、图像、帧等)用信号发送内核集和从内核集选择二次内核。每个实现方式或实现方式的每种组合还可应用于解码器,以基于已编码码流中的各种信令信息来识别二次变换内核集和从每个变换块的内核集选择的二次变换内核。采用所公开的方法的编码器和解码器可由处理电路(例如,一个或多个处理器或者一个或多个集成电路)实现。在一个示例方式中,一个或多个处理器执行存储在非暂时性计算机可读介质中的程序。在下文中,术语块可解释为变换块(TU)。然而,下文公开的基本原理适用于其它层级的视频块,包括但不限于预测块、编码块或编码单元(即,CU)。此外,在下文的公开内容中,术语块大小用于指代块宽度、块高度、块纵横比、块面积大小、块的宽度和高度中的较大值、块的宽度和高度中的较小值、块宽度和高度(当宽度和高度相等(正方形)时)中的任一个或它们的组合。此外,当帧内预测模式不是SMOOTH模式且依赖于根据给定预测方向的预测样本时,该帧内预测模式可称为角度或定向模式。
在一些常规示例性实现方式中,根据任一编码特性或编码特性的组合(包括但不限于帧内预测模式、主变换类型和块大小),可供选择的多个可用的二次变换内核可以是自适应的。对于特定块(例如,变换块),使用已编码码流中由stxIdx表示的指向对应内核集的二次变换内核索引(替代地称为“内核索引”或“索引”)来用信号发送在对应二次变换内核集中选择的最终候选。在一些实现方式中,可能的stxIdx值之一可指示不执行二次变换,因此不选择二次变换内核。在一些其它实现方式中,特定块是否经历二次变换可通过单独的信令来指示,因此,仅当对应的二次内核集中的实际内核用于特定块时,才可使用并用信号发送stxIdx。
在一些实现方式中,可以在这些编码特性(例如,帧内预测模式、主变换类型和块大小)的各种组合和二次变换内核集之间预先确定映射。每个内核集中的二次内核可进行预训练。二次内核可以是预定的,且对于编码器和解码器来说是已知的,因此不需要用信号发送。在一些其它实现方式中,二次内核可以在码流中用信号发送。虽然二次变换内核集可以在可用于选择的二次变换内核的数量方面彼此不同,但是各种二次变换内核集中实际训练的二次变换内核可重叠或者可以不重叠。术语“重叠”用于指示具有相同数量或不同数量的可选内核的两个不同的二次变换内核集可共享至少一个相同的预训练的二次变换内核。
在一些特定示例性实现方式中,对于用于编码块的二次变换或用于解码块的逆二次变换,取决于与块相关联的帧内预测模式,自适应数量的变换内核(或候选)可用于在编码和解码块时选择。作为非限制性示例,当帧内预测模式是垂直模式(V_PRED)、水平模式(H_PRED),平滑水平模式(SMOOTH_H_PRED)和平滑垂直模式(SMOUTH_V_PRED)中的任一模式时,对应的二次变换内核集可包含N个可供选择的变换内核(或候选),而对于所有其它帧内预测模式,对应的二次变换内核集可包含K个可供选择的变换内核(或候选),其中N和K可以是不同的非负整数值。例如,N和K可以是包括但不限于0、1、2、3、4、5和6的非负整数中的任一个。每个二次变换内核集中的实际二次变换内核可进行预训练。实际二次变换内核可以是预定义的,或者可以在码流中用信号发送。在一些示例性实现方式中,对于每个帧内编码块,可以从对应的二次变换内核集选择并使用特定的二次变换内核,且可以在码流中通过stxIdx用信号发送对特定内核的选择。虽然上述示例提供具有两个自适应数量的可选内核的二次变换内核集,但是基本原理可扩展到具有三个或更多个不同自适应数量的可选内核的内核集。
在一些其它特定实现方式中,根据特定块的主变换类型,在对应的二次变换内核集中可供选择的变换内核(或候选)的数量可以是自适应的。例如,当主变换类型是ADST_ADST(在垂直维度和水平维度上均是ADST)时,在对应的二次变换内核集中只有N个变换内核(或候选)可用,而对于所有其它主变换类型,K个变换内核(或候选)可用,其中N和K可以是不同的非负整数值。例如,N和K可以是包括但不限于0、1、2、3、4、5和6的非负整数中的任一个。每个二次变换内核集中的实际二次变换内核可进行预训练。实际二次变换内核可以是预定的,或者可以在码流中用信号发送。在一些示例性实现方式中,对于每个帧内编码块,可以从对应的二次变换内核集选择并使用特定的二次变换内核,且可以在码流中通过stxIdx用信号发送对特定内核的选择。虽然上述示例提供具有两个自适应数量的可选内核的二次变换内核集,但是基本原理可扩展到具有三个或更多个不同自适应数量的可选内核的内核集。
在一些其它示例性实现方式中,根据块大小,在对应的二次变换内核集中可供选择的变换内核(或候选)的数量可以是自适应的。例如,当变换块大小小于预定块大小阈值时,只有N个变换内核(或候选)可用,而对于大于或等于块大小阈值的变换块大小,K个变换内核(或候选)可用,其中N和K可以是不同的非负整数值。例如,N和K可以是包括但不限于0、1、2、3、4、5和6的非负整数中的任一个。块大小可以是宽度维度上的块大小、高度维度上的块大小、块面积大小、宽度维度和高度维度中的较大值、宽度维度和高度维度中的较小值等。例如,块大小阈值可指定为高度为8。又例如,块大小阈值可指定为宽度为8。又例如,块大小阈值可指定为宽度和高度中的较大值(或较小值)为8。又例如,块大小阈值可指定为面积(例如,64个像素)。又例如,块大小阈值可指定为W×H(例如,8×8)。这种块大小阈值可意味着宽度小于W的任何块低于阈值,或者高度小于H的任何块低于阈值,或者宽度小于W且高度小于H的任何块低于阈值,或者宽度小于W或高度小于H的任何块低于阈值,或者面积低于W×H像素的的任何块低于阈值。此外,每个二次变换内核集中的实际二次变换内核可进行预训练。实际二次变换内核可以是预定的,或者可以在码流中用信号发送。在一些示例性实现方式中,对于每个帧内编码块,可以从对应的二次变换内核集选择并使用特定的二次变换内核,且可以在码流中通过stxIdx用信号发送对特定内核的选择。虽然上述示例提供具有两个自适应数量的可选内核的二次变换内核集,但是基本原理可扩展到具有三个或更多个不同数量的可选内核的内核集。
在一些其它示例性实现方式中,对于上述各种编码参数中的任一个或一些组合,自适应数量的变换内核(或候选)可供选择。例如,当帧内预测模式是垂直模式(V_PRED)、水平模式(H_PRED)、平滑水平模式(SMOUTH_H_PRED)和平滑垂直模式(SMOUTH_V_PRED)中的任一个时,主变换类型是ADST_ADST,且变换块大小大于或等于(或小于)块大小阈值时,只有N个变换内核(或候选)可用,而对于所有其它组合,K个变换内核(或候选)可用,其中N和K可以是不同的非负整数值。例如,N和K可以是包括但不限于0、1、2、3、4、5和6的非负整数中的任一个。术语块大小和大小阈值可携带与上述其它实现方式类似的含义。虽然本示例提供具有两个自适应数量的可选内核的二次变换内核集,但是基本原理可扩展到具有三个或更多个不同自适应数量的可选内核的内核集。还考虑根据这些编码参数的任何组合自适应地分配可用内核数量的方案。
在一些其它实现方式中,对于上述任何示例,当只有N个(或K个)变换内核(或候选)可用于具有对应的二次变换内核集的块时,stxIdx的信令可能只需要支持多达N个(或K个)变换内核(或候选)。特定编码参数或其组合(例如,帧内预测模式、主变换模式、块大小等)的可能的stxIdx的这种减少有助于改善码流中的信令开销。
在一些其它实现方式中,对于上述任何示例,当不同数量的二次变换内核(或候选)用于不同的内核集时,不同的上下文建模应用于对stxIdx进行熵编码。换句话说,用于在具有第一数量的候选内核的内核集中进行索引的stxIdx可基于第一上下文模型或第一概率分布进行熵编码,而用于在具有不同于第一数量的第二数量的候选内核的内核集中进行索引的stxIdx可基于不同于第一上下文模型的第二上下文模型进行熵编码。这可基于两个不同数量的内核集的stxIdx的概率分布可以不同的可能性。
在一些其它实现方式中,对于上述任一示例,当针对不同的二次内核集自适应地使用不同数量的二次变换内核(或候选)时,首先可对stxIdx进行二值化,且可以在具有不同数量的候选二次变换内核的内核集的stxIdx之间共享前M个二进制的上下文建模。
对于特定示例,如果对于第一内核集,N=3且对于第二内核集,K=4,则stxIdx可以如下面的表6那样进行二进制化。对于当N=3和K=4时所使用的码字,可共享用于对前两个二进制进行熵编码的上下文建模。
表6
stxIdx 码字(N=3) 码字(K=4)
0 0 0
1 10 10
2 11 110
3 111
图26示出了遵循上述实现方式的基本原理的示例性方法的流程图2600。示例性方法流程在S2601处开始。在S2610处,解析并处理视频流,以生成:与视频块相关联的二次变换系数集;与视频块相关联的帧内预测模式;和二次变换内核组中的内核索引。在S2620处,基于帧内预测模式识别二次变换内核组。在S2630处,执行二次变换系数集的逆二次变换,以基于由内核索引识别的二次变换内核组中的二次变换内核来生成视频块的主变换系数,其中,二次变换内核组中的内核的数量取决于以下至少一项:与视频块相关联的帧内预测模式;视频块的大小;以及与视频块相关联的主变换类型。过程在S2699处结束。
图27示出了遵循上述实现方式的基本原理的另一示例性方法的流程图2700。示例性方法流程在S2701处开始。在S2710处,使用至少一个主变换内核来对帧内预测视频块的残差块进行变换,以生成主变换系数集。在S2720处,在二次变换内核组中选择当前二次变换内核,其中,二次变换内核组中的内核的数量取决于以下至少一项:帧内预测视频块的帧内预测模式;帧内预测视频块的大小;以及至少一个主变换内核的主变换类型。在S2730处,确定二次变换内核组内的当前二次变换内核的内核索引。在S2740处,使用当前二次变换内核来对主变换系数集进行变换,以生成二次变换系数集。在S2750处,将内核索引和二次变换系数集编码成与帧内预测视频块相关联的编码视频流。过程在S2799处结束。
本公开中的实施例可单独使用或以任何顺序组合。此外,方法(或实施例)、编码器和解码器中的每一个可由处理电路(例如,一个或多个处理器或者一个或多个集成电路)实现。在一个示例中,一个或多个处理器执行存储在非暂时性计算机可读介质中的程序。本公开中的实施例可应用于亮度块或色度块。
上述技术可实现为计算机软件,该计算机软件使用计算机可读指令,且物理地存储在一个或多个计算机可读介质中。例如,图28示出了适于实施所公开的主题的某些实施例的计算机系统(2800)。
可使用任何合适的机器代码或计算机语言对计算机软件进行编码,任何合适的机器代码或计算机语言可经受汇编、编译、链接或类似的机制以创建包括指令的代码,指令可由一个或多个计算机中央处理单元(CPU)、图形处理单元(GPU)等直接执行,或者通过解释、微代码执行等执行。
指令可以在各种类型的计算机或其组件上执行,计算机或其组件包括例如个人计算机、平板计算机、服务器、智能电话、游戏设备、物联网设备等。
图28所示的计算机系统(2800)的组件本质上是示例性的,并不旨在对实施本公开的实施例的计算机软件的用途或功能的范围提出任何限制。组件的配置也不应解释为具有与计算机系统(2800)的示例性实施例中所示的组件中的任何一个组件或组件的组合相关的任何依赖或要求。
计算机系统(2800)可包括某些人机接口输入设备。此类人机接口输入设备可响应于一个或多个人类用户通过例如下述的输入:触觉输入(例如:击键、划动、数据手套移动)、音频输入(例如:语音、拍手)、视觉输入(例如:手势)、嗅觉输入(未描绘)。人机接口设备还可用于捕获不一定与人的意识输入直接相关的某些媒介,例如音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静止图像相机获取的拍摄图像)、视频(例如,二维视频、包括立体视频的三维视频)。
人机接口输入设备可包括下述的一项或多项(每种中仅示出一个):键盘(2801)、鼠标(2802)、触控板(2803)、触摸屏(2810)、数据手套(未示出)、操纵杆(2805)、麦克风(2806)、扫描仪(2807)、相机(2808)。
计算机系统(2800)还可包括某些人机接口输出设备。此类人机接口输出设备可通过例如触觉输出、声音、光和气味/味道来刺激一个或多个人类用户的感官。此类人机接口输出设备可包括触觉输出设备(例如,触摸屏(2810)的触觉反馈、数据手套(未示出)或操纵杆(2805),但还可以是不作为输入设备的触觉反馈设备)、音频输出设备(例如:扬声器(2809)、耳机(未描绘))、视觉输出设备(例如,包括CRT屏幕、LCD屏幕、等离子屏幕、OLED屏幕的屏幕(2810),每种屏幕具有或没有触摸屏输入功能,每种屏幕具有或没有触觉反馈功能,其中的一些屏幕能够通过诸如立体图像输出之类的装置、虚拟现实眼镜(未描绘)、全息显示器和烟箱(未描绘)以及打印机(未描绘)来输出二维视觉输出或超过三维的输出。
计算机系统(2800)还可包括人类可访问存储设备及其关联介质,例如包括具有CD/DVD等介质(2821)的CD/DVD ROM/RW(2820)的光学介质、指状驱动器(2822)、可拆卸硬盘驱动器或固态驱动器(2823)、诸如磁带和软盘之类的传统磁性介质(未描绘)、诸如安全软件狗之类的基于专用ROM/ASIC/PLD的设备(未描绘)等。
本领域技术人员还应该理解,结合当前公开的主题所使用的术语“计算机可读介质”不涵盖传输介质、载波或其它暂时性信号。
计算机系统(2800)还可包括通向一个或多个通信网络(2855)的接口(2854)。网络可例如是无线网络、有线网络、光网络。网络可进一步是本地网络、广域网络、城域网络、车辆和工业网络、实时网络、延迟容忍网络等。网络的示例包括诸如以太网之类的局域网、无线LAN、包括GSM、3G、4G、5G、LTE等的蜂窝网络、包括有线电视、卫星电视和地面广播电视的电视有线或无线广域数字网络、包括CAN总线(CANbus)的车辆和工业网络等。某些网络通常需要附接到某些通用数据端口或外围总线(2849)的外部网络接口适配器(例如,计算机系统(2800)的USB端口);如下所述,其它网络接口通常通过附接到系统总线而集成到计算机系统(2800)的内核中(例如,连接到PC计算机系统中的以太网接口或连接到智能手机计算机系统中的蜂窝网络接口)。计算机系统(2800)可使用这些网络中的任何网络与其它实体通信。此类通信可以是仅单向接收的(例如,广播电视)、仅单向发送的(例如,连接到某些CANbus设备的CANbus)或双向的,例如,使用局域网或广域网数字网络连接到其它计算机系统。如上所述,可以在那些网络和网络接口中的每一个上使用某些协议和协议栈。
上述人机接口设备、人机可访问的存储设备和网络接口可附接到计算机系统(2800)的内核(2840)。
内核(2840)可包括一个或多个中央处理单元(CPU)(2841)、图形处理单元(GPU)(2842)、现场可编程门区域(FPGA)(2843)形式的专用可编程处理单元、用于某些任务的硬件加速器(2844)、图形适配器(2850)等。这些设备以及只读存储器(ROM)(2845)、随机存取存储器(2846)、诸如内部非用户可访问的硬盘驱动器、SSD等之类的内部大容量存储器(2847)可通过系统总线(2848)连接。在一些计算机系统中,可以以一个或多个物理插头的形式访问系统总线(2848),以能够通过附加的CPU、GPU等进行扩展。外围设备可直接附接到内核的系统总线(2848)或通过外围总线(2849)附接到内核的系统总线(2848)。在一个示例中,屏幕(2810)可连接到图形适配器(2850)。外围总线的架构包括PCI、USB等。
CPU(2841)、GPU(2842)、FPGA(2843)和加速器(2844)可执行某些指令,这些指令可组合来构成上述计算机代码。该计算机代码可存储在ROM(2845)或RAM(2846)中。过渡数据还可存储在RAM(2846)中,而永久数据可例如存储在内部大容量存储器(2847)中。可通过使用高速缓存来进行通向任何存储设备的快速存储及检索,该高速缓存可与下述紧密关联:一个或多个CPU(2841)、GPU(2842)、大容量存储(2847)、ROM(2845)、RAM(2846)等。
计算机可读介质可以在其上具有执行各种由计算机实现的操作的计算机代码。介质和计算机代码可以是出于本公开的目的而专门设计和构造的介质和计算机代码,或者介质和计算机代码可以是计算机软件领域的技术人员公知且可用的类型。
作为非限制性示例,可由于一个或多个处理器(包括CPU、GPU、FPGA、加速器等)执行包含在一种或多种有形的计算机可读介质中的软件而使得具有架构(2800),特别是内核(2840)的计算机系统提供功能。此类计算机可读介质可以是与如上所介绍的用户可访问的大容量存储相关联的介质,以及某些非暂时性内核(2840)的存储器,例如内核内部大容量存储器(2847)或ROM(2845)。实施本公开的各种实施例的软件可存储在此类设备中并由内核(2840)执行。根据特定需要,计算机可读介质可包括一个或多个存储设备或芯片。软件可使得内核(2840),特别是其中的处理器(包括CPU、GPU、FPGA等)执行本文所描述的特定过程或特定过程的特定部分,包括定义存储在RAM(2846)中的数据结构以及根据由软件定义的过程来修改此类数据结构。附加地或作为替代,可由于硬连线或以其它方式体现在电路(例如:加速器(2844))中的逻辑而使得计算机系统提供功能,该电路可替代软件或与软件一起运行以执行本文描述的特定过程或特定过程的特定部分。在适当的情况下,提及软件的部分可包含逻辑,反之亦然。在适当的情况下,提及计算机可读介质的部分可包括存储用于执行的软件的电路(例如,集成电路(IC))、体现用于执行的逻辑的电路或包括两者。本公开包括硬件和软件的任何合适的组合。
虽然本公开已描述多个示例性实施例,但是存在落入本公开的范围内的修改、置换和各种替换等效物。因此,应理解,本领域技术人员将能够设计出许多虽然未在本文中明确示出或描述,但是体现了本公开的原理,因此落入本公开的精神和范围内的系统和方法。
附录A:首字母缩写词
JEM:联合探索模型
VVC:下一代视频编码
BMS:基准集
MV:运动矢量
HEVC:高效视频编码
SEI:辅助增强信息
VUI:视频可用性信息
GOP:图像组
TU:变换单元
PU:预测单元
CTU:编码树单元
CTB:编码树块
PB:预测块
HRD:假想参考解码器
SNR:信噪比
CPU:中央处理单元
GPU:图形处理单元
CRT:阴极射线管
LCD:液晶显示器
OLED:有机发光二极管
CD:光盘
DVD:数字视频光盘
ROM:只读存储器
RAM:随机存取存储器
ASIC:专用集成电路
PLD:可编程逻辑器件
LAN:局域网
GSM:全球移动通信系统
LTE:长期演进
CANBus:控制器局域网络总线
USB:通用串行总线
PCI:互连外围组件
FPGA:现场可编程门区域
SSD:固态驱动器
IC:集成电路
HDR:高动态范围
SDR:标准动态范围
JVET:联合视频探索组
MPM:最可能模式
WAIP:广角帧内预测
CU:编码单元
PU:预测单元
TU:变换单元
CTU:编码树单元
PDPC:位置相关预测组合
ISP:帧内子分区
SPS:序列参数集
PPS:图像参数集
APS:自适应参数集
VPS:视频参数集
DPS:解码参数集
ALF:自适应环路滤波器
SAO:采样自适应偏移
CC-ALF:跨分量自适应环路滤波器
CDEF:约束定向增强滤波器
CCSO:跨分量采样偏移
LSO:本地采样偏移
LR:环路恢复滤波器
AV1:开放媒体联盟视频1
AV2:开放媒体联盟视频2
LFNST:低频不可分离变换
IST:帧内二次变换

Claims (22)

1.一种用于对视频流中的视频块进行解码的方法,包括:
解析并处理所述视频流,以生成:
与所述视频块相关联的二次变换系数集;
与所述视频块相关联的帧内预测模式;和
指示二次变换内核组中的二次变换内核的内核索引;
基于所述帧内预测模式识别所述二次变换内核组;以及
执行所述二次变换系数集的逆二次变换,以基于由所述内核索引识别的所述二次变换内核组中的二次变换内核来生成所述视频块的主变换系数,
其中,所述二次变换内核组中的内核的数量取决于以下至少一项:
与所述视频块相关联的所述帧内预测模式;
所述视频块的大小;以及
与所述视频块相关联的主变换类型。
2.根据权利要求1所述的方法,其中,所述二次变换内核组中的内核的数量取决于与所述视频块相关联的所述主变换类型。
3.根据权利要求2所述的方法,其中,
当对于所述视频块的垂直维度和水平维度,所述主变换类型均是ADST时,所述二次变换内核组中的内核的数量为N,否则所述二次变换内核组中的内核的数量为K,以及
N和K是介于0和6之间的不同的非负整数。
4.根据权利要求1所述的方法,其中,
当所述视频块的大小小于预定大小阈值时,所述二次变换内核组中的内核的数量为N,否则所述二次变换内核组中的内核的数量为K,以及
N和K是介于0和6之间的不同的非负整数。
5.根据权利要求4所述的方法,其中,对于所述视频块的水平维度和垂直维度中的任一个,所述预定大小阈值为8×8或8。
6.根据权利要求1所述的方法,其中,
如果所述视频块由预定的帧内预测模式子集中的任一帧内预测模式、预定的主变换类型子集中的任一主变换类型、以及预定的块大小子集中的任一块大小表征时,所述二次变换内核组中的内核的数量为N,否则所述二次变换内核组中的内核的数量为K,以及
N和K是介于0和6之间的不同的非负整数。
7.根据权利要求6所述的方法,其中,
当所述视频块由垂直帧内预测模式、水平帧内预测模式、平滑水平帧内预测模式和平滑垂直帧内预测模式、垂直维度和水平维度中的ADST_ADST主变换模式、以及小于预定大小阈值的块大小之一表征时,所述二次变换内核组中的内核的数量为N,
否则,所述二次变换内核组中的内核的数量为K。
8.根据权利要求6所述的方法,其中,当所述二次变换内核组仅包括N个或K个二次变换内核时,所述视频流中的所述内核索引的信令方案仅支持多达N个或K个索引选项。
9.根据权利要求6所述的方法,其中,当所述二次变换内核组中的内核的数量为N时,以及当所述二次变换内核组中的内核的数量为K时,在所述视频流中使用不同的上下文模型来对所述内核索引进行熵编码。
10.根据权利要求1所述的方法,其中,当所述二次变换内核组中的不同数量的内核用于不同视频块时,不同视频块的内核索引的二值化码字的熵编码共享所述二值化码字中的至少一个二进制的上下文建模。
11.一种用于处理帧内预测视频块的方法,包括:
使用至少一个主变换内核来对所述帧内预测视频块的残差块进行变换,以生成主变换系数集;
在二次变换内核组中选择当前二次变换内核,其中,所述二次变换内核组中的内核的数量取决于以下至少一项:
所述帧内预测视频块的帧内预测模式;
所述帧内预测视频块的大小;以及
所述至少一个主变换内核的主变换类型;
确定所述二次变换内核组内的所述当前二次变换内核的内核索引;
使用所述当前二次变换内核来对所述主变换系数集进行变换,以生成二次变换系数集;以及
将所述内核索引和所述二次变换系数集编码成与所述帧内预测视频块相关联的编码视频流。
12.根据权利要求11所述的方法,其中,所述二次变换内核组中的内核的数量取决于与所述帧内预测视频块相关联的主变换类型。
13.根据权利要求12所述的方法,其中,
当对于所述帧内预测视频块的垂直维度和水平维度,所述主变换类型均是ADST时,所述二次变换内核组中的内核的数量为N,否则所述二次变换内核组中的内核的数量为K,以及
N和K是介于0和6之间的不同的非负整数。
14.根据权利要求11所述的方法,其中,
当所述帧内预测视频块的大小小于预定大小阈值时,所述二次变换内核组中的内核的数量为N,否则所述二次变换内核组中的内核的数量为K,以及
N和K是介于0和6之间的不同的非负整数。
15.根据权利要求14所述的方法,其中,对于所述帧内预测视频块的水平维度和垂直维度中的任一个,所述预定大小阈值为8×8或8。
16.根据权利要求11所述的方法,其中,
如果所述帧内预测视频块由预定的帧内预测模式子集中的任一帧内预测模式、预定的主变换类型子集中的任一主变换类型、以及预定的块大小子集中的任一块大小表征时,所述二次变换内核组中的内核的数量为N,否则所述二次变换内核组中的内核的数量为K,以及
N和K是介于0和6之间的不同的非负整数。
17.根据权利要求16所述的方法,其中,
当所述帧内预测视频块由垂直帧内预测模式、水平帧内预测模式、平滑水平帧内预测模式和平滑垂直帧内预测模式、垂直维度和水平维度中的ADST_ADST主变换模式、以及小于预定大小阈值的块大小之一表征时,所述二次变换内核组中的内核的数量为N,
否则,所述二次变换内核组中的内核的数量为K。
18.根据权利要求16所述的方法,其中,当所述二次变换内核组仅包括N个或K个二次变换内核时,所述编码视频流中的内核索引的信令方案仅支持多达N个或K个索引选项。
19.根据权利要求16所述的方法,其中,当所述二次变换内核组中的内核的数量为N时,以及当所述二次变换内核组中的内核的数量为K时,在所述编码视频流中使用不同的上下文模型来对所述内核索引进行熵编码。
20.根据权利要求11所述的方法,其中,当所述二次变换内核组中的不同数量的内核用于所述编码视频流中的不同视频块时,不同视频块的内核索引的二值化码字的熵编码共享所述二值化码字的至少一个二进制的上下文建模。
21.一种视频处理设备,包括存储器和处理器,所述存储器用于存储一组指令,所述处理器用于执行所述指令,以执行根据权利要求1至20中任一项所述的方法。
22.一种非暂时性计算机可读介质,用于存储一组计算机指令,当所述计算机指令由视频处理设备的处理器执行时,所述计算机指令使得所述视频处理设备执行根据权利要求1至20中任一项所述的方法。
CN202280006610.5A 2021-08-30 2022-08-29 用于具有自适应内核选项的二次变换的方法和装置 Pending CN116325750A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163238635P 2021-08-30 2021-08-30
US63/238,635 2021-08-30
PCT/US2022/041913 WO2023034225A1 (en) 2021-08-30 2022-08-29 Method and apparatus for secondary transform with adaptive kernel options

Publications (1)

Publication Number Publication Date
CN116325750A true CN116325750A (zh) 2023-06-23

Family

ID=86820818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280006610.5A Pending CN116325750A (zh) 2021-08-30 2022-08-29 用于具有自适应内核选项的二次变换的方法和装置

Country Status (1)

Country Link
CN (1) CN116325750A (zh)

Similar Documents

Publication Publication Date Title
JP2024069325A (ja) 部分空間制約を有する直交変換生成
US20230099329A1 (en) Deriving offsets in cross-component transform coefficient level reconstruction
KR20230081723A (ko) 샘플 패딩을 이용한 인트라 블록 카피 예측을 위한 방법 및 장치
WO2022211877A1 (en) Harmonized design between multiple reference line intra prediction and transform partitioning
WO2023003597A1 (en) Cross component end of block flag coding
US11991360B2 (en) Method and apparatus for secondary transform with adaptive kernel options
US20230224465A1 (en) Cross-Channel Prediction based on Multiple Prediction Modes
US20230345015A1 (en) Chroma from luma prediction using neighbor luma samples
CN116325750A (zh) 用于具有自适应内核选项的二次变换的方法和装置
US20230336748A1 (en) Chroma from luma prediction using mapping and different types
US20230370601A1 (en) Chroma from luma prediction based on merged chroma blocks
US20230231991A1 (en) Palette Predictor Generation and Signaling
US20220417547A1 (en) Skip transform flag coding
KR20230130090A (ko) 복합 인터-인트라 예측 모드들에 대한 적응적 변환들
WO2024049489A1 (en) Selecting downsampling filters for chroma from luma prediction
KR20230107885A (ko) 교차-성분 레벨 재구성을 위한 1차 변환
KR20230152733A (ko) 이웃 루마 샘플들을 사용하는 루마로부터의 크로마 예측
KR20230135670A (ko) 조인트 모션 벡터 차이 코딩
CN117242772A (zh) 使用邻近亮度样本的根据亮度的色度预测
KR20230088816A (ko) 복합 인터-인트라 예측 모드에 대한 2차 변환
KR20230140456A (ko) 적응적 모션 벡터 차이 해상도를 위한 보간 필터들
KR20230136169A (ko) 단일-참조 모션 벡터 차이에 대한 적응적 해상도
CN116783888A (zh) 改进的帧内模式编码
CN116368801A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40089037

Country of ref document: HK