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

图像编码/解码方法和设备与流程

2021-10-24 10:34:00 来源:中国专利 TAG:解码 编码 公开 方法 内容


1.本公开内容涉及视频编码/解码方法和设备。


背景技术:

2.随着近来对高分辨率和高清晰度视频的需求增加,已经出现了针对用于下一代视频服务的高效视频压缩技术的需求。基于该需求,自2015年10月起,联合对h.264/avc和hevc视频压缩标准进行标准化的iso/iec mpeg和itu

t vceg组建了jvet(joint video exploration team,联合视频探索小组)并进行了研究和探索以建立新的视频压缩标准。2018年4月,随着对新的视频压缩标准cfp(提案征集)的响应的评估,开始了新的视频压缩标准化。
3.在视频压缩技术中,块划分结构是指执行编码和解码的单元以及诸如预测和变换的主要编码和解码技术应用于的单元。随着视频压缩技术的发展,用于编码和解码的块的大小逐渐增加,并且支持更多的各种划分类型作为块划分类型。另外,不仅使用用于编码和解码的单元,而且使用根据块的作用而细分的单元来执行视频压缩。
4.在hevc标准中,使用根据四叉树类型的块划分结构被细分的单元块以及用于预测和变换的作用来执行视频编码和解码。除了四叉树类型的块划分结构之外,还提出了各种类型的块划分结构,例如四叉树和二叉树组合的形式的qtbt(四叉树加二叉树)以及三叉树与qtbt组合的mtt(multi

type tree,多类型树),以提高视频编码效率。通过对各种块大小和各种类型的块划分结构的支持,将一个图片划分为多个块,并且将以编码单元为单位的信息例如编码模式、运动信息以及与每个块对应的帧内预测方向信息以各种方式进行表达,因此,表达以编码单元为单位的信息的位的数目显著增加。


技术实现要素:

5.技术问题
6.根据本公开内容的图像编码/解码方法和设备提供了用于重建图片的环路内滤波方法。
7.根据本公开内容的图像编码/解码方法和设备提供了根据多种帧间预测模式的运动补偿方法。
8.技术解决方案
9.根据本公开内容的图像编码/解码方法和设备可以基于帧内预测或帧间预测中的至少一个来重建当前图片,指定在所重建的当前图片中应用去块滤波器的块边界,并且基于在编码/解码设备中预定义的滤波器类型将去块滤波器应用于所指定的块边界。
10.在根据本公开内容的图像编码/解码方法和设备中,可以以预定的m
×
n样本网格为单位应用去块滤波器,其中m和n可以是4、8或更大的整数。
11.在根据本公开内容的图像编码/解码方法和设备中,编码/解码设备可以定义具有不同滤波器长度的多个滤波器类型,并且多个滤波器类型可以包括长滤波器、中滤波器或
短滤波器中的至少一个。
12.在根据本公开内容的图像编码/解码方法和设备中,长滤波器的滤波器长度可以是8、10、12或14,中滤波器的滤波器长度可以是6,并且短滤波器的滤波器长度可以是2或4。
13.在根据本公开内容的图像编码/解码方法和设备中,在p块中应用去块滤波器的像素的数目不同于在q块中应用去块滤波器的像素的数目,其中,p块和q块可以是基于所指定的块边界的两个方向上的相邻块。
14.在根据本公开内容的图像编码/解码方法和设备中,在p块中应用去块滤波器的像素的数目可以是3,并且在q块中应用去块滤波器的像素的数目可以是7。
15.在根据本公开内容的图像编码/解码方法和设备中,重建当前图片的步骤可以包括:构建当前块的合并候选列表;根据合并候选列表得出当前块的运动信息;以及基于运动信息对当前块执行运动补偿。
16.在根据本公开内容的图像编码/解码方法和设备中,可以根据当前图片参考模式基于预定参考区域来执行对当前块的运动补偿。
17.在根据本公开内容的图像编码/解码方法和设备中,可以使用合并模式的运动矢量差值来校正所得出的运动信息中的运动矢量。
18.在根据本公开内容的图像编码/解码方法和设备中,仅在当前块的大小大于预定阈值大小时才可以执行对运动矢量的校正。
19.有益效果
20.在本公开内容中,可以通过以预定样本网格为单位应用环路内滤波器,但是考虑预测/变换块或其子块之间的边界来提高环路滤波的效率。
21.此外,本公开内容可以通过基于具有不同滤波器长度的环路内滤波器对块边界进行滤波来高效地去除边界上的效应(artifact)。
22.此外,本公开内容可以通过根据预定优先级适应性地使用多个帧间预测模式来提高运动补偿的效率。
23.此外,根据本公开内容,可以通过根据当前图片参考模式适应性地使用参考区域来提高当前图片参考模式的编码效率。
24.此外,本公开内容可以通过基于运动矢量差值选择性地使用合并模式来提高合并模式的帧间预测参数的精确度并且提高合并模式的编码效率。
附图说明
25.图1是示出根据本公开内容的图像编码设备的框图。
26.图2是示出根据本公开内容的图像解码设备的框图。
27.图3示出了根据应用了本公开内容的实施方式的去块滤波器的目标边界和目标像素。
28.图4示出了根据应用了本公开内容的实施方式的编码设备的滤波器模块150和解码设备的滤波器模块240中的去块滤波处理。
29.图5是示出通过将一个编码块划分为多个子块来执行预测和变换的概念的图。
30.图6是示出对一个编码块进行子块划分的示例以及子块边界和去块滤波器网格的概念的图。
31.图7是示出当前要被滤波的像素以及用于在p块与q块之间的边界处进行滤波的参考像素的概念的图。
32.图8是示出要在p块与q块之间的边界处以及q块内的子块边界处进行块滤波的像素和用于滤波的参考像素的概念的图。
33.图9是用于说明当前图片参考模式的基本概念的图。
34.图10是示出根据当前块的位置的当前图片参考区域的实施方式的图。
35.图11至图14示出了包括当前块的区域以及当前图片参考(cpr)的可搜索和可参考区域的实施方式。
36.图15示出了作为应用了本公开内容的实施方式的使用基于运动矢量差值(mvd)的合并模式的图像编码/解码方法。
37.图16至图21示出了根据应用了本公开内容的实施方式的基于预定优先级来确定当前块的帧间预测模式的方法。
具体实施方式
38.根据本公开内容的图像编码/解码方法和设备可以基于帧内预测或帧间预测中的至少一个来重建当前图片,指定在所重建的当前图片中应用去块滤波器的块边界,并且基于在编码/解码设备中预定义的滤波器类型将去块滤波器应用于指定的块边界。
39.在根据本公开内容的图像编码/解码方法和设备中,可以以预定的m
×
n样本网格为单位应用去块滤波器,其中m和n可以是4、8或更大的整数。
40.在根据本公开内容的图像编码/解码方法和设备中,编码/解码设备可以定义具有不同滤波器长度的多个滤波器类型,并且多个滤波器类型可以包括长滤波器、中滤波器或短滤波器中的至少一个。
41.在根据本公开内容的图像编码/解码方法和设备中,长滤波器的滤波器长度可以是8、10、12或14,中滤波器的滤波器长度可以是6,并且短滤波器的滤波器长度可以是2或4。
42.在根据本公开内容的图像编码/解码方法和设备中,在p块中应用去块滤波器的像素的数目可以不同于在q块中应用去块滤波器的像素的数目,其中,p块和q块可以是从所指定的块边界的两个方向上的相邻块。
43.在根据本公开内容的图像编码/解码方法和设备中,在p块中应用去块滤波器的像素的数目可以是3,并且在q块中应用去块滤波器的像素的数目可以是7。
44.在根据本公开内容的图像编码/解码方法和设备中,重建当前图片的步骤可以包括:构建当前块的合并候选列表;根据合并候选列表得出当前块的运动信息;以及基于运动信息对当前块执行运动补偿。
45.在根据本公开内容的图像编码/解码方法和设备中,可以根据当前图片参考模式基于预定参考区域来执行对当前块的运动补偿。
46.在根据本公开内容的图像编码/解码方法和设备中,可以使用合并模式的运动矢量差值来校正所得出的运动信息中的运动矢量。
47.在根据本公开内容的图像编码/解码方法和设备中,仅当当前块的大小大于预定阈值大小时才可以执行对运动矢量的校正。
48.本公开内容的实施方式
49.在下文中,将参照本说明书中的附图详细描述本公开内容的实施方式,使得本领域普通技术人员可以容易地实现本公开内容。然而,本公开内容可以以各种不同的形式来实现,并且不限于本文中描述的实施方式。在附图中,为了清楚地描述本公开内容,与描述无关的部分被省略,并且遍及说明书,相似的附图标记附于相似的部分。
50.遍及说明书,当某个部分被描述为与另一部分“连接”时,这不仅包括直接连接的情况,还包括与中间的另一元件电连接的情况。另外,在整个说明书中,当某个部分“包括”某个部件时,这意味着除非另外说明,否则还可以包括其他部件而不是排除其他部件。
51.遍及本说明书使用的术语“(至)~的步骤”或“~的步骤”并不意味着“针对~的步骤”。另外,诸如第一和第二的术语可以用于描述各种元件,但是所述元件不应受这些术语限制。以上术语仅用于将一个部件与另一部件进行区分的目的。
52.另外,本公开内容的实施方式中所示的部件被独立地示出以表示不同的特征功能,这并不意味着每个部件由单独的硬件或单个软件部件单元制成。也就是说,为了便于描述,每个部件单元通过被列为各自的部件单元进行描述,并且部件单元中的至少两个被组合以形成一个部件单元,或者一个部件单元可以被划分为多个部件单元以执行功能。只要这些部件中的每一个部件的集成实施方式和单独实施方式不偏离本公开内容的本质,那么这些部件中的每一个部件的集成实施方式和单独实施方式也包括在本公开内容的范围内。
53.在下文中描述的本公开内容的各种实施方式中,诸如“~单元”、“~组”、“~单元”、“~模块”和“~块”的术语意指处理至少一个功能或操作的单元,并且这些单元可以以硬件或软件或硬件和软件的组合来实现。
54.另外,编码块是指当前对其执行编码和解码的一组目标像素的处理单元,并且可以互换地用作编码块和编码单元。另外,编码单元是指编码单元(cu),并且可以一般地意指包括编码块(cb)。
55.另外,四叉树划分是指将一个块划分为四个独立的编码单元,并且二叉树划分是指将一个块划分为两个独立的编码单元。另外,三叉树划分是指以1:2:1的比率将一个块划分为三个独立的编码单元。
56.图1是示出根据本公开内容的图像编码设备的框图。
57.参照图1,视频编码设备100可以包括:图片划分模块110、预测模块120和125、变换模块130、量化模块135、重排模块160、熵编码模块165、逆量化模块140、逆变换模块145、滤波器模块150和存储器155。
58.图片划分模块110可以将输入图片划分为一个或更多个处理单元。本文中,处理单元可以是预测单元(pu)、变换单元(tu)或编码单元(cu)。下文中,在本公开内容的实施方式中,编码单元可以用作执行编码的单元或执行解码的单元。
59.预测单元可以通过将一个编码单元划分为相同大小的至少一个正方形或非正方形来得到,并且其可以被划分成使得在一个编码单元内划分的预测单元中的一个预测单元具有与另一预测单元不同的形状和/或大小。当预测单元不是在基于编码单元来生成执行帧内预测的预测单元时的最小编码单元时,可以在不将编码单元划分为多个预测单元n
×
n的情况下执行帧内预测。
60.预测模块120和125可以包括执行帧间预测的帧间预测模块120和执行帧内预测的帧内预测模块125。可以确定针对预测单元执行帧间预测还是帧内预测,并且可以确定根据
每种预测方法的详细信息(例如,帧内预测模式、运动矢量、参考图片等)。所生成的预测块与原始块之间的残差值(残差块)可以被输入至变换模块130。另外,用于预测的预测模式信息、运动矢量信息等可以通过熵编码模块165与残差值一起被编码并且可以被发送至解码器。然而,当应用根据本公开内容的从解码器侧进行的运动信息得出技术时,由于编码器不生成预测模式信息和运动矢量信息,因此相应的信息不被发送至解码器。另一方面,编码器可以标示和发送指示从解码器侧得出和使用运动信息的信息以及关于用于得出运动信息的技术的信息。
61.帧间预测模块120可以基于当前图片的先前图片或后续图片中的至少一个的信息来对预测单元进行预测,或者在一些情况下可以基于当前图片中的一些编码区域的信息来对预测单元进行预测。作为帧间预测模式,可以使用各种方法,例如合并模式、高级运动矢量预测(amvp)模式、仿射模式、当前图片参考模式和组合预测模式。在合并模式中,可以将空间/时间合并候选中的至少一个运动矢量设置成当前块的运动矢量,并且可以使用所设置的运动矢量来执行帧间预测。然而,即使在合并模式中,也可以通过将附加运动矢量差值(mvd)与预设运动矢量相加来校正预设运动矢量。在这种情况下,经校正的运动矢量可以用作当前块的最终运动矢量,这将参照图15进行详细描述。仿射模式是将当前块划分为预定子块单元并且使用针对每个子块单元得出的运动矢量执行帧间预测的方法。此处,子块单元用n
×
m表示,并且n和m可以分别为4、8、16或更大的整数。子块的形状可以是正方形或非正方形。子块单元可以是预先约定给编码设备的固定单元,或者可以考虑当前块的大小/形状、分量类型等来可变地确定。当前图片参考模式是使用当前块所属的当前图片中的预重建区域和预定块矢量的帧间预测方法,这将参照图9至图14详细描述。在组合预测模式下,针对一个当前块分别生成通过帧间预测的第一预测块和通过帧内预测的第二预测块,并且将预定权重应用于第一预测块和第二预测块以生成当前块的最终预测块。此处,可以使用上述帧间预测模式中的任何一种来执行帧间预测。可以使用在编码设备中预设的仅帧内预测模式(例如,平面模式、dc模式、竖直/水平模式和对角线模式中的任何一种)来执行帧内预测。替选地,可以基于与当前块相邻的相邻块(例如,左、上、左上、右上和右下中的至少一个)的帧内预测模式得出用于帧内预测的帧内预测模式。在这种情况下,要使用的相邻块的数目可以固定为一个或两个,或者可以是三个或更多个。即使当所有上述相邻块都可用时,也可以仅限制使用左相邻块或上相邻块之一,或者仅限制使用左相邻块和上相邻块。可以考虑前述相邻块是否是以帧内模式编码的块来确定权重。假设权重w1应用于第一预测块并且权重w2应用于第二预测块。在这种情况下,当左/上相邻块都是以帧内模式编码的块时,w1可以是小于w2的自然数。例如,w1与w2的比率可以是[1:3]。当左/上相邻块都不是以帧内模式编码的块时,w1可以是大于w2的自然数。例如,w1与w2的比率可以是[3:1]。当左/上相邻块中仅一个是以帧内模式编码的块时,可以将w1设置成与w2相同。
[0062]
帧间预测模块120可以包括参考图片插值模块、运动预测模块和运动补偿模块。
[0063]
参考图片插值模块可以从存储器155接收参考图片信息,并且可以根据参考图片生成关于整像素或小于整像素的像素信息。在亮度像素的情况下,具有不同的滤波器系数的基于8抽头dct的插值滤波器可以用于以1/4像素为单位来生成关于整像素或小于整像素的像素信息。在色度信号的情况下,具有不同滤波器系数的基于4抽头dct的插值滤波器可以用于以1/8像素为单位来生成关于整像素或小于整像素的像素信息。
[0064]
运动预测模块可以基于由参考图片插值模块进行插值的参考图片来执行运动预测。作为用于获得运动矢量的方法,可以使用诸如基于全搜索的块匹配算法(fbma)、三步搜索(tss)以及新三步搜索算法(nts)的各种方法。运动矢量可以具有基于插值像素的以1/2像素或1/4像素为单位的运动矢量值。运动预测模块可以通过使用各种运动预测方法来预测当前预测单元。
[0065]
帧内预测模块125可以基于作为当前图片中的像素信息的与当前块相邻的参考像素信息来生成预测单元。在当前预测单元的相邻块是已经执行帧间预测的块并且参考像素是已经执行帧间预测的像素时,已经执行帧间预测的块中包括的参考像素可以用已经执行帧内预测的相邻块的参考像素信息来替换。换言之,当参考像素不可用时,关于不可用的参考像素的信息可以用可用的参考像素中的至少一个参考像素来替换。
[0066]
另外,可以生成包括残差信息的残差块,残差信息是基于由预测模块120和125生成的预测单元而已经执行预测的预测单元与该预测单元的原始块之间的差。所生成的残差块可以被输入到变换模块130。
[0067]
变换模块130可以使用诸如离散余弦变换(dct)、离散正弦变换(dst)和klt的变换方法来对包括原始块与由预测模块120和125生成的预测单元之间的残差信息的残差块进行变换。可以基于用于生成残差块的预测单元的帧内预测模式信息来确定是否应用dct、dst或klt以对残差块进行变换。
[0068]
量化模块135可以对通过变换模块130变换为频域的值进行量化。量化系数可以根据图片的块或重要性而变化。可以将由量化模块135计算的值提供给逆量化模块140和重排模块160。
[0069]
重排模块160可以在量化的残差值上对系数值进行重排。
[0070]
重排模块160可以通过系数扫描方法将二维块形式的系数改变为一维矢量形式的系数。例如,重排模块160可以使用之字形扫描方法从dc系数扫描至高频域中的系数,以将系数改变为一维矢量的形式。根据变换单元的大小和帧内预测模式,可以使用在列方向上扫描二维块形式的系数的竖直扫描或在行方向上扫描二维块形式的系数的水平扫描来替代之字形扫描。换言之,可以根据变换单元的大小和帧内预测模式来确定使用之字形扫描、竖直扫描和水平扫描中的哪种扫描方法。
[0071]
熵编码模块165可以基于由重排模块160计算出的值来执行熵编码。熵编码可以使用各种编码方法,例如指数哥伦布、上下文自适应可变长度编码(cavlc)和上下文自适应二进制算术编码(cabac)。与此相关,熵编码模块165可以对来自重排模块160以及预测模块120和125的编码单元的残差值系数信息进行编码。另外,根据本公开内容,可以用信号通知并发送指示在解码器侧处得出并使用运动信息的信息以及关于用于得出运动信息的技术的信息。
[0072]
逆量化模块140和逆变换模块145可以对由量化模块135量化的值进行逆量化,并且对由变换模块130变换的值进行逆变换。由逆量化模块140和逆变换模块145生成的残差值可以与通过包括在预测模块120和125中的运动预测模块、运动补偿模块和帧内预测模块预测的预测单元组合,以生成重建块。
[0073]
滤波器模块150可以包括去块滤波器、偏移校正模块或自适应环路滤波器(alf)中的至少一个。去块滤波器可以去除由于重建图片中的块之间的边界而发生的块失真,这将
参照图3至图8进行描述。偏移校正模块可以以去块块滤波后的图像中的像素为单位来校正相对于原始图像的偏移。为了对特定图片执行偏移校正,可以使用考虑到每个像素的边缘信息应用偏移的方法或者可以使用将图像中包括的像素划分为预定数目的区域、确定要执行偏移的区域并且将该偏移应用于所确定的区域的方法。可以基于通过将滤波后的重建图像与原始图像进行比较而获得的值来执行自适应环路滤波(alf)。在将图像中包括的像素划分为预定组之后,可以确定要应用于相应组的一个滤波器,并且可以针对每个组区别地执行滤波。
[0074]
存储器155可以存储通滤波波器模块150计算出的重建块或图片。在执行帧间预测时,可以将所存储的重建块或图片提供至预测模块120和125。
[0075]
图2是示出根据本公开内容的图像解码设备的框图。
[0076]
参照图2,用于对视频进行解码的设备200可以包括:熵解码模块210、重排模块215、逆量化模块220、逆变换模块225、预测模块230和235、滤波器模块240和存储器245。
[0077]
当视频比特流被输入至用于对视频进行解码的设备时,可以根据用于对视频进行编码的设备的逆处理来对输入的比特流进行解码。
[0078]
熵解码模块210可以根据由视频编码设备的熵编码模块进行的熵编码的逆处理来执行熵解码。例如,对应于由视频编码设备执行的方法,可以应用诸如指数哥伦布、上下文自适应可变长度编码(cavlc)和上下文自适应二进制算术编码(cabac)的各种方法。
[0079]
熵解码模块210可以对关于由编码设备执行的帧内预测和帧间预测的信息进行解码。
[0080]
重排模块215可以基于在编码设备中使用的重排方法对由熵解码模块210解码的比特流熵执行重排。重排模块可以将一维矢量形式的系数重建和重排为二维块形式的系数。
[0081]
逆量化模块220可以基于从编码设备接收到的量化参数和块的重排系数来执行逆量化。
[0082]
逆变换模块225可以对由用于对视频进行编码的设备产生的量化结果执行逆变换,即与由变换模块执行的变换即dct、dst和klt对应的逆dct、逆dst和逆klt。可以基于由视频编码设备确定的传输单元来执行逆变换。在视频解码设备的逆变换模块225中,可以根据诸如预测方法、当前块的大小和预测方向的多条信息来选择性地执行变换方案(例如,dct、dst和klt)。
[0083]
预测模块230和235可以基于从熵解码模块210接收到的关于预测块生成的信息以及从存储器245接收到的关于先前解码的块或图片的信息来生成预测块。
[0084]
如上所述,如果当以与视频编码设备的操作相同的方式执行帧内预测时预测单元的大小和变换单元的大小相同,则可以基于存在于预测单元的左部、左上部和顶部的像素来对预测单元执行帧内预测。然而,如果当执行帧内预测时预测单元的大小和变换单元的大小不同,则可以使用基于变换单元的参考像素来执行帧内预测。另外,使用n
×
n划分的帧内预测可以仅用于最小编码单元。
[0085]
预测模块230和235可以包括预测单元确定模块、帧间预测模块和帧内预测模块。预测单元确定模块可以从熵解码模块210接收诸如预测单元信息、帧内预测方法的预测模式信息以及关于帧间预测方法的运动预测的信息的各种信息,可以将当前编码单元划分为
预测单元,并且可以确定对预测单元执行帧间预测还是帧内预测。另一方面,如果编码器100不发送与用于帧间预测的运动预测有关的信息,而是发送指示从解码器侧得出并使用运动信息的信息以及关于用于得出运动信息的技术的信息,则预测单元确定模块基于从编码器100发送的信息来确定帧间预测模块230的预测性能。
[0086]
帧间预测模块230可以使用由视频编码设备提供的当前预测单元的帧间预测所需的信息,基于包括当前预测单元的当前图片的先前图片或后续图片中的至少一个的信息,来对当前预测单元执行帧间预测。为了执行帧间预测,可以基于编码单元来确定包括在对应的编码单元中的预测单元的帧间预测模式。对于帧间预测模式,前述的合并模式、amvp模式、仿射模式、当前图片参考模式、组合预测模式等可以同样用于解码设备中,因此在本文中不再详细描述。帧间预测模块230可以以预定优先级确定当前预测单元的帧间预测模式,这将参照图16至图18进行描述。
[0087]
帧内预测模块235可以基于当前图片中的像素信息来生成预测块。当预测单元是进行了帧内预测的预测单元时,可以基于从视频编码设备接收到的预测单元的帧内预测模式信息来执行帧内预测。帧内预测模块235可以包括自适应帧内平滑(ais)滤波器、参考像素插值模块和dc滤波器。ais滤波器对当前块的参考像素执行滤波,并且可以根据当前预测单元的预测模式来确定是否应用滤波器。可以通过使用预测单元的预测模式和从用于对视频进行编码的设备接收到的ais滤波器信息来对当前块的参考像素执行ais滤波。在当前块的预测模式是未执行ais滤波的模式时,可以不应用ais滤波器。
[0088]
当预测单元的预测模式是基于由参考像素插值的像素值执行帧内预测的预测单元时,参考像素插值模块可以对参考像素进行插值以生成以等于整像素或小于整像素的像素为单位的参考像素。在当前预测单元的预测模式是其中在不对参考像素进行插值的情况下生成预测块的预测模式时,可以不对参考像素进行插值。在当前块的预测模式是dc模式时,dc滤波器可以通过滤波来生成预测块。
[0089]
可以将重建块或图片提供至滤波器模块240。滤波器模块240可以包括去块滤波器、偏移校正模块和alf。
[0090]
视频解码设备的去块滤波器可以从视频编码设备接收关于去块滤波器的信息,并且可以对相应的块执行去块滤波。这将参照图3至图8进行描述。
[0091]
偏移校正模块可以基于在执行编码时应用于图像的偏移校正的类型和偏移值信息对重建图像执行偏移校正。基于从编码设备接收到的关于是否应用alf的信息、alf系数信息等,可以将alf应用于编码单元。alf信息可以以被包括在特定参数集中的方式来提供。
[0092]
存储器245可以存储重建图片或块以用作参考图片或块,并且可以将重建图片提供至输出模块。
[0093]
图3示出了根据应用了本公开内容的实施方式的去块滤波器的目标边界和目标像素。
[0094]
图3是示出两个不同块(p块与q块)之间的块边界320和321的图,并且块边界可以分类为竖直边界和水平边界。
[0095]
在图3中,q块区域是指在当前目标块中执行编码和/或解码的区域,并且p块区域是指已经重建并且在空间上与q块相邻的先前重建的块。p块和q块是预重建块,q块可以指当前执行去块滤波的区域,并且p块可以指与q块在空间上相邻的块。
[0096]
图3是概念性地示出应用了去块滤波器的p块区域和q块区域的图,并且图3示出了位于p块与q块之间的边界处的应用了去块滤波器的像素的实施方式。因此,应用本公开内容中提出的去块滤波器的像素的数目(在下文中称为目标像素数)和去块滤波器的抽头数不限于图3,并且从p块与q块之间的边界开始的p块和q块中的每一个的目标像素数可以是1、2、3、4、5、6、7或更多。p块的目标像素数可以等于或不同于q块的目标像素数。例如,p块中的目标像素数可以是5,并且q块中的目标像素数可以是5。替选地,p块中的目标像素数可以是7,并且q块中的目标像素数可以是7。替选地,p块中的目标像素数可以是3,而q块中的目标像素数可以是7。
[0097]
在图3中,以p块和q块的目标像素数分别是3的情况作为实施方式进行描述。
[0098]
在图3所示的竖直边界的实施方式中,示出了将去块滤波器应用于q块区域300的第一行330的示例。
[0099]
在属于第一行的四个像素q0、q1、q2和q3中,与竖直边界相邻的三个像素q0、q1和q2是对其执行去块滤波的目标像素。
[0100]
此外,在图3所示的水平边界的实施方式中的将去块滤波器应用于q块区域301的第一列331的示例中,在属于第一列的四个像素q0、q1、q2、q3中,与水平边界相邻的三个像素q0、q1和q2是对其执行去块滤波的目标像素。
[0101]
然而,在对对应像素执行去块滤波时,可以通过参考属于第一行或第一列中的不对其执行去块滤波的目标像素的另一像素值(例如,q3)的像素值来执行滤波。替选地,可以通过参考第一行或第一列的相邻行或相邻列的像素值来执行滤波。此处,相邻行或相邻列可以属于当前目标块或者可以属于与当前目标块在空间上相邻的块(例如,左/右、上/下)。可以考虑滤波方向(或边界方向)来自适应地确定空间相邻块的位置。通过参考,可以自适应地确定是否执行滤波、滤波强度、滤波器系数、滤波器系数的数目、滤波方向等。上述实施方式可以以相同/相似的方式应用于稍后描述的实施方式。
[0102]
图3示出了将去块滤波器应用于q块区域的示例,代表性地示出了第一行330和第一列331,并且属于包括第一行的q块区域的后续行(第二行、第三行等)以及属于包括第一列的q块区域的后续列(第二列、第三列等)也经历去块滤波器。
[0103]
在图3中,p块区域是指与执行编码和/或解码的当前目标块的竖直边界或水平边界在空间上相邻的块区域,并且在图3中所示的竖直边界的实施方式中,示出了将去块滤波器应用于p块区域310的第一行330的示例。
[0104]
在属于第一行的四个像素p0、p1、p2、p3中,与竖直边界相邻的三个像素(p0、p1、p2)是对其执行去块滤波的目标像素。
[0105]
此外,在图3所示的水平边界的实施方式中的将去块滤波器应用于p块区域311的第一列331的示例中,在属于第一列的四个像素p0、p1、p2、p3中,与水平边界相邻的三个像素p0、p1和p2也是对其执行去块滤波的目标像素。
[0106]
然而,在对对应像素执行去块滤波器时,可以通过参考不对其执行去块滤波的目标像素的p3的像素值来执行滤波。
[0107]
图3示出了将去块滤波器应用于p块区域的示例,代表性地示出了第一行330和第一列331,并且属于包括第一行的p块区域的后续行(第二行、第三行等)以及属于包括第一列的p块区域的后续列(第二列、第三列等)也经历去块滤波器。
[0108]
图4示出了根据应用了本公开内容的实施方式的编码设备的滤波器模块150和解码设备的滤波器模块240中的去块滤波处理。
[0109]
参照图4,可以指定重建图片的块边界之中的与去块滤波相关的块边界(在下文中,称为边缘)(s400)。
[0110]
重建图片可以被划分成预定的n
×
m像素网格(样本网格)。n
×
m像素网格可以表示执行去块滤波的单位。此处,n和m可以是4、8、16或更大的整数。可以针对每个分量类型定义像素网格。例如,当分量类型为亮度分量时,n和m可以被设置成4,并且当分量类型为色度分量时,n和m可以被设置成8。无论分量类型如何,可以使用具有固定大小的n
×
m像素网格。
[0111]
边缘是位于n
×
m像素网格上的块边界,并且可以包括变换块的边界、预测块的边界或者子块的边界中的至少一个。子块可以指根据前述仿射模式的子块。将参照图5和图6描述应用去块滤波器的块边界。
[0112]
参照图4,可以得出指定边缘的决定值(s410)。
[0113]
在本实施方式中,假设边缘类型为竖直边缘并且应用4
×
4像素网格。从边缘开始的左块和右块将分别称为p块和q块。p块和q块是预重建块,q块可以指当前执行去块滤波的区域,并且p块可以指与q块在空间上相邻的块。
[0114]
首先,可以使用用于得出决定值的变量dsam来得出决定值。可以针对p块和q块的第一像素线或第四像素线中的至少一个得出dsam。在下文中,p块和q块的第一像素线的dsam将被称为dsam0,而第四像素线的dsam将被称为dsam3。
[0115]
如果满足以下条件中的至少一个,则dsam0可以被设置成1,否则,dsam0可以被设置成0。
[0116]
[表1]
[0117][0118][0119]
在表1中,可以基于p块的第一像素线的第一像素值线性度dl或者q块的第一像素线的第二像素值线性度d2中的至少一个来得出dpq。此处,可以使用属于p块的第一像素线的i个像素p来得出第一像素值线性度d1。i可以是3、4、5、6、7或更大。i个像素p可以是彼此相邻的连续像素或以规则间隔彼此间隔开的非连续像素。在这种情况下,像素p可以是第一像素线的像素中最靠近边缘的i个像素。类似地,可以使用属于q块的第一像素线的j个像素q来得出第二像素值线性度d2。j可以是3、4、5、6、7或更大。j被设置成与i相同的值但不限于此,并且可以是与i不同的值。j个像素q可以是彼此相邻的连续像素或以规则间隔彼此间隔开的非连续像素。在这种情况下,像素q可以是第一像素线的像素中最靠近边缘的j个像素。
[0120]
例如,当使用三个像素p和三个像素q时,可以如以下式1中那样得出第一像素值线性度dl和第二像素值线性度d2。
[0121]
[式1]
[0122]
d1=abs(p2,0

2*p1,0 p0,0)
[0123]
d2=abs(q2,0

2*q1,0 q0,0)
[0124]
替选地,当使用六个像素p和六个像素q时,可以如下面的式2所示的那样得出第一像素值线性度dl和第二像素值线性度d2。
[0125]
[式2]
[0126]
d1=(abs(p2,0

2*p1,0 p0,0) abs(p5,0

2*p4,0 p3,0) 1)>>1
[0127]
d2=(abs(q2,0

2*q1,0 q0,0) abs(q5,0

2*q4,0 q3,0) 1)>>1
[0128]
在表1中,sp可以表示p块的第一像素线的第一像素值梯度v1,并且sq可以表示q块的第一像素线的第二像素值梯度v2。此处,可以使用属于p块的第一像素线的m个像素p来得出第一像素值梯度v1。m可以是2、3、4、5、6、7或更大。m个像素p可以是彼此相邻的连续像素或以规则间隔彼此间隔开的非连续像素。替选地,m个像素p中的一些像素可以是彼此相邻的连续像素,而其余像素可以是以规则间隔彼此隔开的非连续像素。类似地,可以使用属于q块的第一像素线的n个像素q来得出第二像素值梯度v2。n可以是2、3、4、5、6、7或更大。n被设置成与m相同的值但不限于此,并且可以是与m不同的值。n个像素q可以是彼此相邻的连续像素或以规则间隔彼此间隔开的非连续像素。替选地,n个像素q中的一些像素可以是彼此相邻的连续像素,而其余像素可以是以规则间隔彼此间隔开的非连续像素。
[0129]
例如,当使用两个像素p和两个像素q时,可以如下面的式3所示那样得出第一像素值梯度v1和第二像素值梯度v2。
[0130]
[式3]
[0131]
v1=abs(p3,0

p0,0)
[0132]
v2=abs(q0,0

q3,0)
[0133]
替选地,当使用六个像素p和六个像素q时,可以如下面的式4所示那样得出第一像素值梯度v1和第二像素值梯度v2。
[0134]
[式4]
[0135]
v1=abs(p3,0

p0,0) abs(p7,0

p6,0

p5,0 p4,0)
[0136]
v2=abs(q0,0

q3,0) abs(q4,0

q5,0

q6,0 q7,0)
[0137]
可以根据与边缘相邻的像素p0,0与像素q0,0之间的差来得出表1的spq。
[0138]
可以基于预定参数qp得出表1的第一阈值和第二阈值。此处,可以使用p块的第一量化参数、q块的第二量化参数或用于得出qp的偏移中的至少一个来确定qp。偏移可以是由编码设备编码并用信号通知的值。例如,可以通过将偏移添加到第一量化参数与第二量化参数的平均值来得出qp。可以基于前述量化参数qp和块边界强度(bs)来得出表1的第三阈值。此处,可以考虑p/q块的预测模式、帧间预测模式、存在或不存在非零变换系数、运动矢量差等来可变地确定bs。例如,当p块和q块中至少一个的预测模式是帧内模式时,bs可以被设置成2。当在组合预测模式下对p块或q块中的至少一个进行编码时,bs可以被设置成2。当p块或q块中的至少一个包括非零变换系数时,bs可以被设置成1。当以与q块不同的帧间预测模式对p块进行编码(例如,在当前图片参考模式下对p块进行编码,并且在合并模式或amvp模式下对q块进行编码)时,bs可以被设置成1。当在当前图片参考模式下对p块和q块二者进行编码并且它们的块矢量之间的差大于或等于预定阈值差时,bs可以被设置成1。此处,阈值差可以是预先约定给编码/解码设备的固定值(例如,4、8、16)。
[0139]
由于dsam3是通过与上述dsam0相同的方法使用属于第四像素线的一个或更多个
像素得出的,因此将省略对其的详细描述。
[0140]
可以基于所得出的dsam0和dsam3来得出决定值。例如,如果dsam0和dsam3二者都为1,则可以将决定值设置成第一值(例如,3),否则可以将决定值设置成第二值(例如,1或2)。
[0141]
参照图4,可以基于所得出的决定值来确定去块滤波器的滤波器类型(s420)。
[0142]
在编码/解码设备中,可以定义具有不同滤波器长度的多个滤波器类型。作为滤波器类型的示例,存在滤波器长度最长的长滤波器、滤波器长度最短的短滤波器或者长于短滤波器且短于长滤波器的一个或更多个中滤波器。编码/解码设备中定义的滤波器类型的数目可以是两个、三个、四个或更多个。
[0143]
例如,当决定值为第一值时,可以使用长滤波器,并且当决定值为第二值时,可以使用短滤波器。替选地,当决定值为第一值时,可以选择性地使用长滤波器或中滤波器中的一个,并且当决定值为第二值时,可以使用短滤波器。替选地,当决定值为第一值时,可以使用长滤波器,并且当决定值不是第一值时,可以选择性地使用短滤波器或中滤波器中的一个。具体地,当决定值为2时,可以使用中滤波器,并且当决定值为1时,可以使用短滤波器。
[0144]
参照图4,可以基于根据所确定的滤波器类型的去块滤波器对重建图片的边缘执行滤波(s430)。
[0145]
去块滤波器可以应用于位于基于边缘的两个方向上并且位于同一像素线上的多个像素。此处,应用去块滤波器的多个像素被称为滤波区域,并且滤波区域的长度(或像素的数目)对于每种滤波器类型可以不同。滤波区域的长度可以被解释为等同于上述滤波器类型的滤波器长度。替选地,滤波区域的长度可以是指在p块中应用去块滤波器的像素的数目与在q块中应用去块滤波器的像素的数目之和。
[0146]
在本实施方式中,假设编码/解码设备中定义了长滤波器、中滤波器和短滤波器这三种滤波器类型,将描述每种滤波器类型的去块滤波方法。然而,本公开内容不限于此,并且可以仅定义长滤波器和中滤波器,可以仅定义长滤波器和短滤波器,或者可以仅定义中滤波器和短滤波器。
[0147]
1.在基于长滤波器的去块滤波的情况下
[0148]
为便于说明,以下假设,除非另有说明,否则边缘类型为竖直边缘,并且当前要滤波的像素(下文中称为当前像素q)属于q块。滤波像素fq可以通过第一参考值与第二参考值的加权平均来得出。
[0149]
此处,第一参考值可以使用当前像素q所属的滤波区域的全部或部分像素来得出。此处,滤波区域的长度(或像素的数目)可以是8、10、12、14或更大的整数。滤波区域的一些像素可以属于p块,而剩余的像素可以属于q块。例如,当滤波区域的长度是10时,五个像素可以属于p块,并且五个像素可以属于q块。替选地,三个像素可以属于p块,并且七个像素可以属于q块。相反,七个像素可以属于p块,并且三个像素可以属于q块。换言之,可以对p块和q块对称地执行或者可以不对称地执行基于长滤波器的去块滤波。
[0150]
不管当前像素q的位置如何,属于同一滤波区域的所有像素可以共享相同的第一参考值。即,无论当前要滤波的像素位于p块还是q块中,都可以使用相同的第一参考值。无论当前要滤波的像素在p块或q块中的位置如何,都可以使用相同的第一参考值。
[0151]
可以使用属于q块的滤波区域的像素或者滤波区域的相邻像素中的距边缘最远的
像素(在下文中称为第一像素)中的至少一个来得出第二参考值。相邻像素可以指与滤波区域的右侧相邻的至少一个像素。例如,可以将第二参考值得出为一个第一像素与一个相邻像素之间的平均值。替选地,可以将第二参考值得出为两个或更多个第一像素与和滤波区域的右侧相邻的两个或更多个相邻像素之间的平均值。
[0152]
对于加权平均,预定权重fl和f2可以分别应用于第一参考值和第二参考值。具体地,编码/解码设备可以定义多个权重集,并且通过选择性地使用多个权重集中的任何一个来设置权重f1。可以考虑属于q块的滤波区域的长度(或像素的数目)来执行选择。例如,编码/解码设备可以定义如下表2所示的权重集。每个权重集可以由分别与要滤波的像素位置对应的一个或更多个权重组成。因此,从属于所选择的权重集的多个权重中,可以选择与当前像素q的位置对应的权重,并且将该权重应用于当前像素q。构成权重集的权重的数目可以等于q块中包括的滤波区域的长度。构成一个权重集的多个权重可以在大于0且小于64的整数范围内以规则间隔被采样。此处,64仅是示例,并且可以大于或小于64。预定间隔可以是9、13、17、21、25或更大。可以根据属于q块的滤波区域的长度(l)可变地确定间隔。替选地,可以使用固定间隔而不管l如何。
[0153]
[表2]
[0154]
属于q块的滤波区域长度(l)权重集l>5{59,50,41,32,23,14,5}5{58,45,32,19,6}l<5{53,32,11}
[0155]
参照表2,当属于q块的滤波区域的长度(l)大于5时,在三个权重集中选择{59,50,41,32,23,14,5}。当l为5时,可以选择{58,45,32,19,6}。当l小于5时,可以选择{53,32,11}。然而,表2仅是权重集的示例,并且编码/解码设备中定义的权重集的数目可以是2、4或更大。
[0156]
此外,当l是7并且当前像素是距边缘的第一个像素q0时,可以将权重59应用于当前像素。当当前像素是距边缘的第二个像素q1时,可以将权重50应用于当前像素,并且当当前像素是距边缘的第七个像素q6时,可以将权重5应用于当前像素。
[0157]
权重f2可以基于预定权重fl来确定。例如,权重f2可以被确定为通过从预定义常数中减去权重f1而获得的值。此处,预定义常数是编码/解码设备中预定义的固定值,并且可以是64。然而,这仅是示例,并且可以使用大于或小于64的整数。
[0158]
2.在基于中滤波器的去块滤波的情况下
[0159]
中滤波器的滤波器长度可以小于长滤波器的滤波器长度。根据中滤波器的滤波区域的长度(或像素的数目)可以小于根据上述长滤波器的滤波区域的长度。
[0160]
例如,根据中滤波器的滤波区域的长度可以是6、8或更大。此处,属于p块的滤波区域的长度可以与属于q块的滤波区域的长度相同。然而,本公开内容不限于此,并且属于p块的滤波区域的长度可以比属于q块的滤波区域的长度更长或更短。
[0161]
具体地,可以使用当前像素q以及与当前像素q相邻的至少一个相邻像素来得出滤波像素fq。此处,相邻像素可以包括与当前像素q的左侧相邻的一个或更多个像素(在下文中称为左相邻像素)或者与当前像素q的右侧相邻的一个或更多个像素(在下文中称为右相邻像素)中的至少一个。
[0162]
例如,当当前像素q为q0时,可以使用两个左相邻像素p0和p1以及两个右相邻像素q1和q2。当当前像素q为q1时,可以使用两个左相邻像素p0和q0以及一个右相邻像素q2。当当前像素q为q2时,可以使用三个左相邻像素p0、q0、q1和一个右相邻像素q3。
[0163]
3.在基于短滤波器的去块滤波的情况下
[0164]
短滤波器的滤波器长度可以小于中滤波器的滤波器长度。根据短滤波器的滤波区域的长度(或像素的数目)可以小于根据上述中滤波器的滤波区域的长度。例如,根据短滤波器的滤波区域的长度可以是2、4或更大。
[0165]
具体地,可以通过将当前像素q加上或减去预定的第一偏移(offsetl)来得出滤波像素fq。此处,第一偏移可以基于p块的像素与q块的像素之间的差值来确定。例如,如下面的式5所示,可以基于像素p0与像素q0之间的差值以及像素p1与像素q1之间的差值来确定第一偏移。然而,可以仅在第一偏移小于预定阈值时才对当前像素q执行滤波。此处,阈值是基于前述量化参数qp和块边界强度(bs)得出的,并且将省略对其的详细描述。
[0166]
[式5]
[0167]
offset1=(9*(q0

p0)

3*(q1

p1) 8)>>4
[0168]
替选地,可以通过将预定的第二偏移(offset2)与当前像素q相加来得出滤波像素fq。此处,可以考虑当前像素q与相邻像素之间的差异(或变化)或者第一偏移中的至少一个来确定第二偏移。此处,相邻像素可以包括当前像素q的左像素或右像素中的至少一个。例如,可以如以下式6中那样确定第二偏移。
[0169]
[式6]
[0170]
offset2=(((q2 q0 1)>>1)

q1

offset1)>>1
[0171]
将参照图7和图8详细描述对重建图片的块边界执行去块滤波的方法。上述滤波方法不限于仅应用于去块滤波器,并且可以相同/类似地应用于作为环路内滤波器示例的自适应采样偏移(sao)、自适应环路内滤波器(alf)等。
[0172]
图5是示出通过将一个编码块划分为多个子块来执行预测和变换的构思的图。
[0173]
如图5所示,可以通过将一个编码块在水平方向或竖直方向中的一个方向上划分为两个或四个来执行预测或变换。也可以将编码块理解为解码块。在这种情况下,可以通过将编码块在水平方向或竖直方向中的一个方向上划分为两个或四个来仅执行预测,或者可以通过划分为两个或四个来执行预测和变换二者,或者可以通过划分为两个或四个来仅执行变换。
[0174]
在这种情况下,通过将单个编码块在水平方向或竖直方向上划分为两个或四个,可以在每个划分单元中执行帧内预测和变换。
[0175]
图5不限制划分的数目,并且可以将块划分为3、5或更多。此处,划分的数目可以基于块属性可变地确定。块属性可以意指编码参数,例如块大小/形状、分量类型(亮度、色度)、预测模式(帧内预测或帧间模式)、帧间预测模式(在解码器中预定义的帧间预测模式,例如合并模式、amvp模式、仿射模式等)、预测/变换单元以及块边界的位置或长度等。
[0176]
替选地,可以选择性地使用非划分或二分中的一个,并且可以选择性地使用非划分或四分中的一个。替选地,可以选择性地使用非划分、二分和四分中的任何一个。
[0177]
根据图5所示的实施方式,在将一个编码块510竖直地划分为两个子块时,可以将块的宽度(w)(511)均等地划分为两个,使得所划分的子块的宽度为w/2(513)。在将一个编
码块520水平地划分为两个子块时,可以将块的高度(h)(522)均等地划分为两个,使得所划分的子块的高度为h/2(523)。
[0178]
另外,根据图5所示的另一实施方式,在将一个编码块530竖直地划分为四个子块时,可以将块的宽度(w)(531)均等地划分为四个,使得所划分的子块具有w/4(533)的宽度。在将一个编码块540水平地划分为四个子块时,可以将块的高度(h)(542)均等地划分为四个,使得所划分的子块具有h/4(543)的宽度。
[0179]
另外,根据本公开内容的实施方式,在通过将当前编码块划分为多个子块来执行预测的模式中的子块帧内预测模式的情况下,可以以与执行预测的子块相同的形状对当前编码块执行变换。在这种情况下,可以将变换单元划分为具有与子块相同的大小/形状,或者可以合并多个变换单元。或者,相反地,可以基于变换单元来确定子块单元,并且可以以子块单元执行帧内预测。可以以相同/相似的方式将上述实施方式应用于稍后描述的实施方式。
[0180]
另外,根据图5所示的另一实施方式,在将一个编码块530竖直地划分为四个子块时,将块的宽度(w)531均等地划分为四个,使得所划分的子块具有w/4(433)的宽度。在将一个编码块440水平地划分为四个子块时,将块的高度(h)542均等地划分为四个,使得所划分的子块具有h/4(543)的高度。
[0181]
另外,根据本公开内容的实施方式,在通过将当前编码块划分为多个子块来执行预测的模式中的子块帧内预测模式的情况下,可以以与执行预测的子块相同的形状对当前编码块执行变换。
[0182]
在将一个编码块划分为两个或四个子块以根据该子块执行帧内预测和变换时,在子块的边界处可能出现块效应。因此,在以子块为单位执行帧内预测的情况下,可以在每个子块的边界处执行去块滤波。可以选择性地执行去块滤波,并且可以将标志信息用于此目的。标志信息可以指示是否对子块的边界执行滤波。标志信息可以由编码设备编码并且用信号通知给解码设备,或者标志信息可以基于当前块和相邻块中的至少一个的块属性从解码设备得出。块属性与以上描述相同,并且将省略其详细描述。
[0183]
当对一个编码块执行去块滤波时,如果当前编码块是以子块为单位通过帧内预测对其执行预测和变换的块,则可以以当前块内的子块为单位执行去块滤波。
[0184]
在对一个编码块执行去块滤波时,在当前编码块是以子块为单位通过帧内预测对其执行预测和变换的块、但子块的边界不位于用于执行去块滤波的块网格(n
×
m样本网格)上时,在相应子块的边界处跳过去块滤波。仅当相应子块的边界位于用于执行去块滤波的块网格上时,可以在子块的边界处执行去块滤波。
[0185]
在这种情况下,用于执行去块滤波的块网格意指可以应用去块滤波的最小块边界单元,并且块网格可以意指前一块边界与下一块边界之间的最小像素间隔。通常,可以将8
×
8用作块网格。然而,这不限于8
×
8块,也可以使用4
×
4或16
×
16。可以根据分量类型来使用不同大小的块网格。例如,可以将大小小于色度分量的大小的块网格用于亮度分量。可以使用针对每个分量类型的固定大小的块网格。
[0186]
如图5中所示,在将一个编码块在水平方向或竖直方向中的一个方向上划分为两个时,可以将编码块划分为非对称子块。
[0187]
在这种情况下,图5中示出了将一个编码块在水平方向或竖直方向中的一个方向
上非对称地划分为两个的情况的实施方式。
[0188]
将当前编码块550竖直地划分为两个子块,使得第一子块包括高度为h且宽度为w/4的子块,并且第二子块包括高度为h且宽度为3*w/4的子块。
[0189]
另外,将当前编码块560水平地划分为两个子块,使得第一子块包括高度为h/4且宽度为w的子块,并且第二子块包括高度为h/4且宽度为w的子块。
[0190]
可以以子块为单位执行独立的变换和/或逆变换,并且可以仅在当前编码块的某些子块中执行变换和/或逆变换。此处,某些子块可以意指位于当前目标块的左侧或上侧的n个子块。n可以为1、2、3等。n可以是向解码设备预先约定的固定值,或者可以考虑前述块属性而可变地确定n。
[0191]
可以将针对某些子块的变换过程限制为仅在当前目标块的形状为矩形(w>h,w<h)时执行。替选地,可以将其限制为仅在当前目标块的大小大于或等于阈值大小时执行。
[0192]
即使在其中仅对当前编码块的某些子块执行变换和逆变换的编码块的情况下,也可以同样地应用上述子块单元去块滤波处理。
[0193]
图6是示出用于一个编码块的子块划分的示例以及子块边界和去块滤波器网格的构思的图。
[0194]
图6图示了其中将一个16
×
8编码块600竖直地划分为四个4
×
8子块610至613的情况。在这种情况下,可以出现总共三个子块边界。示例为出现在第一子块610与第二子块611之间的第一子块边界620,出现在第二子块611与第三子块612之间的第二子块边界621,以及出现在第三子块612与第四子块613之间的第三子块边界622。
[0195]
在这种情况下,仅第二子块边界621存在于去块滤波器网格上,作为在子块边界之中应用去块滤波器执行的去块滤波器网格上存在的子块边界。
[0196]
因此,在当前编码块是通过子块划分单元的帧内预测来执行预测和变换的块时,在执行去块滤波时,可以仅在存在于去块滤波器网格上的块边界处执行去块滤波器。替选地,可以将不同的去块滤波器应用于第二子块边界和第一子块边界。也就是说,以下中的至少一个可以不同:滤波器系数、抽头数以及去块滤波器的强度。
[0197]
用于执行去块滤波器的块网格可以以n个像素为单位来配置,其中n是预定义的特定整数,并且可以适应性地使用4、8、16、32等中的一个或更多个。
[0198]
对于本公开内容的详细描述,使用图6中所示的实施方式。
[0199]
图6示出了其中将一个16
×
8编码块竖直地划分为四个子块并且通过以子块单元进行的帧内预测来执行预测和变换的实施方式。
[0200]
在这种情况下,单个16
×
8编码块被划分为四个4
×
8子块,并且通过以子块单元执行帧内预测和变换而被重建,并且被输入至去块滤波步骤。
[0201]
输入至去块滤波步骤的一个编码块包括:第一子块610与第二子块611之间的第一竖直边界621、第二子块611与第三子块612之间的第二竖直边界620以及第三子块612与第四子块613之间的第三竖直边界622。
[0202]
在这种情况下,在当前去块滤波器的块网格为8
×
8时,子块边界之中在去块滤波器网格上存在的子块边界仅是第二竖直边界620。
[0203]
根据本公开内容的实施方式,在当前编码块是通过以子块单元进行的帧内预测对其执行预测和/或变换的块时,可以对存在于去块滤波器网格上的子块边界(例如第二竖直
边界620)以及不存在于去块滤波器网格上的子块边界(例如第一竖直边界621和第三竖直边界622)二者执行去块滤波。在这种情况下,应用于每个边界的去块滤波器的特性(例如,以下中的至少一个:强度、抽头数、系数、输入像素的位置/数目等)可以不同。
[0204]
根据本公开内容的另一实施方式,在当前编码块是通过以子块单元进行的帧内预测对其执行预测和/或变换的块时,可以仅对存在于去块滤波器网格上的子块边界(例如第二竖直边界620)执行去块滤波,并且可以不对不存在于去块滤波器网格上的子块边界(例如第一竖直边界621和第三竖直边界622)执行去块滤波。
[0205]
另外,在本公开内容提出的去块滤波器的情况下,当对一个编码块执行去块滤波并且当前编码块是通过以子块为单位的帧内预测对其执行预测和/或变换的块时,可以对与编码块不同的像素执行去块滤波,该编码块具有与当前编码块相同的大小,可以使用不同的去块滤波器强度,或者可以应用不同数目的去块滤波器抽头。
[0206]
在本公开内容的实施方式中,在当前编码块小于特定块大小m时,可以对位于q块(当前应用去块滤波的块)中的n个像素执行去块滤波,q块位于存在于用于去块滤波的块网格上的变换块(tb)、预测块(pb:prediction block)或编码块(cb:coding block)的至少一个边界处。
[0207]
在这种情况下,在当前编码块是通过以子块单元进行的帧内预测对其执行预测和/或变换的块时,可以对位于q块中的(n k)个像素执行去块滤波。
[0208]
在这种情况下,m可以意指块的宽度或高度,并且m可以为16、32、64或128。
[0209]
此外,在这种情况下,n表示与在p块(与当前应用去块滤波器的块和块边界相邻的块)和q块(当前应用去块滤波器的块)中包括的块边界相邻的像素的数目,并且n可以是1、2、3、4、5、6、7或更大的整数。
[0210]
另外,在当前编码块是通过以子块为单位的帧内预测对其执行预测和/或变换的块时,k表示q块中包括的与块边界相邻的像素之中另外要经受去块滤波的像素的数目,并且k可以具有从0至从当前块的宽度和高度减去n的整数中的一个。
[0211]
在本公开内容的另一实施方式中,在当前编码块是通过以子块为单位的帧内预测对其执行预测和/或变换的块时,可以将与应用于n个像素的滤波器不同的去块滤波器强度用于位于q块中的k个像素。
[0212]
另外,在当前编码块是通过以子块为单位的帧内预测对其执行预测和变换的块时,可以将与应用于n个像素的滤波器不同的去块滤波器应用于位于q块中的k个像素。上述不同的滤波器可以意指以下中的至少一个或更多个是不同的:滤波器强度、系数值、抽头数和输入像素的数目/位置。
[0213]
图7是示出当前要被滤波的像素以及用于在p块与q块之间的边界处进行滤波的参考像素的构思的图。
[0214]
图7是示出当将去块滤波器应用于水平边界时,要经受去块滤波的像素以及用于在p块与q块之间的边界处进行滤波的参考像素的示例的图。
[0215]
图7示出作为当前经受去块滤波的块的q块700、作为与上部空间相邻的块的p块710、以及p块与q块之间的边界720。在p块中应用去块滤波的目标像素是与块边界720相邻的总共三个像素行,并且在图7的713、712和711中示出了用于在每个像素行中执行滤波的参考像素的构思。然而,图7示出了针对水平边界的实施方式。在本公开内容中,在将去块滤
波器应用于竖直边界时,将上文或下文描述的本公开内容的所有构思应用于像素列而非像素行。
[0216]
在图7的713中,用于去块滤波的目标像素是作为从边界起的第三个像素的像素p2,并且被参考以用于对像素p2执行去块滤波的像素是p3、p2、p1、p0和q0像素。在这种情况下,可以将像素p2设置为值p2',该值p2'是使用预定义的权重和五个像素p3、p2、p1、p0和q0的加权平均值。然而,在这种情况下,将加权平均值p2'用作从p2的值加上或减去特定偏移值的值的范围内的一个值。
[0217]
在图7的712中,用于去块滤波的目标像素是作为从边界起的第二个像素的像素p1,并且被参考以用于对像素p1执行去块滤波的像素是像素p2、p1、p0和q0。在这种情况下,可以将像素p1设置为值p1',该值p1'是使用预定义的权重和四个像素p2、p1、p0和q0的加权平均值。然而,在这种情况下,将加权平均值p1'用作从p1的值加上或减去特定偏移值的值的范围内的一个值。
[0218]
在图7的711中,用于去块滤波的目标像素是作为从边界起的第一个像素的像素p0,并且被参考以用于对像素p0执行去块滤波的像素是p2、p1、p0、q0和q1像素。在这种情况下,可以将像素p0设置为值p0',该值p0'是使用预定义的权重和五个像素p2、p1、p0、q0和q1的加权平均值。然而,在这种情况下,将加权平均值p0'用作从p0的值加上或减去特定偏移值的值的范围内的一个值。
[0219]
类似地,在q块中应用去块滤波的目标像素是与块边界720相邻的总共三个像素行,并且在图7的703、702和701中示出了用于在每个像素行中执行滤波的参考像素的构思。然而,图7示出了针对水平边界的实施方式。在本公开内容中,在将去块滤波器应用于竖直边界时,将上文或下文描述的本公开内容的所有构思应用于像素列而非像素行。
[0220]
在图7的703中,用于去块滤波的目标像素是作为从边界起的第三个像素的像素q2,并且被参考以用于对像素q2执行去块滤波的像素是q3、q2、q1、q0和p0像素。在这种情况下,可以将像素q2设置为值p2',该值p2'是使用预定义的权重和五个像素q3、q2、q1、q0和p0的加权平均值。然而,在这种情况下,将加权平均值q2'用作从q2的值加上或减去特定偏移值的值的范围内的一个值。
[0221]
在图7的702中,用于去块滤波的目标像素是作为从边界起的第二个像素的像素q1,并且被参考以用于对像素q1执行去块滤波的像素是q2、q1、q0和p0像素。在这种情况下,可以将像素q1设置为值q1',该值q1'是使用预定义的权重和四个像素q2、q1、q0和p0的加权平均值。然而,在这种情况下,将加权平均值q1'用作从q1的值加上或减去特定偏移值的值的范围内的一个值。
[0222]
在图7的701中,用于去块滤波的目标像素是作为从边界起的第一个像素的像素q0,并且被参考以用于对像素q0执行去块滤波的像素是q2、q1、q0、p0和p1像素。在这种情况下,可以将像素p0设置为值q0',该值q0'是使用预定义的权重和五个像素q2、q1、q0、p0和p1的加权平均值。然而,在这种情况下,将加权平均值q0'用作从q0的值加上或减去特定偏移值的值的范围内的一个值。
[0223]
图8是示出要经受块滤波的像素以及用于在p块与q块之间的边界和q块内的子块边界处进行滤波的参考像素的构思的图。
[0224]
与图7所示的仅在p块与q块之间的边界处执行去块滤波的方法不同,即使其不位
于去块滤波器的块网格上,当q块是执行基于子块的帧内预测或基于子块的变换的块时,在子块边界处可能出现块效应(blocking artifact)。为了有效地去除块效应,在图8中示出了其中甚至将去块滤波器附加地应用于位于q块内的子块边界处的像素的实施方式。
[0225]
除图7之外,在图8中,用于去块滤波的目标像素是与块边界720相邻的总共三个像素行以及存在于块内的子块边界800的附加的n个像素行。在图8的801和802中示出了对子块边界的附加的n个像素行执行滤波的构思和参考像素的构思。然而,图8示出了水平边界的实施方式。在本公开内容中,在将去块滤波器应用于竖直边界时,将上文或下文描述的本公开内容的所有构思应用于像素列而非像素行。
[0226]
另外,图8示出了其中作为子块边界800的附加的n个像素行的实施方式的n为2的情况,但是本公开内容不限于此,并且作为本公开内容的实施方式n可以为4或8。
[0227]
在图8的801中,用于去块滤波的目标像素是像素q3,像素q3是从子块边界500起的上部或左侧第一像素,并且被参考以用于对像素q3执行去块滤波的像素是q2、q3、q4和q5像素。在这种情况下,可以将像素q3设置为值q3',该q3'是使用预定义的权重和四个像素q2、q3、q4和q5的加权平均值。然而,在这种情况下,将加权平均值q3'用作从q3值加上或减去特定偏移值的值的范围内的一个值。另外,q2、q4和q5像素不限于图8中所示的内容,并且其可以意指位于距子块边界整数像素距离处的预定义的位置(例如 1、 2、

