使用图块上进行的循环以信号传送的图片图块属性的制作方法

文档序号:25038735发布日期:2021-05-11 17:12阅读:148来源:国知局
使用图块上进行的循环以信号传送的图片图块属性的制作方法

本公开一般性地涉及视频编码和解码技术,并且更具体地,涉及通过在图像中的一些或全部图块上进行循环来对每图块的参数属性进行编码和解码。



背景技术:

高效率视频编码(hevc)是由itu-t和运动图片专家组(mpeg)二者标准化的基于块的视频编解码,利用空间预测技术和时间预测技术二者。空间预测减少了空间冗余,并且使用来自当前图片的同一帧内的帧内(i)预测来实现。时间预测减少了时间冗余,并且使用先前解码的参考图片,在块级别上使用帧间(p)或双向帧间(b)预测来实现。然而,无论特定类型的预测技术如何,得到的原始像素数据和经预测的像素数据之间的差异(被称为“残差”)被变换到频域并被量化。对经变换的残差进行量化,其水平由量化参数(qp)确定,有助于控制比特率和视频质量之间的折衷。

然后,经变换和量化的残差在被发送到解码器之前,与必要的预测参数一起被熵编码。也被熵编码的预测参数包括预测模式和运动矢量。接收到后,解码器执行熵解码、逆量化和逆变换以获得残差。然后,解码器使用帧内预测或帧间预测技术从残差重构图像。

mpeg和itu-t都正在联合视频探索组(jvet)内研究hevc的后继者。该视频编解码的名称为“多功能视频编码(vvc)”。



技术实现要素:

本公开的实施例使用图块上进行的循环,以信号传送图片的每图块属性值。图块属性可以例如以图块语法元素集合(每图块属性一个语法元素)的形式,或者例如以标志集合的形式以启用或禁用图块属性的使用。这些实施例为编码器针对图片中的每图块或任何图块子集指派图块属性值提供了自由,并且使用图块上进行的(一个或多个)循环通过紧凑语法以信号传送属性值。

一个实施例涉及一种对图片进行编码的方法。图片被分为多个图块。一个或多个图块属性与一个或多个图块相关联。每个图块属性包括指示图块属性的适用性的语法元素或标志。一个或多个图块属性被指派给图块或图块子集。在比特流中以信号传送图片和图块属性,使用图块上进行的一个或多个循环以信号传送所述图块属性。

另一实施例涉及一种对图片进行解码的方法。接收比特流,所述比特流包括被分为多个图块的图片、以及与一个或多个图块相关联的一个或多个图块属性。每个图块属性包括指示图块属性的适用性的语法元素或标志。使用图块上进行的一个或多个循环将所述图块属性应用于图块。

附图说明

图1示出了使用qtbt将ctu划分为cu的示例。

图2示出了示例图块划分。

图3a至图3b示出了具有高分辨图块和低分辨率图块的示例图块化结构。

图4示出了在hevc中不支持的图块结构的示例。

图5示出了帧封装的两个示例(水平和垂直的)。

图6示出了根据本公开的一个实施例将示例比特流解码为解码图片。

图7是对图片进行编码的方法的流程图。

具体实施方式

四叉树和二叉树(otbt)结构

如前所述,hevc是由itu-t和mpeg标准化的基于块的视频编解码,利用时间预测和空间预测二者。hevc使用块结构,其中通过四叉树(qt)结构来划分每个顶层编码块,即,编码块划分中的最大块,本文中被称为编码树单元(ctu)。该划分产生编码块分区,本文中被称为编码单元(cu)。然后,可以利用四叉树结构将cu进一步递归地划分为较小的大小相等的cu,直到8×8的块大小。

vvc的当前版本中的块结构与hevc中的块结构不同。具体地,vvc中的块结构被称为四叉树加二叉树加三叉树块结构(qtbt+tt)。qtbt+tt中的cu可以具有正方形或矩形形状。与hevc中一样,首先通过四叉树结构对编码树单元(ctu)进行划分。然后,以二叉树结构在垂直或水平方向上用大小相等的分区进一步划分,以形成编码块(也被称为cu)。因此,块可以具有正方形或矩形形状。

编码器可以在比特流中设置四叉树和二叉树的深度。图1示出了使用qtbt+tt分割ctu的示例。tt允许将cu分为三个分区,而不是大小相等的两个分区。这增加了使用更适合图片中的内容结构的块结构的可能性。

上下文自适应二进制算术编码(cabac)

