掌桥专利:专业的专利平台
掌桥专利
首页

用于交叉分量级重建的主变换

文献发布时间:2024-01-17 01:23:17


用于交叉分量级重建的主变换

引用并入

本申请基于并且要求2022年10月14日提交的名称为“用于交叉分量级重建的主变换(PRIMARY TRANSFORMS FOR CROSS-COMPONENT LEVEL RECONSTRUCTION)”的美国非临时申请号17/966,390的优先权,该申请基于并且要求2021年12月13日提交的美国临时申请号63/289,133和2021年10月29日提交的美国临时申请号63/273,789、两者名称均为“用于交叉分量级重建的主变换(PRIMARY TRANSFORMS FOR CROSS-COMPONENT LEVELRECONSTRUCTION)”的优先权。这些在先专利申请通过引用以其整体并入本文。

技术领域

本公开总体上涉及一组高级视频编码/解码技术,并且更具体地涉及用于基于偏移的交叉分量方法的主变换,该基于偏移的交叉分量方法在解量化之前或之后对变换系数进行修正。

背景技术

本文中提供的背景描述是为了总体上呈现本公开的上下文。当前署名的发明人的工作在该背景技术部分中描述的程度上以及在提交本申请时可能不构成现有技术的描述的各方面既不明示地也不暗示地被认为是本公开的现有技术。

可以使用具有运动补偿的帧间预测来执行视频编码和解码。未压缩数字视频可以包括一系列图片,每个图片具有例如1920×1080亮度样本和相关联的全采样或子采样色度样本的空间维度。系列图片可以具有固定或可变的图片速率(可替代地被称为帧速率),例如每秒60个图片或每秒60个帧。未压缩视频对于流式传输或数据处理具有特定的比特率要求。例如,像素分辨率为1920×1080、帧速率为60帧/秒、色度子采样为4:2:0(8比特/像素/颜色信道)的视频需要接近1.5Gbit/s的带宽。一个小时的这种视频需要超过600GB的存储空间。

视频编码和解码的一个目的可以是通过压缩来减少未压缩的输入视频信号中的冗余。压缩可以帮助减少上述带宽和/或存储空间要求,在一些情况下减少两个数量级或更多。可以采用无损压缩和有损压缩,以及它们的组合。无损压缩是指经由解码过程从压缩的原始信号中重建原始信号的精确副本的技术。有损压缩是指其中原始视频信息在编码期间未被完全保留并且在解码期间不可完全恢复的编码/解码过程。当使用有损压缩时,重建信号可能与原始信号不同,但是原始信号与重建信号之间的失真小到足以使重建信号可用于预期应用,尽管有一些信息损失。在视频的情况下,有损压缩广泛用于许多应用中。可容许的失真的量取决于应用。例如,某些消费视频流式传输应用的用户可以容忍比电影或电视广播应用的用户更高的失真。可以选择或调整特定编码算法可实现的压缩比以反映各种失真容限:较高的可容忍失真通常允许产生较高损失和较高压缩比的编码算法。

视频编码器和解码器可以利用来自若干广泛类别和步骤的技术,包括(例如)运动补偿、傅立叶变换、量化及熵编码。

视频编解码器技术可以包括称为帧内编码的技术。在帧内编码中,在不参考来自先前重建的参考图片的样本或其它数据的情况下表示样本值。在一些视频编解码器中,图片在空间上被细分成样本块。当所有样本块都以帧内模式编码时,该图片可以被称为帧内图片。帧内图片及其派生图片(诸如独立解码器刷新图片)可以用于重置解码器状态,并且因此可以用作已编码视频码流和视频会话中的第一图片,或用作静止图像。然后,帧内预测之后的块的样本可以经过变换到频域,并且可以在熵编码之前对如此生成的变换系数进行量化。帧内预测表示使预变换域中的样本值最小化的技术。在一些情况下,变换之后的DC值越小,并且AC系数越小,则在给定量化步长下表示熵编码之后的块所需的比特越少。

诸如从例如MPEG-2代编码技术中已知的传统帧内编码不使用帧内预测。然而,一些较新的视频压缩技术包括基于例如周围样本数据和/或元数据来尝试对块进行编码/解码的技术,该周围样本数据和/或元数据是在空间相邻的编码和/或解码期间获得的并且在解码顺序上在对数据块进行帧内编码或解码之前。这样的技术此后被称为“帧内预测”技术。注意,在至少一些情况下,帧内预测仅使用来自重建中的当前图片的参考数据,而不使用来自其它参考图片的参考数据。

可以有许多不同形式的帧内预测。当在给定视频编码技术中可获得多于一种这样的技术时,所使用的技术可以被称为帧内预测模式。可以在特定编解码器中提供一种或多种帧内预测模式。在某些情况下,模式可以具有子模式和/或可以与各种参数相关联,并且用于视频块的模式/子模式信息和帧内编码参数可以被单独地编码或共同包括在模式码字中。用于给定模式、子模式和/或参数组合的这种码字可以影响通过帧内预测的编码效率增益,并且因此可以影响用于将码字转换成码流的熵编码技术。

帧内预测的某种模式与H.264一起被引入,在H.265中被改进,并且在诸如联合探索模型(JEM)、通用视频编码(VVC)和基准集(BMS)的较新的编码技术中被进一步改进。通常,对于帧内预测,可以使用已经变得可用的相邻样本值来形成预测器块。例如,可以将沿着特定方向和/或线的相邻样本的特定集合的可用值复制到预测器块中。对使用方向的参考可以在码流中编码或本身可以被预测。

参考图1A,在右下方描绘了在H.265的33个可能的帧内预测器方向(与H.265中指定的35种帧内模式的33种角度模式相对应)中指定的九个预测器方向的子集。箭头会聚的点(101)表示被预测的样本。箭头表示使用相邻样本来预测101处的样本的方向。例如,箭头(102)指示样本(101)是从右上方的一个或多个相邻样本以与水平方向成45度角来预测的。类似地,箭头(103)指示样本(101)是从样本(101)左下方的一个或多个相邻样本以与水平方向成22.5度角来预测的。

仍然参考图1A,在左上方描绘了4×4样本的正方形块(104)(由虚线黑体线表示)。正方形块(104)包括16个样本,每个样本标记有“S”、其在Y维度中的位置(例如,行索引)和其在X维度中的位置(例如,列索引)。例如,样本S21是Y维度上的第二样本(从顶部)和X维度上的第一样本(从左侧)。类似地,样本S44是块(104)中Y维度和X维度上的第四样本。由于块的大小是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示出了根据JEM描绘65个帧内预测方向的示意图(180),以图示随时间发展的各种编码技术中预测方向数量的不断增加。

用于将表示帧内预测方向的比特映射到已编码视频码流中的预测方向的方式可以在视频编码技术与视频编码技术之间变化;并且可以例如从预测方向到帧内预测模式、到码字、到涉及最可能模式的复杂自适应方案及类似技术的简单直接映射。然而,在所有情况下,可以存在用于帧内预测的某些方向,这些方向在统计上比某些其它方向不太可能出现在视频内容中。由于视频压缩的目标是减少冗余,因此在精心设计的视频编码技术中,那些不太可能的方向可以由比更可能的方向更大的比特数的来表示。

帧间预测(inter picture prediction/inter prediction)可以基于运动补偿。在运动补偿中,来自先前重建的图片或其部分(参考图片)的样本数据在由运动矢量(此后为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 Rec.H.265,“高效视频编码”,2016年12月)中描述了各种MV预测机制。在H.265指定的许多MV预测机制中,以下描述的是一种此后被称为“空间合并”的技术。