1、

2或 n、

n)处的像素
[0228]
在图8的802中,用于去块滤波的目标像素是像素q4,像素q4是从子块边界800起的底部或右侧第一像素,并且被参考以用于对像素q4执行去块滤波的像素是q2、q3、q4和q5像素。在这种情况下,可以将像素q4设置为q4'值,该q4'值是使用预定义的权重和四个像素q2、q3、q4和q5的加权平均值。然而,在这种情况下,将加权平均值q4'用作从q4值加上或减去特定偏移值的值的范围内的一个值。另外,q2、q3和q5像素不限于图8中所示的内容,并且其可以意指位于距子块边界整数像素距离处的预定义的位置(例如 1、 2、

1、

2或 n、

n)处的像素。
[0229]
在上述实施方式中,将使用4个像素的滤波作为用于子块边界的去块滤波器的示例,但是在本公开内容中,可以参考5个像素或3个像素以用于去块滤波器的目标像素。此外,用于去块滤波的参考像素的数目可以根据位置而彼此不同。
[0230]
图9是用于说明当前图片参考模式的基本构思的图。
[0231]
如图9所示,当前图片参考技术是用于在对当前块执行预测时在与当前块相同的图片的已重建区域中执行预测的技术。
[0232]
当对图9的当前图片900的当前块910进行编码或解码时,可以根据编码和解码顺序存在预重建的区域901,并且可以存在与当前块110具有像素相似性的区域。因此,将当前图片参考技术定义为以下这样的技术:基于像素相似性,在预重建的当前图片的区域901中存在与当前块910相似的参考块930,并且使用参考块930执行预测。
[0233]
关于当前图片是否被参考的信息可以由编码装置编码和用信号通知,或者可以从解码设备得出。在这种情况下,基于块的大小、形状、位置、划分类型(例如,四叉树、二叉树、三叉树)、块的预测模式,块所属的图块或图块组的位置/类型等来执行得出。此处,块可以意指当前块或与当前块相邻的相邻块中的至少一个。
[0234]
在这种情况下,将当前块910与参考块930之间的像素距离限定为矢量,并且该矢
量被称为块矢量。
[0235]
在对当前图片参考模式进行编码时,可以通过类似于帧间预测的块矢量预测方法,使用诸如跳过、合并和差分信号传输的方法来得出关于块矢量的信息。例如,可以从当前块的相邻块得出块矢量。在这种情况下,相邻块可以限于以当前图片参考模式编码的块,或者可以限于以合并模式(或跳过模式)编码的块。相邻块可以限于以在解码设备中预定义的其他预测模式(amvp模式、仿射模式等)编码的块。替选地,可以基于指定参考块的位置的信息(例如,块索引)来得出块矢量。
[0236]
图10是示出根据当前块的位置的当前图片参考区域的实施方式的图。
[0237]
图10详细示出了当前块位于图块组、图块或图片的边界并且属于最左侧ctu的实施方式。
[0238]
图9示出了针对当前块的当前图片参考的搜索范围,即参考区域。
[0239]
图10示出了将当前图片1000划分成图块组a 1050和图块组b 1060的实施方式。在这种情况下,图块组是划分一个图片的方法之一,并且图块也可以对应于此。图块组可以包括一个或更多个图块。在下文中,可以将图块组理解为一个图块。
[0240]
在图10中,图块组a 1050包括1001、1002、1006、1007、1011和1012ctu,以及图块组b 1060包括1003、1004、1005、1008、1009、1010、1013、1014和1015ctu。
[0241]
用于当前图片参考的预定义参考区域可以意指图9所示的当前图片900中已经重建的区域901的部分区域。另外,该部分区域可以是以下中的至少一个:包括当前块的当前ctu、空间上与当前ctu相邻的左ctu或上ctu。
[0242]
特别地,当包括当前块的ctu是当前图块组、当前图块或当前图片的最左侧ctu时,可以参考包括当前块的ctu和空间相邻的上ctu。
[0243]
图10所示的块a 1051是针对当前图片1000的最左侧ctu中包括当前块的情况的实施方式。当在块a 1051中包括当前块时,当前块可以参考以执行当前图片参考的区域可以对应于根据当前ctu(块a)内的编码和解码顺序预先重建的区域。
[0244]
除此之外,在本公开内容中,当包括当前块的ctu是当前图片1000的最左侧ctu时,将空间相邻的上ctu 1006用作针对存在空间相邻的上ctu的情况的参考区域。
[0245]
当在当前块所属的ctu(下文中称为当前ctu)的左侧不存在可用ctu时,可以仅使用当前ctu内的重建区域来执行当前图片参考,或者可以将当前图片参考设置为不执行当前图片参考。替选地,可以将当前参考图片设置为参考在当前ctu之前预先重建的特定区域。该特定区域可以属于同一图块或图块组,或者可以是紧接在当前ctu之前解码的p个ctu。p可以是1、2、3或更大。n值可以是在编码/解码设备中预定义的固定值,或者可以根据当前ctu和/或当前块的位置可变地确定。
[0246]
另外,可以将先前已经根据编码和解码顺序被执行编码和解码的ctu 207用作参考区域。
[0247]
图10所示的块b 1061是图块组b中包括的ctu,图块组b是当前图片1000的第二图块组。这是针对其位于图块组b的最左侧并且位于图块组边界的情况的实施方式。在当前块是包括在块b 1061中的块时,当前块可以参考以执行当前图片参考的区域可以对应于根据当前ctu(块b)内的编码和解码顺序预先重建的区域。
[0248]
除此之外,在本公开内容中,当包括当前块的ctu是当前图块组1060的最左侧ctu
1100的所有像素区域用作参考区域,而可以仅将一些区域用作参考区域。根据图11所示的实施方式,可以将左侧相邻的ctu 1100的除了第一vpdu 1101和第二vpdu 1102之外的第三vpdu 1103和第四vpdu 1104用作参考区域。此外,在当前ctu 1110的第一vpdu 1111和包括当前块的第二vpdu 1112中,可以将根据编码和解码顺序预先重建的区域用作参考区域。
[0261]
另外,在当前ctu 1110的第三vpdu 1113中包括当前块时,可以不将左侧相邻的ctu 1100的所有像素区域用作参考区域,而可以仅将一些区域用作参考区域。根据图11所示的实施方式,除了左侧相邻的ctu 1100的第一vpdu 1101、第二vpdu 1102和第三vpdu 1103之外,可以将第四vpdu 1104用作参考区域。此外,在当前ctu 1110的第一vpdu 1111和第二vpdu 1112以及包括当前块的第三vpdu 1113中,可以将根据编码和解码顺序预先重建的区域用作参考区域。
[0262]
另外,在当前ctu 1110的第四vpdu 1113中包括当前块时,可以仅将当前ctu 1110内的预重建区域用作参考区域,而不使用左侧相邻的ctu 1100作为参考区域。
[0263]
图12示出了包括当前块的区域和当前图片参考(cpr)的可搜索且可参考区域的另一实施方式。
[0264]
图12示出了vpdu执行顺序根据当前ctu 1210的划分形式而不同于现有z扫描顺序的情况的附加实施方式。
[0265]
在竖直划分当前ctu 1210并且vpdu执行顺序是第一vpdu 1211、第三vpdu 1213、第二vpdu 1212和第四vpdu 1214的情况下,在ctu 1210的第三vpdu 1213中当前包括当前块时,可以将左侧相邻的ctu 1200的除了第一vpdu 1201和第三vpdu 1203之外的第二vpdu 1202和第四vpdu 1204用作参考区域。另外,可以将当前ctu 1210的第一vpdu 1211和包括当前块的第三vpdu 1213之中根据编码和/或解码顺序预先重建的区域作为参考区域。在上述实施方式中,意味着在左侧ctu中首先参考空间上与当前vpdu相邻的区域。
[0266]
附加地,根据vpdu执行顺序,当vpdu执行顺序由于左ctu中的竖直划分而是第一vpdu 1211、第三vpdu 1213、第二vpdu 1212和第四vpdu 1214时,可以如上面方法中那样(图12a)指定参考区域。
[0267]
与图12a的先前实施方式不同,当竖直划分当前ctu 1210使得以第一vpdu 1211、第三vpdu 1213、第二vpdu 1212和第四vpdu 1214的顺序执行vpdu并且在当前ctu 1210的第三vpdu 1213中包括当前块时,可以将左侧相邻的ctu 1200的除了第一vpdu 1201和第二vpdu 1202之外的第三vpdu 1203和第四vpdu 1204用作参考区域。另外,可以将当前ctu 1210的第一vpdu 1211和包括当前块的第三vpdu 1213之中根据编码和解码顺序预先重建的区域用作参考区域。
[0268]
这意味着对于左ctu中的vpdu执行顺序是第一vpdu 1211、第二vpdu 1212、第三vpdu 1213和第四vpdu 1214的情况,可以如上面方法那样(图12b)指定参考区域。
[0269]
在上述实施方式中,可以首先参考稍后根据左ctu的vpdu执行顺序编码和解码的区域。
[0270]
另外,在竖直划分当前ctu 1210并且以第一vpdu 1211、第三vpdu 1213、第二vpdu 1212和第四vpdu 1214的顺序执行vpdu的情况下,在当前ctu 1210的第二vpdu 1212中包括当前块时,可以将左侧相邻的ctu 1200的除了第一vpdu 1201、第二vpdu 1202和第三vpdu 1203之外的第四vpdu 1204用作参考区域。此外,可以将当前ctu 1210的第一vpdu 1211和
第三vpdu 1213以及包括当前块的第二vpdu 1212之中根据编解码顺序预先重建的区域作为参考区域。
[0271]
图13示出了包括当前块的区域和当前图片参考(cpr)的可搜索且可参考区域的另一实施方式。
[0272]
在图13中,针对图10中所示的包括当前块的ctu位于当前图片、当前图块组或当前图块的最左侧并且可以参考上ctu的情况,示出了参考空间上与当前ctu相邻的ctu中的位于上部处的ctu的实施方式。
[0273]
仅在当前ctu 1310的第一vpdu 1311中包括当前块时,可以不将上部相邻的ctu 1300的所有像素区域用作参考区域,而可以仅将一些区域用作参考区域。根据图13所示的实施方式,在上部相邻的ctu 1300的除了第一vpdu 1301之外的第二vpdu 1302、第三vpdu 1303、第四vpdu 1304和包括当前块的vpdu 1311之中,可以将根据编码和解码顺序预先重建的区域用作参考区域。
[0274]
在当前ctu 1310的第二vpdu 1312中包括当前块时,可以不将上部相邻的ctu 1300的所有像素区域用作参考区域,而可以仅将一些区域用作参考区域。根据图13所示的实施方式,可以将上部相邻的ctu 1300的除了第一vpdu 1301和第二vpdu 1302之外的第三vpdu 1303和第四vpdu 1304用作参考区域。另外,可以将当前ctu 1310的第一vpdu 1311和包括当前块的第二vpdu 1312之中根据编码和解码顺序预先重建的区域用作参考区域。
[0275]
另外,在当前ctu 1310的第三vpdu 1313中包括当前块时,可以不将上部相邻的ctu 1300的所有像素区域用作参考区域,而可以仅将一些区域用作参考区域。根据图13所示的实施方式,可以将除了上部相邻的ctu 1300的第一vpdu 1301、第二vpdu 1302和第三vpdu 1303之外的第四vpdu 1304用作参考区域。此外,在第一vpdu 1311、当前ctu 1310的第二vpdu 1312和包括当前块的第三vpdu 1313之中,可以将根据编码和解码顺序预先重建的区域用作参考区域。
[0276]
另外,在当前ctu 1310的第四vpdu 1313中包括当前块时,可以仅将当前ctu 1310内的预重建区域用作参考区域,而不使用上部相邻的ctu 1300作为参考区域。
[0277]
图14示出了包括当前块的区域和当前图片参考(cpr)的可搜索且可参考区域的另一实施方式。
[0278]
在图14中,除了图13之外,还示出了附加实施方式,其中针对vpdu执行顺序根据当前ctu 1410的划分形式而不同于现有z扫描顺序的情况,当前块参考空间上与上部相邻的ctu 1400的部分区域。
[0279]
在竖直划分当前ctu 1410并以第一vpdu 1411、第三vpdu 1413、第二vpdu 1412和第四vpdu 1414的顺序执行vpdu的情况下,在ctu 1410的第三vpdu 1413中包括当前块时,可以将上部相邻的ctu 1400的除了第一vpdu 1401和第二vpdu 1402之外的第三vpdu 1403和第四vpdu 1404用作参考区域。此外,在当前ctu 1410的第一vpdu 1411和包括当前块的第三vpdu 1413之中,可以将根据编码和解码顺序预先重建的区域用作参考区域。
[0280]
另外,在竖直划分当前ctu 1410并且以第一vpdu 1411、第三vpdu 1413、第二vpdu 1412和第四vpdu 1414的顺序执行vpdu的情况下,在当前ctu 1410的第二vpdu 1412中包括当前块时,可以将上部相邻的ctu 1400的除了第一vpdu 1401、第二vpdu 1402和第三vpdu 1403之外的第四vpdu 1404用作参考区域。此外,在当前ctu 1410的第一vpdu 1411、第三
vpdu 1413和包括当前块的第二vpdu 1412之中,可以将根据编码和解码顺序预先重建的区域用作参考区域。
[0281]
如上所述,当前块可以基于位于当前ctu的左侧或上部中的至少之一中的ctu来设置参考区域。即,可以选择性地使用左ctu或上ctu,并且可以基于预定编码信息来执行选择。编码信息可以包括关于以下的信息:是否参考左ctu或上ctu、左ctu或上ctu是否可用、扫描顺序、当前vpdu在当前ctu内的位置等。
[0282]
图15示出了作为应用本公开内容的实施方式的基于运动矢量差值(mvd)使用合并模式的图像编码/解码方法。
[0283]
合并模式将相邻块的运动信息同样地用作当前块的运动信息,并且与amvp模式不同,合并模式不需要对单独的运动矢量差值的编码/解码。然而,即使在合并模式中,也可以使用预定的运动矢量差值(mvd)来提高运动矢量精确度。在本公开内容中,可以将运动信息理解为包括运动矢量、参考图片索引或预测方向信息中的至少一个。
[0284]
可以基于预定标志(下文中,mvd_flag)选择性地使用mvd。mvd_flag可以指示在合并模式中是否使用运动矢量差值(mvd)。例如,如果标志是第一值,则在合并模式中使用运动矢量差值,否则,在合并模式中不使用运动矢量差值。即,当标志是第一值时,可以使用运动矢量差值来校正根据合并模式得出的运动矢量,并且当标志不是第一值时,可以不校正根据合并模式的运动矢量。
[0285]
可以仅在当前块的宽度或高度中的至少一个大于或等于8时才对mvd_flag进行编码/解码。替选地,可以仅在属于当前块的像素的数目大于或等于64时才对mvd_flag进行编码/解码。替选地,可以仅在当前块的宽度和高度之和大于12时才对mvd_flag进行编码/解码。
[0286]
参照图15,可以构建当前块的合并候选列表(s1500)。
[0287]
合并候选列表可以包括可用于得出当前块的运动信息的一个或更多个合并候选。可以基于指示构成合并候选列表的合并候选的最大数目的信息(下文中,大小信息)来可变地确定合并候选列表的大小。该大小信息可以由编码设备进行编码和用信号通知,或者可以是与解码设备预先约定的固定值(例如,2、3、4、5、6或更大的整数)。
[0288]
属于合并候选列表的多个合并候选可以包括空间合并候选或时间合并候选中的至少一个。
[0289]
空间合并候选可以意指空间上与当前块相邻的相邻块或相邻块的运动信息。此处,相邻块可以包括以下中的至少一个:当前块的左下块a0、左块a1、右上块b0、上块b1或左上块b2。可以根据预定的优先级顺序将相邻块中的可用相邻块顺序地添加至合并候选列表。例如,可以定义诸如b1