上下文自适应二进制算术编码(cabac)是hevc和vvc中使用的熵编码工具。cabac被配置为对二进制符号进行编码,其保持复杂度较低,并且允许对符号的更频繁使用的比特的概率进行建模。由于编码模式通常在局部具有强相关性,因此基于局部上下文来自适应地选择概率模型。

hevc中片的概念将图片分为独立编码的片,其中以ctu为单位按照光栅扫描顺序来读取每个片。可以将不同的编码类型用于相同图片的片。例如,片可以是i片、p片或b片。然而,片的主要目的是在丢失数据的情况下实现重新同步。

图块

hevc视频编码标准还包括被称为“图块”的工具,其将图片分为矩形的空间上独立的区域。使用图块,可以将hevc中的图片划分为多行样本和多列样本,其中任意给定图块位于给定行和给定列的交点处。图2示出了使用四(4)行图块和五(5)列图块的图块划分的示例,导致图片总共二十(20)个图块。如图2所示,hevc中的图块始终与ctu边界对齐。

通过指定行的厚度和列的宽度,在图片参数集合(pps)中以信号传送图块结构。各个行和列可以具有不同的大小,但是划分始终跨整个图片,分别从左到右以及从上到下。

表1列出了在hevc中用于指定图块结构的pps语法。如表1所示,标志(即,tiles_enabled_flag)指示是否使用了图块。如果tiles_enabled_flag被设置,则指定图块列数(即,num_tile_columns_minus1)和图块行数(即,num_tile_rows_minus1)。uniform_spacing_flag是指定是显式地以信号传送列宽度和行高度、还是应使用将图块边界均等地间隔开的预定方法的标志。如果指示显式的以信号传送,则一一以信号传送列宽度,随后是行高度。以ctu为单位以信号传送列宽度和行高度信息。最后,标志loop_filter_across_tiles_enabled_flag指定是否为图片中的所有图块边界打开或关闭跨图块边界的环路滤波器。

表1-hevc中的图块语法

与片类似,相同图片的图块之间没有解码依赖性。这包括帧内预测、上下文选择和运动矢量预测。然而,一个例外是,在图块之间一般允许环路滤波依赖性。然而,可以通过适当地设置loop_filter_across_tiles_enabled_flag来禁用这些依赖性。

与片相反,图块不需要那么多的头数据。每个图块的头开销包括比特流偏移的信号传送,这些比特流偏移存在于片头中,并指示图片中所有图块的起始点。解码器对起始点进行解码,以实现将编码图片分为编码图块,以便分发它们进行并行解码。在hevc中,当启用图块时,在片头中包含比特流偏移是强制性的。然而,hevc中限制了图块和片的组合。具体地,图块中的所有ctu属于相同的片,或者所有ctu属于相同的图块。

比特流偏移还可以允许提取图块并拼接图块,以将图块重新构成为输出流。这需要一些编码器侧约束,以使图块在时间上独立。一个约束限制了运动矢量,使得对图块的运动补偿仅使用包括在先前图片的空间共位图块中的样本。另一个约束限制了时间运动矢量预测(tmvp),使得该过程在时间上独立地进行。为了完全独立,必须经由先前描述的loop_filter_across_tiles_enabled_flag来禁用对图块之间的边界的去块化操作、以及时间之间的样本自适应偏移(sao)滤波操作。然而,禁用去块化可能在图块之间引入可见的线。因此,一些实现禁用去块化,而其他实现不禁用。运动约束图块集合(mcts)是hevc中用于以信号传送针对时间独立图块集合的编码侧约束的特征。mcts中的图块集合覆盖图片的一个或多个图块。

有时将图块用于打算使用头戴式显示(hmd)设备来消费的360度视频。在使用当今的hmd设备时的视场被限制在整个球面的20%左右。这意味着整个360度视频中仅20%被用户消费。通常,对于hmd设备来说整个360度视频球面都是可获得的,该hmd设备然后裁剪出要为用户渲染的部分。该部分(即,用户看到的球面部分)被称为视口。众所周知的资源的优化是使hmd设备视频系统知道用户的头部移动和正在看的方向,使得花费较少的资源来处理没有渲染给用户的视频样本。资源可以是例如从服务器到客户端的带宽或设备的解码能力。对于未来的hmd设备,其视场将比当前可能的视场更大,非均匀资源分配仍将是有益的。具体地,人类视觉系统在中央视觉面积(大约18°水平视图)中要求较高的图像质量,而对周围区域(对于舒适的水平视图,大约为120°或更大)中的图像质量的要求较低。因此,通过与周围区域相比在中央视觉面积中分配更多的资源,非均匀资源分配将有助于满足人类视觉系统的需求。

