视频译码中用于光栅扫描分块组和矩形分块组的分块组分配的制作方法

文档序号:33117433发布日期:2023-02-01 03:05阅读:19来源:国知局
视频译码中用于光栅扫描分块组和矩形分块组的分块组分配的制作方法
视频译码中用于光栅扫描分块组和矩形分块组的分块组分配
1.本技术是分案申请,原申请的申请号是201980083840.x,原申请日是2019年12月17日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本发明大体上涉及视频译码,具体地,涉及用于将图像分割成分块组以支持在视频译码中增强压缩的机制。


背景技术:

3.即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中发送或以其它方式发送时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中传送。由于内存资源可能有限,当在存储设备中存储视频时,视频的大小也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行编码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的地侧由对视频数据进行解码的视频解压缩设备接收。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。


技术实现要素:

4.在一个实施例中,本发明包括一种在编码器中实现的方法,所述方法包括:所述编码器的处理器将图像分割成多个分块;所述处理器将多个所述分块分配给分块组;所述处理器确定所述分块组是光栅扫描分块组或矩形分块组;所述处理器根据所述分块组是所述光栅扫描分块组或所述矩形分块组确定所述分块组中的分块数量;所述处理器根据所述分块组将所述分块编码到码流中;将所述码流存储在所述编码器的存储器中,以传送给解码器。一些视频译码系统使用包括按光栅扫描顺序分配的分块的分块组。而其它系统使用矩形分块组,以支持虚拟现实(virtual reality,vr)、电话会议和其它基于感兴趣区域的译码方案中的子图像提取。还有其它系统允许编码器根据视频译码应用的类型选择要使用的分块组类型。本方面包括一种机制,用于根据分块组是光栅扫描分块组或矩形分块组来确定分块组中的分块数量。确定分块组类型后,分块组的第一个分块和最后一个分块用于确定分块组中的分块数量。根据分块组的类型采用不同的机制。因此,所公开的机制允许编码器/解码器(编解码器)支持用于不同使用情形的多种分块组方案,并因此增加了编码器和解码器的功能。此外,所公开的机制可以允许译码机制选择一组增加的译码功能,这可以提高译码效率,并因此减少编码器和/或解码器侧的存储器资源使用、处理资源使用和/或网络资源使用。
5.可选地,在上述任一方面中,提供了该方面的另一种实现方式:当所述分块组是所述光栅扫描分块组时,所述分块组中的所述分块数量通过以下方式确定:确定所述分块组的第一个分块与所述分块组的最后一个分块之间的分块数量,作为所述分块组中的分块数
量;根据所述分块组中的所述分块数量确定所述分块组中的所述分块数量。
6.可选地,在上述任一方面中,提供了该方面的另一种实现方式:当所述分块组是所述矩形分块组时,所述分块组中的所述分块数量通过以下方式确定:确定所述分块组的所述第一个分块与所述分块组的所述最后一个分块之间的增量值;根据所述增量值和所述图像中的分块列数量,确定分块组行数量;根据所述增量值和所述图像中的所述分块列数量,确定分块组列数量;根据所述分块组行数量和所述分块组列数量确定所述分块组中的所述分块数量。
7.可选地,在上述任一方面中,提供了该方面的另一种实现方式:所述分块组行数量通过将所述增量值除以所述图像中的所述分块列数量加一来确定。
8.可选地,在上述任一方面中,提供了该方面的另一种实现方式:所述分块组列数量确定为所述增量值对所述图像中的所述分块列数量取模加一。
9.可选地,在上述任一方面中,提供了该方面的另一种实现方式:还包括所述处理器将所述分块组的所述第一个分块的标识符和所述分块组的所述最后一个分块的标识符编码到所述码流中,以表示分配给所述分块组的所述分块。
10.可选地,在上述任一方面中,提供了该方面的另一种实现方式:所述分块组的所述第一个分块的所述标识符和所述分块组的所述最后一个分块的所述标识符编码到所述码流中的分块组头中。
11.在一个实施例中,本发明包括一种在解码器中实现的方法,所述方法包括:所述解码器的处理器通过接收器接收包括分割成多个分块的图像的码流,其中,多个所述分块分配到分块组中;所述处理器确定所述分块组是光栅扫描分块组或矩形分块组;所述处理器根据所述分块组是所述光栅扫描分块组或所述矩形分块组确定所述分块组中的分块数量;所述处理器根据所述分块组中的所述分块数量对所述分块进行解码以生成解码分块;所述处理器根据所述解码分块生成用于显示的重建视频序列。一些视频译码系统使用包括按光栅扫描顺序分配的分块的分块组。而其它系统使用矩形分块组,以支持虚拟现实(virtual reality,vr)、电话会议和其它基于感兴趣区域的译码方案中的子图像提取。还有其它系统允许编码器根据视频译码应用的类型选择要使用的分块组类型。本方面包括一种机制,用于根据分块组是光栅扫描分块组或矩形分块组来确定分块组中的分块数量。确定分块组类型后,分块组的第一个分块和最后一个分块用于确定分块组中的分块数量。根据分块组的类型采用不同的机制。因此,所公开的机制允许编码器/解码器(编解码器)支持用于不同使用情形的多种分块组方案,并因此增加了编码器和解码器的功能。此外,所公开的机制可以允许译码机制选择一组增加的译码功能,这可以提高译码效率,并因此减少编码器和/或解码器侧的存储器资源使用、处理资源使用和/或网络资源使用。
12.可选地,在上述任一方面中,提供了该方面的另一种实现方式:当所述分块组是所述光栅扫描分块组时,所述分块组中的所述分块数量通过以下方式确定:确定所述分块组的第一个分块与所述分块组的最后一个分块之间的分块数量,作为所述分块组中的分块数量;根据所述分块组中的所述分块数量确定所述分块组中的所述分块数量。
13.可选地,在上述任一方面中,提供了该方面的另一种实现方式:当所述分块组是所述矩形分块组时,所述分块组中的所述分块数量通过以下方式确定:确定所述分块组的所述第一个分块与所述分块组的所述最后一个分块之间的增量值;根据所述增量值和所述图
像中的分块列数量,确定分块组行数量;根据所述增量值和所述图像中的所述分块列数量,确定分块组列数量;根据所述分块组行数量和所述分块组列数量确定所述分块组中的所述分块数量。
14.可选地,在上述任一方面中,提供了该方面的另一种实现方式:所述分块组行数量通过将所述增量值除以所述图像中的所述分块列数量加一来确定。
15.可选地,在上述任一方面中,提供了该方面的另一种实现方式:所述分块组列数量确定为所述增量值对所述图像中的所述分块列数量取模加一。
16.可选地,在上述任一方面中,提供了该方面的另一种实现方式:还包括:所述处理器从所述码流中获取所述分块组的所述第一个分块的标识符和所述分块组的所述最后一个分块的标识符。
17.可选地,在上述任一方面中,提供了该方面的另一种实现方式:所述分块组的所述第一个分块的所述标识符和所述分块组的所述最后一个分块的所述标识符从所述码流中的分块组头中获取。
18.在一个实施例中,本发明包括一种视频译码设备,所述视频译码设备包括:处理器、与所述处理器耦合的接收器以及与所述处理器耦合的发送器,其中,所述处理器、所述接收器和所述发送器用于执行根据上述任一方面所述的方法。
19.在一个实施例中,本发明包括一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品;所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令;在处理器执行所述计算机可执行指令时,使所述视频译码设备执行根据上述任一方面所述的方法。
20.在一个实施例中,本发明包括一种编码器,包括:分割模块,用于将图像分割成多个分块;分配模块,用于将多个所述分块分配到分块组中;确定模块,用于:确定所述分块组是光栅扫描分块组或矩形分块组;并根据所述分块组是所述光栅扫描分块组或所述矩形分块组确定所述分块组中的分块数量;编码模块,用于根据所述分块组中的所述分块数量,将所述分块编码到码流中;存储模块,用于存储所述码流,以传送给解码器。
21.可选地,在上述任一方面中,提供了该方面的另一种实现方式:所述编码器还用于执行根据上述任一方面所述的方法。
22.在一个实施例中,本发明包括一种解码器,包括:接收模块,用于接收包括分割成多个分块的图像的码流,其中,多个所述分块分配到分块组中;确定模块,用于:确定所述分块组是光栅扫描分块组或矩形分块组;根据所述分块组是所述光栅扫描分块组或所述矩形分块组确定所述分块组中的分块数量;解码模块,用于根据所述分块组中的所述分块数量对所述分块进行解码以生成解码分块;生成模块,用于根据所述解码分块生成用于显示的重建视频序列。
23.可选地,在上述任一方面中,提供了该方面的另一种实现方式:所述解码器还用于执行根据上述任一方面所述的方法。
24.为了清楚起见,上述任一实施例可以与上述其它实施例中的任意一个或多个实施例结合,在本发明的范围内产生新的实施例。
25.根据以下具体实施方式结合附图和权利要求书能更清楚地理解这些和其它特征。
附图说明
26.为了更全面地理解本发明,现在参考下文结合附图和详细说明进行的简要描述,其中,相同的附图标记表示相同的部件。
27.图1为对视频信号进行译码的示例性方法的流程图。
28.图2为用于视频译码的示例性编码和解码(编解码)系统的示意图。
29.图3为示例性视频编码器的示意图。
30.图4为示例性视频解码器的示意图。
31.图5为包括经编码的视频序列的示例性码流的示意图。
32.图6为分割成光栅扫描分块组的示例性图像的示意图。
33.图7为分割成矩形分块组的示例性图像的示意图。
34.图8为示例性视频译码设备的示意图。
35.图9为将图像编码到码流中的示例性方法的流程图。
36.图10为从码流中解码图像的示例性方法的流程图。
37.图11为用于将图像的视频序列编码到码流中的示例性系统的示意图。
具体实施方式
38.首先应理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可使用任何数量的技术来实现,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
39.本文采用各种缩略语,例如编码树块(coding tree block,ctb)、编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)、编码视频序列(coded video sequence,cvs)、联合视频专家组(joint video experts team,jvet)、运动约束分块集(motion constrained tile set,mcts)、最大传输单元(maximum transfer unit,mtu)、网络抽象层(network abstraction layer,nal)、图像顺序编号(picture order count,poc)、原始字节序列载荷(raw byte sequence payload,rbsp)、序列参数集(sequence parameter set,sps)、通用视频编码(versatile video coding,vvc)和工作草案(working draft,wd)。
40.许多视频压缩技术可以用来减小视频文件的大小,同时尽量减少数据丢失。例如,视频压缩技术可以包括执行空间(例如帧内)预测和/或时间(例如帧间)预测来减少或去除视频序列中的数据冗余。对于基于块的视频译码,视频条带(slice)(例如视频图像或视频图像的一部分)可以分割成视频块,视频块还可以称为树块(treeblock)、编码树块(coding tree block,ctb)、编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)和/或编码节点。图像的帧内译码(i)条带中的视频块参照同一个图像内邻块中的参考样本使用空间预测进行译码。图像的经帧间译码的单向预测(p)或双向预测(b)条带中的视频块可以参照同一个图像内邻块中的参考样本使用空间预测进行译码,或者参照其它参考图像内的参考样本使用时间预测进行译码。图像(picture/image)可以称为帧(frame),参考图像可以称为参考帧。空间预测或时间预测会产生表示图像块的预测块。残差数据表示原始图像块与预测块之间的像素差。相应地,帧间译码块根据运动矢量和残差数据进行编码,其
中,运动矢量指向组成预测块的参考样本的块,残差数据表示编码块与预测块之间的差值。帧内译码块根据帧内编码模式和残差数据进行编码。为了进一步压缩,残差数据可以从像素域变换到变换域,从而产生可以进行量化的残差变换系数。量化变换系数最初可以以二维阵列排列。可以扫描量化变换系数,以产生变换系数的一维矢量。可以应用熵编码以实现进一步压缩。下文详细描述了这类视频压缩技术。
41.为了确保经编码视频能够正确解码,根据对应的视频译码标准对视频进行编码和解码。视频译码标准包括国际电联(international telecommunication union,itu)标准化部门(international telecommunication union standardization sector,itu-t)h.261、国际标准化组织/国际电工委员会(international organization for standardization/international electrotechnical commission,iso/iec)运动图像专家组(motion picture experts group,mpeg)-1第2部分、itu-t h.262或iso/iec mpeg-2第2部分、itu-t h.263、iso/iec mpeg-4第2部分、高级视频译码(advanced video coding,avc)(也称为itu-t h.264或iso/iec mpeg-4第10部分),以及高效视频译码(high efficiency video coding,hevc)(也称为itu-t h.265或mpeg-h第2部分)。avc包括可分级的视频译码(scalable video coding,svc)、多视图视频译码(multiview video coding,mvc)和多视图加深度视频译码(multiview video coding plus depth,mvc+d)以及三维(three dimensional,3d)avc(three dimensional avc,3d-avc)等扩展。hevc包括可分级hevc(scalable hevc,shvc)、多视图hevc(multiview hevc,mv-hevc)和3d hevc(3d-hevc)等扩展。itu-t和iso/iec的联合视频专家组(joint video experts team,jvet)已开始开发一种称为通用视频译码(versatile video coding,vvc)的视频译码标准。vvc包括在工作草案(working draft,wd)中,该wd包括jvet-l1001-v5。
42.为了对视频图像进行译码,首先对该图像进行分割,然后将分割部分编码到码流中。存在各种图像分割方案。例如,一个图像可以分割成常规条带、非独立条带、分块,和/或根据波前并行处理(wavefront parallel processing,wpp)进行分割。为了简单起见,hevc对编码器做了限制,使得在将条带分割成用于视频译码的ctb组时,只能使用常规条带、非独立条带、分块、wpp及其组合。这种分割能够支持最大传输单元(maximum transfer unit,mtu)大小匹配、并行处理和减少端到端时延。mtu表示能够在单个数据包中发送的最大数据量。如果数据包载荷超过mtu,则通过称为分片的过程将该载荷划分为两个数据包。
43.常规条带还简称为条带,是分割图像后得到的部分,可以独立于同一个图像内的其它常规条带重建,但是由于存在环路滤波操作,所以还是存在相互依赖性。每个常规条带封装在自身的网络抽象层(network abstraction layer,nal)单元中进行发送。此外,帧内预测(帧内样本预测、运动信息预测、译码模式预测)和跨条带边界的熵编码依赖性可能被禁用,以支持独立重建。这种独立重建支持并行化。例如,基于常规条带的并行化最大程度地减少了处理器间或核间通信。然而,由于常规条带都是独立的,所以每个条带都与单独的条带头相关联。使用常规条带可能会产生大量译码开销,因为每个条带的条带头的比特成本高以及没有跨条带边界进行的预测。此外,可以使用常规条带,以支持mtu大小匹配需求。具体地,由于常规条带封装在单独的nal单元中,并且可以独立译码,所以每个常规条带需要小于mtu方案中的mtu,以避免将条带分为多个数据包。因此,为了实现并行化和mtu大小匹配,图像内的条带布局可能互相矛盾。
44.非独立条带与常规条带类似,但条带头更短,并且可以在不影响帧内预测的情况下对图像树块边界进行分割。相应地,非独立条带允许将常规条带切成多个nal单元,从而可以在完成整个常规条带的编码之前发送常规条带的一部分,从而降低端到端时延。
45.分块是图像内通过水平和垂直边界产生的分割部分,这些边界产生了分块列和分块行。分块可以按光栅扫描顺序(从右到左,从上到下)进行译码。ctb的扫描顺序在分块的内部。相应地,首先按光栅扫描顺序对第一个分块内的ctb进行译码,然后进行到下一个分块内的ctb。与常规条带类似,分块消除了帧内预测依赖性以及熵解码依赖性。然而,分块可以不包括在单独的nal单元中,因此,分块不能用于实现mtu大小匹配。每个分块可以由一个处理器/核处理,解码相邻分块的处理单元之间的帧内预测所使用的处理器间/核间通信仅限于传送共享的条带头(如果相邻分块在同一个条带内)以及共享与环路滤波相关的重建样本和元数据。当条带中包括一个以上分块时,除条带中的第一入口点(entry point)偏移之外,还可以在条带头中指示(signal)每个分块的入口点字节偏移。对于每个条带和分块,需要满足以下条件中的至少一个:(1)条带中的所有编码树块都属于同一个分块;(2)分块中的所有编码树块都属于同一个条带。
46.在wpp中,图像被分割成单行ctb。熵解码和预测机制可以使用其它行中的ctb的数据。对ctb行进行并行解码,可以实现并行处理。例如,当前行可以与前一行并行解码。然而,当前行的解码比前一行的解码过程延迟两个ctb。这种延迟确保与位于当前行中的当前ctb上方和右上方的ctb相关的数据在解码当前ctb之前可用。当用图形表示时,该方法表现为波阵面。这种交错式开始解码可以使用与图像内包括的ctb行一样多的处理器/核来实现并行化。由于支持在图像内的相邻树块行之间进行帧内预测,所以可能需要大量处理器间/核间通信来实现帧内预测。wpp分割不考虑nal单元大小。因此,wpp不支持mtu大小匹配。然而,常规条带可以与wpp结合使用,利用一定的译码开销,根据需要实现mtu大小匹配。
47.分块还可以包括运动约束分块集。运动约束分块集(motion constrained tile set,mcts)是一种分块集,使得相关的运动矢量被限制为指向mcts内部的整像素位置以及指向仅需要mcts内部的整像素位置进行插值的分数像素位置。此外,禁止使用根据mcts之外的块推导的用于时间运动矢量预测的运动矢量候选项。这样一来,每个mcts可以独立解码,不需要mcts中不包括的分块。时间mcts补充增强信息(supplemental enhancement information,sei)消息可以用于表示mcts存在于码流中并指示mcts。mcts sei消息提供补充信息(指定为sei消息语义的一部分),该补充信息可以用于提取mcts子码流,以生成用于mcts的一致性码流。该信息包括多个提取信息集,每个提取信息集定义多个mcts并且包括要在mcts子码流提取过程使用的替换视频参数集(video parameter set,vps)、序列参数集(sequence parameter set,sps)和图像参数集(picture parameter set,pps)的原始字节序列载荷(raw bytes sequence payload,rbsp)字节。当根据mcts子码流提取过程提取子码流时,参数集(vps、sps和pps)可能会重写或替换,而且条带头可能会更新,因为一个或所有条带地址相关的语法元素(包括first_slice_segment_in_pic_flag和slice_segment_address)会使用所提取的子码流中的不同值。
48.本发明涉及各种分块方案。具体地,当图像被分割成分块时,这些分块可以分配给分块组。分块组是相关分块集,这些相关分块可以单独提取和译码,例如支持显示感兴趣区域和/或支持并行处理。可以将分块分配给分块组,以允许在组范围内应用对应的参数、函
数、译码工具等。例如,分块组可以包括mcts。作为另一个示例,分块组可以单独处理和/或提取。一些系统使用光栅扫描机制来创建对应的分块组。本文使用的光栅扫描分块组是通过按光栅扫描顺序分配分块来创建的分块组。光栅扫描顺序在第一个分块与最后一个分块之间从右到左和从上到下连续进行。光栅扫描分块组可以用于一些应用,例如支持并行处理。
49.然而,光栅扫描分块组在某些情况下可能效率不高。例如,在虚拟现实(virtual reality,vr)应用中,环境被记录为编码成图像的球体。然后,用户可以通过观看图像的用户选择的子图像来体验环境。用户选择的子图像可以称为感兴趣区域。允许用户选择性地感知环境的一部分会使用户产生置身于该环境中的感觉。因此,可以不观看图像的非选择部分,因此舍弃这些非选择部分。因此,用户选择的子图像的处理方式可以不同于非选择的子图像(例如,非选择的子图像可以以较低的分辨率指示,可以在渲染期间使用更简单的机制处理等)。分块组允许在各子图像之间进行这种差异化处理。然而,用户选择的子图像通常是矩形和/或正方形区域。因此,光栅扫描分块组可能不适用于此类使用情形。
50.为了解决这些问题,一些系统使用矩形分块组。矩形分块组是包括分块集的分块组,当这些分块组合在一起时,会产生矩形。本文使用的矩形是恰好具有四个边的形状,这四个边连接,使得每个边各自以90度角连接到另外两个边。两种分块组方法(例如,光栅扫描分块组和矩形分块组)都各有优缺点。因此,视频译码系统可能希望支持这两种方法。然而,当两种方法都可用时,视频译码系统可能无法高效地指示分块组的使用。例如,简单合并这些方法的指示可能在编码器和/或解码器侧导致复杂的语法结构,该语法结构是效率低下和/或处理器密集的。本发明提供了用于解决视频译码领域中的这些问题和其它问题的机制。
51.本文公开了通过使用简单和紧凑的指示来协调光栅扫描分块组和矩形分块组的使用的各种机制。这种指示提高了译码效率,从而减少了编码器和/或解码器侧的存储器资源使用、处理资源使用和/或网络资源使用。为了协调这些方法,编码器可以指示标志,该标志表示所使用的分块组类型。例如,该标志可以是矩形分块组标志,可以在sps和/或pps等参数集中指示。该标志可以表示编码器使用光栅扫描分块组或矩形分块组。然后,编码器可以通过简单地指示分块组中的第一个分块和最后一个分块来表示分块组成员关系。根据第一个分块、最后一个分块和分块组类型的指示,解码器可以确定分块组中包括的分块。因此,可以从码流中省略每个分块组中所有分块的完整列表,这提高了译码效率。例如,如果分块组是光栅扫描分块组,则分配给分块组的分块可以通过以下方式确定:确定分块组的第一个分块与最后一个分块之间的分块数量,并以第一个分块与最后一个分块之间的标识符将该数量的分块添加到分块组。如果分块组是矩形分块组,则可以使用不同的方法。例如,可以确定分块组的第一个分块与最后一个分块之间的增量值。然后,可以根据图像中的增量值和分块列数量确定分块组行数量和分块组列数量。然后,可以根据分块组行数量和分块组列数量确定分块组中的分块。这些示例和其它示例在下文详细描述。
52.图1为对视频信号进行译码的示例性操作方法100的流程图。具体地,编码器对视频信号进行编码。编码过程通过采用各种机制来压缩视频信号以减小视频文件大小。较小的文件大小允许将压缩的视频文件发送给用户,减少了相关的带宽开销。然后,解码器对压缩的视频文件进行解码,以重建原始视频信号,向终端用户显示。解码过程通常是编码过程
的逆过程,使得解码器重建的视频信号与编码器侧的视频信号保持一致。
53.在步骤101中,将视频信号输入编码器中。例如,所述视频信号可以是存储在存储器中的未压缩的视频文件。在另一示例中,视频文件可以由视频捕获设备(如视频摄像机)捕获,并且进行编码以支持视频的直播。所述视频文件可以包括音频分量和视频分量。所述视频分量包括一系列图像帧。当按顺序观看时,这些图像帧会产生运动的视觉效果。这些帧包括根据光表示的像素(本文称为亮度分量(或亮度样本))和颜色表示的像素(称为色度分量(或色度样本))。在一些示例中,这些帧还可以包括深度值以支持三维观看。
54.在步骤103中,将视频分割成块。分割包括将每个帧中的像素细分为方块和/或矩形块进行压缩。例如,在高效视频译码(high efficiency video coding,hevc)(也称为h.265和mpeg-h第2部分)中,可以先将帧分成编码树单元(coding tree unit,ctu),这些ctu是预定义大小(例如,64个像素
×
64个像素)的块。这些ctu包括亮度样本和色度样本。可以使用编码树将ctu分成块,然后递归地细分这些块,直到获得支持进一步编码的配置。例如,可以对帧的亮度分量进行细分,直到各个块包括相对均匀的亮度值。此外,可以对帧的色度分量进行细分,直到各个块包括相对均匀的颜色值。因此,分割机制因视频帧的内容而不同。
55.在步骤105中,采用各种压缩机制来压缩在步骤103中分割的图像块。例如,可以采用帧间预测和/或帧内预测。帧间预测旨在利用共同场景中的对象往往出现在连续帧中这一事实。因此,无需在相邻帧中对参考帧中描绘对象的块进行重复描述。具体地,一个对象(如一张桌子)可以在多个帧中保持恒定的位置。因此,只描述一次桌子,相邻帧可以重新参考参考帧。可以采用模式匹配机制来匹配多个帧中的对象。此外,由于对象移动或摄像机移动等,移动对象可以通过多个帧表示。在特定示例中,视频可以通过多个帧显示在屏幕上移动的汽车。可以使用运动矢量描述这种移动。运动矢量是一个二维矢量,提供从帧中对象的坐标到参考帧中该对象的坐标的偏移。因此,帧间预测可以将当前帧中的图像块编码为运动矢量集,这些运动矢量指示当前帧中的图像块与参考帧中的对应块之间的偏移。
56.帧内预测对公共帧中的块进行编码。帧内预测利用亮度分量和色度分量往往在帧中聚集这一事实。例如,一棵树局部的一片绿色往往与几片类似的绿色相邻。帧内预测采用多种方向性预测模式(例如,hevc中有33种)、平面模式和直流(direct current,dc)模式。这些方向性模式表示当前块的样本与对应方向上邻块的样本相似/相同。平面模式表示一行/列(例如平面)上的一系列块可以根据该行的边缘处的邻块进行插值。实际上,平面模式通过采用变化值的相对恒定的斜率来表示光/颜色在行/列上的平滑转变。dc模式用于边界平滑,表示块与所有邻块的样本的平均值相似/相同,这些邻块与方向性预测模式的角方向相关。因此,帧内预测块可以将图像块表示为各种关系预测模式值而非实际值。此外,帧间预测块可以将图像块表示为运动矢量值而非实际值。在任一种情况下,预测块在某些情况下可能无法准确地表示图像块。所有差值都存储在残差块中。可以对残差块进行变换以进一步压缩文件。
57.在步骤107中,可以使用各种滤波技术。在hevc中,根据环内滤波方案使用滤波器。上文描述的基于块的预测可能会在解码器侧产生块状图像。此外,基于块的预测方案可以对块进行编码,然后重建编码块,以供以后用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和样本自适应偏移(sample adaptive offset,
sao)滤波器应用于块/帧。这些滤波器减少了此类块伪影,从而可以准确地重建编码文件。此外,这些滤波器减少了重建参考块中的伪影,使得伪影不太可能在基于重建参考块编码的后续块中产生其它的伪影。
58.在步骤109中,一旦对视频信号进行了分割、压缩和滤波,则将所得到的数据编码到码流中。所述码流包括上述数据以及支持在解码器侧进行适当的视频信号重建所需要的任何指示数据。例如,此类数据可以包括分割数据、预测数据、残差块和向解码器提供译码指令的各种标志。所述码流可以存储在存储器中,以便在请求时发送给解码器。所述码流还可以广播和/或组播到多个解码器。创建码流是一个迭代过程。因此,步骤101、103、105、107和109可以在多个帧和块中连续和/或同时进行。图1所示的顺序是为了清晰性和便于描述而呈现的,并非旨在将视频译码过程限制于特定顺序。
59.在步骤111中,所述解码器接收所述码流,开始解码过程。具体地,解码器采用熵解码方案将码流转换为对应的语法数据和视频数据。在步骤111中,所述解码器使用所述码流中的语法数据来确定帧的分割部分。分割应该与步骤103中的块分割的结果匹配。下面描述在步骤111中采用的熵编码/解码。编码器在压缩过程中做出许多选择,例如根据一个或多个输入图像中的值的空间位置从若干个可能选择中选择块分割方案。指示确切的选择可能会占用大量的位元。本文使用的位元是被视为变量的二进制值(例如,可能根据上下文变化的比特值)。熵编码允许编码器丢弃任何明显不适合特定情况的选项,从而留下一组可使用选项。然后,为每个可使用选项分配码字。码字的长度取决于可使用选项的数量(例如,一个位元对应两个选项,两个位元对应三个或四个选项等)。然后,编码器对所选选项的码字进行编码。该方案减小了码字的大小,因为码字的大小与唯一地指示从可使用选项的小子集中进行选择,而非唯一指示从所有可能选项的潜在大集中进行选择所需要的码字一样大。然后,解码器通过以与编码器类似的方式确定可使用选项集来对所述选择进行解码。通过确定可使用选项集,解码器可以读取码字并确定编码器做出的选择。
60.在步骤113中,所述解码器执行块解码。具体地,解码器进行逆变换来生成残差块。然后,解码器使用残差块和对应的预测块,根据分割来重建图像块。所述预测块可以包括编码器在步骤105中生成的帧内预测块和帧间预测块。然后,根据在步骤111中确定的分割数据将重建图像块放置在重建视频信号的帧中。还可以通过上文描述的熵编码在码流中指示用于步骤113的语法。
61.在步骤115中,以类似于编码器侧的步骤107的方式对重建视频信号的帧执行滤波。例如,可以将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和sao滤波器应用于帧,以去除块伪影。一旦对帧进行了滤波,则在步骤117中,可以将视频信号输出到显示器,以供终端用户观看。
62.图2为用于视频译码的示例性编码和解码(编解码)系统200的示意图。具体地,编解码系统200能够实现操作方法100。编解码系统200广义地描述编码器和解码器中使用的组件。编解码系统200接收视频信号并对视频信号进行分割,如操作方法100中的步骤101和103所描述,从而产生经分割的视频信号201。然后,当作为编码器时,编解码系统200将经分割的视频信号201压缩到经编码码流中,如方法100中的步骤105、107和109所描述的。当作为解码器时,编解码系统200从码流中生成输出视频信号,如操作方法100中的步骤111、113、115和117所描述的。编解码系统200包括通用译码器控制组件211、变换缩放和量化组
block,ctb)和cu。例如,可以将ctu分成多个ctb,然后可以将ctb划分为多个cb包括在cu中。可以将cu编码为包括预测数据的预测单元(prediction unit,pu)和/或包括cu的变换残差数据的变换单元(transform unit,tu)。运动估计组件221使用率失真分析作为率失真优化过程的一部分来生成运动矢量、pu和tu。例如,运动估计组件221可以确定当前块/帧的多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡视频重建的质量(例如,压缩造成的数据丢失量)和译码效率(例如,最终编码的大小)。
67.在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置进行插值。因此,运动估计组件221可以相对于整像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过将pu的位置与参考图像的预测块的位置进行比较来计算帧间译码条带中视频块的pu的运动矢量。运动估计组件221将计算的运动矢量作为运动数据输出到标头格式化和cabac组件231以进行编码,并将运动输出到运动补偿组件219。
68.运动补偿组件219执行的运动补偿可以涉及根据运动估计组件221所确定的运动矢量获取或生成预测块。另外,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收到当前视频块的pu的运动矢量之后,运动补偿组件219可以定位运动矢量指向的预测块。然后,从所译码的当前视频块的像素值中减去预测块的像素值,从而形成像素差值,如此形成残差视频块。通常,运动估计组件221相对于亮度分量执行运动估计,运动补偿组件219将根据亮度分量计算的运动矢量用于色度分量和亮度分量。将预测块和残差块转发给变换缩放和量化组件213。
69.还将经分割的视频信号201发送到帧内估计组件215和帧内预测组件217。如同运动估计组件221和运动补偿组件219,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念目的进行单独说明。帧内估计组件215和帧内预测组件217相对于当前帧中的块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择适当的帧内预测模式来对当前块进行编码。然后,将所选择的帧内预测模式转发给标头格式化和cabac组件231进行编码。
70.例如,帧内估计组件215对各种测试的帧内预测模式进行率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定编码块与经编码以产生编码块的原始未编码块之间的失真(或误差)量,以及用于产生编码块的码率(例如,位数)。帧内估计组件215根据各种编码块的失真和速率计算比率,以确定表现出块的最佳率失真值的帧内预测模式。此外,帧内估计组件215可用于根据率失真优化(rate-distortion optimization,rdo),使用深度建模模式(depth modeling mode,dmm)对深度图的深度块进行译码。
71.当在编码器上实现时,帧内预测组件217可以根据由帧内估计组件215确定的所选帧内预测模式从预测块生成残差块,或者当在解码器上实现时,从码流读取残差块。残差块包括预测块与原始块之间的差值,表示为矩阵。然后,将残差块转发给变换缩放和量化组件
213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量进行操作。
72.变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213对残差块进行离散余弦变换(discrete cosine transform,dct)、离散正弦变换(discrete sine transform,dst)等变换或者进行概念上类似的变换,从而产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子带变换或其它类型的变换。变换可以将残差信息从像素值域转化到变换域,如频域。变换缩放和量化组件213还用于根据频率等对变换的残差信息进行缩放。这种缩放涉及对残差信息应用缩放因子,以便在不同粒度下量化不同的频率信息,这可能会影响重建视频的最终视觉质量。变换缩放和量化组件213还用于量化变换系数以进一步降低码率。该量化过程可以减小与部分或全部系数相关的位深度。可以通过调整量化参数来修改量化程度。在一些示例中,变换缩放和量化组件213随后可以对包括量化变换系数的矩阵进行扫描。将量化变换系数转发给标头格式化和cabac组件231,以编码到码流中。
73.缩放和逆变换组件229进行与变换缩放和量化组件213相反的操作以支持运动估计。缩放和逆变换组件229使用逆缩放、逆变换和/或反量化以重建像素域中的残差块,例如,用于以后用作参考块,所述参考块可成为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以通过将残差块添加回对应的预测块来计算参考块,以用于后续块/帧的运动估计。将滤波器应用于重建参考块,以减少在缩放、量化和变换期间产生的伪影。当预测后续块时,此类伪影可能导致预测不准确(并产生其它伪影)。
74.滤波器控制分析组件227和环内滤波器组件225将滤波器应用于残差块和/或重建图像块。例如,可以将缩放和逆变换组件229的变换残差块与帧内预测组件217和/或运动补偿组件219的对应预测块合并以重建原始图像块。然后,可以将滤波器应用于重建图像块。在一些示例中,滤波器可以转而应用于残差块。如同图2中的其它组件,滤波器控制分析组件227和环内滤波器组件225高度集成,可以一起实施,但出于概念目的进行单独描述。将应用于重建参考块的滤波器应用于特定空间区域,这些滤波器包括多个参数以调整使用这些滤波器的方式。滤波器控制分析组件227对重建参考块进行分析,以确定需要使用这些滤波器的位置并设置对应的参数。将此类数据作为滤波器控制数据转发给标头格式化和cabac组件231进行编码。环内滤波器组件225根据滤波器控制数据使用这些滤波器。这些滤波器可以包括去块效应滤波器、噪声抑制滤波器、sao滤波器和自适应环路滤波器。此类滤波器可以根据示例应用于空域/像素域(例如,针对重建像素块)或频域中。
75.当作为编码器操作时,将经滤波的重建图像块、残差块和/或预测块存储在解码图像缓冲区组件223中,以供以后用于运动估计,如上所述。当作为解码器操作时,解码图像缓冲区组件223存储经重建和经滤波的块并将其作为输出视频信号的一部分转发给显示器。解码图像缓冲区组件223可以是任何能够存储预测块、残差块和/或重建图像块的存储设备。
76.标头格式化和cabac组件231从编解码系统200的各种组件接收数据,并将这些数据编码到经编码码流中,以发送给解码器。具体地,标头格式化和cabac组件231生成各种标头以对控制数据(如总体控制数据和滤波器控制数据)进行编码。此外,将预测数据(包括帧内预测)和运动数据,以及量化变换系数数据形式的残差数据均编码到码流中。最终码流包括解码器重建原始的经分割的视频信号201所需要的所有信息。此类信息还可以包括帧内
预测模式索引表(还称为码字映射表)、各种块的编码上下文的定义、最可能帧内预测模式的指示、分割信息的指示等。此类数据可以采用熵编码进行编码。例如,可以采用上下文自适应可变长度译码(context adaptive variable length coding,cavlc)、cabac、基于语法的上下文自适应二进制算术译码(syntax-based context-adaptive binary arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)译码或其它熵编码技术对上述信息进行编码。在熵编码之后,可以将经编码码流发送到另一设备(例如,视频解码器)或存档以用于后续发送或检索。
77.图3为示例性视频编码器300的框图。视频编码器300可以用于实现编解码系统200的编码功能和/或执行操作方法100中的步骤101、步骤103、步骤105、步骤107和/或步骤109。编码器300对输入视频信号进行分割,从而产生经分割的视频信号301,其中,所述经分割的视频信号301实质上类似于经分割的视频信号201。然后,通过编码器300的组件压缩经分割的视频信号301并编码到码流中。
78.具体地,将经分割的视频信号301转发给帧内预测组件317进行帧内预测。帧内预测组件317可以实质上类似于帧内估计组件215和帧内预测组件217。还将经分割的视频信号301转发给运动补偿组件321,以根据解码图像缓冲区组件323中的参考块进行帧间预测。运动补偿组件321可以实质上类似于运动估计组件221和运动补偿组件219。将帧内预测组件317和运动补偿组件321的预测块和残差块转发给变换和量化组件313以对残差块进行变换和量化。变换和量化组件313可以实质上类似于变换缩放和量化组件213。将经变换和量化的残差块和对应的预测块(连同相关控制数据)转发给熵编码组件331以编码到码流中。熵编码组件331可以实质上类似于标头格式化和cabac组件231。
79.也将经变换和量化的残差块和/或对应的预测块从变换和量化组件313转发给逆变换和量化组件329以重建成参考块供运动补偿组件321使用。逆变换和量化组件329可以实质上类似于缩放和逆变换组件229。根据示例,还将环内滤波器组件325中的环内滤波器应用于残差块和/或重建参考块。环内滤波器组件325可以实质上类似于滤波器控制分析组件227和环内滤波器组件225。环内滤波器组件325可以包括多个滤波器,如结合环内滤波器组件225所述。然后,将滤波块存储在解码图像缓冲区组件323中,以供运动补偿组件321用作参考块。解码图像缓冲区组件323可以实质上类似于解码图像缓冲区组件223。
80.图4为示例性视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或执行操作方法100中的步骤111、步骤113、步骤115和/或步骤117。例如,解码器400从编码器300接收码流,并根据码流生成重建的输出视频信号,向终端用户显示。
81.所述码流由熵解码组件433接收。熵解码组件433用于实现熵解码方案,如cavlc、cabac、sbac、pipe译码或其它熵译码技术。例如,熵解码组件433可以使用标头信息来提供上下文以解释在码流中编码为码字的其它数据。解码信息包括对视频信号进行解码所需的任何信息,如总体控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。将量化变换系数转发给逆变换和量化组件429以重建成残差块。逆变换和量化组件429可以类似于逆变换和量化组件329。
82.将重建残差块和/或预测块转发给帧内预测组件417,以根据帧内预测操作重建成图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417采用预测模式来定位帧中的参考块,并将残差块应用于结果以重建帧内预测
的图像块。将重建的帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425转发给解码图像缓冲区组件423。解码图像缓冲区组件423和环内滤波器组件425可以分别实质上类似于解码图像缓冲区组件223和环内滤波器组件225。环内滤波器组件425对重建图像块、残差块和/或预测块进行滤波,并且将此类信息存储在解码图像缓冲区组件423中。将解码图像缓冲区组件423的重建图像块转发给运动补偿组件421进行帧间预测。运动补偿组件421可以实质上类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块应用于结果以重建图像块。还可以通过环内滤波器组件425将所得到的重建块转发给解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块。这些重建图像块可以通过分割信息重建为帧。这些帧还可以放置在一个序列中。所述序列作为重建输出视频信号输出到显示器。
83.图5为包括经编码的视频序列的示例性码流500的示意图。例如,码流500可以由编解码系统200和/或编码器300生成,由编解码系统200和/或解码器400进行解码。在另一示例中,在方法100的步骤109中,码流500可以由编码器生成,由解码器在步骤111中使用。
84.码流500包括序列参数集(sequence parameter set,sps)510、多个图像参数集(picture parameter sets,pps)512、分块组头514和图像数据520。sps 510包括码流500中包括的视频序列中的所有图像共有的序列数据。这些数据可以包括图像大小、位深度、译码工具参数、码率限制等。pps 512包括一个或多个对应图像专有的参数。因此,视频序列中的每个图像可以参考一个pps 512。pps 512可以表示对应图像中的分块可使用的译码工具、量化参数、偏移、图像专用译码工具参数(例如滤波器控制参数)等。分块组头514包括图像中的每个分块组专用的参数。因此,视频序列中的每个分块组可以有一个分块组头514。分块组头514可以包括分块组信息、图像顺序编号(picture order count,poc)、参考图像列表、预测权重、分块入口点、去块效应参数等。需要说明的是,一些系统将分块组头514称为条带头,并使用此类信息来支持条带而不是分块组。
85.图像数据520包括根据帧间预测和/或帧内预测进行编码的视频数据以及对应的变换和量化残差数据。这类图像数据520根据编码之前对图像进行分割的分割类型进行分类。例如,图像数据520中的图像被划分为一个或多个分块组521。每个分块组521包括一个或多个分块523。分块523进一步分为编码树单元(coding tree unit,ctu)。ctu根据编码树进一步被划分成编码块,然后,编码块可以根据预测机制进行编码/解码。图像可以包括一个或多个分块组521和一个或多个分块523。
86.分块组521是相关分块523集,这些相关分块523可以单独提取和译码,例如支持显示感兴趣区域和/或支持并行处理。图像可以包括一个或多个分块组521。每个分块组521在对应的分块组头514中参考译码工具。因此,通过改变对应的分块组头514中的数据,可以使用与其它分块组521不同的译码工具对当前分块组521进行译码。可以根据用于将分块523分配给分块组521的机制来描述分块组521。包括按光栅扫描顺序分配的分块523的分块组521可以称为光栅扫描分块组。包括被分配用于创建矩形(或正方形)的分块523的分块组521可以称为矩形分块组。图6-图7分别包括光栅扫描分块组和矩形分块组的示例,如下文所详述。
87.分块523是由水平边界和垂直边界产生的图像的分割部分。分块523可以是矩形和/或正方形。图像可以分割成分块523的各行和各列。分块523行是以水平相邻的方式定位
的分块523集,以创建从图像的左边界到右边界(或反之亦然)的连续行。分块523列是以垂直相邻的方式定位的分块523集,以创建从图像的顶部边界到底部边界(或反之亦然)的连续行。根据示例,分块523可以允许,也可以不允许基于其它分块523进行预测。例如,分块组521可以包括指定为mcts的分块523集。mcts中的分块523可以通过基于mcts中的其它分块523的预测来译码,但不能通过mcts外的分块523来译码。分块523可以进一步分割成ctu。编码树可以用于将ctu分割成编码块,这些编码块可以根据帧内预测或帧间预测进行译码。
88.每个分块523在图像中可以具有唯一的分块索引524。分块索引524是可以用于将一个分块523与其它分块区分开的程序选择的数字标识符。例如,分块索引524可以按光栅扫描顺序在数字上增加。光栅扫描顺序为从左到右,从上到下。需要说明的是,在一些示例中,也可以为分块523分配分块标识符(identifier,id)。分块id是可以用于将一个分块523与其它分块区分开的分配标识符。在一些示例中,计算可以使用分块id而不是分块索引524。此外,在一些示例中,分块id可以被分配为具有与分块索引524相同的值。在一些示例中,可以指示分块索引524和/或id来表示包括分块523的分块组521的边界。此外,分块索引524和/或id可用于将与分块523相关联的图像数据520映射到用于显示的适当位置。
89.如上所述,分块组521可以是光栅扫描分块组或矩形分块组。本发明包括指示机制,允许编解码器以提高译码效率和降低复杂性的方式支持两种分块组521类型。分块组标志531是可用于指示对应的分块组521是光栅扫描分块组或矩形分块组的数据单元。根据示例,分块组标志531可以在sps 510或pps 512中指示。分配给分块组521的分块523可以通过指示码流500中的第一个分块532和最后一个分块533来指示。例如,第一个分块532可以包括分块组521中第一个位置的分块523的分块索引524或id。第一个位置是矩形分块组的左上顶点和光栅扫描分块组中最小的索引/id。此外,最后一个分块533可以包括分块组521中最后一个位置的分块523的分块索引524或id。最后一个位置是矩形分块组的右下顶点和光栅扫描分块组中最大的索引/id。
90.分块组标志531、第一个分块532和最后一个分块533提供足以使解码器可以确定分块组521中的分块523的信息。例如,光栅扫描机制可以根据第一个分块532和最后一个分块533确定光栅扫描分块组中的分块523。此外,矩形机制可以根据第一个分块532和最后一个分块533确定矩形分块组中的分块523。这允许从码流500中省略对应分块组521中的其它分块523的分块索引524,从而减小了码流500的大小,并因此提高了译码效率。因此,分块组标志531提供足够的信息,以使解码器可以确定采用哪种机制来确定哪些分块523被分配给分块组521。
91.因此,编码器可以确定对码流500或其子部分使用光栅扫描分块组或矩形分块组。然后,编码器可以设置分块组标志531。此外,编码器可以将分块523分配给分块组521,并在码流500中包括第一个分块532和最后一个分块533。然后,编码器侧的假设参考解码器(hypothetical reference decoder,hrd)可以根据分块组标志531、第一个分块532和最后一个分块533确定分块组521的分块分配。本文使用的分块分配表示编码器将分块523子集包括在分块组521中。hrd是一组编码端模块,用于预测解码器侧的解码结果,作为在rdo期间选择最佳译码方法的一部分。此外,解码器可以接收码流500,并根据分块组标志531、第一个分块532和最后一个分块533确定分块组521分配。具体地,编码器和解码器侧的hrd都可以根据分块组标志531选择光栅扫描机制或矩形机制。然后,hrd和解码器可以使用所选
择的机制来根据第一个分块532和最后一个分块533确定分块组521的分块523分配。
92.以下是上述机制的具体示例。
[0093][0094][0095]
在该示例中,表示为rectangular_tile_group_flag的分块组标志531可用于选择矩形机制(例如if语句)或光栅扫描机制(例如else语句)。矩形机制确定分块组的第一个分块与分块组的最后一个分块之间的增量值。分块组行数量通过将增量值除以图像中的分块列数量加一来确定。分块组列数量通过增量值对图像中的分块列数量取模加一来确定。然后,可以根据分块组行数量和分块组列数量确定分块分配(例如,if语句中的for循环)。同时,光栅扫描机制确定分块组的第一个分块与分块组的最后一个分块之间的分块数量。由于分块按光栅扫描顺序索引,因此光栅扫描机制然后可以按光栅扫描顺序将确定的分块数量添加到分块组中(例如,else语句中的for循环)。
[0096]
图6为分割成光栅扫描分块组621的示例性图像600的示意图。例如,图像600可以由编解码系统200、编码器300和/或解码器400等编码到码流500中以及从码流500中解码。此外,可以对图像600进行分割,以支持方法100提供的编码和解码。
[0097]
图像600包括分配给光栅扫描分块组621、624和625的分块623,该分块623和分块组621、624和625可以分别实质上类似于分块523和分块组521。分块623按光栅扫描顺序逐个分块623分配给光栅扫描分块组621、624和625。为了清楚地描绘光栅扫描分块组621、624和625之间的边界,每个分块组由粗体轮廓包围。此外,通过施加阴影来描绘分块组621,以进一步区分分块组边界。还需要说明的是,图像600可以分割成任何数量的光栅扫描分块组621、624和625。为清楚讨论起见,以下描述涉及光栅扫描分块组621。然而,分块623以类似于光栅扫描分块组621的方式分配给光栅扫描分块组624和625。
[0098]
如图所示,第一个分块623a、最后一个分块623b以及第一个分块623a与最后一个分块623b之间的所有阴影分块按光栅扫描顺序分配给分块组621。如图所示,根据光栅扫描
顺序进行的机制(例如,在处理器中操作的方法)将第一个分块623a分配给分块组621,然后继续将每个分块623分配给分块组621(从左到右)直到到达右侧图像600边界(除非到达最后一个分块623b)。然后,光栅扫描顺序进行到下一行分块623(例如,从一个或多个顶行向一个或多个底行)。在本例中,第一个分块623a位于第一行,因此下一行是第二行。具体地,光栅扫描顺序进行到左侧图像600边界处第二行上的第一个分块,然后从左到右穿过第二行,直到到达右侧图像600边界。然后,光栅扫描移动到下一行(在本例中是第三行),并从左侧图像600边界处第三行上的第一个分块继续分配。然后,光栅扫描向右移动穿过第三行。该顺序一直持续到到达最后一个分块623b。此时,分块组621完成。分块组621下方和/或右侧的其它分块623可以以类似的方式按光栅扫描顺序分配给分块组625。分块组621上方和/或左侧的分块623以类似的方式分配给分块组624。
[0099]
图7为分割成矩形分块组721的示例性图像700的示意图。例如,图像700可以由编解码系统200、编码器300和/或解码器400等编码到码流500中以及从码流500中解码。此外,可以对图像700进行分割,以支持方法100提供的编码和解码。
[0100]
图像700包括分配给矩形分块组721的分块723,该分块723和分块组721可以分别实质上类似于分块523和分块组521。分配给矩形分块组721的分块723在图7中通过粗体轮廓包围。此外,对所选择的矩形分块组721施加阴影以在矩形分块组721之间清楚地描绘。如图所示,矩形分块组721包括构成矩形的分块723集。需要说明的是,矩形分块组721也可以是正方形,因为正方形是矩形的特殊情况。如图所示,矩形有四个边,其中,每个边通过直角(例如,90度角)连接到另外两个边。矩形分块组721a包括第一个分块723a和最后一个分块723b。第一个分块723a位于矩形分块组721a的左上顶点,最后一个分块位于矩形分块组721a的右下顶点。包括在包括第一个分块723a和最后一个分块723b的行和列中或行与列之间的分块723也被逐个分块分配给矩形分块组721a。如图所示,该方案不同于光栅扫描。例如,分块723c按光栅扫描顺序位于第一个分块723a与最后一个分块723b之间,但不包括在同一矩形分块组721a中。由于所涉及的几何形状,矩形分块组721在计算上可能比光栅扫描分块组621更复杂。然而,矩形分块组721更灵活。例如,矩形分块组721a可以包括来自不同行的分块723,而不是包括第一个分块723与图像700的右侧边界之间的每个分块(例如,分块723c)。矩形分块组721a还可以排除左侧图像边界与最后一个分块723b之间的选择分块。例如,分块723d被排除在分块组721a之外。
[0101]
因此,矩形分块组721和光栅扫描分块组621各自具有不同的优势,因此各自在不同的使用情形下可能是最优的。例如,当要显示整个图像600时,光栅扫描分块组621可能更有益,当仅显示子图像时,矩形分块组721可能更有益。然而,如上所述,当码流中仅指示第一个分块索引和最后一个分块索引时,可以使用不同的机制来确定哪些分块被分配给分块组。因此,解码器或hrd可以使用指示所使用的分块组类型的标志来选择适当的光栅扫描或矩形机制。然后,可以通过使用分块组中的第一个分块和最后一个分块来确定分块组的分块分配。
[0102]
采用上述方法,可以改进视频译码系统。因此,本发明描述了视频译码中对分块分组的各种改进。更具体地,本发明描述了支持两种不同的分块组概念、基于光栅扫描的分块组和矩形分块组的指示和推导过程。在一个示例中,在由对应的分块组直接或间接参考的参数集中使用标志。该标志指定使用的分块组方法。该标志可以在参数集中指示,如序列参
数集、图像参数集或由分块组直接或间接参考的其它类型的参数集。作为一个具体的示例,该标志可以是rectangular_tile_group_flag。在一些示例中,可以定义具有两个或更多个位的表示并在由对应的分块组直接或间接参考的参数集中指示。该表示可以指定使用的分块组方法。使用这种表示,可以支持两种或更多种分块组方法。用于指示该表示的位数取决于要支持的分块组方法的数量。在一些示例中,标志或表示可以在分块组头中指示。
[0103]
表示包括在分块组中的第一个分块和最后一个分块的指示信息足以表示哪些分块包括在光栅扫描分块组或矩形分块组中。包括在分块组中的分块的推导可能取决于所使用的分块组方法(可由标志或表示来表示)、分块组中第一个分块的信息以及分块组中最后一个分块的信息。用于识别特定分块的信息可以是以下各项中的任何一项:分块索引、分块id(如果与分块索引不同)、分块中包括的ctu(例如,分块中包括的第一个ctu)、或分块中包括的亮度样本(例如,分块中包括的第一个亮度样本)。
[0104]
以下是上述机制的具体实施例。图像参数集rbsp语法可以如下。
[0105][0106][0107]
tile_id_len_minus1+1表示用于表示pps中的语法元素tile_id_val[i][j](当存在时)以及参考pps的分块组头中的语法元素first_tile_id和last_tile_id的位数。tile_id_len_minus1的取值范围可以为ceil(log2(numtilesinpic)到15(包括端值)。rectangular_tile_group_flag设置为1时,可以表示参考pps的分块组包括形成图像矩形区域的一个或多个分块。rectangular_tile_group_flag设置为0时,可以表示参考pps的分块组包括按图像光栅扫描顺序连续的一个或多个分块。
[0108]
分块组头语法可以如下所示。
[0109][0110]
single_tile_in_tile_group_flag设置为1时,可以表示分块组中只有一个分块。single_tile_in_tile_group_flag设置为0时,可以表示分块组中有一个以上分块。first_tile_id可以表示分块组的第一个分块的分块id。first_tile_id的长度可以是tile_id_len_minus1+1个位。first_tile_id的值可以不等于同一编码图像的任何其它编码分块组的first_tile_id的值。当图像中有一个以上分块组时,图像中分块组的解码顺序可以以first_tile_id的递增值为准。last_tile_id可以表示分块组的最后一个分块的分块id。last_tile_id的长度可以是tile_id_len_minus1+1个位。如果last_tile_id不存在,则推断last_tile_id的值可以等于first_tile_id。
[0111]
变量numtilesintilegroup表示分块组中的分块数量,tgtileidx[i]表示分块组中第i个分块的分块索引,它们可以如下推导:
[0112][0113]
通用分块组数据语法可以如下所示。
[0114][0115]
图8为示例性视频译码设备800的示意图。视频译码设备800适合于实现本文描述的公开示例/实施例。视频译码设备800包括下行端口820、上行端口850,和/或收发单元(tx/rx)810,其中,所述收发单元包括用于通过网络在上游和/或下游进行数据通信的发送器和/或接收器。视频译码设备800还包括:处理器830,包括用于处理数据的逻辑单元和/或中央处理单元(central processing unit,cpu);和用于存储数据的存储器832。视频译码设备800还可以包括与上行端口850和/或下行端口820耦合的电组件、光电(optical-to-electrical,oe)组件、电光(electrical-to-optical,eo)组件,和/或无线通信组件,用于通过电通信网络、光通信网络或无线通信网络进行数据通信。视频译码设备800还可以包括输入和/或输出(input/output,i/o)设备860,用于与用户进行数据通信。i/o设备860可以包括输出设备,例如显示视频数据的显示器、输出音频数据的扬声器等。i/o设备860还可以包括键盘、鼠标、轨迹球等输入设备和/或与上述输出设备进行交互的对应接口。
[0116]
处理器830通过硬件和软件实现。处理器830可以实现为一个或多个cpu芯片、核(例如,多核处理器)、现场可编程门阵列(field-programmable gate array,fpga)、专用集成电路(application specific integrated circuit,asic)和数字信号处理器(digital signal processor,dsp)。处理器830与下行端口820、tx/rx 810、上行端口850和存储器832通信。处理器830包括译码模块814。译码模块814实现本文描述的公开实施例,例如方法100、方法900和/或方法1000,它们可以采用码流500、图像600和/或图像700。译码模块814还可以实现本文描述的任何其它方法/机制。此外,译码模块814可以实现编解码系统200、编码器300和/或解码器400。例如,译码模块814可以将图像分割成分块组和/或分块,将分块分割成ctu,将ctu分割成块,并在充当编码器时对块进行编码。此外,译码模块814可以选择光栅扫描或矩形分块组,并在码流中指示这种选择。译码模块814还可以指示第一个分块和最后一个分块,以便确定分块组的分块分配。当充当解码器或hrd时,译码模块814可以确定所使用的分块组类型,并根据第一个分块和最后一个分块确定分配给分块组的分块。因此,译码模块814使视频译码设备800在分割和译码视频数据时提供其它功能和/或提高译码效率。因此,译码模块814改进了视频译码设备800的功能,并解决了视频译码领域特有的
问题。此外,译码模块814可以使视频译码设备800变换到不同的状态。或者,译码模块814可以实现为存储在存储器832中并由处理器830执行的指令(例如,存储在非瞬时性介质中的计算机程序产品)。
[0117]
存储器832包括一种或多种存储器类型,例如磁盘、磁带机、固态硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、闪存、三态内容寻址存储器(ternary content-addressable memory,tcam)、静态随机存取存储器(static random-access memory,sram)等。存储器832可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。
[0118]
图9是将图像(如图像600和/或700)编码到码流(如码流500)中的示例性方法900的流程图。方法900可以由编解码系统200、编码器300和/或视频译码设备800等编码器在执行方法100时执行。
[0119]
方法900可以开始于:编码器接收包括多个图像的视频序列,并根据用户输入等确定将所述视频序列编码到码流中。所述视频序列在编码之前被分割成图像(picture/image)/帧以进行进一步分割。在步骤901中,将图像分割成多个分块。将分块分配到多个分块组中,并因此将分块的子集分配给分块组。分块组可以是光栅扫描分块组或矩形分块组。
[0120]
在步骤903中,方法900确定分块组是光栅扫描分块组或矩形分块组。然后,可以根据分块组是光栅扫描分块组或矩形分块组,针对分块组确定分块组中的分块子集。具体地,当分块组是光栅扫描分块组时,可以根据步骤905确定分块组中的分块子集。此外,当分块组是矩形分块组时,可以根据步骤907确定分块组中的分块子集。
[0121]
在步骤905中,当分块组是光栅扫描分块组时,如下确定分块组中的分块子集。确定分块组的第一个分块与分块组的最后一个分块之间的分块数量,作为分块组中的分块数量。此外,根据分块组中的分块数量确定分块组中的分块子集。
[0122]
在步骤907中,当分块组是矩形分块组时,如下确定分块组中的分块子集。可以确定分块组的第一个分块与分块组的最后一个分块之间的增量值。还可以根据增量值和图像中的分块列数量,确定分块组行数量。在一些示例中,分块组行数量通过将增量值除以图像中的分块列数量加一来确定。此外,还可以根据增量值和图像中的分块列数量,确定分块组列数量。在一些示例中,分块组列数量确定为增量值对图像中的分块列数量取模加一。然后,可以根据分块组行数量和分块组列数量确定分块组中的分块子集。
[0123]
作为一个具体示例,步骤905和907可以通过以下指令集应用:
[0124][0125]
在步骤909中,根据分块组将分块编码到码流中。此外,将码流存储在存储器中,以传送给解码器。在一些示例中,还可以将分块组的第一个分块的标识符和分块组的最后一个分块的标识符编码到码流中,以指示分配给分块组的分块。例如,分块组的第一个分块的标识符和分块组的最后一个分块的标识符可以编码到码流中的分块组头中。
[0126]
图10是从码流(如码流500)解码图像(如图像600和/或700)的示例性方法1000的流程图。方法1000可以由编解码系统200、解码器400和/或视频译码设备800等解码器在执行方法100时执行。例如,可以响应于方法900而采用方法1000。
[0127]
方法1000可以开始于:解码器开始接收表示视频序列的编码数据的码流(例如作为方法900的结果)。在步骤1001中,接收码流。码流包括分割成多个分块的图像。将分块分配到多个分块组中,并因此将分块的子集分配给分块组。
[0128]
在步骤1003中,方法1000确定分块组是光栅扫描分块组或矩形分块组。然后,可以根据分块组是光栅扫描分块组或矩形分块组,针对分块组确定分块组中的分块子集。具体地,当分块组是光栅扫描分块组时,可以根据步骤1005确定分块组中的分块子集。此外,当分块组是矩形分块组时,可以根据步骤1007确定分块组中的分块子集。在一些示例中,可以从码流获得分块组的第一个分块的标识符和分块组的最后一个分块的标识符,以便确定分块组中的分块子集。例如,分块组的第一个分块的标识符和分块组的最后一个分块的标识符可以从码流中的分块组头中获取。
[0129]
在步骤1005中,当分块组是光栅扫描分块组时,如下确定分块组中的分块子集。确定分块组的第一个分块与分块组的最后一个分块之间的分块数量,作为分块组中的分块数量。此外,根据分块组中的分块数量确定分块组中的分块子集。
[0130]
在步骤1007中,当分块组是矩形分块组时,如下确定分块组中的分块子集。可以确定分块组的第一个分块与分块组的最后一个分块之间的增量值。还可以根据增量值和图像中的分块列数量,确定分块组行数量。在一些示例中,分块组行数量通过将增量值除以图像
中的分块列数量加一来确定。此外,还可以根据增量值和图像中的分块列数量,确定分块组列数量。在一些示例中,分块组列数量确定为增量值对图像中的分块列数量取模加一。然后,可以根据分块组行数量和分块组列数量确定分块组中的分块子集。
[0131]
作为一个具体示例,步骤1005和1007可以通过以下指令集应用:
[0132][0133]
在步骤1009中,根据分块组对分块进行解码以生成解码分块。此外,根据解码分块生成用于显示的重建视频序列。
[0134]
图11是在码流(如码流500)中译码图像(如图像600和/或700)的视频序列的示例性方法1100的流程图。系统1100可以由编解码系统200、编码器300、解码器400和/或视频译码设备800等编码器和解码器实现。此外,系统1100可以用于实现方法100、方法900和/或方法1000。
[0135]
系统1100包括视频编码器1102。视频编码器1102包括分割模块1101,用于将图像分割成多个分块。视频编码器1102还包括包括模块1103,用于将多个分块包括到分块组中。视频编码器1102还包括确定模块1105,用于确定分块组是光栅扫描分块组或矩形分块组,并根据分块组是光栅扫描分块组或矩形分块组,确定分块组中的分块数量。视频编码器1102还包括编码模块1108,用于根据分块组中的分块数量将分块编码到码流中。视频编码器1102还包括存储模块1107,用于存储传送给解码器的码流。视频编码器1102还包括发送模块1109,用于发送码流以便确定所使用的一个或多个分块组的类型和包括在一个或多个分块组中的分块。视频编码器1102还可以用于执行方法900的任一步骤。
[0136]
系统1100还包括视频解码器1110。视频解码器1110包括接收模块1111,用于接收包括分割成多个分块的图像的码流,其中,若干分块包括在一个分块组中。视频解码器1110还包括确定模块1113,用于确定分块组是光栅扫描分块组或矩形分块组,并根据分块组是光栅扫描分块组或矩形分块组,确定分块组中的分块数量。视频解码器1110还包括解码模块1115,用于根据分块组中的分块数量对分块进行解码,以生成解码分块。视频解码器1110
还包括生成模块1117,用于根据解码分块生成用于显示的重建视频序列。视频解码器1110还可以用于执行方法1000的任一步骤。
[0137]
当第一组件与第二组件之间除了线、迹线或其它介质之外不存在中间组件时,第一组件与第二组件直接耦合。当第一组件与第二组件之间除了线、迹线或其它介质之外还存在中间组件时,第一组件与第二组件间接耦合。术语“耦合”及其变型包括直接耦合和间接耦合。除非另有说明,否则使用术语“约”意指包括后续数字
±
10%的范围。
[0138]
还应理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应理解为仅仅是示例性的。同样地,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或组合。
[0139]
虽然本发明提供了若干个实施例,但应该理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明示例应被视为说明性而非限制性的,且本发明并不限于本文所给出的细节。例如,可以在另一系统中结合或集成各种元件或组件,或者可以省略或不实现某些特征。
[0140]
此外,在不脱离本发明范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法进行组合或集成。变化、替换和变更的其它实例可由本领域技术人员确定,并可在不脱离本文公开的精神和范围的情况下举例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1