>a1

>b0

>a1

>b2、a1

>b1

>a0

>b1

>b2、a1

>b1

>b0

>a0

>b2等的优先级,但是不限于此。
[0290]
时间合并候选可以意指属于共位图片的一个或更多个共位块或共位块的运动信息。此处,共位图片可以是属于参考图片列表的多个参考图片中的任何一个,参考图片列表可以是与当前块所属的图片不同的图片。共位图片可以是参考图片列表中的第一个图片或最后一个图片。替选地,可以基于被编码以指示共位图片的索引来指定共位图片。共位块可以包括以下中的至少一个:包括当前块的中心位置的块c1或与当前块的右下角相邻的相邻块c0。根据预定的优先级顺序,可以将c0和c1中的可用块顺序地添加至合并候选列表。例
如,c0可以比c1具有更高的优先级。然而,本公开内容不限于此,并且c1可以比c0具有更高的优先级。
[0291]
编码/解码设备可以包括缓冲器,该缓冲器用于存储已经在当前块之前被编码/解码的一个或更多个块(在下文中,称为先前块)的运动信息。换言之,缓冲器可以存储包括先前块的运动信息的列表(下文中,运动信息列表)。
[0292]
可以以图片、切片、图块、ctu行或ctu中的任何一个为单位来初始化运动信息列表。初始化可以意指运动信息列表为空的状态。可以根据先前块的编码/解码顺序将对应先前块的运动信息顺序地添加至运动信息列表,并且可以考虑运动信息列表的大小以先进先出(fifo)的方式更新运动信息列表。例如,当最近编码/解码的运动信息(下文中,最新运动信息)与向运动信息列表预添加的运动信息相同时,可以不将最新运动信息添加至运动信息列表。替选地,可以从运动信息列表中移除与最新运动信息相同的运动信息,并且可以将最新运动信息添加至运动信息列表。在这种情况下,可以将最新的运动信息添加至运动信息列表的最后位置或添加至移除的运动信息的位置。
[0293]
先前块可以包括以下中的至少一个:空间上与当前块相邻的一个或更多个相邻块或空间上与当前块不相邻的一个或更多个相邻块。
[0294]
在合并候选列表中,还可以添加属于缓冲器或或先前块的运动信息或运动信息列表的先前块作为合并候选。
[0295]
具体地,可以执行运动信息列表与合并候选列表之间的冗余检查。可以对属于合并候选列表的全部或一些合并候选以及运动信息列表中的全部或一些先前块执行冗余校验。然而,为了描述方便,假设对属于合并候选列表的一些合并候选和运动信息列表中的一些先前块执行本公开内容的冗余校验。此处,合并候选列表中的一些合并候选可以包括空间合并候选中的左块或上块中的至少一个。然而,本公开内容不限于此,并且一些合并候选可以限于空间合并候选中的任何一个,并且还可以包括左下块、右上块、左上方块或时间合并候选中的至少一个。运动信息列表的一些先前块可以意指最近添加至运动信息列表的k个先前块。此处,k可以是1、2、3或更大,并且可以是与编码/解码设备预先约定的固定值。
[0296]
例如,假设将5个先前块(或先前块的运动信息)存储在运动信息列表中,并且将1至5的索引分配给每个先前块。索引越大,存储的先前块就越是最近存储的。在这种情况下,可以检查具有索引5、4和3的先前块与合并候选列表中的一些合并候选之间的运动信息的冗余。替选地,可以检查具有索引5和4的先前块与合并候选列表中的一些合并候选之间的冗余。替选地,可以检查除了索引为5的最近添加的先前块之外的具有索引4和3的先前块与合并候选列表中的一些合并候选之间的冗余。
[0297]
作为冗余校验的结果,如果存在具有相同运动信息的至少一个先前块,则可以不将运动信息列表的先前块添加至合并候选列表。另一方面,当不存在具有相同运动信息的先前块时,可以将运动信息列表的全部或一些先前块添加至合并候选列表的最后位置。在这种情况下,可以按照最近添加至运动信息列表中的先前块的顺序(即,从最大索引到最小索引)将运动信息列表的先前块的全部或一些添加至合并候选列表。然而,可以将最近添加至运动信息列表的先前块(即,具有最大索引的先前块)限制为不添加至合并候选列表。可以考虑合并候选列表的大小来执行先前块的添加。例如,假设合并候选列表具有根据上述合并候选列表的大小信息的最大数目(t)的合并候选。在这种情况下,可以将先前块的添加
限制为仅执行先前块的添加直到属于合并候选列表的合并候选的数目变为(t

n)。此处,n可以是1、2或更大的整数。替选地,可以重复执行先前块的添加,直到包括在合并候选列表中的合并候选的数目为t。
[0298]
参照图15,可以基于合并候选列表和合并索引(merge_idx)来得出当前块的运动信息(s1510)。
[0299]
合并索引可以指定属于合并候选列表的多个合并候选中的任何一个。可以将当前块的运动信息设置为由合并索引指定的合并候选的运动信息。
[0300]
根据mvd_flag的值,可以适应性地确定可用于当前块的合并候选的最大数目。如果mvd_flag为0,则可以使用多达m个合并候选,而如果mvd_flag为1,则可以使用n个合并候选。此处,m可以是小于n的自然数。
[0301]
例如,当mvd_flag为1时,用信号通知的合并索引可以具有值0或1。即,当在合并模式中使用运动矢量差值时,可以仅使用合并候选列表的第一合并候选(merge_idx=0)或第二合并候选(merge_idx=1)中的一个来得出当前块的运动信息。
[0302]
因此,即使当属于合并候选列表的合并候选的最大数目是m时,如果在合并模式中使用运动矢量差值,则可用于当前块的合并候选的最大数目可以是2。
[0303]
替选地,当mvd_flag为1时,不对合并索引进行编码/解码,而是可以通过将合并索引设置为0来强制使用第一合并候选。替选地,当mvd_flag为1时,合并索引可以具有0与i之间的值,i可以为2、3或更大的整数,并且i可以等于(m

1)。
[0304]
参照图15,可以得出用于当前块的合并模式的运动矢量差值(mvd)(s1520)。
[0305]
可以基于合并偏移矢量(offsetmv)来得出当前块的mvd。mvd包括l0方向上的mvd(mvd0)或l1方向上的mvd(mvd1)中的至少一个,并且可以使用合并偏移矢量来得出mvd0和mvd1中的每一个。
[0306]
可以基于合并偏移矢量的长度(mvddistance)和方向(mvddirection)来确定合并偏移矢量。例如,可以如下面的式7来确定合并偏移矢量offsetmv。
[0307]
[式7]
[0308]
offsetmv[x0][y0][0]=(mvddistance[x0][y0]<<2)*mvddirection[x0][y0][0]
[0309]
offsetmv[x0][y0][1]=(mvddistance[x0][y0]<<2)*mvddirection[x0][y0][1]
[0310]
此处,可以考虑距离索引(distance_idx)或预定标志(pic_fpel_mmvd_enabled_flag)中的至少一个来确定mvddistance。距离索引(index_idx)可以意指被编码以指定运动矢量差值(mvd)的长度或距离的索引。pic_fpel_mmvd_enabled_flag可以指示运动矢量在当前块的合并模式中是否使用整数像素精度。例如,当pic_fpel_mmvd_enabled_flag为第一值时,当前块的合并模式使用整数像素精度。即,这可以意味着当前块的运动矢量分辨率是整数像素。另一方面,当pic_fpel_mmvd_enabled_flag为第二值时,当前块的合并模式可以使用分数像素精度。换言之,当pic_fpel_mmvd_enabled_flag为第二值时,当前块的合并模式可以使用整数像素精度或分数像素精度。替选地,当pic_fpel_mmvd_enabled_flag为第二值时,可以将当前块的合并模式限制为仅使用分数像素精度。分数像素精度的示例可以包括1/2像素、1/4像素、1/8像素等。
[0311]
例如,可以如下面的表3所示确定mvddistance。
[0312]
[表3]
[0313][0314]
此外,mvddirection指示合并偏移矢量的方向并且可以基于方向索引(direction_idx)来确定。此处,方向可以包括左、右、上、下、左上、左下、右上或右下中的至少一个。例如,可以如下面的表4所示确定mvddirection。
[0315]
[表4]
[0316]
direction_idx[x0][y0]mvddirection[x0][y0][0]mvddirection[x0][y0][1]0 101