优化感兴趣区域(roi)的资源是针对图块的另一用例。roi可以在内容中指定,或通过诸如眼动追踪之类的方法来提取。使用头部移动来减少所需资源的一种方法是使用图块。该方法首先使用图块多次对视频序列进行编码。图块分区结构在所有编码中是相同的;然而,视频序列以不同的视频质量进行编码。这为视频序列产生了至少一个高质量的编码,并且为视频序列产生了一个低质量的编码。这意味着对于特定时间点的每个图块,存在至少一个高质量的图块表示和至少一个低质量的图块表示。高质量图块与低质量图块之间的差异可以是:以比低质量图块高的比特率对高质量图块进行编码,或者高质量图块的分辨率比低质量图块的高。

图3a至图3b示出了具有比低质量图块的分辨率高的分辨率的高质量图块的示例。具体地,图3a示出了刚由解码器解码的图片。在该上下文中,显示来自解码器的输出的图片(即,经解码的图片)是在压缩域中显示的图片。在该示例中,压缩域中的所有8个图块a-h具有相等的空间大小。然后,在图片被解码之后但是在图片被渲染之前,图块a-h被缩放并在空间上被布置。已经准备用于渲染(即,缩放和重新布置之后)的图片是要在输出域中显示的图片。在图3b中看到的输出域示出了在渲染或呈现给用户时的图片。

如图3a至图3b所示,图块b、d、f和h是高质量图块,因为它们在输出域中具有更高的分辨率。然而,图块a、c、e和g是低分辨率图块,因为缩放步骤降低了实际分辨率。

除了说明图块如何具有不同的分辨率外,图3a至图3b还说明了压缩域(图3a)中的图块不需要按照与它们在输出域(图3b)中排序相同的方式进行空间排序。考虑到图块在空间和时间上都是独立的,图块在压缩域中的空间放置不是至关重要的。

在hevc中启用图块时,有多种因素会增加比特成本。首先,禁用跨图块的预测,这意味着不跨图块来预测运动矢量和帧内模式。图块的使用也禁用量化参数(qp)预测和上下文选择。其次,针对每个图块初始化cabac,这意味着cabac适应性受到妨碍。第三,必须针对每个图块以信号传送比特流偏移。第四,需要在pps中指定图块划分结构。最后,在每个图块之后刷新cabac,并且编码数据必须按字节对齐。

图块很有用;然而,一些考虑需要解决。例如,在hevc的当前形式中,hevc限制图块以确保它们跨整个图片。然而,这限制了图块的灵活性。例如,图4示出了不受hevc当前实现支持的图块结构的示例。

在jvet-k0260中,提出了灵活图块的概念。在该提案中,可以以比(如hevc中)仅限定图块行数和图块列数更灵活的方式将图片分为图块。jvet-k0260提出了下面表2中列出的图块语法来表达灵活图块。

表2-来自jvet-k0260的灵活图块语法

其中,

number_of_tiles_in_picture_minus2指定图片中的图块数量;

subtile_width_minus1指定以编码树单元为单位的子图块单元的宽度;

subtile_height_minus1指定以编码树单元为单位的子图块单元的高度;

use_previous_tile_size_flag等于1指定当前图块的大小等于先前图块的大小。use_previous_tile_size_flag等于0指定当前图块的大小不等于先前图块的大小。当不存在时,推断use_previous_tile_size_flag的值等于0;

tile_width_minus1[i]加1指定以子图块单元为单位的第i个图块的宽度;以及

tile_height_minus1[i]加1指定以子图块单元为单位的第i个图块的高度。

立体视频和纹理加深度

立体视频是本领域中已知的。在立体视频中,每只眼睛接收单独的视图,其中第二视图的视点与第一视图相比略微偏移。通常使用并排封装或上下封装将立体视频封装到一帧中,如图5所描绘的。立体视频的一个缺点是,如果用户正在移动,则沉浸式体验降低,因为立体视频的视点是固定的。

为了能够至少部分地环顾对象周围,即,略微偏移视口,可以使用纹理和深度信息的组合,其中可以根据纹理和深度信息合成其他视图。纹理加深度(有时被称为2d加深度)通常也以并排、上下或一些其他方式被帧封装在一个图片内。

