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

带有协调运动场存储和运动补偿的几何分割模式的制作方法

2022-04-09 11:25:54 来源:中国专利 TAG:

带有协调运动场存储和运动补偿的几何分割模式
1.本技术要求于2020年8月26日递交的美国专利申请第17/003,733号的优先权,该美国专利申请要求于2019年8月30日递交的美国临时专利申请第62/894,575号的优先权,通过引用将每个申请的完整内容并入本文。
技术领域
2.本公开涉及视频编码和视频解码。


背景技术:

3.数字视频功能能够集成到广泛的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(pda)、便携式或台式计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝式或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流传输设备等。数字视频设备实施视频编解码技术,诸如那些在由mpeg-2、mpeg-4、itu-t h.263、itu-t h.264/mpeg-4第10部分、高级视频编解码(avc)、itu-t h.265/高效视频编解码(hevc)所定义的标准以及此类标准的扩展中所描述的技术。通过实施此类视频编解码技术,视频设备可以更高效地发送、接收、编码、解码和/或存储数字视频信息。
4.视频编解码技术包括空域(图片内)预测和/或时域(图片间)预测来减少或消除视频序列中固有的冗余。对于基于块的视频编解码,可以将视频条带(例如,视频图片或视频图片的一部分)分割为视频块,其也可以称为编解码树单元(ctu)、编解码单元(cu)和/或编解码节点。对于图片的帧内编解码(i)条带中的视频块,可以使用相对于同一图片中相邻块中的参考样点的空域预测进行编码。对于图片的帧间编解码(p或b)条带中的视频块,可以使用相对于同一图片中邻近块中的参考样点的空域预测或者相对于其他参考图片中的参考样点的时域预测。图片可以称为帧,并且参考图片可以称为参考帧。


技术实现要素:

5.一般地,本公开描述了用于诸如通过简化几何分割(geo)模式的存储来降低帧间预测复杂度的技术。示例技术可以提供对具有实际应用的技术问题的技术解决方案,以改进视频编解码器(例如,视频编码器或视频解码器)的操作。
6.例如,在geo模式中,视频编解码器(例如,视频编码器或视频解码器)将当前块分割为第一分割和第二分割。视频编解码器确定第一分割的第一运动矢量和第二分割的第二运动矢量,并基于相应运动矢量确定第一预测块和第二预测块。视频编解码器将第一预测块和第二预测块进行混合作为生成当前块的最终预测块的一部分。
7.在geo中,针对当前块的运动矢量存储(例如,稍后存储和利用的运动矢量),视频编解码器将当前块划分为子块,并为每个子块存储一个或多个运动矢量。本公开描述了用于确定针对每个子块存储哪一个或多个运动矢量的示例技术。例如,针对每个子块存储的运动矢量可能影响当前块的去方块滤波,或者可能影响用于对后续块进行编解码的运动矢
量候选列表构建。通过利用本公开中描述的示例技术,视频编解码器可以存储运动矢量,并且当使用所存储的运动矢量时(例如,在去方块或运动矢量候选列表构建中)提供视频编解码增益。
8.在一个示例中,本公开描述了一种对视频数据进行处理的方法,该方法包括:确定以几何分割模式进行编解码的视频数据的当前块的第一分割和该视频数据的当前块的第二分割;基于第一分割的第一运动矢量确定视频数据的第一预测块以及基于第二分割的第二运动矢量确定该视频数据的第二预测块;基于指示对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重来对第一预测块和第二预测块进行混合以生成当前块的最终预测块;将当前块划分为多个子块;确定子块子集,其中每个子块包括至少一个样点,该样点对应于最终预测块中的预测样点,该最终预测块是基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的;以及为所确定的子块子集中的每个子块存储相应双向预测运动矢量。
9.在一个示例中,本公开描述了一种对视频数据进行处理的设备,该设备包括被配置为存储视频数据的存储器以及耦合到该存储器的处理电路,该处理电路被配置为:确定以几何分割模式进行编解码的视频数据的当前块的第一分割和该视频数据的当前块的第二分割;基于第一分割的第一运动矢量确定来自存储的视频数据的第一预测块以及基于第二分割的第二运动矢量确定来自存储的视频数据的第二预测块;基于指示对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重来对第一预测块和第二预测块进行混合以生成当前块的最终预测块;将当前块划分为多个子块;确定子块子集,其中每个子块包括至少一个与最终预测块中的预测样点相对应的样点,该最终预测块是基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的;以及为所确定的子块子集中的每个子块存储相应双向预测运动矢量。
10.在一个示例中,本公开描述了一种在其上存储指令的计算机可读存储介质,该指令在被执行时使用于对视频数据进行处理的设备的一个或多个处理器:确定以几何分割模式进行编解码的视频数据的当前块的第一分割和该视频数据的当前块的第二分割;基于第一分割的第一运动矢量确定视频数据的第一预测块以及基于第二分割的第二运动矢量确定该视频数据的第二预测块;基于指示对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重来对第一预测块和第二预测块进行混合以生成当前块的最终预测块;将当前块划分为多个子块;确定子块子集,其中每个子块包括至少一个样点,该样点对应于最终预测块中的预测样点,该最终预测块是基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的;以及为所确定的子块子集中的每个子块存储相应双向预测运动矢量。
11.在一个示例中,本公开描述了一种用于对视频数据进行处理的设备,该设备包括:用于确定以几何分割模式进行编解码的视频数据的当前块的第一分割和该视频数据的当前块的第二分割的部件;用于基于第一分割的第一运动矢量确定视频数据的第一预测块以及基于第二分割的第二运动矢量确定该视频数据的第二预测块的部件;用于基于指示对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重来对第一预测块和第二预测块进行混合以生成当前块的最终预测块的部件;用于将当前块划分为多个子块的部件;用于确定子块子集的部件,其中每个子块包括至少一个样点,该样点对应于
最终预测块中的预测样点,该最终预测块是基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的;以及用于为所确定的子块子集中的每个子块存储相应双向预测运动矢量的部件。
12.在附图和以下描述中阐述一个或多个示例的细节。根据说明书、附图和权利要求书,其他特征、目的和优势将显而易见。
附图说明
13.图1是示出可以执行本公开的技术的示例视频编码和解码系统的框图。
14.图2a和2b是示出示例四叉树二叉树(qtbt)结构和相对应的编解码树单元(ctu)的概念示意图。
15.图3是示出可以执行本公开的技术的示例视频编码器的框图。
16.图4是示出可以执行本公开的技术的示例视频解码器的框图。
17.图5a和5b是分别示出基于帧间预测的对角线划分和反对角线划分三角分割的示例的概念图。
18.图6是示出用于构建候选列表的示例空间和时间相邻块的概念图。
19.图7是示出用于三角分割模式的运动矢量预测选择的表。
20.图8a和8b是分别示出用于亮度分量和色度分量的混合处理的权重的概念图。
21.图9是示出如应用于几何分割模式(geo)的三角分割模式(tpm)的示例的概念图。
22.图10是示出geo分割信令的示例的概念图。
23.图11是示出用于geo预测的帧间预测块的部分变换的示例的概念图。
24.图12是示出部分变换的类去方块过程的示例的概念图。
25.图13是示出包括tpm角度机上0
°
和90
°
角度的geo角度的示例的概念图。
26.图14是示出具有以虚线示出的边界框的geo模式的示例的概念图。
27.图15a和图15b是示出应用于tpm的权重的示例的概念图。
28.图16是示出具有宽度和高度为2的幂数的虚拟边界框的边界框中的geo边的示例的概念图。
29.图17a和图17b是示出假想cu中的当前编解码单元(cu)的概念图,其中当前cu通过对假想cu的掩码的部分权重值进行采样来形成其掩码。
30.图18a-图18d是示出当前cu在假想cu中的支撑角的概念图。
31.图19a和图19b是示出当cu在起点处从一个角划分时的支撑角的概念图。
32.图20是示出对具有偏移的假想cu中的权重值进行采样的示例的概念图。
33.图21是示出用于对当前块进行处理的示例方法的流程图。
具体实施方式
34.在视频编解码中,视频编码器使用帧间预测或帧内预测对当前块进行编码。在帧间预测和帧内预测中,视频编码器生成当前块的预测块,确定当前块与预测块之间的差(例如,残差块),并信令通知指示该残差块的信息。视频编码器还可以信令通知预测模式,该预测模式指示生成预测块的方式。视频解码器接收预测模式信息和残差块信息,基于信令通知的预测模式信息来生成预测块,并将预测块加到残差块上以重建当前块。在帧间预测中,
预测块是从由运动矢量识别的样点生成的,并且可以是与包括当前块的图片不同的图片中的样点。在帧内预测中,预测块是从与当前块相同的图片中的样点(诸如与当前块相邻的样点)生成的。
35.帧间预测的一个示例是几何分割(geo)模式。在geo模式下,视频编码器将当前块分割为两个分割。将当前块分割为两个分割的分割线可以是对角线,并且尽管可能,但不需要从当前块的角开始或结束(例如,尽管可能,分割的角度不需要是45度)。视频编码器可以确定第一分割的第一运动矢量和第二分割的第二运动矢量。在一些示例中,视频编码器可以基于第一运动矢量来识别第一预测块,并且基于第二运动矢量来识别第二预测块。
36.然后,视频编码器200可以使用加权来对第一预测块和第二预测块进行混合以生成最终预测块。例如,对于接近分割线的样点,视频编码器可对来自第一预测块和第二预测块的样点进行相等地缩放,并将所得值相加以生成最终预测块中的样点。然而,对于接近最终预测块边界的样点,视频编码器可以仅利用来自第一预测块或第二预测块的样点来生成最终预测块中的样点。对于分割线和边界之间的样点,视频编码器可以使第一预测块或第二预测块之一的样点的权重大于第一预测块或第二预测块中的另一个的样点的权重,以用于混合。
37.在geo模式下,视频编码器可以确定当前块与最终预测块之间的残差,以及信令通知指示该残差的信息。视频编码器还可以信号通知指示当前块以geo模式进行编码的信息、指示分割线的信息、以及用于确定第一运动矢量和第二运动矢量以及该第一运动矢量和第二运动矢量所指向的参考图片的信息。
38.视频解码器可以基于接收的指示分割线的信息来对当前块进行分割,基于接收的信息确定两个预测块以确定第一运动矢量和第二运动矢量,并生成最终预测块(例如使用加权混合)。视频解码器然后可以将最终预测块加到残差上以重建当前块。
39.然后,视频编码器和视频解码器可以存储当前块的运动矢量信息。存储的当前块的运动矢量信息可以被用于对当前块进行去方块滤波(例如,以确定边界强度值)或构建用于对后续块进行编码或解码的运动矢量候选列表。
40.本公开描述了用于确定要存储的当前块的运动矢量信息的示例技术。所存储的运动矢量信息可能影响去方块滤波的质量或运动矢量候选列表中用于对后续块进行编码或解码的运动矢量信息的鲁棒性。质量去方块滤波可以是指沿着来自去方块滤波的块的边界的视觉伪影的减少量。运动矢量信息的鲁棒性是指倾向于与后续块的运动矢量相似的候选运动矢量。通过利用本公开中描述的示例技术,视频编码器和视频解码器可以在运动矢量候选列表中存储潜在地提供更高质量去方块滤波和更鲁棒的运动矢量信息的当前块的运动矢量信息。
41.在一个或多个示例中,视频编码器和视频解码器可以将当前块划分为多个子块(例如,4
×
4个子块)。视频编码器和视频解码器可以为每个子块存储运动矢量信息。根据本公开中描述的一个或多个示例,视频编码器和视频解码器可以确定子块中的任何样点是否具有通过对第一预测块中的样点和第二预测块中的样点进行相等加权而生成的最终预测块中的对应样点。
42.如果子块包括具有在通过对第一预测块中的样点和第二预测块中的样点进行相等加权而生成的最终预测块中的对应样点的样点,则视频编码器和视频解码器可以确定双
向预测运动矢量。应当理解,尽管可能,但“双向预测运动矢量”并不一定意味着存在两个运动矢量。相反,可以存在视频编码器和视频解码器执行以确定双向预测运动矢量的示例操作。例如,如果用于识别第一预测块和第二预测块的第一运动矢量或第二运动矢量引用不同参考图片列表中的参考图片,则视频编码器和视频解码器可以为子块存储第一运动矢量和第二运动矢量作为该子块的双向预测运动矢量。如果第一运动矢量和第二运动矢量引用同一参考图片中的参考图片,则视频编码器和视频解码器可以选择该第一运动矢量或第二运动矢量之一作为双向预测运动矢量。
43.如果子块不包括具有在通过对第一预测块中的样点和第二预测块中的样点进行相等加权而生成的最终预测块中的对应样点的样点,则视频编码器和视频解码器可以存储该第一运动矢量或第二运动矢量作为该子块的运动矢量。视频编码器和视频解码器是存储第一运动矢量还是存储第二运动矢量可以基于子块在当前块中的位置。例如,如果子块的大部分驻留在第一分割中,则视频编码器和视频解码器可以为该子块存储第一运动矢量。如果子块的大部分驻留在第二分割中,则视频编码器和视频解码器可以为该子块存储第二运动矢量。
44.图1是示出可执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常针对对视频数据进行编解码(编码和/或解码)。一般地,视频数据包括用于处理视频的任何数据。从而,视频数据可以包括原始的未编码的视频、编码的视频、解码的(例如重建的)视频以及视频元数据(诸如,信令通知的数据)。
45.如图1所示,在此示例中,系统100包括提供将由目标设备116进行解码和显示的编码的视频数据的源设备102。具体地,源设备102经由计算机可读介质110将视频数据提供给目标设备116。源设备102和目标设备116可以包括多种设备中的任何一种,包括台式计算机、笔记本(即膝上型计算机)、平板电脑、机顶盒、手持电话(如智能手机)、电视、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流传输设备等。在一些情况下,源设备102和目标设备116可以被配备用于无线通信,并且因此可以称为无线通信设备。
46.在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目标设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目标设备116的视频解码器300可以被配置为应用用于统一三角预测模式(tpm)和几何分割模式(geo)的运动场存储和运动权重推导的技术。因而,源设备102表示视频编码设备的示例,而目标设备116表示视频解码设备的示例。在其他示例中,源设备和目标设备可以包括其他组件或布置。例如,源设备102可以从诸如外部照相机的外部视频源接收视频数据。同样,目标设备116可以与外部显示设备通过接口相连接,而不包括集成的显示设备。
47.如图1所示的系统100仅是一个示例。一般地,任何数字视频编码和/或解码设备可以执行用于统一三角预测模式(tpm)和几何分割模式(geo)的运动场存储和运动权重推导的技术。源设备102和目标设备116仅仅是此类编解码设备的示例,其中,源设备102生成用于传输到目标设备116的编解码视频数据。本公开将“编解码”设备表示为执行数据编解码(编码和/或解码)的设备。从而,视频编码器200和视频解码器300表示编解码设备的示例,具体地,分别是视频编码器和视频解码器。在一些示例中,源设备102和目标设备116可以用基本上对称的方式操作,使得源设备102和目标设备116中的每一个均包括视频编码和解码
组件。于是,系统100可以支持源设备102和目标设备116之间的单向或双向视频传输,例如用于视频流、视频回放、视频广播或者视频电话。
48.一般地,视频源104表示视频数据源(即原始的未编码的视频数据),并将视频数据的连续的图片(也称为“帧”)序列提供给视频编码器200,其对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,诸如照相机、包括先前捕获的原始视频的视频档案和/或从视频内容提供商接收视频的视频馈送接口。作为进一步的替代方案,视频源104可以生成基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收顺序(有时称为“显示顺序”)重新排列为用于编解码的编解码顺序。视频编码器200可以生成包括编码的视频数据的比特流。然后,源设备102可以经由输出接口108将编码的视频数据输出到计算机可读介质110上,以供例如目标设备116的输入接口122进行接收和/或检索。
49.源设备102的存储器106和目标设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如来自视频源104的原始视频和来自视频解码器300的原始的解码的视频数据。附加地或可替代地,存储器106、120可以分别存储可由例如视频编码器200和视频解码器300执行的软件指令。尽管在此示例中存储器106和存储器120与视频编码器200和视频解码器300分开示出,但是应当理解的是,视频编码器200和视频解码器300还可以包括实现功能上相似或等效目的的内部存储器。进一步来说,存储器106、120可以存储例如从视频编码器200输出并输入到视频解码器300的编码的视频数据。在一些示例中,存储器106、120的一些部分可以分配为一个或多个视频缓冲区,例如用来存储原始的解码和/或编码视频数据。
50.计算机可读介质110可以表示能够将编码的视频数据从源设备102传输到目标设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示通信介质以使源设备102能够例如经由无线电网络或基于计算机的网络将编码的视频数据实时地直接传输到目标设备116。根据诸如无线通信协议的通信标准,输出接口108可以对包括编码的视频数据的传输信号进行调制,并且输入接口122可以对接收到的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,诸如无线电(rf)频谱或者一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,诸如局域网、广域网或诸如因特网的全球网络。通信介质可以包括路由器、交换机、基站或有助于从源设备102到目标设备116的通信的任何其他装备。
51.在一些示例中,源设备102可以向文件服务器114或可存储由源设备102生成的编码的视频数据的另一中间存储设备输出编码的视频数据。目标设备116可以经由流传输或下载来访问来自文件服务器114的存储的视频数据。
52.文件服务器114可以是能够存储编码的视频数据并将编码的视频数据发送到目标设备116的任何类型的服务器设备。文件服务器114可以代表web服务器(例如,用于网站)、被配置为提供文件传输协议服务(例如,文件传输协议(ftp)或通过单向传输的文件传递(flute)协议)的服务器、内容传递网络(cdn)设备、超文本传输协议(http)服务器、多媒体广播多播服务(mbms)或增强的mbms(embms)服务器和/或网络附加存储(nas)设备。文件服务器114可以附加地或可替代地实现一个或多个http流传输协议,诸如http上的动态自适
应流传输(dash)、http实时流传输(hls)、实时流传输协议(rtsp)、http动态流传输等。
53.目标设备116可以通过包括因特网连接的任何标准数据连接来访问来自文件服务器114的编码的视频数据。这可以包括无线信道(例如wi-fi连接)、有线连接(例如数字订户电路(dsl)、电缆调制解调器等)或者适合访问存储在文件服务器114上的编码的视频数据的二者的组合。输入接口122可以被配置为根据上面讨论的用于从文件服务器114检索或接收媒体数据的各种协议中的任何一个或多个协议,或者用于检索媒体数据的其他此类协议来进行操作。
54.输出接口108和输入接口122可以表示无线发射器/接收器、调制解调器、有线联网组件(例如以太网卡)、根据各种ieee 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以配置为根据诸如4g、4g-lte(长期演进)、lte高级、5g或类似标准的蜂窝通信标准来传输诸如编码的视频数据的数据。在输出接口108包括无线发射器的某些示例中,输出接口108和输入接口122可以配置为根据其他无线标准,诸如ieee 802.11规范、ieee 802.15规范(例如zigbee
tm
)、蓝牙
tm
标准等来传输诸如编码的视频数据的数据。在一些示例中,源设备102和/或目标设备116可以包括各自的片上系统(soc)设备。例如,源设备102可以包括soc设备来执行归于视频编码器200和/或输出接口108的功能,并且目标设备116可以包括soc设备来执行归于视频解码器300和/或输入接口122的功能。
55.本公开的技术可以应用于支持各种多媒体应用中的任何一种的视频编解码,多媒体应用诸如空中电视广播、有线电视传输、卫星电视传输、诸如基于http的动态自适应流传输(dash)的互联网流传输视频传输、编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频的解码或者其他应用。
56.目标设备116的输入接口122从计算机可读介质110(例如通信介质、存储设备112、文件服务器114等)接收编码的视频比特流。编码的视频比特流可以包括由视频编码器200定义的、也由视频解码器300使用的信令信息,诸如语法元素,该语法元素具有描述视频块或其他编解码单元(例如条带、图片、图片组、序列等)的特性和/或处理的值。显示设备118向用户显示解码视频数据的解码图片。显示设备118可以表示各种显示设备中的任何一种,诸如阴极射线管(crt)、液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一类显示设备。
57.尽管未在图1中示出,但在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成在一起,并且可以包括适当的mux-demux单元或其他硬件和/或软件,来处理公共数据流中包括音频和视频的多路复用流。如果适用,mux-demux单元可以符合itu h.223多路复用器协议或诸如用户数据报协议(udp)的其他协议。
58.视频编码器200和视频解码器300可以各自实现为各种合适的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。当该技术部分地在软件中实施时,设备可以将用于软件的指令存储在合适的非暂时计算机可读介质中,并使用一个或多个处理器在硬件中执行该指令来执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,这两者任一个都可以集成为各自设备中组合编码器/解码器(codec)的一部分。包括视频编码器200和/或视
频解码器300的设备可以包括集成电路、微处理器和/或诸如蜂窝电话的无线通信设备。
59.视频编码器200和视频解码器300可以根据视频编解码标准(诸如itu-t h.265,也称为高效视频编解码(hevc))或其扩展(诸如多视图和/或可缩放的视频编解码扩展)来操作。作为替代,视频编码器200和视频解码器300可以根据其他专有或工业标准,诸如itu-t h.266(也被称为多功能视频编解码(vvc))。在以下中描述了vvc标准的最近草案:bross等人的“多功能视频编码(草案6)”,itu-t sg 16wp3和iso/iec jtc 1/sc 29/wg 11联合视频专家组(jvet),第15次会议:哥德堡,瑞典,2019年7月3日至12日,jvet-o2001-ve(以下称为“vvc草案6”)。在以下中描述了vvc标准的更近期草案:bross等人的“多功能视频编码(草案10)”,itu-t sg 16wp3和iso/iec jtc 1/sc 29/wg 11联合视频专家组(jvet),第18次会议:电话会议,2020年6月22日至7月1日,jvet-s2001-va(以下称为“vvc草案10”)。但是,本公开的技术不限于任何特定的编解码标准。
60.一般地,视频编码器200和视频解码器300可以执行图片的基于块的编解码。术语“块”一般是指包括待处理的(例如待编码、待解码或以其他方式在编码和/或解码过程中使用的)数据的结构。例如,块可以包括亮度和/或色度数据的二维样点矩阵。一般地,视频编码器200和视频解码器300可以对以yuv(例如y、cb、cr)格式表示的视频数据进行编解码。也就是说,视频编码器200和视频解码器300可以对亮度和色度分量进行编解码,其中色度分量可以包括红色色调和蓝色色调色度分量两者,而不是对图片的样点的红色、绿色和蓝色(rgb)数据进行编解码。在一些示例中,视频编码器200在编码之前将接收到的rgb格式的数据转换成yuv表示,并且视频解码器300将yuv表示转换成rgb格式。可替代地,预处理和后处理单元(未示出)可以执行这些转换。
61.本公开通常涉及图片的编解码(例如编码和解码),以包括对图片数据进行编码或解码的过程。类似地,本公开可以涉及对图片的块进行编解码以包括对块的数据进行编码或解码的过程,例如预测和/或残差编解码。编码的视频比特流一般包括用于表示编解码决策(例如编解码模式)以及图片到块的分割的语法元素的一系列值。从而,对图片或块进行编解码的引用一般应理解为对形成图片或块的语法元素的值进行编解码。
62.hevc定义各种的块,包括编解码单元(cu)、预测单元(pu)和变换单元(tu)。根据hevc,视频编解码器(诸如视频编码器200)根据四叉树结构将编解码树单元(ctu)分割为cu。也就是说,视频编解码器将ctu和cu分割为四个相等的非重叠正方形,并且四叉树的每一个节点具有零个或四个子代(child)节点。没有子代节点的节点可以称为“叶节点”,并且这种叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频编解码器可以进一步分割pu和tu。例如,在hevc中,残差四叉树(rqt)表示tu的分割。在hevc中,pu表示帧间预测数据,tu表示残差数据。帧内预测的cu包括帧内预测信息,诸如帧内模式指示。
63.作为另一示例,视频编码器200和视频解码器300可以配置为根据vvc进行操作。根据vvc,视频编解码器(诸如视频编码器200)将图片分割为多个编解码树单元(ctu)。视频编码器200可以根据诸如四叉树-二叉树(qtbt)结构或多类型树(mtt)结构的树结构来对ctu进行分割。qtbt结构消除了多个分割类型的概念,诸如hevc的cu、pu和tu之间的分离。qtbt结构包括两个级别:根据四叉树分割而分割的第一级,以及根据二叉树分割而分割的第二级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于编解码单元(cu)。
64.在mtt分割结构中,可以使用四叉树(qt)分割、二叉树(bt)分割以及一种或多种类
型的三叉树(tt)(也称为三元树(tt))分割来对块进行分割。三叉树或三元树分割是将块分为三个子块的分割方式。在一些示例中,三叉树或三元树分割将块划分为三个子块,而不通过中心来划分原始块。mtt中的分割类型(例如,qt、bt和tt)可以是对称的或不对称的。
65.在一些示例中,视频编码器200和视频解码器300可以使用单个qtbt或mtt结构来表示亮度和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个qtbt或mtt结构,诸如用于亮度分量的一个qtbt/mtt结构和用于两个色度分量的另一个qtbt/mtt结构(或者用于相应色度分量的两个qtbt/mtt结构)。
66.视频编码器200和视频解码器300可以被配置为使用依照hevc的四叉树分割、qtbt分割、mtt分割或其他分割结构。出于说明的目的,关于qtbt分割呈现了了本公开的技术的描述。然而,应该理解的是,本公开的技术还可以应用于配置使用四叉树分割或其他类型的分割的视频编解码器。
67.可以在图片中以各种方式将块(例如,ctu或cu)分组。作为一个示例,砖块(brick)可以指图片中特定图块(tile)中的ctu行的矩形区域。图块可以是图片中的特定图块列和特定图块行中的ctu的矩形区域。图块列指的是具有等于图片高度的高度和由语法元素(例如,诸如在图片参数集中)指定的宽度的ctu的矩形区域。图块行指的是具有由语法元素(例如,诸如在图片参数集中)指定的高度和等于图片宽度的宽度的ctu的矩形区域。
68.在一些示例中,可以将图块分割为多个砖块,每个砖块可以包括该图块中的一个或多个ctu行。没有被分割为多个砖块的图块也可以称为砖块。但是,作为图块的真子集的砖块不能称为图块。
69.图片中的砖块也可以在条带中排列。条带可以是图片的整数数量的砖块,其可以被排他地包含在单个网络抽象层(nal)单元中。在一些示例中,条带包括多个完整图块或仅包括一个图块的连续序列的完整砖块。
70.本公开可以互换地使用“n
×
n”和“n乘n”来指块(诸如cu或其他视频块)在垂直和水平维度方面的样点维度,例如16
×
16个样点或16乘16个样点。一般地,16
×
16的cu在垂直方向上将有16个样点(y=16),在水平方向上将有16个样点(x=16)。同样地,n
×
n的cu一般地在垂直方向上具有n个样点,在水平方向上具有n个样点,其中n表示非负整数值。cu中的样点可以按行和列来排列。此外,cu在水平方向上不必具有与垂直方向上相同数量的样点。举例来说,cu可以包含n
×
m个样点,其中m不一定等于n。
71.视频编码器200对表示预测和/或残差信息以及其他信息的cu的视频数据进行编码。预测信息指示将如何预测cu以便形成用于cu的预测块。残差信息一般表示编码前cu的样点与预测块之间的逐样点差异。
72.为了预测cu,视频编码器200一般地可以通过帧间预测或帧内预测来形成cu的预测块。帧间预测一般是指从先前编解码的图片的数据中预测cu,而帧内预测一般是指从同一图片的先前编解码的数据中预测cu。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索以识别例如在cu和参考块之间的差异的方面与cu紧密地匹配的参考块。视频编码器200可以使用绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)或其他此类差计算来计算差度量以确定参考块是否与当前cu紧密地匹配。在某些示例中,视频编码器200可以使用单向预测或双向预测来预测当前cu。
73.vvc还可以提供仿射运动补偿模式,其可以视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或更多个运动矢量,诸如放大或缩小、旋转、透视运动或其他不规则运动类型。
74.为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。vvc可以提供六十七种帧内预测模式,包括各种方向的模式以及平面模式和dc模式。一般地,视频编码器200选择帧内预测模式,其描述当前块(例如cu的块)的相邻样点,从该相邻样点预测当前块的预测样点。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对ctu和cu进行编解码,则此类样点通常可以在与当前块相同的图片中在当前块的上方、上左侧或左侧。
75.视频编码器200对表示当前块的预测模式的数据进行编码。举例来说,对于帧间预测模式,视频编码器200可以对数据进行编码,该数据表示使用了各种可用帧间预测模式中的哪一种以及对应模式的运动信息。对于单向或双向帧间预测,例如视频编码器200可以使用高级运动矢量预测(amvp)或合并(merge)模式来对运动矢量进行编码。视频编码器200可以使用类似模式来对仿射运动补偿模式的运动矢量进行编码。
76.在预测(诸如块的帧内预测或帧间预测)之后,视频编码器200可以计算块的残差数据。残差数据(诸如残差块)表示块与该块的预测块之间的逐样点差异,预测块是使用对应预测模式形成。视频编码器200可以将一个或多个变换应用于残差块以在变换域而非样点域中产生变换数据。举例来说,视频编码器200可以将离散余弦变换(dct)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在一次变换之后应用二次变换,诸如模式依赖的不可分二次变换(mdnsst)、信号依赖的变换、karhunen-loeve变换(klt)等。视频编码器200在应用一个或多个变换之后产生变换系数。
77.如上所述,在进行任何变换以产生变换系数之后,视频编码器200可以对变换系数执行量化。量化通常是指对变换系数进行量化来可能地减少用于表示变换系数的数据量,从而提供进一步的压缩的过程。通过执行量化过程,视频编码器200可以减小与系数中的一些或所有变换系数相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值向下舍入到m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以执行要量化的值的按比特右移。
78.量化之后,视频编码器200可以扫描变换系数,从而从包括量化变换系数的二维矩阵中产生一维矢量。可以将扫描设计为将较高能量(因此频率较低)的变换系数放在矢量的前面,并将较低能量(因此频率较高)的变换系数放在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描顺序来对量化变换系数进行扫描以产生序列化的矢量,然后对矢量的量化变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在对量化变换系数进行扫描以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术编解码(cabac)来对一维矢量进行熵编码。视频编码器200还可以对语法元素的值进行熵编码,语法元素描述与视频解码器300在解码视频数据中使用的编码的视频数据相关联的元数据。
79.为了执行cabac,视频编码器200可以将上下文模型内的上下文分配给待传输的符号。例如,上下文可以涉及符号的相邻值是否是零值。概率确定可以基于分配给符号的上下文。
80.视频编码器200可以进一步地生成例如在图片标头、块标头、条带标头中到视频解码器300的语法数据,诸如基于块的语法数据、基于图片的语法数据以及基于序列的语法数据,或者生成其他语法数据,诸如序列参数集(sps)、图片参数集(pps)或视频参数集(vps)。视频解码器300可以类似地对此类语法数据进行解码以确定如何解码对应的视频数据。
81.以此方式,视频编码器200可以生成包括编码的视频数据的比特流,例如描述将图片分割成块(例如cu)以及块的预测和/或残差信息的语法元素。最终,视频解码器300可以接收比特流并且解码编码的视频数据。
82.一般地,视频解码器300执行由视频编码器200执行的相反过程以对比特流的编码的视频数据进行解码。例如,视频解码器300可以使用cabac,以与视频编码器200的cabac编码过程基本相似(尽管与之相反)的方式,对比特流的语法元素的值进行解码。语法元素可以定义分割信息,该分割信息用于将图片分割为ctu和根据比如诸如qtbt结构的对应分割结构对每一个ctu进行分割以定义ctu的cu。语法元素可以进一步定义视频数据的块(例如cu)的预测和残差信息。
83.例如,可以由量化变换系数表示残差信息。视频解码器300可以对块的量化变换系数进行逆量化和逆变换以重现该块的残差块。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关的预测信息(例如用于帧间预测的运动信息)来形成块的预测块。然后,视频解码器300可以(在逐样点的基础上)组合预测块和残差块以再现原始块。视频解码器300可以执行附加处理(诸如执行去方块过程)来减少沿块边界的视觉伪影。
84.根据本公开的技术,视频编解码器(例如,视频编码器200或视频解码器300)可以被配置为执行示例技术。例如,视频编码器200和视频解码器300可以被配置成以geo模式(也被称为几何分割模式(gpm))对当前块进行帧间预测。在geo模式下,视频编码器200和视频解码器300可以将当前块分割为第一分割和第二分割(例如,基于将当前块划分为第一分割和第二分割的分割线)。对于每个分割,视频编码器200和视频解码器300可以确定运动矢量(即,用于第一分割的第一运动矢量和用于第二分割的第二运动矢量)。视频编码器200和视频解码器300可以基于第一运动矢量来识别第一预测块,并且基于第二运动矢量来识别第二预测块。
85.视频编码器200和视频解码器300可以对第一预测块和第二预测块进行混合以生成最终预测块。作为混合的一个示例方式,视频编码器200和视频解码器300可以将第一预测块中的样点按第一权重进行缩放,并将第二预测块中的同位样点按第二权重进行缩放,并将所得值相加在一起。第一预测块中的样点和第二预测中的样点可以与相应的第一预测块和第二预测块中相同位置的两个样点同位。
86.应用于混合的权重可以指示来自第一分割或第二分割的样点对最终预测块的贡献量。例如,如下面更详细地描述的,第一预测块中的一个样点的权重可以是1/8,并且第二预测块中的一个同位样点的权重可以是7/8。在该示例中,与第一预测块中的样点相比,第二预测块中的样点对最终预测块中的样点值的贡献更大。作为另一示例,第一预测块中的一个样点的权重和第二预测块中的同位样点的权重可以是4/8。在该示例中,第一预测块中的样点和第二预测块中的同位样点对最终预测块中的样点值贡献相同。
87.通过这种混合,视频编码器200和视频解码器300可以生成最终预测块。在最终预测块和当前块中的样点中可能存在一一对应关系。例如,如果当前块是8
×
8,那么预测块也
可能是8
×
8。视频编码器200和视频解码器300可以使用基于预测块的帧间预测来对当前块进行编码或解码。例如,视频编码器200可以确定当前块与预测块之间的残差,并信令通知该残差。视频解码器300可以接收残差并将该残差加到预测块上以重建当前块。
88.根据本公开中描述的一个或多个示例,视频编码器200和视频解码器300可以被配置为存储当前块的运动矢量信息。为了存储运动矢量信息,视频编码器200和视频解码器300可以将当前块划分为子块(例如,4
×
4子块)。
89.每个子块中的每个样点可以对应于预测块中的样点。作为一个示例,如果当前块的子块中的样点与预测块中的样点同位,则两个样点可以对应。视频编码器200和视频解码器300可以确定子块中的样点是否与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应。例如,如果最终预测块中的预测样点是通过将第一预测块中的样点缩放4/8并将第二预测块中的样点缩放4/8来生成的,则最终预测块中的预测样点可以被认为是基于第一预测块中的样点和第二预测块中的样点的相等加权来生成的。
90.如果子块包括至少一个与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的样点,则视频编码器200和视频解码器300可以为子块存储双向预测运动矢量。如果子块不包括与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的任何样点,则视频编码器200和视频解码器300可以存储单向预测运动矢量。
91.术语“双向预测运动矢量”不应被认为限于要求存在两个运动矢量。相反,视频编码器200和视频解码器300可以执行一个或多个操作以确定双向预测运动矢量。例如,第一预测块可以在第一参考图片中,并且第二预测块可以在第二参考图片中。第一参考图片和第二参考图片可以在不同的参考图片列表中或在相同的参考图片列表中。如果第一预测块和第二预测块在不同的参考图片列表中(即,第一运动矢量和第二运动矢量来自不同的参考图片列表),则双向预测运动矢量是第一运动矢量和第二运动矢量。如果第一预测块和第二预测块在同一参考图片列表中(即,第一运动矢量和第二运动矢量来自同一参考图片列表),则双向预测运动矢量是第一运动矢量或第二运动矢量之一。
92.术语“单向运动矢量”是指只有一个运动矢量,并且可以基于子块在当前块中的位置。例如,如果视频编码器200和视频解码器300要存储子块的单向运动矢量,则如果子块的大部分样点处于第一分割中,则视频编码器200和视频解码器300可以存储第一运动矢量,并且如果子块的大部分样点处于第二分割中,则存储第二运动矢量。如果子块在第一分割和第二分割中具有相等的样点,则该子块包括至少一个与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的样点,并且因此视频编码器200和视频解码器300可以存储双向预测运动矢量。
93.例如,视频编解码器可以被配置为从一组角度确定一个或多个角度,用于使用几何分割模式(geo)对当前块进行分割,其中从其确定一个或多个角度的该组角度与可用于三角分割模式(tpm)的一组角度相同;基于所确定的一个或多个角度对当前块进行分割;以及基于当前块的分割对当前块进行编解码。作为另一示例,视频编解码器可以被配置为从一组权重中确定一个或多个权重,用于使用geo对当前块进行混合,其中从其确定一个或多个权重的该组权重与可用于tpm的一组权重相同;基于所确定的一个或多个权重对前块进
行混合;以及基于当前块的混合对当前块进行编解码。作为另一示例,视频编解码器可以被配置为确定用于使用geo的运动场存储,其中运动场存储与可用于tpm的运动场存储相同;以及基于所确定的运动场存储对当前块进行编解码。
94.一般地,本公开可以涉及“信令通知”某些信息,诸如语法元素。术语“信令通知”通常可以指对于语法元素和/或用于对编码的视频数据进行解码的其他数据的值的通信。也就是说,视频编码器200可以信令通知比特流中的语法元素的值。一般地,信令通知是指在比特流中生成值。如上所述,源设备102可以基本上实时地(或非实时地,诸如可能在将语法元素存储到存储设备112以供稍后由目标设备116检索时发生)将比特流传送到目标设备116。
95.图2a和2b是示出示例四叉树二叉树(qtbt)结构130和对应的编解码树单元(ctu)132的概念图。实线代表四叉树划分,虚线指示二叉树划分。在二叉树的每一个划分(即非叶)节点中,信令通知一个标志以指示使用了哪种划分类型(即水平或垂直),其中在此示例中,0指示水平划分,1指示垂直划分。对于四叉树划分,由于四叉树节点将块水平地和垂直地分割为具有相等尺寸的4个子块,因此无需指示划分类型。相应地,视频编码器200可以编码qtbt结构130的区域树级(即实线)的语法元素(例如划分信息)和qtbt结构130的预测树级(即虚线)的语法元素(例如划分信息),并且视频解码器300可以对以上进行解码。对于qtbt结构130的终端叶节点代表的cu,视频编码器200可以编码视频数据(比如预测和变换数据),并且视频解码器300可以对以上进行解码。
96.一般地,图2b的ctu 132可以与参数相关联,这些参数定义与第一和第二级的qtbt结构130的节点相对应的块的尺寸。这些参数可以包括ctu尺寸(代表样点中ctu 132的尺寸)、最小四叉树尺寸(minqtsize,代表最小允许的四叉树叶节点尺寸)、最大二叉树尺寸(maxbtsize,代表最大允许的二叉树根节点尺寸)、最大二叉树深度(maxbtdepth,代表最大允许的二叉树深度)和最小二叉树尺寸(minbtsize,代表最小允许的二叉树叶节点尺寸)。
97.与ctu相对应的qtbt结构的根节点在qtbt结构的第一级可以具有四个子代节点,每个子代节点可以根据四叉树分割来进行分割。即,第一级的节点是叶节点(没有子代节点)或具有四个子代节点。qtbt结构130的示例代表这样的节点,其包括具有实线分支的子代节点和父节点。如果第一级的节点不大于最大允许的二叉树根节点尺寸(maxbtsize),则能够通过各自的二叉树进一步对节点进行分割。能够迭代一个节点的二叉树划分,直到划分生成的节点达到最小允许的二叉树叶节点尺寸(minbtsize)或最大允许的二叉树深度(maxbtdepth)。qtbt结构130的示例将这样的节点代表为具有虚线分支。二叉树叶节点表示为编码单元(cu),其用于预测(例如图片内或图片间预测)和变换,而无需任何进一步分割。如上所述,cu也可以表示为“视频块”或“块”。
98.在qtbt分割结构的一个示例中,ctu尺寸设置为128
×
128(亮度样点和两个对应的64
×
64色度样点),minqtsize设置为16
×
16,maxbtsize设置为64
×
64,minbtsize(用于宽度和高度)设置为4,maxbtdepth设置为4。首先,将四叉树分割应用于ctu来生成四叉树叶节点。四叉树叶节点可以具有从16
×
16(即minqtsize)到128
×
128(即ctu尺寸)的尺寸。如果叶四叉树节点为128
×
128,则由于其尺寸超过maxbtsize(在此示例中为64
×
64),因此该叶四叉树节点不会进一步被二叉树划分。否则,叶四叉树节点将进一步进行二叉树分割。因此,四叉树叶节点也是二叉树的根节点,且具有为0的二叉树深度。当二叉树深度达到
maxbtdepth(在此示例中为4)时,不允许进一步划分。当二叉树节点具有等于minbtsize(在此示例中为4)的宽度时,二叉树节点意味着不允许进一步的水平划分。类似地,具有等于minbtsize的高度的二叉树节点表明不允许对该二叉树节点进行进一步的垂直划分。如上所述,二叉树的叶节点称为cu并且根据预测和变换对其进行进一步处理而无需进一步分割。
99.图3是示出可以执行本公开的技术的示例视频编码器200的框图。提供图3是为了解释的目的并且不应认为是对本公开中广泛示例和描述的技术的约束。出于说明的目的,本公开在诸如itu-u h.265(hevc)视频编解码标准和开发中的itu-t h.266(vvc)视频编解码标准的视频编解码标准的上下文中描述了视频编码器200。然而,本公开的技术不限于这些视频编解码标准并且通常可应用于视频编码和解码。
100.在图3的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、解码图片缓冲器(dpb)218以及熵编码单元220。视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重建单元214、滤波器单元216、dpb 218和熵编码单元220中的任何一个或全部可以在一个或多个处理器中或在处理电路中实现。此外,视频编码器200可包括附加的或替代的处理器或处理电路,以执行这些和其他功能。
101.视频数据存储器230可以存储将由视频编码器200的组件进行编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb 218可以用作参考图片存储器,参考图片存储器存储参考视频数据,供视频编码器200用于预测后续视频数据时使用。视频数据存储器230和dpb 218可以由多种存储设备中的任何一种形成,比如动态随机存取存储器(dram),包括同步dram(sdram)、磁阻ram(mram)、电阻ram(rram)或其他类型的存储设备。视频数据存储器230和dpb 218可以由相同的存储设备或单独的存储设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件一起置于片上,如图所示,或者相对于那些组件置于片外。
102.在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器(除非特别说明如此)或者视频编码器200外部的存储器(除非特别说明如此)。当然,对视频数据存储器230的引用应理解为存储视频编码器200接收用于编码的视频数据(例如待编码的当前块的视频数据)的参考存储器。图1的存储器106还可以对来自视频编码器200各种单元的输出提供临时存储。
103.示出的图3的各个单元用来帮助理解由视频编码器200执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并预设在能够执行的操作上的电路。可编程电路是指可以被编程以执行各种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使可编程电路以由软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如来接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
104.视频编码器200可以包括由可编程电路形成的算术逻辑单元(alu)、基本功能单元
(efu)、数字电路、模拟电路和/或可编程内核。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的指令(例如目标代码),或视频编码器200(未示出)内另一存储器可以存储这样的指令。
105.视频数据存储器230配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230中检索视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是待编码的原始视频数据。
106.模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加功能单元,用于根据其他预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、帧内块复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(lm)单元等。
107.一般地,模式选择单元202协调多个编码遍历(passs)来测试编码参数的组合以及得出这种组合的率失真值。编码参数可以包括ctu到cu的分割、cu的预测模式、cu的残差数据的变换类型、cu的残差数据的量化参数等。模式选择单元202可以最终选择编码参数的组合,该组合具有比其他测试的组合更佳的率失真值。
108.视频编码器200可以将从视频数据存储器230中检索的图片分割为一系列ctu,并将一个或多个ctu封装在条带内。模式选择单元202可以根据树结构(诸如上述hevc的qtbt结构或四叉树结构)来对图片的ctu进行分割。如上所述,视频编码器200可以根据树结构通过对ctu进行分割来形成一个或多个cu。这样的cu通常也可以称为“视频块”或“块”。
109.一般地,模式选择单元202还控制其组件(例如运动估计单元222、运动补偿单元224和帧内预测单元226)以生成当前块(例如当前cu或hevc中pu和tu的重叠部分)的预测块。为了对当前块进行帧间预测,运动估计单元222可以执行运动搜索来识别在一个或多个参考图片(例如存储在dpb218中的一个或多个先前编解码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以根据例如绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)等来计算表示潜在参考块与当前块有多相似的值。运动估计单元222通常可以使用当前块与考虑中的参考块之间的逐样点差异来执行这些计算。运动估计单元222可以识别具有这些计算生成的最低值的参考块,这指示与当前块最紧密匹配的参考块。
110.运动估计单元222可以形成一个或多个运动矢量(mv),运动矢量定义参考图片中参考块相对于当前图片中当前块的位置。然后,运动估计单元222可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。作为另一示例,如果运动矢量具有分数样点精度,则运动补偿单元224可以根据一个或多个插值滤波器来对预测块进行插值。此外,对于双向帧间预测,运动补偿单元224可以检索由各自运动矢量标识的两个参考块的数据并且(例如通过逐样点平均或加权平均)组合所检索的数据。
111.作为另一示例,模式选择单元202可以配置运动估计单元222和运动补偿单元224以执行与geo模式相关的技术。例如,运动估计单元222可以将当前块划分为两个分割(例如,沿着分割线将当前块划分为两个分割)。运动估计单元222可以确定第一分割的第一运
动矢量和第二分割的第二运动矢量。运动补偿单元224可以基于第一运动矢量来确定第一预测块,并且基于第二运动矢量来确定第二预测块。
112.运动补偿单元224可以基于指示第一预测块中的缩放样点量和第二预测块中的缩放样点量的权重,对该第一预测块和第二预测块进行混合,以生成当前块的最终预测块。例如,运动补偿单元224可以确定第一预测块中样点的第一缩放因子(例如,0、1/8、2/8、3/8、4/8、5/8、6/8、7/8或8/8),以及第二预测块中同位样点的第二缩放因子。在一些示例中,第一缩放因子和第二个缩放因子相加为一。
113.缩放因子可以是指示对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重,以通过对第一预测块和第二预测块的缩放样点求和来生成当前块的最终预测块。缩放样点可以是亮度块的亮度值和色度块的色度值。例如,为了生成最终预测块中的预测样点,运动补偿单元224可以将第一预测块中的样点的样点值乘以3/8,并且将第二预测块中的同位样点的样点值乘以5/8,以生成最终预测块中的同位样点的预测样点值。在该示例中,3/8和5/8分别是对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的示例。然后将缩放的结果相加在一起,以生成最终预测块中的预测样点。
114.在一个或多个示例中,运动估计单元222可以被配置为存储当前块的运动矢量信息(例如,作为几个示例,将运动矢量信息存储在解码图片缓冲器218、视频数据存储器230或存储器106中)。为了确定当前块的运动矢量信息,运动估计单元222可以将当前块划分为多个子块(例如,每个子块的尺寸为4
×
4)。运动估计单元222可以确定子块集合,其中每个子块包括至少一个与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的样点。例如,运动估计单元222可以确定哪些子块包括至少一个与通过将第一预测块中的样点缩放4/8以及将第二预测块中的样点缩放4/8并对缩放的样点求和而生成的最终预测块中的预测样点相对应的样点。在该示例中,由于对第一预测块和第二预测块中的样点的4/8缩放是相同的,因此第一预测块中的样点和第二预测块中的样点具有相等的权重。
115.运动估计单元222可以为所确定的子块集合中的每个子块存储相应双向预测运动矢量。例如,运动估计单元222可以确定第一运动矢量和第二运动矢量是否来自不同的参考图片列表(例如,引用不同参考图片列表中的参考图片)。运动估计单元222可以被配置为以下之一:(1)基于第一运动矢量和第二运动矢量来自不同参考图片列表,为该子块集合的每个子块存储第一运动矢量和第二运动矢量两者,或者(2)基于第一运动矢量和第二运动矢量来自同一参考图片列表而选择第一运动矢量或第二运动矢量之一,并且为该子块集合中的每个子块存储所选择的该第一运动矢量或第二运动矢量之一。
116.该子块集合可以被认为是当前块的第一子块集合。运动估计单元222可以被配置为确定第二子块集合,该第二子块集合不包括与最终预测块中的预测样点相对应的任何样点,该最终预测样点是基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的。运动估计单元222可以针对第二子块集合中的每个子块,确定该子块的大部分是处于第一分割中还是处于第二分割中,以及针对该第二子块集合中的每个子块,基于该子块的大部分处于第一分割中而存储第一运动矢量或者基于该子块的大部分处于第二分割中而存储第二运动矢量。
117.作为一个示例,滤波器单元216可以利用为该子块存储的运动矢量来进行去方块滤波。作为另一示例,运动估计单元222和运动补偿单元224可以利用存储的运动矢量以在对后续块进行编解码时构建用于合并模式或amvp模式的候选列表。
118.对于帧内预测或帧内预测编解码,帧内预测单元226可以根据与当前块相邻的样点来生成预测块。例如,对于方向模式,帧内预测单元226通常可以数学地组合相邻样点值,并且在当前块上沿定义的方向填充这些计算值来产生预测块。作为另一示例,对于dc模式,帧内预测单元226可以计算当前块的相邻样点的平均值,并且生成预测块以包括用于预测块的每一个样点的所得到的平均值。
119.模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始的未编码的版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样点差异。得到的逐样点差异定义当前块的残差块。在一些示例中,残差生成单元204还可以使用残差差分脉冲编解码调制(rdpcm)来确定残差块中样点值之间的差异以生成残差块。在某些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
120.在模式选择单元202将cu分割为pu的示例中,每个pu可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种尺寸的pu。如上所述,cu的尺寸可以指cu的亮度编解码块的尺寸,而pu的尺寸可以指pu的亮度预测单元的尺寸。假设特定cu的尺寸为2n
×
2n,则视频编码器200可以支持2n
×
2n或n
×
n的pu尺寸用于帧内预测,以及2n
×
2n、2n
×
n、n
×
2n、n
×
n或类似的对称pu尺寸用于帧间预测。视频编码器200和视频解码器300还可以支持2n
×
nu、2n
×
nd、nl
×
2n和nr
×
2n的pu尺寸的非对称分割用于帧间预测。
121.在模式选择单元202不将cu进一步分割为pu的示例中,每一个cu可以与亮度编解码块和对应的色度编解码块相关联。如上所述,cu的尺寸可以指cu的亮度编解码块的尺寸。视频编码器200和视频解码器300可以支持2n
×
2n、2n
×
n或n
×
2n的cu尺寸。
122.对于其他视频编解码技术,诸如作为一些示例的帧内块复制模式编解码、仿射模式编解码和线性模型(lm)模式编解码,模式选择单元202经由与编解码技术相关联的相应单元来生成正在被编码的当前块的预测块。在一些示例中,诸如调色板模式编解码,模式选择单元202可以不生成预测块,而是生成语法元素,语法元素指示基于所选调色板重建块的方式。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220,以对其进行编码。
123.如上所述,残差生成单元204接收当前块和对应预测块的视频数据。然后,残差生成单元204生成当前块的残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样点差异。
124.变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(在本文中称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(dct)、方向变换、karhunen-loeve变换(klt)或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多次变换,例如,初次变换和诸如旋转变换的二次变换。在一些示例中,变换处理单元206不将变换应用于残差块。
125.量化单元208可以对变换系数块中的变换系数进行量化以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值来对变换系数块的变换系数进行量化。视频编码器200(例如经由模式选择单元202)可以通过调整与cu相关联的qp值来调整应用于与当前块相关联的变换系数块的量化程度。量化可能会引入信息损失,从而,量化的变换系数可能比变换处理单元206产生的原始变换系数具有更低的精度。
126.逆量化单元210和逆变换处理单元212可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块重建残差块。重建单元214可以基于重建的残差块和由模式选择单元202生成的预测块来产生对应于当前块的重建块(尽管潜在地具有一些程度的失真)。例如,重建单元214可以将重建的残差块的样点添加到来自模式选择单元202生成的预测块的对应样点以产生重建块。
127.滤波器单元216可以对重建块执行一个或多个滤波器操作。例如,滤波器单元216可以执行去方块操作来减少沿着cu的边缘的块效应伪影。在一些示例中,可以跳过滤波器单元216的操作。
128.视频编码器200将重建块存储在dpb 218中。例如,在不需要滤波器单元216的操作的示例中,重建单元214可以将重建块存储到dpb 218。在需要滤波器单元216的操作的示例中,滤波器单元216可以将滤波后的重建块存储到dpb 218。运动估计单元222和运动补偿单元224可以从dpb 218中检索参考图片,该参考图片是由重建(并且潜在地滤波的)块形成的,来对随后编码的图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片的dpb 218中的重建块来对当前图片中的其他块进行帧内预测。
129.一般地,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对视频数据的另一示例的语法元素执行一个或多个熵编码操作来生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度编解码(cavlc)操作、cabac操作、可变到可变(v2v)长度编解码操作、基于语法的上下文自适应二进制算术编解码(sbac)操作、概率区间分割熵(pipe)编解码操作、指数-golomb编解码操作或另一类型的熵编码操作。在一些示例中,熵编码单元220可以以旁路模式操作,在旁路模式中语法元素不被熵编码。
130.视频编码器200可以输出比特流,其包括对条带或图片的块进行重建所需的熵编码的语法元素。具体地,熵编码单元220可以输出该比特流。
131.上述操作是针对块来描述的。这样的描述应该理解为是用于亮度编解码块和/或色度编解码块的操作。如上所述,在一些示例中,亮度编解码块和色度编解码块是cu的亮度和色度分量。在一些示例中,亮度编解码块和色度编解码块是pu的亮度和色度分量。
132.在一些示例中,不必针对色度编解码块重复关于亮度编解码块执行的操作。作为一个示例,不需要重复用于识别亮度编解码块的运动矢量(mv)和参考图片的操作来识别用于色度块的mv和参考图片。相反,可以缩放亮度编解码块的mv来确定色度块的mv,并且参考图片可以是相同的。作为另一示例,针对亮度编码块和色度编码块,帧内预测过程可以是相同的。
133.在一个或多个示例中,对于geo模式,模式选择单元202可以使熵编码单元220信令
通知视频解码器300用于重建当前块的信息。例如,模式选择单元202可以信令通知指示当前块以geo模式进行编解码的信息,并且可以信令通知指示对当前块进行分割的方式(例如,基于分割线的角度)的信息。模式选择单元202还可以信令通知用于确定第一分割的第一运动矢量和第二分割的第二运动矢量的信息。
134.视频编码器200表示被配置为对视频数据进行编码的设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实现的一个或多个处理单元,该处理单元被配置为:从一组角度确定一个或多个角度,用于使用几何分割模式(geo)对当前块进行分割,其中从其确定一个或多个角度的该组角度与可用于三角分割模式(tpm)的一组角度相同;基于所确定的一个或多个角度对当前块进行分割;以及基于当前块的分割对当前块进行编码。作为另一示例,视频编码器200可以被配置为从一组权重中确定一个或多个权重,用于使用geo对当前块进行混合,其中从其确定一个或多个权重的该组权重与可用于三角分割模式(tpm)的一组权重相同;基于所确定的一个或多个权重对前块进行混合;以及基于当前块的混合对当前块进行编码。作为另一示例,视频编码器200可以被配置为确定用于使用geo的运动场存储,其中运动场存储与可用于tpm的运动场存储相同;以及基于所确定的运动场存储对当前块进行编码。
135.图4是示出可执行本公开的技术的示例视频解码器300的框图。提供图4是出于解释的目的,而非限制本公开中广泛示例和描述的技术。为了说明的目的,本公开描述了根据vcc和hevc的技术描述的视频解码器300。然而,本公开的技术可以由配置为其他视频编解码标准的视频编解码设备来执行。
136.在图4的示例中,视频解码器300包括编解码图片缓冲器(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(dpb)314。cpb存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重建单元310、滤波器单元312和dpb 314中的任何一个或全部可以在一个或多个处理器或处理电路中实现。此外,视频解码器300可以包括附加的或替代的处理器或处理电路,以执行这些和其他功能。
137.预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括附加单元以按照其他预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、帧内块复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。
138.cpb存储器320可以存储将由视频解码器300的组件进行解码的视频数据,诸如编码的视频比特流。例如,可以从计算机可读介质110(图1)获得存储在cpb存储器320中的视频数据。cpb存储器320可以包括存储来自编码视频比特流的编码的视频数据(例如语法元素)的cpb。而且,cpb存储器320可以存储除了编解码的图片的语法元素之外的视频数据,诸如表示来自视频解码器300的各种单元的输出的临时数据。一般地,dpb 314存储解码的图片,当对编码的视频比特流的后续数据或图片进行解码时,视频解码器300可以输出该解码的图片和/或将其用作参考视频数据。cpb存储器320和dpb 314可以由多种存储设备中的任何一种形成,诸如dram,包括sdram、mram、rram或者其他类型的存储设备。cpb存储器320和dpb 314可以由相同的存储设备或独立的存储设备提供。在各种示例中,cpb存储器320可以与视频解码器300的其他组件置于片上,或者相对于那些组件置于片外。
139.附加地或替代地,在一些示例中,视频解码器300可以从存储器120(图1)中检索编解码的视频数据。即存储器120可以如上述讨论与cpb存储器320一起存储数据。同样,当视频解码器300的某些或全部功能在将由视频解码器300的处理电路执行的软件中实现时,存储器120可以存储将由视频解码器300执行的指令。
140.示出图4所示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。类似于图3,固定功能电路是指提供特定功能并且在可以执行的操作上预设的电路。可编程电路是指可以被编程以执行各种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使可编程电路以由软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如来接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
141.视频解码器300可包括alu、efu、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如目标代码)。
142.熵解码单元302可从cpb接收编码的视频数据,并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重建单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成解码的视频数据。
143.一般地,视频解码器300在逐块的基础上重建图片。视频解码器300可单独地对每一个块执行重建操作(其中当前正在进行重建(即解码)的块可称为“当前块”)。
144.熵解码单元302可以对定义量化的变换系数块的量化的变换系数的语法元素以及诸如量化参数(qp)和/或(一个或多个)变换模式指示的变换信息进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的qp来确定量化程度,并且同样地,确定逆量化程度以供逆量化单元306应用。逆量化单元306可以(例如执行按比特左移操作来)对量化的变换系数进行逆量化。逆量化单元306从而可以形成包括变换系数的变换系数块。
145.在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块来生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆dct、逆整数变换、逆karhunen-loeve变换(klt)、逆旋转变换、逆方向变换或另一逆变换应用于变换系数块。
146.进一步来说,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示dpb 314中的参考图片,以从该参考图片中检索参考块,以及指示识别参考图片中参考块相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以与针对运动补偿单元224(图3)所描述的方式基本上相似的方式来执行帧间预测过程。
147.例如,预测处理单元304可以确定当前块是以geo模式进行编解码的。预测处理单元304可以接收指示对当前块进行分割的方式(例如,基于分割线的角度)的信息,并将当前块分割为第一分割和第二分割。预测处理单元304还可以基于由视频编码器200信令通知的信息来确定第一分割的第一运动矢量和第二分割的第二运动矢量。
148.运动补偿单元316可以基于第一运动矢量来确定第一预测块,并且基于第二运动矢量来确定第二预测块。运动补偿单元316可以基于指示第一预测块中的缩放样点量和第二预测块中的缩放样点量的权重,对该第一预测块和第二预测块进行混合,以生成当前块的最终预测块。例如,运动补偿单元316可以确定第一预测块中样点的第一缩放因子(例如,0、1/8、2/8、3/8、4/8、5/8、6/8、7/8或8/8),以及第二预测块中同位样点的第二缩放因子。在一些示例中,第一缩放因子和第二个缩放因子相加为一。
149.如上所述,缩放因子可以是指示为了生成当前块的最终预测块,对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重。例如,为了生成最终预测块中的预测样点,运动补偿单元316可以将第一预测块中的样点的样点值乘以3/8,并且将第二预测块中的同位样点的样点值乘以5/8,以生成最终预测块中的同位样点的预测样点值。在该示例中,3/8和5/8分别是对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的示例。
150.在一个或多个示例中,运动补偿单元316可以被配置为存储当前块的运动矢量信息(例如,作为几个示例,将运动矢量信息存储在解码图片缓冲器314、cpb存储器320或存储器120中)。为了确定当前块的运动矢量信息,运动补偿单元316可以将当前块划分为多个子块(例如,每个子块的尺寸为4
×
4)。运动补偿单元316可以确定子块集合,其中每个子块包括至少一个与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的样点。例如,运动补偿单元316可以确定哪些子块包括至少一个与通过将第一预测块中的样点缩放4/8以及将第二预测块中的样点缩放4/8而生成的最终预测块中的预测样点相对应的样点。在该示例中,由于对第一预测块和第二预测块中的样点的4/8缩放是相同的,因此第一预测块中的样点和第二预测块中的样点具有相等的权重。
151.运动补偿单元316可以为所确定的子块集合中的每个子块存储相应双向预测运动矢量。例如,运动补偿单元316可以确定第一运动矢量和第二运动矢量是否来自不同的参考图片列表(例如,引用不同参考图片列表中的参考图片)。运动补偿单元316可以被配置为以下之一:(1)基于第一运动矢量和第二运动矢量来自不同参考图片列表,为该子块集合的每个子块存储第一运动矢量和第二运动矢量两者,或者(2)基于第一运动矢量和第二运动矢量来自同一参考图片列表而选择第一运动矢量或第二运动矢量之一,并且为该子块集合中的每个子块存储所选择的该第一运动矢量或第二运动矢量之一。
152.该子块集合可以被认为是当前块的第一子块集合。运动补偿单元316可以被配置为确定第二子块集合,该第二子块集合不包括与最终预测块中的预测样点相对应的任何样点,该最终预测样点是基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的。运动补偿单元316可以针对第二子块集合中的每个子块,确定该子块的大部分(例如,该子块的大部分样点)是在第一分割内还是在第二分割内,以及针对该第二子块集合中的每个子块,基于该子块的大部分处于第一分割中而存储第一运动矢量或者基于该子块的大部分处于第二分割中而存储第二运动矢量。
153.作为一个示例,滤波器单元312可以利用为该子块存储的运动矢量来进行去方块滤波。作为另一示例,运动补偿单元316可以利用存储的运动矢量以在对后续块进行编解码时构建用于合并模式或amvp模式的候选列表。
154.如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与针对帧内预测单元226(图3)所描述的方式基本上相似的方式来执行帧内预测过程。帧内预测单元318可以从dpb 314中检索相邻样点的数据以形成当前块。
155.重建单元310可以使用预测块和残差块来重建当前块。例如,重建单元310可以将残差块的样点添加到预测块的对应样点来重建当前块。
156.滤波器单元312可以对重建块执行一个或多个滤波器操作。例如,滤波器单元312可以执行去方块操作来减少沿着重建块的边缘的块效应伪影。不一定在所有示例中都执行滤波器单元312的操作。
157.视频解码器300可以将重建块存储在dpb 314中。例如,在不执行滤波器单元312的操作的示例中,重建单元310可以将重建块存储到dpb 314。在执行滤波器单元312的操作的示例中,滤波器单元312可以将滤波后的重建块存储到dpb 314。如上所述,dpb 314可以向预测处理单元304提供参考信息,诸如用于帧内预测的当前图片的样点以及用于随后的运动补偿的先前解码的图片。此外,视频解码器300可以从dpb 314输出解码的图片(例如,解码的视频),用于随后呈现在诸如图1的显示设备118的显示设备上。
158.以此方式,视频编码器200表示视频解码设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实现的一个或多个处理单元,该处理单元被配置为:从一组角度确定一个或多个角度,用于使用几何分割模式(geo)对当前块进行分割,其中从其确定一个或多个角度的该组角度与可用于三角分割模式(tpm)的一组角度相同;基于所确定的一个或多个角度对当前块进行分割;以及基于当前块的分割对当前块进行解码。作为另一示例,视频编解码器300可以被配置为从一组权重中确定一个或多个权重,用于使用geo对当前块进行混合,其中从其确定一个或多个权重的该组权重与可用于tpm的一组权重相同;基于所确定的一个或多个权重对前块进行混合;以及基于当前块的混合对当前块进行解码。作为另一示例,视频解码器300可以被配置为确定用于使用geo的运动场存储,其中运动场存储与可用于tpm的运动场存储相同;以及基于所确定的运动场存储对当前块进行解码。
159.下面介绍了一些视频编解码标准,包括视频编解码标准的几何分割模式(geo)存储相关技术。视频编解码标准包括itu-t h.261、iso/iec mpeg-1视觉、itu-t h.262或iso/iec mpeg-2视觉、itu-t h.263、iso/iec mpeg-4视觉和itu-t h.264(也称为iso/iec mpeg-4avc),包括其可伸缩视频编解码(svc)和多视图视频编解码(mvc)扩展。在2010年3月,itu-t提议h.264,“通用视听服务的高级视频编解码”中描述了最新的mvc联合草案。
160.另外,还有一种由itu-t视频编码专家组(vceg)和iso/iec运动图像专家组(mpeg)的视频编解码联合协作小组(jct-vc)开发的高效视频编解码(hevc)标准。如上所述,通用视频编解码和测试模型6(vtm6)的规范文本可以被称为vvc草案6。
161.如jvet-n1002(sullivan等人的“通用视频编解码和测试模型5的算法描述”,itu-t sg 16wp3和iso/iec jtc 1/sc 29/wg 11联合视频专家组(jvet),第14次会议:日内瓦,瑞士,2019年3月19日至27日)中所介绍的,三角分割模式(tpm)仅被应用于以跳过或合并(merge)模式进行编解码的cu,而不是以mmvd(带有运动矢量差分的合并)或cpu(组合帧间和帧内预测)模式进行编解码的cu。对于满足那些条件的cu,信令通知一个标志来指示是否应用三角分割模式。
162.当使用三角分割模式时,使用对角线分割或反对角线分割,cu被均匀地划分成两个三角形形状的分割,如图5a和图5b中所示。例如,图5a和图5b分别示出块500a和500b。块500a被分割为第一分割502a和第二分割504a,并且块500b被分割为第一分割502b和第二分割504b。
163.cu中的每个三角分割使用其自身的运动进行帧间预测。对于每个分割,可以仅允许单向预测。也就是,每个分割(例如,分割502a、504a、502b或504b)具有到参考图片列表中的一个运动矢量和一个参考索引。应用单向预测运动约束以确保与传统的双向预测一样,每个cu只需要两个运动补偿预测。例如,分割502a和分割504a可以各自仅有一个运动矢量,意味着块500a仅限于两个运动矢量。
164.每个分割的单向预测运动(例如,第一分割502a的第一运动矢量和第二分割504a的第二运动矢量,并且类似于分割502b和504b)是从使用关于单向预测候选列表构建描述的过程构建的单向预测候选列表导出的。如果cu级标志指示当前cu是使用三角分割模式进行编解码的,并且如果使用三角分割模式,则指示三角分割方向(对角线或反对角线)的标志和两个合并索引(每个分割一个)被进一步信令通知。图5a和图5b示出了具有相应虚线分割线的对角线和反对角线分割的示例。
165.在对每个三角分割进行预测之后(例如,基于相应运动矢量确定用于第一分割502a或502b的第一预测块和用于第二分割504a或504b的第二预测块),使用带有自适应权重的混合处理来调整沿对角线或反对角线边缘(例如,分割线)的样点值。例如,视频编码器200和视频解码器300可以通过将第一分割块和第二分割块进行带有自适应权重的混合来生成最终预测块。这是用于整个cu的预测信号(例如,最终预测块),并且可以像在其他预测模式中一样将变换和量化过程应用于整个cu。如关于沿着三角形划分边缘的混合所描述的,使用三角分割模式预测的cu的运动场被存储在4
×
4单元中。
166.下面描述单向预测候选列表的构建。单向预测候选列表可以包括五个单向预测运动矢量候选。运动矢量候选是从包括五个空间相邻块(图6中标记为块600的601-605)和两个时间同位块(图6中标记为606和607)的七个相邻块中导出的。收集该七个相邻块的运动矢量,并按照以下顺序将七个相邻块的运动矢量放入单向预测候选列表中:第一,单向预测的相邻块的运动矢量;然后,针对双向预测的相邻块,l0(列表0)运动矢量(即,双向预测mv的l0运动矢量部分)、l1(列表1)运动矢量(即,双向预测mv的l1运动矢量部分)和双向预测mvs的l0和l1运动矢量的平均运动矢量。如果候选的数量少于五个,则零运动矢量被添加到列表的末尾。
167.l0或列表0和l1或列表1指的是参考图片列表。例如,对于帧间预测,视频编码器200和视频解码器300各自构建一个或两个参考图片列表(例如,列表0和/或列表1)。参考图片列表包括多个参考图片,并且参考图片列表中的索引被用于识别用于帧间预测的一个或多个参考图片。列表0运动矢量或列表1运动矢量分别指的是指向列表0或列表1中识别出的参考图片的运动矢量。例如,视频编码器200或视频解码器300可以确定运动矢量是否来自参考图片列表,这可以意味着视频编码器200和视频解码器300确定运动矢量是否指向存储在第一参考图片列表(例如,列表0)中或存储在第二参考图片列表(例如,列表1)中的参考图片。
168.下面介绍从合并列表推断三角预测模式(tpm)运动。下面介绍tpm候选列表构建。
给定合并候选索引,从合并候选列表导出单向预测运动矢量。对于合并列表中的候选,将该候选的lx mv(其中x等于合并候选索引值的奇偶性)用作三角分割模式的单向预测运动矢量。这些运动矢量在图7中用“x”标记。在对应的lx运动矢量不存在的情况下,扩展合并预测候选列表中的相同候选的l(1-x)运动矢量被用作用于三角分割模式的单向预测运动矢量。例如,假设合并列表由5组双向预测运动组成,则tpm候选列表从第一个到最后由第0个/第1个/第2个/第3个/第4个合并候选的l0/l1/l0/l1/l0 mv组成。然后,tpm模式包括信令通知两个不同的合并索引,每个三角分割一个,以指示tpm候选列表中候选的使用。
169.下面描述了沿三角分割边缘的混合。在使用三角分割自身的运动对每个三角分割进行预测之后,将混合应用于两个预测信号以导出围绕对角线或反对角线边缘的样点。该混合过程中使用以下权重:如图8a中所示,用于亮度的为{7/8,6/8,5/8,4/8,3/8,2/8,1/8},如图8b中所示,用于色度的为{6/8,4/8,2/8}。
170.换句话说,图8a和图8b分别示出了针对当前块生成的亮度和色度的最终预测块,当前块被从左上角到右下角的对角线分割,形成第一分割和第二分割。视频编码器200和视频解码器300可以基于第一运动矢量来确定第一预测块,并且基于第二运动矢量来确定第二预测块。视频编码器200和视频解码器300可以基于如图8a和图8b所示的加权对第一预测块和第二预测块进行混合。
171.例如,为了生成最终预测块中的左上预测样点,视频编码器200和视频解码器300可以将第一预测块中的左上预测样点缩放4/8,并将第二预测块中的左上预测样点进行缩放4/8,并将结果相加在一起(例如,4/8*p1 4/8*p2)。为了生成在最终预测块中位于左上方预测样点右侧的预测样点,视频编码器200和视频解码器300可以将第一预测块中位于左上方预测样点右侧的预测样点缩放5/8,并将第二预测块中位于左上方预测样点右侧的预测样点缩放3/8,并将结果相加在一起(例如5/8*p1 3/8*p2)。视频编码器200和视频解码器300可以重复这样的操作以生成最终预测块。
172.最终预测块中的一些样点可以等于第一预测块或第二预测块中的同位样点。例如,最终预测块800a中的右上样点等于第一预测块中的右上样点,这就是为什么最终预测块800a中的右上样点被示为p1。最终预测块800a中的右下样点等于第二预测块中的右下样点,这就是为什么最终预测块800a中的右下样点被示为p2。
173.因此,图8a和图8b可以被认为是示出指示为了生成当前块的最终预测块,对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重。例如,权重4意味着第一预测块中的样点按4/8比例缩放,第二预测块中的样点按4/8比例缩放。权重2意味着第一预测块中的样点按2/8比例缩放,第二预测块中的样点按6/8比例缩放。
174.图8a和图8b中示出的权重是一个示例。例如,对于不同尺寸的块,权重可能不同。而且,分隔线可以不是从块的一个角到该块的另一个角。例如,在geo模式下,分割线可以处于不同的角度。也就是,tpm模式可以被认为是geo模式的一个示例,其中分割线是块的对角线或反对角线。然而,如下文更详细地说明和描述的,在geo模式中,可以存在用于分割线的其他角度。在一个或多个示例中,对于不同的分割角度,可以有不同的权重。视频编码器200和视频解码器300可以存储针对分割的不同角度的权重,并利用存储的权重来确定对第一预测块和第二预测块中的样点进行缩放的量。
175.下面介绍运动场存储。以三角分割模式(tpm)或geo模式进行编解码的cu的运动矢
量存储在4
×
4单元中。也就是,视频编码器200和视频解码器300可以将当前块划分为子块(例如,尺寸为4
×
4),并为每个子块存储运动矢量信息。取决于每个4
×
4子块的位置,在一些技术中,视频编码器200和视频解码器300可以存储单向预测或双向预测运动矢量,分别表示为mv1和mv2,作为分割1和分割2的单向预测运动矢量。如上所述,每个4
×
4子块的位置可以确定是存储了单向预测运动矢量还是双向预测运动矢量。在一些示例中,每个4
×
4子块的位置还可以指示该4
×
4子块的大部分是处于第一分割还是第二分割中(例如,4
×
4子块的大部分样点是处于第一分割还是第二分割中)。
176.当cu被从左上角到右下角(即45
°
划分)分割时,分割1和分割2是分别位于右上角和左下角的三角块;而当cu被从右上角到左下角(即135
°
划分)分割时,分割1和分割2是分别位于左上角和右下角的三角块。即,如图5a中所示,当分割线为45
°
时,分割502a为分割1,而分割504a为分割2,并且如图5b中所示,当分割线为135
°
时,分割502b为分割1,分割504b为分割2。虽然示例是关于具有45
°
或135
°
分割线的三角分割进行描述的,但技术并不限于此。示例技术可以适用于不存在三角分割的示例,诸如在geo模式的各种示例中。即使在geo模式的这些示例中,也可以存在第一分割(例如,分割1)和第二分割(例如,分割2)。
177.如果4
×
4单元(例如,子块)位于图8a和图8b的示例中所示的未加权区域内,为该4
×
4单元存储mv1或mv2。例如,在图8a和图8b中,其中来自第一预测块或第二预测块的未加权样点是最终预测块中的样点,视频编码器200和视频解码器300可以选择mv1(例如,第一运动矢量)或mv2(例如,第二运动矢量)。否则,如果4
×
4单元位于加权区域中,则存储双向预测运动矢量。根据以下过程从mv1和mv2导出双向预测运动矢量:
178.a.如果mv1和mv2来自不同的参考图片列表(一个来自l0,另一个来自l1),则简单地将mv1和mv2组合以形成双向预测运动矢量。也就是,子块的运动矢量信息包括mv1和mv2两者(即,第一运动矢量和第二运动矢量两者)。
179.b.否则,如果mv1和mv2来自同一列表,则仅存储mv2(即,仅存储第二运动矢量)。
180.下面介绍几何分割。在jvet-o0489(esenlik等人,itu-t sg16 wp3和iso/iec jtc 1/sc 29avg 11的联合视频专家小组(jvet),第15次会议:哥德堡,瑞典,2019年7月3-12日)中引入了几何分割,作为对tpm引入的非矩形分割的建议扩展。如在jvet-o0489中所介绍的,几何分割模式(geo)仅被应用于以跳过或合并模式进行编解码的cu,而不是以mmvd或ciip模式进行编解码的cu。对于满足那些条件的cu,信令通知一个标志来指示是否应用geo。图9示出了vvc-6(vvc草案6)中的tpm和针对非矩形帧间块提出的附加形状。
181.例如,图9示出了以tpm模式进行分割的块900a和900b。tpm模式可以被看作是geo模式的一个子集。在tpm中,分隔线从一个角延伸到块的对角,如块900a和900b中所示。然而,在geo模式中,一般地,分割线是对角线,不一定从块的角开始或在角处结束。图9中的块900c-900i示出了不一定在块900c-900i的角处开始或结束的分割线的不同示例。
182.gpm分割的总数可以是140。例如,图9示出了块900a-900i,但是可以有140个这样的对块进行分割的可能方式,这对于确定如何分割的灵活性是期望的,但是能增加信令。对于geo可能存在附加的信令(例如,如图10所示),诸如角度α以及相对于块ρ的中心的分离线位移。这一示例,α和ρ一起定义了图10中块1000的分割线的位置和斜率。在一些示例中,α表示0到360度之间的量化角度,具有11.25度的分离,并且ρ表示具有5个不同值(例如,5个位移)的距离。值α和ρ对被存储在尺寸为140
×
(3 5)/8=140字节的表中。例如,对于11.25度
的分离,可以有32个角度(例如,11.25*32=360)。对于5个位移值,可以有160个模式,其中一个模式是一个角度和一个位移的组合(例如,32*5=160)。有可能可以去除某些冗余模式,如具有0位移的0度角和具有0位移的180度角,它们给出了相同的结果。通过去除冗余模式,模式数量为140。如果存储5个位移值需要3位,存储32个角度值需要5位,则总共有140*(3 5)位,除以每字节8位,得到140个字节。
183.在一些示例中,视频编码器200可以信令通知进入该表的索引,并且视频解码器300可以确定α和ρ值。基于α和ρ值,视频解码器300可以确定通过块(诸如图10的块1000)的分割线。
184.类似于tpm,对于不小于8
×
8的单向预测块允许用于帧间预测的geo分割,以便在解码器侧(例如,视频解码器300)具有与双向预测块相同的存储器带宽。用于geo分割的运动矢量预测可以与tpm对准。
185.下表1描述了模式信令。根据jvet-o0489中描述的技术,geo模式作为附加合并模式被信令通知。
[0186][0187]
表1建议引入的语法元素
[0188]
geo_merge_idx0和geo_merge_idx1被使用与tpm合并索引相同的cabac上下文和二值化进行编解码。geo_partition_idx指示分割模式(140种可能),并且使用截断的二进制二值化和旁路编解码进行编解码。例如,如图10中所示,geo_partition_idx是上面描述的索引,以确定用于确定分割线的α和ρ值。
[0189]
当没有选择geo模式时,可能选择tpm。geo模式的分割不包括可以通过二进制划分的tpm获得的分割。在某种程度上,jvet-o049所提出的信令方案类似于帧内模式信令,其中tpm分割对应于最可能的分割,并且geo模式对应于剩余的分割。geo_partition_idx被用作存储α和ρ对的查找表的索引。如上所述,140个字节被用于存储这个表。
[0190]
下面介绍亮度块的混合操作。与tpm的情况一样,编解码块的最终预测是通过根据样点权重对第一单向预测和第二单向预测进行加权平均而获得的。
[0191]
sampleweightl[x][y]=geofilter[distscaled]如果distfromline《=0
[0192]
sampleweightl[x][y]=8-geofilter[distscaled]如果distfromline》0
[0193]
其中样点权重作被实现为查找表,如在以下表2中:
[0194][0195]
表2混合滤波器权重
[0196]
计算样点权重所需的运算次数为近似每个样点一个加法运算,其计算复杂度与tpm相似。更详细地说,对于每个样点,distscaled是根据以下两个等式计算的:
[0197]
distfromline=((x《《1) 1)*dis[displacementx] ((y《《1) 1))*dis[displacementy]

