具有搜索范围限制的帧内块复制模式编解码的方法及装置与流程
未命名
09-13
阅读:84
评论:0

具有搜索范围限制的帧内块复制模式编解码的方法及装置
1.交叉引用
2.本技术是基于且要求于2022年9月7日提交的标题为“method and apparatus for intra block copy(intrabc)mode coding with search range restrictions”的美国非临时申请第17/939,239号优先权权益,该美国非临时申请是基于且要求于2021年9月17日提交的标题为“method and apparatus for intra block copy(intrabc)mode coding with search range restrictions”的美国临时申请第63/245,678号优先权权益,这两个申请中的每一个均通过引用整体并入本文中。
技术领域
3.本公开描述了一组高级视频编码技术。更具体地,所公开的技术涉及视频编码和解码中的帧内块复制(intrabc,或ibc)的实现和增强。
背景技术:
4.本文所提供的背景描述是出于总体上呈现本公开的内容的目的。在该背景部分中描述的范围内,目前命名的发明人的作品以及在本技术提交之时不可另行具备现有技术资格的本描述的各方面既未明确、亦未默示地承认为本公开的现有技术。
5.可以使用具有运动补偿的帧间图片预测来执行视频编码和解码。未压缩的数字视频可以包括一系列图片,每个图片具有例如为1920x1080的亮度样本及相关的全采样或子采样的色度样本的空间维度。该系列图片可以具有例如每秒60张图片或每秒60帧的固定或可变图片速率(或者称为帧率)。未压缩的视频对于流式传输或数据处理具有很高的位速率要求。例如,在每个颜色通道每像素8比特下,像素分辨率为1920x1080、帧率为60帧/秒、并且色度子采样为4:2:0的视频需要接近1.5gbit/s的带宽。一小时的此类视频需要600gb以上的存储空间。
6.视频编码和解码的一个目的可以是通过压缩来减少未压缩的输入视频信号中的冗余。压缩可以帮助减少上述带宽和/或存储空间需求,在某些情况下,可以减少两个数量级或更多。可以采用无损压缩和有损压缩,以及它们的组合。无损压缩是指通过解码过程可以从已压缩的原始信号中重建原始信号的精确副本的技术。有损压缩是指在编码过程中原始视频信息不能完全保留并且在解码过程中不能完全恢复的编码/解码过程。当使用有损压缩时,已重建的信号可能与原始信号不相同,尽管有一些信息损失,但是原始信号和重建的信号之间的失真足够小,以使得已重建的信号可用于预期的应用。在视频的情况下,在很多应用中广泛使用有损压缩。可容忍的失真量取决于应用。例如,某些消费者视频流应用的用户相比于电影或电视广播应用的用户来说可以容忍更高的失真。可以选择或调整特定编码算法可实现的压缩比以反映各种失真容限:更高的可容限失真通常会允许产生更高损耗和更高压缩比的编码算法。
7.视频编码器和解码器可以利用来自若干广泛类别和步骤的技术,包括例如运动补偿、傅里叶变换、量化和熵编码。
8.视频编解码器技术可以包括称为帧内编码的技术。在帧内编码中,在不参考来自先前已重建的参考图片的样本或其他数据的情况下表示样本值。在某些视频编解码器中,图片在空间上细分为样本块。当所有的样本块都以帧内模式编码时,该图片可以是帧内图片。帧内图片及其派生方式(例如独立的解码器刷新图片)可以用于重置解码器状态,并且因此可以用作已编码视频比特流和视频会话中的第一张图片,或者用作静止图像。然后,可以对帧内预测之后的块的样本进行到频域的变换,并且可以在熵编码之前对如此生成的变换系数进行量化。帧内预测表示一种使预变换域中的样本值最小化的技术。在某些情况下,变换后的dc值越小,且ac系数越小,则在给定的量化步长尺寸下就需要越少的比特来表示熵编码后的块。
9.诸如从例如mpeg-2代编码技术已知的传统帧内编码不使用帧内预测。然而,一些较新的视频压缩技术包括基于例如从例如周围样本数据和/或元数据尝试对块进行编码/解码的技术,该周围样本数据和/或元数据是对空间上相邻的数据块进行编码/解码期间获得的、且在解码顺序上先于正在帧内编码或解码的数据块。此类技术此后称为“帧内预测”技术。注意,至少在某些情况下,帧内预测仅使用来自正在重建的当前图片的参考数据,而不使用来自其他参考图片的参考数据。
10.帧内预测可以有许多不同的形式。当在给定的视频编码技术中不止一种这样的技术可用时,所使用的技术可以称之为帧内预测模式。可以在特定编解码器中提供一个或多个帧内预测模式。在某些情况下,模式可以具有子模式和/或可以与各种参数相关联,并且用于视频块的模式/子模式和帧内编码参数可以单独编码或共同地包含在模式码字中。针对给定的模式/子模式/参数组合使用哪个码字可以通过帧内预测对编码效率增益产生影响,且用于将码字转换为比特流的熵编码技术也是如此。
11.h.264引入了某种帧内预测模式,在h.265中对其进行了改进,并在诸如联合探索模型(joint exploration model,jem)、下一代视频编码(versatile video coding,vvc)、基准集(benchmark set,bms)等新的编码技术中进一步进行了改进。通常,对于帧内预测,可以使用已经成为可用的相邻样本值来形成预测器块。例如,可以将沿着特定方向和/或线的特定相邻样本集的可用值复制到预测器块中。对所使用方向的参考可以编码在比特流中,或者可以对其本身进行预测。
12.参考图1a,右下方描绘的是在h.265的33种可能的预测器方向(对应于h.265中指定的35种帧内模式中的33种角度模式)中指定9个预测器方向的子集。箭头会聚的点(101)表示正在被预测的样本。箭头表示使用相邻样本来预测101处的样本的方向。例如,箭头(102)指示样本(101)是根据与水平方向成45度角的右上方向的一个或多个相邻样本来预测的。同样,箭头(103)指示样本(101)是根据与水平方向成22.5度角的样本(101)的左下方向的一个或多个相邻样本来预测的。
13.仍参考图1a,在左上角描绘了一个4x4个样本的正方形块(104)(由粗体虚线表示)。正方形块(104)包含16个样本,每个样本使用“s”及其在y维度上的位置(例如,行索引)和其在x维度上的位置(例如列索引)来标记。例如,样本s21是y维度上(从顶部开始)的第二个样本,以及x维度上(从左侧开始)的第一个样本。类似地,样本s44在y维度和x维度上都是块(104)中的第四个样本。由于块的大小为4x4个样本,因此s44在右下角。还示出了遵循类似编号方案的示例参考样本。参考样本用r及其相对于块(104)的y位置(例如行索引)和x位
coding)”,2016年12月)中描述了各种mv预测机制。在h.265指定的多种mv预测机制中,下面描述的是下文称作“空间合并”的技术。
22.具体地,参考图2,当前块(201)包括在运动搜索过程期间已由编码器发现的样本,可以根据已产生空间偏移的相同大小的先前块来预测该样本。代替对mv直接编码,该mv可以使用与标记为a0、a1和b0、b1、b2(分别对应202到206)的五个周围样本中的任一样本关联的mv,从与一个或多个参考图片(例如从(按解码次序)最近的参考图片)相关联的元数据中导出。在h.265中,mv预测可以使用来自相邻块使用的相同参考图片的预测值。
技术实现要素:
23.本公开的各方面总体上涉及视频编码和解码,特别地,涉及帧内块复制模式下的视频编码和解码。
24.本公开的各方面提供了一种用于处理视频数据的方法。所述方法包括接收视频比特流,所述视频比特流包括视频帧的至少一个块,所述至少一个块包括当前块;确定所述视频帧中的第一搜索区域,其中,所述第一搜索区域是用于定位帧内块复制(intrabc)预测块的第一候选区域,其中,所述第一搜索区域与所述当前块不重叠、并且包括块列表,所述intrabc预测块是用于对所述当前块的至少部分进行intrabc预测的候选块;确定第二搜索区域,其中,所述第二搜索区域是用于定位所述intrabc预测块的第二候选区域,所述第二搜索区域包括以下至少之一:(i)所述当前块的子块,以及(ii)所述当前块的相邻块;识别由块矢量参考的所述intrabc预测块;基于所述intrabc预测块、所述第一搜索区域和所述第二搜索区域之间的空间关系来确定预测;以及基于所确定的预测对所述当前块的至少部分进行解码。
25.本公开的各方面还提供了一种视频编码或解码设备或装置,包括被配置为执行上述方法实现中的任何一个的电路。
26.本公开的各方面还提供了非暂时性计算机可读介质,存储有指令,当所述指令由计算机执行用于视频解码和/或编码时,使得计算机执行用于视频解码和/或编码的方法。
附图说明
27.通过以下详细描述和附图,所公开的主题的其他特征、性质和各种优势将更加明显,在附图中:
28.图1a是帧内预测方向模式示例性子集的示意图;
29.图1b是示例性的帧内预测方向的图示;
30.图2示出了在一个示例中用于运动矢量预测的当前块及其周围空间合并候选的示意图;
31.图3示出了根据示例实施例的通信系统(300)的简化框图的示意图;
32.图4示出了根据示例实施例的通信系统(400)的简化框图的示意图;
33.图5示出了根据示例实施例的视频解码器的简化框图的示意图;
34.图6示出了根据示例实施例的视频编码器的简化框图的示意图;
35.图7示出了根据另一示例实施例的视频编码器的框图;
36.图8示出了根据另一示例实施例的视频解码器的框图;
37.图9示出了根据本公开的示例实施例的编码块分区的方案;
38.图10示出了根据本公开的示例实施例的编码块分区的另一方案;
39.图11示出了根据本公开的示例实施例的编码块分区的另一方案;
40.图12示出了根据示例分区方案的将基本块分区为编码块的示例;
41.图13示出了示例性三元分区方案;
42.图14示出了示例性四叉树二叉树编码块分区方案;
43.图15示出了根据本公开的示例实施例的用于将编码块分区为多个变换块以及变换块的编码顺序的方案;
44.图16示出了根据本公开的示例实施例的用于将编码块分区为多个变换块以及变换块的编码顺序的另一方案;
45.图17示出了根据本公开的示例实施例的用于将编码块分区为多个变换块的另一方案;
46.图18示出了使用同一帧中的已重建编码块来预测当前编码块的帧内块复制(ibc)的概念;
47.图19示出了可作为ibc的参考样本的示例性已重建样本;
48.图20示出了具有一些示例限制的情况下可用作ibc的参考样本的示例性已重建样本;
49.图21示出了用于ibc的示例性片上参考样本存储器(rsm)更新机制;
50.图22示出了图21的示例性片上rsm更新机制的空间视图;
51.图23示出了用于ibc的另一示例性片上参考样本存储器(rsm)更新机制;
52.图24示出了用于水平分割超级块和垂直分割超级块的ibc的示例性rsm更新机制的空间视图的比较;
53.图25示出了ibc参考块的示例性非局部和局部搜索区域;
54.图26示出了采用局部和非局部参考块搜索区域的ibc的示例性预测块和所提出的对预测块选择的限制;
55.图27示出了根据本公开的示例实施例的方法的流程图;以及
56.图28示出了根据本公开的示例实施例的计算机系统的示意图。
具体实施方式
57.下面将参考附图详细描述本发明,附图是本发明的一部分,并且通过图示的方式示出了实施例的具体示例。然而,请注意,本发明可以以各种不同的形式实施,因此,所涵盖或要求保护的主题旨在被解释为不限于下面阐述的任何实施例。还请注意,本发明可以体现为方法、设备、组件或系统。因此,本发明的实施例可以采取例如硬件、软件、固件或其任意组合的形式。
58.在整个说明书和权利要求书中,术语可以具有在上下文中暗示或隐含的超出明确陈述的含义的细微含义。本文中使用的短语“在一个实施例中”或“在一些实施例中”不一定指相同的实施例,并且本文中使用的短语“在另一个实施例中”或“在其他实施例中”不一定指不同的实施例。同样,这里使用的短语“在一个实施中”或“在一些实施中”不一定指相同的实施,并且这里使用的短语“在另一个实施中”或“在其他实施中”不一定指不同的实施。
例如,所要求保护的主题包括全部或部分示例性实施例/实现的组合。
59.一般来说,术语可以至少部分地从上下文中的用法来理解。例如,这里使用的诸如“和”、“或”或“和/或”的术语可以包括各种含义,这些含义可以至少部分取决于使用这些术语的上下文。通常,“或”如果用于关联诸如a、b或c之类的列表,则意在表示a、b和c(此处用于包含意义)以及a、b或c(此处用于排斥意义)。此外,在此使用的术语“一个或多个”或“至少一个”,至少部分取决于上下文,可用于以单数意义描述任何特征、结构或特征,或可用于以复数意义描述特征、结构或特征的组合。类似地,诸如“一”、“一个”或“该/所述”的术语也可以被理解为传达单数用法或传达复数用法,这至少部分取决于上下文。此外,“基于”或“由
…
确定”一词可被理解为不一定意在传达一组排他性因素,而是可能允许存在不一定明确描述的其他因素,这也至少部分取决于上下文。
60.图3示出了根据本公开的实施例的通信系统(300)的简化框图。通信系统(300)包括多个终端装置,该终端装置可通过例如网络(350)彼此通信。举例来说,通信系统(300)包括通过网络(350)互连的第一终端装置对(310)和(320)。在图3的示例中,第一终端装置对(310)和(320)可以执行单向数据传输。举例来说,终端装置(310)可对视频数据(例如由终端装置(310)采集的视频图片流)进行编码以通过网络(350)传输到另一终端装置(320)。已编码视频数据以一个或多个已编码视频比特流形式传输。终端装置(320)可从网络(350)接收已编码视频数据,对已编码视频数据进行解码以恢复视频图片,并根据恢复的视频数据显示视频图片。单向数据传输可以在媒体服务等应用中实现。
61.在另一示例中,通信系统(300)包括执行已编码视频数据的双向传输的第二终端装置对(330)和(340),该双向传输可例如在视频会议应用期间实现。对于双向数据传输,在一示例中,终端装置(330)和终端装置(340)中的每个终端装置可对视频数据(例如由终端装置采集的视频图片流)进行编码,以通过网络(350)传输到终端装置(330)和终端装置(340)中的另一终端装置。终端装置(330)和终端装置(340)中的每个终端装置还可接收由终端装置(330)和终端装置(340)中的另一终端装置传输的已编码视频数据,且可对该已编码视频数据进行解码以恢复视频图片,且可根据恢复的视频数据在可访问的显示装置上显示视频图片。
62.在图3的示例中,终端装置(310)、终端装置(320)、终端装置(330)和终端装置(340)可被实现为服务器、个人计算机和智能电话,但本公开的基本原理的适用性可不限于此。本公开的实施例可以在桌面计算机、膝上型计算机、平板电脑、媒体播放器、可穿戴计算机和/或专用视频会议设备等中实现。网络(350)表示在终端装置(310)、终端装置(320)、终端装置(330)和终端装置(340)之间传送已编码视频数据的任何数目或类型的网络,包括例如有线(连线的)和/或无线通信网络。通信网络(350)可在电路交换分组交换和/或其他类型的信道中交换数据。代表性的网络可包括电信网络、局域网、广域网和/或互联网。出于本讨论的目的,除非本文明确解释,否则网络(350)的架构和拓扑对于本公开的操作来说可能是无关紧要的。
63.作为所公开主题的应用的示例,图4示出了视频编码器和视频解码器在视频流式传输环境中的放置方式。所公开主题可同等地适用于其它视频应用,包括例如视频会议、数字电视广播、游戏、虚拟现实、在包括cd、dvd、存储棒等的数字介质上存储压缩视频等等。
64.视频流式传输系统可包括视频采集子系统(413),该视频采集子系统可包括例如
数码相机的视频源(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-th.265建议书。在示例中,正在开发的视频编码标准非正式地称为下一代视频编码(versatilevideocoding,vvc),所公开的主题可用于vvc和其他视频编码标准的上下文中。
65.应注意,电子装置(420)和电子装置(430)可包括其它组件(未示出)。举例来说,电子装置(420)可包括视频解码器(未示出),且电子装置(430)还可包括视频编码器(未示出)。
66.图5是根据本公开的下述任何实施例的视频解码器(510)的框图。视频解码器(510)可包括在电子装置(530)中。电子装置(530)可包括接收器(531)(例如接收电路)。视频解码器(510)可用于代替图4的示例中的视频解码器(510)。
67.接收器(531)可接收将由视频解码器(510)解码的一个或多个已编码视频序列。在同一实施例或另一实施例中,一次解码一个已编码视频序列,其中每个已编码视频序列的解码独立于其它已编码视频序列。每个视频序列可以与多个视频帧或图像相关联。可从信道(501)接收已编码视频序列,该信道可以是通向存储已编码视频数据的存储装置或者是发送已编码视频数据的流式传输源的硬件/软件链路。接收器(531)可接收可转发到它们各自的处理电路(未描绘)的已编码视频数据以及其它数据,例如,已编码音频数据和/或辅助数据流。接收器(531)可将已编码视频序列与其它数据分开。为了防止网络抖动,缓冲存储器(515)可设置在接收器(531)与熵解码器/解析器(520)(此后称为“解析器(520)”)之间。在某些应用中,缓冲存储器(515)可以实现为视频解码器(510)的一部分。在其他应用中,该缓冲存储器(515)可设置在视频解码器(510)之外并与之分离(未示出)。在其它应用中,在视频解码器(510)的外部可设置缓冲存储器(未描绘)以例如防止网络抖动,且在视频解码器(510)的内部可配置另一附加的缓冲存储器(515)以例如处理播放定时。当接收器(531)从具有足够带宽和可控性的存储/转发装置或从等时同步网络接收数据时,也可能不需要配置缓冲存储器(515),或可以将该缓冲存储器做得较小。为了在诸如互联网之类的尽力服务的分组网络上使用,也可能需要足够大小的缓冲存储器(515),该缓冲存储器的大小可相对较大。这种缓冲存储器可以以自适应性大小来实现,且可至少部分地实施于操作系统或
视频解码器(510)外部的类似元件(未描绘)中。
68.视频解码器(510)可包括解析器(520)以根据已编码视频序列重建符号(521)。这些符号的类别包括用于管理视频解码器(510)的操作的信息,以及用以控制诸如显示器(512)(例如,显示屏)等显示装置的潜在信息,该显示装置可以是或不是电子装置(530)的整体部分,但可耦接到电子装置(530),如图5中所示。用于显示装置的控制信息可以是辅助增强信息(supplemental enhancement information,sei消息)或视频可用性信息(video usability information,vui)的参数集片段(未示出)。解析器(520)可对由解析器(520)接收到的已编码视频序列进行解析/熵解码。已编码视频序列的熵编码可根据视频编码技术或标准进行,且可遵循各种原理,包括可变长度编码、霍夫曼编码(huffman coding)、具有或不具有上下文灵敏度的算术编码等等。解析器(520)可基于对应于子群的至少一个参数,从已编码视频序列提取用于视频解码器中的像素的子群中的至少一个子群的子群参数集。子群可包括图片群组(group of pictures,gop)、图片、图块、切片、宏块、编码单元(coding unit,cu)、块、变换单元(transform unit,tu)、预测单元(prediction unit,pu)等等。解析器(520)还可从已编码视频序列提取信息,例如变换系数(例如,傅里叶变换系数)、量化器参数值、运动矢量等等。
69.解析器(520)可对从缓冲存储器(515)接收的视频序列执行熵解码/解析操作,从而创建符号(521)。
70.取决于已编码视频图片或一部分已编码视频图片(例如:帧间图片和帧内图片、帧间块和帧内块)的类型以及其它因素,符号(521)的重建可涉及多个不同处理或功能单元。涉及的单元以及涉及方式可由解析器(520)从已编码视频序列解析的子群控制信息来控制。为了简洁起见,未描述解析器(520)与下文的多个处理或功能单元之间的此类子群控制信息流。
71.除已经提及的功能块以外,视频解码器(510)可在概念上细分成如下文所描述的数个功能单元。在商业约束下运行的实际实施例中,这些功能单元中的许多单元彼此紧密交互并且可以至少部分地彼此集成。然而,出于清楚地描述所公开主题的各种功能的目的,本公开在下文中采用概念上细分成功能单元。
72.第一单元可包括缩放器/逆变换单元(551)。缩放器/逆变换单元(551)可从解析器(520)接收作为符号(521)的量化变换系数以及控制信息,包括指示使用哪种类型的逆变换、块大小、量化因子/参数、量化定标矩阵等的信息。缩放器/逆变换单元(551)可输出包括样本值的块,该样本值可输入到聚合器(555)中。
73.在一些情况下,缩放器/逆变换单元(551)的输出样本可属于帧内编码块,即,不使用来自先前已重建的图片的预测性信息,但可使用来自当前图片的先前已重建部分的预测性信息的块。此类预测性信息可由帧内图片预测单元(552)提供。在一些情况下,帧内图片预测单元(552)可以采用已经重建且存储在当前图片缓冲器(558)中的周围块信息生成大小和形状与正在重建的块相同的块。举例来说,当前图片缓冲器(558)缓冲部分重建的当前图片和/或完全重建的当前图片。在一些实施中,聚合器(555)可以基于每个样本,将帧内预测单元(552)生成的预测信息添加到由缩放器/逆变换单元(551)提供的输出样本信息中。
74.在其它情况下,缩放器/逆变换单元(551)的输出样本可属于帧间编码的和潜在运动补偿的块。在此情况下,运动补偿预测单元(553)可访问参考图片存储器(557)以提取用
于帧内图片预测的样本。在根据属于块的符号(521)对提取的样本进行运动补偿之后,这些样本可由聚合器(555)添加到缩放器/逆变换单元(551)的输出(单元551的示出被称作残差样本或残差信号),从而生成输出样本信息。运动补偿预测单元(553)从中提取预测样本的参考图片存储器(557)内的地址受运动矢量控制,且该运动矢量以符号(521)的形式而供运动补偿预测单元(553)使用,该符号(521)可以具有例如x、y分量(偏移)和参考图片分量(时间)。运动补偿还可包括在使用子样本精确运动矢量时,从参考图片存储器(557)提取的样本值的内插,并且还可以与运动矢量预测机制等相关联。
75.聚合器(555)的输出样本可经受环路滤波器单元(556)中的各种环路滤波技术。视频压缩技术可包括环路内滤波器技术,该环路内滤波器技术受控于包括在已编码视频序列(也称作已编码视频比特流)中并且作为来自解析器(520)的符号(521)可用于环路滤波器单元(556)的参数,然而,视频压缩技术还可响应于在解码已编码图片或已编码视频序列的先前(按解码次序)部分期间获得的元信息,以及响应于先前已重建且经过环路滤波的样本值。几种类型的环路滤波器可以以各种顺序被包括作为环路滤波器单元556的一部分,如下面将进一步详细描述的。
76.环路滤波器单元(556)的输出可以是样本流,该样本流可输出到显示装置(512)以及存储在参考图片存储器(557)中,以用于后续的帧间图片预测。
77.一旦完全重建,某些已编码图片就可用作参考图片以用于将来帧间图片预测。举例来说,一旦对应于当前图片的已编码图片被完全重建,且已编码图片(通过例如解析器(520))被识别为参考图片,则当前图片缓冲器(558)可变为参考图片存储器(557)的一部分,且可在开始重建后续已编码图片之前重新分配新的当前图片缓冲器。
78.视频解码器(510)可根据例如itu-t h.265建议书标准中采用的预定视频压缩技术执行解码操作。在已编码视频序列遵循视频压缩技术或标准的语法以及视频压缩技术或标准中记录的配置文件的意义上,已编码视频序列可符合所使用的视频压缩技术或标准指定的语法。具体地说,配置文件可从视频压缩技术或标准中可用的所有工具中选择某些工具作为在该配置文件下可供使用的仅有工具。对于合规性,还要求已编码视频序列的复杂度处于视频压缩技术或标准的层级所限定的范围内。在一些情况下,层级限制最大图片大小、最大帧率、最大重建取样率(以例如每秒兆(mega)个样本为单位进行测量)、最大参考图片大小等。在一些情况下,由层级设定的限制可通过假想参考解码器(hypothetical reference decoder,hrd)规范和在已编码视频序列中用信号通知的hrd缓冲器管理的元数据来进一步限定。
79.在一些示例实施例中,接收器(531)可连同已编码视频一起接收附加(冗余)数据。该附加数据可以被包括作为已编码视频序列的一部分。该附加数据可由视频解码器(510)用以对数据进行适当解码和/或较准确地重建原始视频数据。附加数据可为例如时间、空间或信噪比(signal noise ratio,snr)增强层、冗余切片、冗余图片、前向纠错码等形式。
80.图6示出了根据本公开的示例实施例的视频编码器(603)的框图。视频编码器(603)可包括在电子装置(620)中。电子装置(620)还可包括传输器(640)(例如传输电路)。视频编码器(603)可用于代替图4的示例中的视频编码器(603)。
81.视频编码器(603)可从视频源(601)(并非图6示例中的电子装置(620)的一部分)接收视频样本,该视频源可采集将由视频编码器(603)编码的视频图像。在另一示例中,视
频源(601)可以实现为电子装置(620)的一部分。
82.视频源(601)可提供将由视频编码器(603)编码的呈数字视频样本流形式的源视频序列,该数字视频样本流可具有任何合适位深度(例如:8位、10位、12位
……
)、任何色彩空间(例如bt.601ycrcb、rgb、xyz
……
)和任何合适采样结构(例如ycrcb 4:2:0、ycrcb 4:4:4)。在媒体服务系统中,视频源(601)可以是能够存储先前已准备的视频的存储装置。在视频会议系统中,视频源(601)可以是采集本地图像信息作为视频序列的相机。可将视频数据提供为多个单独的图片或图像,当按顺序观看时,这些图片或图像被赋予运动。图片自身可构造为空间像素阵列,其中取决于所用的取样结构、色彩空间等,每个像素可包括一个或多个样本。所属领域的技术人员可以很容易理解像素与样本之间的关系。下文侧重于描述样本。
83.根据一些示例实施例,视频编码器(603)可实时或在由应用所要求的任何其它时间约束下,将源视频序列的图片编码且压缩成已编码视频序列(643)。施行适当的编码速度构成了控制器(650)的一个功能。在一些实施例中,控制器(650)可以在功能上耦接到如下文所描述的其它功能单元且且控制所述其它功能单元。为了简洁起见,图中未标示耦接。由控制器(650)设置的参数可包括速率控制相关参数(图片跳过、量化器、率失真优化技术的λ值
……
)、图片大小、图片群组(gop)布局、最大运动矢量搜索范围等。控制器(650)可被配置成具有其它合适的功能,这些功能涉及针对某一系统设计优化的视频编码器(603)。
84.在一些示例实施例中,视频编码器(603)可被配置成在编码环路中进行操作。作为简单的描述,在示例中,编码环路可包括源编码器(630)(例如,负责基于待编码的输入图片和参考图片创建符号,例如符号流)和嵌入于视频编码器(603)中的(本地)解码器(633)。解码器(633)以类似于(远程)解码器创建样本数据的方式来重建符号以创建样本数据,即使嵌入的解码器633处理由源编码器630在没有熵编码的情况下的已编码视频流(因为在所公开主题所考虑的视频压缩技术中,熵编码中的符号与已编码视频比特流之间的任何压缩可以是无损的)。将重建的样本流(样本数据)输入到参考图片存储器(634)。由于符号流的解码产生与解码器位置(本地或远程)无关的位精确结果,因此参考图片存储器(634)中的内容在本地编码器与远程编码器之间也是按比特位精确对应的。换句话说,编码器的预测部分“看到”的参考图片样本与解码器将在解码期间使用预测时所“看到”的样本值完全相同。这种参考图片同步性的基本原理(以及在例如因信道误差而无法维持同步性的情况下产生的漂移)被用于改进编码质量。
[0085]“本地”解码器(633)的操作可与例如已在上文结合图5详细描述的视频解码器(510)的“远程”解码器相同。然而,另外简要参考图5,当符号可用且熵编码器(645)和解析器(520)能够无损地将符号编码/解码为已编码视频序列时,包括缓冲存储器(515)和解析器(520)在内的视频解码器(510)的熵解码部分,可能无法完全在编码器中的本地解码器(633)中实施。
[0086]
此时可以观察到,除可能仅存在于解码器中的解析/熵解码之外的任何解码器技术也可能必定需要以基本上相同的功能形式存在于对应的编码器中。出于此原因,所公开主题有时可能集中在解码器操作,其与编码侧的解码部分相关。从而可简化编码器技术的描述,因为编码器技术与全面地描述的解码器技术互逆。以下仅在某些区域或方面提供了编码器的更详细的描述。
[0087]
在操作期间,在一些示例实现中,源编码器(630)可执行运动补偿预测编码。参考来自视频序列中被指定为“参考图片”的一个或多个先前已编码图片,该运动补偿预测编码对输入图片进行预测性编码。以此方式,编码引擎(632)对输入图片的像素块与参考图片的像素块之间的颜色通道差异(或者残差)进行编码,该参考图片可被选作该输入图片的预测参考。术语“残差”及其形容词形式“残差的”可以互换使用。
[0088]
本地视频解码器(633)可基于源编码器(630)创建的符号,对可指定为参考图片的图片的已编码视频数据进行解码。编码引擎(632)的操作可有利地为有损过程。当已编码视频数据可在视频解码器(图6中未示出)处被解码时,重建的视频序列通常可以是带有一些误差的源视频序列的副本。本地视频解码器(633)复制解码过程,该解码过程可由视频解码器对参考图片执行,且可使重建的参考图片存储在参考图片高速缓存(634)中。以此方式,视频编码器(603)可在本地存储重建的参考图片的副本,该副本与将由远端视频解码器获得的重建的参考图片具有共同内容(不存在传输误差)。
[0089]
预测器(635)可针对编码引擎(632)执行预测搜索。即,对于将要编码的新图片,预测器(635)可在参考图片存储器(634)中搜索可作为该新图片的适当预测参考的样本数据(作为候选参考像素块)或某些元数据,例如参考图片运动矢量、块形状等。预测器(635)可基于样本块逐像素块操作,以找到合适的预测参考。在一些情况下,如由预测器(635)获得的搜索结果所确定的那样,输入图片可具有从参考图片存储器(634)中存储的多个参考图片取得的预测参考。
[0090]
控制器(650)可管理源编码器(630)的编码操作,包括例如设置用于对视频数据进行编码的参数和子群参数。
[0091]
可在熵编码器(645)中对所有上述功能单元的输出进行熵编码。熵编码器(645)根据例如霍夫曼编码、可变长度编码、算术编码等技术对各种功能单元生成的符号进行无损压缩,从而将该符号变换成已编码视频序列。
[0092]
传输器(640)可缓冲由熵编码器(645)创建的已编码视频序列,从而为通过通信信道(660)进行传输做准备,该通信信道可以是通向将存储已编码视频数据的存储装置的硬件/软件链路。传输器(640)可将来自视频编码器(603)的已编码视频数据与要传输的其它数据合并,该其它数据例如是已编码音频数据和/或辅助数据流(未示出来源)。
[0093]
控制器(650)可管理视频编码器(603)的操作。在编码期间,控制器(650)可以为每个已编码图片分配某一已编码图片类型,但这可能影响可应用于相应的图片的编码技术。例如,通常可将图片分配为以下任一种图片类型:
[0094]
帧内图片(i图片),其可以是不将序列中的任何其它图片用作预测源就可被编码和解码的图片。一些视频编解码器容许不同类型的帧内图片,包括例如独立解码器刷新(independent decoder refresh,“idr”)图片。所属领域的普通技术人员了解i图片的变体及其相应的应用和特征。
[0095]
预测性图片(p图片),其可以是可使用帧内预测或帧间预测进行编码和解码的图片,该帧内预测或帧间预测使用至多一个运动矢量和参考索引来预测每个块的样本值。
[0096]
双向预测性图片(b图片),其可以是可使用帧内预测或帧间预测进行编码和解码的图片,该帧内预测或帧间预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,多个预测性图片可使用多于两个参考图片和相关联元数据以用于重建单个块。
[0097]
源图片通常可在空间上细分成多个样本编码块(例如,4
×
4、8
×
8、4
×
8或16
×
16个样本的块),且逐块进行编码。这些块可参考其它(已编码)块进行预测性编码,该其它块由应用于块的相应图片的编码分配来确定。举例来说,i图片的块可进行非预测性编码,或该块可参考同一图片的已编码的块来进行预测性编码(空间预测或帧内预测)。p图片的像素块可参考一个先前编码的参考图片通过空间预测或通过时间预测进行预测性编码。b图片的块可参考一个或两个先前编码的参考图片通过空间预测或通过时间预测进行预测性编码。为了其他目的,源图片或中间处理图片可以被细分成其他类型的块。编码块和其他类型的块的划分可以遵循或可以不遵循相同的方式,见下面进一步的详细描述。
[0098]
视频编码器(603)可根据例如itu-t h.265建议书的预定视频编码技术或标准执行编码操作。在操作中,视频编码器(603)可执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测编码操作。因此,已编码视频数据可符合所使用的视频编码技术或标准指定的语法。
[0099]
在一些示例性实施例中,传输器(640)可在传输已编码视频时传输附加数据。源编码器(630)可包括此类数据作为已编码视频序列的一部分。附加数据可包括时间/空间/snr增强层、冗余图片和切片等其它形式的冗余数据、sei消息、vui参数集片段等。
[0100]
采集到的视频可作为呈时间序列的多个源图片(视频图片)。帧内图片预测(常常简化为帧内预测)利用给定图片中的空间相关性,而帧间图片预测则利用图片之间的时间或其它相关性。例如,将正在编码/解码的特定图片分割成块,正在编码/解码的特定图片被称作当前图片。在当前图片中的块类似于视频中先前已编码且仍被缓冲的参考图片中的参考块时,可通过称作运动矢量的矢量对当前图片中的块进行编码。该运动矢量指向参考图片中的参考块,且在使用多个参考图片的情况下,该运动矢量可具有识别参考图片的第三维度。
[0101]
在一些示例实施例中,双向预测技术可用于帧间图片预测中。根据双向预测技术,使用两个参考图片,例如按解码次序都在视频中的当前图片之前(但按显示次序可能分别是过去和将来)的第一参考图片和第二参考图片。可通过指向第一参考图片中的第一参考块的第一运动矢量和指向第二参考图片中的第二参考块的第二运动矢量对当前图片中的块进行编码。可通过第一参考块和第二参考块的组合来联合预测该块。
[0102]
此外,合并模式技术可用于帧间图片预测中以改善编码效率。
[0103]
根据本公开的一些示例实施例,例如帧间图片预测和帧内图片预测的预测以块为单位执行。例如,将视频图片序列中的图片分区为编码树单元(coding tree unit,ctu)以用于压缩,图片中的ctu可具有相同大小,例如128
×
128像素、64
×
64像素、32
×
32像素或16
×
16像素。通常,ctu可以包括三个并行编码树块(ctb):一个亮度ctb和两个色度ctb。可将每个ctu递归地四叉树拆分为一个或多个编码单元(coding unit,cu)。例如,可将64
×
64像素的ctu拆分为一个64
×
64像素的cu,或4个32
×
32像素的cu。32
×
32块中的一个或多个块中的每一个可以被进一步拆分成16
×
16像素的4个cu。在一些示例性实施例中,可以在编码期间分析每个cu以在各种预测类型(例如帧间预测类型或帧内预测类型)中确定用于cu的预测类型。取决于时间和/或空间可预测性,可以将cu拆分为一个或多个预测单元(prediction unit,pu)。通常,每个pu包括一个亮度预测块(prediction block,pb)和两个色度pb。在一个实施例中,编解码(编码/解码)中的预测操作以预测块为单位来执行。可以
以各种空间模式执行将cu拆分成pu(或不同颜色通道的pb)。例如,亮度或色度pb可以包括样本的值(例如,亮度值)的矩阵,例如8
×
8像素、16
×
16像素、8
×
16像素、16
×
8像素等。
[0104]
图7示出了根据本公开的另一示例实施例的视频编码器(703)的图。视频编码器(703)被配置成接收视频图片序列中的当前视频图片内的样本值的处理块(例如预测块),且将该处理块编码到作为已编码视频序列的一部分的已编码图片中。示例的视频编码器(703)可以用于代替图4示例中的视频编码器(403)。
[0105]
例如,视频编码器(703)接收用于处理块的样本值的矩阵,该处理块为例如8
×
8样本的预测块等。然后视频编码器(703)使用例如率失真优化(rate-distortion optimization,rdo)来确定是否使用帧内模式、帧间模式或双向预测模式来最佳地编码该处理块。当确定在帧内模式中编码处理块时,视频编码器(703)可使用帧内预测技术以将处理块编码到已编码图片中;且当确定在帧间模式或双向预测模式中编码处理块时,视频编码器(703)可分别使用帧间预测或双向预测技术将处理块编码到已编码图片中。在一些示例实施例中,合并模式可以用作帧间图片预测的子模式,其中,在不借助预测器外部的已编码运动矢量分量的情况下,从一个或多个运动矢量预测器导出运动矢量。在一些其他示例实施例中,可存在适用于主题块的运动矢量分量。因此,视频编码器(703)可以包括图7中未明确示出的组件,例如用于确定处理块的预测模式的模式决策模块。
[0106]
在图7的示例中,视频编码器(703)包括如图7示例性布置中所示的耦接到一起的帧间编码器(730)、帧内编码器(722)、残差计算器(723)、开关(726)、残差编码器(724)、通用控制器(721)和熵编码器(725)。
[0107]
帧间编码器(730)被配置成接收当前块(例如处理块)的样本、比较该块与参考图片中的一个或多个参考块(例如按显示顺序在先前图片和后来图片中的块)、生成帧间预测信息(例如根据帧间编码技术的冗余信息描述、运动矢量、合并模式信息)、以及基于帧间预测信息使用任何合适的技术计算帧间预测结果(例如已预测块)。在一些示例中,参考图片是使用嵌入在图6的示例编码器620中的解码单元633(如图7的残差解码器728所示,如下面进一步详细描述的)基于已编码视频信息解码的已解码参考图片。
[0108]
帧内编码器(722)被配置成接收当前块(例如处理块)的样本、比较该块与同一图片中已编码的块、在变换之后生成量化系数、以及在一些情况下还生成帧内预测信息(例如根据一个或多个帧内编码技术的帧内预测方向信息)。帧内编码器(722)可以基于帧内预测信息和同一图片中的参考块计算帧内预测结果(例如已预测块)。
[0109]
通用控制器(721)可以被配置成确定通用控制数据,且基于该通用控制数据控制视频编码器(703)的其它组件。在示例中,通用控制器(721)确定块的预测模式,且基于该预测模式将控制信号提供到开关(726)。举例来说,当该预测模式是帧内模式时,通用控制器(721)控制开关(726)以选择供残差计算器(723)使用的帧内模式结果,且控制熵编码器(725)以选择帧内预测信息且将该帧内预测信息添加在比特流中;以及当用于块的该预测模式是帧间模式时,通用控制器(721)控制开关(726)以选择供残差计算器(723)使用的帧间预测结果,且控制熵编码器(725)以选择帧间预测信息且将该帧间预测信息添加在比特流中。
[0110]
残差计算器(723)可以被配置成计算所接收的块与选自帧内编码器(722)或帧间编码器(730)的块的预测结果之间的差(残差数据)。残差编码器(724)可以被配置成对残差
数据进行编码以生成变换系数。例如,残差编码器(724)可以被配置成将残差数据从空间域变换至频域,以生成变换系数。变换系数接着经受量化处理以获得量化的变换系数。在各种示例实施例中,视频编码器(703)还包括残差解码器(728)。残差解码器(728)被配置成执行逆变换,且生成已解码残差数据。已解码残差数据可适当地由帧内编码器(722)和帧间编码器(730)使用。举例来说,帧间编码器(730)可基于已解码残差数据和帧间预测信息生成已解码块,且帧内编码器(722)可基于已解码残差数据和帧内预测信息生成已解码块。适当处理已解码块以生成已解码图片,且该已解码图片可在存储器电路(未示出)中缓冲并用作参考图片。
[0111]
熵编码器(725)可以被配置成将比特流格式化以包括已编码块且执行熵编码。熵编码器(725)被配置成在比特流中包括各种信息。例如,熵编码器(725)可以被配置成将通用控制数据、所选预测信息(例如帧内预测信息或帧间预测信息)、残差信息和其它合适的信息包括在比特流中。当在帧间模式或双向预测模式的合并子模式中对块进行编码时,不存在残差信息。
[0112]
图8示出了根据本公开的另一实施例的示例视频解码器(810)的图。视频解码器(810)被配置成接收作为已编码视频序列的一部分的已编码图片,且对该已编码图片进行解码以生成重建的图片。在示例中,视频解码器(810)可以用于代替图4的示例中的视频解码器(410)。
[0113]
在图8的示例中,视频解码器(810)包括如图8的示例布置中所示的耦接到一起的熵解码器(871)、帧间解码器(880)、残差解码器(873)、重建模块(874)和帧内解码器(872)。
[0114]
熵解码器(871)可被配置成根据已编码图片来重建某些符号,这些符号表示构成该已编码图片的语法元素。此类符号可包括例如用于对该块进行编码的模式(例如,帧内模式、帧间模式、双向预测模式、合并子模式或其他子模式)、可识别供帧内解码器(872)或帧间解码器(880)用以进行预测的某些样本或元数据的预测信息(例如帧内预测信息或帧间预测信息)、呈例如量化的变换系数形式的残差信息等等。在示例中,当预测模式是帧间或双向预测模式时,将帧间预测信息提供到帧间解码器(880);以及当预测类型是帧内预测类型时,将帧内预测信息提供到帧内解码器(872)。残差信息可经受逆量化并提供到残差解码器(873)。
[0115]
帧间解码器(880)可以被配置成接收帧间预测信息,且基于该帧间预测信息生成帧间预测结果。
[0116]
帧内解码器(872)可以被配置成接收帧内预测信息,且基于该帧内预测信息生成预测结果。
[0117]
残差解码器(873)可以被配置成执行逆量化以提取解量化的变换系数,且处理该解量化的变换系数,以将残差从频域变换到空间域。残差解码器(873)还可能利用某些控制信息(用以包括量化器参数qp),且该信息可由熵解码器(871)提供(未标示数据路径,因为这仅仅是低数据量控制信息)。
[0118]
重建模块(874)可以被配置成在空间域中组合由残差解码器(873)输出的残差与预测结果(根据具体情况,可由帧间预测模块或帧内预测模块输出)以形成重建的块,该重建的块形成了重建的图片的一部分,该重建的图片继而作为重建的视频的一部分。应注意,也可执行诸如解块操作等其它合适的操作来改善视觉质量。
[0119]
应注意,可使用任何合适的技术来实施视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)。在一些示例实施例中,可使用一个或多个集成电路来实施视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)。在另一实施例中,可使用执行软件指令的一个或多个处理器来实施视频编码器(403)、(603)和(603)以及视频解码器(410)、(510)和(810)。
[0120]
转向用于编码和解码的块分区,一般分区可以从基本块开始,并且可以遵循预定义的规则集、特定模式、分区树或任何分区结构或方案。分区可以是分层的和递归的。在遵循下面描述的任何示例分区过程或其他过程或其组合来对基本块进行划分或分区(partitioning)之后,可以获得分区(partition)或编码块的最终集合。这些分区中的每一个可以处于分区层次结构中的各种分区级别中的一个,并且可以具有各种形状。每个分区可以被称为编码块(cb)。对于下面进一步描述的各种示例分区实施,每个结果cb可以是任意允许的大小和分区级别。这样的分区被称为编码块,因为它们可以形成可以对其做出一些基本的编码/解码决策的单元,并且可以在已编码的视频比特流中优化、确定和用信号发送编码/解码参数。最终分区中的最高或最深级别代表树的编码块分区结构的深度。编码块可以是亮度编码块或色度编码块。每种颜色的cb树结构可以被称为编码块树(cbt)。
[0121]
所有颜色通道的编码块可以统称为编码单元(cu)。所有颜色通道的分层结构可以统称为编码树单元(ctu)。ctu中各种颜色通道的分区模式或结构可能相同,也可能不同。
[0122]
在一些实施中,用于亮度和色度通道的分区树方案或结构可能不需要相同。换句话说,亮度和色度通道可以具有单独的编码树结构或模式。此外,亮度和色度通道是否使用相同或不同的编码分区树结构以及实际使用的编码分区树结构可以取决于被编码的切片是p、b还是i切片。例如,对于i切片,色度通道和亮度通道可以具有单独的编码分区树结构或编码分区树结构模式,而对于p或b切片,亮度和色度通道可以共享相同的编码分区树方案。当应用单独的编码分区树结构或模式时,亮度通道可以通过一个编码分区树结构被分区成cbs,色度通道可以通过另一个编码分区树结构被分区成色度cbs。
[0123]
在一些示例实现中,预定的分区模式可以应用于基本块。如图9所示,示例的4路分区树可以从第一预定义级别(例如,64x64块级别或其他大小,作为基本块大小)开始,并且基本块可以被分层地向下分区到预定义的最低级别(例如,4x4级别)。例如,基本块可以受902、904、906和908指示的四个预定义分区选项或模式的影响,其中被指定为r的分区可以用于递归分区,因为如图9所示的相同分区选项可以以较低的规模重复直到最低级别(例如,4x4级别)。在一些实施中,额外的限制可以应用于图9的分区方案。在图9的实施中,可以是矩形分区(例如,1:2/2:1矩形分区),但是这些矩形分区不可以是递归的,而正方形分区可以是递归的。如果需要的话,继图9的递归分区会生成最终的一组编码块。可以进一步定义编码树深度以指示来自根节点或根块的拆分深度。例如,根节点或根块(例如,64x64块)的编码树深度可以设置为0,并且在根块根据图9被进一步拆分一次之后,编码树深度增加1。对于上述方案,从64x64基本块到4x4的最小分区的最大或最深级别将是4(从级别0开始)。这种分区方案可以应用于一个或多个颜色通道。每个颜色通道可以按照图9的方案独立地进行分区(例如,对于每个分层级别的每个颜色通道,可以独立地确定预定义模式(patttern)中的分区模式或选项)。可替换地,两个或多个颜色通道可以共享图9的相同分层模式树(例如,可以为每个分层级别的两个或更多个颜色通道选择预定义模式中的相同
tree,qtbt)结构。在这样的方案中,基本块或中间块/分区可以是四叉树拆分或二元拆分,如果指定的话,服从一组预定义的条件。一个特定的例子如图14所示。在图14的例子中,基本块首先被四叉树拆分成四个分区,如1402、1404、1406和1408所示。此后,所得到的分区中的每一个要么被四叉树拆分为四个分区(例如1408),要么在下一级被二元拆分为两个进一步的分区(例如水平地或垂直地,例如1402或1406,两者都是对称的),要么不被拆分(例如1404)。对于正方形分区,可以递归地进行二元或四叉树拆分,如1410的整体示例分区模式和1420中的相应树结构/表示所示,其中实线表示四叉树拆分,虚线表示二元拆分。可以为每个二元拆分节点(非叶二元分区)使用标志来指示二元拆分是水平的还是垂直的。例如,如1420所示,与1410的分区结构一致,标志“0”可以表示水平二元拆分,标志“1”可以表示垂直二元拆分。对于四叉树-拆分分区,不需要指示拆分类型,因为四叉树拆分总是水平和垂直拆分块或分区,以产生大小相等的4个子块/分区。在一些实施中,标志“1”可以表示水平二元拆分,标志“0”可以表示垂直二元拆分。
[0129]
在qtbt的一些示例实施中,四叉树和二元拆分规则集可以由以下预定义参数和与其相关联的相应函数来表示:
[0130]-ctu大小:四叉树的根节点大小(基本块的大小)
[0131]-minqtsize:允许的最小四叉树叶节点大小
[0132]-maxbtsize:允许的最大二叉树根节点大小
[0133]-maxbtdepth:允许的最大二叉树深度
[0134]-minbtsize:允许的最小二叉树叶节点大小
[0135]
在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。得到的四个分区中的每一个都是64x64,不超过maxbtsize,可以在级别1进一步四叉树或二叉树分割。这一过程仍在继续。当二叉树深度达到maxbtdepth(即4)时,可以不考虑进一步的拆分。当二叉树节点的宽度等于minbtsize(即4)时,可以不考虑进一步的水平拆分。类似地,当二叉树节点的高度等于minbtsize时,不考虑进一步的垂直拆分。
[0136]
在一些示例实施中,上述qtbt方案可以被配置为支持亮度和色度具有相同qtbt结构或分开的qtbt结构的灵活性。例如,对于p和b切片,一个ctu中的亮度和色度ctb可以共享相同的qtbt结构。然而,对于i切片,亮度ctb可以通过qtbt结构分区为cb,色度ctb可以通过另一qtbt结构分区为色度cb。这意味着cu可以用于指代i切片中的不同颜色通道,例如,i切片可以由亮度分量的编码块或两个色度分量的编码块组成,并且p或b切片中的cu可以由所有三个颜色分量的编码块组成。
[0137]
在一些其他实施中,qtbt方案可以用上述三元方案来补充。这种实施可以被称为多类型树(mtt)结构。例如,除了节点的二元拆分之外,可以选择图13的三元分区模式之一。
在一些实施中,只有正方形节点可以进行三元拆分。可以使用附加标志来指示三元分区是水平的还是垂直的。
[0138]
两级或多级树的设计,例如qtbt实现和由三元拆分补充的qtbt实现,可能主要是出于降低复杂性的动机。理论上,遍历树的复杂度是td,其中t表示拆分类型的数量,并且d是树的深度。可以在减少深度(d)的同时通过使用多种类型(t)来进行折衷。
[0139]
在一些实施中,cb可以被进一步分区。例如,为了在编码和解码过程期间进行帧内或帧间预测的目的,可将cb进一步分区为多个预测块(pb)。换句话说,cb可以进一步划分为不同的子分区,其中可以进行单独的预测决策/配置。并行地,为了描绘执行视频数据的变换或逆变换的级别,可将cb进一步分区为多个变换块(tb)。cb到pb和tb的分区方案可以相同,也可以不相同。例如,每个分区方案可以基于例如视频数据的各种特征使用其自己的过程来执行。在一些示例实施中,pb和tb分区方案可以是独立的。在一些其他示例实施中,pb和tb分区方案和边界可以是相关的。在一些实施中,例如,tb可以在pb分区之后被分区,并且具体地,每个pb在继编码块的分区后被确定之后,可以被进一步分区为一个或多个tb。例如,在一些实施中,pb可以被拆分成一个、两个、四个或其他数量的tb。
[0140]
在一些实施中,为了将基本块分区为编码块并进一步分区为预测块和/或变换块,亮度通道和色度通道可以被不同地处理。例如,在一些实施中,对于亮度通道,可以将编码块分区为预测块和/或变换块,而对于色度通道,可以不将编码块分区为预测块和/或变换块。因此,在这样的实施中,可以仅在编码块级别执行亮度块的变换和/或预测。对于另一个示例,亮度通道和色度通道的最小变换块大小可以不同,例如,亮度通道的编码块可以被分区为比色度通道更小的变换和/或预测块。对于又一示例,将编码块分区为变换块和/或预测块的最大深度在亮度通道和色度通道之间可以不同,例如,可以将亮度通道的编码块分区为比色度通道更深的变换块和/或预测块。对于特定示例,亮度编码块可以被分区为多个大小的变换块,这些变换块可以由递归分区向下最多2级来表示,并且可以允许诸如正方形、2:1/1:2和4:1/1:4的变换块形状以及从4
×
4到64
×
64的变换块大小。然而,对于色度块,可以只允许为亮度块指定的最大可能的变换块。
[0141]
在用于将编码块分区为pb的一些示例实施中,pb分区的深度、形状和/或其他特征可以取决于pb是帧内编码还是帧间编码。
[0142]
编码块(或预测块)到变换块的分区可以在各种示例方案中实现,包括但不限于递归地或非递归地四叉树拆分和预定模式拆分,并且在编码块或预测块的边界处附加考虑变换块。通常,得到的变换块可以处于不同的拆分级别,可以不具有相同的大小,并且可以不需要在形状上是正方形的(例如,它们可以是具有某些允许的大小和纵横比的矩形)。下面将结合图15、16和17进一步详细地描述更多的示例。
[0143]
然而,在一些其它实施中,经由上述任何分区方案获得的cb可用作用于预测和/或变换的基本或最小编码块。换句话说,为了执行帧间预测/帧内预测目的和/或变换目的,不进行进一步的拆分。例如,从上述qtbt方案获得的cb可以直接用作进行预测的单位。具体地,这种qtbt结构消除了多种分区类型的概念,即,它消除了cu、pu和tu的分离,并支持如上所述的cu/cb分区形状的更大灵活性。在这种qtbt块结构中,cu/cb可以是正方形或矩形形状。这种qtbt的叶节点被用作预测和变换处理的单元,而无需任何进一步的分区。这意味着在这种示例性qtbt编码块结构中,cu、pu和tu具有相同的块大小。
[0144]
可以以任何方式将上述各种cb分区方案和将cb进一步分区为pb和/或tb(不包括pb/tb分区)进行组合。提供以下特定实施作为非限制性示例。
[0145]
下面描述编码块和变换块分区的具体示例实施。在这样的示例性实施中,可以使用递归四叉树拆分或上述预定义的拆分模式(例如图9和10中示出的)将基本块拆分为编码块。在每个级别,可以由本地视频数据特性来确定是否继续对特定分区进行进一步的四叉树拆分。所得到的cb可以处于各种四叉树拆分级别,并且具有各种大小。关于是否使用帧间(时间)或帧内(空间)预测来编码图片区域的决策可以在cb级别(或对于所有三色通道的cu级别)做出。每个cb可以根据预定义的pb拆分类型进一步拆分成一个、两个、四个或其他数量的pb。在一个pb内,可以应用相同的预测过程,并且可以基于pb将相关信息发送到解码器。在通过应用基于pb拆分类型的预测过程获得残差块之后,可以根据类似于cb的编码树的另一四叉树结构将cb分区成tb。在该特定实施中,cb或tb可以但不必限于正方形。此外,在该特定示例中,对于帧间预测,pb可以是正方形或矩形,并且对于帧内预测,pb可以仅是正方形。编码块可以被拆分成例如四个正方形tb。每个tb可以被进一步递归地拆分(使用四叉树拆分)成更小的tb,称为残差四叉树(rqt)。
[0146]
下面进一步描述用于将基本块分区为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)、垂直三元拆分(split_tt_ver)(1106)和水平三元拆分(split_tt_hor)(1108)。然后,cb对应于多类型树的叶子。在该示例实施中,除非cb对于最大变换长度来说太大,否则该分割用于预测和变换处理,而无需任何进一步的分区。这意味着,在大多数情况下,在具有嵌套多类型树编码块结构的四叉树中,cb、pb和tb具有相同的块大小。当支持的最大变换长度小于cb的颜色分量的宽度或高度时,会发生异常。在一些实施中,除了二元或三元拆分之外,图11的嵌套模式还可以包括四叉树拆分。
[0147]
图12示出了一个基本块的块分区(包括四叉树、二元和三元拆分选项)的具有嵌套多类型树编码块结构的四叉树的一个具体示例。更详细地说,图12示出了基本块1200被四叉树拆分成四个正方形分区1202、1204、1206和1208。对于每一个四叉树-拆分分区,决定进一步使用图11的多类型树结构和四叉树进行进一步拆分。在图12的例子中,分区1204没有被进一步拆分。分区1202和1208各自采用另一四叉树拆分。对于分区1202,第二级四叉树-拆分左上、右上、左下和右下分区分别采用四叉树的第三级拆分、图11的水平二元拆分1104、不拆分和图11的水平三元拆分1108。分区1208采用另一个四叉树拆分,并且第二级四叉树-拆分左上、右上、左下和右下分区分别采用图11的垂直三元拆分1106的第三级拆分、不拆分、不拆分和图11的水平二元拆分1104。分别根据图11的水平二元拆分1104和水平三
元拆分1108进一步拆分1208的第三级左上分区的两个子分区。分区1206采用第二级拆分模式,其遵循图11的垂直二元拆分1102成两个分区,这两个分区根据图11的水平三元拆分1108和垂直二元拆分1102在第三级进一步拆分。根据图11的水平二元拆分1104,第四级拆分进一步应用于它们中的一个。
[0148]
对于上面的特定示例,最大亮度变换大小可以是64
×
64,并且支持的最大色度变换大小可以不同于例如32
×
32的亮度。即使上面在图12中的示例cb通常不被进一步拆分成更小的pb和/或tb,但当亮度编码块或色度编码块的宽度或高度大于最大变换宽度或高度时,亮度编码块或色度编码块可在水平和/或垂直方向上被自动拆分以满足该方向上的变换尺寸限制。
[0149]
在上述用于将基本块分区为cb的具体示例中,并且如上所述,编码树方案可以支持亮度和色度具有单独的块树结构的能力。例如,对于p和b切片,一个ctu中的亮度和色度ctb可以共享相同的编码树结构。例如,对于i切片,亮度和色度可以具有单独的编码块树结构。当应用单独的块树结构时,亮度ctb可以通过一个编码树结构被分区为亮度cb,并且色度ctb通过另一个编码树结构被分区为色度cb。这意味着i切片中的cu可以由亮度分量的编码块或两个色度分量的编码块组成,并且p或b切片中的cu总是由所有三个颜色分量的编码块组成,除非视频是单色的。
[0150]
当编码块被进一步分区为多个变换块时,其中的变换块可以按照各种顺序或扫描方式在比特流中排序。用于将编码块或预测块分区为变换块的示例实施以及变换块的编码顺序在下面进一步详细描述。在一些示例实施中,如上所述,变换分区可以支持多个形状的变换块,例如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)变换块的倍数。
[0151]
在变换块分区的一些示例实现中,对于帧内和帧间编码块,编码块可以被进一步分区成多个变换块,其分区深度高达预定数目的级别(例如,2个级别)。变换块分区深度和大小可以相关联。对于一些示例实施,从当前深度的变换大小到下一个深度的变换大小的映射如下面的表1中所示。
[0152]
表1:变换分区大小设置
[0153][0154]
基于表1的示例映射,对于1:1正方形块,下一级变换拆分可以创建四个1:1正方形子变换块。例如,变换分区可以在4x4处停止。因此,当前深度为4
×
4的变换大小对应于下一深度的相同大小4
×
4。在表1的示例中,对于1:2/2:1的非正方形块,下一级变换拆分可以创建两个1:1的正方形子变换块,而对于1:4/4:1的非正方形块,下一级变换拆分可以创建两个1:2/2:1的子变换块。
[0155]
在一些示例实施中,对于帧内编码块的亮度分量,可以相对于变换块分区应用附加限制。例如,对于变换分区的每一级,所有子变换块可以被限制为具有相等的大小。例如,对于32x16编码块,级别1变换拆分创建2个16x16子变换块,级别2变换拆分创建8个8x8子变换块。换句话说,第二级拆分必须应用于所有第一级子块,以保持变换单元大小相等。图15中示出了遵循表1的用于帧内已编码的正方形块的变换块分区的示例以及箭头所示的编码顺序。具体地,1502示出了正方形编码块。在1504中示出了根据表1第一级拆分成4个大小相等的变换块,其编码顺序由箭头指示。1506中示出了根据表1将所有第一级相等大小的块第二级拆分成16个相等大小的变换块,其编码顺序由箭头指示。
[0156]
在一些示例实施中,对于帧间编码块的亮度分量,可以不应用上述帧内编码的限制。例如,在第一级变换拆分之后,子变换块中的任何一个子变换块可以被进一步独立地再拆分一个以上的级别。因此,得到的变换块可以具有相同或不同的大小。图16示出了将帧间已编码块拆分成具有其编码顺序的变换块的示例。在图16的例子中,帧间已编码块1602根据表1被拆分成两级的变换块。在第一级,帧间已编码块被拆分成大小相等的四个变换块。
然后,仅四个变换块中的一个(不是全部)被进一步拆分成四个子变换块,得到具有两种不同大小的总共7个变换块,如1604所示。这7个变换块的示例编码顺序由图16的1604中的箭头示出。
[0157]
在一些示例实施中,对于色度分量,可以应用对变换块的一些附加限制。例如,对于色度分量,变换块大小可以与编码块大小一样大,但不小于预定义的大小,例如8
×
8。
[0158]
在一些其他示例实施中,对于宽度(w)或高度(h)大于64的编码块,亮度和色度编码块都可以分别被隐式地拆分成min(w,64)
×
min(h,64)和min(w,32)
×
min(h,32)变换单元的倍数。这里,在本公开中,“min(a,b)”可以返回a和b之间的较小值。
[0159]
图17进一步示出了用于将编码块或预测块分区为变换块的另一替代示例方案。如图17所示,代替使用递归变换分区,可以根据编码块的变换类型将预定义的分区类型集合应用于编码块。在图17所示的特定示例中,可以应用6种示例分区类型中的一种来将编码块拆分为各种数量的变换块。这种生成变换块分区的方案可以应用于编码块或预测块。
[0160]
更详细地,图17的分区方案为任何给定的变换类型提供了多达6个示例分区类型(变换类型是指例如主变换的类型,例如adst和其他)。在该方案中,每个编码块或预测块可以基于例如率失真成本被分配变换分区类型。在示例中,可基于编码块或预测块的变换类型来确定分配给编码块或预测块的变换分区类型。特定的变换分区类型可以对应于变换块拆分大小和模式,如图17中的6种变换分区类型所示。可以预定义各种变换类型和各种变换分区类型之间的对应关系。下面示出了一个示例,其中大写标签指示可基于率失真成本分配给编码块或预测块的变换分区类型:
[0161]
·
partition_none:分配变换大小,其等于块大小。
[0162]
·
partition_split:分配变换大小,其宽度为块大小的宽度的1/2且高度为块大小的高度的1/2。
[0163]
·
partition_horz:分配变换大小,其具有与块大小相同的宽度且高度为块大小的高度的1/2。
[0164]
·
partition_vert:分配变换大小,其宽度为块大小的宽度的1/2且高度与块大小的高度相同。
[0165]
·
partition_horz4:分配变换大小,,其宽度与块大小的宽度相同且高度为块大小的高度的1/4。
[0166]
·
partition_vert4:分配变换大小,其宽度为块大小的宽度的1/4且高度与块大小的高度相同。
[0167]
在上面的例子中,如图17所示的变换分区类型都包含用于已分区变换块的统一变换大小。这只是一个例子,而不是用来限制本发明。在一些其他实施中,混合变换块大小可以用于特定分区类型(或模式)中的已分区变换块。
[0168]
视频块(pb或cb,当没有被进一步分区成多个预测块时也称为pb)可以以各种方式预测,而不是直接编码,从而利用视频数据中的各种相关性和冗余来提高压缩效率。相应地,这种预测可以以各种模式执行。例如,可以通过帧内预测或帧间预测来预测视频块。特别是在帧间预测模式中,视频块可以由来自一个或多个其他帧的一个或多个其他参考块或帧间预测器块通过单参考或复合参考帧间预测来进行预测。为了实现帧间预测,参考块可以由其帧标识符(参考块的时间位置)和指示正在编码或解码的当前块和参考块之间的空
间偏移的运动矢量(参考块的空间位置)来指定。可以在比特流中用信号通知参考帧标识和运动矢量。作为空间块偏移的运动矢量可以直接用信号通知,或者可以由另一参考运动矢量或预测器运动矢量本身预测。例如,可以通过(例如候选相邻块的)参考运动矢量直接预测当前运动矢量,或者通过参考运动矢量和当前运动矢量与参考运动矢量之间的运动矢量差(motion vector difference,mvd)的组合来预测当前运动矢量。后者可以被称为具有运动矢量差的合并模式(merge mode with motion vector difference,mmvd)。在比特流中,参考运动矢量可以被识别为指向例如当前块的空间相邻块或时间相邻但空间同位块的指针。
[0169]
在一些其他示例实施中,可以采用帧内块复制(intra-block copy,ibc)预测。在ibc中,当前帧中的当前块可以使用当前帧中的另一个块(而不是时间上不同的帧,因此使用术语“帧内”)结合块矢量(block vector,bv)来预测,该块矢量用于指示帧内预测器或参考块的位置相对于正被预测的块的位置的偏移。编码块的位置可以由例如相对于当前帧(或切片)的左上角的左上角的像素坐标来表示。因此,ibc模式在当前帧内使用类似帧间预测概念。例如,一bv可通过其他参考bv直接或结合当前bv和参考bv之间的bv差来预测,这类似于在帧间预测中使用参考mv和mv差来预测mv。ibc有助于提供改进的编解码效率,特别是用于编码和解码具有屏幕内容的视频帧,例如,该屏幕内容含有大量重复模式,例如文本信息,其中,相同的文本分段(字母、符号、单词、短语等)出现在同一帧的不同部分中,并且可以用来相互预测。
[0170]
在一些实施中,ibc可以被视为除了正常的帧内预测模式和正常的帧间预测模式之外的单独的预测模式。因此,可以在三种不同的预测模式:帧内预测、帧间预测和ibc模式中进行特定块的预测模式的选择并用信号通知该选择的预测模式。在这些实施中,可以在这些模式的每一个中建立灵活性,以优化这些模式中的每一个的编解码效率。在一些其它实施中,可以使用类似的运动矢量确定、参考和编解码机制,将ibc视为帧间预测模式内的子模式或分支。在这样的实施中(集成帧间预测模式和ibc模式),为了协调一般帧间预测模式和ibc模式,ibc的灵活性可能在一定程度上受到限制。然而,这种实施不太复杂,同时仍然可以利用ibc来提高例如以屏幕内容为特征的视频帧的编解码效率。在一些示例实施中,利用现有的用于单独的帧间预测模式和帧内预测模式的预先指定的机制,可以扩展帧间预测模式以支持ibc。
[0171]
这些预测模式的选择可以在各种级别进行,包括但不限于序列级别、帧级别、图片级别、切片级别、ctu级别、ct级别、cu级别、cb级别或pb级别。例如,为了ibc的目的,关于是否采用ibc模式的决定可以在ctu级别做出并用信号通知。如果ctu被信号通知为采用ibc模式,那么整个ctu中的所有编码块都可以由ibc预测。在一些其它实施中,ibc预测可以在超级块(sb或超块)级别确定。每个sb可以以各种方式(例如,四叉树划分)被拆分成多个ctu或分区。下面进一步提供示例。
[0172]
图18从解码器的角度示出了包含多个ctu的当前帧的部分的示例简要说明。每个方块(如1802)代表一个ctu。ctu大小可以是以上详细描述的各种预定义大小之一,例如sb。每个ctu可以包括一个或多个编码块(或预测块,用于特定的颜色通道)。使用水平线遮蔽的ctu代表那些已经重建的ctu。ctu 1804代表正在重建的当前ctu。在当前ctu 1804中,使用水平线遮蔽的编码块表示在当前ctu中已经被重建的那些块,使用斜线遮蔽的编码块1806
当前正在被重建,而当前ctu 1804中无遮蔽的编码块正在等待重建。其他无遮蔽的ctu尚未处理。
[0173]
如图18中的示例箭头所示,ibc中用于预测当前编码块的参考块(相对于当前块)的位置或偏移可以由bv指示。例如,bv可以以矢量形式指示参考块(在图18中标记为“ref”)的左上角与当前块的左上角之间的位置差。而图18是使用ctu作为基本ibc单元来说明的。基本原则适用于将sb用作基本ibc单元的实施。在这样的实施中,如下面更详细描述的,每个超级块可以被划分成多个ctu,并且每个ctu可以被进一步划分成多个编码块。
[0174]
如下面进一步更详细地公开的,取决于用于ibc的参考ctu/sb相对于当前ctu/sb的位置,参考ctu/sb可以被称为局部ctu/sb或非局部ctu/sb。局部ctu/sb可以指与当前ctu/sb重合的ctu/sb,或者指靠近当前ctu/sb并且已经被重建的ctu/sb(例如,当前ctu/sb的左相邻ctu/sb)。非局部ctu/sb可以指距离当前ctu/sb更远的ctu/sb。当执行当前编码块的ibc预测时,可以搜索局部ctu/sb和非局部ctu/sb中的任一个或全部以寻找参考块。实现ibc的具体方式可取决于参考ctu/sb是局部的还是非局部的,因为用于局部或非局部ctu/sb参考的重建样本(例如片外图片缓冲器(dpb)和/或片上存储器)的片上和片外存储管理可能不同。例如,已重建的局部ctu/sb样本可适于存储在用于ibc的编码器或解码器的片上存储器中。例如,已重建的非局部ctu/sb样本可以存储在片外dpb存储器或外部存储器中。
[0175]
在一些实施中,可以被用作当前编码块1804的参考块的已重建块的位置可以受到限制。这种限制可以是各种因素的结果,并且可以取决于ibc是作为一般帧间预测模式的集成部分、帧间预测模式的特殊扩展还是单独和独立的ibc模式。在一些示例中,可以仅搜索当前已重建的ctu/sb样本来识别ibc参考块。在一些其他示例中,如图18的粗虚线框1808所示,当前已重建的ctu/sb样本和另一个相邻已重建的ctu/sb样本(例如,左侧相邻的ctu/sb)可用于参考块搜索和选择。对于这样的实施,只有局部已重建的ctu/sb样本可以用于ibc参考块搜索和选择。在一些其他示例中,由于各种其他原因,某些ctu/sb可能不可用于ibc参考块搜索和选择。例如,在图18中用交叉线标记的ctu/sb 1810可能不可用于搜索和选择当前块1804的参考块,因为它们可以用于特殊目的(例如,波前并行处理),如下面进一步描述的。
[0176]
在一些实施中,如图18所示的,由粗虚线框1808形成的区域可以被称为局部搜索区域。局部搜索区域中的样本可以存储在片上存储器中。
[0177]
在一些实施中,当允许帧内块复制(intrabc)时,环路滤波器被禁用,环路滤波器包括去块滤波器、约束方向增强滤波器(constrained directional enhancement filter,cdef)和环路恢复(loop restoration,lr)。通过这样做,可以避免专用于启用/支持intrabc的第二图片缓冲器。
[0178]
在一些实施中,采用并行解码(即,同时解码多于一个的编码块)可能导致对于被允许用于提供ibc参考块或参考样本的已经重建的ctu/sb的限制。在如图19所示的例子中,每个方块代表一个ctu/sb。可以实现并行解码,其中,可以在并行处理中重建多个连续行和每隔一列(每两列)中的多个ctu/sb,如图19中使用斜线遮蔽的ctu/sb所示。其他水平线遮蔽的ctu/sb已经重建,无遮蔽的ctu/sb是尚未构建的。通过这种并行处理,对于左上坐标为(x0,y0)的当前并行处理的ctu/sb,只有当垂直坐标y小于y0且水平坐标x小于x0+2(y
0-y)时,才可以在ibc中访问(x,y)处的已重建样本以预测当前ctu/sb,因此,使用水平线遮蔽的已
经构建的ctu/sb可以作为并行处理的当前块的参考。注意,诸如(x0,y0)和(x,y)的坐标单位可以包括像素、块(例如,sb)等。
[0179]
在一些实施中,将立即重建的样本写入片外dpb的写回时延可以对可用于为当前块提供ibc参考样本的ctu/sb施加进一步的限制,特别是当片外dpb用于保持(hold)ibc参考样本时。在图20中示出了一个示例,其中可以在图19所示的那些限制之上施加附加的限制。具体地,为了允许硬件写回时延,ibc预测可以不访问立即重建的区域来搜索和选择参考块。限制或禁止的立即重建区域的数量可以是1~n ctu/sbs,其中n是正数,n可以与写回时延的持续时间正相关。因此,在图19的特定并行处理限制之上,对于当前ctu/sb(使用斜线遮蔽),如果一个当前ctu/sb的左上位置的坐标是(x0,y0),则如果垂直坐标y小于y0并且水平坐标小于x0+2(y
0-y)-d,则可以通过ibc访问位置(x,y)处的预测,其中d表示被限制/禁止用作ibc参考的立即重建区域(例如,在当前ctu/sb的左侧)的数目。图20示出了d=2(以块为单位,或者当每个块是128
×
128sb时以像素为单位的2x128像素)的情况下被限制在作为ibc参考样本之外的这些附加ctu/sb。这些不能作为ibc参考的附加ctu/sb由反向斜线阴影表示。
[0180]
在一些实施中,如图20所示,由使用用水平线遮蔽的块形成的区域可以被称为非局部搜索区域,并且该区域中的样本可以被存储在外部存储器中。
[0181]
在一些实施中,也在下面进一步详细描述,局部搜索区域和非局部ctu/sb搜索区域都可以用于ibc参考块搜索和选择。另外,当使用片上存储器时,关于已经构建的ctu/sb作为ibc参考的可用性的限制中关于写回时延的一些限制可以被放宽或移除。在一些进一步的实施中,局部ctu/sb和非局部ctu/sb共存时的使用方式可以不同,这是由于例如使用片上存储器或片外存储器对参考块的缓冲管理的不同。在下面的公开中更详细地描述这些实施。
[0182]
在一些实施中,ibc可以实现为帧间预测模式的扩展,帧间预测模式中将当前帧视为参考帧,使得当前帧内的块可以用作预测参考。这样的ibc实现因此可以遵循用于帧间预测的编码路径,即使ibc过程仅涉及当前帧。在这样的实施中,帧间预测模式的参考结构可以适于ibc,其中使用bv对参考样本的寻址机制的表示可以类似于帧间预测中的运动矢量(mv)。因此,依赖于与基于当前帧作为参考帧的帧间预测模式相似或相同的语法结构和解码过程,ibc可以被实现为特殊的帧间预测模式。
[0183]
在这样的实施中,由于ibc可以被视为帧间预测模式,因此仅帧内预测切片必须成为允许使用ibc的预测切片。换句话说,仅帧内预测切片不会被帧间预测(因为帧内预测模式不会调用任何帧间预测处理路径),因此ibc不会被允许用于这种仅帧内切片中的预测。当ibc适用时,编码器(coder)将参考图片列表扩展一个用于指向当前图片的指针的条目。因此,当前图片可以占用共享解码图片缓冲器(decoded picture buffer,dpb)的多达一个图片大小的缓冲器。使用ibc的信令可以隐含在帧间预测模式中的参考帧的选择中。例如,当所选择的参考图片指向当前图片时,如果需要并且可用,编码单元将采用具有类似帧间预测的编码路径的ibc和特殊的ibc扩展。在一些特定实施中,与常规帧间预测相反,ibc过程中的参考样本在用于预测之前可以不被环路滤波。此外,相应的参考当前图片可以是长期参考帧,因为它将在待编码或解码的下一帧附近。在一些实施中,为了最小化存储器需求,编码器可以在重建当前图像之后立即释放缓冲器。当重建图片的滤波版本在真正的帧
间预测中成为后续帧的参考图片时,编码器可以将其填充回dpb中作为短期参考,即使其在用于ibc时可能是未滤波的。
[0184]
在上面的示例实施中,即使ibc可能仅仅是帧间预测模式的扩展,ibc也可以利用可能偏离正常的帧间预测的几个特殊过程来处理。例如,ibc参考样本也可以不经过滤波。换句话说,包括去块滤波(deblocking filtering,dbf)、样本自适应偏移(sample adaptive offset,sao)滤波、跨分量样本偏移(cross-component sample offset,ccso)滤波等在内的环内滤波过程之前的重建样本可用于ibc预测,而正常的帧间预测模式采用已滤波样本用于预测。又例如,可以不执行ibc的无亮度样本插值,并且仅当色度bv在从亮度bv导出时是非整数时,色度样本插值才可能是必要的。再例如,当色度bv为非整数,并且用于ibc的参考块在用于ibc参考的可用区域的边界附近时,周围的已重建样本可以在边界之外以执行色度内插。指向一条毗邻边界的线的bv不可能避免这种情况。
[0185]
在这样的实施中,通过ibc对当前块的预测可以重用(reuse)帧间预测过程的预测和编码机制,包括使用参考bv来预测当前bv和例如附加bv差。然而,在一些特定实施中,亮度bv可以以整数分辨率而不是如在用于常规帧间预测的mv中的分数精度来实现。
[0186]
在一些实施中,图18中用水平阴影线指示的所有ctu和sb可用于搜索和选择ibc参考块,除了图18中的1810所示的、在当前ctu的右侧和上方的两个ctu(图18中用交叉线指示)用于允许波前并行处理(wavefront parallel processing,wpp)。因此,除了出于并行处理目的的一些例外,几乎是当前图片的整个已经重建的区域。
[0187]
在一些其它实施中,可以从中搜索和选择ibc参考块的区域可以被限制为局部ctu/sb。一个示例由图18的粗虚线框1808指示。在这样的示例中,当前ctu左侧的ctu/sb可以在当前ctu的重建过程的开始处用作ibc的参考样本区域。当使用这样的局部参考区域时,代替在dpb中分配额外的外部存储器空间,可以分配片上存储器空间来保持局部ctu/sb用于ibc参考。在一些实施中,固定的片上存储器可以用于ibc,从而降低在硬件架构中实现ibc的复杂性。因此,可以实现独立于正常的帧间预测的专用ibc模式用于利用片上存储器,而不是仅仅实现为帧间预测模式的扩展。
[0188]
例如,对于每个颜色分量,用于存储局部ibc参考样本(例如左ctu或sb)的固定片上存储器大小可以是128
×
128。在一些实施中,最大ctu大小也可以是128
×
128。在这种情况下,参考样本存储器(reference sample memory,rsm)可以保持具有单个ctu大小的样本。在一些其他替代实施中,ctu大小可以更小。例如,ctu大小可以是64x64。因此,rsm可以同时保持多个(在该示例情况下为4个)ctu。在又一些其它实现中,rsm可以保持多个sb,每个sb可以包括一个或多个ctu,并且每个ctu可以包括多个编码块。
[0189]
在局部片上ibc参考的一些实施中,片上rsm保持一个ctu,并且可以实现连续更新机制,以用于使用当前ctu的已重建样本替换左相邻ctu的已重建样本。图21示出了在重建过程期间的四个中间时间处的这种连续rsm更新机制的简化示例。在图21的例子中,rsm具有保持一个ctu的固定大小。ctu可能包括隐式划分。例如,ctu可以被隐式地划分为四个分离的区域(例如,四叉树划分)。每个区域可以包括多个编码块。ctu的大小可以是128
×
128,而对于示例四叉树划分,每个示例区域或分区的大小可以是64
×
64。在每个中间时间中用水平线遮蔽的rsm的区域/分区保持左相邻ctu的对应的已重建参考样本,并且用垂直线灰色遮蔽的区域/分区保持当前ctu的对应的已重建参考样本。用斜线遮蔽的rsm的编码块表
示当前区域内的当前编码块正在被编码/解码/重建。
[0190]
如2102所示,在表示当前ctu重建的开始的第一中间时间,rsm可仅针对四个示例区域中的每一个包括左相邻ctu的重建参考样本。在其他三个中间时间中,重建过程逐渐用当前ctu的已重建样本取代左侧相邻ctu的已重建参考样本。当编码器处理该区域/分区的第一个编码块时,rsm中64
×
64的区域/分区发生重置(reset)。在重置rsm的区域时,该区域被认为是空白的,并且被认为没有保持任何用于ibc的已重建参考样本(换句话说,rsm的该区域还没有准备好用作ibc参考样本)。当处理该区域中的相应当前编码块时,rsm中的相应块用当前ctu的相应块的已重建样本填充,以用作下一个当前块的ibc的参考样本,如图21中针对中间时间2104、2106和2108所示。一旦对应于rsm的区域/分区处理了所有编码块,该整个区域就用这些当前编码块的已重建样本作为ibc参考样本来填充,如图21中在各个中间时间处用垂直线完全遮蔽的区域所示。因此,在中间时间2104和2106中,rsm中的一些区域/分区保持来自相邻ctu的ibc参考样本,一些其他区域/分区完全保持来自当前ctu的参考样本,而一些区域/分区部分地保持来自当前ctu的参考样本并且部分空白(由于上述重置处理的结果,空白部分不用于ibc参考)。当最后一个区域(例如,右下角区域)正在被处理时,所有其他三个区域将保持当前ctu的已重建样本作为ibc的参考样本,而最后一个区域/分区部分地保持当前ctu中对应编码块的已重建样本并且部分空白,直到ctu的最后编码块被重建,此时整个rsm保持当前ctu的已重建样本并且如果还以ibc模式编码,rsm准备用于下一个ctu。
[0191]
图22示出了rsm在特定中间时间处在空间上的上述连续更新的实施,即,左相邻ctu和具有当前编码块(斜阴影线遮蔽的块)的当前ctu都被示出。这两个ctu对应的、在rsm中并且有效地作为当前编码块的ibc参考样本的已重建样本由水平和垂直阴影线示出。在该示例中的特定重建时间,在rsm中,该处理已经用由垂直阴影线遮蔽的当前ctu的区域替换了由左侧相邻ctu中的无阴影区域覆盖的样本。来自相邻ctu的剩余有效样本显示为水平线阴影。
[0192]
在上面的示例实现中,当固定rsm大小与ctu大小相同时,rsm被实现为包含一个ctu。在ctu大小较小的一些其它实施中,rsm可以包含多于一个ctu。例如,ctu的大小可以是32x32,而固定rsm的大小可以是128x128。因此,rsm可以保持16个ctu的样本。遵循上述相同的基础rsm更新原则,rsm可以在被重建之前保持当前128
×
128小块(patch)的16个相邻ctu。一旦当前128
×
128小块的第一个编码块的处理开始,rsm中的初始使用一个相邻ctu的已重建样本填充的第一个32
×
32区域可以如上所述针对保持单个ctu的rsm那样进行更新。剩余的15个32
×
32区域包含15个相邻的ctu作为ibc的参考样本。一旦与正被解码的当前128
×
128小块的第一个32
×
32区域对应的ctu被重建,则用该ctu的已重建样本更新rsm的第一个32
×
32区域。然后,与当前128
×
128小块的第二个32
×
32区域相对应的ctu可以被处理并且最终用已重建样本来进行更新。该过程继续直到rsm的16个32
×
32区域包含当前128
×
128小块(全部15个ctu)的已重建样本。然后,解码过程进行到下一个128x128小块。
[0193]
在一些其他实施中,作为图21和22的扩展,rsm可以保持一组相邻的ctu。一次处理一个当前ctu,保持最远相邻ctu的rsm部分按照上述方式利用已重建的当前ctu进行更新。对于下一个当前ctu,同样,rsm中最远的相邻ctu被更新和替换。因此,保持在固定大小rsm中的多个ctu随着相邻ctu的移动窗口进行更新以用于ibs。
[0194]
图23示出了使用片上rsm的局部ibc的另一个具体示例实施。在该示例中,ibc模式的最大块大小可能受到限制。例如,最大的ibc块可以是64x64。片上rsm可以被配置有与超级块(sb)相对应的固定大小,例如128
×
128。图23的rsm实现使用与图21和图22的实现类似的基本原理。在图23中,rsm可以保持多个相邻和/或当前ctu作为ibc参考样本。在图23的例子中,sb可以被四叉树拆分。相应地,rsm可以四叉树拆分成4个区域或单元,每个区域或单元为64
×
64。这些区域中的每一个可以保持一个或多个编码块。可替换地,这些区域中的每一个可以保持一个或多个ctu,并且每个ctu可以保持一个或多个编码块。四叉树区域的编码顺序可以是预定义的。例如,编码顺序可以是左上、右上、左下、右下。图23的sb的四叉树拆分仅仅是一个示例。在一些其他可替换的实现方式中,sb可以按照任何其他方案进行拆分。本文所描述的用于局部ibc的rsm更新实现适用于那些替代的拆分方案。
[0195]
在这种局部ibc实施中,可用于ibc预测的局部参考块可被限制。例如,可能要求参考块和当前块应该在同一sb行中。具体地,局部参考块可以仅位于当前sb中或当前sb左侧的一个sb中。由图23中的虚线箭头示出了由另一个允许的编码块在ibc中预测的示例当前块。当当前sb或左侧sb用于ibc参考时,rsm中的参考样本更新过程可以遵循上述重置过程。例如,当64
×
64单元参考样本存储器中的任何一个开始用来自当前sb的已重建样本进行更新时,整个64
×
64单元中先前存储的参考样本(来自左侧sb)被标记为不可用于生成ibc预测样本,并且它是用当前块的已重建样本逐渐更新的。
[0196]
图23示出了在面板2302中对当前sb进行局部ibc解码期间rsm的5个示例状态。同样,在每个示例状态中使用水平线遮蔽的rsm的区域保持左相邻sb的相应四叉树区域的相应参考样本,并且使用垂直线灰色遮蔽的区域/分区保持当前sb的相应参考样本。使用斜线遮蔽的rsm的编码块表示当前四叉树区域内的当前编码块正在被编码/解码。在每个当前sb的编码开始时,rsm存储先前已编码sb的样本(图23的rsm状态(0))。当当前块位于当前sb中的四个64
×
64四叉树区域之一时,rsm中的相应区域被重置并用于存储当前64
×
64编码区域的样本。这样,rsm的每个64
×
64四叉树区域中的样本由当前sb中的样本逐渐更新(状态(1)-状态(3))。当当前sb已经被完全编码时,整个rsm使用当前sb的所有样本填充(状态(4))。
[0197]
图23的面板2302中的64
×
64区域中的每一个区域用空间编码序列号来标记。序列号0-3表示左邻居sb的4个64
×
64四叉树区域,而序列号4-7表示当前sb面板的4个64
×
64四叉树区域。在图23中,面板2304进一步示出了对于图23的面板2302的rsm状态(1)、状态(2)和状态(3),128x28rsm中参考样本的左相邻和当前sb中的对应空间分布。没有交叉线的阴影区域表示rsm中具有已重建样本的区域。有交叉线的阴影区域表示rsm中具有左侧sb的已重建样本被重置的区域(因此不可用作局部ibc的参考样本)。
[0198]
64
×
64区域的编码顺序和相应的rsm更新顺序可以遵循水平扫描(如上面图23所示)或垂直扫描。水平扫描从左上开始,到右上、左下和右下。垂直扫描从左上开始、到左下、右上和左下。在图24的面板2402和2404中分别示出了用于水平扫描和垂直扫描的左相邻sb和当前sb参考样本更新过程,用于在重建当前sb的四个64x64区域中的每一个时进行比较。在图24中,用水平线遮蔽而没有交叉线的64x64区域表示具有可用于ibc的样本的区域。用水平线遮蔽且带有交叉线的区域表示左侧相邻sb的已经被更新为当前sb的相应已重建样本的区域。无阴影区域表示当前sb的未处理区域。用斜线遮蔽的块表示正在处理的当前编
码块。
[0199]
如图24所示,根据当前编码块相对于当前sb的位置,可以应用以下关于ibc的参考块的限制。
[0200]
如果当前块落入当前sb的左上64
×
64区域,那么除了当前sb中已经重建的样本之外,它还可以参考左侧sb的右下、左下和右上64
×
64块中的参考样本,如图24的2412(用于水平扫描)和2422(用于垂直扫描)所示。
[0201]
如果当前块落入当前sb的右上64
×
64块中,那么除了当前sb中已经重建的样本之外,如果相对于当前sb位于(0,64)处的亮度样本尚未被重建,则当前块还可以参考左侧sb的左下64
×
64块和右下64
×
64块中的参考样本(图24的2414)。否则,当前块还可以参考左侧sb的右下64x64块中的参考样本(图24的2426)用于ibc。
[0202]
如果当前块落入当前sb的左下64
×
64块中,那么除了当前sb中已经重建的样本之外,如果相对于当前sb的亮度位置(64,0)尚未被重建,则当前块还可以参考左侧sb的右上64
×
64块和右下64
×
64块中的参考样本(图24的2424)。否则,当前块还可以参考左侧sb(图24的2416)的右下64x64块中的参考样本用于ibc。
[0203]
如果当前块落入当前sb的右下64x64块中,则它只能参考当前sb中已经重建的样本(图24的2418和2428)用于ibc。
[0204]
如上所述,在一些示例实现中,基于局部和非局部的ctu/sb中的任一个或两者都可用于ibc参考块搜索和选择。此外,当片上rsm用于局部参考时,关于已经构建的ctu/sb作为ibc参考的可用性的限制中关于写回时延的一些限制可以放宽或移除。无论是否采用并行解码,都可以应用这样的实施。
[0205]
图25示出了可用于ibc的局部和非局部参考ctu/sb的示例实现,其中同样的,每个方块代表一个ctu/sb。用斜线遮蔽的ctu/sb代表当前ctu/sb(标记为“0”),而用水平线遮蔽的ctu/sb(标记为“1”)、垂直线遮蔽的ctu/sb(标记为“2”)和反向斜线遮蔽的ctu/sb(标记为“3”)代表已经构建的区域。无阴影的ctu/sb代表尚未重建的区域。假设使用类似于图19和20的并行解码。用垂直线(“2”)和反向斜线(“3”)遮蔽的ctu/sb表示通常被限制在作为当前ctu/sb的ibc参考之外的示例区域,这是由于当仅片外存储器用于ibc参考时到dpb的写回时延(参见图20)。当使用片上rsm时,图20的限制区域中的一个或多个可以直接从rsm参考,因此可以不需要将其限制出去。现在可以通过rsm访问以供ibc参考的限制区域的数量可能取决于rsm的大小。在图25的例子中,假设rsm可以保持一个ctu/sb,并采用上述rsm更新机制。因此,以垂直线遮蔽并标记为“2”的左侧相邻ctu/sb可用于局部参考。然后,rsm保持来自左侧ctu/sb和当前ctu/sb的样本。因此,在图25的例子中,可用于非局部ibc参考块的搜索区域包括标记为“1”的ctu/sb(搜索区域1(sa1),或非局部搜索区域),可用于局部ibc参考块的搜索区域包括标记为“2”和“0”的ctu/sb(该搜索区域可被称为搜索区域2(sa2),或局部搜索区域),并且用于ibc参考块的限制出/禁止区域包括由于写回时延的标记为“3”的ctu/sb。在一些其它实现中,使用足够的可以保持整个受限的ctu/sb的片上rsm大小,所有这些潜在限制区域都可包括在rsm中以供局部参考。例如,标记为“2”和“3”的左相邻块都可以包括在局部搜索区域中。
[0206]
在一些其它实施中,只有标记为“0”的当前ctu/sb或当前ctu/sb的一部分可以被包括在rsm中用于局部参考。
[0207]
在一些示例实施中,sa1中的样本可以存储在外部存储器中。
[0208]
在一些示例实施中,sa2中的样本可以存储在片上存储器中。
[0209]
在一些示例实施中,外部存储器和片上存储器具有不同的硬件特性,例如访问速度、访问时钟、访问带宽等。
[0210]
当执行帧内块复制(intrabc)预测时,当块矢量指向部分地位于sa1且部分地位于sa2中的块时,可能发生特殊情况。在这种特殊情况下,在将该块用作预测块之前,可能需要应用进一步的限制或处理。
[0211]
在一些示例实施中,在这种特殊情况下,不允许或排除由块矢量指向的块被用作intrabc的预测块。
[0212]
图26示出了由各个块矢量指向的各种示例块。块a不被允许用作预测块,因为它与sa1和sa2都重叠;块b被允许用作预测块,因为它被完全包括在sa2中;并且块c被允许用作预测块,因为它被完全包括在sa1中。
[0213]
在一些示例实施中,如果intrabc的块矢量指向部分位于sa1且部分位于sa2的块(由b表示),则建议替换b中与sa1重叠的样本或替换b中与sa2重叠的样本。样本的替换可以通过扩展可用于预测的边界样本来完成。例如,为了替换b中与sa1重叠的样本,可以使用sa2中的边界样本;为了替换b中与sa2重叠的样本,可以使用sa1中的边界样本。
[0214]
在一些示例实施中,重叠区域大小可以用于确定样本替换应该应用于哪个重叠区域。如果b和sa1之间的重叠区域大小大于b和sa2之间的重叠区域大小,则替换位于b和sa2之间的重叠部分中的样本,反之亦然。
[0215]
在一些示例实施中,样本的数目可以用于确定样本替换应该应用于哪个重叠区域。将b和sa1之间的重叠部分覆盖的样本数目表示为s1,将b和sa2之间的重叠部分覆盖的样本数目表示为s2。如果s1大于s2乘以加权因子(t1)(即,s1》s2*t1),则替换位于b和sa2之间的重叠部分中的样本,其中t1可以是预定义的,或者是动态地用信号通知的。类似地,如果s2大于s1乘以加权因子(t2),则替换位于b和sa1之间的重叠部分中的样本,其中t2可以是预定义的,或者是动态地用信号通知的。
[0216]
在一些示例实施中,当样本替换应用于b和sa1之间的重叠部分时,sa2中的样本可用于替换重叠部分中的样本。类似地,当样本替换施加在b和sa2之间的重叠部分上时,sa1中的样本可以用于替换重叠部分中的样本。
[0217]
在一些示例实施中,如图26所示,ctu/sb 2602和2604形成不允许区域。然而,在一些其他实现中,ctu/sb 2602和/或2604也可以是局部搜索区域(或相邻允许搜索区域,sa2)的一部分。例如,如果片上存储器大到足以保持/容纳2602和/或2604中的样本。
[0218]
本公开描述了用于视频编码/解码的方法、装置和计算机可读介质。本公开解决了intrabc的各种问题。本公开中描述的方法、设备和计算机可读介质可以增强视频编解码器的性能,优化编解码器中片上存储器的使用,并且有助于选择和调整intrabc的预测区域。
[0219]
图27示出了用于处理视频数据的示例性方法2700。方法1900可以包括以下步骤的部分或全部:步骤2710,接收视频比特流,所述视频比特流包括视频帧的至少一个块,所述至少一个块包括当前块;步骤2720,确定所述视频帧中的第一搜索区域,其中,所述第一搜索区域是用于定位帧内块复制(intrabc)预测块的第一候选区域,其中,所述第一搜索区域与所述当前块不重叠、并且包括块列表,所述intrabc预测块是用于对所述当前块的至少部
分进行intrabc预测的候选块;步骤2730,确定第二搜索区域,其中,所述第二搜索区域是用于定位所述intrabc预测块的第二候选区域,所述第二搜索区域包括以下至少之一:(i)所述当前块的子块,以及(ii)所述当前块的相邻块;步骤2740,识别由块矢量所参考的所述intrabc预测块;步骤2750,基于所述intrabc预测块、所述第一搜索区域和所述第二搜索区域之间的空间关系来确定预测策略;以及步骤2760,基于所确定的预测对所述当前块的至少部分进行解码。
[0220]
在本公开的实施例和实现中,可以根据需要以任何数量或顺序组合或布置任何步骤和/或操作。步骤和/或操作中的两个或更多个可以并行执行。本公开中的实施例和实现可以单独使用或以任何顺序组合使用。此外,方法(或实施例)、编码器和解码器中的每一个都可以通过处理电路(例如,一个或多个处理器或一个或多个集成电路)来实现。在一个示例中,一个或多个处理器执行存储在非暂时性计算机可读介质中的程序。本公开中的实施例可以应用于亮度块或色度块。术语
‘
块’可以被解释为预测块、编码块或编码单元,即cu。这里的术语
‘
块’也可以用来指代变换块。在以下项目中,当说块大小时,它可以指块的宽度或高度,或宽度和高度的最大值,或宽度和高度的最小值,或块的面积大小(宽度*高度),或纵横比(宽度:高度,或高度:宽度)。
[0221]
上述技术可以使用计算机可读指令实现为计算机软件,并且物理地存储在一个或多个计算机可读介质中。例如,图28示出了适用于实现所公开主题的某些实施例的计算机系统(2800)。
[0222]
可以使用任何合适的机器代码或计算机语言来对计算机软件进行编码,任何合适的机器代码或计算机语言可以经受汇编、编译、链接或类似的机制以创建包括指令的代码,该指令可以由一个或多个计算机中央处理单元(cpu)、图形处理单元(gpu)等直接执行或通过解释、微代码等执行。
[0223]
这些指令可以在各种类型的计算机或其组件上执行,包括例如个人计算机、平板计算机、服务器、智能手机、游戏设备、物联网设备等。
[0224]
图28所示的计算机系统(2800)的组件在本质上是示例性的,并且不旨在对实现本公开的实施例的计算机软件的使用范围或功能提出任何限制。组件的配置也不应被解释为具有与计算机系统(2800)的示例性实施例中所示的任何一个组件或组件组合相关的任何依赖性或要求。
[0225]
计算机系统(2800)可以包括某些人机接口输入设备。这样的人机接口输入设备可以通过例如触觉输入(例如:击键、滑动、数据手套运动)、音频输入(例如:语音、拍手)、视觉输入(例如:手势)、嗅觉输入(未示出)来响应一个或多个人机接口用户的输入。人机接口设备还可以用于捕捉不一定与人类的有意识输入直接相关的某些媒体,例如音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静止图像相机获得的摄影图像)、视频(例如二维视频、包括立体视频的三维视频)。
[0226]
输入人机接口设备可以包括键盘(2801)、鼠标(2802)、触控板(2803)、触摸屏(2810)、数据手套(未示出)、操纵杆(2805)、麦克风(2806)、扫描仪(2807)、照相机(2808)中的一个或多个(每种仅示出一个)。
[0227]
计算机系统(2800)还可以包括某些人机接口输出设备。这种人机接口输出设备可以通过例如触觉输出、声音、光和嗅觉/味觉来刺激一个或多个人类用户的感官。这样的人
机接口输出设备可以包括触觉输出设备(例如触摸屏(2810)的触觉反馈,数据手套(未示出)或操纵杆(2805),但也可以有不用作输入设备的触觉反馈设备)、音频输出设备(例如:扬声器(2809)、耳机(未示出))、视觉输出设备(例如屏幕(2810),包括crt屏幕、lcd屏幕、等离子屏幕、oled屏幕,每个具有或不具有触摸屏输入能力,每个具有或不具有触觉反馈能力——其中一些可以能够通过诸如立体输出的装置输出二维视觉输出或大于三维输出;虚拟现实眼镜(未描绘)、全息显示器和烟雾罐(未描绘))以及打印机(未描绘)。
[0228]
计算机系统(2800)也可以包括人类可访问存储装置及其关联介质:例如包括具有cd/dvd等介质(2821)的cd/dvd rom/rw(2820)的光学介质、指状驱动器(2822)、可拆卸硬盘驱动器或固态驱动器(2823)、诸如磁带和软盘之类的传统磁性介质(未示出)、诸如安全软件狗之类的基于专用rom/asic/pld的装置(未示出)等。
[0229]
本领域技术人员还应该理解,结合当前公开的主题使用的术语“计算机可读介质”不涵盖传输介质、载波或其他瞬时信号。
[0230]
计算机系统(2800)还可以包括到一个或多个通信网络(2855)的接口(2854)。网络例如可以是无线网络、有线网络、光网络。网络还可以是本地网络、广域网络、城域网络、车辆和工业网络、实时网络、耐延迟网络等。网络的示例包括诸如以太网之类的局域网、无线lan、包括gsm、3g、4g、5g、lte等的蜂窝网络、包括有线电视、卫星电视和地面广播电视的电视有线或无线广域数字网络、包括canbus的车辆和工业用电视等等。某些网络通常需要连接到某些通用数据端口或外围总线(2849)的外部网络接口适配器(例如计算机系统(2800)的usb端口);如下所述,其他网络接口通常通过连接到系统总线而集成到计算机系统(2800)的内核中(例如,连接pc计算机系统中的以太网接口或连接到智能手机计算机系统中的蜂窝网络接口)。计算机系统(2800)可以使用这些网络中的任何一个与其他实体通信。此类通信可以是仅单向接收的(例如,广播电视)、仅单向发送的(例如,连接到某些canbus装置的canbus)或双向的,例如,使用局域网或广域网数字网络连接到其他计算机系统。如上所述,可以在那些网络和网络接口的每一个上使用某些协议和协议栈。
[0231]
前述人机接口设备、人机交互存储设备和网络接口可以连接到计算机系统(2800)的内核(2840)。
[0232]
内核(2840)可以包括一个或多个中央处理单元(cpu)(2841)、图形处理单元(gpu)(2842)、现场可编程门区域(fpga)(2843)形式的专用可编程处理单元、用于某些任务的硬件加速器(2844)、图形适配器(2850)等。这些装置以及只读存储器(rom)(2845)、随机存取存储器(2846)、诸如内部非用户可访问的硬盘驱动器、ssd等之类的内部大容量存储器(2847)可以通过系统总线(2848)连接。在一些计算机系统中,可以以一个或多个物理插头的形式访问系统总线(2848),以能够通过附加的cpu、gpu等进行扩展。外围装置可以直接连接到内核的系统总线(2848)或通过外围总线(2849)连接到内核的系统总线。在一个示例中,屏幕(2810)可以连接到图形适配器(2850)。外围总线的体系结构包括pci、usb等。
[0233]
cpu(2841)、gpu(2842)、fpga(2843)和加速器(2844)可以执行某些指令,这些指令可以组合来构成上述计算机代码。该计算机代码可以存储在rom(2845)或ram(2846)中。过渡数据也可以存储在ram(2846)中,而永久数据可以例如存储在内部大容量存储器(2847)中。可以通过使用高速缓存来进行到任何存储装置的快速存储及检索,该高速缓存可以与下述紧密关联:一个或多个cpu(2841)、gpu(2842)、大容量存储(2847)、rom(2845)、ram
(2846)等。
[0234]
计算机可读介质可以在其上具有用于执行各种由计算机实现的操作的计算机代码。介质和计算机代码可以是出于本公开的目的而专门设计和构造的介质和计算机代码,或者介质和计算机代码可以是计算机软件领域的技术人员公知且可用的类型。
[0235]
作为非限制性示例,可以由于一个或多个处理器(包括cpu、gpu、fpga、加速器等)执行包含在一种或多种有形的计算机可读介质中的软件而使得具有架构(2800),特别是内核(2840)的计算机系统提供功能。此类计算机可读介质可以是与如上所述的用户可访问的大容量存储相关联的介质,以及某些非暂时性的内核(2840)的存储器,例如内核内部大容量存储器(2847)或rom(2845)。可以将实施本公开的各种实施例的软件存储在此类装置中并由内核(2840)执行。根据特定需要,计算机可读介质可以包括一个或多个存储装置或芯片。软件可以引起内核(2840),特别是其中的处理器(包括cpu、gpu、fpga等)执行本文所描述的特定过程或特定过程的特定部分,包括定义存储在ram(2846)中的数据结构以及根据由软件定义的过程来修改此类数据结构。附加地或替换地,可以由于硬连线或以其他方式体现在电路(例如,加速器(2844))中的逻辑而使得计算机系统提供功能,该电路可以替换软件或与软件一起运行以执行本文描述的特定过程或特定过程的特定部分。在适当的情况下,提及软件的部分可以包含逻辑,反之亦然。在适当的情况下,提及计算机可读介质的部分可以包括存储用于执行的软件的电路(例如集成电路(ic))、体现用于执行的逻辑的电路或两者都包括。本公开包括硬件和软件的任何合适的组合。
[0236]
尽管本公开已经描述了多个示例性实施例,但是存在落入本公开的范围内的修改、置换和各种替换等效物。因此,应当理解,本领域技术人员将能够设计出许多系统和方法,这些系统和方法虽然未在本文中明确示出或描述,但其体现了本公开的原理,因此落入本公开的精神和范围内。
[0237]
附录a:缩略语
[0238]
ibc:帧内块复制
[0239]
intrabc:帧内块复制
[0240]
jem:联合探索模型
[0241]
vvc:下一代视频编码
[0242]
bms:基准集
[0243]
mv:运动矢量
[0244]
hevc:高效视频编码
[0245]
sei:补充增强信息
[0246]
vui:视频可用性信息
[0247]
gops:图片群组
[0248]
tus:变换单元
[0249]
pus:预测单元
[0250]
ctus:编码树单元
[0251]
ctbs:编码树块
[0252]
pbs:预测块
[0253]
hrd:假想参考解码器
[0254]
snr:信噪比
[0255]
cpu:中央处理单元
[0256]
gpus:图形处理单元
[0257]
crt:阴极射线管
[0258]
lcd:液晶显示器
[0259]
oled:有机发光二极管
[0260]
cd:光盘
[0261]
dvd:数字视频光盘
[0262]
rom:只读存储器
[0263]
ram:随机存取存储器
[0264]
asic:专用集成电路
[0265]
pld:可编程逻辑器件
[0266]
lan:局域网
[0267]
gsm:全球移动通信系统
[0268]
lte:长期演进
[0269]
canbus:控制器区域网络总线
[0270]
usb:通用串行总线
[0271]
pci:互连外围设备
[0272]
fpga:现场可编程门区域
[0273]
ssd:固态驱动器
[0274]
ic:集成电路
[0275]
hdr:高动态范围
[0276]
sdr:标准动态范围
[0277]
jvet:联合视频勘探组
[0278]
mpm:最可能模式
[0279]
waip:广角帧内预测
[0280]
cu:编码单元
[0281]
pu:预测单元
[0282]
tu:变换单元
[0283]
ctu:编码树单元
[0284]
pdpc:位置相关预测组合
[0285]
isp:帧内子分区
[0286]
sps:序列参数集
[0287]
pps:图片参数集
[0288]
aps:自适应参数集
[0289]
vps:视频参数集
[0290]
dps:解码参数集
[0291]
alf:自适应环路滤波器
[0292]
sao:样本自适应偏移
[0293]
cc-alf:跨分量自适应环路滤波器
[0294]
cdef:约束方向增强滤波器
[0295]
ccso:跨分量样本偏移
[0296]
lso:局部样本偏移
[0297]
lr:环路恢复滤波器
[0298]
av1:开放媒体联盟(aomedia)视频1
[0299]
av2:aomedia视频2
[0300]
rps:参考图片集
[0301]
dpb:解码图片缓冲区
[0302]
mmvd:具有运动矢量差的合并模式
[0303]
intrabc or ibc:帧内块复制
[0304]
bv:块矢量
[0305]
bvd:块矢量差
[0306]
rsm:参考样本存储器
技术特征:
1.一种用于处理视频数据的方法,其特征在于,所述方法包括:接收视频比特流,所述视频比特流包括视频帧的至少一个块,所述至少一个块包括当前块;确定所述视频帧中的第一搜索区域,其中,所述第一搜索区域是用于定位帧内块复制(intrabc)预测块的第一候选区域,其中,所述第一搜索区域与所述当前块不重叠、并且包括块列表,所述intrabc预测块是用于对所述当前块的至少部分进行intrabc预测的候选块;确定第二搜索区域,其中,所述第二搜索区域是用于定位所述intrabc预测块的第二候选区域,所述第二搜索区域包括以下至少之一:(i)所述当前块的子块,以及(ii)所述当前块的相邻块;识别由块矢量参考的所述intrabc预测块;基于所述intrabc预测块、所述第一搜索区域和所述第二搜索区域之间的空间关系来确定预测;以及基于所确定的预测对所述当前块的至少部分进行解码。2.根据权利要求1所述的方法,其特征在于,所述确定预测包括:响应于所述intrabc预测块部分地位于所述第一搜索区域中并且部分地位于所述第二搜索区域中,不允许使用所述intrabc预测块对所述当前块的至少部分进行intrabc预测。3.根据权利要求1所述的方法,其特征在于,所述确定预测包括:响应于所述intrabc预测块是所述第一搜索区域的子集或所述第二搜索区域的子集,允许使用所述intrabc预测块对所述当前块的至少部分进行intrabc预测。4.根据权利要求1至3任一项所述的方法,其特征在于,所述当前块包括超级块。5.根据权利要求1所述的方法,其特征在于,所述当前块的相邻块与所述当前块在同一行中且位于所述当前块的左侧,以及所述当前块的相邻块具有与所述当前块相同的大小。6.根据权利要求1至5任一项所述的方法,其特征在于:所述当前块的左上角像素的坐标位置是(x0,y0);所述块列表中每个块的左上角像素的坐标位置是(x,y);y小于y0;以及x小于[x0+2(y0-y)-d],其中,x0、y0、x和y是非负数,d是针对intrabc模式所限制的立即重建块的数量。7.根据权利要求6所述的方法,其特征在于,d等于2。8.根据权利要求1所述的方法,其特征在于:所述intrabc预测块在所述intrabc预测块的第一重叠区域中与所述第一搜索区域重叠;所述intrabc预测块在所述intrabc预测块的第二重叠区域中与所述第二搜索区域重叠;所述确定预测包括:基于所述第一重叠区域的大小和所述第二重叠区域的大小,从所述第一重叠区域和所述第二重叠区域中选择目标重叠区域;以及使用与所述intrabc预测块中的所述目标重叠区域相邻的边界样本替换所述目标重叠
区域中的样本,以获得更新的intrabc预测块;以及所述基于所确定的预测对所述当前块的至少部分进行解码包括:基于所述更新的intrabc预测块解码所述当前块的至少部分。9.根据权利要求8所述的方法,其特征在于,所述选择目标重叠区域包括:响应于所述第二重叠区域的大小大于或等于所述第一重叠区域的大小,选择所述第一重叠区域作为所述目标重叠区域;以及响应于所述第一重叠区域的大小大于所述第二重叠区域的大小,选择所述第二重叠区域作为所述目标重叠区域。10.根据权利要求8所述的方法,其特征在于,所述选择目标重叠区域包括:响应于所述第二重叠区域的大小大于或等于第一阈值,选择所述第一重叠区域作为所述目标重叠区域,其中,所述第一阈值是所述第一重叠区域的大小与预定义的第一偏置因子的乘积;以及响应于所述第一重叠区域的大小大于或等于第二阈值,选择所述第二重叠区域作为所述目标重叠区域,其中,所述第二阈值是所述第二重叠区域的大小与预定义的第二偏置因子的乘积。11.根据权利要求10所述的方法,其特征在于,所述第一重叠区域和所述第二重叠区域的所述大小是由每个相应区域中的样本的数目表示的。12.根据权利要求11所述的方法,其中,所述样本的数目包括以下之一:亮度样本的数目;或者色度样本的数目。13.根据权利要求8至12任一项所述的方法,其特征在于,所述替换所述目标重叠区域中的样本包括:响应于所述目标重叠区域是所述第一重叠区域,使用来自所述第二重叠区域中的样本替换所述目标重叠区域中的样本;以及响应于所述目标重叠区域是所述第二重叠区域,使用来自所述第一重叠区域中的样本替换所述目标重叠区域中的样本。14.根据权利要求1至13任一项所述的方法,其特征在于,所述第二搜索区域中的样本存储在处理所述视频数据的视频编解码器的片上存储器中。15.一种设备,其特征在于,包括用于存储计算机指令的存储器和与所述存储器通信的处理器,其中,当所述处理器执行所述计算机指令时,所述处理器被配置为使得所述设备:接收视频比特流,所述视频比特流包括视频帧的至少一个块,所述至少一个块包括当前块;确定所述视频帧中的第一搜索区域,其中,所述第一搜索区域是用于定位帧内块复制(intrabc)预测块的第一候选区域,其中,所述第一搜索区域与所述当前块不重叠、并且包括块列表,所述intrabc预测块是用于对所述当前块的至少部分进行intrabc预测的候选块;确定第二搜索区域,其中,所述第二搜索区域是用于定位所述intrabc预测块的第二候选区域,所述第二搜索区域包括以下至少之一:(i)所述当前块的子块,以及(ii)所述当前块的相邻块;
识别由块矢量参考的所述intrabc预测块;基于所述intrabc预测块、所述第一搜索区域和所述第二搜索区域之间的空间关系来确定预测;以及基于所确定的预测对所述当前块的至少部分进行解码。16.根据权利要求15所述的设备,其特征在于,当所述处理器被配置为使所述设备确定所述预测时,所述处理器被配置为使得所述设备:响应于所述intrabc预测块部分地位于所述第一搜索区域中并且部分地位于所述第二搜索区域中,不允许使用所述intrabc预测块对所述当前块的至少部分进行intrabc预测。17.根据权利要求15所述的设备,其特征在于:所述intrabc预测块在所述intrabc预测块的第一重叠区域中与所述第一搜索区域重叠;所述intrabc预测块在所述intrabc预测块的第二重叠区域中与所述第二搜索区域重叠;当所述处理器被配置为使得所述设备确定所述预测时,所述处理器被配置为使得所述设备:基于所述第一重叠区域的大小和所述第二重叠区域的大小,从所述第一重叠区域和所述第二重叠区域中选择目标重叠区域;以及使用与所述intrabc预测块中的所述目标重叠区域相邻的边界样本替换所述目标重叠区域中的样本,以获得更新的intrabc预测块;以及当所述处理器被配置为使得所述设备基于所确定的预测对所述当前块的至少部分进行解码时,所述处理器被配置为使得所述设备:基于所述更新的intrabc预测块解码所述当前块的至少部分。18.根据权利要求17所述的设备,其特征在于,当所述处理器被配置为使得所述设备选择所述目标重叠区域时,所述处理器被配置为使得所述设备:响应于所述第二重叠区域的大小大于或等于所述第一重叠区域的大小,选择所述第一重叠区域作为所述目标重叠区域;以及响应于所述第一重叠区域的大小大于所述第二重叠区域的大小,选择所述第二重叠区域作为所述目标重叠区域。19.根据权利要求17所述的设备,其特征在于,当所述处理器被配置为使得所述设备选择所述目标重叠区域时,所述处理器被配置为使得所述设备:响应于所述第二重叠区域的大小大于或等于第一阈值,选择所述第一重叠区域作为所述目标重叠区域,其中,所述第一阈值是所述第一重叠区域的大小与预定义的第一偏置因子的乘积;以及响应于所述第一重叠区域的大小大于或等于第二阈值,选择所述第二重叠区域作为所述目标重叠区域,其中,所述第二阈值是所述第二重叠区域的大小和预定义的第二偏置因子的乘积。20.一种非暂时性存储介质,其特征在于,用于存储计算机可读指令,当所述计算机可读指令由处理器执行时,使得所述处理器:接收视频比特流,所述视频比特流包括视频帧的至少一个块,所述至少一个块包括当
前块;确定所述视频帧中的第一搜索区域,其中,所述第一搜索区域是用于定位帧内块复制(intrabc)预测块的第一候选区域,其中,所述第一搜索区域与所述当前块不重叠、并且包括块列表,所述intrabc预测块是用于对所述当前块的至少部分进行intrabc预测的候选块;确定第二搜索区域,其中,所述第二搜索区域是用于定位所述intrabc预测块的第二候选区域,所述第二搜索区域包括以下至少之一:(i)所述当前块的子块,以及(ii)所述当前块的相邻块;识别由块矢量参考的所述intrabc预测块;基于所述intrabc预测块、所述第一搜索区域和所述第二搜索区域之间的空间关系来确定预测;以及基于所确定的预测对所述当前块的至少部分进行解码。
技术总结
本公开总体上涉及视频编解码,尤其涉及帧内块复制编解码模式。例如,公开了一种用于处理视频数据的方法,所述方法包括:接收视频比特流,所述视频比特流包括视频帧的至少一个块,所述至少一个块包括当前块;确定所述视频帧中的第一搜索区域;确定第二搜索区域,其中所述第二搜索区域是用于定位IntraBC预测块的第二候选区域;识别由块矢量参考的所述IntraBC预测块;基于所述IntraBC预测块、所述第一搜索区域和所述第二搜索区域之间的空间关系来确定预测;以及基于所确定的预测对所述当前块的至少部分进行解码。当前块的至少部分进行解码。当前块的至少部分进行解码。
技术研发人员:赵欣 许晓中 刘杉
受保护的技术使用者:腾讯美国有限责任公司
技术研发日:2022.09.14
技术公布日:2023/9/9

版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:车辆侧部构造的制作方法 下一篇:双重真空密封件的制作方法