具体地,参考图2,当前块(201)包括已经由编码器在运动搜索过程期间发现的、可从已经被空间移位的相同大小的先前块预测的样本。代替直接对该MV进行编码,可以使用与表示为A0、A1和B0、B1、B2(分别为202到206)的五个周围样本中的任一个相关联的MV,从与一个或多个参考图片相关联的元数据,例如从最近的(按解码顺序)参考图片中导出MV。在H.265中,MV预测可以使用来自相邻块使用的相同参考图片的预测器。

发明内容

本公开的各方面提供了用于在视频处理中选择和应用对交叉分量级修正的变换系数的变换的交叉分量方法和装置。在一些示例实现中,公开了一种用于视频解码的方法。该方法可以包括:接收包括第一颜色分量的第一变换块和第二颜色分量的第二变换块的视频块的码流,其中第一变换块和第二变换块是同位块;从视频块的码流获得第一颜色分量的第一变换块和第二颜色分量的第二变换块;确定指示第一变换块中的所有变换系数均为零的第一标志;确定指示交叉分量级重建(CCLR)被应用于第一变换块的第二标志;以及响应于确定CCLR被应用于第一变换块;通过添加一个或多个偏移值来修正第一变换块中的变换系数中的一个或多个变换系数,以获得修正的第一变换块,一个或多个偏移值是基于第二变换块中的并且与第一变换块中的变换系数中的一个或多个变换系数同位的变换系数而导出的;确定用于修正的第一变换块的目标变换核;基于目标变换核对修正的第一变换块执行逆变换以得到目标块;以及至少基于目标块重建视频块的第一颜色分量。

本公开的各方面还提供一种视频编码或解码设备或装置,其包括被配置为执行以上方法实现中的任一种的电路。

本公开的各方面还提供存储指令的非易失性计算机可读介质,这些指令在由用于视频解码和/或编码的计算机执行时使计算机执行用于视频解码和/或编码的方法。

附图说明

根据以下详细描述和附图,所公开的主题的进一步的特征、性质和各种优点将更加明显,在附图中:

图1A示出了帧内预测定向模式的示例性子集的示意图。

图1B示出了示例性帧内预测方向的图示。

图2示出了在一个示例中用于运动矢量预测的当前块及其周围的空间合并候选的示意图。

图3示出了根据示例实施例的通信系统(300)的简化框图的示意图。

图4示出了根据示例实施例的通信系统(400)的简化框图的示意图。

图5示出了根据示例实施例的视频解码器的简化框图的示意图。

图6示出了根据示例实施例的视频编码器的简化框图的示意图。

图7示出了根据另一示例实施例的视频编码器的框图。

图8示出了根据另一示例实施例的视频解码器的框图。

图9示出了根据本公开的示例实施例的编码块分区的方案。

图10示出了根据本公开的示例实施例的编码块分区的另一方案。

图11示出了根据本公开的示例实施例的编码块分区的另一方案。

图12示出了根据本公开的示例实施例的编码块分区的另一方案。

图13示出了根据本公开的示例实施例的用于将编码块分区成多个变换块和变换块的编码顺序的方案。

图14示出了根据本公开的示例实施例的用于将编码块分区成多个变换块和变换块的编码顺序的另一方案。

图15示出了根据本公开的示例实施例的用于将编码块分区成多个变换块的另一方案。

图16图示了根据本公开的示例实施例的平面旋转变换。

图17示出了根据本公开的示例实施例的各种DCT-2、DCT-4部分蝶形查找表。

图18示出了根据本公开的示例实施例的DST-7部分蝶形查找表。

图19示出了根据本公开的示例实施例的示例线图变换(LGT)。

图20示出了根据本公开的示例实施例的方法的流程图。

图21示出了根据本公开的示例实施例的计算机系统的示意图。

具体实施方式

图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)9可以在电路交换、分组交换和/或其它类型的信道中交换数据。代表性网络包括电信网络、局域网、广域网和/或因特网。为了本讨论的目的,网络(350)的架构和拓扑对于本公开的操作可能是不重要的,除非本文中明确说明。

图4作为所公开主题的应用的示例图示了视频编码器和视频解码器在视频流环境中的布置。所公开的主题同样可以应用于其它视频应用,包括例如视频会议、数字TV广播、游戏、虚拟现实、在包括CD、DVD、记忆棒等的数字介质上的压缩视频的存储等。

视频流式传输系统可以包括视频捕获子系统(413),该视频捕获子系统(413)可以包括用于创建未压缩的视频图片或图像流(402)的视频源(401),例如数码相机。在示例中,视频图片流(402)包括由视频源401的数码相机记录的样本。当与已编码视频数据(404)(或已编码视频码流)相比时,被描绘为粗线以强调高数据量的视频图片流(402)可以由包括耦合到视频源(401)的视频编码器(403)的电子设备(420)来处理。视频编码器(403)可以包括硬件、软件或其组合,以实现或实施如以下更详细描述的所公开的主题的各方面。已编码视频数据(404)(或已编码视频码流(404))(被描绘为细线以强调当与未压缩视频图片的流相比时较低的数据量(402))可以存储在流式传输服务器(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)的一部分。在其它应用中,缓冲存储器可以在视频解码器(510)(未描绘)外部并且与其分离。在还其它应用中,在视频解码器(510)外部可以存在缓冲存储器(未描绘),用于例如对抗网络抖动的目的,并且在视频解码器(510)内部可以存在另一附加缓冲存储器(515),例如用于处理回放定时。当接收器(531)从具有足够带宽和可控性的存储/转发设备或从等同步网络接收数据时,可能不需要缓冲存储器(515),或缓冲存储器(515)可以很小。为了在诸如因特网的最优分组网络上使用,可能需要足够大小的缓冲存储器(515),并且其大小可以相对较大。这样的缓冲存储器可以用自适应大小来实现,并且可以至少部分地在视频解码器(510)外部的操作系统或类似元件(未描绘)中实现。

视频解码器(510)可以包括解析器(520)以从已编码视频序列重建符号(521)。这些符号的类别包括用于管理视频解码器(510)的操作的信息以及潜在地用于控制诸如显示器(512)(例如,显示屏)的呈现设备的信息,该呈现设备可以是或可以不是电子设备(530)的组成部分,但是可以耦合到电子设备(530),如图5中所示。用于一个或多个呈现设备的控制信息可以是补充增强信息(SEI消息)或视频可用性信息(VUI)参数集片段(未描绘)的形式。解析器(520)可以解析/熵解码由解析器(520)接收的已编码视频序列。已编码视频序列的熵编码可以根据视频编码技术或标准,并且可以遵循各种原理,包括可变长度编码、霍夫曼编码、具有或不具有上下文敏感性的算术编码等。解析器(520)可以基于与子组相对应的至少一个参数,从已编码视频序列中提取用于视频解码器中的像素的子组中的至少一个子组的子组参数的集合。子组可以包括图片群组(GOP)、图片、图块、条带、宏块、编码单元(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)内的地址可以由运动矢量控制,该运动矢量对于运动补偿预测单元(553)是以符号(521)的形式可用的,这些符号可以具有例如X、Y分量(移位)和参考图片分量(时间)。运动补偿还可以包括当使用子采样精确运动矢量时从参考图片存储器(557)提取的样本值的内插,并且还可以与运动矢量预测机制等相关联。

聚合器(555)的输出样本可以在环路滤波器单元(556)中经受各种环路滤波技术。视频压缩技术可以包括环路内滤波器技术,其由包括在已编码视频序列(也被称为已编码视频码流)中的参数控制,并且作为来自解析器(520)的符号(521)可用于环路滤波器单元(556),但是也可以响应于在已编码图片或已编码视频序列的先前(按解码顺序)部分的解码期间获得的元信息,以及响应于先前重建和环路滤波的样本值。若干类型的环路滤波器可以以各种顺序被包括作为环路滤波器单元556的一部分,这将在以下进一步详细描述。