1020 130
‑1[0317]
在表4中,mvddirection[x0][y0][0]可以意指运动矢量差值的x分量的符号,并且mvddirection[x0][y0][1]可以意指运动矢量差值的y分量的符号。当direction_idx为0时,可以将运动矢量差值的方向确定为右方向,当direction_idx为1时,可以将运动矢量差值的方向确定为左方向,当direction_idx为2时,可以将运动矢量差值的方向确定为下方向,并且当direction_idx为3时,可以将运动矢量差值的方向确定为上方向。
[0318]
可以仅在mvd_flag是第一值时对上述距离索引和方向索引进行编码/解码。
[0319]
同时,可以将运动矢量差值(mvd)设置为与先前确定的合并偏移矢量相同。替选地,可以考虑当前块的参考图片与当前块所属的当前图片之间的poc差(pocdiff)来校正合并偏移矢量,并且可以将经校正的合并偏移矢量设置为运动矢量差值(mvd)。在这种情况下,可以用双向预测对当前块进行编码/解码,并且当前块的参考图片可以包括第一参考图片(l0方向上的参考图片)和第二参考图片(l1方向上的参考图片)。为了方便描述,将第一参考图片与当前图片之间的poc差称为pocdiff0,并且将第二参考图片与当前图片之间的poc差称为pocdiff1。
[0320]
当pocdiff0与pocdiff1相同时,可以将当前块的mvd0和mvd1分别相同地设置为合并偏移矢量。
[0321]
在pocdiff0与pocdiff1不相同的情况下,当pocdiff0的绝对值大于或等于
pocdiff1的绝对值时,可以将mvd0相同地设置为合并偏移矢量。同时,可以基于预设置的mvd0得出mvd1。例如,当第一参考图片和第二参考图片是长期参考图片时,可以通过将第一缩放因子应用于mvd0来得出mvd1。可以基于pocdiff0和pocdiff1来确定第一缩放因子。另一方面,当第一参考图片和第二参考图片中的至少一个是短期参考图片时,可以通过将第二缩放因子应用于mvd0来得出mvd1。第二缩放因数可以是与编码/解码设备预先约定的固定值(例如,

1/2、

1等)。然而,可以仅在pocdiff0的符号和pocdiff1的符号彼此不同时应用第二缩放因子。如果pocdiff0的符号与pocdiff1的符号相同,则可以将mvd1设置为与mvd0相同,并且可以不执行单独的缩放。
[0322]
同时,在pocdiff0与pocdiff1不相同的情况下,当pocdiff0的绝对值小于pocdiff1的绝对值时,可以将mvd1相同地设置为合并偏移矢量。同时,可以基于预设置的mvd1得出mvd0。例如,当第一参考图片和第二参考图片是长期参考图片时,可以通过将第一缩放因子应用于mvd1来得出mvd0。可以基于pocdiff0和pocdiff1来确定第一缩放因子。另一方面,当第一参考图片和第二参考图片中的至少一个是短期参考图片时,可以通过将第二缩放因子应用于mvd1来得出mvd0。第二缩放因数可以是与编码/解码设备预先约定的固定值(例如,

1/2、

1等)。然而,可以仅在pocdiff0的符号和pocdiff1的符号彼此不同时应用第二缩放因子。如果pocdiff0的符号与pocdiff1的符号相同,则可以将mvd0设置为与mvd1相同,并且可以不执行单独的缩放。
[0323]
参照图15,可以使用运动矢量差值(mvd)来校正当前块的运动矢量(s1530),并且可以基于经校正的运动矢量来执行当前块的运动补偿(s1540)。
[0324]
图16至图21示出了根据应用本公开内容的实施方式的基于预定优先级确定当前块的帧间预测模式的方法。
[0325]
本公开内容涉及对以视频编码技术之中的跳过模式和/或合并模式编码的编码块中的合并模式有关的编码信息进行解析的方法和设备。
[0326]
当以跳过模式或合并模式对当前编码和/或解码块进行编码和/或解码时,可以使用多种预测方法,并且需要用于高效地用信号通知多个预测方法的方法。在将当前编码和/或解码块的与合并模式有关的编码信息用信号通知和进行解析时,可以根据多个预测方法中的出现频率的顺序来确定传信语法和解析语法的顺序。
[0327]
多个预测方法可以包括以下中的至少一个:块单元合并模式、一般cu单元合并模式(常规合并模式或cu合并模式)、mmvd(基于mvd的合并模式)、子块单元合并模式、组合预测模式、非矩形预测模式或当前图片参考模式。
[0328]
另外,下面将通过语法表和每个语法的语义来描述将每个对应语法用信号通知和进行解析的方法、针对此的条件、或未表达对应语法(或未用信号通知)的情况。然而,将省略多余的描述。
[0329]
参照图16,regular_merge_flag可以指示是否将一般cu单元合并模式用于生成当前块的帧间预测参数。当未用信号通知regular_merge_flag时,可以regular_merge_flag设置为0。
[0330]
mmvd_flag[x0][y0]可以指示是否将基于mvd的合并模式用于生成当前块的帧间预测参数。此处,可以将mmvd_flag[x0][y0]解释为与上述mvd_flag相同的含义。当未用信号通知mmvd_flag时,可以基于当前块是否为以当前图片参考模式编码的块或者regular_
merge_flag中的至少一个来得出mmvd_flag。例如,如果当前块不是以当前图片参考模式编码的块并且regular_merge_flag不是1,则可以将mmvd_flag得出为1,否则,可以将mmvd_flag得出为0。
[0331]
merge_subblock_flag可以指示是否根据相邻块得出用于当前块的以子块为单位的帧间预测参数。当未用信号通知merge_subblock_flag时,可以基于sps_ciip_enabled_flag或sps_triangle_enabled_flag中的至少一个得出merge_subblock_flag。此处,sps_ciip_enabled_flag可以指示是否存在关于组合预测模式的编码信息(例如,ciip_flag),并且sps_triangle_enabled_flag可以指示是否可以使用基于非矩形划分的运动补偿。
[0332]
例如,如果sps_ciip_enabled_flag或sps_triangle_enabled_flag中的至少一个为0,则可以将merge_subblock_flag得出为1,否则可以将merge_subblock_flag得出为0。
[0333]
ciip_flag可以指示是否将组合预测模式应用于当前块。如果未用信号通知ciip_flag,则可以基于sps_triangle_enabled_flag来得出ciip_flag。例如,当sps_triangle_enabled_flag为0时,可以将ciip_flag得出为1,否则可以将ciip_flag得出为0。
[0334]
merge_triangle_flag可以指示是否将基于非矩形划分的运动补偿用于当前块。当未用信号通知merge_triangle_flag时,可以基于sps_triangle_enabled_flag或ciip_flag中的至少一个来得出merge_triangle_flag。例如,如果sps_triangle_enabled_flag为1并且ciip_flag为0,则可以将merge_triangle_flag得出为1,否则可以将merge_triangle_flag得出为0。
[0335]
cu_skip_flag可以指示当前块是否为以跳过模式编码的块。例如,当cu_skip_flag=1时,除了用于当前块的以下语法之外,不解析语法。当未用信号通知cu_skip_flag时,可以将cu_skip_flag得出为0。
[0336]