rho
[0198]
distscaled=min((abs(distfromline) 8)》》4,14)
[0199]
其中,变量rho、displacementx和displacementy在每个编解码块中计算一次,并且dis[]是一个具有32个条目(8位分辨率)的查找表,该查找表存储余弦值。distfromline可以通过对每个样点进行递增来计算,在样点行中的值为2^dis[displacementx],并且从一个样点行到下一个样点行的值为2^dis[displacementx]。可以利用每个样点略多于1个加法来获得distfromline值。附加地,可以利用最小值、绝对值和减档(downshift)操作,这不会引入任何相当大的复杂性。
[0200]
geo的所有运算都可以使用整数算法来实现。geo的计算复杂度可能与tpm非常相似。在规范修改文档草案中有关于混合操作的额外细节,例如在jvet-o0489提供的“8.5.7.5几何分割合并模式的样点权重推导过程”一节中。
[0201]
下面介绍色度块的混合操作。针对亮度样点计算的样点权重被二次采样,并用于色度混合而无需任何计算。关于亮度块的左上角样点,将坐标(x,y)处的色度样点权重设置为等于坐标(2x,2y)处的亮度样点权重。
[0202]
下面介绍运动矢量导出。用于tpm的相同合并列表推导过程被用于推导geo块的每个分割的运动矢量。每个分割只能通过单向预测来进行预测。
[0203]
下面描述一种用于运动矢量存储的示例技术。对4
×
4运动存储单元的四个角处的亮度样点权重(如图8a和8b中所示,根据沿三角分割边缘的混合的描述计算出的)求和。将该和值与两个阈值进行比较,以确定是否存储两个单向预测运动信息或双向预测运动信息中的一个。采用与tpm相同的过程导出双向预测运动信息。
[0204]
换句话说,在一些技术中,视频编码器200和视频解码器300可以将当前块划分为子块(例如,4
×
4子块)。对于每个子块,视频编码器200和视频解码器300可以确定用于对第一预测块和第二预测块中的样点进行缩放的样点权重。例如,回到参考图8a,在块800a的左上角可以有一个4
×
4子块。该4
×
4子块包括位于左上角的样点,样点权重为4,指示与块800a中的左上角样点的位置同位的第一预测块中的样点,并且类似地同位的第二预测块中的样点被进行相同缩放(例如,4/8*p1 4/8*p2,如图8a中所示)。该4
×
4子块包括位于左下角的样点,样点权重为1,指示与该4
×
4子块的左下角处的样点同位的第一预测块的样点被缩放1/8,并且类似地同位的第二预测块中的样点被缩放7/8。该4
×
4子块包括位于右上角的样点,样点权重为7,指示与该4
×
4子块的右上角处的样点同位的第一预测块的样点被缩放7/8,并且类似地同位的第二预测块中的样点被缩放1/8,如图8a中所示。该4
×
4子块包括位于右下角的样点,样点权重为4,指示与该4
×
4子块的右下角处的样点同位的第一预测块
的样点被缩放4/8,并且类似地同位的第二预测块中的样点被缩放4/8,意味着第一预测块和第二预测块中的样点被缩放相同的量。
[0205]
在该示例中,视频编码器200和视频解码器300可以对4
×
4子块的四个角的权重进行求和,其为4 7 1 4=16。视频编码器200和视频解码器300可以将所得值(例如,16)与两个阈值进行比较,以确定视频编码器200和视频解码器300是存储识别第一预测块的第一运动矢量、识别第二预测块的第二运动矢量,还是存储第一运动矢量和第二运动矢量两者作为针对4
×
4子块的运动矢量信息。
[0206]
根据本技术,不是如上所述的对亮度样点权重进行求和或者除此之外,视频编码器200和视频解码器300可以确定子块集合,其中每个子块包括至少一个与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的样点。作为一个示例,视频编码器200和视频解码器300可以确定子块集合(例如,4
×
4子块),其中每个子块包括至少一个具有权重为4的样点。如上所述,如果样点具有权重4,则视频编码器200可以将第一预测块中的同位样点缩放4/8(1/2)并将第二预测块中的同位样点缩放4/8(1/2)以生成最终预测块中的预测样点。
[0207]
以这种方式,可以不需要对子块的角上的权重求和并与阈值进行比较,如在上面描述的一些其他技术中所做的那样。而是,视频编码器200和视频解码器300可以确定子块是否包括一个样点,针对该样点基于第一预测块中的样点和第二预测块中的样点的相等加权而生成最终预测块中的预测样点。如果子块包括这样的样点,则视频编码器200和视频解码器300可以存储双向预测运动矢量,并且如果子块不包括这样的样点,则视频编码器200和视频解码器300可以存储单向预测运动矢量。
[0208]
如上所述,双向预测运动矢量不一定是两个运动矢量。相反,视频编码器200和视频解码器300可以执行某些操作以确定双向预测运动矢量。作为一个示例,视频编码器200和视频解码器300可以确定识别第一预测块的第一运动矢量和识别第二预测块的第二运动矢量是否来自不同的参考图片列表,以及以下之一:基于第一运动矢量和第二运动矢量来自不同参考图片列表,为该子块存储第一运动矢量和第二运动矢量两者,或者基于第一运动矢量和第二运动矢量来自同一参考图片列表而选择第一运动矢量或第二运动矢量之一,并且为该子块存储所选择的该第一运动矢量或第二运动矢量之一。
[0209]
单向预测运动矢量可以是第一运动矢量或第二运动矢量之一。例如,视频编码器200和视频解码器300可确定不包括与基于对第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的任何样点的子块(例如,该子块中没有一个样点的样点权重为4)。在该示例中,视频编码器200和视频解码器300可以针对该子块确定该子块的大部分是处于第一分割中还是处于第二分割中,以及针对该子块,基于该子块的大部分处于第一分割中而存储第一运动矢量或者基于该子块的大部分处于第二分割中而存储第二运动矢量。
[0210]
通过利用本公开中描述的示例技术存储运动矢量信息,视频编码器200和视频解码器300可以存储提供总体编解码和视觉增益的运动矢量信息。例如,为每个子块存储的运动矢量信息可能影响去方块滤波的强度。利用本公开中描述的示例技术,子块的运动矢量信息可能导致确定去除伪影的去方块滤波的强度。而且,为每个子块存储的运动矢量信息可能影响为合并模式或amvp模式生成的用于对后续块进行编解码的候选列表。利用本公开
中描述的示例技术,子块的运动矢量信息可以是该候选列表的比用于生成候选列表的其他技术更好的候选。
[0211]
下面描述了geo的部分变换。由于geo分割为帧间预测提供了灵活性,即使是形状复杂的对象也可以很好地被预测;因此,与矩形块或三角形块相比,残差更小。在某些情况下,geo块的非零残差仅在内部边界周围观察到,如图11所示。减少残差的一些技术包括将尺寸或w
×
h块设置为w
×
(h/n)或(w/n)
×
h,仅在内部边界周围保持非零残差,如图11中由参考数字1100a所示。例如,如图11中所示,由参考数字1100a捕获的区域可以被重新定向以形成矩形块1100b。通过这种变化,待处理的残差尺寸和待信令通知的系数的数量可以变小n倍。n的值在比特流中被信令通知,并且可以等于1(当不应用部分变换时)、2或4。在一些示例中,部分变换,其示例在图11中示出,可能仅适用于geo和tpm块。
[0212]
下面描述了部分变换的残差传播。在部分变换的顶部,应用类似于去方块形式的过程。
[0213]
该去方块操作可以描述如下:
[0214]-在由黑色圆圈标记的块边界上获取样点p
[0215]-如果k《=3,则将(p》》k)的值赋给位置(x,y-k)处的样点
[0216]-在由白色圆圈标记的块边界上获取样点p
[0217]-如果k《=3,则将(p》》k)的值赋给位置(x,y k)处的样点。
[0218]
图12提供了k值的示例。k的值是块1200中的边界样点(用圆表示)和块1200中的填充样点(在对应箭头下)之间的样点数量。黑色和白色箭头示出上下边界的去方块方向。
[0219]
geo设计可能会有一定的问题。例如,当前的geo设计可以被视为tpm的扩展。然而,设计中存在一些差异,需要加以协调以实施。
[0220]
以下描述了tpm和geo运动场存储的协调问题。tpm算法只利用cu中4
×
4单元的位置来确定需要存储的运动矢量,而geo方法则将用于运动补偿的权重用于存储。此外,如果将现有的geo运动场存储算法应用到tpm中,则tpm存储结果会发生变化。对于这两种方法,最好有一个统一的存储方法。本公开描述了用于存储运动场(例如,运动矢量信息)的示例技术。
[0221]
以下描述了tpm和geo权重导出的协调问题。上面关于亮度块的混合操作描述的权重推导的geo算法不同于用于tpm权重推导的geo算法。对于这两种方法,最好有一个统一的权重推导方法。
[0222]
下面描述了部分变换的问题。目前的geo技术有在部分逆变换后应用残差滤波的部分变换选项。当前的geo技术利用变换模块,该变换模块还可以在实现中添加额外的阶段。在一个示例中,垂直残差滤波可能无法“飞速(on the fly)”执行(即,正好在逆变换之后),因为垂直方向上的读取可能需要从缓冲器中读取更多的数据,并且不能在将残差从变换输出块复制到残差块中的同时简单地完成。在这种情况下,可能需要实现中的一个额外阶段。
[0223]
本公开描述了用于统一tpm和geo的运动场存储和运动权重推导的示例技术。作为一个示例,下面描述了geo角度的变化。在一些示例中,用于geo的角度可以改变以与现有的tpm角度协调。geo的可用角度将变成图13中所示的角度,其可以用以度数或弧度表示的近似角度值来描述,或者当每个角度从每个块的角像素到角像素时,用宽度/高度的精确整数
比来描述。还可以添加0
°
和90
°
角,以提供更多的多样性。
[0224]
下面描述geo运动权重推导的变化。在一些示例中,geo中用于混合部分的权重可以改变,以便它们使用如上所述的tpm权重处理来沿三角分割边缘进行混合,并且使得geo和tpm两者都具有协调的权重推导过程。给定具有坐标(s.x;s.y)的起始点和具有坐标(e.x;e.y)的边的端点,可以为边(图14中的虚线矩形)识别边界框,即具有左上角坐标(b.x;b.y)=(min(s.x,e x);(min(s.y,e.y))和尺寸为abs(s.x-e.x)乘以abs(s.y-e.y)的边界框。
[0225]
例如,图14示出了用分割线1402分割的块1400。视频编码器200和视频解码器300可以确定用于对块1400的两个分割进行混合的权重。再一次,权重可以指示对来自第一分割的第一运动矢量识别的第一预测块中的样点进行多少缩放,以及对来自第二分割的第二运动矢量识别的第二预测块中的样点进行多少缩放(例如,如图8a和8b所示)。
[0226]
在图14的示例中,为了确定权重,视频编码器200和视频解码器300可以确定边界框1404,其中边界框1404的一个角是分割线1402的一端,并且边界框1404的对角是分割线1402的另一端,如图14所示。如图所示,分割线1402然后将边界框1404划分为分割1406a和分割1406b。然后,视频编码器200和视频解码器300可以确定分割1406a和1406b的运动矢量,确定分割1406a和1406b的预测块,并基于边界框1404的权重对第一预测块和第二预测块进行混合。在一些示例中,边界框1404的权重可以类似于图8a和图8b的那些。再一次,该权重指示为了生成最终预测块而对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量。
[0227]
通过对geo使用tpm角度,可以将tpm权重计算直接应用于边界框(例如,类似于图8aa和8b)。一个区别可以是视频编码器200和视频解码器300将偏移(b.x;b.y)添加到加权计算的开始位置。在一些示例中,混合区域可以扩展到边界框之外。
[0228]
在tpm权重计算中,0
°
和90
°
角的权重可以通过使用0或“无穷大”的偏移来计算。在一些示例中,通过针对0
°
角使用宽度/高度比0并且针对90
°
角使用宽度/高度比2*max_cu_size来完成权重的计算。现有的tpm的加权计算也可以改变。例如,在一些示例中,用于tpm权重的混合区域可以被减小以具有更尖锐的权重,诸如图15b中。图15a示出了宽度/高度比等于4的现有tpm权重,并且图15b示出了对于相同角度的不同权重的示例。
[0229]
在一些示例中,权重可以通过以下方式进行修改:
[0230]
a.tpm权重推导可以更改为使用前面部分中描述的geo权重推导;
[0231]
b.geo权重推导可以采用tpm的色度权重推导,而tpm仍然采用其亮度权重推导;
[0232]
c.tpm和geo权重可以对用于tpm的现有权重进行二次采样,以具有更小的混合区域;以及
[0233]
d.可以使tpm和geo权重对用于tpm的现有权重进行二次采样,以便对于特定角度或角度和块尺寸的组合具有更小的混合区域(例如,如果假设用于较高的宽/高比的角度被用于具有较小宽/高比的块)。
[0234]
例如,图15a示出了块1500,其是32
×
8尺寸的块,并且由分割线1502将块1500分割成分割1503a和分割1503b。在一个或多个示例中,视频编码器200和视频解码器300可以对包括子块(例如,4
×
4子块)的块1500进行划分,如子块1504a-1504p所示。如图所示,每个子块中的每个样点可以与指示为了生成最终预测块而对第一预测块中的样点进行缩放的量
和对第二预测块中的样点进行缩放的量的权重相关联。
[0235]
例如,对于子块1504a,视频编码器200和视频解码器300可以确定针对子块1504a的第一左上角样点,视频编码器200和视频解码器300将第一预测块中的同位样点缩放7/8,并将第二预测块中的同位样点缩放1/8,并对所得值求和,作为确定最终预测块中的预测样点的一部分。视频编码器200和视频解码器300可以基于与样点相关联的加权来确定块1500中的每个样点的预测样点。在一个或多个示例中,如果块1500中的样点具有权重4(例如,子块1504p中的左上角样点),则视频编码器200和视频解码器300可以对第一预测块和第二预测块中的同位样点(例如,将每一同位样点缩放4/8或1/2)进行相等地缩放。
[0236]
相同的技术可应用于图15b的块1506。例如,块1506是32
×
8尺寸的块,并且由分割线1508将块1506分割成分割1509a和分割1509b。在一个或多个示例中,视频编码器200和视频解码器300可以将块1506划分为子块(例如,4
×
4子块),如子块1504a-1504p所示。如图所示,每个子块中的每个样点可以与指示为了生成最终预测块而对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重相关联。
[0237]
例如,对于子块1510a,视频编码器200和视频解码器300可以确定针对子块1510a的第一左上角样点,视频编码器200和视频解码器300将第一预测块中的同位样点缩放8/8,并将第二预测块中的同位样点缩放0/8,并对所得值求和,作为确定最终预测块中的预测样点的一部分。在该示例中,第二预测块在最终预测块的生成中没有贡献。视频编码器200和视频解码器300可以基于与样点相关联的加权来确定块1506中的每个样点的预测样点。在一个或多个示例中,如果块1506中的样点具有权重4(例如,子块1510p中的左上角样点),则视频编码器200和视频解码器300可以对第一预测块和第二预测块中的同位样点(例如,将每一同位样点缩放4/8或1/2)进行相等地缩放。
[0238]
下面描述geo运动场存储的变化。具体地,视频编码器200和视频解码器300可以被配置为存储子块1504a-1504p和1510a-1510p中的每个子块的运动矢量信息。例如,视频编码器200和视频解码器300可以确定第一分割1503a的第一运动矢量和第二分割1503b的第二运动矢量。视频编码器200和视频解码器300可以基于第一运动矢量来确定第一预测块,并且基于第二运动矢量来确定第二预测块。视频编码器200和视频解码器300可以通过使用图15所示的权重来对第一预测块和第二预测块进行混合来生成最终预测块。视频编码器200和视频解码器300可以执行类似的操作来确定图15b的块1506的最终预测块。
[0239]
另外,视频编码器200和视频解码器可以确定为子块1504a-1504p和1510a-1510p中的每一个子块存储的运动矢量信息(例如,运动场),并将其用于未来编解码操作(诸如用于对后续块进行编解码的合并模式或amvp模式的去方块滤波或候选列表)。以下描述确定为子块1504a-1504p和1510a-1510p存储的运动矢量信息的方式的示例。
[0240]
在一些示例中,geo的运动场存储可以通过以下方式进行修改,以便tpm和geo两者都使用相同的运动存储:
[0241]
a.在一些示例中,当且仅当在块内找到
‘4’
时,可以在权重映射的每个4
×
4单元内进行搜索以使用bimv运动矢量。
[0242]
b.在一些示例中,可以使用与上面关于geo角度变化描述的用于权重的类似过程,使用针对具有偏移为(b.x;by)的边界框尺寸的块的tpm存储。
[0243]
c.在一些示例中,可以使用(b.x;b.y)来找到加权区域的开始点,以将bimv存储到
相对应的4
×
4单元,并且偏移(o.x;o.y)由所使用的角度的斜率从该角度的宽/高比来确定。例如,图13中呈现的角度以从以下比率来描述:
[0244]
{0:1;1:8;1:4;1:2;1:1;2:1;4:1;8:1;
[0245]
max_cu_size《《1:1;-8:1;-4:1;-2:1;-1:1;-1:2;-1:4;-1:8}
[0246]
这将导致偏移(o.x;o.y)等于:
[0247]
{(0;1);(1;8);(1;4);(1;2);(1;1);(2;1);(4;1);(8;1);
[0248]
(max_cu_size《《1;1);(-8;1);(-4;1);(-2;1);(-1;1);(-1;2);(-1;4);(-1;8)}
[0249]
或者,从更一般的角度来看:
[0250]
o.x=(a!=90)?max(1,abs(tan(a))):max_cu_size《《1;
[0251]
o.x=(a==0)?0:(a》90)?-o.x:o.x;
[0252]
o.y=(a%90!=0)?max(1,1/tan(a)):1;
[0253]
其中a等于所使用的角度,以度数表示,模180
°

[0254]
识别这些点(b.x i*o.x;b.y i*o.y),并且视频编码器200和视频解码器300将bimv存储到包含这些点中的至少一个的4
×
4单元。
[0255]
如上所述,当且仅当在块内找到
‘4’
时,视频编码器200和视频解码器300可以对权重映射的每个4
×
4子块进行搜索以使用bimv运动矢量。同样如上所述,样点的权重为
‘4’
可能意味着视频编码器200和视频解码器300通过相等加权来对第一预测块和第二预测块中的同位样点进行缩放(例如,4/8*pl 4/8*p2,其中pl指的是第一预测块中的样点,而p2指的是第二预测块中的样点)。换句话说,视频编码器200和视频解码器300可以确定子块集合(例如,在子块1504a-1504p和1510a-1510p中),其中每个子块包括至少一个与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的样点。这些子块的示例包括子块1504a-1504p和1510a-1510p中的任何一个子块,每个子块包括至少一个权重为4的样点。
[0256]
在一个或多个示例中,视频编码器200和视频解码器300可以为所确定的子块集合中的每个子块存储相应双向预测运动矢量。例如,视频编码器200和视频解码器300可以确定第一运动矢量和第二运动矢量是否来自不同的参考图片列表,以及以下之一:基于第一运动矢量和第二运动矢量来自不同参考图片列表,为该子块集合的每个子块存储第一运动矢量和第二运动矢量两者,或者基于第一运动矢量和第二运动矢量来自同一参考图片列表而选择第一运动矢量或第二运动矢量之一,并且为该子块集合中的每个子块存储所选择的该第一运动矢量或第二运动矢量之一。
[0257]
作为示例,假设第一运动矢量(mvl)引用参考图片列表1中的第一图片。在该示例中,第一运动矢量的运动矢量信息为l0:refidx=-1,mv=(0,0),l1:refidx=1,mv1=(x1,y1),这意味着第一运动矢量识别参考图片列表1中索引为
‘1’
的图片。假设第二运动矢量(mv2)引用参考图片列表0中的第二图片。在该示例中,第二运动矢量的运动矢量信息为l0:refidx=2,mv2=(x2,y2),l1:refidx=0,mv=(x’,y’),这意味着第二运动矢量识别参考图片列表0中索引为
‘2’
的图片。在该示例中,因为mvl和mv2引用不同参考图片列表中的图片,所以视频编码器200和视频解码器300可以对用于存储的运动矢量进行组合(例如,存储的运动矢量信息可以是l0:refidx=2,mv2=(x2,y2),l1:refidx=1,mv1=(x1,y1)。
[0258]
然而,如果第一运动矢量和第二运动矢量引用相同参考图片列表(例如,参考图片
列表0(l0)或参考图片列表1(l1))中的图片,则视频编码器200和视频解码器300可以基于该第一运动矢量和第二运动矢量来自相同参考图片列表而选择第一运动矢量或第二运动矢量之一,并为子块集合中的每个子块存储所选择的该第一运动矢量或第二运动矢量之一。作为一个示例,视频编码器200和视频解码器300可以被配置为始终存储mv2。
[0259]
上面描述了视频编码器200和视频解码器300可以为所确定的子块集合中的每个子块存储相应双向预测矢量的方式的示例。所确定的子块集合可以是第一子块集合,其中每个子块包括至少一个与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的样点。
[0260]
在一个或多个示例中,视频编码器200和视频解码器300可以被配置为确定第二子块集合,该第二子块集合不包括与最终预测块中的预测样点相对应的任何样点,该最终预测样点是基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的。这类子块的示例包括子块1504a-1504p和1510a-1510p中的任何一个子块,每个子块不包括任何权重为4的样点。视频编码器200和视频解码器300可以针对第二子块集合中的每个子块,确定该子块的大部分是处于第一分割中还是处于第二分割中,以及针对该第二子块集合中的每个子块,基于该子块的大部分处于第一分割中而存储第一运动矢量或者基于该子块的大部分处于第二分割中而存储第二运动矢量。
[0261]
如上所述,在一些示例中,可以使用(b.x;b.y)来找到加权区域的开始点,以将bimv存储到相对应的4
×
4单元,并且偏移(o.x;o.y)由所使用的角度的斜率从该角度的宽/高比来确定。例如,图15a和15b是应用于样点的权重的两个示例。在一些示例中,对于应用于样点和另一个块的权重的另一个示例,该另一个块的分割线可以具有与分割线1502或1508的斜率相同的斜率,但是该分割线的开始点和结束点可以不同。在这样的示例中,应用于该另一块的子块中的样点的权重可以与图15a和图15b中所示的示例相同,但有偏移。
[0262]
例如,图15a中的第三子块包括权重为5的第一行中的样点、权重为6的第二行中的样点、权重为7的第三行中的样点和权重为8的第四行中的样点。在一些示例中,如果分割线1502向左移动了一个子块,则第三个子块可以具有与块1500中的第四个子块相同的权重。
[0263]
在图15a的示例中,在块1500的顶行中,为子块存储的运动矢量可以如下所示:第一子块(例如,子块1504a),因为没有权重
‘4’
而存储单向预测运动矢量,第二子块,因为没有权重
‘4’
而存储单向预测运动矢量,第三子块,因为没有权重
‘4’
而存储单向预测运动矢量,第四子块,因为至少一个样点具有权重
‘4’
而存储双向预测运动矢量,第五子块,因为至少一个样点具有权重
‘4’
而存储双向预测运动矢量,第六子块,因为至少一个样点具有权重
‘4’
而存储双向预测运动矢量,第七子块,因为至少一个样点具有权重
‘4’
而存储双向预测运动矢量,以及第八子块,因为没有权重
‘4’
而存储单向预测运动矢量。因此,块1500的第一行中的子块的运动矢量存储可以如下:单向预测、单向预测、单向预测、双向预测、双向预测、双向预测和单向预测。
[0264]
如果分割线1502向左移动一个子块,并且权重如下所述改变,则第一行中的子块的运动矢量存储可以如下:单向预测、单向预测、双向预测、双向预测、双向预测、双向预测、单向预测和单向预测。哪些子块具有单向预测运动矢量,哪些子块具有双向预测运动矢量(例如,单向预测、单向预测、双向预测、双向预测、双向预测、双向预测、单向预测)的这种模式与上述哪些子块具有单向预测运动矢量,哪些子块具有双向预测运动矢量(例如,单向预
测、单向预测、单向预测、双向预测、双向预测、双向预测、单向预测)的模式相同。
[0265]
对于分割线1502,视频编码器200和视频解码器300可以存储分割线1502的斜率的权重表,该权重表指示对于该斜率,哪些子块具有权重
‘4’
,哪些子块没有权重
‘4’
。然后,为了确定哪个子块集合具有权重为
‘4’
的样点,视频编码器200和视频解码器300可以访问该表以确定哪个子块集合具有权重为
‘4’
的样点。例如,视频编码器200和视频解码器300可以存储用于将当前块分割为第一分割和第二分割的分割线的斜率的权重表。为了确定该子块集合,视频解码器300可以基于所存储的表和进入该表的偏移来确定该子块集合。
[0266]
下面描述了部分变换和残差传播。在一些示例中,关于图14描述的边界框也可以制成使得宽度和高度是2的幂,如图16所示。例如,图16示出了具有边界框1602和geo边(例如,分割线)1604的块1600。图6还示出了虚拟边界框1606,其可以具有宽度和高度为2的幂的虚拟边界框1606。
[0267]
在一些示例中,可以通过创建扩展的虚拟边界框来实现具有2的幂的宽度和高度,该扩展的虚拟边界框具有与原始边界框相同的左上角坐标,但宽度/高度是2的幂的值,并且大于或等于原始边界框的宽度/高度。虚拟边界框中的残差,而不是原始边界框中的残差,被设置为零,图16中的灰色区域。该部分变换可以应用于虚拟边界框。
[0268]
在某些示例中,通过限制位移和角度的组合,可以实现宽度和高度值为2的幂,使得边界框始终针对宽度和高度使用2的幂。该部分变换可以应用于边界框。当应用该限制(任意尺寸为2的幂)时,修改该角度的信令以排除其他未使用的角度。例如,只有导致边界框的2的幂的尺寸的角度可以被信令通知。
[0269]
以下技术可以应用于基于边界块的部分变换或在原始ger贡献中提出的部分变换,或任何其他部分变换。
[0270]
部分变换中涉及的样点的尺寸或数量可以被限制,其中该限制可以表示为例如应用于cu宽度和/或高度或cu面积的分数阈值。在一个示例中,分数阈值可以被设置为cu尺寸的1/4。
[0271]
在一些示例中,当且仅当部分变换的尺寸小于或等于cu尺寸的某个分数阈值时,才能应用残差滤波。在一个示例中,分数阈值可以被设置为cu尺寸的1/4。在一些示例中,只有当部分变换的尺寸小于或等于cu尺寸的分数阈值时,才应用部分变换和残差传播。
[0272]
在一些示例中,仅在某个特定方向上(例如,仅在水平方向上)应用残差滤波。这可以允许视频编解码器(例如,视频编码器200或视频解码器300)“飞速地”进行残差滤波,例如,就在执行逆变换之后,并且在用逆变换后的残差对残差缓冲器进行填充的同时立即进行。在这种情况下,在不访问垂直方向上的任何残差样点并且避免在垂直方向上向残差块写入的情况下,应用残差滤波。为了完成这一点,以某种方式进行从逆变换输出块对残差块进行填充,例如,仅在水平方向上。
[0273]
对于一些实现,限制部分变换尺寸以及还通过应用残差滤波来限制变换尺寸可能是期望的,因为如果限制阈值足够小,则部分变换和残差滤波可能需要与进行完全变换相同的处理时间。在这样的示例中,不会引入实现中的额外阶段。
[0274]
附加地,考虑到部分变换的限制,也可以限制在块中应用部分变换还是完全变换的标志或指示符的信令通知。例如,当不可能应用部分变换时,即受限的,该标志或指示符不被信令通知,而应用完全变换。类似地,当部分变换可能没有完全覆盖边缘区域,即边缘
区域中存在未被变换的样点时,则可以禁用部分变换,并且不执行部分变换或完全变换的使用的信令通知,而应用完全变换。这种情况可能会发生,在这种情况下,样点的数量与变换块的可用尺寸(宽度*高度)不相同。在一些情况下,通常只支持2的幂的长度的变换。
[0275]
在一些示例中,部分变换只适用于具有一定角度的geo,例如集合{0
°
,90
°
,180
°
,270
°
,360
°
}中的角度。也就是说,只有当划分方向是水平或垂直时才应用部分变换。
[0276]
下面描述三角合并模式角度的扩展。在一些示例中,在tpm的混合过程中使用的权重可以扩展到每cu覆盖额外的40个角度,其中每个角度的关联权重值可以通过使用与端到端对角线划分tpm模式相同的推导函数来表示(例如,如上关于三角分割所描述的)。
[0277]
下面描述基于掩码的扩展。随机cu的权重值的生成过程与从预定义的权重值掩码中采用部分权重值相同。如图17a和图17b所述,cu的权重值可以从对应于所需角度(例如45
°
)的底层掩码(称为假想cu)的任何地方采样。假想cu的底层掩码可以根据所需的角度而改变。根据tpm设计,所支持的角度覆盖m*π arctan(2n),其中m∈{0,1/2,1,3/2}且n∈{-5,-4,

,4,5}。图18a-图18d中示出了额外支持的角度的示例。
[0278]
假想cu权重值的生成过程是个两步过程:(a)从规则tpm cu中采取权重值以填充假想cu的掩码的一部分,以及(b)根据剩余部分在空间上是更靠近顶部三角分割还是底部三角分割,使用权重0或8对掩码的剩余部分进行填充。例如,如图18a中描绘的具有arctan(128/64)的假想cu的掩码如下这样形成:首先,它用128
×
64 tpm cu的权重值填充它的上半部分。然后,通过使用分配给128x64 tpm cu底部三角形的相同权重值来填充该假想cu中的其余部分。在另一个示例中,如图18c中描绘的具有arctan(128/64)的假想cu的掩码如下这样形成:首先使用64
×
128 tpm cu的权重填充左半部;然后,通过使用分配给64
×
128 tpm cu的底部三角形的相同权重值来填充该假想cu中的剩余部分。
[0279]
下面描述基于计算的扩展。随机cu的权重值的生成过程与从具有对角线划分边缘的较大假想cu中采取部分权重值相同。给定尺寸为(w)x(h)的cu,tpm已经支持角度为arctan(w/h)的对角线划分。这种扩展是为了扩展tpm角的范围,以覆盖图18a-图18d中指定的那些。这些角可以用公式表述为m*π arctan(s*w/h),其中s为整数,并且2-5
≤arctan(s*w/h)≤25。
[0280]
例如,在图19a中,具有arctan(2w/h)的角度的(w)x(h)cu的权重值与采用(2w)x(h)假想cu的左半部权重值相同。在另一示例中,如在图19b中,具有arctan(4w/h)的角度的(w)x(h)cu的权重值与采用(4w)x(h)假想cu的左半部权重值相同。因此,tpm可以通过使用与较大cu(即,假想cu)相同的权重值推导过程来针对每个cu支持更多角度。
[0281]
类似地,当m不为零时,从假想cu引用的权重值可能会改变。假设假想cu的尺寸为(w)x(h):
[0282]
a.当m=0且w》h时,引用假想cu的左半部分权重值;
[0283]
b.当m=0且w《h时,引用假想cu的左上半部分权重值;
[0284]
c当m=1/2且w》h时,引用假想cu的右半部分权重值;
[0285]
d.当m=1/2且w《h时,引用假想cu的上半部分权重值;
[0286]
e.当m=1且w》h时,引用假想cu的右部分权重值;
[0287]
f.当m=1且w《h时,引用假想cu的下部分权重值;
[0288]
g.当m=3/2且w》h时,引用假想cu的左部分权重值;
[0289]
h.当m=3/2且w《h时,引用假想cu的下部分权重值;
[0290]
二维偏移(dx,dy),可以被加到每个cu角的坐标上,以容纳更多的权值选项。因此,从假想cu的权重值采样不需要从任何cu角开始。例如,图20中,可以将采样位置从左上cu角移动到假想cu内的某个位置,然后在移动偏移所指向的位置处对权重值进行采样。
[0291]
图21是示出用于对当前块进行处理的示例方法的流程图。视频编码器200和视频解码器300可以确定以几何分区模式进行编解码的视频数据的当前块的第一分割和该视频数据的当前块的第二分割(2100)。当前块的示例可以是图15a和图15b的块1500或1506。第一分割的示例包括分割1503a或1509a,并且第二分割的示例包括分割1503b或1509b。
[0292]
视频编码器200和视频解码器300可以基于第一分割的第一运动矢量来确定视频数据的第一预测块,以及基于第二分割的第二运动矢量来确定该视频数据的第二预测块(2102)。例如,视频编码器200和视频解码器300可以基于相应的运动矢量确定分割1503a或1509a的第一预测块和分割1503b或1509b的第二预测块。
[0293]
视频编码器200和视频解码器300可以基于指示对第一预测块中的样点进行缩放的量和对第二预测块中的样点进行缩放的量的权重,对该第一预测块和第二预测块进行混合,以生成当前块的最终预测块(2104)。例如,图15a和图15b示出了与块1500或块1506中的样点相关联的权重的示例。权重指示对第一预测块中的样点和第二预测块中的同位样点进行缩放的量。视频编码器200和视频解码器300可以通过基于权重对第一预测块和第二预测块中的样点进行混合(例如,如图15a和15b所示)来生成最终预测块。
[0294]
视频编码器200和视频解码器300可以将当前块划分为多个子块(2106)。例如,视频编码器200和视频解码器300可以将块1500划分为4
×
4尺寸的子块1504a-1504p,并将块1506划分为4
×
4尺寸的子块1510a-1510p。
[0295]
视频编码器200和视频解码器300可以确定子块集合,其中每个子块包括至少一个与基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的最终预测块中的预测样点相对应的样点(2108)。例如,在图15a中,子块集合可以包括块1500的顶行中的第三、第四、第五、第六子块和块1500中的最后子块(例如,子块1504p),因为这些子块中的每一个都包括与权重
‘4’
相关联的至少一个样点。
[0296]
视频编码器200可以为所确定的子块集合中的每个子块存储相应双向预测运动矢量(2110)。例如,视频编码器200和视频解码器300可以确定第一运动矢量和第二运动矢量是否来自不同的参考图片列表,以及以下之一:基于第一运动矢量和第二运动矢量来自不同参考图片列表,为该子块集合的每个子块存储第一运动矢量和第二运动矢量两者,或者基于第一运动矢量和第二运动矢量来自同一参考图片列表而选择第一运动矢量或第二运动矢量之一,并且为该子块集合中的每个子块存储所选择的该第一运动矢量或第二运动矢量之一。
[0297]
在一些示例中,该子块集合可以是第一子块集合。视频编码器200和视频解码器300可以被配置为确定第二子块集合,该第二子块集合不包括与最终预测块中的预测样点相对应的任何样点,该最终预测样点是基于第一预测块中的样点和第二预测块中的样点的相等加权而生成的。此类子块的示例包括块1500的顶行中的第一、第二、第三和最后一个子块以及块1500的底行中的第一、第二、第三、第四、第五、第六和第七子块,由于这些子块中没有一个子块包括与视频编码器200的权重相关联的样点,因此视频解码器300可以针对第
二子块子集中的每个子块确定该子块的大部分是处于第一分割中还是处于第二分割中,并且针对第二子块集合中的每个子块,基于该子块的大部分处于第一分割中而存储第一运动矢量,或者基于该子块的大部分处于第二分割中而存储第二运动矢量。
[0298]
视频编码器200和视频解码器300可能有各种原因来存储运动矢量信息。作为一个示例,视频编码器200和视频解码器300可以基于所存储的相应双向预测运动矢量为后续块构建用于合并模式或高级运动矢量预测(amvp)模式的候选列表。
[0299]
除了为子块存储运动矢量信息之外,视频编码器200和视频解码器300可以对当前块进行编码或解码。例如,视频编码器200可以基于当前块与最终预测块之间的差和指示残差块的信令信息来确定残差块。视频解码器300可以接收指示最终预测块与当前块之间的差的残差块的信息,并且基于最终预测块和残差块来重建当前块。
[0300]
以下描述了可以单独使用或组合使用的示例技术。
[0301]
示例1.一种对视频数据进行编解码的方法,该方法包括:从一组角度确定一个或多个角度,用于使用几何分割模式(geo)对当前块进行分割,其中从其确定一个或多个角度的该组角度与可用于三角分割模式(tpm)的一组角度相同;基于所确定的一个或多个角度对当前块进行分割;以及基于当前块的分割对当前块进行编解码。
[0302]
示例2.一种对视频数据进行编解码的方法,该方法包括:从一组权重确定一个或多个权重,用于使用几何分割模式(geo)对当前块进行混合,其中从其确定一个或多个权重的该组权重与可用于三角分割模式(tpm)的一组权重相同;基于所确定的一个或多个权重对当前块进行混合;以及基于当前块的混合对当前块进行编解码。
[0303]
示例3.一种对视频数据进行编解码的方法,该方法包括:确定用于使用几何分割模式(geo)的运动场存储,其中运动场存储与可用于三角分割模式(tpm)的运动场存储相同;以及基于所确定的运动场存储对当前块进行编解码。
[0304]
示例4.一种包括示例1-示例3的任何组合的方法。
[0305]
示例5.根据示例1-示例3的任一项或任何组合的方法,其中,编解码包括解码。
[0306]
示例6.根据示例1-示例3的任一项或任何组合的方法,其中,编解码包括编码。
[0307]
示例7.一种用于对视频数据进行编解码的设备,该设备包括被配置为存储视频数据的存储器和耦合到该存储器的处理电路,该处理电路被配置为执行示例1-示例3的任一项或任何组合。
[0308]
示例8.根据示例7的设备,还包括被配置为显示经解码视频数据的显示器。
[0309]
示例9.根据示例7和示例9的任一项的设备,其中,该设备包括以下一个或多个:照相机、计算机、移动设备、广播接收器设备或机顶盒。
[0310]
示例10.根据示例7-示例9的任一项的设备,其中,该设备包括视频解码器。
[0311]
示例11.根据示例7-示例9的任一项的设备,其中,该设备包括视频编码器。
[0312]
示例12.一种在其上存储有指令的计算机可读存储介质,该指令在执行时使一个或多个处理器执行示例1-示例3的任一项或任何组合的方法。
[0313]
示例13.一种用于对视频数据进行编解码的设备,该设备包括用于执行示例1-示例3的任一项或任何组合的方法的部件。
[0314]
应该认识到,根据示例,本文中描述的任何技术的某些动作或事件可以以不同的序列执行,可以被一起添加、合并或省去(例如,不是所有描述的动作或事件是技术实践所
必须的)。此外,在某些示例中,动作或事件可以,例如通过多线程处理、中断处理或多个处理器并发地执行而不是顺序地执行。
[0315]
在一个或多个示例中,可以在硬件、软件、固件或其任意组合中来实现所描述的功能。如果以在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0316]
作为示例而非限制,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁性存储设备、闪存或可以用于以指令或数据结构形式存储所需程序代码并且可以由计算机访问的任何其他介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)或无线技术(诸如红外、无线电和微波)从网站、服务器或其他远程源发送指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(诸如红外、无线电和微波)。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是针对非暂时性有形存储介质。如本文使用的,磁盘和光盘包括压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中,磁盘通常以磁性方式重现数据,而光盘用激光光学地重现数据。上述的组合也应包括在计算机可读介质的范围内。
[0317]
指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效集成的或分立逻辑电路。因此,如本技术中所使用的术语“处理器”和“处理电路”可以是指任何前述结构或适合于实现本技术中描述的技术的任何其他结构。另外,在一些方面,本技术中描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或合并在组合编解码器中。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。
[0318]
本公开的技术可以在包括无线手机、集成电路(ic)或一组ic(例如,芯片集)的多种设备或装置中实现。在本公开中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作硬件单元的集合来提供,包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。
[0319]
已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
再多了解一些

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

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

相关文献