环路滤波器单元(556)的输出可以是样本流,该样本流可以被输出到呈现设备(512)并且被存储在参考图片存储器(557)中,以用于将来的帧间预测。

某些已编码图片一旦被完全重建就可以用作将来帧间预测的参考图片。例如,一旦与当前图片相对应的已编码图片被完全重建并且该已编码图片已经被识别为参考图片(例如,由解析器(520),则当前图片缓冲器(558)可以成为参考图片存储器(557)的一部分,并且可以在开始重建后续已编码图片之前重新分配新的当前图片缓冲器。

视频解码器(510)可以根据标准(诸如ITU-T Rec.H.265)中采用的预定视频压缩技术来执行解码操作。已编码视频序列可以符合由所使用的视频压缩技术或标准规定的语法,在某种意义上,已编码视频序列既符合视频压缩技术或标准的语法,又符合视频压缩技术或标准中记载的简档。具体地,配置文件可以从视频压缩技术或标准中可用的所有工具中选择某些工具作为在该配置文件下可用的唯一工具。为了符合标准,已编码视频序列的复杂度可以在由视频压缩技术或标准的级别所定义的范围内。在一些情况下,级别限制了最大图片大小、最大帧速率、最大重建采样率(例如以每秒兆样本测量)、最大参考图片大小等。在一些情况下,通过在已编码视频序列中发信号通知的用于HRD缓冲器管理的假设参考解码器(HRD)规范和元数据,可以进一步限制由级别设置的限制。

在一些示例实施例中,接收器(531)可以与已编码视频一起接收附加(冗余)数据。附加数据可以被包括作为一个或多个已编码视频序列的一部分。附加数据可以由视频解码器(510)用来正确地解码数据和/或更准确地重建原始视频数据。附加数据可以是例如时间、空间或信噪比(SNR)增强层的形式、冗余条带的形式、冗余图片的形式、前向纠错码等的形式,等等。

图6示出了根据本公开的示例实施例的视频编码器(603)的框图。视频编码器(603)可以被包括在电子设备(620)中。电子设备(620)可以进一步包括发送器(640)(例如,发送电路)。可以使用视频编码器(603)来代替图4的示例中的视频编码器(403)。

视频编码器(603)可以从视频源(601)(其不是图6的示例中的电子设备(620)的一部分)接收视频样本,该视频源可以捕获要由视频编码器(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)视频解码器(510)和解析器(520)的熵解码部分可以不完全在编码器中的本地解码器(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图片的块可以被非预测地编码,或者它们可以参考相同图片的已经编码的块被预测地编码(空间预测或帧内预测)。可以参考一个先前已编码的参考图片通过空间预测或通过时间预测对P图片的像素块进行预测地编码。可以参考一个或两个先前已编码的参考图片通过空间预测或通过时间预测对B图片的块进行预测地编码。为了其它目的,源图片或中间处理的图片可以被细分成其它类型的块。编码块和其它类型的块的划分可以遵循或可以不遵循相同的方式,如以下进一步详细描述的。

视频编码器(603)可以根据预定的视频编码技术或标准(诸如ITU-T Rec.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,或32×32像素的4个CU。32×32块中的一个或多个中的每一个可以被进一步分割成16×16像素的4个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)确定处理块是使用帧内模式、帧间模式还是使用例如率失真优化(RDO)的双向预测模式进行最佳编码。当处理块被确定为以帧内模式编码时,视频编码器(703)可以使用帧内预测技术将处理块编码成已编码图片;并且当处理块被确定为以帧间模式或双向预测模式编码时,视频编码器(703)可以分别使用帧间预测或双向预测技术来将处理块编码成已编码图片。在一些示例实施例中,合并模式可以被用作帧间预测的子模式,其中运动矢量从一个或多个运动矢量预测器中导出,而没有预测器之外的已编码运动矢量分量的益处。在一些其它示例实施例中,可以存在可应用于主题块的运动矢量分量。相应地,视频编码器(703)可以包括图7中未明确示出的部件(诸如模式决策模块),以确定处理块的传统模式。

在图7的示例中,视频编码器(703)包括耦合在一起的帧间编码器(730)、帧内编码器(722)、残差计算器(723)、开关(726)、残差编码器(724)、通用控制器(721)和熵编码器(725),如图7中的示例布置所示。

帧间编码器(730)被配置为接收当前块(例如,处理块)的样本,将该块与参考图片中的一个或多个参考块(例如,按显示顺序的先前图片和稍后图片中的块)进行比较,生成帧间预测信息(例如,根据帧间编码技术的冗余信息的描述、运动矢量、合并模式信息),并且使用任何合适的技术基于帧间预测信息来计算帧间预测结果(例如,已预测块)。在一些示例中,参考图片是使用嵌入在图6的示例编码器620(示出了为图7的残差解码器728,如下文进一步详细描述)中的解码单元633基于已编码视频信息而解码的已解码参考图片。

帧内编码器(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)还可以利用可以由熵解码器(871)提供的某些控制信息(以包括量化器参数(QP))(数据路径未描绘,因为这可能仅是低数据量控制信息)。

重建模块(874)可以被配置为在空间域中组合由残差解码器(873)输出的残差和预测结果(根据情况由帧间预测模块或帧内预测模块输出)以形成重建块,该重建块形成重建图片的一部分,该重建图片作为重建视频的一部分。应注意,也可以执行其它适当的操作(诸如去块操作等)以提供视觉质量。

应注意,视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)可以使用任何合适的技术来实现。在一些示例实施例中,视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)可以使用一个或多个集成电路来实现。在另一实施例中,视频编码器(403)、(603)和(603)以及视频解码器(410)、(510)和(810)可以使用执行软件指令的一个或多个处理器来实现。

对于编码块分区,并且在一些示例实现中,可以应用预定模式。如图9中所示,可以采用从第一预定级(例如,64×64块级)开始向下到第二预定义级(例如,4×4级)的示例4路分区树。例如,基块可以取决于由902、904、906和908指示的四个分区选项,其中被指定为R的分区被允许用于递归分区,在递归分区中可以以在较低级重复如图9中指示的相同分区树直到最低级(例如,4×4级)。在一些实现中,可以对图9的分区方案应用附加限制。在图9的实现中,可以允许矩形分区(例如,1:2/2:1矩形分区),但是可以不允许它们是递归的,但是正方形分区是允许递归的。如果需要,遵循图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的模式递归分区到分区树的下一级。换句话说,对于具有模式1002、1004、1006和1006的正方形分区,可以不允许递归分区。如果需要,遵循图10递归分区生成最终的编码块集合。这样的方案可以应用于一个或多个颜色信道。

在遵循以上任何分区过程或其它过程对基块进行划分或分区之后,同样,可以获得最终的分区或编码块集合。这些分区中的每一个可以处于各种分区级之一。分区中的每一个可以被称为编码块(CB)。对于以上各种示例分区实现,每个所得的CB可以具有任何允许的大小和分区级。它们被称为编码块,因为它们可以形成可以对其做出一些基本编码/解码决策的单元,并且编码/解码参数可以在已编码视频码流中被优化、确定和用信号通知。最终分区中的最高级表示编码块分区树的深度。编码块可以是亮度编码块或色度编码块。

在一些其它示例实现中,四叉树结构可以被用于将基部亮度和色度块递归地分割成编码单元。这样的分割结构可以被称为编码树单元(CTU),通过使用四叉树结构将编码树单元分割成编码单元(CU),以使分区适应于基部CTU的各种局部特性。在这样的实现中,可以在图片边界处执行隐式四叉树分割,使得块将保持四叉树分割直到大小适合图片边界。术语CU用于统称亮度和色度编码块(CB)的单位。

