视频信号编码/解码方法以及用于所述方法的设备与流程

文档序号:26588427发布日期:2021-09-10 20:05阅读:141来源:国知局
视频信号编码/解码方法以及用于所述方法的设备与流程

1.本发明涉及视频信号编码/解码方法及用于所述方法的设备。


背景技术:

2.随着显示面板越来越大的趋势,逐渐需要画质更高的视频服务。高清视频服务的最大问题在于数据量大幅增加,为了解决这种问题,正在积极进行用于提高视频压缩率的研究。作为代表性示例,在2009年,运动图像专家组(motion picture experts group,mpeg)和国际电信联盟

电信(international telecommunication union

telecommunication,itu

t)旗下的视频编码专家组(video coding experts group,vceg)建立了视频编码联合协作团队jct

vc(joint collaborative team on video coding)。jct

vc提出了视频压缩标准hevc(高效视频编码,high efficiency video coding)并于2013年1月25日获得批准,其压缩性能约是h.264/avc的2倍。随着高清视频服务的急剧发展,hevc的性能也逐渐暴露出其局限性。


技术实现要素:

3.要解决的技术问题
4.本发明的目的是提供一种用于在对视频信号进行编码/解码时基于偏移矢量来细化从合并候选导出的运动矢量的方法以及一种用于执行该方法的设备。
5.本发明的目的是提供一种在对视频信号进行编码/解码时用信号发送偏移矢量的方法以及一种用于执行该方法的设备。
6.本发明要实现的技术问题不限于以上提及的技术问题,并且本发明所属技术领域的普通技术人员将通过以下描述清楚理解未提到的其他技术问题。
7.技术方案
8.根据本发明的视频信号解码方法包括以下步骤:确定是否将合并运动差值编码方法应用于当前块;生成所述当前块的合并候选列表;基于所述合并候选列表确定所述当前块的合并候选;以及基于所述合并候选导出所述当前块的运动矢量。其中,当将所述合并运动差值编码方法应用于所述当前块时,通过将偏移矢量加上所述基于合并候选导出的运动矢量来导出所述当前块的运动矢量,当所述合并候选列表中包括的合并候选的最大数量为多于1个时,基于从码流中解码的指示所述合并候选中的一个合并候选的索引信息来选择所述当前块的合并候选,并且当所述最大数量为1时,不对所述索引信息进行解码而确定所述合并候选。
9.在根据本发明的视频信号解码方法中,可以基于第一索引信息来确定所述偏移矢量的大小,所述第一索引信息指示多个运动偏移大小候选中的一个。
10.在根据本发明的视频信号解码方法中,可以根据指示所述运动偏移大小候选的数量值的标志的值而不同地设置所述运动偏移大小候选的最大值或最小值中的至少一个。
11.在根据本发明的视频信号解码方法中,可以在图像级用信号发送所述标志。
12.在根据本发明的视频信号解码方法中,可以根据所述当前块的运动矢量精度而不同地设置所述运动偏移大小候选的最大值或最小值中的至少一个。
13.在根据本发明的视频信号解码方法中,可以通过对由所述第一索引信息指定的所述运动偏移大小候选所表示的值进行移位操作来获得所述偏移矢量的大小。
14.在根据本发明的视频信号解码方法中,可以基于第二索引信息确定所述偏移矢量的方向,所述第二索引信息用于指示多个矢量方向候选中的一个。
15.本发明的视频信号编码方法包括以下步骤:确定是否将合并运动差值编码方法应用于当前块;生成所述当前块的合并候选列表;基于所述合并候选列表确定所述当前块的合并候选;以及基于所述合并候选导出所述当前块的运动矢量,其中,当将所述合并运动差值编码方法应用于所述当前块时,通过将偏移矢量加上所述基于合并候选导出的运动矢量来导出所述当前块的运动矢量,当所述合并候选列表中包括的合并候选的最大数量为多于1个时,对指示所述合并候选中的所述当前块的合并候选的索引信息进行编码,并且当最大数量为1时,省略对所述索引信息的编码。
16.本发明的视频解码设备包括帧间预测部,所述帧间预测部用于:确定是否将合并运动差值编码方法应用于当前块;生成所述当前块的合并候选列表;基于所述合并候选列表确定所述当前块的合并候选;以及基于所述合并候选导出所述当前块的运动矢量,其中,当将所述合并运动差值编码方法应用于所述当前块时,通过将偏移矢量加上所述基于合并候选导出的运动矢量来导出所述当前块的运动矢量,当所述合并候选列表中包括的合并候选的最大数量为多于1个时,基于从码流中解码的指示所述合并候选中的一个合并候选的索引信息来选择所述当前块的合并候选,并且当最大数量为1时,不对所述索引信息进行解码而确定所述合并候选。
17.本发明的视频编码设备包括帧间预测部,所述帧间预测部用于:确定是否将合并运动差值编码方法应用于当前块;生成所述当前块的合并候选列表;基于所述合并候选列表确定所述当前块的合并候选;以及基于所述合并候选导出所述当前块的运动矢量,其中,当将所述合并运动差值编码方法应用于所述当前块时,通过将偏移矢量加上所述基于合并候选导出的运动矢量来导出所述当前块的运动矢量,当所述合并候选列表中包括的合并候选的最大数量为多于1个时,对指示所述合并候选中的所述当前块的合并候选的索引信息进行编码,并且当最大数量为1时,省略对所述索引信息的编码。
18.本发明的视频解码器包括处理器以及存储计算机程序的存储器。所述处理器用于执行所述计算机程序,以执行上述视频解码方法。
19.本发明的视频编码器包括处理器以及存储计算机程序的存储器。所述处理器用于执行所述计算机程序,以执行上述视频编码方法。
20.本发明的计算机可读存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现上述视频解码方法或视频编码方法。
21.以上对本发明简要概述的特征仅是稍后将描述的本发明的详细说明的示例性实施方式,并不限定本发明的范围。
22.发明效果
23.根据本发明,可以通过基于偏移矢量对合并候选的运动矢量进行细化来提高帧间预测效率。
24.根据本发明,可以通过自适应地确定偏移矢量的大小和方向来提高帧间预测效率。
25.在本发明中可获得的效果不限于上述效果,并且本发明所属技术领域的普通技术人员将通过以下描述清楚理解未提到的其他效果。
附图说明
26.图1是本发明实施例的视频编码器(encoder)的框图。
27.图2是本发明实施例的视频解码器(decoder)的框图。
28.图3是示出本发明实施例的基本编码树单元的图。
29.图4是示出编码块的多种划分类型的图。
30.图5是示出编码树单元的划分示例的图。
31.图6是示出基本数据单元的形状的图。
32.图7和图8是示出将编码块划分为多个子块的示例的图。
33.图9是展示了根据本发明实施例的帧间预测方法的流程图。
34.图10是示出对象的非线性运动的图。
35.图11是展示了根据本发明实施例的基于仿射运动的帧间预测方法的流程图。
36.图12是示出每个仿射运动模型的仿射种子矢量的示例的图。
37.图13是示出在4参数运动模型下的子块的仿射矢量的示例的图。
38.图14是展示了使用合并模式导出当前块的运动信息的过程的流程图。
39.图15是示出用于导出合并候选的候选块的图。
40.图16是示出参考样本的位置的图。
41.图17是示出用于导出合并候选的候选块的示例的图。
42.图18是示出改变参考样本的位置的示例的图。
43.图19是示出改变参考样本的位置的示例的图。
44.图20是展示了用于更新帧间运动信息列表的过程的流程图。
45.图21是示出更新帧间合并候选列表的实施例的图。
46.图22是示出更新已存储的帧间合并候选的索引的示例的图。
47.图23是示出代表子块的位置的图。
48.图24示出了针对每个帧间预测模式生成帧间运动信息列表的示例的图。
49.图25是示出将长期运动信息列表中包括的帧间合并候选添加到合并候选列表的示例的图。
50.图26是示出仅对一些合并候选执行冗余检查的示例的图。
51.图27是示出省略对特定合并候选的冗余检查的示例的图。
52.图28是示出根据指示偏移矢量的大小的distance_idx和指示偏移矢量的方向的direction_idx的值的偏移矢量的图。
53.图29是示出根据指示偏移矢量的大小的distance_idx和指示偏移矢量的方向的direction_idx的值的偏移矢量的图。
54.图30是示出当应用三角划分技术时编码块的划分模式的图。
55.图31是示出不同地设置每个子单元的偏移矢量的示例的图。
56.图32是示出精细合并候选可以采用的运动矢量候选的图。
57.图33是示出合并细化偏移列表的配置的图。
58.图34和图35是示出由合并偏移候选指定的偏移矢量的图。
59.图36是示出用于导出运动矢量预测候选的候选块的图。
60.图37是示出可以被设置为精细运动矢量预测候选的运动矢量候选的图。
61.图38是示出预测矢量细化偏移列表的配置的图。
具体实施方式
62.以下,参照附图详细说明本发明的实施例。
63.视频的编码及解码以块为单位来执行。例如,可以对编码块、变换块或预测块执行变换、量化、预测、环路滤波或重建等编码/解码处理。
64.以下,将要编码/解码的块称为“当前块”。例如,根据当前编码/解码处理步骤,当前块可以表示编码块、变换块或预测块。
65.另外,本说明书中使用的术语“单元”表示用于执行特定编码/解码过程的基本单元,并且“块”可以被理解为表示预定大小的样本阵列。除非另有说明,“块”和“单元”可互换使用。例如,在稍后描述的实施例中,编码块和编码单元可被理解为具有相同的含义。
66.图1是本发明实施例的视频编码器(encoder)的框图。
67.参照图1,视频编码设备100可以包括图像划分部110、预测部120、125、变换部130、量化部135、重排部160、熵编码部165、逆量化部140、逆变换部145、滤波器部150及存储器155。
68.图1所示的各部件单独示出以便表示视频编码设备中相互不同的特征性功能,并不表示各部件由分离的硬件或单一软件组件构成。即,对于各部件而言,为了便于说明,以排列各个部件的方式使得各部件中的至少两个部件合并成一个部件或者使得一个部件划分成多个部件,并由此执行功能,只要不脱离本发明的本质,这种整合各部件的实施例及使得各部件分离的实施例也属于本发明的权利范围。
69.而且,部分结构要素并不是在本发明中执行本质功能的必要结构要素,而是仅用于提高性能的可选结构要素。本发明可以通过仅包括除了仅用于提高性能的结构要素之外的实现本发明的本质所需的部件来实施,并且仅包括除了仅用于提高性能的选择性结构要素之外的必要结构要素的结构也属于本发明的权利范围。
70.图像划分部110可以将输入的图像划分为至少一个处理单元。在这种情况下,处理单元可以是预测单元(prediction unit:pu),也可以是变换单元(transform unit:tu),还可以是编码单元(coding unit:cu)。图像划分部110将一个图像划分为多个编码单元、预测单元及变换单元的组合,可以基于预定标准(例如,代价函数)选择一个编码单元、预测单元及变换单元组合来对图像进行编码。
71.例如,可以将一个图像划分为多个编码单元。为了将图像划分为编码单元,可以使用如四叉树结构(quad tree structure)的递归树状结构,可以将一个视频或最大编码单元(largest coding unit)作为根(root)而将编码单元划分为可具有相当于划分的编码单元数量的子节点的另外编码单元。根据某些限制不再被划分的编码单元将成为叶节点。即,当假设一个编码单元只能实现正方形划分时,一个编码单元可最多被划分为4个其他编码
单元。
72.以下,在本发明的实施例中,编码单元可意味着执行编码的单元,还可意味着执行解码的单元。
73.可以将一个编码单元内的预测单元划分为相同大小的正方形或矩形中的至少一个等形状,也可以将一个编码单元内的一个预测单元中划分为具有与另一个预测单元不同的形状和/或大小。
74.当基于编码单元执行帧内预测的预测单元并非是最小编码单元的情况下,可以执行帧内预测,而无需划分为多个预测单元n
×
n。
75.预测部120、125可以包括执行帧间预测的帧间预测部120和执行帧内预测的帧内预测部125。可以确定对于预测单元使用帧间预测还是执行帧内预测,并基于各预测方法确定具体信息(例如,帧内预测模式、运动矢量、参考图像等)。在这种情况下,执行预测的处理单元有可能与确定预测方法及具体内容的处理单元不同。例如,可以由预测单元确定预测方法和预测模式等,并且可以由变换单元执行预测。所生成的预测块与原始块之间的残差值(残差块)可以输入到变换部130。并且,可以将用于预测的预测模式信息、运动矢量信息等与残差值一同在熵编码部165中进行编码并传送至解码器。当使用特定的编码模式时,也可以通过直接对原始块进行编码并传送至解码器,而不通过预测部120、125生成预测块。
76.帧间预测部120可以基于当前图像的之前图像或之后图像中的至少一个图像的信息来预测出预测单元,在一些情况下,还可以基于当前图像内已编码的一部分区域的信息来预测出预测单元。帧间预测部120可以包括参考图像插值部、运动预测部、运动补偿部。
77.参考图像插值部从存储器155接收参考图像信息,并且可以从参考图像生成整数像素或分数像素的像素信息。对于亮度像素而言,为了以1/4像素为单位生成分数像素的像素信息,可以使用滤波器系数不同的基于dct的8抽头插值滤波器(dct

based interpolation filter)。对于色度信号而言,为了以1/8像素为单位生成分数像素的像素信息,可以使用滤波器系数不同的基于dct的4抽头插值滤波器(dct

based interpolation filter)。
78.运动预测部可以基于通过参考图像插值部进行插值的参考图像来执行运动预测。用于计算运动矢量的方法可以使用全搜索块匹配算法(fbma,full search

based block matching algorithm)、三步搜索法(tss,three step search)、新三步搜索算法(nts,new three

step search algorithm)等多种方法。运动矢量可以基于插值的像素来具有以1/2像素或1/4像素为单位的运动矢量值。可以在运动预测部中通过采取不同的运动预测方法来预测当前预测单元。运动预测方法可以使用跳过(skip)方法、合并(merge)方法、高级运动矢量预测(amvp,advanced motion vector prediction)方法、帧内块复制(intra block copy)方法等多种方法。
79.帧内预测部125可以基于作为当前图像内的像素信息的当前块周边的参考像素信息来生成预测单元。在当前预测单元的相邻块是已执行帧间预测的块并且在参考像素是已执行帧间预测的像素的情况下,可以将已执行帧间预测的块中所包括的参考像素用作周边的已执行帧内预测的块的参考像素信息。即,在参考像素不可用的情况下,可以使用可用的参考像素中的至少一个参考像素来代替不可用的参考像素信息。
80.在帧内预测中,预测模式可以具有按预测方向使用参考像素信息的角度预测模式
和在执行预测时不使用方向信息的非角度模式。用于预测亮度信息的模式和用于预测色度信息的模式可以不同,为了预测色度信息,可以应用用于预测亮度信息而使用的帧内预测模式信息或所预测到的亮度信号信息。
81.当执行帧内预测时,若预测单元的大小与变换单元的大小相同,则可以基于存在于预测单元的左侧的像素、存在于左上方的像素、存在于上方的像素来对预测单元执行帧内预测。但是,当执行帧内预测时,若预测单元的大小与变换单元的大小不同,则可以使用基于变换单元的参考像素来执行帧内预测。并且,可以应用仅对最小编码单元使用n
×
n划分的帧内预测。
82.帧内预测方法可以在根据预测模式来对参考像素应用自适应帧内平滑(ais,adaptive intra smoothing)滤波器之后生成预测块。用于参考像素的自适应帧内平滑滤波器的类型可能不同。为了执行帧内预测方法,可以从存在于当前预测单元周边的预测单元的帧内预测模式预测出当前预测单元的帧内预测模式。在使用从周边预测单元预测到的模式信息来预测当前预测单元的预测模式的情况下,若当前预测单元与周边预测单元的帧内预测模式相同,则可以使用预定的标志信息来传送表示当前预测单元与周边预测单元的预测模式相同的信息,若当前预测单元与周边预测单元的预测模式不同,则可以通过执行熵编码来对当前块的预测模式信息进行编码。
83.并且,可以生成包括残差信息的残差块,所述残差信息是基于在预测部120、125中所生成的预测单元来执行预测的预测单元与预测单元的原始块之间的差值。可以向变换部130输入所生成的残差块。
84.在变换部130中,可以使用离散余弦变换(dct,discrete cosine transform)或离散正弦变换(dst,discrete sine transform)等的变换方法来对残差块进行变换,所述残差块包括原始块与通过预测部120、125生成的预测单元之间的残差值(residual)信息。其中,dct变换核包括dct2或dct8中的至少一个,dst变换核包括dst7。可以基于为了生成残差块而使用的预测单元的帧内预测模式信息来确定要应用dct还是应用dst来变换残差块。还可以跳过对残差块的变换。可以对表示是否对于残差块的变换进行跳过的标志进行编码。对于大小在阈值以下的残差块、亮度分量或色度分量(4:4:4格式以下),可允许变换跳过。
85.量化部135可以对在变换部130中变换为频域的值进行量化。量化系数可以根据块或视频的重要性而改变。可以向逆量化部140和重排部160提供在量化部135中计算的值。
86.重排部160可以对量化的残差值执行系数值的重排。
87.重排部160可以通过系数扫描(coefficient scanning)方法来将2维的块形状系数变更为1维的矢量形式。例如,重排部160可以使用z字形扫描(zig

zag scan)方法扫描dc系数乃至高频域的系数,并将其改变为1维矢量形式。根据变换单元的大小及帧内预测模式,代替z字形扫描,还可以使用沿着列方向扫描2维块形状系数的垂直扫描和沿着行方向扫描2维块形状系数的水平扫描。即,可以根据变换单元的大小及帧内预测模式来确定使用z字形扫描、垂直方向扫描及水平方向扫描中的哪一种扫描方法。
88.熵编码部165可以基于通过重排部160计算出的值来执行熵编码。例如,熵编码可以使用指数哥伦布码(exponential golomb)、上下文自适应变长编码(cavlc,context

adaptive variable length coding)、上下文自适应二进制算术编码(cabac,context

adaptive binary arithmetic coding)等的多种编码方法。
89.熵编码部165可以对源自重排部160及预测部120、125的编码单元的残差值系数信息及块类型信息、预测模式信息、划分单元信息、预测单元信息及传送单元信息、运动矢量信息、参考帧信息、块的插值信息、滤波信息等多种信息进行编码。
90.可以在熵编码部165对从重排部160输入的编码单元的系数值进行熵编码。
91.逆量化部140及逆变换部145对在量化部135量化的多个值进行逆量化,并对在变换部130变换的值进行逆变换。在逆量化部140及逆变换部145中生成的残差值可以通过与由预测部120、125中包括的运动预测部、运动补偿部及帧内预测部所预测的预测单元合并来生成重建块(reconstructed block)。
92.滤波器部150可以包括去块滤波器、偏移校正部、自适应环路滤波器(alf,adaptive loop filter)中的至少一个。
93.去块滤波器可移除因块之间的边界而在重建的图像中生成的块失真。为了判断是否执行去块,能够基于块中所包括的几个列或行所包括的像素来判断是否对当前块应用去块滤波器。在对块应用去块滤波器的情况下,可以根据所需的去块滤波强度来应用强滤波(strong filter)或弱滤波(weak filter)。并且,在使用去块滤波器的过程中,当执行垂直滤波及水平滤波时,可以同步处理水平方向滤波及垂直方向滤波。
94.偏移校正部可以按像素单位来对执行去块的视频中的与原本视频之间的偏移进行校正。为了对指定图像进行偏移校正,可以使用如下方法,即,在将视频中所包括的像素划分为预定数量的区域之后,确定要执行偏移的区域,并对相应区域应用偏移,或者将各个像素的边缘信息考虑在内来应用偏移。
95.自适应环路滤波(alf,adaptive loop filtering)可以基于对经过滤波的重建图像和原来的视频进行比较的值来执行。将视频中包括的像素划分成预定的组之后,可以通过确定要用于相应组的一个滤波器来对每个组有区别地执行滤波。与是否应用自适应环路滤波相关的信息和亮度信号可按编码单元(coding unit,cu)进行传送,所要应用的自适应环路滤波器的形状及滤波器系数可以根据各个块而不同。并且,还能够应用相同类型(固定类型)的自适应环路滤波器,而不管被应用的块的特性如何。
96.存储器155可以存储通过滤波器部150计算的重建块或图像,可以在执行帧间预测时向预测部120、125提供所存储的重建块或图像。
97.图2是本发明实施例的视频解码器(decoder)的框图。
98.参照图2,视频解码器200可以包括熵解码部210、重排部215、逆量化部220、逆变换部225、预测部230、预测部235、滤波器部240、存储器245。
99.在从视频编码器输入视频码流时,可以按与视频编码器相反的步骤对所输入的码流进行解码。
100.熵解码部210可按与视频编码器的熵编码部中执行熵编码的步骤相反的步骤进行熵解码。例如,与视频编码器中执行的方法相对应地,可以应用指数哥伦布码(exponential golomb)、上下文自适应变长编码(cavlc,context

adaptive variable length coding)、上下文自适应二进制算术编码(cabac,context

adaptive binary arithmetic coding)等多种方法。
101.熵解码部210可以对与编码器执行的帧内预测及帧间预测相关的信息进行解码。
102.重排部215能够基于在编码部中对借助熵解码部210进行熵解码的码流进行重排
的方法来执行重排。可以将由1维矢量形式表示的多个系数重建成2维的块形状的系数来进行重排。重排部215接收与在编码部执行的系数扫描相关的信息,可以通过基于在相应编码部执行的扫描顺序来进行逆向扫描的方法执行重排。
103.逆量化部220可以基于编码器所提供的量化参数和重排的块的系数值来执行逆量化。
104.逆变换部225可以对视频编码器执行的量化结果执行逆离散余弦变换、逆离散正弦变换,所述逆离散余弦变换、逆离散正弦变换属于在变换部执行的变换的逆变换,即对于离散余弦变换、离散正弦变换的逆变换。其中,dct变换核可以包括dct2或dct8中的至少一个,dst变换核可以包括dst7。可替代地,若在视频编码器中跳过变换,则在逆变换部225可以不执行逆变换。逆变换可以基于在视频编码器中确定的传送单元来执行。在视频解码器的逆变换部225中,可以根据预测方法、当前块的大小及预测方向等多个信息选择性地执行变换方法(例如,dct或dst)。
105.预测部230、235能够基于由熵解码部210提供的与预测块生成相关的信息和由存储器245提供的之前解码的块或图像信息来生成预测块。
106.如上所述,当以与视频编码器中的操作相同的方式执行帧内预测时,若预测单元的大小与变换单元的大小相同,则基于存在于预测单元的左侧的像素、存在于左上方的像素、存在于上方的像素来对预测单元执行帧内预测,若执行帧内预测时的预测单元的大小与变换单元的大小不同,则可以使用基于变换单元的参考像素来执行帧内预测。并且,还可以应用仅对最小编码单元使用n
×
n划分的帧内预测。
107.预测部230、235可以包括预测单元判定部、帧间预测部及帧内预测部。预测单元判定部接收从熵解码部210输入的预测单元信息、帧内预测方法的预测模式信息、帧间预测方法的运动预测相关信息等多种信息,根据当前编码单元对预测单元进行分类,可确定预测单元是在执行帧间预测还是在执行帧内预测。帧间预测部230可以使用由视频编码器提供的当前预测单元的帧间预测所需的信息,并基于当前预测单元所属的当前图像的之前图像或之后图像中的至少一个图像中所包括的信息来对当前预测单元执行帧间预测。可替代地,还可以基于在当前预测单元所属的当前图像内已重建的一部分区域的信息来执行帧间预测。
108.为了执行帧间预测,能够基于编码单元来判断相应编码单元中所包括的预测单元的运动预测方法是跳过模式(skip mode)、合并模式(merge mode)、高级运动矢量预测模式(amvp mode)、帧内块复制模式中的哪种模式。
109.帧内预测部235可以基于当前图像内的像素信息来生成预测块。当预测单元为已执行帧内预测的预测单元时,能够基于由视频编码器提供的预测单元的帧内预测模式信息来执行帧内预测。帧内预测部235可以包括自适应帧内平滑(ais,adaptive intra smoothing)滤波器、参考像素插值部、dc滤波器。自适应帧内平滑滤波器是对当前块的参考像素执行滤波的部分,并且可以根据当前预测单元的预测模式确定是否应用滤波器。可以使用由视频编码器提供的预测单元的预测模式及自适应帧内平滑滤波器信息来对当前块的参考像素执行自适应帧内平滑滤波。若当前块的预测模式为不执行自适应帧内平滑滤波的模式,则可以不应用自适应帧内平滑滤波器。
110.对于参考像素插值部而言,若预测单元的预测模式为基于对参考像素进行插值的
像素值来执行帧内预测的预测单元,则可以通过对参考像素进行插值来生成整数值或分数值的像素单位的参考像素。若当前预测单元的预测模式为以不对参考像素进行插值的方式生成预测块的预测模式,则可不对参考像素进行插值。若当前块的预测模式为dc模式,则dc滤波器可以通过滤波来生成预测块。
111.可以向滤波器部240提供重建的块或图像。滤波器部240可以包括去块滤波器、偏移校正部、alf。
112.可以从视频编码器接收与是否对相应块或图像应用去块滤波器相关的信息及与在应用去块滤波器时应用强滤波还是弱滤波相关的信息。从视频解码器的去块滤波器接收由视频编码器提供的与去块滤波器相关的信息,并且可以在视频解码器对相应块执行去块滤波。
113.偏移校正部能够基于编码时用于视频的偏移校正的类型及偏移量信息等来对已重建的视频执行偏移校正。
114.可以基于由编码器提供的与是否应用alf相关的信息、alf系数信息等来将alf应用于编码单元。这种alf信息可以通过被包括在特定的参数集中来提供。
115.存储器245存储已重建的图像或块,使得所述图像或块可用作参考图像或参考块,并且可以向输出部提供已重建的图像。
116.图3是示出本发明实施例的基本编码树单元的图。
117.可以将大小最大的编码块定义为编码树块。一个图像可被划分为多个编码树单元(coding tree unit,ctu)。编码树单元是大小最大的编码单元,还可被称为最大编码单元(lcu,largest coding unit)。图3示出了将一个图像划分为多个编码树单元的示例。
118.编码树单元的大小可以在图像级或序列级定义。为此,可以通过图像参数集或序列参数集来用信号发送表示编码树单元的大小的信息。
119.例如,序列内整个图像的编码树单元的大小可以设置为128
×
128。可替代地,可以将图像级的128
×
128或256
×
256中的任一个确定为编码树单元的大小。例如,可以将第一图像中编码树单元的大小设置为128
×
128,并且可以将第二图像中编码树单元的大小设置为256
×
256。
120.可以通过划分编码树单元来生成编码块。编码块表示用于进行编码/解码处理的基本单元。例如,可按不同编码块执行预测或者变换,或者可按不同编码块确定预测编码模式。其中,预测编码模式表示生成预测图像的方法。例如,预测编码模式可以包括画面内预测(intra prediction,帧内预测)、画面间预测(inter prediction,帧间预测)、当前图像参考(current picture referencing,cpr,或帧内块复制(intra block copy,ibc))或组合预测(combined prediction)。针对编码块,可以使用帧内预测、帧间预测、当前图像参考或组合预测中的至少一种预测编码模式来生成与编码块相关的预测块。
121.可以通过码流用信号发送表示当前块的预测编码模式的信息。例如,所述信息可以是指示预测编码模式为帧内模式还是帧间模式的1比特标志。可仅在当前块的预测编码模式被确定为帧间模式的情况下使用当前图像参考或组合预测。
122.当前图像参考用于将当前图像设置为参考图像,并从当前图像内的已编码/解码的区域获得当前块的预测块。其中,当前图像意味着包括当前块的图像。可以通过码流用信号发送表示是否对当前块应用当前图像参考的信息。例如,所述信息可以是1比特标志。当
所述标志为真时,可以将当前块的预测编码模式确定为当前图像参考,当所述标志为假时,可以将当前块的预测模式确定为帧间预测。
123.可替代地,可以基于参考图像索引确定当前块的预测编码模式。例如,当参考图像索引指向当前图像时,可以将当前块的预测编码模式确定为当前图像参考。当参考图像索引指向其他图像而不是当前图像时,可以将当前块的预测编码模式确定为帧间预测。即,当前图像参考是使用当前图像内已编码/解码的区域的信息的预测方法,并且帧间预测是使用已编码/解码的其他图像的信息的预测方法。
124.组合预测表示由帧内预测、帧间预测及当前图像参考中的两种以上组合而成的编码模式。例如,在应用组合预测的情况下,可以基于帧内预测、帧间预测或当前图像参考中的一种来生成第一预测块,并且可以基于另一种来生成第二预测块。若生成第一预测块和第二预测块,则可以通过第一预测块和第二预测块的平均运算或加权和运算来生成最终预测块。可以通过码流用信号发送表示是否应用组合预测的信息。所述信息可以是1比特标志。
125.图4是示出编码块的多种划分类型的图。
126.可以基于四叉树划分、二叉树划分或三叉树划分将编码块划分为多个编码块。还可以基于四叉树划分、二叉树划分或三叉树划分将所划分的编码块再次划分为多个编码块。
127.四叉树划分是指将当前块划分为4个块的划分技术。作为四叉树划分的结果,可以将当前块划分为4个正方形分区(参考图4(a)部分中的

split_qt’)。
128.二叉树划分是指将当前块划分为2个块的划分技术。可以将沿着垂直方向(即,使用横穿当前块的垂直线)将当前块划分为两个块的过程称为垂直方向二叉树划分,可以将沿着水平方向(即,使用横穿当前块的水平线)将当前块划分为两个块的过程称为水平方向二叉树划分。可以在经过二叉树划分后将当前块划分为2个非正方形分区。图4(b)部分中的“split_bt_ver”表示垂直方向二叉树划分结果,并且图4(c)部分中的“split_bt_hor”表示水平方向二叉树划分结果。
129.三叉树划分是指将当前块划分为3个块的划分技术。可以将沿着垂直方向(即,使用横穿当前块的两个垂直线)将当前块划分为三个块的过程称为垂直方向三叉树划分,可以将沿着水平方向(即,使用横穿当前块的两个水平线)将当前块划分为三个块的过程称为水平方向三叉树划分。可以在经过三叉树划分后将当前块划分为3个非正方形分区。在这种情况下,位于当前块的中心的分区的宽度/高度可以是其他分区的宽度/高度的2倍。图4(d)部分中的“split_tt_ver”表示垂直方向三叉树划分结果,并且图4(e)部分中的“split_tt_hor”表示水平方向三叉树划分结果。
130.可以将编码树单元的划分次数定义为划分深度(partitioning depth)。可以在序列或图像级确定编码树单元的最大划分深度。由此,编码树单元的最大划分深度可根据不同序列或图像而变得不同。
131.可替代地,可单独确定对于多个划分技术的每一个的最大划分深度。例如,允许四叉树划分的最大划分深度可以与允许二叉树划分和/或三叉树划分的最大划分深度不同。
132.编码器可以通过码流用信号发送表示当前块的划分形状或划分深度中的至少一个的信息。解码器可以基于从码流中解析的信息来确定编码树单元的划分形状及划分深
度。
133.图5是示出编码树单元的划分示例的图。
134.可以将使用四叉树划分、二叉树划分和/或三叉树划分等划分技术来划分编码块的过程称为多叉树划分(multi tree partitioning)。
135.可以将通过对编码块应用多叉树划分而生成的编码块称为多个下游编码块。当编码块的划分深度为k时,多个下游编码块的划分深度设置为k+1。
136.另一方面,针对划分深度为k+1的多个编码块,可以将划分深度为k的编码块称为上游编码块。
137.可以基于上游编码块的划分形状或相邻编码块的划分类型中的至少一个来确定当前编码块的划分类型。其中,相邻编码块与当前编码块相邻,其可以包括当前编码块的上相邻块、左相邻块或与左上角相邻的相邻块中的至少一个。其中,划分类型可以包括是否划分四叉树、是否划分二叉树、二叉树划分方向、是否划分三叉树或三叉树划分方向中的至少一个。
138.为了确定编码块的划分形状,可以通过码流用信号发送表示编码块是否被划分的信息。所述信息为1比特标志“split_cu_flag”,当所述标志为真时,表示通过多叉树划分技术来划分编码块。
139.当“split_cu_flag”为真时,可以通过码流用信号发送表示编码块是否被四叉树划分的信息。所述信息为1比特标志“split_qt_flag”,当所述标志为真时,编码块可被划分为4个块。
140.例如,在图5所示的示例中图示了随着编码树单元被四叉树划分来生成划分深度为1的4个编码块。并且,图示了对作为四叉树划分的结果而生成的4个编码块中的第一个编码块及第四个编码块再次应用四叉树划分。最终,可以生成划分深度为2的4个编码块。
141.并且,可以通过对划分深度为2的编码块再次应用四叉树划分来生成划分深度为3的编码块。
142.在未对编码块应用四叉树划分时,可以通过考虑编码块的大小、编码块是否位于图像边界处、最大划分深度或相邻块的划分形状中的至少一个来确定对所述编码块执行二叉树划分还是三叉树划分。当确定对所述编码块执行二叉树划分或三叉树划分时,可以通过码流用信号发送表示划分方向的信息。所述信息可以是1比特标志“mtt_split_cu_vertical_flag”。可以基于所述标志来确定划分方向是垂直方向还是水平方向。另外,可以通过码流用信号发送表示对所述编码块应用二叉树划分或三叉树划分中的哪一个的信息。所述信息可以是1比特标志“mtt_split_cu_binary_flag”。可以基于所述标志来确定对所述编码块应用二叉树划分还是三叉树划分。
143.例如,在图5所示的示例中图示了对划分深度为1的编码块应用垂直方向二叉树划分,对作为所述划分结果而生成的编码块中的左侧编码块应用垂直方向三叉树划分,对右侧编码块应用垂直方向二叉树划分。
144.当实施用于对视频进行编码或解码的设备时,存在由于硬件性能而难以处理大于阈值的区域的问题。例如,可能存在这样的问题:当硬件性能允许同时处理最多4096个样本时,大小为64
×
64的数据单元应当会被冗余地访问和处理,并且对于具有多于4096个样本的区域而言数据无法被同时处理。如上所述,数据处理的基本单元可以被定义为基于流水
线的基本数据单元(虚拟处理数据单元,vpdu,以下称为基本数据单元)。
145.基本数据单元可以分为正方形、非正方形或非矩形类型。
146.图6是示出基本数据单元的形状的图。
147.基本数据单元可以包括等于或小于可以同时处理的最大样本数的样本。例如,如在图6(a)所示的示例中,可以将64
×
64大小的正方形块设置为基本数据单元。可替代地,可以将非正方形块设置为基本数据单元。例如,如在图6(b)或6(c)所示的示例中,可以将32
×
128大小的块或64
×
32大小的块设置为基本数据单元。
148.尽管未示出,但是可以定义三角形、l形或多边形的基本数据单元。
149.可以通过码流用信号发送用于确定基本数据单元的信息。所述信息可以用于确定基本数据单元的大小或形状中的至少一个。基于所述信息,可以确定是允许非正方形基本数据单元还是允许非正方形基本数据单元。
150.可替代地,可以在编码器和解码器中预定义基本数据单元的大小或形状中的至少一个。
151.可以考虑到基本数据单元的大小来确定是否允许编码块的划分类型。例如,当作为划分编码块的结果而产生的编码块大于基本数据单元时,可能不允许这种划分。可替代地,当作为划分编码块的结果而产生的非正方形编码块大于基本数据单元时,可能不允许这种划分。例如,当编码块的宽度或高度大于阈值时,或者当编码块中包括的样本数大于阈值时,可能不允许二叉树或三叉树划分。因此,可以省略对与二叉树或三叉树划分有关的信息的编码。
152.可替代地,可以设置为必须对大于基本数据单元的编码块进行划分。可替代地,可以设置为必须对大于基本数据单元的编码块执行二叉树划分或三叉树划分。因此,对于大于基本数据单元的编码块,虽然未对指示编码块是否被划分的标志split_flag进行编码,也可以将该标志的值导出为1。
153.作为另一示例,大于基本数据单元的编码块可以被划分为多个子块。在此,可以将子块设置为作为用于预测的基本单元的预测单元,或作为用于变换和/或量化的基本单元的变换单元。在这种情况下,将编码块划分为多个预测单元可以被定义为vpdu预测单元划分,并且将编码块划分为多个变换单元可以被定义为vpdu变换单元划分。
154.可以将vpdu预测单元划分和vpdu变换单元划分中的至少一个应用于编码块。可以将根据应用vpdu预测单元划分的编码块的划分类型设置为与根据应用vpdu变换单元划分的编码块的划分类型相同。
155.当仅将vpdu预测单元划分应用于编码块时,对每个子块执行预测,但是可以对编码块执行变换和/或量化。在这种情况下,可以针对编码块确定诸如预测编码模式、帧内预测模式或帧间预测模式等预测模式。
156.当仅将vpdu变换单元划分应用于编码块时,对子块执行预测,但是可以对每个子块执行变换和/或量化。
157.图7和图8是示出将编码块划分为多个子块的示例的图。
158.图7是示出当仅允许正方形基本数据单元时的划分模式的图,图8是示出当允许正方形基本数据单元和非正方形基本数据单元时的划分模式的图。
159.假设仅允许正方形基本数据单元时,在图7(a)和图7(b)中,cu0和cu3被定义为两
个不同的vpdu,并且cu1被定义为四个不同的vpdu。因此,cu0和cu3可以被划分为两个子块,并且cu1可以被划分为四个子块。
160.假设允许正方形基本数据单元和非正方形基本数据单元时,在图8(a)和图8(b)中,可以将cu0和cu3定义为一个vpdu,并且可以将cu1定义为使用两个不同的vpdu。因此,cu0和cu3不被划分为子块,而cu1可以被划分为两个子块。
161.在这种情况下,cu1可以被划分为正方形子块或非正方形子块。例如,基于上下划分cu1的水平线,cu1可以被划分为两个正方形子块。可替代地,可以基于将cu1左右划分的垂直线将cu1划分为两个非正方形子块。
162.当存在适用于编码块的多个划分类型候选时,可以通过码流用信号发送指示多个划分类型候选中的任何一个的信息。例如,所述信息可以指示编码块是否被划分为正方形子块或者编码块是否被划分为非正方形子块。
163.可替代地,将编码块划分为正方形子块可以被设置为具有比将编码块划分为非正方形子块更高的优先级。例如,当编码块不能被划分为正方形子块时,可以允许将编码块划分为非正方形子块。
164.可替代地,可以基于作为父节点编码块的划分类型来确定编码块的划分类型。例如,当基于三叉树划分父节点编码块时,可以设置为将该编码块划分为正方形子块。另一方面,当基于二叉树或三叉树划分父节点编码块时,可以设置为将编码块划分为非正方形子块。
165.帧间预测是指使用之前图像的信息来预测当前块的预测编码模式。例如,可以将之前图像内与当前块相同位置的块(以下称为同位块,collocated block)设置为当前块的预测块。以下,将基于位置与当前块相同的块生成的预测块称为同位预测块(collocated prediction block)。
166.另一方面,若存在于之前图像中的对象已经移动至当前图像中的其他位置,则可以使用对象的运动来有效预测当前块。例如,若可以通过比较之前图像和当前图像来知晓对象的移动方向及大小,则可以考虑对象的运动信息来生成当前块的预测块(或预测图像)。以下,可以将使用运动信息生成的预测块称为运动预测块。
167.可以通过从当前块减去预测块来生成残差块(residual block)。在这种情况下,当存在对象的运动时,可以通过使用运动预测块来代替同位预测块,由此减少残差块的能量,从而可提高残差块的压缩性能。
168.如上所述,可以将使用运动信息生成预测块的过程称为运动补偿预测。在大部分的帧间预测中,可以基于运动补偿预测来生成预测块。
169.运动信息可以包括运动矢量、参考图像索引、预测方向或双向加权值索引中的至少一个。运动矢量表示对象的移动方向及大小。参考图像索引指定参考图像列表中包括的多个参考图像中的当前块的参考图像。预测方向是指单向l0预测、单向l1预测或双向预测(l0预测及l1预测)中的任一个。可以根据当前块的预测方向来使用l0方向的运动信息或l1方向的运动信息中的至少一个。双向加权值索引指定用于l0预测块的加权值及应用于l1预测块的加权值。
170.图9是展示了根据本发明实施例的帧间预测方法的流程图。
171.参照图9,帧间预测方法包括:确定当前块的帧间预测模式(s901);根据所确定的
帧间预测模式来获得当前块的运动信息(s902);以及基于所获得的运动信息来执行当前块的运动补偿预测(s903)。
172.其中,帧间预测模式表示用于确定当前块的运动信息的多种技术,可以包括使用平移(translation)运动信息的帧间预测模式和使用仿射(affine)运动信息的帧间预测模式。例如,使用平移运动信息的帧间预测模式可以包括合并模式及高级运动矢量预测模式,使用仿射运动信息的帧间预测模式可以包括仿射合并模式及仿射运动矢量预测模式。根据帧间预测模式,可以基于与当前块相邻的相邻块或从码流中解析的信息来确定当前块的运动信息。
173.以下,详细说明使用仿射运动信息的帧间预测方法。
174.图10是示出对象的非线性运动的图。
175.视频内对象的运动有可能是非线性运动。例如,如在图10所示的示例中,可能发生对象的非线性运动,诸如相机的放大、缩小、旋转、仿射变换等。当发生对象的非线性运动时,无法通过平移运动矢量来有效表示对象的运动。由此,在发生对象的非线性运动的部分,可以通过使用仿射运动来代替平移运动,由此提高编码效率。
176.图11是展示了根据本发明实施例的基于仿射运动的帧间预测方法的流程图。
177.可以基于从码流解析的信息来确定是否对当前块应用基于仿射运动的帧间预测技术。具体地,可以基于表示是否对当前块应用仿射合并模式的标志或表示是否对当前块应用仿射运动矢量预测模式的标志中的至少一个来确定是否对当前块应用基于仿射运动的帧间预测技术。
178.当将基于仿射运动的帧间预测技术应用于当前块时,可以确定当前块的仿射运动模型(s1101)。仿射运动模型可以由6参数仿射运动模型或4参数仿射运动模型中的至少一个来确定。6参数仿射运动模型使用6个参数来表示仿射运动,4参数仿射运动模型使用4个参数来表示仿射运动。
179.等式1为使用6个参数表示仿射运动的情况。仿射运动表示与通过仿射种子矢量确定的预定区域的平移运动。
180.【等式1】
181.v
x
=ax