mpeg当前正在致力于针对沉浸式视频的一些活动,这些活动将发布在mpeg-i标准集合中。一个活动是大约3个自由度(3dof),也被称为360°视频,其中用户可以使用头戴式显示器(hmd)沿着球面的所有方向观看。至于立体视频,视点是固定的。

现有技术的不足

hevc使用图块工具将图片分为独立的区域。图块边界打破了解析和空间预测依赖性,使得可以独立于其他图块对图块进行处理。然而,在hevc中,图块的几何形状和属性的定义并不彼此独立。qp定义属性。在hevc中,图块的几何形状受到以行和列形式给出的图块网格的约束,并且图块属性不是针对每个图块定义、而是针对图片中的所有图块或片中的所有图块定义。这种图块属性的一个示例是delta-qp或mcts,delta-qp针对片中的所有图块设置,mcts针对图片中的图块集合设置。在hevc中,通过片头中的delta-qp(slice_qp_delta)码字设置每个图块的初始qp。hevc规范指定要用于每个图块的初始qp值(图块qp)被设置为26+init_qp_minus26+slice_qp_delta,其中init_qp_minus26是pps中的码字。因此,片中的所有图块共享相同的初始qp值,并且在hevc中,针对属于同一片的图块,不可能具有不同的初始qp值。图块属性的其他示例是hevc中的任意片头语法元素。

灵活图块概念从图块中移除了行和列约束,并允许更灵活的图片划分,实现在没有重叠的情况下将图片划分为矩形图块。然而,图块属性仍然受到约束,因为它们不是针对每个图块定义的,而是在图片参数集合(pps)级别或片级别中针对图片或片中的所有图块定义的。针对每个图块传递不同属性值的一种方式是每个图块使用一个片。然而,这将增加比特成本,并且可能不适用于如图4所示的灵活图块结构。该解决方案也不操作于在图片级别定义的图块属性。

一些实施例的特征

本公开的实施例通过提供用于使用紧凑语法以信号传送每图块的图块属性值的手段来解决这些问题。这些实施例使用图块上进行的循环以信号传送每图块的属性值。图块属性可以例如以图块语法元素集合(每图块属性一个语法元素)的形式,或者例如以标志集合的形式以启用或禁用图块属性的使用。这些实施例为编码器针对图片中的每图块或任何图块子集指派图块属性值提供了自由,并且使用图块上进行的(一个或多个)循环通过紧凑语法以信号传送属性值。

本公开的实施例支持的图块属性可以例如包括但不限于:delta_qp、去块化强度和图块边界处理标志(例如,用于mcts和环路滤波)。

在一个实施例中,定义图块属性集合,其中每个集合具有特定的set_id。在图片参数集合(pps)、片头、图片头、图块组头、或图块头中的图块上进行的循环以信号传送每个图块的适合的set_id。

在一个实施例中,显式地以信号传送每个图块属性集合中的图块属性的数量。

在一个实施例中,图块属性值在pps中给出,并且图块上进行的循环被置于图块或片头中。

在一个实施例中,不在参数集合中以信号传送图块属性,而是直接在片段头中以信号传送该属性。

在一个实施例中,以信号传送初始图块属性集合,随后是每个图块的用于启用或禁用qp的标志集合。如果禁用qp,则作为后备方案,将初始图块属性集合中的每个图块属性用于当前图块。

在一个实施例中,以信号传送初始图块属性集合,随后传送每个图块的复制标志集合,其中针对特定图块,每个标志指定图块属性值应从该图块属性列表复制、还是显式地以信号传送。

在一个实施例中,针对每个图块以信号传送delta_qp,并且将最终的初始图块或块qp计算为来自序列参数集合或图片参数集和的解码器参考qp值加上图块delta_qp再加上可选的针对块以信号传送的delta_qp之和。

一般说明

本公开的实施例通过在pps、图片头、片头或图块头的级别上在图块上进行循环,引入了以紧凑方式以信号传送每图块的属性值的概念。图块属性也可以称为图块性质或图块参数。

根据实施例的要针对每图块定义的图块属性的一个示例是delta_qp。可以将delta_qp值定义为参考的量化参数(qp)值与图块的量化参数值之间的差。参考qp值可以是针对参数集合、图片、片等以信号传送的qp值。图块的qp值可以是图块的初始qp值,例如用于图块中的第一块的qp值,或者用于预测图块中的第一块的qp值的qp值。