在一些实现中,CB可以被进一步分区。例如,出于编码和解码过程期间的帧内或帧间预测的目的,可以将CB进一步分区成多个预测块(PB)。换句话说,CB可以被进一步划分成不同的子分区,其中可以进行单独的预测决策/配置。与此同时,CB可以被进一步分区成多个变换块(TB),用于描绘执行视频数据的变换或逆变换的级。CB到PB和TB的分区方案可以是相同的或不同的。例如,可以基于例如视频数据的各种特性使用其自己的程序来执行每个分区方案。在一些示例实现中,PB和TB分区方案可以是独立的。在一些其它示例实现中,PB和TB分区方案和边界可以是相关的。在一些实现中,例如,TB可以在PB分区之后被分区,并且具体地,每个PB在编码块的分区之后被确定之后,可以被进一步分区成一个或多个TB。例如,在一些实现中,PB可以被分割成一个、两个、四个或其它数量的TB。

在一些实现中,为了将基块分区成编码块并且进一步分区成预测块和/或变换块,可以不同地处理亮度通道和色度通道。例如,在一些实现中,对于亮度通道可以允许将编码块分区成预测块和/或变换块,而对于一个或多个色度通道可以不允许将编码块分区成预测块和/或变换块。在这样的实现中,亮度块的变换和/或预测因此可以仅在编码块级执行。对于另一示例,亮度通道和一个或多个色度通道的最小变换块大小可以不同,例如,可以允许将亮度通道的编码块分区成比色度通道小的变换块和/或预测块。对于又一示例,将编码块分区成变换块和/或预测块的最大深度在亮度通道与色度通道之间可以不同,例如,可以允许将亮度通道的编码块分区成比一个或多个色度通道更深的变换块和/或预测块。对于特定示例,可以将亮度编码块分区成多种尺寸的变换块,这些变换块可以由向下进行多达2级的递归分区来表示,并且可以允许诸如正方形、2:1/1:2和4:1/1:4的变换块形状和从4×4到64×64的变换块大小。然而,对于色度块,仅允许为亮度块指定的最大可能的变换块。

在用于将编码块分区成PB的一些示例实现中,PB分区的深度、形状和/或其它特性可以取决于PB是帧内编码的还是帧间编码的。

可以在各种示例方案中实施将编码块(或预测块)分区成变换块,示例方案包括但不限于递归或非递归的四叉树分割和预定义模式分割,并且附加考虑编码块或预测块的边界处的变换块。通常,所得到的变换块可以处于不同的分割级,可以不具有相同的大小,并且可以不需要形状为正方形(例如,它们可以是具有一些允许的大小和纵横比的矩形)。

在一些实现中,可以使用编码分区树方案或结构。用于亮度和色度通道的编码分区树方案可以不必相同。换句话说,亮度通道和色度通道可以具有单独的编码树结构。进一步地,亮度通道和色度通道是否使用相同或不同的编码分区树结构以及要使用的实际编码分区树结构可以取决于正被编码的条带是P、B还是I条带。例如,对于I条带,色度通道和亮度通道可以具有单独的编码分区树结构或编码分区树结构模式,而对于P或B条带,亮度通道和色度通道可以共享相同的编码分区树方案。当应用单独的编码分区树结构或模式时,亮度通道可以由一个编码分区树结构分区成CB,并且色度通道可以由另一编码分区树结构分区成色度CB。

以下描述编码块和变换块分区的特定示例实现。在这样的示例实现中,可以使用以上描述的递归四叉树分割将基部编码块分割成编码块。在每个级,特定分区的进一步四叉树分割是否应该继续可以由本地视频数据特性来确定。所得到的CB可以处于各种大小的各种四叉树分割级。可以在CB级(或CU级,对于所有三色信道)做出关于是使用帧间图片(时间)预测还是帧内图片(空间)预测来编码图片区域的决定。可以根据PB分割类型将每个CB进一步分割成一个、两个、四个或其它数量的PB。在一个PB内,可以应用相同的预测过程,并且在PB的基础上将相关信息发送到解码器。在通过应用基于PB分割类型的预测过程获得残差块之后,可以根据与CB的编码树类似的另一四叉树结构将CB分区成TB。在该特定实现中,CB或TB可以但不必限于正方形形状。进一步地,在该特定示例中,PB对于帧间预测可以是为正方形或矩形形状并且对于帧内预测可以仅是正方形。编码块可以被进一步分割成例如四个正方形TB。每个TB可以被进一步递归地分割(使用四叉树分割)成更小的TB,被称为残差四叉树(RQT)。

以下描述用于将基部编码块分区成CB和其它PB和/或TB的另一特定示例。例如,不是使用诸如图10中所示的多分区单元类型,而是可以使用利用二进制和三进制分割分段结构的带有嵌套多类型树的四叉树。CB、PB和TB概念的分离(即,将CB分区为PB和/或TB,以及将PB分区为TB)可以被放弃,除非当需要具有对于最大变换长度而言太大的大小的CB时,其中这样的CB可能需要被进一步分割。该示例分区方案可以被设计为支持CB分区形状的更多灵活性,使得预测和变换都可以在CB级上执行而无需进一步分区。在这样的编码树结构中,CB可以具有正方形或矩形形状。具体地,编码树块(CTB)可以首先被四叉树结构分区。然后,四叉树叶节点可以由多类型树结构进一步分区。多类型树结构的示例在图11中示出。具体地,图11的示例多类型树结构包括四种分割类型,被称为垂直二进制分割(SPLIT_BT_VER)(1102)、水平二进制分割(SPLIT_BT_HOR)(1104)、垂直三进制分割(SPLIT_TT_VER)(1106)和水平三进制分割(SPLIT_TT_HOR)(1108)。然后,CB与多类型树的叶相对应。在该示例实现中,除非CB对于最大变换长度太大,否则该分割被用于预测和变换处理,而无需任何进一步的分区。这意味着,在大多数情况下,CB、PB和TB在具有嵌套多类型树编码块结构的四叉树中具有相同的块大小。当最大支持变换长度小于CB的颜色分量的宽度或高度时,会发生例外情况。

图12中示出了具有用于一个CTB的块分区的嵌套多类型树编码块结构的四叉树的一个示例。更详细地,图12示出了CTB 1200被四叉树分割成四个正方形分区1202、1204、1206和1208。为每个四叉树分割分区做出进一步使用图11的多类型树结构进行分割的决策。在图12的示例中,分区1204未被进一步分割。分区1202和1208每个采用另一四叉树分割。对于分区1202,第二级四叉树分割的左上分区、右上分区、左下分区和右下分区分别采用四叉树的第三级分割、图11的1104、非分割和图11的1108。分区1208采用另一个四叉树分割,并且第二级四叉树分割的左上分区、右上分区、左下分区和右下分区分别采用图11的第三级分割1106、非分割、非分割和图11的1104。第三级左上分区1208的子分区中的两个子分区根据1104和1108被进一步分割。分区1206采用遵循图11的1102的第二级分割模式分割成两个分区,这两个分区根据图11的1108和1102被进一步分割成三级。根据图11的1104,第四级分割被进一步应用于它们中的一个。

对于以上特定示例,最大亮度变换大小可以是64×64,并且最大支持的色度变换大小可以不同于例如32×32处的亮度。当亮度编码块或色度编码块的宽度或高度大于最大变换宽度或高度时,可以在水平和/或垂直方向上自动分割亮度编码块或色度编码块以满足该方向上的变换大小限制。