by+e
182.v
y
=cx+dy+f
183.当使用6个参数表示仿射运动时,可以表示复杂的运动,但是对各个参数进行编码时所需的比特数增加,这会降低编码效率。由此,还可以使用4个参数表示仿射运动。等式2为使用4个参数表示仿射运动的情况。
184.【等式2】
185.v
x
=ax

by+e
186.v
y
=bx+ay+f
187.可以对用于确定当前块的仿射运动模型的信息进行编码并且可以通过码流用信号发送。例如,所述信息可以是1比特标志“affine_type_flag”。所述标志的值为0表示应用4参数仿射运动模型,所述标志的值为1表示应用6参数仿射运动模型。所述标志可以以条带、图块或块(例如,编码块或编码树单元)为单位进行编码。当以条带级用信号发送标志时,可以对所述条带中所属的所有块应用以所述条带级确定的仿射运动模型。
188.可替代地,可以基于当前块的仿射帧间预测模式来确定当前块的仿射运动模型。例如,当应用仿射合并模式时,可以将当前块的仿射运动模型确定为4参数运动模型。另一方面,当应用仿射运动矢量预测模式时,可以对用于确定当前块的仿射运动模型的信息进行编码并且可以通过码流用信号发送。例如,在对当前块应用仿射运动矢量预测模式时,可以基于1比特标志“affine_type_flag”来确定当前块的仿射运动模型。
189.接下来,可以导出当前块的仿射种子矢量(s1102)。当选择4参数仿射运动模型时,可以导出当前块的两个控制点上的运动矢量。另一方面,当选择6参数仿射运动模型时,可以导出当前块的三个控制点上的运动矢量。可以将控制点上的运动矢量称为仿射种子矢量。控制点可以包括当前块的左上角、右上角或左下角中的至少一个。
190.图12是示出每个仿射运动模型的仿射种子矢量的示例的图。
191.在4参数仿射运动模型中,可以导出与左上角、右上角或左下角中的两个相关的仿射种子矢量。例如,如在图12(a)所示的示例中,当选择4参数仿射运动模型时,可以使用当前块的左上角(例如,左上样本(x0,y0))的仿射种子矢量sv0和当前块的右上角(例如,右上样本(x1,y1))的仿射种子矢量sv1来导出仿射矢量。还可以使用与左下角相关的仿射种子矢量来代替与左上角相关的仿射种子矢量,或者还可以使用与左下角相关的仿射种子矢量来代替与右上角相关的仿射种子矢量。
192.在6参数仿射运动模型中,可以导出与左上角、右上角及左下角相关的仿射种子矢量。例如,如在图12(b)所示的示例中,当选择了6参数仿射运动模型时,可以使用当前块的左上角(例如,左上样本(x0,y0))的仿射种子矢量sv0、当前块的右上角(例如,右上样本(x1,y1))的仿射种子矢量sv1和当前块的左下角(例如,左下样本(x2,y2))的仿射种子矢量sv2来导出仿射矢量。
193.在稍后所述的实施例中,在4参数仿射运动模型下,将左上控制点及右上控制点的仿射种子矢量分别称为第一仿射种子矢量及第二仿射种子矢量。在稍后所述的使用第一仿射种子矢量及第二仿射种子矢量的实施例中,第一仿射种子矢量及第二仿射种子矢量中的至少一个可替换为左下控制点的仿射种子矢量(第三仿射种子矢量)或右下控制点的仿射种子矢量(第四仿射种子矢量)。
194.并且,在6参数仿射运动模型下,将左上控制点、右上控制点及左下控制点的仿射种子矢量分别称为第一仿射种子矢量、第二仿射种子矢量及第三仿射种子矢量。在稍后所述的使用第一仿射种子矢量、第二仿射种子矢量及第三仿射种子矢量的实施例中,第一仿射种子矢量、第二仿射种子矢量及第三仿射种子矢量中的至少一个可替换为右下控制点的仿射种子矢量(第四仿射种子矢量)。
195.可以通过使用仿射种子矢量来导出每个子块的仿射矢量(s1103)。其中,仿射矢量表示基于仿射种子矢量导出的平移运动矢量。可以将子块的仿射矢量称为仿射子块运动矢量或子块运动矢量。
196.图13是示出在4参数运动模型下的子块的仿射矢量的示例的图。
197.可以基于控制点的位置、子块的位置及仿射种子矢量而导出子块的仿射矢量。例如,等式3表示导出仿射子块矢量的示例。
198.【等式3】
[0199][0200][0201]
在所述等式3中,(x,y)表示子块的位置。其中,子块的位置表示子块中所包括的参考样本的位置。参考样本可以是位于子块的左上角的样本,或者是x轴或y轴坐标中的至少一个位于中心位置的样本。(x0,y0)表示第一控制点的位置,并且(sv
0x
,sv
0y
)表示第一仿射种子矢量。另外,(x1,y1)表示第二控制点的位置,并且(sv
1x
,sv
1y
)表示第二仿射种子矢量。
[0202]
当第一控制点及第二控制点分别与当前块的左上角及右上角相对应时,可以将x1‑
x0设置为与当前块的宽度相同的值。
[0203]
此后,可以使用每个子块的仿射矢量来执行每个子块的运动补偿预测(s1104)。在执行运动补偿预测后,可以生成与各个子块相关的预测块。可以将子块的预测块设置为当前块的预测块。
[0204]
接下来,详细说明使用平移运动信息的帧间预测方法。
[0205]
可从当前块的其他块的运动信息中导出当前块的运动信息。其中,其他块可以是比起当前块更优先地以帧间预测进行编码/解码的块。可以将当前块的运动信息设置为与其他块的运动信息相同的情况定义为合并模式。并且,可以将其他块的运动矢量设置为当前块的运动矢量的预测值情况定义为运动矢量预测模式。
[0206]
图14是展示了使用合并模式导出当前块的运动信息的过程的流程图。
[0207]
可以导出当前块的合并候选(s1401)。当前块的合并候选可从在当前块之前以帧间预测进行编码/解码的块导出。
[0208]
图15是示出用于导出合并候选的候选块的图。
[0209]
候选块可以包括包含与当前块相邻的样本的相邻块或包含不与当前块相邻的样本的非相邻块中的至少一者。在下文中,将用于确定候选块的样本指定为参考样本。另外,将与当前块相邻的参考样本称为相邻参考样本,将不与当前块相邻的参考样本称为非相邻参考样本。
[0210]
相邻参考样本可以包括在当前块的最左侧列的相邻列中、或当前块的最上方行的相邻行中。例如,若当前块的左上样本的坐标为(0,0),则包括(

1,h

1)位置上的参考样本的块、包括(w

1,

1)位置上的参考样本的块、包括(w,

1)位置上的参考样本的块、包括(

1,h)位置上的参考样本的块或包括(

1,

1)位置上的参考样本的块中的至少一个可用作候选块。参考附图,可以将索引为0至4的相邻块用作候选块。
[0211]
非相邻参考样本表示与当前块相邻的参考样本之间的x轴距离或y轴距离中的至少一者具有预定义的值的样本。例如,可以将包含与左侧参考样本之间的x轴距离为预定义的值的参考样本的块、包含与上方参考样本之间的y轴距离为预定义的值的非相邻样本的块、或包含与左上参考样本之间的x轴距离及y轴距离为预定义的值的非相邻样本的块中的至少一者用作候选块。预定义的值可以是4、8、12、16等整数。参考附图,可以将索引为5至26的块中的至少一个用作候选块。
[0212]
可以将与相邻参考样本不在同一垂直线、水平线或对角线上的样本设置为非相邻参考样本。
[0213]
图16是示出参考样本的位置的图。
[0214]
如在图16中所示的示例中,可以将上方非相邻参考样本的x坐标设置为与上方相邻参考样本的x坐标不同。例如,当上相邻参考样本的位置为(w

1,

1)时,可以将沿y轴与上相邻参考样本相隔n的上非相邻参考样本的位置设置为((w/2)

1,
‑1‑
n),并且可以将沿y轴与上相邻参考样本相隔2n的上非相邻参考样本的位置设置为(0,
‑1‑
2n)。即,非相邻参考样本的位置可以基于相邻参考样本的位置和与相邻参考样本之间的距离来确定。
[0215]
在下文中,将候选块中的包含相邻参考样本的候选块称为相邻块,包含非相邻参考样本的块称为非相邻块。
[0216]
在当前块与候选块之间的距离大于或等于阈值时,可以将所述候选块设置为不可用作合并候选。所述阈值可以基于编码树单元的大小来确定。例如,可以将所述阈值设置为编码树单元的高度(ctu_height)、或在编码树单元的高度加上或减去偏移值而得的值(例如,ctu_height
±
n)。偏移值n为编码器及解码器中预定义的值,可以设置为4、8、16、32或ctu_height。
[0217]
在当前块的y轴坐标与候选块中包括的样本的y轴坐标之间的差值大于阈值时,可以将候选块确定为不可用作合并候选。
[0218]
可替代地,可以将不属于与当前块相同的编码树单元的候选块设置为不可用作合并候选。例如,在参考样本超出当前块所属的编码树单元的上边界时,可以将包括参考样本的候选块设置为不可用作合并候选。
[0219]
如果,在当前块的上边界与编码树单元的上边界相邻时,多个候选块被确定为不可用作合并候选,由此会降低当前块的编码/解码效率。为了解除如上问题,可以设置候选块,以使位于当前块的上方的候选块的数量多于位于当前块的左侧的候选块的数量。
[0220]
图17是示出用于导出合并候选的候选块的示例的图。
[0221]
如在图17中所示的示例中,可以将属于当前块上方n个块列的上方块和属于当前块左侧m个块列的左侧块设置为候选块。此时,通过将m设置为大于n,可以将左侧候选块的数量设置为大于上方候选块的数量。
[0222]
例如,可以将当前块内参考样本的y轴坐标与可用作候选块的上方块的y轴坐标之间的差值设置为不超过当前块的高度的n倍。另外,可以将当前块内参考样本的x轴坐标和可用作候选块的左侧块的x轴坐标之间的差值设置为不超过当前块的宽度的m倍。
[0223]
例如,在图17所示的示例中,示出了将属于当前块上方两个块列的块和属于当前块左侧五个块列的块设置为候选块。
[0224]
作为另一例,当候选块不属于与当前块相同的编码树单元时,可以代替所述候选块而利用属于与当前块相同的编码树单元的块、或包含与所述编码树单元的边界相邻的参考样本的块来导出合并候选。
[0225]
图18是示出改变参考样本的位置的示例的图。
[0226]
当参考样本包括在与当前块不同的编码树单元,并且所述参考样本与所述编码树单元的边界不相邻时,可以代替所述参考样本而利用与所述编码树单元的边界相邻的参考样本来确定候选块参考样本。
[0227]
例如,在图18(a)和图18(b)所示的示例中,在当前块的上边界与编码树单元的上边界彼此接触时,当前块上方的参考样本属于与当前块不同的编码树单元。可以用与编码
树单元的上边界相邻的样本来替换属于与当前块不同的编码树单元的参考样本中不与编码树单元的上边界相邻的参考样本。
[0228]
例如,如图18(a)所示的示例中,位置6处的参考样本被替换为位于编码树单元的上边界的位置6'处的样本,如图18(b)的示例所示,位置15处的参考样本被替换为位于编码树单元的上边界的位置15'处的样本。此时,替换样本的y坐标可以改变为编码树单元的相邻位置,替换样本的x坐标可以设置为与参考样本相同。例如,6'位置的样本可以具有与6位置的样本相同的x坐标,15'位置的样本可以具有与15位置的样本相同的x坐标。
[0229]
可替代地,可以将在参考样本的x坐标中加上或减去偏移值而得到的值设置为替换样本的x坐标。例如,当位于当前块的上方的相邻参考样本和非相邻参考样本的x坐标相同时,可以将在参考样本的x坐标中加上或减去偏移值而得到的值设置为替换样本的x坐标。这是为了防止用于替换非相邻参考样本的替换样本与其他非相邻参考样本或相邻参考样本处于相同的位置。
[0230]
图19是示出改变参考样本的位置的示例的图。
[0231]
在用位于编码树单元的边界的样本来替换包括在与当前块不同的编码树单元中且与编码树单元的边界不相邻的参考样本时,可以将在参考样本的x坐标中加上或减去偏移值而得到的值设置为替换样本的x坐标。
[0232]
例如,在图19所示的示例中,位置6处的参考样本和位置15处的参考样本可以被分别替换为具有同与编码树单元的上边界相邻的行相同的y坐标的、位置6'处的样本和位置15'处的样本。此时,6'位置的样本的x坐标可以设置为与6位置的参考样本的x坐标的差值为w/2的值,15'位置的样本的x坐标可以设置为与15位置的参考样本的x坐标的差值为w