也可以将delta_qp值定义为先前图块与当前图块的qp值之差。在一个示例中,如果图片中定义的图块区域具有纹理内容,并且图片中的另一图块区域具有深度内容,则针对每图块定义delta_qp可能是有益的,因为不同的图块可能想要使用不同的qp值。可以使用高qp值对一个图块进行编码,并且可以使用低qp值对一个图块进行编码。

去块化参数是图块属性的其他示例。在hevc中,去块化滤波器的强度可以由编码器在图片和片基础上进行调整。根据本公开的实施例,诸如去块化强度的去块化参数可以针对每图块提供,因此可以适配于每个图块的内容。

在hevc中,与片边界类似,图块边界确实破坏解析和空间预测依赖性,使得可以独立处理图块,但是环路滤波器(去块化和sao)仍然可以跨图块边界,以便可选地防止图块边界伪像。该功能由pps中的loop_filter_across_tiles_enabled_flag语法元素控制。针对每图块设置该功能是根据本文公开的实施例的每图块设置的图块属性的另一示例。在实施例中,在图片中的片中的一些图块在它们的内容上是独立的、而一些其他图块是相关的情况下,可以针对每图块设置loop_filter_across_tiles_enabled_flag,这意味着针对具有独立内容的图块禁用该标志,而针对具有相关内容的图块启用该标志。

如针对hevc中的运动约束图块集合(mcts)定义的运动约束是根据本文公开的实施例可以针对每图块定义的图块属性的其他示例。设置为等于1的mcts禁止跨图块边界使用运动矢量。在hevc中,mcts在pps级别设置,并应用于图片中的所有图块。作为根据实施例的图块属性之一,运动约束的每图块定义允许跨一些图块边界的运动预测,并且禁止跨其他图块边界的运动预测,这在混合了相关和独立的图块内容的应用中可能是有用的。另一个可能的图块属性是以信号传送图块属于哪个mcts。

当然,图块属性不限于上述示例。

在以下公开的所有实施例中,假设用于图片中图块数量的参数由图块结构给出。例如,在hevc中,图块数量由(num_tile_columns_minus1+1)×(num_tile_rows_minus1+1)给出。在表2给出的灵活图块语法中,该参数由number_of_tiles_in_picture_minus2+2给出。

实施例1-图块属性集合id

在一个实施例中,在pps中使用图块上进行的循环,针对每图块以信号传送图块属性值。在pps中定义了至少一个图块属性集合,其中每个集合包含与图块属性有关的至少一个语法元素。在pps的另一部分中,在图块上进行的循环中,以信号传送要用于每个图块的图块属性集合的索引。

以下示例编码器步骤可以应用于图块属性的构造和信号传送:

1.如果所有图块具有相同的属性值,则使用一个set_id创建一个属性集合;如果图片中存在至少两个具有不同图块属性值的图块,则创建至少两个图块属性集合,并向至少两个图块属性集合中的每一个指派唯一的set_id。

2.针对图片中的每个图块,将tile_attribute_set_id值设置为相关图块属性集合的set_id值。

3.在比特流中以信号传送以下内容:图块属性集合的数量、每个图块属性集合中的每个图块属性的值、以及每个图块的tile_attribute_set_id。

以下示例解码器步骤可以应用于从当前实施例的比特流中提取图块属性值,并在解码期间使用它们:

1.解析图块属性集合的数量。

2.针对每个图块属性集合,解析该集合中的图块属性,存储值(a)并将值(a)指派给集合id。

3.针对图片中的图块(t),解析tile_attribute_set_id码字,并使用tile_attribute_set_id的值(b)来识别图块属性集合。

4.使用存储并指派给与值(b)相对应的集合id的值(a),对所述图块(t)进行解码。

表3中提供了在hevc视频编码规范之上的实施例1的示例语法表和语义描述。

表3-图块属性集合id

其中,

number_of_tile_attribute_sets_minus1加1指定pps中的属性集合的数量;

tile_attribute[i]指定第i个图块属性集合中的图块属性的值;以及

tile_attribute_set_id[i]指定要用于第i个图块的图块属性集合的图块属性集合id。tile_attribute_set_id[i]的值应在0到number_of_tile_attribute_sets_minus1之间。

在以上语法示例中,在图块属性集合中仅有一个图块属性使用uvlc以信号传送。在一般情况下,每个图块属性集合中可以存在多于一个图块属性,并且可以使用uvlc、固定长度码或标志以信号传送每个图块属性。如果图块属性集合中存在多于一个图块属性,则可以使用码字将集合中的图块属性的数量以信号传送给解码器。

