一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于子画面结构执行环路内滤波的图像编码/解码方法和装置及发送比特流的方法与流程

2022-07-14 03:52:39 来源:中国专利 TAG:


1.本公开涉及基于子画面结构执行环路内滤波的图像编码/解码方法和装置以及发送比特流的方法,更具体地,涉及跨子画面的边界执行环路内滤波的图像编码/解码方法和装置以及发送通过本公开的图像编码方法/装置生成的比特流的方法。


背景技术:

2.最近,各个领域对高分辨率和高质量图像,例如高清(hd)图像和超高清(uhd)图像的需求正在增加。随着图像数据的分辨率和质量的提高,与现有图像数据相比,传输的信息量或比特量相对增加。传输信息或比特量的增加导致传输成本和存储成本的增加。
3.因此,需要高效的图像压缩技术来有效地传输、存储和再现关于高分辨率和高质量图像的信息。


技术实现要素:

4.技术问题
5.本公开的目的是提供一种具有改进的编码/解码效率的图像编码/解码方法和装置。
6.本公开的另一个目的是提供一种用于执行跨当前块的边界的环路内滤波的图像编码/解码方法和装置。
7.本公开的另一个目的是提供一种用于基于子画面结构执行环路内滤波的图像编码/解码方法和装置。
8.本公开的另一个目的是提供一种考虑与当前块的边界相邻的相邻子画面来执行环路内滤波的图像编码/解码方法和装置。
9.本公开的另一个目的是提供一种发送由根据本公开的图像编码方法或装置生成的比特流的方法。
10.本公开的另一个目的是提供一种存储由根据本公开的图像编码方法或装置生成的比特流的记录介质。
11.本公开的另一个目的是提供一种记录介质,其存储由根据本公开的图像解码装置接收、解码并用于重构图像的比特流。
12.本公开所解决的技术问题不限于上述技术问题,本领域技术人员通过以下描述将清楚此处未描述的其它技术问题。
13.技术方案
14.根据本公开的一方面的由图像解码装置执行的图像解码方法可以包括:从比特流解码第一标志,该第一标志指定是否能够跨子画面的边界执行环路内滤波;以及基于第一标志对当前块的边界执行环路内滤波。基于当前块的边界是包括当前块的当前子画面的边界,基于当前子画面的第一标志指定无法跨当前子画面的边界执行环路内滤波,或者与当
前块的边界相邻的相邻子画面的第一标志指定无法跨相邻子画面的边界执行环路内滤波,可以不执行对当前块的边界的环路内滤波。
15.根据本公开的一方面的图像解码装置可以包括存储器和至少一个处理器。所述至少一个处理器可以从比特流解码第一标志,该第一标志指定是否能够跨子画面的边界执行环路内滤波;以及基于第一标志对当前块的边界执行环路内滤波。基于当前块的边界是包括当前块的当前子画面的边界,基于当前子画面的第一标志指定无法跨当前子画面的边界执行环路内滤波,或者与当前块的边界相邻的相邻子画面的第一标志指定无法跨相邻子画面的边界执行环路内滤波,可以不执行对当前块的边界的环路内滤波。
16.根据本公开的一方面的由图像编码装置执行的图像编码方法可以包括:确定是否能够跨子画面的边界执行环路内滤波;以及基于确定的结果对当前块的边界执行环路内滤波。基于当前块的边界是包括当前块的当前子画面的边界,基于当前子画面的第一标志指定无法跨当前子画面的边界执行环路内滤波,或者与当前块的边界相邻的相邻子画面的第一标志指定无法跨相邻子画面的边界执行环路内滤波,可以不执行对当前块的边界的环路内滤波。
17.另外,根据本公开的另一方面的传输方法可以发送由本公开的图像编码装置或图像编码方法生成的比特流。
18.另外,根据本公开的另一方面的计算机可读记录介质可以存储由本公开的图像编码装置或图像编码方法生成的比特流。
19.以上关于本公开的简要概述的特征仅仅是本公开的以下详细描述的示例性方面,并不限制本公开的范围。
20.有益效果
21.根据本公开,能够提供一种具有改进的编码/解码效率的图像编码/解码方法和装置。
22.此外,根据本公开,能够提供一种用于执行改进的环路内滤波的图像编码/解码方法和装置。
23.此外,根据本公开,能够提供一种用于基于子画面结构执行环路内滤波的图像编码/解码方法和装置。
24.此外,根据本公开,能够提供一种考虑与当前块的边界相邻的相邻子画面来执行环路内滤波的图像编码/解码方法和装置。
25.此外,根据本公开,能够提供一种发送由根据本公开的图像编码方法或装置生成的比特流的方法。
26.此外,根据本公开,能够提供一种存储由根据本公开的图像编码方法或装置生成的比特流的记录介质。
27.此外,根据本公开,能够提供一种记录介质,其存储由根据本公开的图像解码装置接收、解码并用于重构图像的比特流。
28.本领域的技术人员将理解,通过本公开可以实现的效果不限于上文已经具体描述的内容,并且将从详细描述中更清楚地理解本公开的其它优点。
附图说明
29.图1是示意性地示出本公开的实施方式适用于的视频编码系统的视图。
30.图2是示意性地示出本公开的实施方式适用于的图像编码装置的视图。
31.图3是示意性地示出本公开的实施方式适用于的图像解码装置的视图。
32.图4是示出根据实施方式的图像的分割结构的视图。
33.图5a至图5c是例示画面的分割示例的视图。
34.图6是示出根据多类型树结构的块的分割类型的实施方式的视图。
35.图7是示出根据本公开的具有嵌套多类型树结构的四叉树中的块划分信息的信令机制的视图。
36.图8是示出通过在应用四叉树之后应用多类型树将ctu分割为多个cu的示例的视图。
37.图9示出了在二叉树划分和三叉树划分中可能出现的冗余划分图案。
38.图10是例示限制cu划分的示例的视图。
39.图11是例示基于帧间预测的视频/图像编码方法的流程图。
40.图12是例示根据本公开的帧间预测单元180的配置的视图。
41.图13是例示基于帧间预测的视频/图像解码方法的流程图。
42.图14是例示根据本公开的帧间预测单元260的配置的视图。
43.图15是例示用于在sps中用信号通知子画面语法元素的语法的视图。
44.图16是例示用于推导诸如subpictop的预定变量的算法的示例的视图。
45.图17是例示根据本公开的实施方式的图像编码装置使用子画面对图像进行编码的方法的视图。
46.图18是例示根据实施方式的图像解码装置使用子画面对图像进行解码的方法的视图。
47.图19是例示去块滤波器的应用方法的视图。
48.图20是例示去块滤波器所应用于的重构样本的视图。
49.图21和图22是例示在子画面中缩小被视为画面的区域的示例的视图。
50.图23和图24是例示出现子画面的解码错误的示例的视图。
51.图25是例示根据本公开的实施方式的用于用信号通知子画面语法元素的sps语法的视图。
52.图26是例示基于图25的sps语法对亮度样本进行滤波的处理的示例的视图。
53.图27是例示基于图25的sps语法对亮度样本进行滤波的处理的另一示例的视图。
54.图28是例示基于图25的sps语法对色度样本进行滤波的处理的示例的视图。
55.图29是例示根据本公开实施方式的基于子画面结构的滤波方法的流程图。
56.图30是例示根据本公开的实施方式的跨滤波处理的视图。
57.图31和图32是例示根据本公开的实施方式的对亮度样本的跨滤波处理的视图。
58.图33是例示根据本公开的实施方式的对色度样本的跨滤波处理的视图。
59.图34是例示根据本公开实施方式的基于子画面结构的滤波方法的流程图。
60.图35是例示根据本公开的实施方式的跨滤波处理的视图。
61.图36和图37是例示根据本公开的实施方式的对亮度样本的跨滤波处理的视图。
62.图38是例示根据本公开的实施方式的对色度样本的跨滤波处理的视图。
63.图39是例示根据本公开的实施方式的跨滤波处理的视图。
64.图40是例示根据本公开的实施方式的基于子画面结构的滤波方法的流程图。
65.图41和图42是例示根据本公开的实施方式的对亮度样本的跨滤波处理的视图。
66.图43是例示根据本公开的实施方式的对色度样本的跨滤波处理的视图。
67.图44是示出本公开的实施方式适用于的内容流系统的视图。
具体实施方式
68.以下,将结合附图对本公开的实施方式进行详细描述,以易于本领域技术人员实施。然而,本公开可以以各种不同的形式实施,并且不限于这里描述的实施方式。
69.在描述本公开时,如果确定相关已知功能或构造的详细描述使本公开的范围不必要地含糊不清,则将省略其详细描述。在附图中,省略了与本公开的描述无关的部分,并且相似的附图标记被赋予相似的部分。
70.在本公开中,当一个组件“连接”、“耦合”或“链接”到另一个组件时,它不仅可以包括直接连接关系,还可以包括中间组件存在的间接连接关系。另外,当一个组件“包括”或“具有”其他组件时,除非另有说明,否则是指还可以包括其他组件,而不是排除其他组件。
71.在本公开中,术语第一、第二等仅用于将一个组件与其他组件区分开的目的,并且不限制组件的顺序或重要性,除非另有说明。相应地,在本公开的范围内,一个实施方式中的第一部件在另一个实施方式中可以被称为第二部件,类似地,一个实施方式中的第二部件在另一个实施方式中可以被称为第一部件。
72.在本公开中,相互区分的组件旨在清楚地描述每个特征,并不意味着组件必须分开。即,多个组件可以集成在一个硬件或软件单元中实现,或者一个组件可以在多个硬件或软件单元中分布和实现。因此,即使没有特别说明,这些组件集成或分布式的实施方式也包括在本公开的范围内。
73.在本公开中,各个实施方式中所描述的组件并不一定是必不可少的组件,一些组件可以是可选的组件。因此,由实施方式中描述的组件的子集组成的实施方式也包括在本公开的范围内。此外,除了在各种实施方式中描述的组件之外还包括其他组件的实施方式包括在本公开的范围内。
74.本公开涉及图像的编码(encoding)和解码,除非在本公开中重新定义,否则本公开中使用的术语可以具有本公开所属技术领域中常用的一般含义。
75.在本公开中,“画面”一般是指表示特定时间段内的一个图像的单元,而切片(slice)/拼块(tile)是构成画面的一部分的编码(coding)单元,一个画面可以由一个或多个切片/拼块组成。此外,切片/拼块可以包括一个或多个编码树单元(ctu)。
76.在本公开中,“像素”或“像元(pel)”可以意指构成一个画面(或图像)的最小单个。此外,“样本”可以用作对应于像素的术语。一个样本一般可以表示像素或像素的值,也可以仅表示亮度分量的像素/像素值或仅表示色度分量的像素/像素值。
77.在本公开中,“单元”可以表示图像处理的基本单元。该单元可以包括画面的特定区域和与该区域相关的信息中的至少一个。在某些情况下,该单元可以与诸如“样本阵列”、“块”或“区域”的术语互换使用。在一般情况下,m
×
n块可以包括m列n行的样本(或样本阵
列)或变换系数的集合(或阵列)。
78.在本公开中,“当前块”可以意指“当前编码块”、“当前编码单元”、“编码目标块”、“解码目标块”或“处理目标块”之一。当执行预测时,“当前块”可以意指“当前预测块”或“预测目标块”。当执行变换(逆变换)/量化(解量化)时,“当前块”可以意指“当前变换块”或“变换目标块”。当执行滤波时,“当前块”可以意指“滤波目标块”。
79.另外,在本公开中,“当前块”可以意指包括亮度分量块和色度分量块二者的块,或者除非明确表述为色度块,否则意指“当前块的亮度块”。当前块的色度分量块可以通过包括诸如“亮度块”或“当前亮度块”的亮度分量块的明确描述来表达。另外,当前块的色度分量块可以通过包括诸如“色度块”或“当前色度块”的色度分量块的明确描述来明确表达。
80.在本公开中,斜线“/”或“、”可以解释为指示“和/或”。例如,“a/b”和“a、b”可以意指“a和/或b”。此外,“a/b/c”和“a、b、c”可以意指“a、b和/或c中的至少一个”。
81.在本公开中,术语“或”应被解释以指示“和/或”。例如,表达“a或b”可以包括1)仅“a”,2)仅“b”,或3)“a和b”两者。换言之,在本公开中,“或”应被解释以指示“附加地或可替选地”。
82.视频编码系统概述
83.图1是示意性地示出本公开的实施方式适用于的视频编码系统的视图。
84.根据实施方式的视频编码系统可以包括编码装置10和解码装置20。编码装置10可以将编码的视频和/或图像信息或数据以文件或流的形式经由数字存储介质或网络递送到解码装置20。
85.根据实施方式的编码装置10可以包括视频源生成器11、编码单元12和发送器13。根据实施方式的解码装置20可以包括接收器21、解码单元22和渲染器23。编码单元12可以称为视频/图像编码单元,解码单元22可以称为视频/图像解码单元。发送器13可以被包括在编码单元12中。接收器21可以被包括在解码单元22中。渲染器23可以包括显示器并且显示器可以被配置为单独的设备或外部组件。
86.视频源生成器11可以通过捕获、合成或生成视频/图像的过程来获取视频/图像。视频源生成器11可以包括视频/图像捕获设备和/或视频/图像生成设备。视频/图像捕获设备可以包括例如一个或多个相机、包括先前捕获的视频/图像的视频/图像档案等。视频/图像生成设备可以包括例如计算机、平板计算机和智能电话,并且可以(以电子方式)生成视频/图像。例如,可以通过计算机等生成虚拟视频/图像。在这种情况下,视频/图像捕获过程可以被生成相关数据的过程代替。
87.编码单元12可以对输入视频/图像进行编码。为了压缩和编码效率,编码单元12可以执行一系列过程,例如预测、变换和量化。编码单元12可以以比特流的形式输出编码数据(编码视频/图像信息)。
88.发送器13可以通过数字存储介质或网络以文件或流的形式将编码的视频/图像信息或以比特流的形式输出的数据传输到解码装置20的接收器21。数字存储介质可以包括各种存储介质,例如usb、sd、cd、dvd、蓝光、hdd、ssd等。发送器13可以包括用于通过预定文件格式生成媒体文件的元件并且可以包括用于通过广播/通信网络传输的元件。接收器21可以从存储介质或网络中提取/接收比特流并将比特流传输到解码单元22。
89.解码单元22可以通过执行与编码单元12的操作相对应的一系列过程,例如解量
化、逆变换和预测来解码视频/图像。
90.渲染器23可以渲染解码的视频/图像。渲染的视频/图像可以通过显示器显示。
91.图像编码装置概要
92.图2是示意性地示出本公开的实施方式适用于的图像编码装置的视图。
93.如图2所示,图像编码装置100可以包括图像分割器110、减法器115、变换器120、量化器130、解量化器140、逆变换器150、加法器155、滤波器160、存储器170、帧间预测单元180、帧内预测单元185和熵编码器190。帧间预测单元180和帧内预测单元185可以统称为“预测单元”。变换器120、量化器130、解量化器140和逆变换器150可以被包括在残差处理器中。残差处理器还可以包括减法器115。
94.在一些实施方式中,配置图像编码装置100的多个组件中的全部或至少一些可以由一个硬件组件(例如,编码器或处理器)来配置。此外,存储器170可以包括解码画面缓冲器(dpb)并且可以由数字存储介质配置。
95.图像分割器110可将输入到图像编码装置100的输入图像(或画面或帧)分割成一个或多个处理单元。例如,处理单元可以称为编码单元(cu)。可以通过根据四叉树二叉树三叉树(qt/bt/tt)结构递归地分割编码树单元(ctu)或最大编码单元(lcu)来获取编码单元。例如,可以基于四叉树结构、二叉树结构和/或三叉树结构将一个编码单元分割为更深深度的多个编码单元。对于编码单元的分割,可以首先应用四叉树结构,然后可以应用二叉树结构和/或三叉树结构。可以基于不再分割的最终编码单元来执行根据本公开的编码过程。可以将最大编码单元用作最终编码单元,也可以将通过分割最大编码单元获取的更深深度的编码单元用作最终编码单元。这里,编码过程可以包括稍后将描述的预测、变换和重构的过程。作为另一个示例,编码过程的处理单元可以是预测单元(pu)或变换单元(tu)。预测单元和变换单元可以从最终编码单元划分或分割。预测单元可以是样本预测单元,变换单元可以是用于导出变换系数的单元和/或用于从变换系数导出残差信号的单元。
96.预测单元(帧间预测单元180或帧内预测单元185)可以对要处理的块(当前块)执行预测,并且生成包括当前块的预测样本的预测块。预测单元可以在当前块或cu的基础上确定是应用帧内预测还是帧间预测。预测单元可以生成与当前块的预测有关的各种信息,并且将生成的信息传输到熵编码器190。关于预测的信息可以在熵编码器190中被编码并且以比特流的形式输出。
97.帧内预测单元185可以通过参考当前画面中的样本来预测当前块。根据帧内预测模式和/或帧内预测技术,参考样本可以位于当前块的邻居中或者可以被分开放置。帧内预测模式可以包括多个非定向模式和多个定向模式。非定向模式可以包括例如dc模式和平面模式。根据预测方向的详细程度,定向模式可以包括例如33个定向预测模式或65个定向预测模式。然而,这仅仅是示例,可以根据设置使用更多或更少的定向预测模式。帧内预测单元185可以通过使用应用于邻近块的预测模式来确定应用于当前块的预测模式。
98.帧间预测单元180可以基于由参考画面上的运动向量指定的参考块(参考样本阵列)来导出当前块的预测块。在这种情况下,为了减少在帧间预测模式中传输的运动信息量,可以基于邻近块和当前块之间的运动信息的相关性以块、子块或样本为单元来预测运动信息。运动信息可以包括运动向量和参考画面索引。运动信息还可以包括帧间预测方向(l0预测、l1预测、bi预测等)信息。在帧间预测的情况下,邻近块可以包括当前画面中存在
的空间邻近块和参考画面中存在的时间邻近块。包括参考块的参考画面和包括时间邻近块的参考画面可以相同或不同。时间邻近块可以被称为并置参考块、并置cu(colcu)等。包括时间邻近块的参考画面可以被称为并置画面(colpic)。例如,帧间预测单元180可基于邻近块配置运动信息候选列表并生成指定使用哪个候选来导出当前块的运动向量和/或参考画面索引的信息。可以基于各种预测模式来执行帧间预测。例如,在跳过模式和合并模式的情况下,帧间预测单元180可以使用邻近块的运动信息作为当前块的运动信息。在跳过模式的情况下,与合并模式不同,可以不传输残差信号。在运动向量预测(mvp)模式的情况下,邻近块的运动向量可以用作运动向量预测子,并且当前块的运动向量可以通过编码运动向量差和运动向量预测子的指示符来用信号通知当前块的运动向量。运动向量差可以意指当前块的运动向量与运动向量预测子之间的差。
99.预测单元可以基于以下描述的各种预测方法和预测技术来生成预测信号。例如,预测单元不仅可以应用帧内预测或帧间预测,还可以同时应用帧内预测和帧间预测,以预测当前块。同时应用帧内预测和帧间预测两者来预测当前块的预测方法可以称为组合帧间和帧内预测(ciip)。此外,预测单元可以执行帧内块复制(ibc)以预测当前块。帧内块复制可以用于游戏等的内容图像/视频编码,例如,屏幕内容编码(scc)。ibc是一种在与当前块相隔预定距离的位置处使用当前画面中先前重构的参考块来预测当前画面的方法。当应用ibc时,参考块在当前画面中的位置可以被编码为对应于预定距离的向量(块向量)。ibc基本上在当前画面中执行预测,但是可以类似于帧间预测来执行,因为在当前画面内导出参考块。即,ibc可以使用本公开中描述的帧间预测技术中的至少一种。ibc基本上在当前画面中执行预测,但是可以类似于帧间预测来执行,因为在当前画面内导出参考块。即,ibc可以使用本公开中描述的帧间预测技术中的至少一种。
100.预测单元生成的预测信号可用于生成重构信号或生成残差信号。减法器115可以通过从输入图像信号(原始块或原始样本阵列)中减去从预测单元输出的预测信号(预测块或预测样本阵列)来生成残差信号(残差块或残差样本阵列)。生成的残差信号可以被传输到变换器120。
101.变换器120可以通过将变换技术应用于残差信号来生成变换系数。例如,变换技术可以包括离散余弦变换(dct)、离散正弦变换(dst)、karhunen-lo
è
ve变换(klt)、基于图的变换(gbt)或条件非线性变换(cnt)中的至少一种。这里,gbt是指当像素之间的关系信息由图形表示时从图形获得的变换。cnt是指基于使用所有先前重构的像素生成的预测信号获取的变换。此外,变换处理可以应用于具有相同大小的方形像素块或者可以应用于具有可变大小而不是方形的块。
102.量化器130可以对变换系数进行量化并且将它们传输到熵编码器190。熵编码器190可以对量化的信号(关于量化的变换系数的信息)进行编码并且输出比特流。关于量化变换系数的信息可以被称为残差信息。量化器130可基于系数扫描顺序将块形式的量化变换系数重新排列为一维向量形式,并基于一维向量形式的量化变换系数生成关于量化变换系数的信息。
103.熵编码器190可以执行各种编码方法,例如指数哥伦布、上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)等。熵编码器190可以一起或单独地编码除量化变换系数之外的视频/图像重构所需的信息(例如,语法元素的值等)。编码的信息
(例如,编码的视频/图像信息)可以比特流的形式以网络抽象层(nal)为单元进行传输或存储。视频/图像信息还可以包括关于各种参数集的信息,例如自适应参数集(aps)、画面参数集(pps)、序列参数集(sps)或视频参数集(vps)。此外,视频/图像信息还可以包括通用约束信息。本公开中描述的用信号通知的信息、传输的信息和/或语法元素可以通过上述编码过程被编码并且被包括在比特流中。
104.比特流可以通过网络传输或者可以存储在数字存储介质中。网络可以包括广播网络和/或通信网络,数字存储介质可以包括usb、sd、cd、dvd、蓝光、hdd、ssd等各种存储介质。可以包括传输从熵编码器190输出的信号的发送器(未示出)和/或存储该信号的存储单元(未示出)作为图像编码装置100的内部/外部元件。替代地,可以提供发送器作为熵编码器190的组件。
105.从量化器130输出的量化变换系数可用于生成残差信号。例如,可以通过解量化器140和逆变换器150对量化的变换系数应用解量化和逆变换来重构残差信号(残差块或残差样本)。
106.加法器155将重构残差信号与从帧间预测单元180或帧内预测单元185输出的预测信号相加,生成重构信号(重构图像、重构块、重构样本阵列)。如果要处理块没有残差,例如应用跳过模式的情况,则可以将预测块用作重构块。加法器155可以称为重构器或重构块生成器。生成的重构信号可以用于当前画面中要处理的下一个块的帧内预测,并且可以用于通过如下所述的滤波对下一个画面进行帧间预测。
107.滤波器160可以通过对重构信号应用滤波来提高主观/客观图像质量。例如,滤波器160可以通过对重构画面应用各种滤波方法来生成修改的重构画面,并将修改的重构画面存储在存储器170中,具体地,存储器170的dpb中。各种滤波方法可以包括,例如,去块滤波、样本自适应偏移、自适应环路滤波、双边滤波等。滤波器160可以生成与滤波有关的各种信息并将所生成的信息传输到熵编码器190,如稍后在每种滤波方法的描述中所描述的。与滤波相关的信息可以由熵编码器190编码并以比特流的形式输出。
108.传输到存储器170的修改的重构画面可以用作帧间预测单元180中的参考画面。当通过图像编码装置100应用帧间预测时,可以避免图像编码装置100和图像解码装置之间的预测失配并且可以提高编码效率。
109.存储器170的dpb可以存储修改的重构画面以用作帧间预测单元180中的参考画面。存储器170可以存储从其中导出(或编码)当前画面中的运动信息的块的运动信息和/或画面中已重构的块的运动信息。存储的运动信息可以被传输到帧间预测单元180并用作空间邻近块的运动信息或时间邻近块的运动信息。存储器170可以存储当前画面中重构块的重构样本并且可以将重构样本传送到帧内预测单元185。
110.图像解码装置概述
111.图3是示意性地示出本公开的实施方式适用于的图像解码装置的视图。
112.如图3所示,图像解码装置200可以包括熵解码器210、解量化器220、逆变换器230、加法器235、滤波器240、存储器250、帧间预测单元260和帧内预测单元265。帧间预测单元260和帧内预测单元265可以统称为“预测单元”。解量化器220和逆变换器230可以被包括在残差处理器中。
113.根据实施方式,配置图像解码装置200的多个组件中的全部或至少一些可以由硬
件组件(例如,解码器或处理器)来配置。此外,存储器250可以包括解码画面缓冲器(dpb)或者可以由数字存储介质配置。
114.已经接收到包括视频/图像信息的比特流的图像解码装置200可以通过执行与由图2的图像编码装置100执行的处理相对应的处理来重构图像。例如,图像解码装置200可以使用在图像编码装置中应用的处理单元来执行解码。因此,解码的处理单元例如可以是编码单元。编码单元可以通过分割编码树单元或最大编码单元来获得。通过图像解码装置200解码和输出的重构图像信号可以通过再现装置(未示出)再现。
115.图像解码装置200可以接收以比特流的形式从图2的图像编码装置输出的信号。接收到的信号可以通过熵解码器210进行解码。例如,熵解码器210可以解析比特流以导出图像重构(或画面重构)所需的信息(例如,视频/图像信息)。视频/图像信息还可以包括关于各种参数集的信息,例如自适应参数集(aps)、画面参数集(pps)、序列参数集(sps)或视频参数集(vps)。此外,视频/图像信息还可以包括通用约束信息。图像解码装置还可以基于参数集信息和/或通用约束信息对画面进行解码。本公开中描述的用信号通知/接收的信息和/或语法元素可以通过解码过程被解码并从比特流中获得。例如,熵解码器210基于诸如指数哥伦布编码、cavlc或cabac的编码方法对比特流中的信息进行解码,并输出图像重构所需的语法元素的值和残差的变换系数的量化值。更具体地,cabac熵解码方法可以接收与比特流中每个语法元素对应的bin,使用解码目标语法元素信息、邻近块和解码目标块的解码信息或前一阶段解码的符号/bin的信息来确定上下文模型,根据确定的上下文模型通过预测bin的出现概率,对bin进行算术解码,生成与每个语法元素的值对应的符号。在这种情况下,cabac熵解码方法可以在确定上下文模型后,通过将解码的符号/bin的信息用于下一个符号/bin的上下文模型来更新上下文模型。由熵解码器210解码的信息中与预测相关的信息可以被提供给预测单元(帧间预测单元260和帧内预测单元265),以及在熵解码器210中对其执行熵解码的残差值,即,量化的变换系数和相关的参数信息可以被输入到解量化器220。另外,可以将关于熵解码器210解码的信息当中的滤波的信息提供给滤波器240。同时,用于接收从图像编码装置输出的信号的接收器(未示出)可以进一步被配置为图像解码装置200的内部/外部元件,或者接收器可以是熵解码器210的组件。
116.同时,根据本公开的图像解码装置可以被称为视频/图像/画面解码装置。图像解码装置可以分为信息解码器(视频/图像/画面信息解码器)和样本解码器(视频/图像/画面样本解码器)。信息解码器可以包括熵解码器210。样本解码器可以包括解量化器220、逆变换器230、加法器235、滤波器240、存储器250、帧间预测单元160或帧内预测单元265中的至少一个。
117.解量化器220可以对量化的变换系数进行解量化并输出变换系数。解量化器220可以以二维块的形式重新排列量化的变换系数。在这种情况下,可以基于在图像编码装置中执行的系数扫描顺序来执行重新排列。解量化器220可以通过使用量化参数(例如,量化步长信息)对量化的变换系数执行解量化并获得变换系数。
118.逆变换器230可以对变换系数进行逆变换以获得残差信号(残差块、残差样本阵列)。
119.预测单元可以对当前块执行预测并生成包括当前块的预测样本的预测块。预测单元可以基于关于从熵解码器210输出的预测的信息来确定是将帧内预测还是帧间预测应用
于当前块,并且可以确定特定的帧内/帧间预测模式(预测技术)。
120.与在图像编码装置100的预测单元中描述的相同的是,预测单元可以基于稍后描述的各种预测方法(技术)来生成预测信号。
121.帧内预测单元265可以通过参考当前画面中的样本来预测当前块。帧内预测单元185的描述同样适用于帧内预测单元265。
122.帧间预测单元260可以基于由参考画面上的运动向量指定的参考块(参考样本阵列)来导出当前块的预测块。在这种情况下,为了减少在帧间预测模式中传输的运动信息量,可以基于邻近块和当前块之间的运动信息的相关性以块、子块或样本为单元来预测运动信息。运动信息可以包括运动向量和参考画面索引。运动信息还可以包括帧间预测方向(l0预测、l1预测、bi预测等)信息。在帧间预测的情况下,邻近块可以包括当前画面中存在的空间邻近块和参考画面中存在的时间邻近块。例如,帧间预测单元260可以基于邻近块配置运动信息候选列表,并且基于接收到的候选选择信息导出当前块的运动向量和/或参考画面索引。可以基于各种预测模式来执行帧间预测,并且关于预测的信息可以包括指示当前块的帧间预测模式的信息。
123.加法器235可以通过将获得的残差信号与从预测单元(包括帧间预测单元260和/或内预测单元265)输出的预测信号(预测块、预测样本阵列)相加生成重构块。如果要处理的块没有残差,诸如在应用跳过模式时,则可以将预测块用作重构块。加法器155的描述同样适用于加法器235。加法器235可以称为重构器或重构块生成器。生成的重构信号可以用于当前画面中要处理的下一个块的帧内预测,并且可以用于通过如下所述的滤波对下一个画面进行帧间预测。
124.滤波器240可以通过对重构信号应用滤波来提高主观/客观图像质量。例如,滤波器240可以通过对重构画面应用各种滤波方法来生成修改的重构画面,并将修改的重构画面存储在存储器250中,具体地,存储器250的dpb中。各种滤波方法可以包括,例如,去块滤波、样本自适应偏移、自适应环路滤波、双边滤波等。
125.存储在存储器250的dpb中的(修改的)重构画面可以用作帧间预测单元260中的参考画面。存储器250可以存储从其中导出(或解码)当前画面中的运动信息的块的运动信息和/或画面中已重构的块的运动信息。存储的运动信息可以被传输到帧间预测单元260,以用作空间邻近块的运动信息或时间邻近块的运动信息。存储器250可以存储当前画面中重构块的重构样本并将重构样本传送到帧内预测单元265。
126.在本公开中,在图像编码装置100的滤波器160、帧间预测单元180和帧内预测单元185中描述的实施方式可以同等地或对应地应用于图像解码装置200的滤波器240、帧间预测单元260和帧内预测单元265。
127.图像分割的概述
128.可以基于图像分割结构来执行根据本公开的视频/图像编码方法如下。具体地,可以基于根据图像分割结构而推导的ctu、cu(和/或tu、pu)来执行将稍后描述的预测、残差处理((逆)变换、(解)量化等)、语法元素编码和滤波的过程。可以以块为单位对图像进行分割并且可以在编码设备的图像分割器110中执行块分割过程。分割相关信息可以由熵编码器190编码并且以比特流的形式发送到解码设备。解码设备的熵解码器210可以基于从比特流获得的分割相关信息来推导当前画面的块分割结构,并且基于此,可以执行一系列的过程
(例如,预测、残差处理、块/画面重构、环路内滤波等)以进行图像解码。cu大小和tu大小可以相同,或者在cu区域中可以存在多个tu。同时,cu大小通常可以表示亮度分量(样本)cb大小。tu大小通常可以表示亮度分量(样本)tb大小。可以根据画面/图像的色度格式(颜色格式,例如4:4:4、4:2:2、4:2:0等)根据分量比基于亮度分量(样本)cb或tb大小来推导色度分量(样本)cb或tb大小。可以基于指定可用最大tb大小的maxtbsize来推导tu大小。例如,当cu大小大于maxtbsize时,可以从cu推导maxtbsize的多个tu(tb),并且可以以tu(tb)为单位执行变换/逆变换。另外,例如,当应用帧内预测时,可以以cu(或cb)为单位推导帧内预测模式/类型,并且可以以tu(或tb)为单位执行邻近参考样本推导和预测样本生成过程。在这种情况下,在一个cu(或cb)区域中可以存在一个或多个tu(或tb),并且在这种情况下,多个tu(或tb)可以共享相同的帧内预测模式/类型。
129.另外,在根据本公开的图像编码和解码中,图像处理单元可以具有分层结构。例如,一个画面可以被分割为一个或更多个拼块或拼块组。一个拼块组可以包括一个或更多个拼块。一个拼块可以包括一个或更多个ctu。如上所述,ctu可以被分割为一个或更多个cu。拼块可以由包括画面中的特定行和特定列中组装的ctu的矩形区域组成。根据拼块光栅扫描,拼块组可以包括整数个拼块。拼块组头可以用信号通知适用于对应拼块组的信息/参数。当编码/解码设备具有多核处理器时,拼块或拼块组的编码/解码过程可以并行执行。这里,拼块组可以具有包括帧内(i)拼块组、预测(p)拼块组和双预测(b)拼块组的拼块组类型之一。对于i拼块组中的块,可以不使用帧间预测,仅帧内预测可以用于预测。当然,即使在这种情况下,原始样本值也可以被编码并用信号通知而无需预测。对于p拼块组中的块,可以使用帧内预测或帧间预测,并且在帧间预测时可以仅使用单预测(uni-prediction)。同时,对于b拼块组中的块,可以使用帧内预测或帧间预测,并且当使用帧间预测时可以使用直至双预测(bi prediction)。
130.在编码装置中,可以根据图像的特性(例如,分辨率)并考虑编码效率或并行处理来确定拼块/拼块组、切片和最大和最小编码单元大小,并且关于其的信息或能够推导其的信息可以包括在比特流中。
131.在解码装置中,可以获得指定当前画面的切片、拼块/拼块组或拼块中的ctu被分割为多个编码单元的信息。当仅在特定条件下获得(发送)这种信息时,效率可以增加。
132.切片头或拼块组头(拼块组头语法)可以包括共同适用于切片或拼块组的信息/参数。aps(aps语法)或pps(pps语法)可以包括共同适用于一个或更多个画面的信息/参数。sps(sps语法)可以包括共同适用于一个或更多个序列的信息/参数。vps(vps语法)可以包括共同适用于整个视频的信息/参数。在本公开中,更高级别语法可以包括aps语法、pps语法、sps语法或vps语法中的至少一个。
133.另外,例如,关于拼块/拼块组的分割和构建的信息可以在编码阶段通过更高级语法构建并以比特流的形式发送到解码装置。
134.分割结构
135.画面可以被分割成编码树单元(ctu)的序列。ctu可以对应于编码树块(ctb)。另选地,ctu可以包括亮度样本的编码树块和对应色度样本的两个编码树块。例如,对于包含三个样本阵列的画面,ctu可以包括亮度样本的一个n
×
n块和色度样本的两个对应块。图4示出画面被分割为ctu的示例。
136.用于编码和预测的ctu的最大允许大小可不同于用于变换的ctu。例如,即使当用于变换的ctu中的亮度块的最大大小为64
×
64时,用于编码和预测的ctu的亮度块的最大大小可为128
×
128。
137.另外,画面可以被分割为一个或更多个拼块行和一个或更多个拼块列。拼块可以是覆盖画面中的矩形区域的ctu序列。
138.拼块可以被分割为一个或更多个图块,各个图块可以由拼块中的多个ctu行组成。在本公开中,未被分割为多个图块的拼块可以被称为图块。
139.切片可以包括画面中的多个拼块或拼块中的多个图块。可以支持两个切片模式。一个可以是光栅扫描切片模式,另一个可以是矩形切片模式。
140.在光栅切片模式下,切片可以根据光栅扫描顺序包括画面内的多个连续拼块。在本公开中,根据光栅扫描切片模式的切片可以被称为光栅扫描切片。
141.在矩形切片模式下,切片可以包括画面内构建矩形区域的多个图块。在本公开中,根据矩形切片模式的切片可以被称为矩形切片。根据切片的图块光栅扫描顺序可以存在包括在矩形切片中的多个图块。
142.图5a至图5c是例示画面的分割示例的视图。
143.首先,参照图5a,在光栅扫描切片模式下,画面可以被分割为12个拼块和三个光栅扫描切片。
144.参照图5b,在矩形切片模式下,画面可以被分割为24个拼块(即,六个拼块行和四个拼块列)和九个矩形切片。
145.参照图5c,画面可以被分割为四个拼块(即,两个拼块行和两个拼块列)、11个图块(即,一个左上图块、五个右上图块、两个左下图块和三个右下图块)和四个矩形切片。
146.ctu分割的概述
147.如上所述,可以通过根据四叉树/二叉树/三叉树(qt/bt/tt)结构递归地对编码树单元(ctu)或最大编码单元(lcu)进行分割来获取编码单元。例如,ctu可以被首先分割成四叉树结构。此后,可以通过多类型树结构对四叉树结构的叶节点进一步进行分割。
148.根据四叉树的分割意味着当前cu(或ctu)被同等地分割成四个。通过根据四叉树的分割,可以将当前cu分割成具有相同宽度和相同高度的四个cu。在当前cu不再被分割成四叉树结构时,当前cu对应于四叉树结构的叶节点。与四叉树结构的叶节点对应的cu可以不再被分割并且可以被用作上述最终编码单元。另选地,可以通过多类型树结构对与四叉树结构的叶节点对应的cu进一步进行分割。
149.图6是示出了根据多类型树结构的块的分割类型的实施方式的视图。根据多类型树结构的分割可以包括根据二叉树结构的两种类型的划分和根据三叉树结构的两种类型的划分。
150.根据二叉树结构的两种类型的划分可以包括垂直二叉划分(split_bt_ver)和水平二叉划分(split_bt_hor)。垂直二叉划分(split_bt_ver)意味着当前cu被在垂直方向上同等地划分成两个。如图5所示,通过垂直二叉划分,可以生成高度与当前cu相同并且宽度为当前cu的宽度的一半的两个cu。水平二叉划分(split_bt_hor)意味着当前cu被在水平方向上同等地划分成两个。如图5所示,通过水平二叉划分,可以生成高度为当前cu的高度的一半并且宽度与当前cu相同的两个cu。
151.根据三叉数结构的两种类型的划分可以包括垂直三叉划分(split_tt_ver)和水平三叉划分(split_tt_hor)。在垂直三叉划分(split_tt_ver)中,当前cu被以1:2:1的比率在垂直方向上划分。如图5所示,通过垂直三叉划分,可以生成高度与当前cu相同并且宽度为当前cu的宽度的1/4的两个cu,以及高度与当前cu相同并且宽度为当前cu的宽度的一半的cu。在水平三叉划分(split_tt_hor)中,当前cu被以1:2:1的比率在水平方向上划分。如图5所示,通过水平三叉划分,可以生成高度为当前cu的高度的1/4并且宽度与当前cu相同的两个cu,以及高度为当前cu的高度的一半并且宽度与当前cu相同的cu。
152.图7是示出了根据本公开的具有嵌套多类型树结构的四叉树中的块划分信息的信令机制的视图。
153.这里,ctu被视为四叉树的根节点,并且被首次分割成四叉树结构。指定是否对当前cu(四叉树的ctu或节点(qt_node))执行四叉树划分的信息(例如,qt_split_flag)被发信号通知。例如,当qt_split_flag具有第一值(例如,“1”)时,当前cu可以被四叉树分割。另外,当qt_split_flag具有第二值(例如,“0”)时,当前cu不四叉树分割,而是变成四叉树的叶节点(qt_leaf_node)。然后可以将每个四叉树叶节点进一步分割成多类型树结构。也就是说,四叉树的叶节点可以变成多类型树的节点(mtt_node)。在多类型树结构中,第一标志(例如,mtt_split_cu_flag)被发信号通知以指定当前节点是否被附加地分割。如果对应节点被附加地分割(例如,如果第一标志为1),则可以发信号通知第二标志(例如,mtt_split_cu_vertical_flag)以指定划分方向。例如,划分方向在第二标志为1的情况下可以是垂直方向,而在第二标志为0的情况下可以是水平方向。然后,可以发信号通知第三标志(例如,mtt_split_cu_binary_flag)以指定划分类型是二叉划分类型还是三叉划分类型。例如,划分类型在第三标志为1时可以是二叉划分类型,而在第三标志为0时可以是三叉划分类型。通过二叉划分或三叉划分获取的多类型树的节点可以被进一步分割成多类型树结构。然而,可以不将多类型树的节点分割成四叉树结构。如果第一标志为0,则多类型树的对应节点不再被划分,而是变成多类型树的叶节点(mtt_leaf_node)。与多类型树的叶节点对应的cu可以被用作上述最终编码单元。
154.基于mtt_split_cu_vertical_flag和mtt_split_cu_binary_flag,可以如下表1所示导出cu的多类型树划分模式(mttsplitmode)。在以下描述中,多类型树划分模式可以被称为多树划分类型或划分类型。
155.[表1]
[0156]
mttsplitmodemtt_split_cu_vertical_flagmtt_split_cu_binary_flagsplit_tt_hor00split_bt_hor01split_tt_ver10split_bt_ver11
[0157]
图8是示出了在应用四叉树之后通过应用多类型树来将ctu分割成多个cu的示例的视图。在图8中,粗体块边810表示四叉树分割,而剩余边820表示多类型树分割。cu可以对应于编码块(cb)。在实施方式中,cu可以包括亮度样本的编码块和与亮度样本对应的色度样本的两个编码块。
[0158]
可以基于根据画面/图像的颜色格式(色度格式,例如,4:4:4、4:2:2、4:2:0等)的
分量比率基于亮度分量(样本)cb或tb大小来导出色度分量(样本)cb或tb大小。在4:4:4颜色格式的情况下,可以将色度分量cb/tb大小设置为等于亮度分量cb/tb大小。在4:2:2颜色格式的情况下,可以将色度分量cb/tb的宽度设置为亮度分量cb/tb的宽度的一半并且可以将色度分量cb/tb的高度设置为亮度分量cb/tb的高度。在4:2:0颜色格式的情况下,可以将色度分量cb/tb的宽度设置为亮度分量cb/tb的宽度的一半并且可以将色度分量cb/tb的高度设置为亮度分量cb/tb的高度的一半。
[0159]
在实施方式中,当ctu的大小基于亮度样本单元为128时,cu的大小可以具有从128x128至4x4的大小,其是与ctu相同的大小。在一个实施方式中,在4:2:0颜色格式(或色度格式)的情况下,色度cb大小可以具有从64x64至2x2的大小。
[0160]
同时,在实施方式中,cu大小和tu大小可以是相同的。另选地,在cu区域中可以有多个tu。tu大小通常表示亮度分量(样本)变换块(tb)大小。
[0161]
可以基于作为预定值的最大允许tb大小maxtbsize来导出tu大小。例如,当cu大小大于maxtbsize时,可以从cu导出具有maxtbsize的多个tu(tb),并且可以以tu(tb)为单元执行变换/逆变换。例如,最大允许亮度tb大小可以是64x64并且最大允许色度tb大小可以是32x32。如果根据树结构分割的cb的宽度或高度大于最大变换宽度或高度,则cb可以被自动地(或隐式地)分割,直到满足水平和垂直方向上的tb大小极限为止。
[0162]
另外,例如,当应用帧内预测时,可以以cu(或cb)为单元导出帧内预测模式/类型,并且可以以tu(或tb)为单元执行邻近参考样本导出和预测样本生成过程。在这种情况下,在一个cu(或cb)区域中可以有一个或多个tu(或tb),并且在这种情况下,多个tu或(tb)可以共享相同的帧内预测模式/类型。
[0163]
同时,对于具有嵌套多类型树的四叉树编码树方案,可以将以下参数作为sps语法元素从编码装置发信号通知给解码装置。例如,作为表示四叉树的根节点大小的参数的ctu大小、作为表示最小允许四叉树叶节点大小的参数的minqtsize、作为表示最大允许二叉树根节点大小的参数的maxbtsize、作为表示最大允许三叉树根节点大小的参数的maxttsize、作为表示从四叉树叶节点起进行多类型树划分的最大允许层次深度的参数的maxmttdepth、作为表示最小允许二叉树树叶节点大小的参数的minbtsize、或作为表示最小允许三叉数叶节点大小的参数的minttsize中的至少一个被发信号通知。
[0164]
作为使用4:2:0色度格式的实施方式,可以将ctu大小设置为128x128亮度块和与这些亮度块对应的两个64x64色度块。在这种情况下,可以将minotsize设置为16x16,可以将maxbtsize设置为128x128,可以将maxttszie设置为64x64,可以将minbtsize和minttsize设置为4x4,并且可以将maxmttdepth设置为4。四叉树分割可以被应用于ctu以生成四叉树叶节点。四叉树叶节点可以被称作叶qt节点。四叉树叶节点的大小可以从16x16大小(例如,minotsize)至128x128大小(例如,ctu大小)。如果叶qt节点是128x128,则它可能未被附加地分割成二叉树/三叉树。这是因为,在这种情况下,即使被分割,它也超过maxbtsize和maxttszie(例如,64x64)。在其它情况下,叶qt节点可以被进一步分割成多类型树。因此,叶qt节点是多类型树的根节点,并且叶qt节点可以具有多类型树深度(mttdepth)0值。如果多类型树深度达到maxmttdepth(例如4),则可以不考虑进一步分割。如果多类型树节点的宽度等于minbtsize并且小于或等于2xminttsize,则可以不考虑进一步水平分割。如果多类型树节点的高度等于minbtsize并且小于或等于2xminttsize,则可
以不考虑进一步垂直分割。当不考虑分割时,编码装置可以跳过分割信息的信令。在这种情况下,解码装置可以导出具有预定值的分割信息。
[0165]
同时,一个ctu可以包括亮度样本的编码块(在下文中称为“亮度块”)和与其对应的色度样本的两个编码块(在下文中称为“色度块”)。上述编码树方案可以被同等地或单独地应用于当前cu的亮度块和色度块。具体地,可以将一个ctu中的亮度块和色度块分割成相同的块树结构,并且在这种情况下,树结构被表示为single_tree。另选地,可以将一个ctu中的亮度块和色度块分割成单独的块树结构,并且在这种情况下,可以将树结构表示为dual_tree。也就是说,当ctu被划分成双树时,用于亮度块的块树结构和用于色度块的块树结构可以分别存在。在这种情况下,可以将用于亮度块的块树结构称作dual_tree_luma,并且可以将用于色度分量的块树结构称dual_tree_chroma。对于p和b切片/拼块组,可以将一个ctu中的亮度块和色度块限制为具有相同的编码树结构。然而,对于i切片/拼块组,亮度块和色度块可以具有彼此分开的块树结构。如果应用单独的块树结构,则可以基于特定编码树结构来将亮度ctb划分成cu,并且可以基于另一编码树结构来将色度ctb分割成色度cu。也就是说,这意味着应用单独的块树结构的i切片/拼块组中的cu可以包括亮度分量的编码块或两个色度分量的编码块并且p或b切片/拼块组的cu可以包括三个颜色分量(一个亮度分量和两个色度分量)的块。
[0166]
尽管已经描述了具有嵌套多类型树的四叉树编码树结构,但是对cu进行分割的结构不限于此。例如,可以将bt结构和tt结构解释为多分割树(mpt)结构中包括的概念,并且可以将cu解释为通过qt结构和mpt结构被分割。在通过qt结构和mpt结构对cu进行分割的示例中,可以发信号通知包括关于qt结构的叶节点被分割成多少块的信息的语法元素(例如mpt_split_type)以及包括关于qt结构的叶节点被分割成垂直方向和水平方向中的那个的信息的语法元素(例如mpt_split_mode),以确定分割结构。
[0167]
在另一示例中,可以以与qt结构、bt结构或tt结构不同的方式对cu进行分割。也就是说,不同于根据qt结构将较低深度的cu分割成较高深度的cu的1/4,根据bt结构将较低深度的cu分割成较高深度的cu的1/2,或者根据tt结构将较低深度的cu分割成较高深度的cu的1/4或1/2,在一些情况下可以将较低深度的cu分割成较高深度的cu的1/5、1/3、3/8、3/5、2/3或5/8,并且对cu进行分割的方法不限于此。
[0168]
当树节点块的一部分超过画面的下画面边界和/或右画面边界时,可以限制对应树节点块,使得所有编码cu中的样本均位于画面边界中。在这种情况下,例如,可以应用以下划分规则。
[0169]
划分规则1:作为树节点块的一部分超过下画面边界和右画面边界二者的情况,当树节点块是大小大于最小qt大小的qt节点时,树节点块可以在qt划分模式下划分,当树节点块的大小等于或小于最小qt大小或者不是qt节点时,树节点块在水平二叉划分模式split_bt_hor模式下划分。
[0170]
划分规则2:作为不满足划分规则1并且树节点块的一部分超过下画面边界的情况,当树节点块是大小大于最小qt大小和最大bt大小的qt节点时,树节点块在qt划分模式下划分,当树节点块是大小等于或小于最小qt大小的btt节点时,树节点块在水平二叉划分模式下划分。
[0171]
划分规则3:作为不满足划分规则1和划分规则2并且树节点块的一部分超过右画
面边界的情况,当树节点块是大小大于最小qt大小和最大bt大小的qt节点时,树节点块在qt划分模式下划分,当树节点块的大小大于最小qt大小并且等于或小于最大bt大小时,树节点块在qt划分模式或水平二叉划分模式下划分。另选地,当树节点块是btt节点或者大小等于或小于最小qt大小时,树节点块在水平二叉划分模式下划分。
[0172]
如上所述,具有多类型树的四叉树编码块结构可以提供非常灵活的块分割结构。由于在多类型树中支持的分割类型,在一些情况下不同的分割图案可以潜在地产生相同的编码块结构。在编码装置和解码装置中,通过限制此类冗余分割图案的出现,可以减少分割信息的数据量。
[0173]
例如,图9示出了在二叉树划分和三叉树划分中可能出现的冗余划分图案。如图9所示,针对两步级别的一个方向的连续二叉划分910和920具有与三叉划分之后针对中心分割的二叉划分相同的编码块结构。在这种情况下,可以禁止针对三叉树划分的中心块930和940的二叉树划分。此禁止适用于所有画面的cu。当这种特定划分被禁止时,可以通过反映这种被禁止情况来修改对应语法元素的信令,从而减少针对划分发信号通知的比特的数量。例如,如图9中示出的示例所示,当针对cu的中心块的二叉树划分被禁止时,不发信号通知指定划分是二叉划分还是三叉划分的语法元素mtt_split_cu_binary_flag并且其值可以由解码装置导出为0。
[0174]
虚拟管线数据单元
[0175]
可以定义虚拟管线数据单元(vpdu)以用于画面内的管线处理。vpdu可以被定义为一个画面内的非交叠单元。在硬件解码设备中,连续vpdu可以由多个管线级同时处理。在大多数管线级中,vpdu大小可以与缓冲器大小大致成比例。因此,从硬件的角度当考虑缓冲器大小时,保持vpdu大小较小很重要。在大多数硬件解码设备中,vpdu大小可以设定为等于最大变换块(tb)大小。例如,vpdu大小可以是64
×
64(64
×
64亮度样本)大小。另选地,可以考虑上述三叉树(tt)和/或二叉树(bt)划分改变(增大或减小)vpdu大小。
[0176]
此外,为了将vpdu大小保持在64
×
64,可以应用以下限制中的至少一个。
[0177]
限制1:不允许对宽度或高度中的至少一个为128的cu的三叉树划分。
[0178]
限制2:不允许对宽度为128并且高度为64或更小的cu(即,128
×
n cu,n≤64)的水平二叉树划分。
[0179]
限制3:不允许对宽度为64或更小或者高度为128的cu(即,n
×
128cu,n≤64)的垂直二叉树划分。
[0180]
图10中示出在上述限制下现在允许的cu的划分示例。在图10中,粗实线表示块划分,剩余实线表示cu。
[0181]
参照图10,根据限制1,不允许对128
×
128cu 1010的垂直三叉树划分。另外,根据限制1,不允许对128
×
128cu 1020的水平三叉树划分。另外,根据限制3,不允许对64
×
128cu 1030的垂直二叉树划分。另外,根据限制2,不允许对128
×
64cu 1040的水平二叉树划分。另外,根据限制1,不允许对64
×
128cu 1050的垂直三叉树划分。另外,根据限制1,不允许对128
×
64cu 1060的水平三叉树划分。另外,根据限制1,不允许对64
×
128cu 1070的水平三叉划分。另外,根据限制1,不允许对128
×
64cu 1080的垂直三叉划分。
[0182]
同时,在帧内画面内的双树中,不同的分割结构可以应用于亮度编码树和色度编码树。在双树中,可以引入更长的编码管线,在色度编码树中,可以根据qtbt minqtsizec
值、minbtsizey和minttsizey的范围允许大小较小(例如,2
×
2、4
×
2和2
×
4)的色度块。然而,这可能使得难以设计实际解码设备。另外,在交叉分量线性模型(cclm)模式、平面模式、角模式等下需要乘法运算。为了解决上述问题,在双树中,可以通过分割限制来限制大小较小(例如,2
×
2、4
×
2和2
×
4)的色度块。
[0183]
帧间预测的概述
[0184]
在下文中,将描述根据本公开的帧间预测。
[0185]
根据本公开的图像编码装置/图像解码装置的预测单元可以以块为单元执行帧间预测以导出预测样本。帧间预测可以表示以依赖于除当前画面以外的画面的数据元素(例如,样本值、运动信息等)的方式导出的预测。当帧间预测应用于当前块时,可以基于由通过参考画面索引指示的参考画面上的运动向量指定的参考块(参考样本阵列)来导出当前块的预测块(预测块或预测样本阵列)。在这种情况下,为了减少在帧间预测模式下发送的运动信息量,可以基于邻近块与当前块之间的运动信息的相关性来以块、子块或样本为单元预测当前块的运动信息。运动信息可以包括运动向量和参考画面索引。运动信息还可以包括帧间预测类型(l0预测、l1预测、bi预测等)信息。当应用帧间预测时,邻近块可以包括存在于当前画面中的空间邻近块和存在于参考画面中的时间邻近块。包括参考块的参考画面和包括时间邻近块的参考画面可以是相同或不同的。时间邻近块可以被称为并置参考块、并置cu(colcu)或colblock,并且包括时间邻近块的参考画面可以被称为并置画面(colpic)或colpicture。例如,可以基于当前块的邻近块来构建运动信息候选列表,并且可以发信号通知指定哪个候选被选择(使用)的标志或索引信息以便导出当前块的运动向量和/或参考画面索引。
[0186]
可以基于各种预测模式来执行帧间预测。例如,在跳过模式和合并模式的情况下,当前块的运动信息可以等于所选择的邻近块的运动信息。在跳过模式的情况下,与合并模式不同,可以不发送残差信号。在运动信息预测(mvp)模式的情况下,所选择的邻近块的运动向量可以被用作运动向量预测子并且可以发信号通知运动向量差。在这种情况下,可以使用运动向量预测子和运动向量差的和来导出当前块的运动向量。在本公开中,mvp模式可以具有与高级运动向量预测(amvp)相同的含义。
[0187]
根据帧间预测类型(l0预测、l1预测、bi预测等),运动信息可以包括l0运动信息和/或l1运动信息。l0方向上的运动向量可以被称为l0运动向量或mvl0,而l1方向上的运动向量可以被称为l1运动向量或mvl1。基于l0运动向量的预测可以被称为l0预测,基于l1运动向量的预测可以被称为l1预测,而基于l0运动向量和l1运动向量二者的预测可以被称为bi预测。这里,l0运动向量可以指定与参考画面列表l0(l0)关联的运动向量,而l1运动向量可以指定与参考画面列表l1(l1)关联的运动向量。参考画面列表l0可以包括按输出顺序在当前画面之前的画面作为参考画面,而参考画面列表l1可以包括按输出顺序在当前画面之后的画面。先前画面可以被称为正向(参考)画面,而后续画面可以被称为反向(参考)画面。参考画面列表l0还可以包括按输出顺序在当前画面之后的画面作为参考画面。在这种情况下,在参考画面列表l0内,可以首先对先前画面编索引,然后可以对后续画面编索引。参考画面列表l1还可以包括按输出顺序在当前画面之前的画面作为参考画面。在这种情况下,在参考画面列表l1内,可以首先对后续画面编索引,然后可以对先前画面编索引。这里,输出顺序可以对应于画面顺序计数(poc)顺序。
[0188]
图11是例示了基于帧间预测的视频/图像编码方法的流程图。
[0189]
图12是例示了根据本公开的帧间预测单元180的配置的视图。
[0190]
图11的编码方法可以由图2的图像编码装置执行。具体地,步骤s1110可以由帧间预测单元180执行,并且步骤s1120可以由残差处理器执行。具体地,步骤s1120可以由减法器115执行。步骤s1130可以由熵编码器190执行。步骤s1130的预测信息可以由帧间预测单元180导出,并且步骤s1130的残差信息可以由残差处理器导出。残差信息是关于残差样本的信息。残差信息可以包括关于用于残差样本的量化变换系数的信息。如上所述,残差样本可以通过图像编码装置的变换器120被导出为变换系数,并且变换系数可以通过量化器130被导出为量化变换系数。关于量化变换系数的信息可以由熵编码器190通过残差编码过程来编码。
[0191]
一起参照图11和图12,图像编码装置可以对当前块执行帧间预测(s1110)。图像编码装置可以导出当前块的帧间预测模式和运动信息并且生成当前块的预测样本。这里,可以同时地执行帧间预测模式确定、运动信息导出和预测样本生成过程或者可以在其它过程之前执行其任何一个。例如,如图12所示,图像编码装置的帧间预测单元180可以包括预测模式确定单元181、运动信息导出单元182和预测样本导出单元183。预测模式确定单元181可以确定当前块的预测模式,运动信息导出单元182可以导出当前块的运动信息,并且预测样本导出单元183可以导出当前块的预测样本。例如,图像编码装置的帧间预测单元180可以通过运动估计在参考画面的预定区域(搜索区域)内搜索与当前块类似的块,并且导出其与当前块的差等于或小于预定准则或最小值的参考块。基于此,可以导出指定参考块位于其中的参考画面的参考画面索引,并且可以基于参考块与当前块之间的位置差来导出运动向量。图像编码装置可以在各种预测模式当中确定应用于当前块的模式。图像编码装置可以针对各种预测模式比较速率失真(rd)成本,并且确定当前块的最佳预测模式。然而,由图像编码装置确定当前块的预测模式的方法不限于上述示例,并且可以使用各种方法。
[0192]
例如,当跳过模式或合并模式适用于当前块时,图像编码装置可以从当前块的邻近块导出合并候选,并且使用所导出的合并候选来构建合并候选列表。另外,图像编码装置可以在通过合并候选列表中包括的合并候选指定的参考块当中导出其与当前块的差等于或小于预定准则或最小值的参考块。在这种情况下,可以选择与所导出的参考块关联的合并候选,并且可以生成指定所选择的合并候选的合并索引信息并且将其发信号通知给图像解码装置。可以使用所选择的合并候选的运动信息来导出当前块的运动信息。
[0193]
作为另一示例,当mvp模式适用于当前块时,图像编码装置可以从当前块的邻近块导出运动向量预测子(mvp)候选,并且使用所导出的mvp候选来构建mvp候选列表。另外,图像编码装置可以使用从mvp候选列表中包括的mvp候选当中选择的mvp候选的运动向量作为当前块的mvp。在这种情况下,例如,指示通过上述运动估计导出的参考块的运动向量可以被用作当前块的运动向量,在mvp候选当中具有与当前块的运动向量的差最小的运动向量的当前块可以是所选择的mvp候选。可以导出作为通过从当前块的运动向量减去mvp所获得的差的运动向量差(mvd)。在这种情况下,可以将指定所选择的mvp候选的索引信息和关于mvd的信息发信号通知给图像解码装置。另外,当应用mvp模式时,可以将参考画面索引的值构建为参考画面索引信息并且单独地发信号通知给图像解码装置。
[0194]
图像编码装置可以基于预测样本来导出残差样本(s1120)。图像编码装置可以通
过当前块的原始样本与预测样本之间的比较来导出残差样本。例如,可以通过从原始样本减去对应的预测样本来导出残差样本。
[0195]
图像编码装置可以对包括预测信息和残差信息的图像信息进行编码(s1130)。图像编码装置可以以比特流的形式输出编码的图像信息。预测信息可以包括预测模式信息(例如,跳过标志、合并标志或模式索引等)和关于运动信息的信息作为与预测过程有关的信息。在预测模式信息当中,跳过标志指定跳过模式是否适用于当前块,而合并标志指定合并模式是否适用于当前块。另选地,预测模式信息可以指定多种预测模式中的一种,诸如模式索引。当跳过标志和合并标志为0时,可以确定mvp模式适用于当前块。关于运动信息的信息可以包括作为用于导出运动向量的信息的候选选择信息(例如,合并索引、mvp标志或mvp索引)。在候选选择信息当中,合并索引可以在合并模式适用于当前块时被发信号通知并且可以是用于选择合并候选列表中包括的合并候选中的一个的信息。在候选选择信息当中,mvp标志或mvp索引可以在mvp模式适用于当前块时被发信号通知并且可以是用于选择mvp候选列表中的mvp候选中的一个的信息。另外,关于运动信息的信息可以包括关于上述mvd的信息和/或参考画面索引信息。另外,关于运动信息的信息可以包括指定是应用l0预测、l1预测还是bi预测的信息。残差信息是关于残差样本的信息。残差信息可以包括关于用于残差样本的量化变换系数的信息。
[0196]
输出比特流可以被存储在(数字)存储介质中并且被发送到图像解码装置或者可以经由网络被发送到图像解码装置。
[0197]
如上所述,图像编码装置可以基于参考样本和残差样本来生成重构画面(包括重构样本和重构块的画面)。这是为了图像编码装置导出与由图像解码装置执行的预测结果相同的预测结果,从而提高编码效率。因此,图像编码装置可以将重构画面(或重构样本和重构块)存储在存储器中并且将其用作用于帧间预测的参考画面。如上所述,环路内滤波过程还适用于重构画面。
[0198]
图13是例示了基于帧间预测的视频/图像解码方法的流程图。
[0199]
图14是例示了根据本公开的帧间预测单元260的配置的视图。
[0200]
图像解码装置可以执行与由图像编码装置执行的操作对应的操作。图像解码装置可以基于接收到的预测信息来对当前块执行预测并且导出预测样本。
[0201]
图13的解码方法可以由图3的图像解码装置执行。步骤s1310至s1330可以由帧间预测单元260执行,并且步骤s1310的预测信息和步骤s1340的残差信息可以由熵解码器210从比特流获得。图像解码装置的残差处理器可以基于残差信息来导出当前块的残差样本(s1340)。具体地,残差处理器的解量化器220可以基于根据残差信息而导出的解量化变换系数来执行解量化以导出变换系数,并且残差处理器的逆变换器230可以对变换系数执行逆变换以导出当前块的残差样本。步骤s1350可以由加法器235或重构器执行。
[0202]
具体地,图像解码装置可以基于所接收到的预测信息来确定当前块的预测模式(s1310)。图像解码装置可以基于预测信息中的预测模式信息来确定哪种帧间预测模式适用于当前块。
[0203]
例如,可以基于跳过标志来确定跳过模式是否适用于当前块。另外,可以基于合并标志来确定是合并模式还是mvp模式适用于当前块。另选地,可以基于模式索引来选择各种帧间预测模式候选中的一个。帧间预测模式候选可以包括跳过模式、合并模式和/或mvp模
式或者可以包括将在下面描述的各种帧间预测模式。
[0204]
图像解码装置可以基于所确定的帧间预测模式来导出当前块的运动信息(s1320)。例如,当跳过模式或合并模式适用于当前块时,图像解码装置可以构建将在下面描述的合并候选列表,并且选择合并候选列表中包括的合并候选中的一个。可以基于上述候选选择信息(合并索引)来执行选择。可以使用所选择的合并候选的运动信息来导出当前块的运动信息。例如,可以将所选择的合并候选的运动信息用作当前块的运动信息。
[0205]
作为另一示例,当mvp模式适用于当前块时,图像解码装置可以构建mvp候选列表,并且使用从mvp候选列表中包括的mvp候选当中选择的mvp候选的运动向量作为当前块的mvp。可以基于上述候选选择信息(mvp标志或mvp索引)来执行选择。在这种情况下,可以基于关于mvd的信息来导出当前块的mvd,并且可以基于当前块的mvp和mvd来导出当前块的运动向量。另外,可以基于参考画面索引信息来导出当前块的参考画面索引。可以将在当前块的参考画面列表中通过参考画面索引指示的画面导出为被参考以进行当前块的帧间预测的参考画面。
[0206]
图像解码装置可以基于当前块的运动信息来生成当前块的预测样本(s1330)。在这种情况下,可以基于当前块的参考画面索引来导出参考画面,并且可以使用参考画面上通过当前块的运动向量指示的参考块的样本来导出当前块的预测样本。在一些情况下,还可以对当前块的预测样本中的全部或一些执行预测样本滤波过程。
[0207]
例如,如图14所示,图像解码装置的帧间预测单元260可以包括预测模式确定单元261、运动信息导出单元262和预测样本导出单元263。在图像解码装置的帧间预测单元260中,预测模式确定单元261可以基于所接收到的预测模式信息来确定当前块的预测模式,运动信息导出单元262可以基于所接收到的运动信息来导出当前块的运动信息(运动向量和/或参考画面索引等),并且预测样本导出单元263可以导出当前块的预测样本。
[0208]
图像解码装置可以基于所接收到的残差信息来生成当前块的残差样本(s1340)。图像解码装置可以基于预测样本和残差样本来生成当前块的重构样本并且基于此来生成重构画面(s1350)。此后,环路内滤波过程适用于如上所述的重构画面。
[0209]
如上所述,帧间预测过程可以包括确定帧间预测模式的步骤、根据所确定的预测模式来导出运动信息的步骤、以及基于所导出的运动信息来执行预测(生成预测样本)的步骤。如上所述,帧间预测过程可以由图像编码装置和图像解码装置执行。
[0210]
子画面的定义
[0211]
在下文中,将描述根据本公开的子画面。
[0212]
子画面可以构建编码画面的矩形区域。子画面的大小可以在画面内不同地设定。对于属于一个序列的所有画面,特定单独的子画面的大小和位置可以同等地设定。单独的子画面序列可以被独立地解码。拼块和切片(和ctb)可以被限制为不跨越子画面边界。为此,编码装置可以执行编码,使得子画面被独立地解码。为此,可能需要比特流中的语义约束。另外,对于属于一个序列的所有画面,子画面中的拼块、切片和图块的布置可以不同地构建。
[0213]
子画面设计目的
[0214]
子画面设计旨在小于画面级别或大于切片或拼块组级别的范围的抽象或封装。因此,运动约束拼块集(mcts)子集的vcl nal单元可以从一个vvc比特流提取,并且被重定向
至另一vvc比特流而没有诸如vcl级别的修改的困难。这里,mcts是允许拼块之间的空间和时间独立性的编码技术,并且当应用mcts时,无法参考关于当前拼块所属的mcts中不包括的拼块的信息。当图像被划分成mcts并编码时,可进行mcts的独立传输和解码。
[0215]
这种子画面设计的优点在于改变混合分辨率视口相关360
°
流方案中的观看方向。
[0216]
子画面用例
[0217]
在视口上提供扩展真实空间分辨率的视口相关360
°
流方案中需要使用子画面。例如,从6k(6144
×
3072)erp(等矩形投影)画面或具有与其等效的4k解码性能(hevc级别5.1)的立方体映射投影(cmp)分辨率衍生的覆盖视口的拼块中的方案包括在omaf的d.6.3和d.6.4节中并在vr行业论坛指南采用。已知这种分辨率适合于使用四倍hd(2560
×
1440)显示面板的头戴式显示器。
[0218]
编码:内容可以利用包括具有1656
×
1536立方体面大小的分辨率和具有768
×
768立方体面大小的分辨率的两个空间分辨率来编码。在这种情况下,在所有比特流中,可以使用6
×
4拼块网格,并且mcts可以在各个拼块位置处编码。
[0219]
流式mcts选择:可以从高分辨率比特流选择12个mcts,并且可以从低分辨率比特流获得12个附加mcts。因此,可以从高分辨率比特流生成半球(180
°×
180
°
)的流式内容。
[0220]
使用mcts和比特流的合并的解码:接收单个时间实例的mcts,其可以被合并成具有符合hevc级别5.1的1920
×
4608分辨率的编码画面。在合并画面的另一选项中,四个拼块列具有768的宽度值,两个拼块列具有384的宽度值,三个拼块行具有768的高度值,从而构建由3840
×
2304亮度样本组成的画面。这里,宽度和高度单位可以是亮度样本数量的单位。
[0221]
子画面信令
[0222]
可以如图15所示在sps级别执行子画面的信令。
[0223]
图15是例示用于用信号通知子画面语法元素的sps语法的视图。
[0224]
参照图15,语法元素pic_width_max_in_luma_samples可以参考sps以亮度样本为单位指定各个解码画面的最大宽度。pic_width_max_in_luma_samples的值可以大于0并且可以具有mincbsizey的整数倍的值。这里,mincbsizey可以指定亮度分量编码块的最小大小。
[0225]
语法元素pic_height_max_in_luma_samples可以参考sps以亮度样本为单位指定各个解码画面的最大高度。pic_height_max_in_luma_samples可以大于0并且可具有mincbsizey的整数倍的值。
[0226]
语法元素subpic_grid_col_width_minus1可以用于指定子画面标识符网格的单独元素的宽度。例如,通过将1与subpic_grid_col_width_minus1相加而获得的值可以以4个样本为单位指定子画面标识符网格的单独元素的宽度。subpic_grid_col_width_minus1的长度可为ceil(log2(pic_width_max_in_luma_samples/4))比特。
[0227]
因此,指定子画面网格中的列数的变量numsubpicgridcols可以如下式1所示推导。
[0228]
[式1]
[0229]
numsubpicgridcols=(pic_width_max_in_luma_samples subpic_grid_col_width_minus1*4 3)/(subpic_grid_col_width_minus1*4 4)
[0230]
接下来,语法元素subpic_grid_row_height_minus1可以用于指定子画面标识符
网格的各个元素的高度。例如,通过将1与subpic_grid_row_height_minus1相加而获得的值可以以4个样本为单位指定子画面标识符网格的单独元素的高度。subpic_grid_row_height_minus1的长度可为ceil(log2(pic_height_max_in_luma_samples/4))比特。
[0231]
因此,指定子画面网格中的行数的变量numsubpicgridrows可以如下式2所示推导。
[0232]
[式2]numsubpicgridrows=(pic_height_max_in_luma_samples subpic_grid_row_height_minus1*4 3)/(subpic_grid_row_height_minus1*4 4)
[0233]
接下来,语法元素subpic_grid_idx[i][j]可以指定网格位置(i,j)处的子画面索引。subpic_grid_idx[i][j]的长度可为ceil(log2(max_subpics_minus1 1))比特。
[0234]
变量subpictop[subpic_grid_idx[i][j]]、subpicleft[subpic_grid_idx[i][j]]、subpicwidth[subpic_grid_idx[i][j]]、subpicheight[subpic_grid_idx[i][j]]和numsubpic可以使用图16的算法推导。
[0235]
接下来,语法元素subpic_treated_as_pic_flag[i]可以指定在解码处理中子画面是否被视为与正常画面相同。例如,subpic_treated_as_pic_flag[i]的第一值(例如,0)可以指定在解码处理中cvs的单独编码画面中包括的第i子画面不被视为画面。subpic_treated_as_pic_flag[i]的第二值(例如,1)可以指定在解码处理中cvs的单独编码画面中包括的第i子画面被视为画面。当未从比特流获得subpic_treated_as_pic_flag[i]的值时,subpic_treated_as_pic_flag[i]的值可以被推断为第一值(例如,0)。
[0236]
语法元素loop_filter_across_subpic_enabled_flag[i]可以指定是否能够跨cvs的单独编码画面中包括的第i子画面的边界执行环路内滤波。例如,loop_filter_across_subpic_enabled_flag[i]的第一值(例如,0)可以指定不能够跨cvs的单独编码画面中包括的第i子画面的边界执行环路内滤波。loop_filter_across_subpic_enabled_flag[i]的第二值(例如,1)可以指定能够跨cvs的单独编码画面中包括的第i子画面的边界执行环路内滤波。当未从比特流获得loop_filter_across_subpic_enabled_flag[i]的值时,loop_filter_across_subpic_enabled_flag[i]的值可以被推断为第一值(例如,0)。
[0237]
同时,为了比特流一致性,可以应用以下约束。对于任两个子画面subpica和subpicb,当subpica的索引小于subpicb的索引时,subpica的所有编码nal单元将具有低于subpicb的所有编码nal单元的解码顺序。另选地,在执行解码之后,子画面的形状将具有构建画面边界的完美左边界和完美上边界或者先前解码的子画面的边界。
[0238]
在下文中,将参照图17和图18详细描述基于子画面结构对图像进行编码/解码的方法。
[0239]
图17是例示根据本公开实施方式的图像编码装置使用子画面对图像进行编码的方法的视图。
[0240]
图像编码装置可以基于子画面结构对当前画面进行编码。另选地,图像编码装置可以对构建当前画面的至少一个子画面进行编码并且输出包括关于至少一个(编码)子画面的(编码)信息的(子)比特流。
[0241]
参照图17,图像编码装置可以将输入画面划分成多个子画面(s1710)。另外,图像编码装置可以生成关于子画面的信息(s1720)。这里,关于子画面的信息可以包括关于子画面的区域的信息和/或关于要用于子画面的网格间隔的信息。另外,关于子画面的信息可以
包括指定各个子画面是否能够被视为画面的信息和/或指定是否能够跨各个子画面的边界执行环路内滤波的信息。
[0242]
图像编码装置可以基于关于子画面的信息对至少一个子画面进行编码。例如,可以基于关于子画面的信息对各个子画面进行独立编码。另外,图像编码装置可以对包括关于子画面的信息的图像信息进行编码并且输出比特流(s1730)。这里,子画面的比特流可以称为子流或子比特流。
[0243]
图18是例示根据实施方式的图像解码装置使用子画面对图像进行解码的方法的视图。
[0244]
图像解码装置可以使用从(子)比特流获得的至少一个(编码)子画面的(编码)信息对属于当前画面的至少一个子画面进行解码。
[0245]
参照图18,图像解码装置可以从比特流获得关于子画面的信息(s1810)。这里,比特流可以包括子画面的子流或子比特流。可以在比特流的hls中构建关于子画面的信息。另外,图像解码装置可以基于关于子画面的信息推导至少一个子画面(s1820)。
[0246]
图像解码装置可以基于关于子画面的信息对至少一个子画面进行解码(s1830)。例如,当包括当前块的当前子画面被视为画面时,当前子画面可以被独立解码。另外,当能够跨当前子画面的边界执行环路内滤波时,可以对当前子画面的边界以及与该边界相邻的相邻子画面的边界执行环路内滤波(例如,去块滤波)。另外,在当前子画面的边界与画面边界重合时,可以不执行跨当前子画面的边界的环路内滤波。图像解码装置可以基于cabac方法、预测方法、残差处理方法(变换和量化)、环路内滤波方法等对子画面进行解码。另外,图像解码装置可以输出至少一个解码的子画面或包括至少一个子画面的当前画面。解码的子画面可以以输出子画面集(ops)的形式输出。例如,关于360度图像或全向图像,当仅渲染当前画面的一部分时,可以仅对当前画面中的所有子画面中的一些子画面进行解码,并且可以根据用户的视口来渲染所有或一些解码的子画面。
[0247]
滤波的概述
[0248]
以下,将描述根据本公开的滤波方法。
[0249]
可以对由图像编码/解码装置生成的重构画面执行滤波。作为执行滤波的结果,可以生成修改的重构画面,并且图像解码装置可以将修改的重构画面确定为最终解码画面。另外,在图像编码/解码装置中,修改的重构画面可以被存储在解码画面缓冲器(dpb)或存储器中,然后可以在对画面进行编码/解码时用作参考画面。
[0250]
在本公开中,根据本公开的一些实施方式的滤波可以用作与环路内滤波相同的含义。用于滤波的滤波器可以包括去块滤波器、样本偏移滤波器(sao)滤波器、自适应环路滤波器(slf)或双边滤波器中的至少一个。去块滤波器、sao滤波器、alf和/或双边滤波器中的至少一个可以依次应用于重构画面,从而生成修改的重构画面。应用滤波器的顺序可以在图像编码/解码设备中预设。在一个示例中,在去块滤波器应用于重构画面之后,可以应用sao滤波器。在另一示例中,在去块滤波器应用于重构画面之后,可以应用alf。在本公开中,滤波可以由图2的滤波器160和/或图3的滤波器240中的至少一个执行。
[0251]
去块滤波器可以消除在重构画面的边界处生成的失真。例如,去块滤波器可以推导作为重构画面中的块之间的边界的目标边界,并且设定目标边界的边界强度(bs)。图像编码/解码装置可以通过基于设定的边界强度对目标边界应用滤波来对目标边界执行去块
滤波。这里,可以基于与目标边界相邻的两个块的预测模式、运动向量差、参考画面是否相同或者是否存在非零有效系数中的至少一个来确定边界强度。
[0252]
作为另一示例,sao滤波器可以以样本为单位补偿重构画面与原始画面之间的偏移差。sao滤波器可以由诸如带偏移滤波器或偏移滤波器的滤波器类型实现。当使用sao滤波器时,样本可以根据sao滤波器类型被分类为不同的类别,并且可以基于类别向各个样本添加预定偏移值。关于sao滤波器的信息可以包括关于是否应用sao滤波器的信息、sao滤波器类型信息和/或sao偏移值信息中的至少一个。在一个示例中,sao滤波器可以被限制为应用于应用了去块滤波器的重构画面。
[0253]
alf可以是对重构画面应用根据滤波器形状的滤波器系数的样本单元滤波器。图像编码装置可以通过将重构画面与原始画面比较来用信号通知是否应用alf、alf的形状和/或滤波器系数中的至少一个。也就是说,关于alf的信息可以包括关于是否应用alf的信息、alf滤波器形状信息和/或alf滤波系数信息中的至少一个。在一个示例中,alf可以被限制为应用于应用了去块滤波器的重构画面。
[0254]
去块滤波器的概述
[0255]
图19是例示去块滤波器的应用方法的视图。
[0256]
如上所述,去块滤波器可以应用于重构画面。可以基于画面的编码/解码顺序对包括在当前块中的各个cu(或tu)的边界应用去块滤波器。
[0257]
在一些实施方式中,去块滤波器可以首先应用于cu的垂直边界,然后应用于编码/解码块的水平边界。另选地,去块滤波器可以首先应用于cu的水平边界,然后应用于cu的垂直边界。去块滤波器可以应用于所有cu的边界、所有cu的所有子块的边界、所有tu的边界和/或所有tu中的所有子块的边界。
[0258]
参照图19,图像编码/解码装置可以推导将应用去块滤波的目标边界(s1910)。另外,图像编码/解码装置可以确定目标边界的边界强度(s1920)。例如,可以根据与目标边界相邻的变换块的条件来确定边界强度bs。在本公开中,边界强度也可以称为边界滤波强度或滤波强度。在以下描述中,当目标边界是垂直边界时,基于目标边界,左块可以被定义为p块,右块可以被定义为q块。另外,当目标边界是水平边界,基于目标边界,上块可以被定义为p块,下块可以被定义为q块。另外,p块样本可以由p0表示,q块样本可以由q0表示。这里,p和q可以是p块和q块中面向目标边界的样本。例如,p0可以是与目标边界相邻的左块或上块的样本,q0可以是与目标边界相邻的右块或下块的样本。
[0259]
在一个示例中,当基于块的量化残差域差分脉冲编码调制(bdpcm)应用于包括在一个亮度块中的p块样本和q块样本时,目标边界的边界强度可以被确定为第一值(例如,0)。
[0260]
在另一示例中,当对包括在一个cu中的p块样本和q块样本进行帧内预测时,目标边界的边界强度可以被确定为第三值(例如,2)。作为另一示例,当目标边界是tu的边界并且组合帧间和帧内预测(ciip)应用于包括在一个cu中的p块样本和q块样本时,目标边界的边界强度可以被确定为第三值(例如,2)。作为另一示例,当目标边界是tu的边界并且包括在一个tu中的p块样本和q块样本中的至少一个具有非零变换系数级别时,目标边界的边界强度可以被确定为第二值(例如,1)。作为另一示例,当包括p块样本的cu的子块的预测模式不同于包括q块样本的cu的子块的预测模式时,目标边界的边界强度可以被确定为第二值
(例如,1)。
[0261]
在另一示例中,在当前块是亮度块并且满足以下条件中的至少一个时,目标边界的边界强度可以被确定为第二值(例如,1)。同时,当上述条件全部不满足时,目标边界的边界强度可以被确定为第一值(例如,0)。
[0262]
例如,当包括p块样本的cu中的子块和包括q块样本的cu中的子块二者均以ibc模式编码/解码并且各个子块的运动向量的水平值或垂直值差等于或大于以1/4亮度样本为单位的4个单位的值时,目标边界的边界强度可以被确定为第二值(例如,1)。
[0263]
另选地,当包括p块样本的cu中的子块和包括q块样本的cu中的子块参考不同的参考画面或具有不同数量的运动向量时,目标边界的边界强度可以被确定为第二值(例如,1)。
[0264]
另选地,当使用一个运动向量来预测包括p块样本的cu中的子块和包括q块样本的cu中的子块或者各个子块的运动向量的水平值或垂直值之间的差等于或大于以1/4亮度样本为单位的4个单位的值时,目标边界的边界强度可以被确定为第二值(例如,1)。
[0265]
另选地,当使用两个运动向量和两个不同的参考画面来预测包括p块样本的cu中的子块,使用相同参考画面的两个运动向量来预测包括q块样本的cu中的子块,并且相同参考画面的运动向量的水平值或垂直值之间的差等于或大于以1/4亮度样本为单位的4个单位的值时,目标边界的边界强度可以被确定为第二值。
[0266]
另选地,当使用相同参考画面的两个运动向量来预测包括p块样本的cu的子块并且使用相同参考画面的两个运动向量来预测包括q块样本的cu的子块时,如果满足以下第一和第二条件,则目标边界的边界强度可以被确定为第二值(例如,1)。这里,第一条件可以意指对于用于预测各个子块的列表0运动向量,水平分量或垂直分量之间的绝对值差等于或大于以1/4亮度样本为单位的4个单位的值,或者对于用于预测各个子块的列表1运动向量,水平分量或垂直分量之间的绝对值差等于或大于以1/4亮度样本为单位的4个单位的值的情况。另外,第二条件可以意指对于用于预测包括p块样本的cu中的子块的列表0运动向量和用于预测包括q块样本的cu中的子块的列表1运动向量,水平分量之间的绝对值差或垂直分量之间的绝对值差等于或大于以1/4亮度样本为单位的4个单位的值,或者在用于预测包括p块样本的cu的子块的列表1运动向量与用于预测包括q块样本的cu的子块的列表0运动向量之间水平分量之间的绝对值差或垂直分量之间的绝对值差等于或大于以1/4亮度样本为单位的4个单位的值的情况。
[0267]
图像编码/解码装置可以根据基于上述条件而确定的边界强度对目标边界应用去块滤波器(s1930)。例如,当目标边界的边界强度被确定为第一值(例如,0)时,图像编码/解码装置可以不对目标边界应用去块滤波器。可以不同地确定应用于目标边界的去块滤波器的滤波器强度(例如,强或弱)和/或滤波器长度。同时,当要滤波的样本是亮度样本时,可以使用短滤波器或长滤波器来执行滤波。另选地,当要滤波的样本是色度样本时,可以使用色度滤波器来执行滤波。
[0268]
要滤波的样本的确定
[0269]
去块滤波器所应用于的重构样本p
i,k
和q
j,k
可以在垂直边界中如下式3所示指定。
[0270]
[式3]
[0271]qj,k
=recpicture[xcb xbl j][ycb ybl k]
[0272]
p
i,k
=recpicture[xcb xbl-i-1][ycb ybl k]
[0273]
滤波所应用于的重构样本p
i,k
和q
j,k
可以在水平边界中如下式4所示指定。
[0274]
[式4]
[0275]
p
i,k
=recpicture[xcb xbl k][ycb ybl-i-1]
[0276]qj,k
=recpicture[xcb xbl k][ycb ybl j]
[0277]
在式3和式4中,i具有等于或大于0且等于或小于针对p块的最大滤波器长度(例如,maxfilterlengthp)的值,j具有等于或大于0且等于或小于针对q块的最大滤波器长度(例如,maxfilterlengthq)的值,并且k可以具有等于或大于0并且等于或小于3的值。另外,xcb和ycb可以指定执行去块滤波的当前cu的左上样本的位置(xcb,ycb),并且xbl和ybl可以指定边界的位置(xbl,ybl),该边界的位置(xbl,ybl)用于基于(xcb,ycb)来指定执行去块滤波的p块和q块。
[0278]
图20是例示去块滤波器所应用于的重构样本的视图。
[0279]
参照图20,当前cu的左上样本的位置可以是(xcb,ycb)(2010)。当对当前cu的垂直边界执行去块滤波时,可以使用第一样本位置(xcb xbl1,ycb ybl1)(2020)来指定执行去块滤波的p块2021和q块2022。另外,当对当前cu的水平边界执行去块滤波时,可以使用第二样本位置(xcb xbl2,ycb ybl2)(2030)来指定执行去块滤波的p块2031和q块2031。在每种情况下,p块2021和2031可以包括多个重构样本pi,k。另外,q块2022和2032可以包括多个重构样本qj,k。
[0280]
滤波器强度
[0281]
在hevc的情况下,与去块滤波器的滤波器强度由从平均量化参数qp
l
推导的变量β和tc控制不同,根据本公开的实施方式的去块滤波器的滤波器强度可以通过将根据重构样本的亮度级别的预定偏移添加到平均量化参数来控制。这里,重构样本的亮度水平ll可以如下式5所示推导出。
[0282]
[式5]
[0283]
ll=((p
0,0
p
0,3
q
0,0
q
0,3
)》》2)/(1《《bitdepth)
[0284]
其中,p
0,0
和p
0,3
可以表示与目标边界相邻并且在p块中彼此间隔最远的重构样本,q
0,0
和q
0,3
可以表示与目标边界相邻并且在q块中彼此间隔最远的重构样本。另外,bitdepth可以表示重构深度的位深度。
[0285]
添加到平均量化参数qp
l
的预定偏移(例如,qpoffset)可以通过sps用信号通知并且取决于传递函数。
[0286]
对于亮度分量的重构样本,双线性滤波器(或更强的去块滤波器)可以应用于位于相对大的块的任何一个边界上的样本。这里,相对大的块可以指具有32x32或更大尺寸的块。相比之下,对于色度分量的重构样本,应用强去块滤波器。这里,强去块滤波器可以定义为如下式6所示。
[0287]
[式6]
[0288]
p2′
=(3*p3 2*p2 p1 p0 q0 4)》》3
[0289]
p1′
=(2*p3 p2 2*p1 p0 q0 q1 4)》》3
[0290]
p0′
=(p3 p2 p1 2*p0 q0 q1 q2 4)》》3
[0291]
其中,p1到p3可以表示p块中的重构样本,并且q0到q2可以表示q块中的重构样本。
可以使用p块中的重构样本和q块中的重构样本来推导p块中的经滤波的重构样本p0′
至p2′