1的值。
[0233]
不同于图18和图19所示的示例,位于当前块的最上方行的上方的行的y坐标或编码树单元的上边界的y坐标还可以被设置为替换样本的y坐标。
[0234]
虽然未图示,但是还可以基于编码树单元的左边界来确定代替参考样本的样本。例如,当参考样本不包括在与当前块相同的编码树单元中,并且不与编码树单元的左边界相邻时,可以将所述参考样本替换为与编码树单元的左边界相邻的样本。此时,替换样本可以具有与参考样本相同的y坐标,或者可以具有在参考样本的y坐标中加上或差值偏移值而获取的y坐标。
[0235]
之后,可以将包含替换样本的块设置为候选块,并基于所述候选块导出当前块的合并候选。
[0236]
还可从与当前块不同的图像中所包括的时间相邻块导出合并候选。例如,可从同位图像中所包括的同位块导出合并候选。
[0237]
可以将合并候选的运动信息设置为与候选块的运动信息相同。例如,可以将候选块的运动矢量、参考图像索引、预测方向或双向加权值索引中的至少一个设置为合并候选的运动信息。
[0238]
可以生成包括合并候选的合并候选列表(s1402)。所述合并候选可以分类为从与当前块相邻的相邻块中导出的相邻合并候选、以及从非相邻块中导出的非相邻合并候选。
[0239]
可按照预定顺序分配合并候选列表内的多个合并候选的索引。例如,分配给相邻合并候选的索引可以具有比分配给非相邻合并候选的索引更小的值。可替代地,基于图15
或图17所示的每个块的索引,可以将索引分配给每个合并候选。
[0240]
当合并候选列表中包括多个合并候选时,可以选择所述多个合并候选中的至少一个(s1403)。此时,可以通过码流用信号发送指示当前块的运动信息是否是从相邻合并候选中导出的信息。所述信息可以是1比特标志。例如,可以通过码流用信号发送指示当前块的运动信息是否是从相邻合并候选中导出的语法元素isadjancentmergeflag。当语法元素isadjancentmergeflag的值为1时,当前块的运动信息可以基于相邻合并候选来导出。另一方面,当语法元素isadjancentmergeflag的值为0时,当前块的运动信息可以基于非相邻合并候选来导出。
[0241]
表1示出了包括语法元素isadjancentmergeflag的语法表。
[0242]
【表1】
[0243][0244]
可以通过码流用信号发送用于指定多个合并候选中的任一个的信息。例如,可以通过码流用信号发送指示合并候选列表中包括的合并候选中的任一个索引的信息。
[0245]
当isadjacentmergeflag为1时,可以用信号发送用于确定相邻合并候选中的任一
个的语法元素merge_idx。可以将语法元素merge_idx的最大值设置为与相邻合并候选的数量的差值为1的值。
[0246]
当isadjacentmergeflag为0时,可以用信号发送用于确定非相邻合并候选中的任一个的语法元素na_merge_idx。语法元素na_merge_idx指示将非相邻合并候选的索引与相邻合并候选的数量求差而获得的值。解码器可以通过将根据na_merge_idx确定的索引加上相邻合并候选的数量来选择非相邻合并候选。
[0247]
在合并候选列表所包括的合并候选的数量小于阈值时,可以将帧间运动信息列表中所包括的合并候选添加到合并候选列表中。其中,阈值可以是从合并候选列表可以包括的最大合并候选的数量或最大合并候选的数量减去偏移量的值。偏移量可以是1或2等整数。帧间运动信息列表可以包括基于在当前块之前进行编码/解码的块来导出的合并候选。
[0248]
帧间运动信息列表包括从于当前图像内基帧间预测进行编码/解码的块导出的合并候选。例如,帧间运动信息列表中包括的合并候选的运动信息可以设置为与基于帧间预测进行编码/解码的块的运动信息相同。其中,运动信息可以包括运动矢量、参考图像索引、预测方向或双向加权值索引中的至少一个。
[0249]
为了便于说明,将帧间运动信息列表中包括的合并候选称为帧间合并候选。
[0250]
可以在编码器及解码器中预定义帧间运动信息列表中可以包括的最大合并候选的数量。例如,帧间运动信息列表中可以包括的最大合并候选的数量可以是1、2、3、4、5、6、7、8或更大(例如,16)。
[0251]
可替代地,可以通过码流用信号发送表示帧间运动信息列表的最大合并候选的数量的信息。所述信息在序列级、图像级或条带级用信号发送。
[0252]
可替代地,可以根据图像的大小、条带的大小或编码树单元的大小来确定帧间运动信息列表的最大合并候选数量。
[0253]
帧间运动信息列表可以以图像、条带、图块、砖块、编码树单元或编码树单元行(line)(行或列)为单位实现初始化。例如,在条带初始化时,帧间运动信息列表也被初始化,帧间运动信息列表有可能不包括任何的合并候选。
[0254]
可替代地,还可以通过码流用信号发送表示是否初始化帧间运动信息列表的信息。所述信息可以以条带级、图块级、砖块级或块级用信号发送。在所述信息指示对帧间运动信息列表进行初始化之前,可以使用已配置的帧间运动信息列表。
[0255]
可替代地,可以通过图像参数集或条带头用信号发送与帧间合并候选相关的信息。即使条带被初始化,帧间运动信息列表也可以包括初始帧间合并候选。由此,可以将帧间合并候选用于条带内首次被编码/解码的块。
[0256]
根据编码/解码顺序,对块进行编码/解码,并且可以根据编码/解码顺序来将基于帧间预测进行编码/解码的多个块依次设置为帧间合并候选。
[0257]
图20是展示了用于更新帧间运动信息列表的过程的流程图。
[0258]
在对当前块执行帧间预测时(s2001),可以基于当前块来导出帧间合并候选(s2002)。帧间合并候选的运动信息可以设置为与当前块的运动信息相同。
[0259]
当帧间运动信息列表为空时(s2003),可以将基于当前块导出的帧间合并候选添加到帧间运动信息列表(s2004)。
[0260]
在帧间运动信息列表已经包括所述帧间合并候选时(s2003),可以对当前块的运
动信息(或基于当前块导出的帧间合并候选)进行冗余检查(s2005)。冗余检查用于确定帧间运动信息列表中已存储的帧间合并候选的运动信息和当前块的运动信息是否相同。可以将帧间运动信息列表中已存储的所有帧间合并候选作为对象执行冗余检查。可替代地,可以将帧间运动信息列表中已存储的帧间合并候选中的索引为阈值以上或阈值以下的帧间合并候选作为对象可执行冗余检查。
[0261]
在不包括具有与当前块的运动信息相同的运动信息的帧间合并候选时,可以将基于当前块导出的帧间合并候选添加到帧间运动信息列表(s2008)。可以基于帧间合并候选的运动信息(例如,运动矢量和/或参考图像索引等)是否相同来确定帧间合并候选是否相同。
[0262]
在这种情况下,在帧间运动信息列表中已经存储了最大数量的帧间合并候选时(s2006),删除最早的帧间合并候选(s2007),并且可以将基于当前块导出的帧间合并候选添加到帧间运动信息列表(s2008)。
[0263]
可以根据各个索引来识别多个帧间合并候选。在将从当前块导出的帧间合并候选添加到帧间运动信息列表时,向所述帧间合并候选分配最低的索引(例如,0),可以将已存储的帧间合并候选的索引分别增加1。在这种情况下,当帧间运动信息列表中已存储最大数量的帧间合并候选时,移除索引最大的帧间合并候选。
[0264]
可替代地,在将从当前块导出的帧间合并候选添加到帧间运动信息列表时,可向所述帧间合并候选分配最大的索引。例如,在帧间运动信息列表中已存储的帧间合并候选的数量小于最大值时,可向所述帧间合并候选分配值与已存储的帧间合并候选的数量相同的索引。可替代地,在帧间运动信息列表中已存储的帧间合并候选的数量等于最大值时,可向所述帧间合并候选分配从最大值减去1的索引。并且,移除索引最小的帧间合并候选,并将剩余的已存储的多个帧间合并候选的索引将分别减小1。
[0265]
图21是示出更新帧间合并候选列表的实施例的图。
[0266]
假设将从当前块导出的帧间合并候选添加到帧间合并候选列表,并且向所述帧间合并候选分配最大的索引。并且,假设帧间合并候选列表中已存储了最大数量的帧间合并候选。
[0267]
在将从当前块中导出的帧间合并候选hmvpcand[n+1]添加到帧间合并候选列表hmvpcandlist时,从已存储的帧间合并候选中删除索引最小的帧间合并候选hmvpcand[0],并分别从多个剩余帧间合并候选的索引减小1。另外,可以将从当前块中导出的帧间合并候选hmvpcand[n+1]的索引设置为最大值(在图21所示的示例中为n)。
[0268]
在已存储与基于当前块导出的帧间合并候选相同的帧间合并候选时(s2005),可以不将基于当前块导出的帧间合并候选添加到帧间运动信息列表(s2009)。
[0269]
可替代地,随着将基于当前块导出的帧间合并候选添加到帧间运动信息列表,还可移除与所述帧间合并候选相同的已存储的帧间合并候选。在这种情况下,会引起已存储的帧间合并候选的索引被更新的效果。
[0270]
图22是示出更新已存储的帧间合并候选的索引的示例的图。
[0271]
与基于当前块导出的帧间合并候选mvcand相同的已存储的帧间合并候选的索引为hidx时,删除所述已存储的帧间合并候选,可以将索引大于hidx的帧间合并候选的索引各减小1。例如,在图22所示的示例中,示出了将与mvcand相同的hmvpcand[2]从帧间运动信
息列表hvmpcandlist中删除,并且hmvpcand[3]至hmvpcand[n]的索引各减少1。
[0272]
并且,将基于当前块导出的帧间合并候选mvcand可添加到帧间运动信息列表的最后。
[0273]
可替代地,可以更新被分配给与基于当前块导出的帧间合并候选相同的已存储的帧间合并候选的索引。例如,已存储的帧间合并候选的索引可更改为最小值或最大值。
[0274]
可以将预定区域中包括的块的运动信息设置为不能添加到帧间运动信息列表中。例如,基于合并处理区域中包括的块的运动信息导出的帧间合并候选不能添加到帧间运动信息列表。由于未定义合并处理区域中包括的块的编码/解码顺序,因此将这些块中任一个的运动信息用于其他块的帧间预测是不合适的。由此,基于合并处理区域中包括的块导出的帧间合并候选有可能不添加到帧间运动信息列表。
[0275]
借助子块单元执行运动补偿预测时,当前块中包括的多个子块中可以基于代表性子块的运动信息来导出帧间合并候选。例如,针对当前块使用子块合并候选时,可以基于子块中的代表性子块的运动信息来导出帧间合并候选。
[0276]
子块的运动矢量可按以下顺序导出。首先,可以选择当前块的合并候选列表所包括的合并候选中的任一个,并且可以基于选择的合并候选的运动矢量来导出初始移位矢量(shvector)。并且,通过将编码块内各个子块的参考样本(例如,左上样本或中间位置样本)的位置(xsb,ysb)加上初始移位矢量,可以导出参考样本的位置为(xcolsb,ycolsb)的移位子块。以下等式4示出了用于导出移位子块的等式。
[0277]
【等式4】
[0278]
(xcolsb,ycolsb)=(xsb+shvector[0]>>4,ysb+shvector[1]>>4)
[0279]
接下来,将与包括(xcolsb,ycolsb)的子块中心位置相对应的同位块的运动矢量设置为包括(xsb,ysb)的子块的运动矢量。
[0280]
代表性子块可意味着包括当前块的左上样本或中心样本的子块。
[0281]
图23是示出代表子块的位置的图。
[0282]
图23(a)示出了将位于当前块的左上方的子块设置为代表子块的示例,图23(b)示出了将位于当前块的中心的子块设置为代表子块的示例。当以子块为单位执行运动补偿预测时,基于包括当前块的左上样本的子块或包括当前块的中心样本的子块的运动矢量,可以导出当前块的帧间合并候选。
[0283]
基于当前块的帧间预测模式,还可以确定是否将当前块用作帧间合并候选。例如,可以将基于仿射运动模型进行编码/解码的块设置为不可用作帧间合并候选。由此,即使当前块通过帧间预测进行编码/解码,当前块的帧间预测模式为仿射预测模式时,也不会基于当前块更新帧间预测运动信息列表。
[0284]
可替代地,还可以基于仿射运动模型进行编码/解码的块中包括的子块中至少一个子块矢量来导出帧间合并候选。例如,可以使用位于当前块左上方的子块、位于中心的子块或位于右上方的子块来导出帧间合并候选。可替代地,还可以将多个子块的子块矢量的平均值设置为帧间合并候选的运动矢量。
[0285]
可替代地,还可以基于仿射运动模型进行编码/解码的块的仿射种子矢量的平均值来导出帧间合并候选。例如,将当前块的第一仿射种子矢量、第二仿射种子矢量或第三仿射种子矢量中的至少一个的平均值设置为帧间合并候选的运动矢量。
[0286]
可替代地,可以针对不同的帧间预测模式来配置帧间运动信息列表。例如,可定义用于通过帧内块复制进行编码/解码的块的帧间运动信息列表、用于基于平移运动模型进行编码/解码的块的帧间运动信息列表或用于基于仿射运动模型进行编码/解码的块的帧间运动信息列表中的至少一个。根据当前块的帧间预测模式,可选择多个帧间运动信息列表中的任一个。
[0287]
图24示出了针对每个帧间预测模式生成帧间运动信息列表的示例的图。
[0288]
当基于非仿射运动模型对块进行编码/解码时,可以将基于所述块导出的帧间合并候选mvcand添加到帧间非仿射运动信息列表hmvpcandlist。另一方面,当基于仿射运动模型对块进行编码/解码时,可以将基于所述块导出的帧间合并候选mvafcand添加到帧间仿射运动信息列表hmvpafcandlist。
[0289]
块的仿射种子矢量可以存储在从基于仿射运动模型进行编码/解码的块导出的帧间合并候选中。由此,可以将所述帧间合并候选用作用于导出当前块的仿射种子矢量的合并候选。
[0290]
除了描述的帧间运动信息列表以外,还可定义另外的帧间运动信息列表。除了所描述的帧间运动信息列表(以下称为第一帧间运动信息列表)以外,还可定义长期运动信息列表(以下称为第二帧间运动信息列表)。其中,长期运动信息列表包括长期合并候选。
[0291]
当第一帧间运动信息列表及第二帧间运动信息列表均为空状态时,首先可以将帧间合并候选添加到第二帧间运动信息列表。在第二帧间运动信息列表中可用的帧间合并候选的数量达到最大数量之后,才能在第一帧间运动信息列表添加帧间合并候选。
[0292]
可替代地,还可以将一个帧间合并候选添加到第二帧间运动信息列表及第一帧间运动信息列表两者。
[0293]
在这种情况下,可能不再更新已完成配置的第二帧间运动信息列表。可替代地,当解码区域为条带的预定比率以上时,可更新第二帧间运动信息列表。可替代地,可以每n个编码树单元行更新第二帧间运动信息列表。
[0294]
另一方面,每当产生以帧间预测进行编码/解码的块时,可以更新第一帧间运动信息列表。但是,还可以将添加到第二帧间运动信息列表的帧间合并候选设置为不用于更新第一帧间运动信息列表。
[0295]
可以通过码流用信号发送用于选择第一帧间运动信息列表或第二帧间运动信息列表中的任一个的信息。当合并候选列表所包括的合并候选的数量小于阈值时,可以将所述信息指示的帧间运动信息列表中包括的合并候选添加到合并候选列表。
[0296]
可替代地,还可以基于当前块的大小、形状、帧间预测模式、双向预测与否、运动矢量细化与否或三角形划分与否来选择帧间运动信息列表。
[0297]
可替代地,即使在添加了第一帧间运动信息列表中包括的帧间合并候选时,合并候选列表所包括的合并候选的数量还是小于最大合并数量,则可以将第二帧间运动信息列表中包括的帧间合并候选添加到合并候选列表。
[0298]
图25是示出将长期运动信息列表中包括的帧间合并候选添加到合并候选列表的示例的图。
[0299]
当合并候选列表所包括的合并候选的数量小于最大数量时,可以将第一帧间运动信息列表hmvpcandlist中包括的帧间合并候选添加到合并候选列表。即使在将第一帧间运
动信息列表中包括的帧间合并候选添加到合并候选列表时,合并候选列表所包括的合并候选的数量还是小于最大数量,则可以将长期运动信息列表hmvpltcandlist中包括的帧间合并候选添加到合并候选列表。
[0300]
表2示出了将在长期运动信息列表中包括的帧间合并候选添加到合并候选列表的过程。
[0301]
【表2】
[0302][0303]
可以将帧间合并候选设置为除了运动信息以外还包括附加信息。例如,可以在帧间合并候选中添加存储块的大小、形状或块的划分信息。在构造当前块的合并候选列表时,在帧间合并候选中仅使用大小、形状或划分信息与当前块相同或类似的帧间合并候选,或者可以将大小、形状或划分信息与当前块相同或类似的帧间合并候选优先添加到合并候选列表。
[0304]
可替代地,可以针对不同的块大小、形状或划分信息生成帧间运动信息列表。可以使用多个帧间运动信息列表中与当前块的形状、大小或划分信息相对应的帧间运动信息列表来生成当前块的合并候选列表。
[0305]
当前块的合并候选列表所包括的合并候选的数量小于阈值时,可以将帧间运动信息列表中包括的帧间合并候选添加到合并候选列表。所述添加过程按索引的升序或降序执行。例如,可以将索引最大的帧间合并候选中添加到合并候选列表。
[0306]
在要将帧间运动信息列表中包括的帧间合并候选添加到合并候选列表时,可以执行帧间合并候选与已存储于合并候选列表的多个合并候选之间的冗余检查。
[0307]
例如,表3示出了将帧间合并候选添加到合并候选列表的过程。
[0308]
【表3】
[0309][0310]
还可以仅对帧间运动信息列表所包括的帧间合并候选中的一些执行冗余检查。例如,可仅对索引为阈值以上或阈值以下的帧间合并候选执行冗余检查。可替代地,可仅对索引最大的n个合并候选或索引最小的n个合并候选执行冗余检查。
[0311]
可替代地,可仅对合并候选列表中已存储的合并候选中的一些执行冗余检查。例如,可仅对索引为阈值以上或阈值以下的合并候选或从特定位置的块中导出的合并候选执
行冗余检查。其中,特定位置可以包括当前块的左相邻块、上相邻块、右上相邻块或左下相邻块中的至少一个。
[0312]
图26是示出仅对一些合并候选执行冗余检查的示例的图。
[0313]
在要将帧间合并候选hmvpcand[j]添加到合并候选列表时,可以执行帧间合并候选与索引为最大的2个合并候选mergecandlist[nummerge

2]和mergecandlist[nummerge

1]之间的冗余检查。其中,nummerge可以表示可用的空间合并候选及时间合并候选的数量。
[0314]
与图中所示的示例不同的是,在要将帧间合并候选hmvpcand[j]添加到合并候选列表时,还可以执行帧间合并候选与索引为最小的2个合并候选之间的冗余检查。例如,可确认mergecandlist[0]及mergecandlist[1]是否与hmvpcand[j]相同。可替代地,可以仅对从特定位置导出的合并候选执行冗余检查。例如,可以仅对从位于当前块左侧的相邻块导出的合并候选或从位于当前块上方的相邻块导出的合并候选中的至少一个执行冗余检查。当合并候选列表中不存在从特定位置导出的合并候选时,可以在不进行冗余检查的情况下将帧间合并候选添加到合并候选列表。
[0315]
在发现与第一帧间合并候选相同的合并候选的情况下,在对第二帧间合并候选执行冗余检查时,可省略与所述第一帧间合并候选相同的合并候选的冗余检查。
[0316]
图27是示出省略对特定合并候选的冗余检查的示例的图。
[0317]
在要将索引为i的帧间合并候选hmvpcand[i]添加到合并候选列表时,可执行所述帧间合并候选与合并候选列表中已存储的合并候选之间的冗余检查。在这种情况下,在发现与帧间合并候选hmvpcand[i]相同的合并候选mergecandlist[j]的情况下,帧间合并候选hmvpcand[i]将不添加到合并候选列表,并且可执行索引为i