在用于将基部编码块分区成以上CB的特定示例中,编码树方案可以支持亮度和色度具有分离的块树结构的能力。例如,对于P和B条带,一个CTU中的亮度和色度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:变换分区大小设置

基于表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子变换块。换句话说,第二级分割必须应用于所有第一级子块,以保持变换单元大小相等。在图13中示出了以下表1的用于帧内编码正方形块的变换块分区的示例以及由箭头图示的编码顺序。具体地,1302示出了正方形编码块。根据表1分割成4个大小相等的变换块的第一级在1304中以箭头指示的编码顺序示出。在1306中,以箭头指示的编码顺序示出了根据表1将所有第一级大小相等的块第二级分割成16个大小相等的变换块。

在一些示例实现中,对于帧间编码块的亮度分量,可以不应用以上对帧内编码的限制。例如,在第一级变换分割之后,子变换块中的任何一个可以进一步独立地再被分割一个级。因此,所得到的变换块可以具有或可以不具有相同的大小。图14中示出了将帧间编码块分割成具有其编码顺序的变换块的示例。在图14的示例中,根据表1,帧间编码块1402被分割成两级的变换块。在第一级处,帧间编码块被分割成四个相等大小的变换块。然后,如1404所示,四个变换块中仅一个(不是所有的)被进一步分割成四个子变换块,导致总共7个变换块具有两种不同的大小。这7个变换块的示例编码顺序由图14的1404中的箭头示出。

在一些示例实现中,对于一个或多个色度分量,可以应用对变换块的一些附加限制。例如,对于一个或多个色度分量,变换块大小可以与编码块大小一样大,但不小于预定义大小,例如8×8。

在一些其它示例实现中,对于宽度(W)或高度(H)大于64的编码块,亮度编码块和色度编码块两者可以分别隐含地被分割成多个min(W,64)×min(H,64)和min(W,32)×min(H,32)的变换单元。

图15进一步示出了用于将编码块或预测块分区成变换块的另一可选示例方案。如图15中所示,代替使用递归变换分区,可以根据编码块的变换类型将预定义的分区类型集合应用于编码块。在图15中所示的特定示例中,6种示例分区类型之一可以被应用于将编码块分割成各种数量的变换块。这样的方案可以被应用于编码块或预测块。

更详细地,图15的分区方案为如图15中所示的任何给定变换类型提供多达6种分区类型。在此方案中,可以基于(例如)率失真成本向每个编码块或预测块指配变换类型。在示例中,可以基于编码块或预测块的变换分区类型来确定指配给编码块或预测块的分区类型。特定分区类型可以与变换块分割大小和模式(或分区类型)相对应,如图15中图示的4个分区类型所示。可以预定义各种变换类型与各种分区类型之间的对应关系。以下示出了示例对应,其中大写标记指示可以基于率失真成本被指配给编码块或预测块的变换类型:

·分区_无(PARTITION_NONE):指配等于块大小的变换尺寸。

·分区_分割(PARTITION_SPLIT):指配宽度是块大小的1/2并且高度是块大小的1/2的变换尺寸。

·分区_水平(PARTITION_HORZ):指配宽度与块大小相同并且高度是块大小的1/2的变换尺寸。

·分区_垂直(PARTITION_VERT):指配宽度是块大小的1/2并且高度与块大小相同的变换尺寸。

·分区_水平4(PARTITION_HORZ4):指配宽度与块大小相同并且高度是块大小的1/4的变换尺寸。

·分区_垂直4(PARTITION_VERT4):指配宽度是块大小的1/4并且与高度与块大小相同的变换尺寸。

在以上示例中,如图15中所示的分区类型都包含用于分区的变换块的均匀的变换尺寸。这仅仅是示例而不是限制。在一些其它实现中,混合的变换块尺寸可以被用于特定分区类型(或模式)中的分区变换块。

转到主变换,示例2-D(二维)变换过程可以涉及使用混合变换核(例如,其可以由用于已编码残差块的每一维的不同的1-D(一维)变换构成),以及对两个维使用相同的变换核。示例主1-D变换核可以包括但不限于:a)4点(4p)、8点(8p)、16点(16p)、32点(32p)和64点(64p)DCT-2;b)4点、8点、16点非对称DST及其翻转版本(DST表示离散正弦变换);c)4点、8点、16点或32点恒等变换;d)增量距离变换(IDT)。因此,2-D变换过程可以涉及使用混合变换或变换核(用于已编码残差块的每一维的不同变换),其中要用于每一维的变换或变换核的选择可以基于率失真(RD)标准。术语“变换核”可以可替代地称为变换基函数。例如,可以实现为2-D变换的混合的1-D DCT-2、DST-4和DST-7的基函数在表2中列出(其中DCT表示离散余弦变换)。

表2示例主变换基函数(用于N点输入的DCT-2、DST-4和DST-7)

例如,DCT-2(4p-64p)、DST-4(8p,16p)和DST-7(4p)变换示出对称/反对称特性,因此在一些示例实现中可以支持“部分蝶形”实现,以减少操作计数(乘法、加法/减法、移位)的次数。部分蝶形实现可以涉及使用如图16中描述的以各种角度进行的三角余弦和正弦函数的平面旋转。示例12比特查找表在图17和图18中示出,并且可以用于生成三角函数的值。具体地,图17示出了示例DCT-2(4p-64p)/DST-4(8p,16p)部分蝶形查找表,并且图18示出了示例DST-7(4p)部分蝶形查找表。

在一些示例实现中,变换可以包括线图变换(LGT),如图19中所示。图形可以是由顶点和边缘的集合组成的通用数学结构,其用于模拟感兴趣对象之间的相似关系。实际上,加权图(为其将一组权重指配给边缘并且潜在地指配给顶点)可以为信号/数据的鲁棒建模提供稀疏表示。LGT可以通过为不同的块统计提供更好的自适应来提高编码效率。可分离的LGT可以通过从数据学习线图来设计和优化,以对块残差信号的逐行和逐列统计进行建模,其中相关联的广义图拉普拉斯(GGL)矩阵用于导出LGT。

在一个实现中,给定加权图G(W,V),GGL矩阵可以被定义为LE=D-W+V,其中,W可以是包括非负边缘权重Wc的邻接矩阵,D可以是对角度矩阵,并且V可以是表示加权自环路Vc

然后可以通过GGL Lc的本征分解导出LGT。

L

其中,正交矩阵U的列是LGT的基矢量,并且Φ是对角本征值矩阵。事实上,DCT和DST(包括DCT-2、DCT-8和DST-7)是从某些形式的GGL导出的LGT。通过设置Vc1=0导出DCT-2;通过设置Vc=Wc导出DST-7;通过设置Vc2=Wc导出DCT-8;通过设置Vc1=2w

LGT可以被实现为矩阵乘法。可以通过在Lc中设置vc1=2w

转到用于编码块/单元的特定类型的信令的一些示例实现,对于每个帧内和帧间编码单元,标志(即,skip_txfm标志)可以在已编码码流中被发信号通知,如以下表3的示例语法中所示并且由用于从码流获取这些标志的read_skip()函数来表示。该标志可以指示变换系数在当前编码单元中是否全为零。在一些示例实现中,如果该标志用(例如)值1来发信号通知,则不需要针对编码单元中的任何颜色编码块来发信号通知另一变换系数相关语法(例如,EOB(块结束)),并且可以将其推导为针对零变换系数块预定义并且与零变换系数块相关联的值或数据结构。对于帧间编码块,如表3的示例所示,该标志可以在跳过模式标志之后用信号通知,这指示出于各种原因可以跳过编码单元。当skip_mode为真时,应跳过编码单元并且不需要用信号通知任何skip_txfm标志并且skip_texfm标志被推断为1。否则,如果skip_mode为假,则关于编码单元的更多信息将被包括在码流中,并且skip_txfm标志将被附加地用信号通知以指示编码单元是否全为零。

