使用几何分区的视频编解码方法及装置与流程

文档序号:33190093发布日期:2023-02-04 08:04阅读:29来源:国知局
使用几何分区的视频编解码方法及装置与流程
使用几何分区的视频编解码方法及装置
1.相关申请的交叉引用
2.本技术要求于2020年5月29日提交的发明名称为“使用三角预测进行视频编解码”的临时申请no.63/032,460的优先权,该临时申请的全部内容通过引用完整地并入本文。
技术领域
3.本技术总体上涉及视频编解码和压缩。更具体地,本技术涉及但不限于使用视频编解码中的三角预测单元(即几何分区预测单元的特殊情况)进行运动补偿预测的方法和装置。


背景技术:

4.各种电子设备(例如数字电视、膝上型计算机或台式计算机、平板计算机、数码相机、数字记录设备、数字媒体播放器、视频游戏机、智能电话、视频电话会议设备、视频流传输设备等)支持数字视频。这些电子设备通过实现视频压缩/解压缩来传输、接收、编码、解码和/或存储数字视频数据。多种视频编解码技术可用于压缩视频数据。根据一个或更多种视频编解码标准来进行视频编解码。例如,视频编解码标准包括通用视频编解码(versatile video coding,vvc)、联合探索测试模型(joint exploration test model,jem)、高效视频编解码(high-efficiency video coding,hevc/h.265)、高级视频编解码(advanced video coding,avc/h.264)、移动图像专家组(moving picture experts group,mpeg)编解码等。
5.视频编解码通常采用利用视频数据中固有的冗余的预测方法(例如,帧间预测、帧内预测等)。视频编解码旨在将视频数据压缩成使用较低比特率的形式,同时避免或最小化视频质量的下降。随着不断发展的视频服务变得可用,需要具有更好编解码效率的编解码技术。每个标准中的块划分方案也在不断发展。
6.视频压缩通常包括执行空间(帧内)预测和/或时间(帧间)预测以减少或修剪视频数据中固有的冗余。对于基于块的视频编解码,视频帧被划分为一个或更多个条带,每个条带具有多个视频块,这些视频块也可以称为编码树单元(coding tree units,ctu)。每个ctu可以包含一个编码单元(coding unit,cu)或递归地拆分为更小的cu,直到达到预定义的最小cu大小。每个cu(也称为叶cu)包含一个或更多个变换单元(transform unit,tu),每个cu还包含一个或更多个预测单元(prediction unit,pu)。每个cu可以采用帧内、帧间或ibc模式进行编码。视频帧的帧内编码(i)条带中的视频块使用空间预测相对于同一视频帧内的相邻块中的参考样点进行编码。视频帧的帧间编码(p或b)条带中的视频块可以使用关于同一视频帧内相邻块中的参考样点的空间预测或关于其他先前和/或未来参考视频中的参考样点的时间预测帧。
7.基于先前已编码的参考块(例如,相邻块)的空间或时间预测导致要编码的当前视频块的预测块。找到参考块的过程可以通过块匹配算法来完成。表示要编码的当前块和预测块之间的像素差异的残差数据被称为残差块或预测误差。根据指向形成预测块的参考帧
中的参考块的运动矢量和残差块对帧间编码块进行编码。确定运动矢量的过程通常称为运动估计。根据帧内预测模式和残差块对帧内编码块进行编码。为了进一步压缩,将残差块从像素域变换到变换域,例如频域,产生残差变换系数,然后可以对其进行量化。最初排列在二维阵列中的量化变换系数可以被扫描以产生变换系数的一维矢量,然后被熵编码到视频比特流中以实现更多压缩。
8.然后将编码的视频比特流保存在计算机可读存储介质(例如,闪存)中,以供具有数字视频能力的另一电子设备访问或以有线或无线方式直接传输到电子设备。然后,电子设备通过例如解析编码的视频比特流以从比特流中获得语法元素并从编码的视频将数字视频数据重构为其原始格式来执行视频解压缩(这是与上述视频压缩互逆的过程)位流至少部分地基于从位流获得的语法元素,并且在电子设备的显示器上呈现重构的数字视频数据。
9.随着数字视频质量从高清到4k
×
2k甚至8k
×
4k,要编码/解码的视频数据量呈指数增长。就如何更有效地编码/解码视频数据同时保持解码视频数据的图像质量而言,这是一个持续的挑战。
10.在一次联合视频专家组(joint video experts team,jvet)会议上,jvet定义了多功能视频编码(versatile video coding,vvc)和vvc测试模型1(vvc test model 1,vtm1)编码方法的草案。决定包含一个带有将二元分割和三元分割编解码块结构的嵌套多类型树的四叉树作为vvc的初始新编码特性。从那时起,在那次jvet会议开发了参考软件vtm以实现编码方法和vv解码过程草案。


技术实现要素:

11.本公开总体上描述与在视频编解码中使用几何形状预测单元的运动补偿预测有关的技术的实例。
12.根据本公开的第一方面,提供一种使用几何分割的视频编解码方法,包括:将图片分割成多个编码单元;将该多个编码单元中的一个编码单元分割为两个几何分区;以及在为两个几何分区中的任一个几何分区构建合并候选列表的过程中执行预定数量的运动矢量比较操作。
13.根据本公开的第二方面,提供了一种使用几何分割的视频编解码装置。该装置包括一个或更多个处理器;以及非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质用于存储可由一个或更多个处理器执行的指令,其中,在执行这些指令时,一个或更多个处理器用于执行在本公开的第一方面所述的方法。
14.根据本公开的第三方面,提供了一种用于视频编解码的非暂时性计算机可读存储介质。该非暂时性计算机可读存储介质上存储有计算机可执行指令,这些指令在由一个或更多个处理器执行时使一个或更多个处理器处理器执行在本公开的第一方面所述的方法。
附图说明
15.将通过参考附图中所示的具体示例来呈现对本公开的示例的更具体的描述。鉴于这些附图仅描绘了一些示例并且因此不被认为是限制范围,将通过使用附图以附加的特异性和细节来描述和解释这些示例。
16.图1是示出了根据本公开的一些实施方式的示例性视频编码器的框图。
17.图2是示出了根据本公开的一些实施方式的示例性视频解码器的框图。
18.图3是示出了根据本公开的一些实施方式的四叉树加二叉树(qtbt)结构的示意图。
19.图4是示出了根据本公开的一些实施方式的被划分为ctu的图片的示例的示意图。
20.图5是示出了根据本公开的一些实施方式的多类型树分割模式的示意图。
21.图6是示出了根据本公开的一些实施方式的将cu分割成三角预测单元的示意图。
22.图7是示出了根据本公开的一些实施方式的相邻块的位置的示意图。
23.图8是示出了根据本公开的一些实施方式的空间合并候选的位置的示意图。
24.图9是示出了根据本公开的一些实施方式的用于时间合并候选的运动矢量缩放的示意图。
25.图10是示出了根据本公开的一些实施方式的时间合并候选的候选位置的示意图。
26.图11a和图11b是示出了根据本公开的一些实施方式的用于三角预测模式的单向预测运动矢量(mv)选择的示例的示意图。
27.图12a至图12d是示出了根据本公开的一些实施方式的用于三角预测模式的单向预测mv选择的示例的示意图。
28.图13是示出了根据本公开的一些实施方式的灵活单向预测mv选择的示例的示意图。
29.图14是示出了根据本公开的一些实施方式的将cu分割成几何分区的示例的示意图。
30.图15是示出了根据本公开的一些实施方式的示例性视频编解码装置的框图。
31.图16是示出了根据本公开的一些实施方式的使用几何预测单元的用于运动补偿预测的视频编解码的示例性过程的流程图。
具体实施方式
32.现在将详细参照具体实施方式,在附图中示出了具体实施方式的示例。在以下详细描述中,阐述了大量非限制性具体细节以便帮助理解本文呈现的主题。但是对于本领域普通技术人员将显而易见的是,在不脱离权利要求的范围的情况下,可以使用各种替代方案,并且可以在没有这些具体细节的情况下实践主题。例如,对于本领域普通技术人员将显而易见的是,本文呈现的主题可以在具有数字视频能力的许多类型的电子设备上实现。
33.贯穿本说明书对“一个实施例”、“实施例”、“示例”、“一些实施例”、“一些示例”或类似语言的引用表示所描述的一定特征、结构或特性被包括在至少一个实施例或示例中。示例除非另有明确说明,否则结合一个或一些实施例描述的特征、结构、元件或特性也适用于其它实施例。
34.在整个公开内容中,除非另有明确说明,否则术语“第一”、“第二”、“第三”等都用作仅用于提及相关元件(例如,设备、组件、组合物、步骤等)的命名,而不指示任何空间或时间顺序。例如,“第一设备”和“第二设备”可指两个单独形成的设备,或者同一设备的两个部分、组件或操作状态,并且可被任意命名。
35.如本文所使用的,取决于上下文,术语“如果”或“当
……
时”可被理解为表示“在
……
时”或“响应于
……”
。这些术语如果出现在权利要求中,则可不指示相关限制或特征是有条件的或可选的。
36.术语“模块”、“子模块”、“电路”、“子电路”、“电路系统”、“子电路系统”、“单元”或“子单元”可包括存储可由一个或更多个处理器执行的代码或指令的存储器(共享、专用或组合)。模块可包括具有或不具有存储的代码或指令的一个或更多个电路。模块或电路可包括直接或间接连接的一个或更多个组件。这些组件可以或可不物理地附接到彼此或彼此相邻定位。
37.单元或模块可纯粹通过软件、纯粹通过硬件或通过硬件和软件的组合来实现。在纯软件实施方式中,例如,单元或模块可包括直接或间接链接在一起的功能上相关的代码块或软件组件,以便执行一定功能。
38.图1是示出了可与使用基于块的处理的多种视频编解码标准结合使用的基于块的示例性混合视频编码器100的框图。在编码器100中,视频帧被分割成用于处理的多个视频块。对于每个给定的视频块,基于帧间预测方法或帧内预测方法形成预测。在帧间预测中,基于来自先前重构的帧的像素通过运动估计和运动补偿来形成一个或更多个预测器。在帧内预测中,基于当前帧中的重构的像素形成预测器。可通过模式决策选择最佳预测器来预测当前块。
39.表示当前视频块与其预测器之间的差异的预测残差被发送到变换电路102。然后从电路102发送变换系数到量化电路104以用于熵减少。然后将量化系数馈送到熵编码电路106以生成压缩的视频比特流。如图1所示,来自帧间预测电路和/或帧内预测电路112的预测相关信息110,例如视频块分区信息、运动矢量(motion vector,mv)、参考图片索引和帧内预测模式,也通过熵编码电路106被馈送并保存到压缩的视频比特流114中。
40.在编码器100中,还需要与解码器相关的电路以重构用于预测目的的像素。首先,通过反量化116和逆变换电路118重构预测残差。将这种重构的预测残差与块预测器120组合以生成用于当前视频块的未滤波的重构像素。
41.空间预测(或“帧内预测”)使用来自与当前视频块相同的视频帧中的已编码相邻块的样点(称为参考样点)的像素来预测当前视频块。
42.时间预测(也称为“帧间预测”)使用来自已编码视频图片的重构像素来预测该当前视频块。时间预测减少了视频信号中固有的时间冗余。用于给定编码单元(cu)或编码块的时间预测信号通常由一个或更多个运动矢量(mv)用信号表示,这些运动矢量指示当前cu与其时间参考之间的运动量和运动方向。此外,如果支持多个参考图片,则额外发送一个参考图片索引,该参考图片索引用于标识时间预测信号来自参考图片库中的哪个参考图片。
43.在执行空间和/或时间预测之后,编码器100中的帧内/帧间模式决策电路121基于如率失真优化方法选择最佳预测模式。然后从当前视频块中减去块预测值120,并且使用变换电路102和量化电路104将得到的预测残差去相关。得到的量化残差系数由反量化电路116反量化并由逆变换电路118逆变换以形成该重构的残差,然后将该重构的残差添加回该预测块以形成该cu的重构信号。可在该重构的cu被放入图片缓存器117的参考图片存储器并用于对未来的视频块进行编解码之前将环内滤波115(如去块滤波器、样点自适应偏移(sample adaptive offset,sao),和/或自适应环内滤波器(alf))进一步应用于该重构的cu。为了形成输出视频比特流114,编解码模式(帧间或帧内)、预测模式信息、运动信息和量
化的残差系数都被发送到熵编码单元106以被进一步压缩和打包以形成该比特流。
44.例如,去块滤波器可用在avc、hevc以及vvc的当前版本中。在hevc中,定义了一个额外的环路滤波器,称为样点自适应偏移,以进一步提高编解码效率。在vvc标准的最新版本中,正在积极研究另一种称为自适应环路滤波器(adaptive loop filter,alf)的环路滤波器,并可能将其包含在最终标准中。
45.这些环路滤波器操作是可选的。执行这些操作有助于提高编解码效率和视觉质量。它们也可以作为由编码器100呈现的决定而被关闭以节省计算复杂度。
46.应当注意,帧内预测通常基于未滤波的重构像素,而如果这些滤波器选项被编码器100打开,则帧间预测基于滤波的重构像素。
47.图2是示出了可与多种视频编码标准结合使用的基于块的示意性解码器200的框图。该解码器200类似于驻留在图1的编码器100中与重构相关的部分。在解码器200中,首先通过熵解码202对输入视频比特流201进行解码,以导出量化系数级别和与预测相关的信息。这些量化系数级别通过反量化204和逆变换206进行处理以获得重构的预测残差。在帧内/帧间模式选择器212中实现的块预测器机制被配置为基于解码的预测信息进行帧内预测208或运动补偿210。通过使用加法器214将来自逆变换206的重构预测残差和该块预测器机制生成的预测输出相加来获得未滤波的重构像素集合。
48.在被存储在用作参考图片存储器的图片缓存器213中之前,该重构块还可以通过环内滤波器209。然后可以将图片缓存器213中的重构视频发送出去以驱动显示设备,并且用于预测未来的视频块。在环内滤波器209开启的情况下,对这些重构像素执行滤波操作以导出最终的重构视频输出222。
49.前面所提及的视频编码/解码标准,例如vvc、jem、hevc、mpeg-4,第10部分,在概念上是相似的。例如,它们都使用基于块的处理。下面将详细说明一些标准中的块分区方案。
50.高效视频编码(hevc)
51.hevc以基于混合块的运动补偿变换编解码架构为基础。用于压缩的基本单元称为编码树单元(ctu)。最大ctu大小定义为用于4:2:0色度格式的最多64
×
64个亮度像素和32
×
32色度像素的两个块。每个ctu可包含一个编码单元(cu)或者被递归地拆分为四个更小的cu,直到达到预定义的最小cu大小。每个cu(也称为叶cu)包含一个或更多个预测单元(pu)和一个变换单元(tu)树。
52.一般来讲,除单色内容外,一个ctu可包括一个亮度编码树块(coding tree block,ctb)和两个对应的色度ctb;一个cu可包括一个亮度编码块(coding block,cb)和两个对应的色度cb;一个pu可包括一个亮度预测块(prediction block,pb)和两个对应的色度pb;并且一个tu可包括一个亮度变换块(transform block,tb)和两个对应的色度tb。但是,可能会出现例外,因为用于亮度和色度的最小tb大小均为4
×
4(即并不支持2
×
2色度tb以用于4:2:0颜色格式),并且每个帧内色度cb始终仅有一个帧内色度pb,而无论相应的帧内亮度cb中的帧内亮度pb的数量多少。
53.对于帧内cu,该亮度cb可由一个或四个亮度pb预测,并且两个色度cb中的每一个总是由一个色度pb预测,其中每个亮度pb具有一个帧内亮度预测模式,并且这两个色度预测模式pb共享一种帧内色度预测模式。而且,对于帧内cu,tb大小不能大于pb大小。在每个pb中,帧内预测用于从tb的相邻的重构样点预测pb内每个tb的样点。对于每个pb,除了33种
定向帧内预测模式外,还支持dc和平面模式以分别预测平坦区域和渐变区域。
54.对于每个帧间pu,可以选择包括帧间、跳过和合并的三种预测模式中的一种。一般来讲,引入运动矢量竞争(mvc)方案以从包括空间和时间运动候选的给定候选集中选择运动候选。对运动估计的多种参考允许在2个可能的重建参考图片列表(即列表0和列表1)中找到最佳参考。对于该帧间模式(称为amvp模式,其中amvp代表高级运动矢量预测),帧间预测指示符(列表0、列表1或双向预测)、参考索引、运动候选索引、运动矢量差(mvd)和预测残差被传输。对于跳过模式和合并模式,仅传输合并索引,并且当前pu从编码的合并索引所指的相邻的pu继承该帧间预测指示符、参考索引和运动矢量。在跳过编码cu的情况下,残差信号也被省略。
55.联合探索测试模型(jem)
56.联合探索测试模型(jem)建立在hevc测试模型之上。hevc的基本编解码流程图在jem中保持不变;然而,最重要的模块,包括块结构、帧内和帧间预测、残差变换、环路滤波器和熵编码模块的设计元素,都做了一些修改,并添加了额外的编码工具。jem中包含以下新的编码特征。
57.在hevc中,使用表示为编码树的四叉树结构将ctu拆分为cu,以适应各种局部特征。以cu级别决定使用图片间(时间)预测还是图片内(空间)预测对图片区域进行编码。根据pu拆分类型,每个cu可以进一步拆分为一个、两个或四个pu。在一个pu内部,应用同一预测过程,并且以pu为基础将相关信息传输到解码器。在通过应用基于pu分割类型的预测过程获得残差块之后,可以根据类似于用于cu的编码树的另一种四叉树结构将该cu划分为变换单元(tu)。hevc结构的关键特征之一是它具有多个分区概念,包括cu、pu和tu。
58.图3是示出了根据本公开的一些实施方式的四叉树加二叉树(quadtree plus binary tree,qtbt)结构的示意图。
59.qtbt结构修剪了多种分区类型的概念,即修剪了cu、pu和tu概念的分离,并且支持cu分区形状的更大灵活性。在该qtbt块结构中,cu可以具有正方形或矩形形状。如图3所示,首先由四叉树结构对编码树单元(ctu)进行划分。四叉树叶节点可以进一步由二叉树结构划分。二叉树划分中有两种划分类型:对称水平划分和对称垂直划分。二叉树叶节点称为编码单元(cu),并且该分割用于预测和变换处理,无需进一步分区。这意味着cu、pu和tu在qtbt编码块结构中具有相同的块大小。在jem中,一个cu有时由不同颜色分量的编码块(cb)组成,例如,在4:2:0色度格式的p和b条带的情况下,一个cu包含一个亮度cb和两个色度cb,并且有时由单个分量的cb组成,例如,在i条带的情况下,一个cu仅包含一个亮度cb或仅包含两个色度cb。
60.对于该qtbt分区方案,定义以下参数。
[0061]-ctusize:四叉树的根节点大小,与hevc中的概念相同;
[0062]-minqtsize:允许的最小四叉树叶节点大小;
[0063]-maxbtsize:允许的最大二叉树根节点大小;
[0064]-maxbtdepth:允许的最大二叉树深度;
[0065]-minbtsize:允许的最小二叉树叶节点大小。
[0066]
在qtbt分区结构的一个示例中,ctu大小设置为带有两个对应的64
×
64色度样点块(具有4:2:0色度格式)的128
×
128亮度样点,minqtsize设置为16
×
16,maxbtsize设置为
64
×
64,minbtsize(宽度和高度)设置为4
×
4,maxbtdepth设置为4。首先将四叉树分区应用于该ctu以生成四叉树叶节点。这些四叉树叶节点的大小可以从16
×
16(即minqtsize)到128
×
128(即ctu大小)。如果四叉树叶节点为128
×
128,则由于大小超过了maxbtsize(即64
×
64)不再会被二叉树进一步划分了。否则,四叉树叶节点可以被二叉树进一步划分。因此,四叉树叶节点也是二叉树的根节点,二叉树深度为0。当二叉树深度达到maxbtdepth(即4)时,不再考虑进一步划分。当二叉树节点的宽度等于minbtsize(即4)时,不再考虑进一步的水平划分。类似地,当二叉树节点的高度等于minbtsize时,不再考虑进一步的垂直划分。二叉树的叶节点被进一步进行预测和变换处理,而不进行进一步的划分。在jem中,最大ctu大小为256
×
256亮度样点。
[0067]
使用该qtbt方案进行块分区的示例以及相应的树表示在图3中示出。实线表示四叉树划分,虚线表示二叉树划分。如图3所示,编码树单元(ctu)300首先由四叉树结构划分,四个四叉树叶节点302、304、306、308中的三个由四叉树结构或二叉树结构进一步划分。例如,四叉树叶节点306通过四叉树划分进一步分区;通过二叉树划分将四叉树叶节点304进一步划分为两个叶节点304a、304b;并且四叉树叶节点302也进一步通过二叉树划分进行分区。在二叉树的每个划分(即非叶)节点中,用信号发送一个标志来指示使用哪种划分类型(即水平或垂直),其中0表示水平划分,1表示垂直划分。例如,对于四叉树叶节点304,用信号发送0以指示水平划分,并且对于四叉树叶节点302,用信号1发送以指示垂直划分。对于四叉树划分,不需要指明划分类型,因为四叉树划分总是水平和垂直划分一个块以产生4个大小相等的子块。
[0068]
此外,该qtbt方案支持亮度和色度具有单独的qtbt结构的能力。目前,对于p和b条带,一个ctu中的亮度和色度ctb共享同一qtbt结构。但是,对于i条带,亮度ctb被qtbt结构分割成cu,而且色度ctb被另一个qtbt结构分割成色度cu。这意味着i条带中的cu由亮度分量的编码块或两个色度分量的编码块组成,p或b条带中的cu由所有三种颜色分量的编码块组成。
[0069]
多功能视频编解码(vvc)
[0070]
在联合视频专家组(jvet)会议上,jvet定义了通用视频编解码(vvc)和vvc测试模型1(vtm1)编码方法的草案。决定包括具有使用二元和三元划分编码块结构的嵌套多类型树的四叉树作为vvc的初始新编码特征。
[0071]
在vvc中,图片分区结构将输入视频划分为称为编码树单元(ctu)的块。使用具有嵌套多类型树结构的四叉树将ctu拆分为编码单元(cu),编码单元具有叶编码单元(cu),该叶编码单元定义共享同一预测模式(例如帧内或帧间)的区域。这里,术语“单元”定义了覆盖所有分量的图像区域;术语“块”用于定义覆盖一定分量(例如亮度)的区域,并且在考虑到色度采样格式(如4:2:0)时可能在空间位置上有所不同。
[0072]
将图片划分为ctu
[0073]
图4是示出了根据本公开的一些实施方式的被划分成ctu的图片的示例的示意图。
[0074]
在vvc中,图片被划分为一系列ctu,ctu概念与hevc中的相同。对于具有三个样点阵列的图片,ctu由n
×
n个亮度样点块以及两个相应的色度样点块组成。图4示出了被划分为ctu 402的图片400的示例。
[0075]
ctu中允许的最大亮度块大小规定为128
×
128(但亮度变换块的最大大小为64
×
64)。
[0076]
使用树结构对ctu进行划分
[0077]
图5是示出了根据本公开的一些实施方式的多类型树分割模式的示意图。
[0078]
在hevc中,使用表示为编码树的四叉树结构将ctu分割为cu,以适应各种局部特征。以叶cu级别决定使用图片间(时间)预测还是图片内(空间)预测对图片区域进行编码。根据pu分割类型,可将每个叶cu进一步拆分为一个、两个或四个pu。在一个pu内部,应用同一预测过程,并在pu的基础上将相关信息传输到解码器。在通过应用基于pu分割类型的预测过程获得残差块之后,可以根据类似于用于cu的编码树的另一种四叉树结构将叶cu划分为变换单元(tu)。hevc结构的关键特征之一是它具有多个分区概念,包括cu、pu和tu。
[0079]
在vvc中,用使用二元和三元划分分割结构的具有嵌套多类型树的四叉树替代多个拆分分割单元类型的概念,即它修剪了cu、pu和tu概念的分离,除非需要具有对于最大变换长度太大的尺寸的cu,并为cu划分形状支持更大的灵活性。在编码树结构中,cu可以具有正方形或矩形形状。编码树单元(ctu)首先由四叉树结构进行划分。然后可以通过多类型树结构进一步划分四叉树的叶节点。如图5所示,多类型树结构中有四种分割类型:垂直二元分割502(split_bt_ver)、水平二元分割504(split_bt_hor)、垂直三元分割506(split_tt_ver)和水平三元分割508(split_tt_hor)。多类型树叶节点被称为编码单元(cu),除非cu对于最大变换长度来说太大,否则这种分割用于预测和变换处理,而无需进一步划分。这意味着在大多数情况下,cu、pu和tu在具有嵌套多类型树编码块结构的四叉树中具有相同的块大小。例外发生在支持的最大变换长度小于cu颜色分量的宽度或高度时。在vtm1中,cu由不同颜色分量的编码块(cb)组成,例如,一个cu包含一个亮度cb和两个色度cb(除非视频是单色的,即只有一个颜色分量)。
[0080]
将cu划分为多个预测单元
[0081]
在vvc中,对于基于前面示出的结构划分的每个cu,块内容的预测可以对整个cu块进行或者以在下面的段落中说明的子块方式进行。这种预测的运算单元称为预测单元(或pu)。
[0082]
在帧内预测的情况下,pu的大小通常等于cu的大小。换言之,对整个cu块进行预测。对于帧间预测,pu的大小可以等于或小于cu的大小。换言之,存在将cu分割为多个pu进行预测的情况。
[0083]
pu尺寸小于cu尺寸的一些示例包括仿射预测模式、高级时间级运动矢量预测(atmvp)模式和三角预测模式等。
[0084]
在仿射预测模式下,可以将一个cu分割为多个4
×
4pu进行预测。可以为每个4
×
4pu导出运动矢量并且可以相应地对4
×
4pu进行运动补偿。在atmvp模式下,cu可以被分割为一个或更多个8
×
8pu进行预测。为每个8
×
8pu导出运动矢量,并且可以相应地对8
×
8pu进行运动补偿。在三角预测模式下,一个cu可以被分割为两个三角预测单元。为每个pu导出运动矢量并相应地进行运动补偿。帧间预测支持三角预测模式。下面说明三角预测模式的更多细节。
[0085]
三角预测模式
[0086]
图6是示出了根据本公开的一些实施方式的将cu分割成三角预测单元的示意图。
[0087]
三角预测模式的概念是为运动补偿预测引入三角划分。三角预测模式也可以称为
三角预测单元模式。如图6所示,cu 602或604在对角线或逆对角线方向上被分割成两个三角预测单元pu1和pu2(即,如cu 602所示从左上角到右下角分割,或者如cu 604所示从右上角到左下角分割)。使用cu中的每个三角预测单元本身的从单向预测候选列表导出的单向预测运动矢量和参考帧索引对该三角预测单元进行帧间预测。在对这些三角预测单元进行预测之后,对对角线边缘进行自适应加权处理。然后,将变换和量化过程应用于整个cu。需要注意的是,该模式仅适用于当前vvc中的跳过和合并模式。虽然在图6中cu被示为正方形块,但该三角预测模式也可以应用于非正方形(即矩形)cu。
[0088]
单向预测候选列表可包括一个或更多个候选,并且每个候选可以是运动矢量。因此,贯穿整个本公开,术语“单向预测候选列表”、“单向预测运动矢量候选列表”和“单向预测合并列表”可互换使用;并且术语“单向预测合并候选”和“单向预测运动矢量”也可以互换使用。
[0089]
单向预测运动矢量候选列表
[0090]
图7是示出了根据本公开的一些实施方式的相邻块的位置的示意图。
[0091]
在一些示例中,单向预测运动矢量候选列表可包括两个到五个单向预测运动矢量候选。在一些其它示例中,也可能是其它数量。它是从邻近块得到的。如图7所示,单向预测运动矢量候选列表是从包括五个空间邻近块(1到5)和两个时间共址块(6到7)的七个邻近块得到的。将七个邻近块的运动矢量收集到第一合并列表中。然后,根据一定顺序基于第一合并列表运动矢量来形成单向预测候选列表。基于所述顺序,首先在单向预测运动矢量候选列表中放入来自第一合并列表的单向预测运动矢量,接着是双向预测运动矢量的参考图片列表0(list 0)或l0运动矢量,然后是双向预测运动矢量的参考图片列表1(list 1)或l1运动矢量,再接着是双向预测运动矢量的l0和l1运动矢量的平均运动矢量。此时,如果候选的数量仍然小于目标数量(可以为5),则将零运动矢量添加到该列表中以满足目标数量。
[0092]
边界加权过程
[0093]
单向预测运动矢量候选列表可以由五个单向预测运动矢量候选组成。该列表可以从包括五个空间相邻块(1至5)和两个时间共址块的七个相邻块中导出。
[0094]
针对每个三角pu,基于其运动矢量得到预测器。值得注意的是,所得到的预测器覆盖比实际三角pu更大的区域,以使沿两个三角pu的共享对角线边缘存在两个预测器的重叠区域。将加权过程应用于这两个预测器之间的对角线边缘区域,以得到该cu的最终预测。当前用于亮度和色度样点的加权因子分别为{7/8,6/8,5/8,4/8,3/8,2/8,1/8}和{6/8,4/8,2/8}。
[0095]
三角预测模式语义和信令
[0096]
使用三角预测标志来用信号发送三角预测模式。当cu以跳过模式或合并模式被编码时,用信号发送该三角预测标志。对于给定的cu,如果此三角预测标志的值为1,则表示使用三角预测模式对对应的cu进行编码。否则,使用除三角预测模式之外的预测模式对该cu进行编码。
[0097]
在跳过模式或合并模式中有条件地用信号发送三角预测标志。第一,在序列参数集(或sps)中用信号发送三角预测工具启用/禁用标志。仅当此三角预测工具启用/禁用标志为真时,才以cu级用信号发送该三角预测标志。第二,仅在b条带中允许三角预测工具。因此,仅在b条带中,以cu级用信号发送三角预测标志。第三,仅针对具有等于或大于一定阈值
的尺寸的cu用信号发送三角预测模式。如果cu具有小于所述阈值的尺寸,则不用信号发送三角预测标志。第四,仅针对下述cu用信号发送三角预测标志:此cu未在包括仿射预测模式和atmvp模式两者的子块合并模式下被编码。在上面列出的四种情况下,如果没有用信号发送三角预测标志,则在解码器侧将其推测为0。
[0098]
当用信号发送三角预测标志时,使用具有特定上下文的上下文自适应二进制算术(cabac)的熵编码器通过信号发送三角预测标志。基于当前cu的上侧块和左侧块的三角预测标志值形成这些上下文。
[0099]
为了对当前块(或当前cu)的三角预测标志进行编解码(即,编码或解码),得到来自上侧块和左侧块(或上侧cu和左侧cu)的三角预测标志,并将它们的值相加。这导致与以下情况对应的三个可能的上下文:
[0100]
1)左侧块和上侧块都具有三角预测标志0;
[0101]
2)左侧块和上侧块都具有三角预测标志1;
[0102]
3)其它。
[0103]
针对三个上下文中的每一个保持单独的概率。一旦针对当前块确定上下文值,就使用与该上下文值对应的cabac的概率模型对当前块的三角预测标志进行编解码。
[0104]
如果三角预测标志为真,则用信号发送三角分区定向标志,以指示是否将该分区从左上角至右下角或从右上角至左下角定向。
[0105]
在三角预测模式用于cu的情况下,用信号发送两个索引值以指示分别用于三角预测的第一单向预测合并候选和第二单向预测合并候选的索引值。这两个索引值用于从上述单向预测运动矢量候选列表中定位两个合并候选,以分别用于第一分区和第二分区。对于三角预测,要求这两个索引值不同,以使两个三角分区的两个预测器不同。因此,直接用信号发送第一索引值。为了用信号发送第二索引值,如果该第二索引值小于第一索引值,则直接用信号发送该第二索引值。否则,将该第二索引值在用信号发送给解码器之前减去1。在解码器侧,将第一索引值解码并直接使用。为了对第二索引值进行解码,首先从cabac引擎中解码表示为“idx”的值。如果idx小于第一索引值,则第二索引值将等于idx的值。否则,第二索引值将等于(idx+1)。
[0106]
几何合并模式
[0107]
在几何合并模式(即geo)下,可根据几何分区将cu划分为两个预测单元(即几何pu)。图14图示了根据本公开的一些实施方式的几何分区的一些示例。如图14所示,可沿着不完全对角线将cu划分成两个pu,并且这两个pu可以具有诸如三角、楔形或梯形的几何形状。可将几何合并模式认为是三角预测模式的扩展,或者三角预测模式的超集。
[0108]
与三角预测模式类似,在geo划分下,只允许单向预测用于两个geo分区中的每一个,以使该模式下的内存带宽要求不会超过解码器侧双向预测块的内存带宽要求。用于geo划分的运动矢量预测与三角预测模式一致。同样,类似于三角预测模式,基于加权平均的混合操作可以应用于几何合并模式中两个分区之间的内边界。因此,与使用三角预测单元的运动补偿预测有关的技术也可以应用于使用几何形状预测单元的运动补偿预测。
[0109]
常规合并模式运动矢量候选列表
[0110]
根据当前的vvc,在预测整个cu而不分割为多于一个pu的常规合并模式下,使用与三角预测模式不同的过程构建运动矢量候选列表或合并候选列表。
[0111]
首先,基于来自相邻块的运动矢量,选择空间运动矢量候选,如图8所示,图8是示出了根据本公开的一些实施方式的空间合并候选的位置的示意图。在当前块802的空间合并候选的导出中,在位于如图8所示位置的候选中最多选择四个合并候选。这些候选是按照一定的顺序选出的。一个示例性的导出顺序是a1→
b1→
b0→
a0→
(b2)。仅当位置a1、b1、b0、a0中的任何pu不可用或被帧内编码时才考虑位置b2。应注意,也可以使用其它不同的顺序。
[0112]
接下来,导出时间合并候选。在时间合并候选的导出中,基于属于与给定参考图片列表内的当前图片具有最小图片顺序计数(picture order count,poc)差的图片的共址的pu来导出经缩放的运动矢量。用于导出该共址的pu的参考图片列表在条带标头中显式地通过信号发送。如图9中的虚线所示,获得用于时间合并候选的缩放运动矢量,图9示出了根据本公开的一些实现方式的用于时间合并候选的运动矢量缩放。使用poc距离tb和td从位于共址的pu col_pu的运动矢量缩放用于该时间合并候选的缩放运动矢量,其中tb定义为当前图片的参考图片curr_ref与当前图片curr_pic之间的poc差异,td被定义为共址图片的参考图片col_ref与共址图片col_pic之间的poc差异。时间合并候选的参考图片索引被设置为零。hevc规范草案中描述了该缩放过程的实际实现。对于b条带,获得并组合两个运动矢量,一个用于参考图片列表0,另一个用于参考图片列表1,以形成双向预测合并候选。
[0113]
图10是示出了根据本公开的一些实施方式的时间合并候选的候选位置的示意图。
[0114]
如图10所示,共址的pu的位置在两个候选位置c3与h之间选择。如果位置h处的pu不可用,或者被帧内编码,或者在当前ctu之外,则位置c3用于导出时间合并候选。否则,位置h用于导出时间合并候选。
[0115]
如上所述,在将空间和时间运动矢量插入合并候选列表之后,添加基于历史的合并候选。所称的这些基于历史的合并候选包括来自之前编码的cu的运动矢量,这些运动矢量保持在单独的运动矢量列表中,并基于一定规则进行管理。
[0116]
在插入基于历史的候选之后,如果合并候选列表未满,则进一步将成对平均运动矢量候选添加到该列表中。顾名思义,这种类型的候选是通过对当前列表中已有的候选求平均值来构建的。更具体地来讲,基于一定的顺序或规则,每次取合并候选列表中的两个候选,并将这两个候选的平均运动矢量附加到当前列表中。
[0117]
在插入成对平均运动矢量后,如果合并候选列表仍未满,则将添加零运动矢量以使该列表变满。
[0118]
使用常规合并列表构建过程来构建用于三角预测的第一合并列表
[0119]
当前vvc中的三角预测模式与常规合并预测模式在形成预测器的整体过程中有一些相似之处。例如,在两种预测模式下,需要至少基于当前cu的相邻空间运动矢量和共址运动矢量来构建合并列表。同时,三角预测模式还具有不同于常规合并预测模式的一些方面。
[0120]
例如,尽管在三角预测模式和常规合并预测模式两者下都需要构建合并列表,但是构建这样的列表的详细过程是不同的。
[0121]
由于需要额外的逻辑,这些差异给编解码器实现带来额外的成本。在三角预测模式与常规合并预测模式之间可以统一和共享构建合并列表的过程和逻辑。
[0122]
在一些示例中,在形成用于三角预测模式的单向预测(uni-directional prediction,也被称为uni-prediction)合并列表时,在将新的运动矢量添加到合并列表中之前,根据已经在列表中的那些运动矢量,来对新的运动矢量进行完全地修剪(pruned)。换
句话说,将新的运动矢量与已经在单向预测合并列表中的每个运动矢量进行比较,并且仅当其与该合并列表中的每个运动矢量不同时才添加到该列表中。否则,不将新的运动矢量添加到该列表中。
[0123]
根据本公开的一些示例,在三角预测模式下,可以从常规合并模式运动矢量候选列表构建单向预测合并列表,该常规合并模式运动矢量候选列表也可以称为常规合并列表。
[0124]
更具体地来讲,为了构建用于三角预测模式的合并候选列表,首先基于用于常规合并预测的合并列表构建过程来构建第一合并列表。第一合并列表包括多个候选,每个候选都是运动矢量。然后,使用第一合并列表中的运动矢量来进一步构建用于三角预测模式的单向预测合并列表。
[0125]
应当注意的是,在这种情况下,构建的第一合并列表可以选择不同于一般合并模式或常规合并模式的列表的大小。在本公开的一个示例中,第一合并列表具有与一般合并模式相同的大小。在本公开的另一示例中,所构建的第一合并列表具有与一般合并模式的列表不同的大小。
[0126]
从第一合并列表来构建单向预测合并列表
[0127]
根据本公开的一些示例,用于三角预测模式的单向预测合并列表可以是基于以下方法之一从第一合并列表构建的。
[0128]
在本公开的一个示例中,为了构建单向预测合并列表,首先对第一合并列表中的候选的预测列表0运动矢量进行检查并且将其选择到单向预测合并列表中。如果在该过程之后单向预测合并列表未满(例如,该列表中的候选数量仍然小于目标数量),则对第一合并列表中的候选的预测列表1运动矢量进行检查并且将其选择到单向预测合并列表中。如果单向预测合并列表仍然未满,则将预测列表0零矢量添加到单向预测合并列表中。如果单向预测合并列表仍然未满,则将预测列表1零矢量添加到单向预测合并列表中。
[0129]
在本公开的另一示例中,对于第一合并列表中的每个候选,将其预测列表0运动矢量和预测列表1运动矢量以交错方式添加到单向预测合并列表中。更具体地,对于第一合并列表中的每个候选,如果候选是单向预测运动矢量,则将其直接添加到单向预测合并列表中。否则,如果候选是第一合并列表中的双向预测运动矢量,则首先将双向预测运动矢量的预测列表0运动矢量添加到单向预测合并列表中,随后添加双向预测运动矢量的预测列表1运动矢量。一旦检查并且添加了第一合并列表中的所有运动矢量候选,但是单向预测合并列表仍未满,则可以添加单向预测零运动矢量。例如,对于每个参考帧索引,可以将预测列表0零运动矢量和预测列表1零运动矢量分别添加到单向预测合并列表中,直到该列表变满为止。
[0130]
在本公开的又一示例中,首先将来自第一合并列表的单向预测运动矢量选择到单向预测合并列表中。如果在该过程之后单向预测合并列表未满,则对于第一合并列表中的每个双向预测运动矢量,首先将双向预测运动矢量的预测列表0运动矢量添加到单向预测合并列表中,随后添加双向预测运动矢量的预测列表1运动矢量。在该过程之后,如果单向预测合并列表仍未满,则可以添加单向预测零运动矢量。例如,对于每个参考帧索引,可以将预测列表0零运动矢量和预测列表1零运动矢量分别添加到单向预测合并列表中,直到该列表变满为止。
[0131]
在上面的描述中,当将单向预测运动矢量添加到单向预测合并列表中时,可以执行运动矢量修剪过程以确保要被添加的新运动矢量不同于已经在单向预测合并列表中的那些运动矢量。为了降低复杂性,还可以部分地执行这样的运动矢量修剪过程,例如,仅根据已经在单向预测合并列表中的一些但不是所有的运动矢量来检查要被添加的新运动矢量。在极端情况下,在该过程中不执行运动矢量修剪(即,运动矢量比较操作)。
[0132]
在根据本公开的再一示例中,为了控制可以执行的运动矢量修剪操作的最大数量,可以为一个三角模式cu使用一个计数器来对目前为止已经被执行的运动矢量修剪操作的总数进行计数,同时将单向运动矢量选择到单向预测合并列表中。只要计数器小于一个预定阈值(也称为预定数量),就执行运动矢量修剪过程以检查当前单向运动矢量是否与那些已经选择的单向运动矢量不同。每次将当前单向运动矢量与已经选择的单向运动矢量进行比较,将计数器增加1。如果当前运动矢量与单向预测合并列表中选择的已有的运动矢量之一相同,则不将当前运动矢量添加到单向预测合并列表中;否则(当前单向运动矢量与单向预测合并列表中的所有现有运动矢量不同),将当前单向运动矢量添加到单向预测合并列表中。当计数器达到预定阈值(预定数量)时,不再进行运动矢量修剪操作,并且可直接将当前单向运动矢量添加到单向预测合并列表中。实际上,对于各种性能/复杂性权衡,前面所提及的预定阈值(预定数量)可以被设置为不同的值。一般来讲,增加阈值可以导致单向预测合并列表包含更少的冗余(即重复)运动矢量和更好的编解码效率,但这是以增加计算复杂度为代价的。值得一提的是,在比较两个单向运动矢量时,可以应用不同的运动矢量修剪方法。在一种方法中,提出了比较poc值与运动矢量(包括水平和垂直运动偏移)以进行运动矢量修剪。在另一种方法中,提出了仅比较参考图片索引与运动矢量以进行运动矢量修剪。
[0133]
基于图片预测配置来从第一合并列表构建单向预测合并列表
[0134]
在本公开的一些示例中,可以基于当前图片是否使用后向预测来以自适应方式构建单向预测合并列表。例如,根据当前图片是否使用后向预测,可以使用不同的方法来构建单向预测合并列表。如果所有参考图片的图片顺序计数(poc)值不大于当前图片的poc值,则意味着当前图片不使用后向预测。
[0135]
在本公开的一个示例中,在当前图片不使用后向预测时,或者在确定当前图片不使用后向预测时,首先对第一合并列表中的候选的预测列表0运动矢量进行检查并且选择到单向预测合并列表中,随后检查并且选择那些候选的预测列表1运动矢量;并且如果单向预测合并列表仍然未满,则可以添加单向预测零运动矢量。否则,如果当前图片使用后向预测,则可以如上所述以交错方式对第一合并列表中的每个候选的预测列表0和列表1运动矢量进行检查并且选择到单向预测合并列表中,即,添加第一合并列表中的第一候选的预测列表0运动矢量,随后添加第一候选的预测列表1运动矢量,并且然后添加第二候选的预测列表0运动矢量,随后添加第二候选的预测列表1运动矢量,以此类推。在该过程结束时,如果单向预测合并列表仍然未满,则可以添加单向预测零矢量。
[0136]
在本公开的另一示例中,如果当前图片不使用后向预测,则首先对第一合并列表中的候选的预测列表1运动矢量进行检查并且选择到单向预测合并列表中,随后检查并选择那些候选的预测列表0运动矢量;并且如果单向预测合并列表仍然未满,则可以添加单向预测零运动矢量。否则,如果当前图片使用后向预测,则可以如上所述以交错方式对第一合
并列表中的每个候选的预测列表0和列表1运动矢量进行检查并且选择到单向预测合并列表中,即,添加第一合并列表中的第一候选的预测列表0运动矢量,随后添加第一候选的预测列表1运动矢量,并且然后添加第二候选的预测列表0运动矢量,随后添加第二候选的预测列表1运动矢量,以此类推。在该过程结束时,如果单向预测合并列表仍然未满,则可以添加单向预测零矢量。
[0137]
在本公开的又一示例中,如果当前图片不使用后向预测,则首先仅对第一合并列表中的候选的预测列表0运动矢量进行检查并且选择到单向预测合并列表中,并且如果单向预测合并列表仍然未满,则可以添加单向预测零运动矢量。否则,如果当前图片使用后向预测,则可以如上所述以交错方式对第一合并列表中的每个候选的预测列表0和列表1运动矢量进行检查并且选择到单向预测合并列表中,即,添加第一合并列表中的第一候选的预测列表0运动矢量,随后添加第一候选的预测列表1运动矢量,并且然后添加第二候选的预测列表0运动矢量,随后添加第二候选的预测列表1运动矢量,以此类推。在该过程结束时,如果单向预测合并列表仍然未满,则可以添加单向预测零矢量。
[0138]
在本公开的另一示例中,如果当前图片不使用后向预测,则首先仅对第一合并列表中的候选的预测列表1运动矢量进行检查并且选择到单向预测合并列表中,并且如果单向预测合并列表仍然未满,可以添加单向预测零运动矢量。否则,如果当前图片使用后向预测,则可以如上所述以交错方式对第一合并列表中的每个候选的预测列表0和列表1运动矢量进行检查并且选择到单向预测合并列表中,即,添加第一合并列表中的第一候选的预测列表0运动矢量,随后添加第一候选的预测列表1运动矢量,并且然后添加第二候选的预测列表0运动矢量,随后添加第二候选的预测列表1运动矢量,以此类推。在该过程结束时,如果单向预测合并列表仍然未满,则可以添加单向预测零矢量。
[0139]
在以上示例中,通过将来自第一合并列表的运动矢量选择到单向预测合并列表中来构建用于三角预测的单向预测合并列表。然而,在实践中,这些方法可以以不同的方式来实现,其中物理地形成单向预测合并列表或者非物理地形成单向预测合并列表。在一些示例中,可以直接使用第一合并列表,而不是物理地创建单向预测合并列表。例如,第一合并列表中的每个候选的那些列表0和/或列表1运动矢量可以简单地基于一定顺序编入索引,并且直接从第一合并列表进行访问。即,在基于用于常规合并预测的合并列表构建过程构建包括多个候选(每个候选是一个或更多个运动矢量)的第一合并列表之后,并不构建单向预测合并列表,而是构建包括多个参考索引(每个参考索引是该第一合并列表中的候选运动矢量的参考)索引列表。应当注意的是,编入索引的顺序可以遵循在上面那些构建单向预测合并列表的示例中描述的选择顺序。
[0140]
在本公开的一个示例中,在当前图片不使用后向预测时,将第一合并列表中的候选的预测列表0运动矢量作为单向预测合并候选,并且按照与它们在第一合并列表中的索引顺序相同的索引顺序进行索引。也就是说,在确定当前图片的poc大于参考图片的每个poc时,参考索引按照第一合并列表中候选的列表0运动矢量的相同顺序排列。否则,如果当前图片使用后向预测,则将第一个合并列表中每个候选的列表0和列表1运动矢量作为单向预测合并候选,并且基于交错方式进行索引,即第一个合并列表中第一个候选的列表0运动矢量之后是第一个候选的列表1运动矢量,第二个候选的列表0运动矢量之后是第二个候选的列表1运动矢量,依此类推。即,在确定当前图片的poc小于至少一个参考图片的poc时,参
考索引按照第一合并列表中每个候选的列表0和列表1运动矢量的交错方式排列,其中,该候选是双向预测运动矢量。在第一合并列表中的候选是单向运动矢量的情况下,零运动矢量作为该候选的运动矢量之后的单向预测合并候选被编入索引。这保证了对于当前图片使用后向预测的情况,第一合并列表中的每个候选,无论是双向预测运动矢量还是单向预测运动矢量,都提供两个单向运动矢量作为单向预测合并候选。
[0141]
在本公开的另一示例中,在当前图片不使用后向预测时,将第一合并列表中候选的预测列表0运动矢量作为单向预测合并候选,并且按照与它们在第一合并列表中的索引顺序相同的索引顺序进行索引。否则,如果当前图片使用后向预测,则将第一合并列表中每个候选的列表0和列表1运动矢量作为单向预测合并候选,并且基于如上所述的交错方式进行索引,即第一合并列表中第一个候选的列表0运动矢量之后是该第一个候选的列表1运动矢量,第二个候选的列表0运动矢量之后是第二个候选的列表1运动矢量,依此类推。在第一合并列表中的候选是单向运动矢量的情况下,运动矢量加上一定的运动偏移被索引为在该候选的运动矢量之后的单向预测合并候选。
[0142]
在上述过程中,当检查要添加到单向预测合并列表中的新运动矢量时,可以完全或部分地进行修剪。当部分地进行修剪时,就意味着将新的运动矢量与已经在单向预测合并列表中的一些但不是全部的运动矢量进行比较。在极端情况下,不在这个过程中进行运动矢量修剪(即运动矢量比较操作)。
[0143]
在本公开的另一示例中,为了控制可以执行的运动矢量修剪操作的最大数量,可以为一个三角模式cu使用一个计数器来计算到目前为止已经执行的运动矢量修剪操作的总数,同时将单向运动矢量选择到单向预测合并列表中。只要计数器小于一个预定阈值(也称为预定数量),就执行运动矢量修剪过程以检查当前单向运动矢量是否与那些已经选择的单向运动矢量不同。每次将当前单向运动矢量与已经选择的单向运动矢量进行比较;计数器加1。如果当前运动矢量与单向预测合并列表中选择的已有运动矢量之一相同,则不将当前运动矢量添加到单向预测合并列表中。否则(当前单向运动矢量与单向预测合并列表中的所有现有运动矢量不同),将当前单向运动矢量添加到单向预测合并列表中。当计数器达到预定阈值(预定数量)时,不再进行运动矢量修剪操作,可以直接将当前单向运动矢量添加到单向预测合并列表中。在实践中,对于各种性能/复杂性权衡,上述预定阈值(预定数量)可以被设置为不同的值。一般来说,增加阈值可以导致单向预测合并列表包含更少的冗余(即重复)运动矢量和更好的编码效率,但这是以增加计算复杂度为代价的。值得一提的是,在比较两个单向运动矢量时,可以应用不同的运动矢量修剪方法。在一种方法中提出了比较poc值与运动矢量(包括水平和垂直运动偏移)以进行运动矢量修剪。在另一种方法中,提出仅比较参考图片索引与运动矢量以进行运动矢量修剪。
[0144]
在形成该单向预测合并列表时,还可以基于当前图片是否使用后向预测来自适应地执行运动矢量修剪。例如,对于本公开的与基于图片预测配置的索引列表构建有关的示例,在当前图片不使用后向预测时,全部或部分地执行运动矢量修剪操作。当前图片使用后向预测时,不进行运动矢量修剪操作。
[0145]
选择用于三角预测模式的单向预测合并候选
[0146]
除了上述示例之外,还公开了单向预测合并列表构建或单向预测合并候选选择的其它方式。
[0147]
在本公开的一个示例中,一旦构建了用于常规合并模式的第一合并列表,就可以根据以下规则选择用于三角预测的单向预测合并候选:
[0148]
对于第一合并列表中的运动矢量候选,其列表0运动矢量或列表1运动矢量中的一个且仅一个用于三角预测;
[0149]
对于第一合并列表中的给定运动矢量候选,如果其在列表中的合并索引值为偶数,那么,如果该运动矢量候选的列表0运动矢量可用,则该列表0运动矢量用于三角预测,并且在该运动矢量候选不具有列表0运动矢量的情况下,其列表1运动矢量用于三角预测;以及
[0150]
对于第一合并列表中的给定运动矢量候选,如果其在列表中的合并索引值为奇数,那么,如果该运动矢量候选的列表1运动矢量可用,则该列表1运动矢量用于三角预测,并且在该运动矢量候选不具有列表1运动矢量的情况下,其列表0运动矢量用于三角预测。
[0151]
图11a是示出了根据本公开的一些实施方式的用于三角预测模式的单向预测运动矢量(mv)选择(或单向合并候选选择)的示例的示意图。在该示例中,从第一个合并列表中导出的第一n(例如,n等于5)个合并mv候选被索引为从0到(n-1);每行有两列,分别表示第一合并列表中的候选的列表0和列表1运动矢量。该列表中的每个候选可以是单向预测的或双向预测的。对于单向预测的候选,它只有一个列表0或一个列表1运动矢量,但不是两者都有。对于双向预测的候选,它具有列表0和列表1运动矢量。在图11a中,对于每个合并索引,如果标有“x”的运动矢量可用的话,那么,它们是首先用于三角预测的运动矢量。如果标记为“x”的运动矢量不可用,则将对应于同一合并索引的未标记的运动矢量用于三角预测。
[0152]
上述概念可以扩展到其它示例。图11b是示出了根据本公开的一些实施方式的用于三角预测模式的单向预测运动矢量(mv)选择的另一个示例的示意图。根据图11b,用于为三角预测选择单向预测合并候选的规则如下:
[0153]
对于第一合并列表中的运动矢量候选,其列表0运动矢量或列表1运动矢量中的一个且仅一个用于三角预测;
[0154]
对于第一合并列表中的给定运动矢量候选,如果其在列表中的合并索引值为偶数,那么,如果该运动矢量候选的列表1运动矢量可用,则该列表1运动矢量用于三角预测,并且在该运动矢量候选不具有列表1运动矢量的情况下,其列表0运动矢量用于三角预测;以及
[0155]
对于第一合并列表中的给定运动矢量候选,如果其在列表中的合并索引值为奇数,那么,如果该运动矢量候选的列表0运动矢量可用,则该列表0运动矢量用于三角预测,并且在该运动矢量候选不具有列表0运动矢量的情况下,其列表1运动矢量用于三角预测。
[0156]
在一些示例中,其它不同顺序可以被定义并且用于从第一合并列表中的那些运动矢量候选中选择用于三角预测的单向预测合并候选。更具体地来讲,对于第一合并列表中的给定运动矢量候选,当其列表0运动矢量或列表1运动矢量可用于三角预测时,是否首先使用该列表0运动矢量或列表1运动矢量的决定不必如上文所描述的依赖于该候选在第一合并列表中的索引值的奇偶性。例如,也可以使用以下规则:
[0157]
对于第一合并列表中的运动矢量候选,其列表0运动矢量或列表1运动矢量中的一个且仅一个用于三角预测;
[0158]
基于某种预定义模式,对于第一合并列表中的若干运动矢量候选,如果它们的列
表0运动矢量可用,则该列表0运动矢量用于三角预测,并且在列表0运动矢量不存在的情况下,相应的列表1运动矢量用于三角预测;以及
[0159]
基于同一预定义模式,对于第一合并列表中的剩余运动矢量候选,如果它们的列表1运动矢量可用,则该列表1运动矢量用于三角预测,并且在列表1运动矢量不存在的情况下,相应的列表0运动矢量用于三角预测。
[0160]
图12a至图12d示出了根据本公开的一些实施方式的用于三角预测模式的单向预测运动矢量(mv)选择中的预定义模式的一些示例。对于每个合并索引,如果标记有“x”的运动矢量可用的话,那么,该运动矢量是首先用于三角预测的那些运动矢量。如果标记为“x”的运动矢量不可用,则之后将对应于同一合并索引的未标记的运动矢量用于三角预测。
[0161]
在图12a中,对于第一合并列表中的前三个运动矢量候选,首先检查它们的列表0运动矢量。仅当列表0运动矢量不可用时,相应的列表1运动矢量用于三角预测。对于第一合并列表中的第四个和第五个运动矢量候选,首先检查它们的列表1运动矢量。仅当列表1运动矢量不可用时,相应的列表0运动矢量用于三角预测。图12b至图12d示出了从第一合并列表中选择单向预测合并候选的其它三个模式。图中示出的示例不是限制性的,并且存在进一步的示例。例如,也可以使用图12a至图12d中示出的那些模式的水平和/或竖直镜像版本。然而,对于本领域技术人员而言,通过考虑本文公开的说明书和实践,以上解释的思想适用于所有这些不同的模式和/或示例。
[0162]
在上述示例中,当在第一个合并列表中选择一个运动矢量的单向运动矢量时,未进行运动矢量修剪。虽然这种方法复杂度低,但生成的单向预测合并列表中的单向运动矢量可能是冗余的,因为单向预测合并列表中的某些运动矢量可能具有完全相同的运动,这能够降低三角模式的整体编码效率。为了实现更好的性能/复杂度权衡,在本公开的一个实施例中提出了将若干运动矢量修剪操作添加到所提出的基于模式的单向预测合并列表生成方案中。为了便于说明,假设在从0到4索引的第一合并列表中导出有n=5个合并mv候选,并且有m=1个运动矢量修剪操作要执行。此外,假设使用基于合并索引奇偶校验的方法来生成单向预测合并列表。基于这些假设,所提出的单向预测合并列表生成方法可以总结如下:
[0163]
对于第一合并列表中的运动矢量候选,其列表0或列表1运动矢量中的一个且仅一个用于三角预测。
[0164]
对于第一个合并列表中的第一个运动矢量候选(即,合并索引值为0),如果可用,则将其列表0运动矢量添加到单向预测合并列表中。在第一运动矢量候选不具有列表0运动矢量的情况下,其list1运动矢量被添加到单向预测合并列表。
[0165]
对于第一个合并列表中的第二个运动矢量候选(即,合并索引值为1),如果可用,则选择其列表1运动矢量作为所选运动矢量。在第二运动矢量候选不具有列表1运动矢量的情况下,其列表0运动矢量被选为所选运动矢量。然后,针对单向预测合并列表中的第一运动矢量修剪所选运动矢量。如果两个运动矢量相同,则不将选择的运动矢量添加到单向预测合并列表中;否则(两个运动矢量不相同),选择的运动矢量被添加到单向预测合并列表中。
[0166]
对于第一合并列表中的其他运动矢量候选(即,合并索引为2到4),由于执行的运动矢量修剪操作的次数已经达到阈值m,因此基于它们的合并索引值的奇偶性选择单向运
动矢量,而不执行运动矢量修剪操作。例如,可以执行以下动作。
[0167]
如果合并索引是偶数,则首先检查其列表0运动矢量以包含在单向预测合并列表中。如果其列表0运动矢量不可用,则将其列表1运动矢量添加到列表中。
[0168]
如果合并索引为奇数,则首先检查其列表1运动矢量以包含在单向预测合并列表中。如果其列表1运动矢量不可用,则将其列表0运动矢量添加到列表中。
[0169]
如果单向预测合并列表未满,则可以将至少一个单向预测零矢量(例如列表0)添加到单向预测列表中。
[0170]
由于运动矢量修剪,所选择的单向运动矢量的合并索引值可能不再与其在第一合并列表中的对应运动矢量候选的合并索引值相同。更具体地,在上述示例中,如果由于运动矢量修剪操作而没有从第一合并列表中的第二运动矢量候选(即,合并索引值为1)中选择单向运动矢量,则单向运动矢量从第一合并列表中的后面的运动矢量候选(即,具有合并索引2到4)中选择的定向运动矢量可以具有较小的合并索引。例如,从第一合并列表中合并索引值为2的运动矢量候选中选择的单向运动矢量的合并索引值为1;从第一合并列表中合并索引值为3的运动矢量候选中选择的单向运动矢量的合并索引值为2;等等。换言之,所选择的单向运动矢量的合并索引值等于其在第一合并列表中相应的运动矢量候选的合并索引值减去在导出单向运动矢量之前修剪的候选运动矢量的数量。根据上面的示例,通过信号发送给解码器的合并索引值是在运动矢量修剪之后选择的单向运动矢量,而不是它们在第一合并列表中相应的那些运动矢量候选。
[0171]
基于该示例,在解码器侧解码三角模式cu,首先对所选择的这些单向运动矢量的合并索引值进行解码和解析;然后基于运动矢量修剪结果和解析出的合并索引值导出第一合并列表中相应的运动矢量的合并索引值;最后基于第一合并列表中相应的运动矢量的合并索引值的奇偶性,选择第一合并列表中相应的运动矢量的列表0或列表1运动矢量,并将其用于该三角模式cu。
[0172]
基于上述示例,还可以根据本公开设计和使用替代示例。在上述示例中,在从第一合并列表中的运动矢量候选中选择单向运动矢量时,其列表0和列表1运动矢量的选择顺序基于第一个合并列表中的运动矢量候选的合并索引值的奇偶性。根据该替代示例,可以改变列表0运动矢量与列表1运动矢量的选择顺序,以使其基于运动矢量修剪之后的单向运动矢量的合并索引值的奇偶性。在这种情况下,如果由于运动矢量修剪操作而没有从第一合并列表中的第二运动矢量候选(即,合并索引值为1)中选择单向运动矢量,则首先从第一个合并列表中的运动矢量候选(即,合并索引值为2)选择列表1运动矢量;如果该矢量不存在,则选择列表0运动矢量。
[0173]
基于该替代示例,为了在解码器端解码三角模式cu,首先对所选单向运动矢量的合并索引值进行解码和解析;然后根据运动矢量修剪结果和解析出的合并索引值,导出第一合并列表中对应的运动矢量的合并索引值;最后基于所选择的单向运动矢量的解析合并索引值的奇偶性,选择第一合并列表中对应的运动矢量的列表0或列表1运动矢量用于该三角模式cu。
[0174]
尽管使用基于合并索引奇偶校验的选择优先级模式和一个修剪操作来说明上述示例,但是对于视频编解码领域的技术人员来说,所提出的示例同样适用于使用其他运动矢量选择优先级模式和不同数量的运动矢量修剪操作的情况。
[0175]
用于三角预测模式的灵活合并列表构建和候选索引信令
[0176]
在本公开的一个示例中,一旦构建了用于常规合并模式的第一合并列表,就直接从该列表中选择单向预测运动矢量用于三角预测。为了指示用于三角预测的某个列表0或列表1运动矢量,首先用信号发送索引值以指示从第一合并列表中选择了哪个候选。然后,用信号发送二进制参考列表指示标志(称为l0l1_flag)以指示从第一合并列表中选择的候选的列表0或列表1运动矢量是否被选择用于三角预测的第一分区。相同的用信号发送的方法用于指示要用于三角预测的第二分区的第二列表0或列表1运动矢量。例如,用信号发送的用于三角模式编码的cu的语法可包括index1、l0l1_flag1、index2、l0l1_flag2。这里,index1和index2是从第一个合并列表中分别为第一分区和第二分区选择的两个候选的合并索引值。index1和index2分别用于定位第一分区和第二分区的候选(即第一候选和第二候选)。l0l1_flag1是用于第一分区的二进制标志,用于指示是否选择了基于来自第一合并列表的index1的所选候选的列表0或列表1运动矢量。l0l1_flag2是用于第二分区的二进制标志,用于指示是否选择了基于来自第一合并列表的索引2的所选候选的列表0或列表1运动矢量。用于第一分区的单向预测mv是通过根据第一二进制参考列表指示标志l0l1_flag1选择第一候选的list x
1 mv得到的,其中,x1取值0或1。用于第二分区的单向预测mv是通过根据第二二进制参考列表指示标志l0l1_flag2选择第二候选的list x
2 mv得到的,其中,x2取值为0或1。
[0177]
图13是示出了根据本公开的一些实施方式的用于三角预测模式的灵活单向预测mv选择的示例的示意图。如图13所示,在矩形框中用符号“x”指示的每个列表0和/或列表1运动矢量可以被指示/用信号发送给解码器以用于得到第一分区的预测,并且在矩形框中用符号“x”指示的每个列表0和/或列表1运动矢量可以被指示/用信号发送给解码器以用于得到三角预测模式下的第二分区的预测。因此,从第一合并列表中选择单向预测运动矢量变得非常灵活。给定具有n个候选大小的第一合并列表,最多2n个单向预测运动矢量可以用于两个三角分区中的每一个。三角预测模式下两个分区的两个合并索引值不必彼此不同。换言之,它们可能取相同的值。可以直接用信号发送这些索引值,而无需在用信号发送之前进行调整。更具体地说,与当前vvc中定义的不同,第二索引值直接用信号发送给解码器,而不在用信号发送之前对该值进行任何调整。
[0178]
在本公开的另一示例中,当这两个索引值相同时,不必用信号发送第二分区的二进制标志l0l1_flag2。相反,它被推断为相对于第一个分区的二进制标志l0l1_flag1具有相反的值。换言之,在这种情况下,l0l1_flag2可以取(1-l0l1_flag1)的值。
[0179]
在本公开的又一示例中,这些二进制参考列表指示标志,即l0l1_flag1和l0l1_flag2,可以被编码为cabac上下文位(context bins)。用于l0l1_flag1的上下文可与用于l0l1_flag2的上下文分开。每个上下文下的cabac概率可以在视频序列的开始处和/或图片的开始处和/或图块组的开始处被初始化。在该示例中,可以使用不同的上下文建模方法来对这两个标志进行编解码。在一种方法中,用于第二标志的上下文模型选择可以取决于第一标志的值。换言之,至少两个上下文模型可用于对该第二标志进行编解码,并且基于用信号发送的第一标志的值来选择上下文模型。在另一种方法中,每个上下文模型下的cabac概率可以根据当前图片是否使用后向预测而不同地被初始化。在图片使用后向预测的情况下,可以为该标志将概率初始化得更高以指示某个列表,例如列表0。在又一种方法中,第一
标志可以被编码为旁路位(bypass bin),并且只有第二标志被编码为上下文位。这里提到的这些方法可以单独使用,也可以联合使用。
[0180]
在本公开的又一示例中,当由合并索引值和相关联的二进制参考列表指示标志(即,l0l1_flag)指示的运动矢量不存在时,可以改为使用单向预测零运动矢量。即,在确定第一候选的list x
1 mv不存在时,选择单向预测零mv作为第一分区的单向预测mv;和/或,在确定第二候选的列表x
2 mv不存在时,选择单向预测零mv作为第二分区的单向预测mv。
[0181]
在本公开的又一示例中,当由合并索引值和相关联的l0l1_flag指示的运动矢量不存在时,由相同的合并索引值指示的但是来自另一个列表(即list(1-l0l1_flag))的相应运动矢量,可以代替使用。即,在确定第一候选的list x
1 mv不存在时,通过选择第一候选的list(1-x1)mv得到第一分区的单向预测mv;和/或,在确定第二候选的list x
2 mv不存在时,通过选择第二候选的list(1-x2)mv来获得第二分区的单向预测mv。
[0182]
在本公开的又一示例中,对于三角模式编码的cu,与第二索引(即,索引2)相关联的第二l0l1_flag(即,l0l1_flag2)未用信号发送但总是被推断。在这种情况下,仍然需要用信号发送index1、l0l1_flag1和index2语法。在一种方法中,基于l0l1_flag1的值以及当前图片是否使用后向预测来推断l0l1_flag2。更具体地来讲,对于三角模式编码的cu,如果当前图片使用后向预测,则l0l1_flag2的值被推断为l0l1_flag1的相反二进制值(即1-l0l1_flag1);如果当前图片没有使用后向预测,则推断l0l1_flag2的值与l0l1_flag1相同。此外,如果当前图片不使用后向预测,则可以进一步强制index2的值与index1的值不同,因为这两个运动矢量(一个运动矢量用于每个三角分区)都来自同一预测列表。如果index2的值等于index1,则意味着同一运动矢量会用于这两个三角分区,这从编码效率的角度来看是无用的。在这种情况下,在用信号发送index2的值时,可以在索引二值化之前对index2的值进行相应的调整,这与当前vvc设计中针对用信号发送index2的调整相同。例如,在index1的实际值小于index2的情况下,使用对应(index2-1)的cabac二值化码字来用信号发送index2的值;否则,使用与index2对应的cabac二值化码字来用信号发送index2的值。基于本公开的这个示例,可选地,还可以将具有与index1不同的值的index2的实施例应用于当前图片使用后向预测的情况,以及针对cabac二值化的相同的index2值的调整。
[0183]
在本公开的又一示例中,对于三角模式编码的cu,没有用信号发送l0l1_flag。相反,它们都是被推测出的。在这种情况下,index1和index2语法仍然需要用信号发送,分别表示从用于第一分区和第二分区的第一合并列表中选择的两个候选的合并索引值。在给定合并候选索引值的情况下,可以定义或使用某些方法来确定是否选择来自第一列表的对应合并候选的列表0运动矢量或列表1运动矢量用于三角模式预测。在一种方法中,对于index1,示于图11a的图案用于确定从哪个预测列表中选择合并候选的运动矢量用于三角模式预测;而且,对于index2,图11b中所示的模式用于确定从哪个预测列表中选择合并候选的运动矢量用于三角模式预测。换言之,如果index1是偶数值,则选择index1指示的候选的列表0运动矢量,如果index1是奇数值,则选择index1指示的候选的列表1运动矢量。对于index2,如果其为偶数值,则选择列表1运动矢量,如果其为奇数值,则选择列表0运动矢量。在不存在与某个预测列表对应的运动矢量的情况下,可以使用某个默认运动矢量来代替,例如零运动矢量或来自其它预测列表的对应运动矢量,等等。在确定从哪个预测列表中选择合并候选的运动矢量用于三角模式预测时,示于图11b中的图案可用于index1,并且图
11a中所示的图案可用于index2。即,可基于index1和index2的值来确定l0l1_flags。
[0184]
虽然本公开中的方法以三角预测模式为例进行说明,但鉴于几何合并模式可以被认为是三角预测模式的扩展或超集,本公开中说明的方法自然也适用于几何合并模式。本公开中说明的所有合并列表构建方法可以自然地用于几何合并模式而无需任何修改。同样,本公开中说明的所有用信号发送合并索引的方法可以自然地用于几何合并模式而无需任何修改。在一个示例中,根据图11a的同一合并列表构建过程用于几何合并模式。在另一示例中,根据图11b的同一合并列表构建过程用于几何合并模式。而且,值得一提的是,如果vvc中存在三角预测模式和几何合并模式,则同一合并列表构建过程可以被共享并用于三角预测模式和几何合并模式这二者。
[0185]
应该提及的是,尽管在本公开的一些示例中使用了包含5个合并候选的第一合并列表,但实际上可以不同地定义第一合并列表的大小,例如6或4,或其它一些值。在这些示例中说明的方法适用于第一合并列表的大小不是5的情况。
[0186]
在上述示例中,也可以执行运动矢量修剪。这种修剪可以完全地或部分地完成。当其部分地被执行时,意味着将新运动矢量与已经在单向预测合并列表中的一些但不是全部运动矢量进行比较。这也可以意味着在被用作用于三角预测的合并候选之前,仅一些但不是所有新运动矢量需要被检查以进行修剪。一个具体示例是,仅第二运动矢量在其被用作用于三角预测的合并候选之前针对第一运动矢量被检查以进行修剪,而所有其它运动矢量不被检查以进行修剪。在极端情况下,在该过程中不执行运动矢量修剪(即,运动矢量比较操作)。
[0187]
图15是示出了根据本公开的一些实施方式的用于视频编解码的装置的框图。装置1500可以是终端,例如移动电话、平板计算机、数字广播终端、平板设备或个人数字助理。
[0188]
如图15中所示,装置1500可包括以下组件中的一个或更多个:处理组件1502、存储器1504、电源组件1506、多媒体组件1508、音频组件1510、输入/输出(i/o)接口1512、传感器组件1514以及通信组件1516。
[0189]
处理组件1502通常控制装置1500的整体操作,诸如与显示、电话呼叫、数据通信、相机操作和录音操作相关的操作。处理组件1502可包括一个或更多个处理器1520,以用于执行指令从而完成上述方法的全部或部分步骤。进一步地,处理组件1502可包括一个或更多个模块,以促进处理组件1502与其它组件之间的交互。例如,处理组件1502可包括多媒体模块,以促进多媒体组件1508与处理组件1502之间的交互。
[0190]
存储器1504被配置为存储不同类型的数据以支持装置1500的操作。这些数据的示例包括用于在装置1500上操作的任何应用程序或方法的指令、联系人数据、电话簿数据、消息、图片、视频等。存储器1504可以由任何类型的易失性或非易失性存储设备或其组合来实施,并且存储器1504可以是静态随机存取存储器(random access memory,sram)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、可编程只读存储器(programmable read-only memory,prom)、只读存储器(read-only memory,rom)、磁存储器、闪速存储器、磁盘或光盘。
[0191]
电源组件1506为装置1500的不同组件供电。电源组件1506可包括电源管理系统、一个或更多个电源以及与为装置1500生成、管理和分配电力相关联的其它组件。
[0192]
多媒体组件1508包括提供装置1500与用户之间的输出接口的屏幕。在一些示例中,屏幕可包括液晶显示器(liquid crystal display,lcd)和触摸面板(touch panel,tp)。如果屏幕包括触摸面板,则屏幕可以被实施为从用户接收输入信号的触摸屏。触摸面板可包括用于感测触摸面板上的触摸、滑动和手势的一个或更多个触摸传感器。触摸传感器不仅可以感测触摸动作或滑动动作的边界,还可以检测与触摸或滑动操作相关的持续时间和压力。在一些示例中,多媒体组件1508可包括前置相机和/或后置相机。当装置1500处于操作模式(诸如拍摄模式或视频模式)时,前置相机和/或后置相机可以接收外部多媒体数据。
[0193]
音频组件1510被配置为输出和/或输入音频信号。例如,音频组件1510包括麦克风(microphone,mic)。当装置1500处于操作模式(诸如呼叫模式、录音模式和语音识别模式)时,麦克风被配置为接收外部音频信号。接收到的音频信号可以进一步存储在存储器1504中或经由通信组件1516发送。在一些示例中,音频组件1510进一步包括用于输出音频信号的扬声器。
[0194]
i/o接口1512提供处理组件1502与外围接口模块之间的接口。上述外围接口模块可以是键盘、点击轮、按钮等。这些按钮可包括但不限于主页按钮、音量按钮、开始按钮和锁定按钮。
[0195]
传感器组件1514包括用于为装置1500提供不同方面的状态评估的一个或更多个传感器。例如,传感器组件1514可以检测装置1500的开/关状态和组件的相对位置。例如,这些组件是装置1500的显示器和键盘。传感器组件1514还可以检测装置1500或装置1500的组件的位置变化、用户对装置1500的接触的存在或不存在、装置1500的取向或加速度/减速度、以及装置1500的温度变化。传感器组件1514可包括接近度传感器,接近度传感器被配置为在没有任何物理接触的情况下检测附近物体的存在。传感器组件1514可以进一步包括光学传感器,诸如在成像应用中使用的cmos或ccd图像传感器。在一些示例中,传感器组件1514可以进一步包括加速度传感器、陀螺仪传感器、磁传感器、压力传感器、或温度传感器。
[0196]
通信组件1516被配置为促进装置1500与其它设备之间的有线或无线通信。装置1500可以接入基于诸如wifi、4g、或其组合等通信标准的无线网络。在一种示例中,通信组件1516经由广播信道从外部广播管理系统接收广播信号或广播相关信息。在一种示例中,通信组件1516可以进一步包括用于促进短距离通信的近场通信(near field communication,nfc)模块。例如,nfc模块可以基于射频识别(radio frequency identification,rfid)技术、红外数据协会(infrared data association,irda)技术、超宽带(ultra-wide band,uwb)技术、蓝牙(bluetooth,bt)技术以及其它技术来实施。
[0197]
在一个示例中,装置1500可以由以下各项中的一项或多项来实施以执行上述方法:专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processors,dsp)、数字信号处理设备(digital signal processing devices,dspd)、可编程逻辑设备(programmable logic devices,pld)、现场可编程门阵列(field programmable gate arrays,fpga)、控制器、微控制器、微处理器或其它电子元件。
[0198]
非暂态计算机可读存储介质可以是例如硬盘驱动器(hard disk drive,hdd)、固态驱动器(solid-state drive,ssd)、闪速存储器、混合驱动器或固态混合驱动器(solid-state hybrid drive,sshd)、只读存储器(read-only memory,rom)、致密盘只读存储器
(compact disc read-only memory,cd-rom)、磁带、软盘等。
[0199]
图16是示出了根据本公开的一些实施方式的使用几何分区的用于运动补偿预测的视频编解码的示例性过程的流程图。
[0200]
在步骤1602中,处理器1520将视频图片分割成多个编码单元,多个编码单元中的至少一个被进一步分割成两个预测单元(pu)。这两个pu可包括至少一个几何形状的pu。
[0201]
在步骤1604中,处理器1520进一步将该多个编码单元中的一个编码单元分割为两个几何分区。例如,这些几何分区可包括一对三角形分区、一对楔形分区或其他几何形状的分区。
[0202]
在步骤1606中,处理器1520在为这两个几何分区中的任一个几何分区构建合并候选列表的过程期间执行预定数量的运动矢量比较操作。
[0203]
在一些示例中,处理器1520可以为编码单元配置计数器,以在将运动矢量选择到该合并候选列表中时对已经执行的运动矢量比较操作的总数进行计数。
[0204]
在一些示例中,如果处理器1520确定计数器小于预定数量,则处理器1520可以执行运动矢量比较操作以检查当前运动矢量是否不同于该合并候选列表中的该运动矢量.
[0205]
在一些示例中,如果处理器1520执行运动矢量比较操作,则处理器1520可以增加该计数器。
[0206]
在一些示例中,如果处理器1520确定该计数器达到该预定数量,则处理器1520可以将当前运动矢量添加到该合并候选列表中而不执行运动矢量比较操作。
[0207]
在一些示例中,每个运动矢量比较操作可包括比较图片顺序计数(poc)值与运动矢量或比较参考图片索引与运动矢量。
[0208]
在一些示例中,为了构建合并候选列表,处理器1520可基于用于常规合并预测的合并列表构建过程,构建包括多个候选的第一合并列表。多个候选中的每一个候选可包括列表0运动矢量或列表1运动矢量或列表0运动矢量和列表1运动矢量这两者。然后,处理器1520可以通过基于该多个候选的合并索引选择该多个候选的该列表0运动矢量或该列表1运动矢量来获得两个几何分区中的任一个几何分区的运动矢量。
[0209]
在一些示例中,处理器1520可基于执行的运动矢量比较操作的总数来确定是否对针对这两个几何分区中的任一个几何分区获得的运动矢量执行运动矢量比较操作。该总数不超过该预定数量。
[0210]
在一些示例中,如果处理器1520确定预定数量等于1,则处理器1520可以通过以下方式从第一合并列表中的第一候选获得第一运动矢量:如果第一个候选的列表0运动矢量可用,则选择第一候选的该列表0运动矢量进入该合并候选列表;如果第一候选的该列表0运动矢量不可用,则将第一候选的列表1运动矢量选择进入该合并候选列表中。
[0211]
在一些示例中,处理器1520可以通过以下方式从第一合并列表中的第二候选获得第二运动矢量:如果第二候选的列表1运动矢量可用,则选择第二候选的该列表1运动矢量;如果第二候选的该列表1运动矢量不可用,则选择第二候选的列表0运动矢量;将第二运动矢量与合并候选列表中的第一运动矢量进行比较;如果第二运动矢量与第一运动矢量不同,则将第二运动矢量加入到合并候选列表中。
[0212]
在一些示例中,如果处理器1520确定第一合并列表中的第二候选之后的候选具有奇数合并索引,如果该候选的列表1运动矢量不可用,则处理器1520可将该候选的该列表1
运动矢量选择进入到合并候选列表中;如果该候选的该列表1运动矢量可用,则将该候选的列表0运动矢量选择进入到该合并候选列表中。如果处理器1520确定候选具有偶数合并索引,如果该候选的该列表0运动矢量可用,则处理器1520可将该候选的该列表0运动矢量选择进入到合并候选列表中;如果该候选的该列表0运动矢量不可用,则将该候选的该列表1运动矢量选择进入到该合并候选列表中。如果处理器1520在处理完该第一合并列表中的所有候选之后确定合并候选列表不满,则处理器1520可将零矢量添加到合并候选列表中。
[0213]
在一些示例中,合并候选列表中的运动矢量的合并索引可等于该第一合并列表中的相应的候选的合并索引减去在获得该运动矢量之前被修剪的候选的数量。
[0214]
在一些示例中,该第一合并列表中的候选的该列表0运动矢量和该列表1运动矢量的选择顺序可以基于该第一合并列表中该候选的合并索引的奇偶性。
[0215]
在一些示例中,处理器1520可以解码和解析运动矢量的合并索引。处理器1520可基于运动矢量修剪结果和解析的合并索引来得到第一合并列表中的相应的候选的合并索引。然后,处理器1520可基于第一合并列表中相应的候选的合并索引的奇偶性,在第一合并列表中选择用于该编码单元的相应的候选的列表0运动矢量或列表1运动矢量。
[0216]
在一些示例中,该第一合并列表中的候选的列表0运动矢量和列表1运动矢量的选择顺序可以基于该合并候选列表中的运动矢量修剪后获得的运动矢量的合并索引的奇偶性。
[0217]
在一些示例中,处理器1520可以解码和解析运动矢量的合并索引。处理器1520可以基于运动矢量修剪结果和解析的合并索引,得到第一合并列表中的相应的候选的合并索引。然后,处理器1520可基于解析的合并索引的奇偶性,选择该第一合并列表中的用于该编码单元的相应的候选的列表0运动矢量或列表1运动矢量。
[0218]
在一些示例中,提供了一种视频编解码装置。该装置包括处理器1520;以及存储器1504,存储器1504被配置为存储可由该处理器执行的指令;其中,该处理器在执行这些指令时被配置为执行如图16中所示的方法。
[0219]
在一些其它示例中,提供了一种非暂态计算机可读存储介质1504,其中存储有指令。当这些指令由处理器1520执行时,这些指令使处理器执行如图16中所示的方法。
[0220]
本公开的描述已经出于说明目的被呈现,并且不旨在穷举的或限于本公开。受益于在以上描述和相关联的附图中呈现的教导,许多修改、变化和备选实施方式对于本领域普通技术人员将是显而易见的。
[0221]
选择和描述示例是为了解释本公开的原理,并且使本领域的其他技术人员能够理解本公开的各种实施方式,并且最好地利用基本原理和具有适合于预期的特定用途的各种修改的各种实施方式。因此,将理解,本公开的范围不限于所公开的实施方式的具体示例,并且修改和其他实施方式旨在被包括在本公开的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1