实施例2-以信号传送属性的数量

在第二实施例中,每个集合中的属性的数量可以不同。在这种情况下,可以将每个属性集合中的图块属性的数量与属性值一起以信号传送给解码器。针对图块属性的循环可以被置于pps中或片头中或图片头中或图块头中。在解码器侧,对图块属性集合的数量、每个集合中的属性的数量、和每个集合中的属性进行解码。最后,对tile_attribute_set_id进行解码,以设置每个图块的适合属性值。

在表4中给出了在hevc视频编码规范之上的该实施例的示例语法表和语义描述。

表4-以信号传送属性的数量

其中,

number_of_tile_attribute_sets_minus1加1指定针对图块的属性集合的数量;

number_of_tile_attributes_in_set_minus1加1指定每个图块属性集合中的属性的数量

tile_attribute[i,j]指定第i个图块属性集合中的第j个图块属性的值;以及

tile_attribute_set_id[i]指定要用于第i个图块的图块属性集合的图块属性集合id。tile_attribute_set_id[i]应在0到number_of_tile_attribute_sets_minus1之间。

实施例3-pps中的属性值和片段头中的循环

在第三实施例中,将图块上进行的循环置于图片头、图块头或片头中。在图块上进行的循环置于图块头的情况下,后续图块的图块头可以是可选的。定义了至少一个图块属性集合,其中每个集合包含与图块属性有关的至少一个语法元素。在图块或片头中,图块上进行的循环以信号传送要用于每个图块的图块属性集合的索引。

如果每个图块具有图块头且图块上进行的循环被置于图块头中,则图块上进行的循环仅在与图块头相关联的当前图块上循环,即,仅进入循环一次。

以下示例解码器步骤的子集可用于该实施例:

1.解码器根据比特流中的一个或多个码字来确定图块属性集合的数量(n),其中n>1。

2.针对每个图块属性集合,解码器根据比特流中的码字来确定图块属性值的数量(m),其中m>0,且属性值的总数等于n×m。

3.解码器为每个图块属性集合指派唯一的集合id值(v)。可选地,解码顺序中的第一属性集合的集合id值(v)为0,解码顺序中的第二属性集合的集合id值(v)为1,依此类推。

4.解码器对片段头进行解码,并根据参数集合中的码字或片段头中的码字来确定片段中的图块数量。

5.针对片段中的每个图块(t),解码器根据片段头中的码字来确定图块集合id(i),并将集合id(i)值存储在列表l中。

6.解码器对片段的特定图块(p)进行解码,并确定图块p的图块编号。

7.解码器使用图块编号作为列表l中的索引,以确定图块p的图块集合id(i)。

8.使用图块集合id(i)来选择被指派给集合id值(v)(其等于图块集合id(i))的图块属性集合。

9.解码器在图块p的解码过程中使用所选的图块属性集合的属性值。

这里,片段是完整的图片或图片的一部分。片段包括片段头和表示图片的一部分的编码视频数据。片段头包括语法元素,这些语法元素的值用于对表示图片的一部分的编码视频数据进行解码。片段可以包括多个图块,并且该特定类型的片段可以被称为图块组。片是片段的一个示例类型,图块组是片段的另一示例类型。实施例不限于这两个示例性类型。

上面的解码器步骤可以通过图6所示的示例进行解释。比特流(20)被解码为包括被示为(31,32,33,34)的四个图块的解码图片(30)。通过图片参数集合(图中未示出)将该图块结构传递给解码器。假设在该示例中,解码器将属性集合的数量解码为3。然后,解码器对3个图块属性集合进行解码,并为三个集合指派集合id值0、1、2。

图片被分为两个片段。一个片段包括图块31和32,另一片段包括图块33和34。第一片段包括片段头10以及分别针对图块31和32的编码图块11和12。第二片段包括片段头13以及分别针对图块33和34的编码图块14和15。

当解码器对片段头13进行解码时,头13中的数据指定:该片段包括两个图块,并且它们是图片中的第三和第四图块。在片段头13中,有两个图块集合id值,一个用于图块33,一个用于图块34。当解码器对图块数据14进行解码时,它使用pps中与用于图块33的图块集合id值相匹配的图块属性集合。当解码器对图块数据15进行解码时,它使用pps中与用于图块34的图块集合id值相匹配的图块属性集合。