表3:跳过模式和跳过语法帧内模式信息语法

帧内模式信息语法

跳过语法

转到每个颜色分量中的残差的变换系数的编码和解码(熵编码),对于每个变换块,变换系数编码可以以跳过符号的信令开始,随后是变换核类型和当跳过符号为零(指示存在非零系数)时的块结束(EOB)位置。然后将每个系数值映射到多级映射(幅度映射)和符号。

在EOB位置被编码之后,较低级映射和中级映射可以以反向扫描顺序被编码,前者指示系数幅度是否在低级(例如,在0与2之间)内,而后者指示范围是否在中级(例如,在3与14之间)内。在正向扫描顺序中,下一步通过例如指数哥伦布码(Exp-Golomb code)对系数的符号以及大于高级(例如,14)的系数的残差值进行编码。

对于上下文建模的使用,较低级映射编码可以结合变换大小和方向以及多达五个相邻系数信息。另一方面,中级映射编码可以遵循与低级幅度编码类似的方法,除了相邻系数的数目被降低到较小的数目(例如,2)。用于残差级的示例指数哥伦布码以及AC系数的符号在没有任何上下文模型的情况下被编码,而DC系数的符号使用其相邻变换块的dc符号被编码。

在一些示例实现中,色度残差可以被联合地编码。这样的编码方案可以基于色度通道之间的某种统计相关性。例如,在许多情况下,Cr和Cb色度系数可以在幅度上类似并且在符号上相反,并且因此可以在(例如)变换块级(在该级别用信号通知变换系数)上联合编码以通过仅引入小的颜色失真来改进编码效率。联合色度编码模式的使用(激活)可以例如由联合色度编码标志(例如,TU级标志tu_joint_cbcr_residual_flag)指示,并且选择的联合模式可以由色度CBF隐式地指示。

具体地,如果TU(变换块)的任一或两个色度CBF等于1,则可以存在标志tu_joint_cbcr_residual_flag。在PPS和条带头中,可以针对联合色度残差编码模式用信号通知色度量化参数(QP)偏移值,以与针对常规色度残差编码模式用信号通知的色度QP偏移值区分开。这些色度QP偏移值可以用于导出使用联合色度残差编码模式编码的那些块的色度QP值。当在TU中激活对应的联合色度编码模式(以下表4中的模式2)时,可以在该TU的量化和解码期间将该色度QP偏移添加到应用的亮度导出色度QP。对于其它模式(表4中的模式1和3),可以以与常规Cb或Cr块相同的方式导出色度QP。表4中描述了从发送的变换块重建色度残差(resCb和resCr)的过程。当该模式(模式2)被激活时,可以用信号通知一个单个联合色度残差块(表4中的resJointC[x][y]),并且可以考虑例如tu_cbf_cb、tu_cbf_cr和CSign的信息来导出Cb的残差块(resCb)和Cr的残差块(resCr),CSign是在(例如)条带头中而非在变换块级处指定的符号值。在一些实现中,CSign大部分时间可以是-1。

以上描述的三种示例联合色度编码模式可以仅在帧内编码CU中得到支持。在帧间编码CU中,仅支持模式2。因此,对于帧间编码CU,语法元素tu_joint_cbcr_residual_flag仅在两个色度CBF均为1的情况下才存在。

表4色度残差的重建。值CSign是在条带头中指定的符号值(+1或-1),resJointC[][]是发送的残差。

以上联合色度编码方案假设了同位的Cr变换块和Cb变换块之间的变换系数之间的某种相关性。这些假设通常是统计上的,并且因此在一些情况下可能带来失真。特别地,当变换块中的颜色系数之一为非零而另一颜色分量具有零系数时,则在联合色度编码方案中做出的一些假设肯定会是关闭的,并且这样的编码也不会节省任何已编码比特(因为色度系数之一无论如何都为零)。

在以下各种示例实现中,描述了利用颜色分量的同位变换系数(在频域中同位)之间的某种相关性的系数级(即,逐个变换系数)交叉分量编码方案。这样的方案对于其中一个颜色分量的系数为零而另一颜色分量的对应变换系数为非零的变换块(或单元)特别有用。对于那些在解量化之前或之后的零和非零颜色系数对,非零颜色系数可以用于估计或导出另一颜色分量的零编码系数的原始较小值(其在编码过程中的量化之前可能原本为非零但较小的值),从而可能恢复在例如编码期间的量化过程中丢失的一些信息。由于统计上存在的颜色间相关性,在量化到零期间丢失的一些信息可以被恢复。这样的交叉分量编码在一定程度上恢复了丢失的信息,而没有显著的(零系数的)编码成本。这样的系数信息恢复过程也可以被称为变换系数修正过程(或为简单起见,系数修正过程),因为值为零的系数可以被恢复成例如小的非零值。在一个实现中,在系数修正过程期间,可以通过添加偏移值来修正第二变换块中的零变换系数。可以基于第一变换块中的对应(例如,同位)变换系数来导出偏移值。第一变换块可以与第一颜色分量相关联,并且第二变换块可以与不同于第一颜色分量的第二颜色分量相关联。颜色分量可以是亮度分量和色度分量中的任何一个。

在示例实现中,可以实现交叉分量系数符号编码方法,其利用第一颜色分量的系数符号值来编码第二颜色分量的系数符号。在一个更具体的示例中,Cb变换系数的符号值可以用作对其它Cr变换系数的符号进行编码的上下文。这样的交叉分量编码可以在颜色分量的变换系数对上逐个系数地实现。以下进一步详细描述的这样的实现和其它实现的基本原理不限于Cr分量和Cb分量。它们适用于三种颜色分量中的任何两种。在这方面,亮度通道被认为是颜色分量中的一个。

利用第一分量中的第一变换块中的变换系数来导出和修正第二分量中的第二变换块中的同位变换系数的方法可以被称为交叉分量级重建(CCLR)。在此方法中,使用第二变换块作为参考,将CCLR应用于第一变换块。例如,Cb变换系数的级别值可以用于导出对应(例如,同位)Cr变换系数的级别值,反之亦然。使用CCLR,在解码器端,可以参考一个颜色分量来修正或恢复另一个颜色分量的信息。

在以下示例实现中,术语色度通道通常可以指Cb颜色分量和Cb颜色分量(或通道)两者,或者U颜色分量和V颜色分量(或通道)两者。术语亮度通道可以包括亮度分量或Y分量。亮度分量或亮度通道可以被称为亮度颜色分量或亮度颜色通道。以下使用Y、U和V来表示三种颜色分量。此外,术语“已编码块”和“编码块”可互换使用以表示要编码的块或已经编码的块。它们可以是三个颜色分量中任一个的块。三个对应颜色的已编码块/编码块可以用于已编码单元/编码单元。

在以下示例实现中,变换集合是指一组变换核(或候选)选项。变换集合可以包括DCT、ADST、FLIPADST、IDT、LGT、KLT或RCT类型的核(或候选)选项中的一个或多个。

在以下示例实现中,变换类型是指主变换和/或二次变换的类型。主变换类型的示例可以包括但不限于DCT、ADST、FLIPADST、IDT、LGT、KLT和RCT。二次变换类型的示例包括但不限于使用不同输入大小、不同核的KLT。

在以下示例实现中,术语变换可以指主变换,或二次变换,或主变换和二次变换的组合。术语逆变换可以指逆主变换,或逆二次变换,或逆主变换和逆二次变换的组合。