指示组合预测模式的标志(pred_mode_ibc_flag)
[0337]

指示基于mvd的合并模式的标志(mmvd_flag)
[0338]

基于mvd的合并模式中的合并索引(mmvd_merge_flag)
[0339]

基于mvd的合并模式中的距离索引(mmvd distance_idx)
[0340]

基于mvd的合并模式中的方向索引(mmvd_direction_idx)
[0341]

合并索引(merge_idx)
[0342]

merge_subblock_flag
[0343]

子块单元合并模式中的合并索引(merge_subblock_idx)
[0344]

非矩形划分的分割方向指示符(merge_triangle_split_dir)
[0345]

非矩形划分的合并索引(merge_triangle_idx)
[0346]
参照图17,regular_merge_flag可以指示是否将一般cu单元合并模式用于生成当前块的帧间预测参数。当未用信号通知regular_merge_flag时,可以考虑当前块是否是以当前图片参考模式编码的块来得出regular_merge_flag。例如,如果当前块是以当前图片参考模式编码的块,则可以将regular_merge_flag得出为1,否则可以将regular_merge_flag得出为0。
[0347]
参照图18,regular_merge_flag可以指示是否将一般cu单元合并模式用于生成当前块的帧间预测参数。当未用信号通知regular_merge_flag时,可以将regular_merge_flag设置为0。
[0348]
mmvd_flag[x0][y0]可以指示是否将基于mvd的合并模式用于生成当前块的帧间预测参数。此处,可以将mmvd_flag[x0][y0]解释为与上述mvd_flag相同的含义。
[0349]
当未用信号通知mmvd_flag时,可以基于当前块是否为以当前图片参考模式编码的块或regular_merge_flag中的至少一个来得出mmvd_flag。例如,如果当前块不是以当前图片参考模式编码的块并且regular_merge_flag不为1,则可以将mmvd_flag得出为1,否则,可以将mmvd_flag得出为0。
[0350]
替选地,当未用信号通知mmvd_flag时,可以基于当前块是否是以当前图片参考模式编码的块、regular_merge_flag或当前块的大小中的至少一个来得出mmvd_flag。例如,如果当前块不是以当前图片参考模式编码的块、regular_merge_flag不为1并且当前块的宽度和高度之和小于或等于12,则可以将mmvd_flag得出为1,否则,可以将mmvd_flag得出为0。
[0351]
merge_subblock_flag可以指示是否根据相邻块得出用于当前块的以子块为单位的帧间预测参数。当未用信号通知merge_subblock_flag时,可以基于sps_ciip_enabled_flag或sps_triangle_enabled_flag中的至少一个得出merge_subblock_flag。此处,sps_ciip_enabled_flag可以指示是否存在关于组合预测模式的编码信息(例如,ciip_flag),并且sps_triangle_enabled_flag可以指示是否可以使用基于非矩形划分的运动补偿。
[0352]
例如,如果sps_ciip_enabled_flag或sps_triangle_enabled_flag中的至少一个为0,则可以将merge_subblock_flag得出为1,否则可以将merge_subblock_flag得出为0。
[0353]
ciip_flag可以指示是否将组合预测模式应用于当前块。当未用信号通知ciip_flag时,可以基于sps_triangle_enabled_flag或切片类型中的至少一个来得出ciip_flag。例如,如果sps_triangle_enabled_flag为0或者当前块所属的切片不是b切片,则可以将ciip_flag得出为1,否则可以将ciip_flag得出为0。
[0354]
merge_triangle_flag可以指示是否将基于非矩形划分的运动补偿用于当前块。当未用信号通知merge_triangle_flag时,可以基于sps_triangle_enabled_flag或ciip_flag中的至少一个来得出merge_triangle_flag。例如,如果sps_triangle_enabled_flag为1并且ciip_flag为0,则可以将merge_triangle_flag得出为1,否则可以将merge_triangle_flag得出为0。
[0355]
cu_skip_flag可以指示当前块是否是以跳过模式编码的块。例如,当cu_skip_flag等于1时,除了用于当前块的以下语法之外,不解析语法。当未用信号通知cu_skip_flag时,可以将cu_skip_flag得出为0。
[0356]