在表5中给出了在hevc视频编码规范之上的该实施例的示例语法表和语义描述。在该示例语法表中,假设图块上进行的循环被置于片片段头中。

表5-片段头中的循环其中,

number_of_tile_attribute_sets_minus1加1指定pps中的属性集合的数量;

tile_attribute[i]给出第i个图块属性集合中的图块属性的值;

number_of_tiles_in_slice指定片中的图块的数量;以及

tile_attribute_set_id[i]指定应将哪个图块属性集合指派给第i个图块。tile_attribute_set_id[i]应在0到number_of_tile_attribute_sets_minus1之间。

实施例4-片段头中的属性信号传送

在该实施例中,不在参数集合中以信号传送属性。代替地,直接在片段头中以信号传送属性值。片段头如实施例3中所定义。在片段头中,有一个或多个码字,用于指定片段中有多少个图块以及图块的空间位置。然后,针对片段的每个图块,以信号传送至少一个图块属性值。

以下示例解码器步骤的子集可用于该实施例:

1.解码器对片段头进行解码,并根据参数集合中的码字或片段头中的码字来确定图片或图片的一部分中的图块数量(n),其中n>1。

2.解码器创建大小为n的列表l,其中列表中的每个条目包括至少一个图块属性值。从片段头解码属性值。

3.解码器对片段的特定图块(p)进行解码,并确定图块p的图块编号。

4.解码器使用图块编号作为列表l中的索引,以选择要用于对图块p进行解码的图块属性值。

5.解码器在图块p的解码过程中使用所选的属性值。

在表6中给出了在hevc视频编码规范之上的该实施例的示例语法表和语义描述。

表6-片段头中的属性信号传送

其中,

slice_address指定片的空间位置;

number_of_tiles_in_slice指定片中的图块的数量。与片地址值和从其他码字导出的图块划分信息一起,解码器可以导出每个图块在片中的空间位置;

tile_attribute[i]给出片中的每个图块的图块属性的值。

实施例5-属性标志

在该实施例中,图块属性集合以信号传送,然后标志集合针对每个图块以信号传送以确定图块属性集合中的图块属性的使用情况。

在该实施例的第二变型中,以信号传送的每个图块的标志集合指定针对该图块是使用或关闭使用每个初始图块属性值。

在该实施例的第三变型中,以信号传送每个图块属性的两个状态,例如状态1和状态2。然后,针对每个图块以信号传送标志集合,每个图块属性一个标志,其中每个标志指定使用具有状态1或状态2的图块属性。

在该实施例的第四变型中,以信号传送一个图块属性集合,然后针对每个图块和每个属性,标志指定:图块属性的初始值将被使用(例如,标志=0)、还是应被覆写(例如,标志=1)。在覆写的情况下,该标志后跟指定图块属性的新值的码字。

表7给出了hevc规范基础上的实施例2的示例语法表和语义描述:

表7-属性标志

其中,

number_of_tile_attributes指定图片中的图块的图块属性的数量;

tile_attribute[i]指定图块属性列表中第i个图块属性的值;以及

tile_attribute_overwrite_flag[i,j]等于0指定第i个图块属性要被用于第j个图块。tile_attribute_overwrite_flag[i,j]等于1指定第i个图块属性要在第j个图块处被覆写。

在该实施例的又一变型中,代替如在表7的示例中使用覆写标志,使用标志来确定:针对特定图块,应从图块属性列表复制属性值,还是显式地以信号传送属性值。与前一示例的不同之处在于,属性列表保持静态。

这在以下以hevc之上的语法和语义为例进行说明。

表8-属性标志

其中,

number_of_tile_attributes指定图片中的图块的图块属性的数量;

tile_attribute_in_list[i]指定图块属性列表中的第i个图块属性的值;

tile_attribute_copy_flag[i,j]等于1指定要从图块属性列表复制第j个图块的第i个图块属性的值。tile_attribute_copy_flag[i,j]等于0指定显式地以信号传送第j个图块的第i个图块属性值;

tile_attribute[i,j]指定第j个图块的第i个图块属性的值。如果tile_attribute_copy_flag[i,j]等于1,则将tile_attribute[i,j]被设置为等于tile_attribute_in_list[i]。

实施例6-deltaop