以下示例实现可以单独使用或以任何顺序组合使用。术语块大小可以指块的块宽度或高度,或宽度和高度的最大值,或宽度和高度的最小值,或面积大小(宽度*高度),或纵横比(宽度:高度,或高度:宽度)。术语“级别值”或“级别”可以指变换系数值的幅度。

在一些示例实现中,第一颜色分量的变换系数的级别值和/或符号值可以用于导出添加到第二颜色分量的变换系数级别值的偏移值。

在一些进一步的实现中,用于生成第二颜色分量的偏移值和变换系数的第一颜色分量的变换系数是同位的(在频域中具有相同坐标,例如,所述估计不是交叉频率)。

虽然以上描述的第一颜色分量和第二颜色分量可以不限于特定颜色分量,但是在一些示例实现中,第一颜色分量可以是Cb(或Cr),而第二颜色分量是Cr(或Cb)。

在一些特定示例实现中,第一颜色分量可以是亮度,第二颜色分量可以是Cb和Cr之一。

在一些特定示例实现中,第一颜色分量可以是Cb和Cr之一,并且第二颜色分量可以是亮度。

在一些示例实现中,第一颜色分量的量化的变换系数可以是非零的,并且所述第二颜色分量的量化的变换系数可以是零。这样,第二分量的原始变换系数的原始相对较小的非零信息可能由于编码过程期间的量化而丢失,并且本文中描述的示例实现帮助使用可以与零系数颜色分量在统计上相关的对应非零颜色分量来恢复一些丢失的信息。

在一些示例实现中,第一颜色分量的变换系数的符号值可以用于导出被添加到第二颜色分量的解量化的变换系数级别值的偏移值。

在一些示例实现中,第一颜色分量的变换系数的符号值用于导出在解量化之前被添加到第二颜色分量的变换系数级别值的偏移值。

在一些示例实现中,如果第一颜色分量的变换系数的符号值为正(或负),则将负(或正)偏移值添加到第二颜色分量的解量化的变换系数级别值,用于重建第二颜色分量的变换系数值。换句话说,第一颜色分量的变换系数的符号值和被添加到第二颜色分量的变换系数级别值的偏移值的符号值具有不同的符号值。这样的实现可以与两个色度分量通常具有变换系数的相反符号的统计观察一致。

在一些示例实现中,在高级语法中用信号通知第一颜色分量的变换系数的符号值与被添加到第二颜色分量的变换系数级别值的偏移值的符号值是否具有相反符号值,包括但不限于:SPS、VPS、PPS、APS、图片头、帧头、条带头、图块头、CTU头。这类似于以上描述的用于联合色度编码方案的信令方案。

在一些示例实现中,被添加到第二颜色分量的变换系数级别值的偏移值可以取决于第一颜色分量的变换系数的符号和级别两者。

在一些示例实现中,被添加到第二颜色分量的变换系数级别值的偏移值的幅度可以取决于第一颜色分量的变换系数级别。

在一些示例实现中,可以针对第一颜色分量的变换系数的系数级别的每个输入值而预定义添加到第二颜色分量的变换系数级别值的偏移值的幅度。

在一些示例实现中,添加到第二颜色分量的变换系数级别值的偏移值可以取决于变换系数所处的频率。例如,对于较高频率系数,偏移值可以较小。

在一些示例实现中,添加到第二颜色分量的变换系数级别值的偏移值可以取决于变换系数所属的块的块大小。例如,对于较大的块大小,偏移值通常可以较小。

在一些示例实现中,被添加到第二颜色分量的变换系数级别值的偏移值可以取决于第二分量是亮度(Y)分量还是色度(Cb或Cr)分量。例如,如果第二颜色分量是亮度,则偏移值可以较小。

在一些示例实现中,对于第二颜色分量的变换块,对此变换块的变换核的选择可以取决于是否应用CCLR方法来修正此变换块中的变换系数。选择的变换核可以用于主变换或二次变换。使用主变换作为示例,在编码(编码器)端,选择的变换核可以用于对预测残差执行变换以得到变换块;在解码(解码器)端,如果对变换块应用CCLR方法,则选择的变换核可以用于对修正的变换块执行逆变换以获得预测残差。注意,在逆变换之前,对变换块执行CCLR修正过程以获得修正的变换块。

在一些示例实现中,可以例如通过语法值或标志来发信号通知针对变换块CCLR是否应用或者启用。

在一些示例实现中,当用于发信号通知与第二颜色分量的变换块相关联的相对块结束位置的EOB为零时,其指示此变换块中的所有变换系数均为零,并且如果将CCLR应用于此变换块,则可以(例如)通过添加与每个变换系数相对应的偏移值来将CCLR修正过程应用于此变换块中的每个变换系数。可以基于第一颜色分量的变换块中的同位变换系数来导出偏移值。作为修正过程的结果,变换块中的修正的变换系数不再全为零。在修正过程之后,可以对CCLR修正的变换块执行逆变换。

在一些示例实现中,CCLR修正过程可以仅以变换块中的变换系数的一部分为目标,而非以整个变换块为目标。

在一些示例实现中,当对第二颜色分量的CCLR修正的变换块应用逆变换时,可以选择与用于对第一颜色分量的同位变换块进行逆变换的变换核相同的变换核。注意,第一颜色分量的同位变换块被用作基础(或参考),用于导出应用于第二颜色分量的变换块上的CCLR修正过程中使用的偏移值。

在一些示例实现中,当在变换块上应用CCLR时,可以显式地用信号通知用于对修正的变换块(从此变换块修正的)执行逆变换的变换核。例如,可以发信号通知指示来自变换集合(即,候选变换核集合)的选择的变换核的索引。变换集可以是预配置的、预定义的、导出的或发信号通知的。

在一些示例实现中,当CCLR被应用于第二颜色分量的变换块并且与该变换块相关联的已编码块是帧内预测块时,则可以基于帧内预测模式隐式地导出用于对修正的变换块(从该变换块修正的)执行逆变换的变换核。在一个实现中,可以对变换核的选择施加附加约束,使得还应当考虑是否在变换块上应用CCLR。例如,对于在其上应用CCLR的一个变换块,选择的变换核必须与不在其上应用CCLR的另一变换块的选择的变换核不同。所述其它变换块可以与相同的已编码块或帧内预测的不同已编码块相关联。

在一些示例实现中,当CCLR被应用于颜色分量(例如,Cb或Cr)的变换块时,则用于对修正的变换块(从该变换块修正的)执行逆变换的变换核可以与被应用于亮度分量的同位变换块的变换核相同。

在一些示例实现中,可以从变换集合中选择用于对修正的变换块执行逆变换的变换核,并且该选择可以基于修正的变换块的块大小。变换集可以是预配置的、预定义的、导出的或发信号通知的。

在一些示例实现中,可能存在关于CCLR方法是否可以应用于变换块的进一步约束。约束可以基于变换类型。在一个实现中,为了应用CCLR方法,主变换或二次变换的变换类型必须限于某些类型或类型的组合。例如,当主变换是2-D变换时,则2-D变换的两个1-D变换必须都是DCT,或都是IDT,或变换类型的一个其它组合。

在一些示例实现中,在CCLR修正过程期间,偏移的推导可以取决于为要修正的变换块选择的变换类型。变换类型可以应用于主变换或二次变换。

虽然针对EOB被指示为零(或块结束的相对位置为零,意味着对应块的变换系数均为零)的情况描述了交叉分量零系数修正,但是交叉分量修正以及变换核类型和/或特定核的选择和信令的各种实现不限于此。例如,一个颜色分量的特定变换块可以仅具有少量的非零系数。然而,可以使用另一颜色分量中的变换系数来修正其它零变换系数。附加地,修正可以进一步基于被修正的相同变换块中的非零系数。变换核类型和/或核的选择可以类似于以上实现来进行。