1的帧间合并候选hmvpcand[i

1]与合并候选之间的冗余检查。在这种情况下,可省略帧间合并候选hmvpcand[i

1]与合并候选mergecandlist[j]之间的冗余检查。
[0318]
例如,在图27所示的示例中,确定hmvpcand[i]与mergecandlist[2]相同。由此,hmvpcand[i]不添加到合并候选列表,可以对hmvpcand[i

1]执行冗余检查。在这种情况下,可省略hvmpcand[i

1]与mergecandlist[2]之间的冗余检查。
[0319]
当前块的合并候选列表所包括的合并候选的数量小于阈值时,除了帧间合并候选以外,还可以包括成对(pairwise)合并候选或零合并候选中的至少一个。成对合并候选是指将两个以上合并候选的运动矢量的平均值作为运动矢量的合并候选,零合并候选是指运动矢量为0的合并候选。
[0320]
当前块的合并候选列表可按以下顺序添加合并候选。
[0321]
空间合并候选

时间合并候选

帧间合并候选

(帧间仿射合并候选)

成对合并候选

零合并候选。
[0322]
空间合并候选是指从相邻块或非相邻块中的至少一个导出的合并候选,时间合并候选是指从之前参考图像导出的合并候选。帧间仿射合并候选列表示从以仿射运动模型进行编码/解码的块中导出的帧间合并候选。
[0323]
帧间运动信息列表也可以在高级运动矢量预测模式下使用。例如,当前块的运动矢量预测候选列表所包括的运动矢量预测候选的数量小于阈值时,将帧间运动信息列表中包括的帧间合并候选设置为与当前块相关的运动矢量预测候选。具体地,将帧间合并候选的运动矢量设置为运动矢量预测候选。
[0324]
若选择当前块的运动矢量预测候选列表所包括的运动矢量预测候选中的任一个,则将选择的候选设置为当前块的运动矢量预测值。之后,对当前块的运动矢量残差值进行解码之后,可以通过将运动矢量预测值和运动矢量残差值相加来获得当前块的运动矢量。
[0325]
当前块的运动矢量预测候选列表可按以下顺序构造。
[0326]
空间运动矢量预测候选