如前所述,可以用于本文公开的实施例中的一个属性是delta_qp。在一个实施例中,解码器从序列参数集合或图片参数集合中确定参考qp值(refqp)。然后,使用先前描述的实施例中的任何实施例,针对每个图块以信号传送deltaqp值。着眼于一个图块t,令相应的deltaqp值为deltaqp1。可选地,可以有针对图块t的第一块以信号传送的deltaqp2。然后,要用于第一块的qp值变为refqp+deltaqp1+deltaqp2。如果该块不具有deltaqp2(例如,由于第一块不包含任何非零变换系数),则第一块的qp值变为refqp+deltaqp1,其也被称为图块的初始qp值。

被指派给第一块的qp值被用于对解码变换系数进行缩放。它也可以用于在第一块和相邻块之间的边界附近的样本值的去块化过程。根据该实施例,以信号传送每图块的deltaqp的可能性对于将源自不同比特流的图块拼接到一个输出比特流中是有用的。可能已使用qp值q1将图块t1编码到比特流b1中,且可能已使用qp值q2将图块t2编码到比特流b2中。如果在没有可能设置图块qp的情况下将t1和t2拼接到一个输出比特流中,则可能无法在输出流中正确地设置t1和t2的qp值。通过使delta_qp成为图块属性的一部分并使用前述实施例之一,可以仅通过改变头中的值来为所有输出图块设置正确的qp值。这很重要,因为在视频编码层中改变值需要重写大量数据,因为可以使用算术编码(例如cabac)对视频编码层进行编码。

注意,在hevc中,仅针对包含至少一个非零变换系数的块以信号传送块deltaqp。这意味着,如果图块t1中的第一块和t2中的第一块不包含任何非零系数,则如果将图块t1和t2拼接在一起成为一个图片,则不可能为这两个块指派正确的qp值,除非插入了片头。

如前所述,hevc规范指定要用于每个图块的初始qp值(图块qp)被设置为26+init_qp_minus26+slice_qp_delta。该实施例在hevc之上的一种实现方式将会是将要用于片中的图块的初始qp值设置为:

qp=26+init_qp_minus26+slice_qp_delta+tile_qp_delta

或者

qp=26+init_qp_minus26+tile_qp_delta

其中,在为每个图块发送的码字中传递tile_qp_delta,使得即使通过使用上述实施例之一以使用图块上进行的循环以信号传送tile_qp_delta作为属性,多个图片属于同一片或片段,图片的每个图块中的tile_qp_delta的值也可以不同。

备选地,如果第一块不包含任何变换系数,则要用于第一块的qp被设置为qp,或者如果第一块确实包含变换系数,则要用于第一块的qp被设置为qp+dqp,其中dqp是在视频编码层中发送的deltaqp语法元素。

编码方法

图7描绘了对图片进行编码的方法100中的步骤。图片被分为多个图块(框102)。一个或多个图块属性与一个或多个图块相关联(框104)。每个图块属性包括指示图块属性的适用性的语法元素或标志。一个或多个图块属性被指派给图块或图块子集(框106)。在比特流中以信号传送图片和图块属性(110),其中,使用图块上进行的一个或多个循环以信号传送所述图块属性(框108)。

优点

本公开的实施例实现了比现有技术中可能的图块属性值的指派更灵活的图块属性值的指派。诸如360度视频和2d加深度格式的多种用例得益于这种灵活的每图块属性指派方法,因为一个图片中不同图块的属性值可以根据每个用例的需求进行定制,然后使用提出的解决方案使用图块上进行的循环以紧凑的方式以信号传送。

在本文公开的实施例中,可以仅使用图块划分工具将不同的图块属性值指派给单独的图块。这与hevc相反,hevc出于相同的目的,必须一起使用图块和片划分工具。

基于不同图块中内容的性质(例如纹理和深度信息)或内容的属性,例如量化或噪声水平,或者在抑制压缩伪像的后处理方面对不同图块的需求不一样,对于不同属性值适于应用于同一图片中的不同图块的用例,本文公开的实施例的益处更大。在这样的应用中,以信号传送每图块的属性值的可能性非常有益。

参考附图更全面地描述本文中设想的一些实施例。然而,其他实施例也包含在本文公开的主题的范围内。所公开的主题不应被解释为仅限于本文阐述的实施例;而是这些实施例作为示例被提供,以将主题的范围传达给本领域的技术人员。

尽管本文中主要描述为方法,但是使用软件伪代码将发明构思传达给本领域技术人员,本公开的实施例可以实现为过程或方法;作为编码/解码装置;作为包含指令的暂时性或非暂时性计算机可读介质,指令可操作以使处理电路执行特定过程或方法;或者作为计算机程序产品,可操作以使处理电路执行特定过程或方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1