[0292]
在本公开中,应用于色度分量的重构样本的强去块滤波器可以称为色度滤波器。色度滤波器可应用于8x8色度样本网格,并且可用于水平和垂直边界两者。例如,可以仅在色度块的水平边缘和垂直边缘都等于或大于8个色度样本单元并且满足以下所有第一条件至第三条件时,选择色度滤波器。这里,第一条件可以意指色度块的边界强度等于相对较大的亮度块的边界强度。例如,当色度块的边界强度具有第二值(例如,1)或第三值(例如,2)时,可以选择色度滤波器。第二条件和第三条件可以等于针对亮度分量的重构样本的强滤波器确定条件,例如,on/off确定条件和强滤波器确定条件。
[0293]
另外,可以基于与当前块的边界相邻的相邻块的属性来修改色度滤波的边界强度,如表2所示。
[0294]
【表2】
[0295][0296]
参照表2,当与当前块相邻的至少一个相邻块进行帧内预测时,对于所有颜色分量(例如,y、u和v),当前块的边界强度可以具有第三值(例如,2)。另外,当与当前块相邻的至少一个相邻块具有非零变换系数时,对于所有颜色分量,当前块的边界强度可以具有第二值(例如,1)。另外,当与当前块相邻的相邻块的运动向量之间的绝对差值等于或大于一个整数亮度样本时,当前块的边界强度可以仅针对亮度分量而存在,并且可以具有第二值(例如,1)。另外,当运动预测参考了与当前块相邻的相邻块中的不同运动向量时,当前块的边界强度可以仅针对亮度分量而存在并且可以具有第二值(例如,1)。此外,当所有上述条件都不满足时,对于所有颜色分量,当前块的边界强度可以具有第一值(例如,0)。
[0297]
在一个示例中,可以基于8x8网格应用去块滤波器。例如,去块滤波器可以应用于在8x8网格中对齐并与子块边界重合的cu边界。在下文中,子块边界可以包括基于子块的tmvp和/或仿射模式下的pu边界,以及sbt和/或isp模式下的tu边界。在sbt和/或isp模式下,tu边界的去块滤波处理可以按照与hevc情况下相同的逻辑进行。例如,当跨子块中的块边缘存在非零系数时,可以执行针对tu边界的去块滤波。另外,在基于子块的tmvp和/或仿射模式下,pu边界的去块滤波处理可以按照与hevc情况下相同的逻辑进行。例如,基于相邻子块的运动向量之间的差值和参考画面之间的差值,可以执行针对pu边界的去块滤波。
[0298]
相关技术的问题
[0299]
当各个子画面被视为画面时,各个子画面可以被独立地编码/解码。这里,独立编码/解码可以意味着与不同子画面的编码/解码信息无关地确定子画面的块划分结构(例如,单树结构、双树结构等)、预测模式(例如,帧内预测、帧间预测等)、编码/解码顺序等。例如,当第一子画面和第二子画面中的每一者被视为画面时,可以基于帧内预测对第一子画
面进行编码/解码,并且可以基于帧间预测对第二子画面进行编码/解码。可以使用subpic_treated_as_pic_flag以高级语法(例如,sps语法)来用信号通知各个子画面是否被视为画面,如上面参照图15所描述的。例如,不被视为画面的子画面的subpic_treated_as_pic_flag可以具有第一值(例如,0)。相比之下,被视为画面的子画面的subpic_treated_as_pic_flag可以具有第二值(例如,1)。
[0300]
同时,对于各个子画面的边界,可以执行跨边界的环路内滤波(例如,去块滤波)。在本公开中,跨子画面的边界的环路内滤波可以被称为跨环路内滤波或跨滤波。另外,用于跨滤波的滤波器可以称为跨环路内滤波器或跨滤波器。可以使用上面参照图15描述的sps中的loop_fliter_across_subpic_enabled_flag来用信号通知跨滤波器是否适用于各个子画面的边界。例如,跨滤波器不适用于的子画面的loop_fliter_across_subpic_enabled_flag可以具有第一值(例如,0)。相比之下,跨滤波器适用于的子画面的loop_fliter_across_subpic_enabled_flag可以具有第二值(例如,1)。
[0301]
可以独立地确定跨滤波器是否适用于子画面的边界,而不管子画面是否被视为画面。另外,可以独立地确定跨滤波器是否适用于子画面的边界,而不管与子画面的边界相邻的相邻子画面的属性。
[0302]
即使跨滤波器不适用于被视为画面的当前子画面的边界,但由于跨滤波是对与该边界相邻的相邻子画面的边界执行的,因此可以在当前子画面(或并置子画面)中缩小被视为画面的区域。
[0303]
图21和图22是例示在子画面中缩小被视为画面的区域的示例的视图。
[0304]
首先,参照图21,第一子画面2110可以不被视为画面(例如,subpic_treated_as_pic_flag[0]=0)。另外,跨滤波器可以应用于第一子画面2110的左垂直边界(例如,loop_filter_across_subpic_enabled_flag[0]=1)。
[0305]
相比之下,与第一子画面2110的左垂直边界相邻的第二子画面2120可以被视为画面(例如,subpic_treated_as_pic_flag[1]=1)。另外,跨滤波器不适用于第二子画面2120的右垂直边界(例如,loop_filter_across_subpic_enabled_flag[1]=0)。
[0306]
即使跨滤波器不适用于被视为画面的第二子画面2120的右垂直边界,但是因为跨滤波器应用于相邻的第一子画面2110的左垂直边界,所以第二子画面2120的右垂直边界可以与第一子画面2120的左垂直边界一起被滤波。
[0307]
结果,在经滤波的区域2130中,可以使用第一子画面2110的样本值和第二子画面2120的样本值来改变样本值。因此,在第二子画面2120中,被视为画面的区域可以缩小到除经滤波的右边界之外的区域。
[0308]
作为另一示例,参照图22,作为包括当前块的当前画面的第四子画面(sub-picture[4])可以被视为画面(例如,subpic_treated_as_pic_flag=1)。当基于子块的时间运动向量预测(tmvp)模式应用于当前块时,参考画面中的第四子画面sub-picture[4]可以被引用为当前块的并置子画面。也就是说,参考画面中的第四子画面sub-picture[4]可以包括当前块的时间参考块(并置参考块)。
[0309]
在参考画面中的第四子画面sub-picture[4]中,假设跨滤波器应用于左垂直边界和上水平边界,并且跨滤波器不应用于右垂直边界和下水平边界。
[0310]
由于跨滤波器不应用于参考画面中第四子画面sub-picture[4]的右垂直边界,但
与右垂直边界相邻的第五子画面sub-picture[5]的左垂直边界是跨滤波的,因此参考画面中第四子画面sub-picture[4]的右垂直边界也可以被滤波。另外,由于跨滤波器不应用于参考画面中第四子画面sub-picture[4]的下水平边界,但是与下水平边界相邻的第七子画面sub-picture[7]的上水平边界是跨滤波的,因此参考画面中第四子画面sub-picture[4]的下水平边界也可以被滤波。结果,可以使用不同子画面sub-picture[0]到sub-picture[3]以及sub-picture[5]到sub-picture[8]的样本值来修改参考画面中的第四子画面sub-picture[4]中的经滤波的区域的样本值。因此,在参考画面中的第四子画面sub-picture[4]中,可以将其中可能存在用于当前块的时间参考块的区域缩小到除经滤波的区域之外的剩余区域2210。
[0311]
同时,当对独立编码的子画面进行解码时,即使跨滤波器不适用于当前子画面的边界,但是因为跨滤波是对与该边界相邻的相邻子画面的边界执行的,所以可能会出现编码结果和解码结果不匹配(即,解码错误)的问题。
[0312]
图23和图24是例示出现子画面的解码错误的示例的视图。
[0313]
首先,参照图23,第一子画面2310和第二子画面2320中的每一者可以被视为画面并且被独立地编码。例如,可以使用上面参照图15描述的subpic_treated_as_pic_flag来用信号通知指定各个子画面是否被视为画面的第一信息。
[0314]
可以对第一子画面2310和第二子画面2320中的至少一者的边界执行跨边界的环路内滤波,即,跨滤波。例如,可以不对第一子画面2310的边界执行跨滤波,并且可以对第二子画面2320的边界执行跨滤波。例如,可以使用上文参照图15描述的loop_filter_across_subpic_enabled_flag来用信号通知指定是否能够对各个子画面的边界执行跨滤波的第二信息。
[0315]
可以确定是否能够对各个子画面的边界执行跨滤波,而不管各个子画面是否被视为画面。也就是说,在上述示例中,可以确定loop_filter_across_subpic_enabled_flag的值,而不管subpic_treated_as_pic_flag的值如何。结果,即使跨滤波器不应用于第一子画面2310的边界,但由于第二子画面2320的边界是跨滤波的,因此第一子画面2310的边界也可以被滤波。
[0316]
关于各个子画面的信息可以包括第一信息和第二信息。另外,可以通过不同的比特流来用信号通知关于各个独立编码的子画面的信息。例如,可以通过第一比特流2340来用信号通知关于第一子画面2310的信息2341,并且可以通过第二比特流2350来用信号通知关于第二子画面2320的信息2351。
[0317]
同时,在解码步骤中,图像解码装置可以通过合并多个比特流来构建包括多个子画面的至少一个画面。例如,图像解码装置可以基于从第一比特流2340获得的关于第一子画面2310的信息2341以及从第二比特流2350获得的关于第二子画面2320的信息2351来构建包括第一子画面2310和第二子画面2320的一个画面。在这种情况下,根据解码顺序,第二子画面可以呈现在与第一子画面2310的右垂直边界相邻的位置处。
[0318]
接下来,参照图24,当基于子块的时间运动向量预测(tmvp)模式应用于包括在第一子画面2310中的当前块2410时,当前块2410的并置参考块2420中的至少部分区域可以被包括在经滤波的区域2430中。结果,在编码步骤中,当前块2410的时间参考块2420不包括经滤波的区域。然而,在解码步骤中,当前块2410的时间参考块2420可以包括经滤波的区域。
因此,在当前块2410中的涉及经滤波的区域的部分区域2411中,可能出现解码结果和编码结果不匹配的解码错误。
[0319]
如上所述,为了解决上面参照图21至图24所描述的问题,根据本公开的实施方式,可以基于当前子画面是否被视为画面来执行跨当前子画面的边界的环路内滤波。另外,根据本公开的实施方式,可以基于当前块的边界是否等于当前子画面的边界来执行跨当前块的边界的环路内滤波。另外,根据本公开的实施方式,可以基于是否能够执行跨与边界相邻的相邻子画面的环路内滤波来执行跨当前子画面的边界的环路内滤波。
[0320]
在下文中,将参照附图详细描述本公开的实施方式。
[0321]
实施方式1
[0322]
根据实施方式1,可以基于当前子画面是否被视为画面来确定是否能够对当前子画面的边界执行跨滤波。
[0323]
图25是例示根据本公开的实施方式的用于用信号通知子画面语法元素的sps语法的视图。图25的sps语法的与图15的sps语法重叠的描述将被省略或简化。
[0324]
参照图25,语法元素subpic_treated_as_pic_flag[i]可以指定在解码处理中子画面是否被视为与正常画面相同。例如,subpic_treated_as_pic_flag[i]的第一值(例如,0)可以指定在cvs的单独编码画面中包括的第i子画面不被视为画面。subpic_treated_as_pic_flag[i]的第二值(例如,1)可以指定在cvs的单独编码画面中包括的第i子画面被视为画面。当未从比特流获得subpic_treated_as_pic_flag[i]的值时,subpic_treated_as_pic_flag[i]的值可以被推断为第一值(例如,0)。
[0325]
语法元素loop_filter_across_subpic_enabled_flag[i]可以指定是否能够跨cvs的单独编码画面中包括的第i子画面的边界执行环路内滤波(例如,去块滤波)。例如,loop_filter_across_subpic_enabled_flag[i]的第一值(例如,0)可以指定不能够跨cvs的单独编码画面中包括的第i子画面的边界执行环路内滤波。loop_filter_across_subpic_enabled_flag[i]的第二值(例如,1)可以指定能够跨cvs的单独编码画面中包括的第i子画面的边界执行环路内滤波。
[0326]
可以仅当在解码处理中子画面不被视为与正常画面相同时才用信号通知loop_filter_across_subpic_enabled_flag[i]。例如,当在解码处理中cvs的单独编码画面中包括的第i子画面不被视为画面时(例如,subpic_treated_as_pic_flag[i]=0),可以用信号通知loop_filter_across_subpic_enabled_flag[i](2510)。
[0327]
在一个示例中,当没有用信号通知loop_filter_across_subpic_enabled_flag[i]时,loop_filter_across_subpic_enabled_flag[i]的值可以根据以下条件被确定为第一值(例如,0)或第二值(例如,1)。当在解码处理中cvs的单独编码画面中包括的第i子画面被视为画面时(例如,subpic_treated_as_pic_flag[i]=1),loop_filter_across_subpic_enabled_flag[i]的值可以被确定为第一值(例如,0)。在其它情况下,loop_filter_across_subpic_enabled_flag[i]的值可以被确定为第二值(例如,1)。
[0328]
在一个示例中,为了比特流一致性,当subpic_treated_as_pic_flag[i]的值是第二值(例如,1)时,可以应用loop_filter_across_subpic_enabled_flag[i]的值是第一值(例如,0)的约束。
[0329]
图26是例示基于图25的sps语法对亮度样本进行滤波的处理的示例的视图。
[0330]
参照图26,可以使用基于预定滤波约束的长滤波器来对亮度样本进行滤波。
[0331]
基于执行滤波的目标边界,亮度样本可以包括位于左侧或顶部的p块样本p0和位于右侧或底部的q块样本q0。
[0332]
在p块样本p0的情况下,当要滤波的p块样本p0的数量ndp大于0并且满足以下约束中的至少一个时,要滤波的p块样本p0的数量ndp可以被更改为0。
[0333]
约束1:对于包括具有p块样本p0的编码块的当前cu,绕过量化、变换和环路内滤波处理(例如,cu_transquant_bypass_flag==1)
[0334]
约束2:对于包括具有p块样本p0的编码块的当前cu,应用调色板模式(例如,pred_mode_plt_flag==1),
[0335]
约束3:包括具有p块样本p0的编码块的当前cu的边缘是子画面的边界并且当前cu被视为画面(例如,subpic_treated_as_pic_flag[subpicidx]==1)
[0336]
在q块样本q0的情况下,当要滤波的q块样本q0的数量ndq大于0并且满足以下约束4和5中的至少一个时,要滤波的q块样本q0的数量ndq可以被更改为0。
[0337]
约束4:对于包括具有q块样本q0的编码块的当前cu,绕过量化、变换和环路内滤波处理(例如,cu_transquant_bypass_flag==1)
[0338]
约束5:对于包括具有q块样本q0的编码块的当前cu,应用调色板模式(例如,pred_mode_plt_flag==1),
[0339]
图27是例示基于图25的sps语法对亮度样本进行滤波的处理的另一示例的视图。
[0340]
参照图27,可以使用基于预定滤波约束的长滤波器对亮度样本进行滤波。
[0341]
基于执行滤波的目标边界,亮度样本可以包括位于左侧或顶部的p块样本pi和位于右侧或底部的q块样本qj。这里,i的值可以等于或大于0并且等于或小于通过从p块的最大滤波器长度(例如,maxfilterlengthp)减去1而获得的值。另外,j的值可以等于或大于0并且等于或小于通过从q块的最大滤波器长度(例如,maxfilterlengthq)减去1而获得的值。
[0342]
在p块样本pi的情况下,当满足以下约束中的至少一个时,可以将滤波后的p块样本pi'的样本值替换为输入的p块样本pi的样本值。
[0343]
约束1:对于包括具有p块样本pi的编码块的当前cu,绕过量化、变换和环路内滤波处理(例如,cu_transquant_bypass_flag==1)
[0344]
约束2:对于包括具有p块样本pi的编码块的当前cu,应用调色板模式(例如,pred_mode_plt_flag==1),
[0345]
约束3:包括具有p块样本pi的编码块的当前cu的边缘是子画面的边界并且当前cu被视为画面(例如,subpic_treated_as_pic_flag[subpicidx]==1)
[0346]
根据上述滤波约束,当将滤波后的p块样本pi'的样本值替换为输入p块样本pi的样本值时,可以将p块样本pi视为未被滤波。
[0347]
在q块样本qj的情况下,当满足以下约束4和5中的至少一个时,可以将滤波后的q块样本qj'的样本值替换为输入q块样本qj的样本值。
[0348]
约束4:对于包括具有q块样本qi的编码块的当前cu,绕过量化、变换和环路内滤波处理(例如,cu_transquant_bypass_flag==1)
[0349]
约束5:对于包括具有q块样本qi的编码块的当前cu,应用调色板模式(例如,pred_
mode_plt_flag==1)
[0350]
根据上述滤波约束,当将滤波后的q块样本qj'的样本值替换为输入的q块样本qj的样本值时,可以将q块样本qj视为未被滤波。
[0351]
图28是例示基于图25的sps语法对色度样本进行滤波的处理的示例的视图。
[0352]
参照图28,可以根据预定滤波约束使用强滤波器或弱滤波器对色度样本进行滤波。在一个示例中,可以仅在相应的颜色分量(例如,y、cb、cr)未被单独编码/解码时,对色度样本进行滤波。例如,可以仅在指定色度样本阵列类型的chromaarraytype的值不为0时,对色度样本进行滤波。
[0353]
基于执行滤波的目标边界,色度样本可以包括位于左侧和顶部的p块样本pi和位于右侧或底部的q块样本qi。这里,i的值可以等于或大于0并且等于或小于通过从色度块的最大滤波器长度(例如,maxfilterlengthcbcr)减去1而获得的值。p块样本pi可以使用第一样本位置(xpi,ypi)来指定,并且q块样本qi可以使用第二位置(xqi,yqi)来指定。
[0354]
使用p块样本pi的样本值和位置、q块样本qi的样本值和位置以及变量tc作为输入,可以输出滤波后的p块样本pi'的样本值和滤波后的q块样本qi'的样本值。
[0355]
在一个示例中,当色度块的最大滤波器长度(例如,maxfilterlengthcbcr)为3时,可以对色度样本执行强滤波,如下式7所示。
[0356]
[式7]
[0357]
p0′
=clip3(p
0-tc,p0 tc,(p3 p2 p1 2*p0 q0 q1 q2 4)》》3)
[0358]
p1′
=clip3(p
1-tc,p1 tc,(2*p3 p2 2*p1 p0 q0 q1 4)》》3)
[0359]
p2′
=clip3(p
2-tc,p2 tc,(3*p3 2*p2 p1 p0 q0 4)》》3)
[0360]
q0′
=clip3(q
0-tc,q0 tc,(p2 p1 p0 2*q0 q1 q2 q3 4)》》3)
[0361]
q1′
=clip3(q
1-tc,q1 tc,(p1 p0 q0 2*q1 q2 2*q3 4)》》3)
[0362]
q2′
=clip3(q
2-tc,q2 tc,(p0 q0 q1 2*q2 3*q3 4)》》3)
[0363]
其中,clip3(x,y,z)可以表示用于将参数z的值裁剪为介于参数x的值与参数y的值之间的值的函数。
[0364]
相比之下,当色度块的最大滤波器长度(例如,maxfilterlengthcbcr)不是3时,可以对色度样本执行弱滤波,如下式8所示。
[0365]
[式8]
[0366]
δ=clip3(-tc,tc,((((q
0-p0)《《2) p
1-q1 4)》》3))
[0367]
p0′
=clip1c(p0 δ)
[0368]
q0′
=clip1c(q
0-δ)
[0369]
其中,clip1c(x)可以表示用于基于色度块的位深度来裁剪参数x的值的函数。
[0370]
同时,当满足以下约束1至3中的至少一个时,可以用输入p块样本pi的样本值替换滤波后的p块样本pi'的样本值。
[0371]
约束1:对于包括具有p块样本pi的编码块的当前cu,绕过量化、变换和环路内滤波处理(例如,cu_transquant_bypass_flag==1)
[0372]
约束2:对于包括具有p块样本pi的编码块的当前cu,应用调色板模式(例如,pred_mode_plt_flag==1),
[0373]
约束3:包括具有p块样本pi的编码块的当前cu的边缘是子画面的边界并且当前cu
被视为画面(例如,subpic_treated_as_pic_flag[subpicidx]==1)
[0374]
根据上述滤波约束,当将滤波后的p块样本pi'的样本值替换为输入的p块样本pi的样本值时,可以将p块样本pi视为未被滤波。
[0375]
当满足以下约束4和5中的至少一个时,可以用输入的q块样本qj的样本值替换滤波后的q块样本qj'的样本值。
[0376]
约束4:对于包括具有q块样本qi的编码块的当前cu,绕过量化、变换和环路内滤波处理(例如,cu_transquant_bypass_flag==1)
[0377]
约束5:对于包括具有q块样本qi的编码块的当前cu,应用调色板模式(例如,pred_mode_plt_flag==1)
[0378]
根据上述滤波约束,当将滤波后的q块样本qj'的样本值替换为输入的q块样本qj的样本值时,可以将q块样本qj视为未被滤波。
[0379]
在下文中,将详细描述根据本公开的实施方式1的滤波方法。
[0380]
图29是例示根据本公开的实施方式的基于子画面结构的滤波方法的流程图。图29的滤波方法可以由图2的图像编码装置来执行。例如,步骤s2910至s2940可以由图像编码装置100的滤波器160执行。另选地,图29的滤波方法可以由图3的图像解码装置来执行。例如,步骤s2910至s2940可以由图像解码装置200的滤波器240执行。
[0381]
在编码步骤中,图29的滤波方法可以跨包括经重构的当前块的当前画面的边界来执行。另选地,在解码步骤中,图29的滤波方法可以跨包括经解码的当前块的当前画面的边界来执行。在下文中,将跨子画面的边界的环路内滤波称为跨滤波。
[0382]
参照图29,图像编码/解码装置可以确定包括当前块的当前子画面是否能够被视为画面(s2910)。
[0383]
当前子画面被视为画面可以意味着当前子画面被独立地编码/解码,而不管其它子画面的编码/解码信息如何。例如,可以使用帧间预测模式对当前子画面进行编码,并且可以使用帧内预测模式对与当前子画面相邻的相邻子画面进行编码/解码。
[0384]
在编码步骤中,指定当前子画面是否能够被视为画面的信息可以使用subpic_treated_as_pic_flag以更高级语法(例如,sps(序列参数集)语法)进行编码。例如,当subpic_treated_as_pic_flag具有第一值(例如,0)时,当前子画面可以不被视为画面。相比之下,当subpic_treated_as_pic_flag具有第二值(例如,1)时,当前子画面可以被视为画面。
[0385]
在解码步骤中,可以使用从更高级语法获得的subpic_treated_as_pic_flag的值来确定当前子画面是否能够被视为画面。在一个示例中,当未获得subpic_treated_as_pic_flag时,subpic_treated_as_pic_flag可被推断为具有第一值(例如,0)。
[0386]
在当前子画面不被视为画面时(s2910的“否”),可以确定是否能够对当前子画面的边界执行跨滤波(例如,去块滤波)(s2920)。
[0387]
在编码步骤中,指定是否能够对当前子画面的边界执行跨滤波的信息可以使用loop_filter_across_subpic_enabled_flag以更高级语法(例如,sps(序列参数集)语法)来编码。例如,当loop_filter_across_subpic_enabled_flag具有第一值(例如,0)时,可以不对当前子画面的边界执行跨滤波。相比之下,当loop_filter_across_subpic_enabled_flag具有第二值(例如,1)时,可以对当前子画面的边界执行跨滤波。
[0388]
在解码步骤中,可以基于从更高级语法获得的loop_filter_across_subpic_enabled_flag的值来确定是否能够对当前子画面的边界执行跨滤波。在一个示例中,当没有获得loop_filter_across_subpic_enabled_flag时,可以基于当前子画面是否被视为画面来确定loop_filter_across_subpic_enabled_flag的值。例如,在当前子画面被视为画面时,loop_filter_across_subpic_enabled_flag可以被推断为具有第一值(例如,0)。相比之下,在当前子画面不被视为画面时,loop_filter_across_subpic_enabled_flag可以被推断为具有第二值(例如,1)。在一个示例中,为了比特流一致性,当subpic_treated_as_pic_flag具有第二值(例如,1)时,可以应用loop_filter_across_subpic_enabled_flag具有第一值(例如,0)的约束。
[0389]
当能够对当前子画面的边界执行跨滤波时(s2920的“是”),图像编码/解码装置可以确定当前子画面的边界强度(s2930)。在本公开中,边界强度可以被称为边界滤波强度或滤波强度。
[0390]
可以根据预定条件将当前子画面的边界强度确定为第一值(例如,0)到第三值(例如,2)中的任意一个,并且具体的确定方法如上面参照图19所述。
[0391]
图像编码/解码装置可以基于当前子画面的边界强度对当前子画面的边界执行跨滤波(s2940)。例如,可以仅在当前子画面的边界强度具有第二值(例如,1)或第三值(例如,2)时,对当前子画面的边界执行跨滤波。
[0392]
同时,当无法对当前子画面的边界执行跨滤波时(s2920的“否”),可以跳过针对当前子画面的边界的滤波处理s2930和s2940。
[0393]
另外,在当前子画面被视为画面时(s2910的“是”),可以跳过针对当前子画面的边界的滤波处理s2930和s2940。
[0394]
如上所述,根据本公开的实施方式1,可以仅在当前子画面不被视为画面时执行跨当前子画面的边界的环路内滤波。因此,可以防止将当前子画面视为画面的区域被缩小。
[0395]
实施方式2
[0396]
根据实施方式2,可以仅在不满足预定滤波约束时执行跨当前块的边界的环路内滤波。例如,在当前块的左边界或上边界是当前子画面的左边界或上边界时,或者当无法跨当前子画面的边界执行环路内滤波时,可以不执行跨当前块的边界的环路内滤波。进一步地,由于执行了跨相邻子画面的边界的环路内滤波,因此当对当前子画面的边界一起滤波时,根据预定滤波约束,当前子画面的边界中要滤波的样本数量可以被更改为0,或者经滤波的样本的样本值可以替换为输入的样本值。
[0397]
图30是例示根据本公开的实施方式的跨滤波处理的视图。
[0398]
参照图30,可以执行跨当前块的边界的环路内滤波,例如,单向去块滤波。在一个示例中,可以使用filteredgeflag来用信号通知是否能够执行跨当前块的边界的去块滤波。例如,filteredgeflag的第一值(例如,0)可以指定无法执行跨当前块的边界的去块滤波。相比之下,filteredgeflag的第二值(例如,1)可以指定能够执行跨当前块的边界的去块滤波。
[0399]
filteredgeflag的值可以如下推导。
[0400]
在当前块的边界是垂直边界时(例如,edgetype==edge_ver),如果满足以下约束1至5中的至少一个,则filteredgeflag可以具有第一值(例如,0)。
[0401]
约束1:当前编码块的左边界是当前画面的左边界
[0402]
约束2:当前编码块的左边界是当前子画面的左边界,并且无法执行跨当前子画面的边界的去块滤波(例如,loop_filter_across_subpic_enabled_flag==0)
[0403]
约束3:当前编码块的左边界是当前拼块的左边界并且无法跨当前拼块的边界执行环路内滤波(例如,loop_filter_across_tiles_enabled_flag==0)
[0404]
约束4:当前编码块的左边界是当前切片的左边界,并且无法执行跨当前切片的边界的环路内滤波(例如,loop_filter_across_slices_enabled_flag==0)
[0405]
约束5:当前编码块的左边界是当前画面的垂直虚拟边界之一,并且无法跨虚拟边界执行环路内滤波(例如,virtualboundariesdisabledflag==1)
[0406]
在当前块的边界是水平边界时(例如,edgetype==edge_hor),如果满足约束6至10中的至少一个,则filteredgeflag可以具有第一值(例如,0)。
[0407]
约束6:当前编码块的上边界是当前画面的上边界
[0408]
约束7:当前编码块的上边界是当前子画面的上边界,并且无法执行跨当前块的边界的去块滤波(例如,loop_filter_across_subpic_enabled_flag==0)
[0409]
约束8:当前编码块的上边界是当前拼块的上边界,并且无法执行跨当前拼块的边界的去块滤波(例如,loop_filter_across_tiles_enabled_flag==0)
[0410]
约束9:当前编码块的上边界是当前切片的上边界,并且无法执行跨当前切片的边界的去块滤波(例如,loop_filter_across_slices_enabled_flag=0)
[0411]
约束10:当前编码块的上边界是当前画面的水平虚拟边界之一,并且无法执行跨虚拟边界的环路内滤波(例如,virtualboundariesdisabledflag==1)
[0412]
当以上所有约束1到10都不满足时,filteredgeflag可以具有第二值(例如,1)。例如,在当前编码块的左边界是当前子画面的左边界或右边界并且无法执行跨当前块的边界的去块滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidx]==0),filteredgeflag可以具有第二值(例如,1)。另外,在当前编码块的上边界是当前子画面的上边界或下边界并且无法执行跨当前块的边界的去块滤波时,filteredgeflag可以具有第二值(例如,1)。上述示例可以考虑对与当前编码块的边界相邻的相邻子画面执行跨边界的环路内滤波的情况。
[0413]
同时,当前编码块可以包括亮度样本和色度样本。基于执行滤波的目标边界,亮度样本和色度样本中的每一个可以包括位于左侧或顶部的p块样本p0和位于右侧或底部的q块样本q0。另选地,基于执行滤波的目标边界,亮度样本和色度样本中的每一个可以包括位于左侧或顶部的p块样本pi和位于右侧或底部的q块样本qj。这里,i的值可以等于或大于0并且等于或小于通过从p块的最大滤波器长度(例如,maxfilterlengthp)减去1而获得的值。另外,j的值可以等于或大于0并且等于或小于通过从q块的最大滤波器长度(例如,maxfilterlengthq)减去1而获得的值。在下文中,将参照图31至图33详细描述对亮度样本和色度样本执行跨滤波的处理。
[0414]
图31和图32是例示根据本公开的实施方式的对亮度样本的跨滤波处理的视图。
[0415]
首先,参照图31,可以根据预定滤波约束将要使用短滤波器滤波的亮度样本的数量更改为0。另外,根据预定滤波约束,使用短滤波器滤波的亮度样本可以被视为未被滤波。
[0416]
例如,当要滤波的p块样本p0的数量ndp大于0并且调色板模式应用于包括具有p块
样本p0的编码块的当前cu(例如,pred_mode_plt_flag==1)时,可以将要滤波的p块样本p0的数量ndp更改为0。
[0417]
另外,当要滤波的q块样本q0的数量ndq大于0并且调色板模式应用于包括具有q块样本q0的编码块的当前cu时,要滤波的q块样本q0的数量ndq可以更改为0。
[0418]
另外,当无法跨包括p块样本pi的子画面的边界执行环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxp]==0),使用q块样本qj滤波的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0419]
接下来,参照图32,根据预定滤波约束,使用长滤波器滤波的亮度样本可以被视为未被滤波。
[0420]
例如,当调色板模式应用于包括具有p块样本pi的编码块的当前cu时(例如,pred_mode_plt_flag==1),滤波后的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0421]
另外,当调色板模式应用于包括具有q块样本qj的编码块的当前cu时(例如,pred_mode_plt_flag==1),滤波后的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0422]
另外,当无法执行跨包括p块样本pi的子画面的边界的环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxp]==0),使用q块样本qj滤波的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0423]
图33是例示根据本公开的实施方式的对色度样本的跨滤波处理的视图。
[0424]
参照图33,根据预定滤波约束,滤波后的色度样本可被视为未被滤波。
[0425]
例如,当调色板模式应用于包括具有p块样本pi的编码块的当前cu时(例如pred_mode_plt_flag==1),滤波后的p块样本pi'的样本值可以替换为输入的p块样本pi的样本值。
[0426]
另外,当调色板模式应用于包括具有q块样本qj的编码块的当前cu时,滤波后的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0427]
另外,当无法执行跨包括p块样本pi的子画面的边界的环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxp]==0),使用q块样本qj滤波的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0428]
在下文中,将详细描述根据本公开的实施方式2的滤波方法。
[0429]
图34是例示根据本公开的实施方式的基于子画面结构的滤波方法的流程图。图34的滤波方法可以由图2的图像编码装置来执行。例如,步骤s3410至s3440可以由图像编码装置100的滤波器160执行。另选地,图34的滤波方法可以由图3的图像解码装置来执行。例如,步骤s3410至s3440可由图像解码装置200的滤波器240执行。
[0430]
在编码步骤中,图34的滤波方法可以跨包括经重构的当前块的当前画面的边界来执行。另选地,在解码步骤中,图34的滤波方法可以跨包括经解码的当前块的当前画面的边界来执行。在下文中,将跨子画面的边界的环路内滤波称为跨滤波。
[0431]
参照图34,图像编码/解码装置可以确定当前块的边界是否满足预定滤波约束(s3410)。这里,滤波约束可以意指无法对当前块的边界执行跨滤波。
[0432]
已经参照图30至图33描述了滤波约束的具体示例。例如,滤波约束可以包括当前
块的左边界是当前子画面的左边界并且无法对当前子画面的边界执行跨滤波的情况(例如,loop_filter_across_subpic_enabled_flag[subpicidx]==0)。另外,滤波约束可以包括当前块的上边界是当前子画面的上边界并且无法对当前子画面的边界执行跨滤波的情况。另外,滤波约束条件可以包括这样的情况:当前块包括基于当前块的边界的位于左侧或顶部的亮度分量的p块样本pi并且无法对当前子画面的边界执行跨滤波。另外,滤波约束条件可以包括这样的情况:当前块包括基于当前块的边界的位于左侧或顶部的亮度分量的q块样本qi并且无法对当前子画面的边界执行跨滤波。
[0433]
在当前块的边界不满足滤波约束时(s3410的“否”),图像编码/解码装置可以确定当前块的边界强度(s3420)。在本公开中,边界强度可以称为边界滤波强度或滤波强度。
[0434]
可以根据预定条件将当前子画面的边界强度确定为第一值(例如,0)到第三值(例如,2)中的任意一个,并且具体的确定方法如上面参照图19所述。
[0435]
图像编码/解码装置可以基于当前子画面的边界强度对当前子画面的边界执行跨滤波(s3440)。例如,可以仅在当前子画面的边界强度具有第二值(例如,1)或第三值(例如,2)时,对当前子画面的边界执行跨滤波。
[0436]
同时,在当前子画面的边界满足滤波约束时(s3420的“否”),可以跳过针对当前子画面的边界的滤波处理s3420和s3430。
[0437]
如上所述,根据本公开的实施方式2,可以仅在不满足预定滤波约束时执行跨当前子画面的边界的环路内滤波。因此,可以防止当前块的边界的解码结果与编码结果不匹配的解码错误。
[0438]
实施方式3
[0439]
根据实施方式3,可以仅在不满足预定滤波约束时执行跨当前块的边界的环路内滤波。例如,当无法跨包括位于当前块左侧或顶部的亮度样本或色度样本的当前子画面的边界执行环路内滤波时,可以不执行跨当前块的边界的环路内滤波。另外,当无法跨包括位于当前块右侧或底部的亮度样本或色度样本的当前子画面的边界执行环路内滤波时,可以不执行跨当前块的边界的环路内滤波。
[0440]
图35是例示根据本公开的实施方式的跨滤波处理的视图。
[0441]
参照图35,可以执行跨当前块的边界的环路内滤波,例如,单向去块滤波。在一个示例中,可以使用上面参照图30描述的filteredgeflag来用信号通知是否能够执行跨当前块的边界的去块滤波。
[0442]
filteredgeflag的值可以如下推导出。
[0443]
在当前块的边界是垂直边界时(例如,edgetype==edge_ver),如果满足以下约束1至4中的至少一个,则filteredgeflag可以具有第一值(例如,0)。
[0444]
约束1:当前编码块的左边界是当前画面的左边界
[0445]
约束2:当前编码块的左边界是当前拼块的左边界,并且无法执行跨当前拼块的边界的环路内滤波(例如,loop_filter_across_tiles_enabled_flag==0)
[0446]
约束3:当前编码块的左边界是当前切片的左边界,并且无法执行跨当前切片的边界的环路内滤波(例如,loop_filter_across_slices_enabled_flag==0)
[0447]
约束4:当前编码块的左边界是当前画面的垂直虚拟边界之一,并且无法执行跨虚拟边界的环路内滤波(例如,virtualboundariesdisabledflag==1)
[0448]
在当前块的边界是水平边界时(例如,edgetype==edge_hor),如果满足以下约束5到8中的至少一个,则filteredgeflag可以具有第一值(例如,0)。
[0449]
约束5:当前编码块的上边界是当前画面的上边界
[0450]
约束6:当前编码块的上边界是当前拼块的上边界并且无法执行跨当前拼块的边界的环路内滤波(例如,loop_filter_across_tiles_enabled_flag==0)
[0451]
约束7:当前编码块的上边界是当前切片的上边界,并且无法执行跨当前切片的边界的环路内滤波(例如,loop_filter_across_slices_enabled_flag==0)
[0452]
约束8:当前编码块的上边界是当前画面的水平虚拟边界之一,并且无法执行跨虚拟边界的环路内滤波(例如,virtualboundariesdisabledflag==1)
[0453]
当以上所有约束1至8都不满足时,filteredgeflag可以具有第二值(例如,1)。
[0454]
在图35的跨滤波处理中,与图30的跨滤波处理不同,即使无法执行跨当前块的边界的去块滤波,也可以执行跨当前块的边界的环路内滤波。这可以考虑执行跨与当前子画面的边界相邻的相邻子画面的边界的环路内滤波的情况。
[0455]
同时,当前编码块可以包括亮度样本和色度样本。基于执行滤波的目标边界,亮度样本和色度样本中的每一个可以包括位于左侧或顶部的p块样本p0和位于右侧或底部的q块样本q0。另选地,基于执行滤波的目标边界,亮度样本和色度样本中的每一个可以包括位于左侧或顶部的p块样本pi和位于右侧或底部的q块样本qj。这里,i的值可以等于或大于0并且等于或小于通过从p块的最大滤波器长度(例如,maxfilterlengthp)减去1而获得的值。另外,j的值可以等于或大于0并且等于或小于通过从q块的最大滤波器长度(例如,maxfilterlengthq)减去1而获得的值。在下文中,将参照图34至图36详细描述对亮度样本和色度样本执行跨滤波的处理。
[0456]
图36和图37是例示根据本公开的实施方式的对亮度样本的跨滤波处理的视图。
[0457]
首先,参照图36,可以根据预定滤波约束将要使用短滤波器滤波的亮度样本的数量更改为0。另外,根据预定滤波约束,使用短滤波器滤波的亮度样本可以被视为未被滤波。
[0458]
例如,当要滤波的p块样本p0的数量ndp大于0并且调色板模式应用于包括具有p块样本p0的编码块的当前cu时(例如,pred_mode_plt_flag==1),可以将要滤波的p块样本p0的数量ndp更改为0。
[0459]
另外,当要滤波的q块样本q0的数量ndq大于0并且调色板模式应用于包括具有q块样本q0的编码块的当前cu时,要滤波的q块样本q0的数量ndq可以更改为0。
[0460]
另外,当无法执行跨包括p块样本pi的子画面的边界的环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxp]==0),使用q块样本qj滤波的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0461]
另外,当无法跨包括q块样本qj的子画面的边界执行环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxq]==0),使用p块样本pi滤波的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0462]
接下来,参照图37,根据预定滤波约束,使用长滤波器滤波的亮度样本可以被视为未被滤波。
[0463]
例如,当调色板模式应用于包括具有p块样本pi的编码块的当前cu时(例如,pred_mode_plt_flag==1),滤波后的p块样本pi'的样本值可以被替换为输入的p块样本pi的样
本值。
[0464]
另外,当调色板模式应用于包括具有q块样本qj的编码块的当前cu时,滤波后的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0465]
另外,当无法跨包括p块样本pi的子画面的边界执行环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxp]==0),使用q块样本qj滤波的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0466]
另外,当无法执行跨包括q块样本qj的子画面的边界的环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxq]==0),使用p块样本pi滤波的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0467]
图38是例示根据本公开的实施方式的对色度样本的跨滤波处理的视图。
[0468]
参照图38,根据预定滤波约束,滤波后的色度样本可以被视为未被滤波。
[0469]
例如,当调色板模式应用于包括具有p块样本pi的编码块的当前cu时(例如,pred_mode_plt_flag==1),滤波后的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0470]
另外,当调色板模式应用于包括具有q块样本qj的编码块的当前cu时(例如,pred_mode_plt_flag==1),滤波后的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0471]
另外,当无法执行跨包括p块样本pi的子画面的边界的环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxp]==0),使用q块样本qj滤波的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0472]
另外,当无法执行跨包括q块样本qj的子画面的边界的环路内滤波时(例如,loop_filter_across_subpic_enabled_flag[subpicidxq]==0),使用p块样本pi滤波的q块样本qj'的样本值可以被替换为输入q块样本qj的样本值。
[0473]
根据本公开的实施方式3的滤波方法与实施方式2的滤波方法的不同之处在于滤波约束,并且上面参照图34描述的滤波方法是适用的而无需更改。因此,将省略其描述。
[0474]
如上所述,根据本公开的实施方式3,可以仅在不满足预定滤波约束时执行跨当前子画面的边界的环路内滤波。因此,可以防止当前块的边界的解码结果与编码结果不匹配的解码错误。
[0475]
实施方式4
[0476]
根据实施方式4,可以仅当能够对当前画面的边界和与当前块的边界相邻的相邻画面的边界两者执行跨各个边界的环路内滤波时,执行跨当前块的边界的环路内滤波。
[0477]
图39是例示根据本公开的实施方式的跨滤波处理的视图。
[0478]
参照图39,可以仅在不满足预定滤波约束时执行跨当前块的边界的环路内滤波(例如,去块滤波)。这里,当前块的边界可以包括子块的所有边缘和变换块的所有边缘。
[0479]
约束1:上述边缘被包括在画面的边界中
[0480]
约束2:上述边缘被包括在当前子画面的上边界中,并且无法执行跨与上边界相邻的相邻子画面的边界的环路内滤波(例如,loop_filter_across_subpic_enabled_flag[subpicidxabove]==0),其中,当前块的右上样本的位置是(xctb,yctb),并且可以使用第一样本位置(xctb,yctb-1)来指定相邻子画面的位置。
[0481]
约束3:上述边缘被包括在当前子画面的左边界中,并且无法执行跨与左边界相邻的相邻子画面的边界的环路内滤波(例如,loop_filter_across_subpic_enabled_flag[subpicidxleft]==0),其中,当前块的左上样本的位置是(xctb,yctb),并且可以使用第二样本位置(xctb-1,yctb)来指定相邻子画面的位置。
[0482]
约束4:上述边缘被包括在当前子画面的左边界或上边界中,并且无法执行跨当前块的边界的去块滤波(例如,loop_filter_across_subpic_enabled_flag[subpicidx]==0),其中,可以使用当前块的左上样本的位置(xctb,yctb)来指定当前子画面的位置。
[0483]
约束5:上述边缘被包括在当前画面的虚拟边界中,并且无法执行跨虚拟边界的环路内滤波(例如,virtualboundariesdisabledflag==1)
[0484]
约束6:上述边缘被包括在当前拼块的边界中,并且无法执行跨当前拼块的边界的环路内滤波(例如,loop_filter_across_tiles_enabled_flag==0)
[0485]
约束7:上述边缘被包括在当前切片的边界中,并且无法执行跨当前切片的边界的环路内滤波(例如,loop_filter_across_slices_enabled_flag==0)
[0486]
约束8:上述边缘被包括在当前切片的上边界或下边界中,并且对当前切片禁用去块滤波(例如,slice_deblocking_filter_disabled_flag==1)
[0487]
约束9:上述边缘被包括在当前切片中并且对当前切片禁用去块滤波(例如,slice_deblocking_filter_disabled_flag==1)
[0488]
约束10:上述边缘不对应于4x4亮度样本网格的边界
[0489]
约束11:上述边缘不对应于8x8色度样本网格的边界
[0490]
约束12:作为亮度分量的边缘,基于块的增量脉冲编码调制(bdpcm)应用于各个边缘的两侧(例如,intra_bdpcm_luma_flag==1),其中,bdpcm可以意指这样的编码模式:使用与当前tu相邻的tu的量化残差样本值来修改当前tu的量化残差样本值。
[0491]
约束13:作为色度分量的边缘,基于块的增量脉冲编码调制(bdpcm)应用于各个边缘的两侧(例如,intra_bdpcm_chroma_flag==1)
[0492]
约束14:色度分量子块的边缘不等于与其相关联的tu的边缘
[0493]
同时,根据上面参照图31至图33描述的实施方式2的亮度样本和色度样本的滤波处理适用于本公开的实施方式4。另外,根据上面参照图36至图38描述的实施方式3的亮度样本和色度样本的滤波处理适用于本公开的实施方式4。例如,在当前块的预测模式是调色板模式时,可以不执行跨当前块的边界的环路内滤波(例如,去块滤波)
[0494]
在下文中,将详细描述根据本公开的实施方式4的滤波方法。
[0495]
图40是例示根据本公开的实施方式的基于子画面结构的滤波方法的流程图。图40的滤波方法可以由图2的图像编码装置来执行。例如,步骤s4010至s4040可以由图像编码装置100的滤波器160执行。另选地,图40的滤波方法可以由图3的图像解码装置来执行。例如,步骤s4010至s4040可以由图像解码装置200的滤波器240执行。
[0496]
在编码步骤中,图40的滤波方法可以跨经重构的当前块的边界执行。另选地,在解码步骤中,图40的滤波方法可以跨经解码的当前块的边界执行。在下文中,跨当前块(或当前画面/子画面/切片/拼块等)的边界的环路内滤波被称为跨滤波。
[0497]
参照图40,图像编码/解码装置可以确定是否能够对包括当前块的当前子画面的边界执行跨滤波(s4010)。
[0498]
在编码步骤中,指定是否能够对当前子画面的边界执行跨滤波的信息可以使用loop_filter_across_subpic_enabled_flag以更高级语法(例如,序列参数集(sps)语法)来编码。例如,当loop_filter_across_subpic_enabled_flag具有第一值(例如,0)时,无法对当前子画面的边界执行跨滤波。相比之下,当loop_filter_across_subpic_enabled_flag具有第二值(例如,1)时,可以对当前子画面的边界执行跨滤波。
[0499]
在解码步骤中,可以基于从更高级语法获得的loop_filter_across_subpic_enabled_flag的值来确定是否能够对当前子画面的边界执行跨滤波。例如,当没有获得loop_filter_across_subpic_enabled_flag时,可以基于当前子画面是否被视为画面来确定loop_filter_across_subpic_enabled_flag的值。例如,在当前子画面被视为画面时,loop_filter_across_subpic_enabled_flag可以被推断为具有第一值(例如,0)。相比之下,在当前子画面不被视为画面时,loop_filter_across_subpic_enabled_flag可以被推断为具有第二值(例如,1)。在一个示例中,为了比特流一致性,当subpic_treated_as_pic_flag具有第二值(例如,1)时,可以应用loop_filter_across_subpic_enabled_flag应具有第一值(例如,0)的约束。
[0500]
当能够对当前子画面的边界执行跨滤波时(s4010的“是”),图像编码/解码装置可以确定是否能够对与当前块的边界相邻的相邻子画面的边界执行跨滤波(s4020)。
[0501]
如在当前子画面中,指定是否能够对相邻子画面的边界执行跨滤波的信息可以使用loop_filter_across_subpic_enabled_flag以更高级语法(例如,序列参数集(sps)语法)来编码/解码。
[0502]
当能够对相邻子画面的边界执行跨滤波时(s4020的“是”),图像编码/解码装置可以确定对当前块的边界执行了跨滤波并确定当前块的边界强度(s4030)。在本公开中,边界强度可以称为边界滤波强度或滤波强度。
[0503]
可以根据预定条件将当前块的边界强度确定为第一值(例如,0)到第三值(例如,2)中的任意一个,并且具体的确定方法如上面参照图19所述。
[0504]
同时,例如,即使能够对当前子画面的边界和相邻子画面的边界两者执行跨滤波(s4020的“是”),但是当满足预定滤波约束时,可以不对当前块的边界执行跨滤波。也就是说,当满足滤波约束时,可以跳过当前块的边界的滤波处理s4030和s404。
[0505]
滤波约束可以包括上面参照图39描述的约束1到13。例如,滤波约束可以包括当前块的边缘(或边界)被包括在画面的边界中的情况。另外,滤波约束可以包括当前块的边缘被包括在当前子画面的左边界或上边界中的情况。另外,滤波约束可以包括当前块的边缘被包括在当前画面的虚拟边界中并且无法对当前画面的虚拟边界执行跨滤波的情况(例如,virtualboundariesdisabledflag==1)。另外,滤波约束可以包括当前块的边缘被包括在当前拼块的边界中并且无法对当前拼块的边界执行跨滤波的情况(例如,loop_filter_across_tiles_enabled_flag==0)。另外,滤波约束可以包括当前块的边缘被包括在当前切片的边界中并且无法对当前切片的边界执行跨滤波的情况(例如,loop_filtering_across_slices_enabled_flag==0)。另外,滤波约束可以是当前块的边缘被包括在当前切片的上边界或下边界中并且对当前切片的上边界或下边界禁用跨滤波(例如,去块滤波)的情况(例如,slice_deblocking_filter_disabled_flag==1)。
[0506]
图像编码/解码装置可以基于在步骤s4030中确定的当前块的边界强度,对当前块
的数量ndq更改为0。
[0519]
接下来,参照图42,根据预定滤波约束,使用长滤波器滤波的亮度样本可以被视为未被滤波。
[0520]
例如,当调色板模式应用于包括具有p块样本pi的编码块的当前cu时(例如,pred_mode_plt_flag==1),滤波后的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0521]
另外,当调色板模式应用于包括具有q块样本qj的编码块的当前cu时,滤波后的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0522]
另外,当p块样本pi和q块样本qj被包括在不同的子画面中并且无法执行跨包括p块样本pi的子画面的边界的环路内滤波(例如,loop_filter_across_subpic_enabled_flag[subpicidxp]==0)时,滤波后的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0523]
另外,当q块样本qj和p块样本pi被包括在不同的子画面中并且无法执行跨包括q块样本qj的子画面的边界的环路内滤波(例如,loop_filter_across_subpic_enabled_flag[subpicidxq]==0)时,滤波后的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0524]
图43是例示根据本公开的实施方式的对色度样本的跨滤波处理的视图。
[0525]
参照图43,根据预定滤波约束,滤波后的色度样本可被视为未被滤波。
[0526]
例如,当调色板模式应用于包括具有p块样本pi的编码块的当前cu时(例如,pred_mode_plt_flag==1),滤波后的p块样本pi'的样本值可以被替换为输入的p块样本pi的样本值。
[0527]
另外,当调色板模式应用于包括具有q块样本qj的编码块的当前cu时(例如,pred_mode_plt_flag==1),滤波后的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0528]
另外,当p块样本pi和q块样本qj被包括在不同的子画面中并且无法执行跨包括p块样本pi的边界的环路内滤波(例如,loop_filter_across_subpic_enabled_flag[subpicidxp]==0)时,可以将滤波后的p块样本pi'的样本值替换为输入的p块样本pi的样本值。
[0529]
另外,当q块样本qj和p块样本pi被包括在不同的子画面中并且无法执行跨包括q块样本qj的子画面的边界的环路内滤波(例如,loop_filter_across_subpic_enabled_flag[subpicidxq]==0)时,滤波后的q块样本qj'的样本值可以被替换为输入的q块样本qj的样本值。
[0530]
本公开的实施方式5与实施方式2和实施方式3的不同之处在于滤波约束,上面参照图34描述的滤波方法是适用的而无需更改。进一步地,本公开的实施方式5的滤波约束同样适用于实施方式4。
[0531]
如上所述,根据本公开的实施方式5,可以仅在不满足预定滤波约束时执行跨当前子画面的边界的环路内滤波。因此,可以防止当前块的边界的解码结果与编码结果不匹配的解码错误。
[0532]
虽然为了描述的清楚起见,上述本公开的示例性方法被表示为一系列操作,但并
不旨在限制执行步骤的顺序,并且必要时这些步骤可以同时或以不同的顺序来执行。为了实现根据本公开的方法,所描述的步骤可以进一步包括其他步骤,可以包括除了一些步骤之外的其余步骤,或者可以包括除了一些步骤之外的其他附加步骤。
[0533]
在本公开中,执行预定操作(步骤)的图像编码装置或图像解码装置可以执行确认相应操作(步骤)的执行条件或情况的操作(步骤)。例如,如果描述了在满足预定条件时执行预定操作,则图像编码装置或图像解码装置可以在确定是否满足预定条件之后执行预定操作。
[0534]
本公开的各种实施方式不是所有可能组合的列表并且旨在描述本公开的代表性方面,并且在各种实施方式中描述的事项可以独立地或以两个或更多个的组合应用。
[0535]
本公开的各种实施方式可以以硬件、固件、软件或其组合来实现。在通过硬件实现本公开的情况下,本公开可以通过专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理器件(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、通用处理器、控制器、微控制器、微处理器等来实现。
[0536]
此外,应用本公开的实施方式的图像解码装置和图像编码装置可以包括在多媒体广播传送和接收设备、移动通信终端、家庭影院视频设备、数字影院视频设备、监控摄像头、视频聊天设备、诸如视频通信的实时通信设备、移动流传输设备、存储介质、摄像机、视频点播(vod)服务提供设备、ott视频(over the top video)设备、互联网流传输服务提供设备、三维(3d)视频设备、视频电话视频设备、医疗视频设备等,并且可用于处理视频信号或数据信号。例如,ott视频设备可以包括游戏机、蓝光播放器、互联网接入电视、家庭影院系统、智能手机、平板pc、数字录像机(dvr)等。
[0537]
图44是示出可应用本公开的实施方式的内容流系统的视图。
[0538]
如图44中所示,应用本公开的实施方式的内容流系统可以主要包括编码服务器、流服务器、网络服务器、媒体存储、用户设备和多媒体输入设备。
[0539]
编码服务器将从诸如智能手机、相机、便携式摄像机等多媒体输入设备输入的内容压缩成数字数据以生成比特流并将该比特流发送到流服务器。作为另一示例,当智能手机、相机、摄像机等多媒体输入设备直接生成码流时,可以省略编码服务器。
[0540]
比特流可以由应用本公开的实施方式的图像编码方法或图像编码装置产生,并且流传送服务器可以在发送或接收比特流的过程中临时存储比特流。
[0541]
流服务器基于用户通过网络服务器的请求将多媒体数据发送到用户设备,并且网络服务器用作向用户通知服务的媒介。当用户从网络服务器请求所需的服务时,网络服务器可以将其递送到流服务器,并且流服务器可以向用户发送多媒体数据。在这种情况下,内容流传输系统可以包括单独的控制服务器。在这种情况下,控制服务器用作控制内容流系统中设备之间的命令/响应。
[0542]
流服务器可以从媒体存储和/或编码服务器接收内容。例如,当从编码服务器接收到内容时,可以实时接收内容。在这种情况下,为了提供平滑的流传输服务,流服务器可以在预定时间内存储比特流。
[0543]
用户设备的示例可以包括移动电话、智能电话、膝上型计算机、数字广播终端、个人数字助理(pda)、便携式多媒体播放器(pmp)、导航设备、平板pc、平板计算机、超级本、可穿戴设备(例如,智能手表、智能眼镜、头戴式显示器)、数字电视、台式计算机、数字标牌等。
[0544]
内容流系统中的每个服务器都可以作为分布式服务器运行,在这种情况下,从每个服务器接收的数据可以被分布。
[0545]
本公开的范围包括用于使根据各种实施方式的方法的操作能够在装置或计算机上执行的软件或者可执行命令(例如,操作系统、应用、固件、程序等)、具有存储在其上并可在装置或计算机上执行的此类软件或命令的一种非暂时性计算机可读介质。
[0546]
工业适用性
[0547]
本公开的实施方式可以被用于对图像进行编码或解码。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献