时间运动矢量预测候选

帧间解码区域合并候选

(帧间解码区域仿射合并候选)

零运动矢量预测候选。
[0327]
空间运动矢量预测候选是指从相邻块或非相邻块中的至少一个导出的运动矢量预测候选,时间运动矢量预测候选是指从之前参考图像中导出的运动矢量预测候选。帧间仿射合并候选列表示从以仿射运动模型进行编码/解码的块中导出的帧间运动矢量预测候选。零运动矢量预测候选表示运动矢量的值为0的候选。
[0328]
当选择当前块的合并候选时,所选合并候选的运动矢量被设置为初始运动矢量,并且可以使用通过将初始运动矢量加上或减去偏移矢量导出的运动矢量来执行当前块的运动补偿预测。通过将合并候选的运动矢量加上或减去偏移矢量来导出新的运动矢量可以被定义为合并运动差值编码方法。
[0329]
可以通过码流用信号发送指示是否使用合并偏移编码方法的信息。所述信息可以是1位的标志merge_offset_vector_flag。例如,merge_offset_vector_flag的值为1指示将合并运动差值编码方法应用于当前块。当将合并运动差值编码方法应用于当前块时,可以通过将合并候选的运动矢量加上或减去偏移矢量来导出当前块的运动矢量。merge_offset_vector_flag的值为0指示未将合并运动差值编码方法应用于当前块。当未应用合并偏移编码方法时,可以将合并候选的运动矢量设置为当前块的运动矢量。
[0330]
所述标志仅当指示是否应用跳过模式的跳过标志的值为真或指示是否应用合并模式的合并标志的值为真时才可以用信号发送。例如,当指示是否将跳过模式应用于当前块的skip_flag的值是1时,或者当指示是否将合并模式应用于当前块的merge_flag的值是1时,可以对merge_offset_vector_flag进行编码并用信号发送。
[0331]
当确定将合并偏移编码方法应用于当前块时,可以另外用信号发送指定合并候选列表中包括的合并候选中的任何一个的信息、指示偏移矢量的大小的信息、以及指示偏移矢量的方向的信息中的至少一项。
[0332]
可以通过码流来用信号发送用于确定合并候选列表可以包括的合并候选的最大数量的信息。例如,可以将合并候选列表可以包括的合并候选的最大数量设置为6或更小的整数。
[0333]
当确定将合并偏移编码方法应用于当前块时,仅预设的最大数量的合并候选可以被设置为当前块的初始运动矢量。即,取决于是否应用合并偏移编码方法,可以自适应地确定当前块可以使用的合并候选的数量。例如,当merge_offset_vector_flag的值设置为0时,当前块可以使用的合并候选的最大数量可以设置为m,而当merge_offset_vector_flag的值设置为1时,当前块可以使用的合并候选的最大数量可以设置为n。在此,m表示合并候选列表中可以包括的合并候选的最大数量,并且n表示等于或小于m的整数。
[0334]
例如,当m为6并且n为2时,可以将合并候选列表中包括的合并候选中具有最小索引的两个合并候选设置为可用于当前块。因此,可以将索引值为0的合并候选的运动矢量或索引值为1的合并候选的运动矢量设置为当前块的初始运动矢量。当m和n相同时(例如,当m
和n为2时),可以将合并候选列表中包括的所有合并候选设置为可用于当前块。
[0335]
可替代地,可以基于是否将合并运动差值编码方法应用于当前块来确定是否可以将相邻块用作合并候选。例如,当merge_offset_vector_flag的值为1时,与当前块的右上角相邻的相邻块、与左上角相邻的相邻块、以及与左下角相邻的相邻块中的至少一个可以被设置为不可用作合并候选。因此,当将合并运动差值编码方法应用于当前块时,与当前块的右上角相邻的相邻块、与左上角相邻的相邻块、以及与左下角相邻的相邻块中的至少一个的运动矢量不能被设置为初始运动矢量。可替代地,当merge_offset_vector_flag的值是1时,当前块的时间相邻块可以被设置为不可用作为合并候选。
[0336]
当将合并运动差值编码方法应用于当前块时,可以设置为不使用成对合并候选和零合并候选中的至少一个。因此,当merge_offset_vector_flag的值是1时,尽管合并候选列表中包括的合并候选的数量小于最大数量,也可能不会将成对合并候选或零合并候选中的至少一个添加到合并候选列表。
[0337]
合并候选的运动矢量可以被设置为当前块的初始运动矢量。在这种情况下,当当前块可以使用的合并候选的数量为多个时,可以通过码流用信号发送指定多个合并候选中的任何一个的信息。例如,当合并候选列表可以包括的合并候选的最大数量大于1时,可以通过码流用信号发送指示多个合并候选中的任何一个的信息merge_idx。即,在合并偏移编码方法下,可以通过用于指定多个合并候选中的任何一个的信息merge_idx来指定合并候选。当前块的初始运动矢量可以被设置为由merge_idx指示的合并候选的运动矢量。
[0338]
另一方面,当当前块可以使用的合并候选的数量为1时,可以省略用信号发送用于指定合并候选的信息。例如,当合并候选列表可以包括的合并候选的最大数量不大于1时,可以省略用信号发送用于指定合并候选的信息merge_idx。即,在合并偏移编码方法下,当在合并候选列表中包括一个合并候选时,可以省略对用于指定合并候选的信息merge_idx的编码,并且可以基于合并候选列表中包括的合并候选来确定初始运动矢量。合并候选的运动矢量可以被设置为当前块的初始运动矢量。
[0339]
作为另一示例,在确定当前块的合并候选之后,可以确定是否将合并运动差值编码方法应用于当前块。例如,当合并候选列表可以包括的合并候选的最大数量大于1时,可以用信号发送用于指定合并候选中的任何一个的信息merge_idx。在基于merge_idx选择合并候选之后,可以对指示是否将合并运动差值编码方法应用于当前块的merge_offset_vector_flag进行解码。表4是示出根据上述实施例的语法表的图。
[0340]
【表4】
[0341][0342][0343]
作为另一示例,在确定当前块的合并候选之后,仅当所确定的合并候选的索引小于在应用合并运动差值编码方法时可以使用的合并候选的最大数量时,才可以确定是否将合并运动差值编码方法应用于当前块。例如,仅当索引信息merge_idx的值小于n时,才可以对指示是否对当前块应用合并运动差值编码方法的merge_offset_vector_flag进行编码并用信号发送。当索引信息merge_idx的值等于或大于n时,可以省略对merge_offset_vector_flag的编码。如果省略了对merge_offset_vector_flag编码,则可以确定未将合并运动差值编码方法应用于当前块。
[0344]
可替代地,在确定当前块的合并候选之后,可以考虑所确定的合并候选具有双向运动信息还是单向运动信息来确定是否将合并运动差值编码方法应用于当前块。例如,仅当索引信息merge_idx的值小于n并且由索引信息选择的合并候选具有双向运动信息时,才对表示是否将合并运动差值编码方法应用于当前块的merge_offset_vector_flag进行编码并用信号发送。可选地,仅当索引信息merge_idx的值小于n并且由索引信息选择的合并候选具有单向运动信息时,才对表示是否将合并运动差值编码方法应用于当前块的merge_offset_vector_flag进行编码并用信号发送。
[0345]
可替代地,可以基于当前块的大小、当前块的形状、以及当前块是否与编码树单元的边界接触中的至少一项来确定是否应用合并运动差值编码方法。当当前块的大小、当前块的形状、以及当前块是否与编码树单元的边界接触中的至少一项不满足预设条件时,可以省略对指示是否将合并运动差值编码方法应用于当前块的merge_offset_vector_flag的编码。
[0346]
当选择合并候选时,可以将合并候选的运动矢量设置为当前块的初始运动矢量。然后,可以对指示偏移矢量的大小的信息和指示偏移矢量的方向的信息进行解码以确定偏移矢量。偏移矢量可以具有水平方向分量或垂直方向分量。
[0347]
指示偏移矢量的大小的信息可以是指示运动偏移大小候选中的任何一个的索引信息。例如,可以通过码流用信号发送指示运动偏移大小候选中的任何一个的索引信息distance_idx。表5示出了索引信息distance_idx的二值化以及用于根据distance_idx确定偏移矢量的大小的变量distfrommergemv的值。
[0348]
【表5】
[0349][0350]
可以通过将变量distfrommergemv除以预设值来导出偏移矢量的大小。等式5示出了确定偏移矢量的大小的示例。
[0351]
【等式5】
[0352]
abs(offsetmv)=distfrommergemv<<2
[0353]
根据等式5,可以将通过将变量distfrommegemv除以4而获得的值或通过将变量distfrommergemv向左移位2而获得的值设置为偏移矢量的大小。
[0354]
可以使用与表5所示的示例相比更多的运动偏移大小候选或更少的运动偏移大小候选,或者可以将运动矢量偏移大小候选的数量值设置为与表5所示的示例不同。例如,可以将偏移矢量的水平方向分量或垂直方向分量的大小设置为不大于2个样本距离。表6示出了索引信息distance_idx的二值化以及用于根据distance_idx确定偏移矢量的大小的变量distfrommergemv的值。
[0355]
【表6】
[0356][0357]
可替代地,可以基于运动矢量精度来不同地设置运动矢量偏移大小候选的数量值。例如,当当前块的运动矢量精度为分数像素(fractional

pel)时,可以将与索引信息distance_idx的值相对应的变量distfrommergemv的值设置为1、2、4、8、16等。在此,分数像素包括1/16像素、八分之一像素、四分之一像素或半像素中的至少一个。另一方面,当当前块的运动矢量精度是整数像素时,可以将与索引信息distance_idx的值相对应的变量distfrommergemv的值设置为4、8、16、32、64等。即,可以根据当前块的运动矢量精度不同地设置被用来确定变量distfrommergemv的表。
[0358]
例如,当当前块或合并候选的运动矢量精度是四分之一像素时,可以使用表5导出由distance_idx表示的变量distfrommergemv。另一方面,当当前块或合并候选的运动矢量精度是整数像素时,可以通过将表5中distance_idx指示的变量distfrommergemv的值取n倍(例如4倍)而导出的值作为变量distfrommergemv的值。
[0359]
可以通过码流用信号发送用于确定运动矢量精度的信息。例如,可以在序列级、图像级、条带(slice)级或块级用信号发送信息。因此,可以根据通过码流用信号发送的与运动矢量精度有关的信息来不同地设置运动偏移大小候选的数量值。可替代地,可以基于当前块的合并候选来确定运动矢量精度。例如,可以将当前块的运动矢量精度设置为与合并候选的运动矢量精度相同。
[0360]
可替代地,可以通过码流用信号发送用于确定偏移矢量的搜索范围的信息。可以基于搜索范围来确定运动偏移大小候选的数量、运动偏移大小候选中的最小值、以及运动偏移大小候选中的最大值中的至少一个。例如,可以通过码流来用信号发送用于确定偏移矢量的搜索范围的标志merge_offset_vector_flag。所述信息可以通过序列报头、图像报头或条带头来用信号发送。
[0361]
例如,当merge_offset_extend_range_flag的值为0时,可以将偏移矢量的大小设置为不超过2。因此,distfrommergemv的最大值可以设置为8。另一方面,当merge_offset_extend_range_flag的值是1时,可以将偏移矢量的大小设置为不超过32个样本距离。因此,distfrommergemv的最大值可以设置为128。
[0362]
可以使用指示偏移矢量的大小是否大于阈值的标志来确定偏移矢量的大小。例如,可以通过码流用信号发送指示偏移矢量的大小是否大于阈值的标志distance_flag。阈值可以是1、2、4、8或16。例如,distance_flag为1指示偏移矢量的大小大于4。另一方面,distance_flag为0指示偏移矢量的大小为4或更小。
[0363]
当偏移矢量的大小大于阈值时,可以使用索引信息distance_idx来导出偏移矢量的大小与阈值之间的差值。可替代地,当偏移矢量的大小小于或等于阈值时,可以通过使用索引信息distance_idx来确定偏移矢量的大小。表7是示出了对distance_flag和distance_idx进行编码的过程的语法表。
[0364]
【表7】
[0365][0366][0367]
等式6示出了使用distance_flag和distance_idx导出用于确定偏移矢量的大小的变量distfrommergemv的示例。
[0368]
【等式6】
[0369]
distfrommergemv=n*distance_flag+(1<<distance_idx)
[0370]
在等式6中,distance_flag的值可以设置为1或0。distance_idx的值可以设置为1、2、4、8、16、32、64、128等。n表示由阈值确定的系数。例如,当阈值是4时,n可以设置为16。
[0371]
指示偏移矢量的方向的信息可以是指示矢量方向候选中的任何一个的索引信息。例如,可以通过码流用信号发送指示矢量方向候选中的任何一个的索引信息direction_idx。表8示出了索引信息direction_idx的二值化以及根据direction_idx的偏移矢量的方向。
[0372]
【表8】
[0373]
direction_idx[x][y]二值化sign[x][y][0]sign[x][y][1]000+10101