指示组合预测模式的标志(pred_mode_ibc_flag)
[0357]

指示基于mvd的合并模式的标志(mmvd_flag)
[0358]

基于mvd的合并模式中的合并索引(mmvd_merge_flag)
[0359]

基于mvd的合并模式中的距离索引(mmvd distance_idx)
[0360]

基于mvd的合并模式中的方向索引(mmvd_direction_idx)
[0361]

合并索引(merge_idx)
[0362]

merge_subblock_flag
[0363]

子块单元合并模式中的合并索引(merge_subblock_idx)
[0364]

非矩形划分的分割方向指示符(merge_triangle_split_dir)
[0365]

非矩形划分的合并索引(merge_triangle_idx)
[0366]
参照图19,regular_merge_flag可以指示是否将一般cu单元合并模式用于生成当前块的帧间预测参数。当未用信号通知regular_merge_flag时,可以考虑当前块是否是以当前图片参考模式编码的块来得出regular_merge_flag。例如,如果当前块是以当前图片参考模式编码的块,则可以将regular_merge_flag得出为1,否则可以将regular_merge_flag得出为0。
[0367]
编码设备可以通过根据预定优先级对上述合并模式相关的编码信息中的至少一个进行编码来生成比特流。解码设备可以对比特流进行解码以获得合并模式相关的编码信息,并根据获得的编码信息执行帧间预测。
[0368]
本公开内容的各种实施方式没有按照列出所有可能的组合那样被列出,而是旨在描述本公开内容的代表性方面,并且可以独立地应用或者可以以两个或更多个的组合来应用在各种实施方式中描述的内容。
[0369]
另外,可以通过硬件、固件、软件或其组合来实现本公开内容的各种实施方式。在通过硬件实现的情况下,可以通过一个或更多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理装置(dspd)、可编程逻辑装置(pld)、现场可编程门阵列(fpga)、通用处理器、控制器、微控制器、微处理器等来实现本公开内容的各种实施方式。
[0370]
本公开内容的范围包括允许在装置或计算机上执行根据各种实施方式的方法的操作的软件或机器可执行指令(例如,操作系统、应用、固件、程序等),并且包括其中软件或指令被存储并且在设备或计算机上执行的非暂态计算机可读介质。
[0371]
工业可用性
[0372]
本公开内容可以用于对图像信号进行编码/解码。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