图20示出了遵循以上实现所基于的原理的示例视频解码方法的流程图2000。方法2000可以包括以下步骤的一部分或全部:步骤2010,接收包括第一颜色分量的第一变换块和第二颜色分量的第二变换块的视频块的码流,其中第一变换块和第二变换块是同位块;步骤2020,从视频块的码流获得第一颜色分量的第一变换块和第二颜色分量的第二变换块;步骤2030,确定指示第一变换块中的所有变换系数均为零的第一标志;步骤2040,确定指示交叉分量级重建(CCLR)被应用于第一变换块的第二标志;以及步骤2050,响应于确定CCLR被应用于第一变换块:

通过添加一个或多个偏移值来修正第一变换块中的变换系数中的一个或多个变换系数,以获得修正的第一变换块,一个或多个偏移值是基于第二变换块中的、与第一变换块中的变换系数中的一个或多个变换系数同位的变换系数而导出的;

确定用于修正的第一变换块的目标变换核;

基于目标变换核对修正的第一变换块执行逆变换以获得目标块;以及

至少基于目标块重建视频块的第一颜色分量。

在本公开的实施例和实现中,任何步骤和/或操作可以根据需要以任何数量或顺序来组合或布置。可以并行地执行步骤和/或操作中的两个或更多个。本公开中的实施例和实现可以单独使用或以任何顺序组合使用。进一步地,方法(或实施例)、编码器和解码器中的每一个可以通过处理电路(例如,一个或多个处理器或一个或多个集成电路)来实现。在一个示例中,一个或多个处理器执行存储在非易失性计算机可读介质中的程序。

以上描述的技术可以被实现为使用计算机可读指令并且物理地存储在一个或多个计算机可读介质中的计算机软件。例如,图21示出了适于实现所公开的主题的某些实施例的计算机系统(2800)。

可以使用任何合适的机器代码或计算机语言来编码计算机软件,该机器代码或计算机语言可以经过汇编、编译、链接或类似机制以创建代码,该代码包括可以由一个或多个计算机中央处理单元(CPU)、图形处理单元(GPU)等直接执行或通过解译、微代码执行等执行的指令。

这些指令可以在各种类型的计算机或其部件上执行,包括(例如)个人计算机、平板计算机、服务器、智能电话、游戏设备、物联网设备等。

图21中所示的用于计算机系统(2800)的部件本质上是示例性的,并且不旨在对实现本公开的实施例的计算机软件的使用范围或功能提出任何限制。部件的配置也不应被解释为对计算机系统(2800)的示例性实施例中图示的任何一个部件或其组合具有任何依赖性或要求。

计算机系统(2800)可以包括某些人机接口输入设备。这样的人机接口输入设备可以响应于一个或多个人类用户通过例如触觉输入(诸如:击键、滑动、数据手套运动)、音频输入(诸如:语音、拍打)、可视输入(诸如:手势)、嗅觉输入(未描绘)。人机接口设备还可以被用于捕获不一定与人的有意识输入直接相关的某些媒体,诸如音频(诸如:语音、音乐、环境声音)、图片(诸如:扫描图像、从静止图像相机获得的摄影图像)、视频(诸如二维视频、包括立体视频的三维视频)。

输入人机接口设备可以包括以下中的一个或多个(每种仅描绘了其中的一个):键盘(2801)、鼠标(2802)、触控板(2803)、触摸屏(2810)、数据手套(未示出)、操纵杆(2805)、麦克风(2806)、扫描仪(2807)、相机(2808)。

计算机系统(2800)还可以包括某些人机接口输出设备。这样的人机接口输出设备可以通过例如触觉输出、声音、光和嗅觉/味觉来刺激一个或多个人类用户的感觉。这样的人机接口输出设备可以包括触觉输出设备(例如通过触摸屏(2810)、数据手套(未示出)或操纵杆(2805)的触觉反馈,但是也可以存在不用作输入设备的触觉反馈设备)、音频输出设备(诸如:扬声器(2809)、耳机(未描绘))、视觉输出设备(诸如用于包括CRT屏幕、LCD屏幕、等离子屏幕、OLED屏幕的屏幕(2810),每个屏幕具有或不具有触摸屏输入能力,每个屏幕具有或不具有触觉反馈能力,其中一些屏幕能够通过诸如立体输出的手段输出二维视觉输出或多于三维输出;虚拟现实眼镜(未描绘)、全息显示器和烟雾罐(未描绘)和打印机(未描绘)。

计算机系统(2800)还可以包括人类可访问的存储设备及其相关联的介质,诸如包括带有CD/DVD的CD/DVD ROM/RW(2820)等介质(2821)的光学介质、拇指驱动器(2822)、可移动硬盘驱动器或固态驱动器(2823)、诸如磁带和软盘(未描绘)的传统磁性介质、诸如安全软件狗(未描绘)的基于专用ROM/ASIC/PLD的设备等。

本领域技术人员还应该理解,结合当前公开的主题使用的术语“计算机可读介质”不包含传输介质、载波或其它易失性信号。

计算机系统(2800)还可以包括到一个或多个通信网络(2855)的接口(2854)。网络可以例如是无线的、有线的、光学的。网络可以进一步是本地的、广域的、大城市的、车载的以及工业的、实时的、延迟容忍的等等。网络的示例包括局域网(诸如以太网)、无线LAN、蜂窝网络(包括GSM、3G、4G、5G、LTE等)、电视有线或无线广域数字网络(包括有线电视、卫星电视和地面广播电视)、车辆和工业网络(包括CANBus)等。某些网络通常需要附接到某些通用数据端口或外围总线(2849)(诸如,计算机系统(2800)的USB端口)的外部网络接口适配器;其它网络通常通过附接到如以下所描述的系统总线而集成到计算机系统(2800)的内核中(例如以太网接口集成到PC计算机系统中或蜂窝网络接口集成到智能电话计算机系统中)。使用这些网络中的任何一个,计算机系统(2800)可以与其它实体通信。这种通信可以是单向的、仅接收的(例如,广播TV)、仅单向发送的(例如,CANbus到某些CANbus设备)或双向的(例如到使用局域数字网络或广域数字网络的其它计算机系统)。可以在如以上描述的那些网络和网络接口中的每一个上使用某些协议和协议栈。

上述人机接口设备、人可访问的存储设备和网络接口可以附接到计算机系统(2800)的内核(2840)。

内核(2840)可以包括一个或多个中央处理单元(CPU)(2841)、图形处理单元(GPU)(2842)、现场可编程门区域(FPGA)形式的专用可编程处理单元(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)等紧密相关联。

计算机可读介质上可以具有用于执行各种计算机实现的操作的计算机代码。介质和计算机代码可以是为了本公开的目的而专门设计和构建的那些,或者它们可以是计算机软件领域的技术人员公知和可用的类型。

作为示例而非作为限制,具有架构(2800)并且特别是内核(2840)的计算机系统可以提供作为执行包含在一个或多个有形的计算机可读介质中的软件的一个或多个处理器(包括CPU、GPU、FPGA、加速器等)的结果的功能。这样的计算机可读介质可以是与如上所介绍的用户可访问大容量存储装置相关联的介质,以及具有非易失性性质的内核(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:AOMedia视频1

AV2:AOMedia视频2

DCT:离散余弦变换

DST:离散正弦变换

ADST:不对称DST FLIPADST:翻转ADST IDT:增量距离变换

LGT:线图变换

KLT:K-L变换

RCT:行列变换

相关技术
  • 一种适用于硬件部署的轻量级图像超分辨率重建方法
  • 一种用于压缩图像的轻量级超分辨率重建模型及系统
技术分类

06120116175273