102100+13110
‑1[0374]
在表8中,sign[0]指示水平方向,并且sign[1]指示垂直方向。+1指示偏移矢量的x分量或y分量的值为正(+),并且

1指示偏移矢量的x分量或y分量的值为负(

)。等式7示出了基于偏移矢量的大小和方向来确定偏移矢量的示例。
[0375]
【等式7】
[0376]
offsetmv[0]=abs(offsetmv)*sign[0]
[0377]
offsetmv[1]=abs(offsetmv)*sign[1]
[0378]
在等式7中,offsetmv[0]指示偏移矢量的垂直方向分量,并且offsetmv[1]指示偏移矢量的水平方向分量。
[0379]
图28是示出根据指示偏移矢量的大小的distance_idx和指示偏移矢量的方向的direction_idx的值的偏移矢量的图。
[0380]
如在图28所示的示例中,可以根据distance_idx和direction_idx的值确定偏移矢量的大小和方向。偏移矢量的最大大小可以被设置为不超过阈值。在此,阈值可以具有由编码器和解码器预定义的值。例如,阈值可以是32个样本距离。可替代地,可以根据初始运动矢量的大小来确定阈值。例如,可以基于初始运动矢量的水平分量的大小设置水平方向的阈值,并且可以基于初始运动矢量的垂直分量的大小设置垂直方向的阈值。
[0381]
当合并候选具有双向运动信息时,可以将合并候选的l0运动矢量设置为当前块的l0初始运动矢量,并且可以将合并候选的l1运动矢量设置为当前块的l1初始运动矢量。在这种情况下,可以考虑到合并候选的l0参考图像与当前图像之间的输出顺序差值(以下称为l0差值)和合并候选的l1参考图像与当前图像之间的输出顺序差值(以下称为l1差值)来确定l0偏移矢量和l1偏移矢量。
[0382]
首先,当l0差值和l1差值的符号相同时,可以将l0偏移矢量和l1偏移矢量设置为相同。另一方面,当l0差值和l1差值的符号不同时,可以在与l0偏移矢量相反的方向上设置l1偏移矢量。
[0383]
l0偏移矢量的大小和l1偏移矢量的大小可以设置为相同。可替代地,可以通过基于l0差值和l1差值缩放l0偏移矢量来确定l1偏移矢量的大小。
[0384]
例如,等式8示出当l0差值和l1差值的符号相同时的l0偏移矢量和l1偏移矢量。
[0385]
【等式8】
[0386]
offsetmvl0[0]=abs(offsetmv)*sign[0]
[0387]
offsetmvl0[1]=abs(offgetmv)*sign[1]
[0388]
offsetmvl1[0]=abs(offsetmv)*sign[0]
[0389]
offsetmvl1[1]=abs(offsetmv)*sign[1]
[0390]
在等式8中,offsetmvl0[0]指示l0偏移矢量的水平方向分量,并且offsetmvl0[1]指示l0偏移矢量的垂直方向分量。offsetmvl1[0]指示l1偏移矢量的水平方向分量,并且offsetmvl1[1]指示l1偏移矢量的垂直方向分量。
[0391]
等式9示出了当l0差值和l1差值的符号不同时的l0偏移矢量和l1偏移矢量。
[0392]
【等式9】
[0393]
offsetmvl0[0]=abs(offsetmv)*sign[0]
[0394]
offsetmvl0[1]=abs(offsetmv)*sign[1]
[0395]
offsetmvl1[0]=

1*abs(offsetmv)*sign[0]
[0396]
offsetmvl1[1]=

1*abs(offsetmv)*sign[1]
[0397]
也可以定义多于四个的矢量方向候选。表9和表10示出了定义八个矢量方向候选的示例。
[0398]
【表9】
[0399]
direction_idx[x][y]二值化sign[x][y][0]sign[x][y][1]0000+101001

1020100+130110

14100+1+15101+1

16110

1+17111
‑1‑1[0400]
【表10】
[0401][0402][0403]
在表9和表10中,sign[0]和sign[1]的绝对值大于0指示偏移矢量在对角线方向上。当使用表9时,对角线偏移矢量的x轴分量和y轴分量的大小设置为abs(offsetmv),而当使用表10时,对角线偏移矢量的x轴分量和y轴分量的大小设置为abs(offsetmv/2)。
[0404]
图29是示出根据指示偏移矢量的大小的distance_idx和指示偏移矢量的方向的direction_idx的值的偏移矢量的图。
[0405]
图29(a)是应用表9时的示例,并且图29(b)是应用表10时的示例。
[0406]
可以通过码流用信号发送用于确定矢量方向候选的数量或大小中的至少一个的
信息。例如,可以通过码流用信号发送用于确定矢量方向候选的标志merge_offset_direction_range_flag。可以在序列级、图像级或条带级用信号发送标志。例如,当标志的值为0时,可以使用表8所示例的四个矢量方向候选。另一方面,当标志的值为1时,可以使用表9或表10所示例的八个矢量方向候选。
[0407]
可替代地,可以基于偏移矢量的大小来确定矢量方向候选的数量或大小中的至少一个。例如,当用于确定偏移矢量的大小的变量distfrommergemv的值等于或小于阈值时,可以使用表9或表10所示例的八个矢量方向候选。另一方面,当变量distfrommergemv的值大于阈值时,可以使用表8所示例的四个矢量方向候选。
[0408]
可替代地,可以基于初始运动矢量的x分量的值mvx和y分量的值mvy确定矢量方向候选的数量或大小中的至少一个。例如,当mvx与mvy之差或差的绝对值小于或等于阈值时,可以使用表9或表10所示例的八个矢量方向候选。另一方面,当mvx和mvy之差或差的绝对值大于阈值时,可以使用表8所示例的四个矢量方向候选。
[0409]
可以通过将偏移矢量加上初始运动矢量来导出当前块的运动矢量。等式10示出了确定当前块的运动矢量的示例。
[0410]
【等式10】
[0411]
mvl0[0]=mergemvl0[0]+offsetmvl0[0]
[0412]
mvl0[1]=mergemvl0[1]+offsetmvl0[1]
[0413]
mvl1[0]=mergemvl1[0]+offstmvl1[0]
[0414]
mvl1[1]=mergemvl1[1]+offsetmvl1[1]
[0415]
在等式10中,mvl0指示当前块的l0运动矢量,并且mvl1指示当前块的l1运动矢量。mergemvl0指示当前块的l0初始运动矢量(即,合并候选的l0运动矢量),并且mergemvl1表示当前块的l1初始运动矢量。[0]指示运动矢量的水平方向分量,并且[1]指示运动矢量的垂直方向分量。
[0416]
即使在将编码块划分为多个子单元之后对每个子单元执行帧间预测时,也可以应用合并运动差值编码方法。在此,以子单元为单位执行帧间预测可以包括高级时间运动矢量预测(atmvp)、空时运动矢量预测(stmvp)和三角形划分技术中的至少一种。
[0417]
例如,在atmvp方法下,可以如下导出初始运动矢量。
[0418]
首先,可以使用从与编码块相邻的相邻块导出的合并候选的运动矢量来导出初始移位矢量。另外,可以使用初始移位矢量来导出编码块中包括的子块的移位块。等式11示出了移位块的位置。
[0419]
【等式11】
[0420]
(xcolsb,ycolsb)=(xsb+shvector[0]>>4,ysb+shvector[1]>>4)
[0421]
在等式11中,(xcolsb,ycolsb)表示移位块的左上样本的位置,并且(xsb,ysb)表示子块的左上样本的位置。shvector表示移位矢量。
[0422]
当确定移位块时,可以将与同位图像中的移位块位于相同位置的同位块的运动矢量设置为子块的运动矢量。即,可以将包括在同位块中的(xcolsb,ycolsb)位置的样本的同位块的运动矢量设置为包括在(xsb,ysb)位置的样本的子块的运动矢量。
[0423]
当应用三角形划分技术时,可以将编码块划分为三角形子单元。例如,可以通过连接编码块的左上角和右下角的对角线或连接编码块的右上角和左下角的对角线将编码块
分成两个子单元。
[0424]
图30是示出当应用三角划分技术时编码块的划分模式的图。
[0425]
每个三角形子单元的运动信息可以由合并候选指定。为此,可以针对每个子单元用信号发送指示合并候选中的任何一个的索引信息。例如,第一子单元的索引信息merge_1st_idx可以指定第一子单元的合并候选,并且第二子单元的索引信息merge_2nd_idx可以指定第二子单元的合并候选。
[0426]
可以单独地确定每个子单元的初始运动矢量。例如,当将仿射运动模型应用于编码块时,可以将从编码块的仿射种子矢量导出的子块的仿射矢量设置为子块的初始运动矢量。可以通过将初始运动矢量加上或减去偏移矢量来导出每个子块的运动矢量。
[0427]
当将合并运动差值编码方法应用于被划分为多个子单元的编码块时,可以将多个子单元设置为使用相同的偏移矢量。即,可以使用相同的偏移矢量来更改多个子单元中的每个子单元的初始运动矢量。
[0428]
可替代地,可以将编码块划分为多个子单元,并且可以单独地确定每个子单元的偏移矢量。因此,可以将至少一个子单元的偏移矢量设置为与另一子单元的偏移矢量不同。
[0429]
图31是示出不同地设置每个子单元的偏移矢量的示例的图。
[0430]
如在图31中所示的示例中,可以针对每个子单元对指示偏移矢量的大小的信息distance_idx和指示偏移矢量的方向的direction_idx进行编码并用信号发送。
[0431]
可替代地,可以将所有子单元的偏移矢量的大小设置为相同,并且可以对这些子单元单独地设置偏移矢量的方向。例如,可以设置为在子单元之间共享以编码级用信号发送的distance_idx的值,并且可以针对每个子单元对direction_idx进行编码并用信号发送。
[0432]
可替代地,可以将所有子单元的偏移矢量的方向设置为相同,并且可以对这些子单元单独地设置偏移矢量的大小。例如,可以设置为在子单元之间共享以编码级用信号发送的direction_idx的值,并且可以针对每个子单元对distance_idx进行编码并用信号发送。
[0433]
合并运动差值编码方法可以仅应用于通过划分编码块而生成的多个子单元中的一些子单元。例如,当当前块被划分为第一子单元和第二子单元时,第一子单元的运动矢量可以被设置为与合并候选的运动矢量相同,并且第二子单元的运动矢量可以通过将偏移矢量加上合并候选的运动矢量来导出。
[0434]
代替用信号发送用于确定偏移矢量的信息,解码器可以导出偏移矢量。具体地,可以使用子块中包括的预测样本的水平方向梯度的平均值和垂直方向梯度的平均值来导出偏移矢量。
[0435]
在此,可以基于与参考图像中的预测样本相对应的重建样本和与该重建样本相邻的相邻样本之间的差来导出梯度。例如,水平方向梯度可以指示重建样本与邻近左侧和/或右侧的重建样本之间的差异,并且垂直方向梯度可以指示重建样本与邻近上侧和/或下侧的重建样本之间的差异。
[0436]
在合并候选列表中包括的合并候选中,可以将具有通过将合并候选列表中包括的合并候选中的参考合并候选的运动矢量加上或减去偏移矢量而导出的运动矢量的合并候选添加到合并候选列表。具有通过将参考合并候选的运动矢量加上或减去偏移矢量而导出
的运动矢量的合并候选可以被称为精细合并候选。
[0437]
可以将除精细合并候选的运动矢量之外的其余运动信息设置为与参考合并候选的运动信息相同。
[0438]
图32是示出精细合并候选可以采用的运动矢量候选的图。
[0439]
当参考合并候选的运动矢量是(mvlx[0],mvlx[1])时,可以通过将参考合并候选的运动矢量的x分量或y分量中的至少一个加上或减去偏移量来导出精细合并候选的运动矢量。例如,精细合并候选的运动矢量可以被设置为(mvlx[0]+m,mvlx[1])、(mvlx[0]

m,mvlx[1])、(mvlx[0],mvlx[1]+m)或(mvlx[0],mvlx[1]

m)。m表示偏移矢量的大小。
[0440]
参考合并候选可以是在合并候选列表中具有预定义索引值的合并候选。例如,可以将合并候选列表中包括的合并候选中具有最小索引值的合并候选(即,具有索引值0的合并候选)或具有最大索引值的合并候选设置为参考合并候选。可替代地,可以将帧间运动信息列表中具有最小索引值的帧间合并候选或具有最大索引值的帧间合并候选设置为参考合并候选。
[0441]
可替代地,可以将具有双向运动信息的合并候选中具有最小索引值的合并候选设置为参考合并候选。即,当顺序地搜索候选块时,可以将首先找到的双向合并候选设置为参考合并候选。
[0442]
可以基于当前块的大小、当前块的形状、或者当前块是否与编码树单元的边界接触来选择基本合并候选。例如,当当前块是正方形形状或当前块是高度大于宽度的非正方形形状时,可以将索引为0的合并候选或从位于当前块上方的相邻块导出的合并候选设置为参考合并候选。当当前块是宽度大于高度的非正方形形状时,可以将索引为1的合并候选或从位于当前块左侧的相邻块导出的合并候选设置为参考合并候选。
[0443]
可替代地,可以通过码流用信号发送指定参考合并候选的信息。所述信息可以是指定合并候选列表中包括的合并候选中的任何一个的索引信息。
[0444]
可以通过码流用信号发送指示是否使用精细合并候选的信息。所述信息可以是1比特标志。当标志的值是1时,可以将基于参考合并候选生成的精细合并候选添加到合并候选列表。另一方面,当标志的值为0时,合并候选列表可能不包括精细合并候选。
[0445]
可替代地,当已添加到合并候选列表的合并候选的数量小于合并候选列表可以包括的合并候选的最大数量时,可以将精细合并候选添加到合并候选列表。在此,已添加的合并候选可以包括空间合并候选、时间合并候选、帧间合并候选或成对合并候选中的至少一个。例如,当合并候选列表中包括的空间合并候选、时间合并候选和帧间合并候选中的至少一个的数量小于或等于阈值时,可以将精细合并候选添加到合并候选列表。
[0446]
可替代地,当已添加到合并候选列表的合并候选的数量大于或等于阈值时,可以使用精细合并候选。
[0447]
可以根据是否使用精细合并候选来不同地设置合并候选列表中可以包括的合并候选的最大数量。例如,当设置为不使用精细合并候选时,合并候选列表可以包括的合并候选的最大数量可以被设置为n,而当设置为使用精细合并候选时,合并候选列表可以包括的合并候选的最大数量可以设置为n+n。
[0448]
精细合并候选的索引可以大于已添加到合并候选列表的合并候选的索引。例如,表11示出了配置合并候选列表的示例。
[0449]
【表11】
[0450]
mergecand[0]mergecand[1]mergecand[2]mergecand[3]mergecand[4]mergecand[5]mergecand[6]:精细合并候选,其运动矢量为(mvlx[0]+m,mvlx[1])mergecand[7]:精细合并候选,其运动矢量为(mvlx[0]

m,mvlx[1])mergecand[8]:精细合并候选,其运动矢量为(mvlx[0],mvlx[1]+m)mergecand[9]:精细合并候选,其运动矢量为(mvlx[0],mvlx[1]

m)
[0451]
在表11中,mergecand[x]表示索引为x的合并候选。mvlx[0]表示参考合并候选的x分量运动矢量,并且mvlx[1]表示参考合并候选的y分量运动矢量。例如,当参考合并候选是mergecand[0]时,mvlx[0]和mvlx[1]可以表示mergecand[0]的运动矢量。
[0452]
偏移矢量的大小m可以在编码器和解码器中预定义。例如,偏移矢量的大小m可以被设置为小于或等于4的整数,诸如1或4。
[0453]
可替代地,可以通过码流用信号发送用于确定偏移矢量的信息。所述信息可以在序列级、图像级、条带级或块级用信号发送。例如,可以如上所述使用用于确定偏移矢量的大小的信息distance_idx或用于确定偏移矢量的方向的信息direction_idx中的至少一个来确定偏移矢量。
[0454]
如表11所示的示例中,可以将基于参考合并候选导出的至少一个精细合并候选添加到合并候选列表。如果在已添加的合并候选中存在具有与精细合并候选的运动信息相同的运动信息的合并候选,则精细合并候选可以不被添加到合并候选列表。例如,当基于参考合并候选mergecand[0]导出的精细合并候选与mergecand[1]至mergecand[5]中的任何一个相同时,精细合并候选可以不被添加到合并候选列表。
[0455]
可替代地,当存在具有与精细合并候选的运动信息相同的运动信息的合并候选时,可以通过改变偏移矢量来重新导出精细合并候选,或者可以将具有与精细合并候选的运动信息相同的运动信息的合并候选重新设置为精细合并候选。例如,如果基于参考合并候选mergecand[0]导出的精细合并候选mergecand[6]的运动信息与合并候选mergecand[2]的运动信息相同,则可以将精细合并候选mergecand[6]的运动矢量更改为通过将合并候选[2]的运动矢量加上或减去偏移矢量而获得的值。例如,可以将mergecand[6]的运动矢量从(mergecand[0]_mxlx[0]+m,mergecand[0]_mvlx[1])更改为(mergecand[2]_mxlx[0]+m,mergecand[2]_mvlx[1])。在此,mergecand[x]_mvlx表示索引为x的合并候选的运动矢量。
[0456]
作为另一示例,可以使用包括至少一个合并偏移候选的合并细化偏移列表来确定偏移矢量。当由当前块的索引信息指定的合并候选是参考合并候选时,可以使用合并细化偏移列表来确定偏移矢量。另外,可以通过将合并候选的运动矢量加上或减去偏移矢量来导出当前块的运动矢量。参考合并候选可以是在合并候选列表中具有预定义索引值的合并候选。例如,可以将合并候选列表中包括的合并候选中具有最小索引值的合并候选(即,具
有索引值0的合并候选)或具有最大索引值的合并候选设置为参考合并候选。可替代地,可以将帧间运动信息列表中具有最小索引值的帧间合并候选或具有最大索引值的帧间合并候选设置为参考合并候选。
[0457]
图33是示出合并细化偏移列表的配置的图。
[0458]
在图33中,假设参考合并候选是索引为6的合并候选。
[0459]
如果由指示合并候选中的任何一个的merge_idx指定的合并候选的索引不是6,则可以将合并候选的运动矢量设置为当前块的运动矢量。
[0460]
另一方面,当由索引信息merge_idx指定的合并候选的索引是6时,可以使用合并细化偏移列表来导出偏移矢量。可以通过码流用信号发送指定合并细化偏移列表中包括的合并偏移候选中任何一个的索引信息mrgoffset_idx。
[0461]
当指定了偏移矢量时,可以通过将参考合并候选的运动矢量加上或减去偏移矢量来导出当前块的运动矢量。
[0462]
合并细化偏移量列表可以包括至少一个合并偏移候选。例如,合并细化偏移列表中包括的合并偏移候选的数量可以是4、8或16。
[0463]
图34和图35是示出由合并偏移候选指定的偏移矢量的图。
[0464]
图34图示了合并偏移候选的数量是8的示例,并且图35图示了合并偏移候选的数量是16的示例。
[0465]
如在图34的(a)中所示的示例中,可以将由合并偏移候选表示的偏移矢量设置为使得水平方向上的运动矢量的绝对值和/或垂直方向上的运动矢量的绝对值可以具有固定值。可替代地,如图35所示的示例中,可以将由合并偏移候选中索引小于阈值的合并偏移候选表示的偏移矢量设置为水平方向上的运动矢量的绝对值和/或垂直方向上的运动矢量的绝对值可以具有第一值,并且可以将由其他合并偏移候选指示的偏移矢量设置为使得水平方向上的运动矢量的绝对值和/或垂直方向上的运动矢量的绝对值可以具有第二值。
[0466]
可替代地,如图34的(b)所示,可以将由合并偏移量候选表示的偏移矢量设置为使得水平方向上的运动矢量的绝对值和垂直方向上的运动矢量的绝对值之和可以具有固定值。
[0467]
可以设置多个参考合并候选。例如,在合并候选列表中包括的合并候选中,具有最小索引的两个合并候选可以被设置为参考合并候选。因此,当由索引信息merge_idx指定的合并候选的索引为0或1时,可以使用合并细化偏移列表来导出偏移矢量。可替代地,可以将合并候选列表中包括的合并候选中具有最小索引的合并候选和在帧间合并候选列表中包括的合并候选中具有最大索引的合并候选设置为参考合并候选。
[0468]
在高级运动矢量预测模式中,可以通过将运动差矢量加上运动预测矢量来导出当前块的运动矢量。可以基于包括至少一个运动预测矢量候选的运动矢量预测候选列表来确定当前块的运动预测矢量。例如,可以将运动预测矢量候选中的任何一个设置为当前块的运动预测矢量。
[0469]
可以基于当前块的空间相邻块或当前块的时间相邻块中的至少一个来导出运动矢量预测候选。
[0470]
图36是示出用于导出运动矢量预测候选的候选块的图。
[0471]
空间相邻块可以包括位于当前块上方的上相邻块和位于当前块左侧的左相邻块。
上相邻块可以包括如下的块中的一个,即,包括(xcb+cbw,ycb

1)位置上的样本的块b0、包括(xcb+cbw

1,ycb

1)位置上的样本的块b1、包括(xcb

1,ycb

1)位置上的样本的块b2或包括(xcb,ycb

1)位置上的样本的块b3。其中,(xcb,ycb)表示当前块的左上样本的位置,cbw表示当前块的宽度。左相邻块可以包括如下的块中的一个,即,包括(xcb

1,ycb+cbh)位置上的样本的块a0、包括(xcb

1,ycb+cbh

1)位置上的样本的块a1或包括(xcb

1,ycb)位置的样本的块a2。其中,cbh表示当前块的高度。
[0472]
时间相邻块可以包括块c0和块c1中的至少一个,块c0包括位于与同位块中的当前块具有相同位置和大小的块的中心处的样本,并且块c1包括与该块的右下角相邻的样本。
[0473]
运动矢量预测候选列表中可以包括的运动矢量预测候选的最大数量可以是2。运动矢量预测候选的导出顺序如下。
[0474]
1.当左相邻块a0或左相邻块a1中的至少一个可用时,将可用块的运动矢量设置为运动矢量预测候选。
[0475]
2.当上相邻块b0、上相邻块b1或上相邻块b2中的至少一个可用时,将可用块的运动矢量设置为运动矢量预测候选。
[0476]
3.当时间相邻块可用时,将时间运动矢量设置为运动矢量预测候选。
[0477]
4.将零运动矢量设置为运动矢量预测候选。
[0478]
可替代地,当按1至3的顺序导出的运动矢量预测候选的数量小于2时,可以将帧间运动信息列表中包括的运动矢量设置为运动矢量预测候选。当帧间运动信息列表可用时,可以按以下顺序导出运动矢量预测候选。
[0479]
1.当左相邻块a0或左相邻块a1中的至少一个可用时,将可用块的运动矢量设置为运动矢量预测候选。
[0480]
2.当上相邻块b0、上相邻块b1或上相邻块b2中的至少一个可用时,将可用块的运动矢量设置为运动矢量预测候选。
[0481]
3.当时间相邻块可用时,将时间运动矢量设置为运动矢量预测候选。
[0482]
4.将帧间运动信息列表中包括的运动矢量设置为运动矢量预测候选。
[0483]
5.将零运动矢量设置为运动矢量预测候选。
[0484]
可以将具有通过将参考运动矢量预测候选的运动矢量加上或减去偏移矢量而导出的运动矢量的运动矢量预测候选添加到运动矢量预测候选列表。具有通过将参考运动矢量预测候选的运动矢量加上或减去偏移矢量而导出的运动矢量的运动矢量预测候选可以被称为精细运动矢量预测候选。
[0485]
图37是示出可以被设置为精细运动矢量预测候选的运动矢量候选的图。
[0486]
当参考运动矢量预测候选的运动矢量是(mvplx[0],mvplx[1])时,可以通过将参考运动矢量预测候选的运动矢量的x分量或y分量中的至少一个加上或减去偏移量来导出精细运动矢量预测候选的运动矢量。例如,可以将精细运动矢量预测候选的运动矢量设置为(mvplx[0]+m,mvplx[1]),(mvplx[0]

m,mvplx[1]),(mvplx[0],mvplx[1]+m)或(mvplx[0],mvplx[1]

m)。m表示偏移矢量的大小。
[0487]
偏移矢量的大小m可以在编码器和解码器中预定义。例如,偏移矢量的大小m可以被设置为小于或等于4的整数,诸如1或4。
[0488]
可替代地,可以通过码流用信号发送用于确定偏移矢量的信息。所述信息可以在
序列级、图像级、条带级或块级用信号发送。例如,可以如上所述使用用于确定偏移矢量的大小的信息distance_idx或用于确定偏移矢量的方向的信息direction_idx中的至少一个来确定偏移矢量。
[0489]
参考运动矢量预测候选可以是在运动矢量预测候选列表中具有预定索引值的运动矢量预测候选。例如,在运动矢量预测候选列表中包括的运动矢量预测候选中,可以将索引值为0的运动矢量预测候选或索引值为1的运动矢量预测候选设置为参考运动矢量预测候选。
[0490]
作为另一示例,可以使用包括至少一个预测矢量偏移候选的合并细化偏移列表来确定偏移矢量。当由当前块的索引信息指定的运动矢量预测候选是参考运动矢量预测候选时,可以使用预测矢量细化偏移列表来确定偏移矢量。另外,可以通过将运动矢量预测候选的运动矢量加上或减去偏移矢量来导出当前块的运动预测矢量。参考运动矢量预测候选可以是在运动矢量预测候选列表中具有预定索引值的运动矢量预测候选。例如,在运动矢量预测候选列表中包括的运动矢量预测候选中,可以将具有最小索引值的运动矢量预测候选或具有最大索引值的运动矢量预测候选设置为参考运动矢量预测候选。
[0491]
当使用预测矢量偏移细化列表来计算偏移矢量时,预测矢量候选列表可以包括的预测矢量候选的最大数量可以被设置为大于2的值。
[0492]
图38是示出预测矢量细化偏移列表的配置的图。
[0493]
在图38中,假设参考预测矢量候选是索引为2的预测矢量候选。
[0494]
当由指示预测矢量候选中的任何一个的索引信息amvpcand_idx指定的预测矢量候选的索引不是2时,可以将预测矢量候选的运动矢量设置为当前块的运动预测矢量。
[0495]
另一方面,当由索引信息amvpcand_idx指定的预测矢量候选的索引为2时,可以使用预测矢量细化偏移列表来导出偏移矢量。可以通过码流用信号发送指定预测矢量细化偏移列表中包括的预测矢量偏移候选中的任何一个的索引信息amvpoffset_idx。
[0496]
当指定了偏移矢量时,可以通过将参考预测矢量候选的运动矢量加上或减去偏移矢量来导出当前块的运动预测矢量。
[0497]
即使当基于仿射运动模型对编码块进行编码时,也可以使用运动矢量细化技术。例如,当应用仿射高级运动矢量预测模式时,可以通过将仿射种子差矢量加上仿射种子预测矢量来导出编码块的仿射种子矢量。在此,可以基于编码块的空间相邻块或时间相邻块的仿射种子矢量来导出仿射种子预测矢量。可以基于从码流用信号发送的信息来确定仿射种子差矢量。在这种情况下,可以将相同的仿射种子差矢量应用于所有控制点。可替代地,可以针对每个控制点用信号发送用于确定仿射种子矢量的信息。
[0498]
当基于编码块的仿射种子矢量导出子块的仿射矢量时,可以将仿射矢量设置为初始运动矢量,然后可以导出偏移矢量。可以通过将初始运动矢量加上或减去偏移矢量来导出每个子块的运动矢量。
[0499]
代替用信号发送用于确定偏移矢量的信息,解码器可以导出偏移矢量。具体地,可以使用子块中包括的预测样本的水平方向梯度的平均值和垂直方向梯度的平均值来导出偏移矢量。
[0500]
帧内预测是使用当前块周边已编码/解码的重建样本来预测当前块。在这种情况下,当前块的帧内预测可以使用应用环路滤波器之前的重建样本。
[0501]
帧内预测技术包括基于矩阵(matrix)的帧内预测及考虑与周边重建样本的方向性的一般帧内预测。可以通过码流用信号发送指示当前块的帧内预测技术的信息。所述信息可以是1比特标志。可替代地,基于当前块的位置、大小、形状或相邻块的帧内预测技术中的至少一个,可以确定当前块的帧内预测技术。例如,当当前块跨过图像边界存在时,当前块设置为不应用基于矩阵的帧内预测。
[0502]
基于矩阵的帧内预测是基于编码器及解码器中已存储的矩阵与当前块周边的重建样本之间的矩阵乘法来获得当前块的预测块的方法。可以通过码流用信号发送用于指定已存储的多个矩阵中的任一个的信息。解码器可以基于所述信息及当前块的大小来确定用于当前块的帧内预测的矩阵。
[0503]
一般帧内预测是基于非角度帧内预测模式或角度帧内预测模式来获得与当前块相关的预测块的方法。
[0504]
可以通过将原始图像与预测图像相减来导出所导出的残差图像。在这种情况下,将残差图像变更为频域时,即使移除频率分量中的高频率分量,也不会大幅降低视频的主观画质。由此,若将高频率分量的值变小或者将高频率分量的值设置为0,则具有在不引起明显视觉失真的情况下提高压缩效率的效果。反映以上特性,可以对当前块进行变换以将残差图像分解为2维频率分量。可以使用离散余弦变换(dct,discrete cosine transform)或离散正弦变换(dst,discrete sine transform)等变换技术来执行所述变换。
[0505]
使用dct或dst变换当前块之后,可以再次对变换的当前块进行变换。在这种情况下,基于dct或dst的变换可定义为主变换,再次对应用主变换的块进行变换的过程可称为二次变换。
[0506]
主变换可以使用多个变换核候选中的任一个来执行。例如,可以使用dct2、dct8或dct7中的任一个来执行主变换。
[0507]
针对水平方向及垂直方向还可以使用不同的变换核。还可以通过码流用信号发送表示水平方向的变换核及垂直方向的变换核的组合的信息。
[0508]
主变换及二次变换的执行单元会不同。例如,可以对8
×
8块执行主变换,并且可以对变换的8
×
8块中的大小为4
×
4的子块执行二次变换。在这种情况下,还可以将不执行二次变换的剩余区域的变换系数设置为0。
[0509]
可替代地,可以对4
×
4块执行主变换,并且可以对包括变换的4
×
4块的大小为8
×
8的区域可执行二次变换。
[0510]
可以通过码流用信号发送表示是否执行二次变换的信息。
[0511]
在解码器中可执行二次变换的逆变换(第二逆变换),并且可以对其结果执行主变换的逆变换(第一逆变换)。作为第二逆变换及第一逆变换的执行结果,可以获得当前块的残差信号。
[0512]
量化用于减少块的能量,并且量化过程包括将变换系数除以特定常数的过程。所述常数可由量化参数来导出,并且量化参数可定义为1至63之间的值。
[0513]
若在编码器中执行变换及量化,则解码器可以通过逆量化及逆变换来获得残差块。在解码器中将预测块和残差块加起来,可以获得当前块的重建块。
[0514]
若获得当前块的重建块,则可以通过环路滤波(in

loop filtering)来减少在量化及编码过程中产生的信息丢失。环路滤波器可以包括去块滤波器(deblocking filter)、
样本自适应偏移滤波器(sample adaptive offset filter,sao)或自适应环路滤波器(adaptive loop filter,alf)中的至少一个。
[0515]
将以解码过程或编码过程为中心描述的实施例用于编码过程或解码过程也包括在本发明的范围内。以与所描述的不同的顺序来改变按预定顺序描述的多个实施例也包括在本发明的范围内。
[0516]
已经基于一系列的步骤或流程图来描述实施例,但这并不限定发明的时间序列顺序,并且根据需要可同时执行或者按另外顺序执行。并且,在上述实施例中,构成框图的结构要素(例如,单元、模块等)还可分别实现为硬件设备或软件,并且多个结构要素可以组合实施为单个硬件设备或软件。所述实施例可以通过程序指令的形式实施,所述程序指令可以由各种计算机部件执行并记录在计算机可读记录介质中。所述计算机可读记录介质可单独包括或组合包括程序指令、数据文件、数据结构等。计算机可读记录介质的示例可以包括硬盘、软盘及磁带等磁性介质、cd

rom、dvd等光学记录介质、如软式光盘(floptical disk)的磁

光介质(magneto

optical media)及rom、ram、闪速存储器等等以存储程序指令并执行该指令的方式专门配置的硬件设备。所述硬件设备可以被配置为作为一个或多个软件模块进行操作以执行根据本发明的处理,另一方面亦然。
[0517]
【工业实用性】
[0518]
本发明可以应用于对视频进行编码/解码的电子设备。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1