三角预测模式中的取整
文献发布时间:2023-06-19 11:24:21
相关申请的交叉引用
根据适用的《专利法》和/或《巴黎公约》的规定,本申请及时要求于2018年11月10日提交的国际专利申请号PCT/CN2018/114931的优先权和利益。根据美国法律的目的,将上述申请的全部公开以引用方式并入本文,作为本申请公开的一部分。
技术领域
本申请文档一般针对图像和视频编解码技术。
背景技术
运动补偿是视频处理中的技术,其通过考虑相机和/或视频中的对象的运动,在给定先前和/或将来帧的情况下预测视频中的帧。运动补偿可以用于视频数据的编码和解码以实现视频压缩。
发明内容
描述了与用于图像和视频编解码的、基于子块的预测的统一取整方法相关的设备、系统和方法。
在一个代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:基于运动候选对,为视频的当前块的处理生成成对Merge候选;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
其中,Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中,>>表示右移操作。
在另一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:基于运动候选对,为视频的当前块的处理生成成对Merge候选;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
其中off和s是整数,并且其中,>>表示移位操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:基于运动候选对,为视频的当前块的处理生成成对Merge候选;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
其中off和s是整数,并且其中,>>表示移位操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中,>>表示右移操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
其中off和s是整数,并且其中,>>表示移位操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
其中off和s是整数,并且其中,>>表示移位操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
MV
其中Shift(x,s)=(x+off)>>s,其中W、off和s是整数,并且其中,>>表示右移操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
MV
其中
其中W、off和s是整数,并且其中,>>表示移位操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得:
MV
MV
其中
其中W、off和s是整数,并且其中,>>表示移位操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:基于缩放运动矢量和列表0运动矢量,为使用几何分割模式编解码的视频的当前块,生成单向预测运动候选;以及基于所述单向预测运动候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述缩放运动矢量为MV1’=(MV1′x,MV1′y),并且所述列表0运动矢量为MV0=(MV0x,MV0y),并且其中,MV*=(MV*x,MV*y)是所述单向预测运动候选,使得:
MV
其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中,>>表示右移操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:基于缩放运动矢量和列表0运动矢量,为使用几何分割模式编解码的视频的当前块,生成单向预测运动候选;以及基于所述单向预测运动候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述缩放运动矢量为MV1’=(MV1′x,MV1′y),并且所述列表0运动矢量为MV0=(MV0x,MV0y),并且其中,MV*=(MV*x,MV*y)是所述单向预测运动候选,使得:
MV
其中off和s是整数,并且其中,>>表示移位操作。
在又一代表性方面,所公开的技术可用于提供视频处理的方法。
所述方法包括:基于缩放运动矢量和列表0运动矢量,为使用几何分割模式编解码的视频的当前块,生成单向预测运动候选;以及基于所述单向预测运动候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述缩放运动矢量为MV1’=(MV1′x,MV1′y),并且所述列表0运动矢量为MV0=(MV0x,MV0y),并且其中,MV*=(MV*x,MV*y)是所述单向预测运动候选,使得:
MV
其中off和s是整数,并且其中,>>表示移位操作。
在又一代表性方面,上述方法可以以处理器可执行代码的形式体现,并且存储在计算机可读程序介质中。
在又一代表性方面,公开了一种设备,其被配置为或可操作以执行上述方法。所述设备可以包括被编程以实现该方法的处理器。
在又一代表性方面,视频解码装置可以实现本文中所述的方法。
在附图、说明书和权利要求书中更详细地描述了所公开的技术的上述和其它方面和特征。
附图说明
图1示出了基于子块的预测的示例。
图2示出了简化的仿射运动模型的示例。
图3示出了每个子块的仿射运动矢量场(MVF)的示例。
图4示出了AF_INTER仿射运动模式的运动矢量预测(MVP)的示例。
图5A和5B示出了AF_MERGE仿射运动模式的示例候选。
图6示出了使用用于编解码单元(CU)的可选时域运动矢量预测(ATMVP)算法的运动预测的示例。
图7示出了空时运动矢量预测(STMVP)算法使用的具有子块和相邻块的编解码单元(CU)的示例。
图8示出了双向光流(BIO)算法使用的光流轨迹的示例。
图9A和9B示出了使用无块扩展的双向光流(BIO)算法的示例快照。
图10示出了帧速率上转换(FRUC)算法中的双边匹配的示例。
图11示出了FRUC算法中的模板匹配的示例。
图12示出了FRUC算法中的单边运动估计的示例。
图13示出了JEM中4:2:0格式的不同分量的子块的示例。
图14示出了根据所公开的技术的4:2:0格式的不同分量的子块的示例。
图15示出了根据所公开的技术的4:2:0格式的不同分量的子块的另一示例。
图16示出了根据所公开的技术的子块运动矢量(MV)复制的示例。
图17示出了根据所公开的技术的子块运动矢量(MV)复制的另一示例。
图18示出了子块运动矢量(MV)推导的示例。
图19A至19C示出了视频处理的示例方法的流程图。
图20是用于实现本文档所述的视觉媒体解码或视觉媒体编码技术的硬件平台的示例的框图。
图21是可以实现所公开的技术的示例视频处理系统的框图。
具体实施方式
由于对高分辨率视频的需求日益增加,视频编解码方法和技术在现代技术中无处不在。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且不断地被改进以提供更高的编解码效率。视频编解码器将未压缩的视频转换为压缩格式,或反之亦然。视频质量、用于表示视频的数据量(由比特率决定)、编码和解码算法的复杂度、对数据丢失和错误的敏感度、易于编辑、随机访问和端到端延迟(等待时间(latency))之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编解码(HEVC)标准(也称为H.265或MPEG-H第2部分)、待定案的多功能视频编解码标准或其它当前和/或未来的视频编解码标准。
基于子块的预测首先被高效视频编解码(HEVC)标准引入视频编解码标准。使用基于子块的预测,将块(诸如编解码单元(CU)或预测单元(PU))划分为几个不重叠的子块。可以为不同的子块分配不同的运动信息,诸如参考索引或运动矢量(MV),并为每个子块分别执行运动补偿(MC)。图1示出了基于子块的预测的示例。
所公开的技术的实施例可应用于现有视频编解码标准(例如,HEVC、H.265)和未来标准,以提高运行时间性能。在本文中,使用章节标题来提高描述的可读性,并且不会以任何方式将讨论或实施例(和/或实现)仅限于各自的章节。
1.联合探索模型(JEM)的示例
在一些实施例中,使用名为联合探索模型(JEM)的参考软件来探索未来的视频编解码技术。在JEM中,基于子块的预测被用于多种编解码工具中,诸如仿射预测、可选时域运动矢量预测(ATMVP)、空时运动矢量预测(STMVP)、双向光流(BIO)、帧速率上转换(FRUC)、局部自适应运动矢量分辨率(LAMVR)、重叠块运动补偿(OBMC)、局部照明补偿(LIC)和解码器侧运动矢量细化(DMVR)。
1.1仿射预测的示例
在HEVC中,仅将平移运动模型应用于运动补偿预测(MCP)。然而,相机和对象可能具有多种运动,例如放大/缩小、旋转、透视运动和/或其它不规则运动。另一方面,JEM应用了简化的仿射变换运动补偿预测。图2示出了由两个控制点运动矢量V
如图2所示,(v
这里,MvPre是运动矢量分数精度(例如,JEM中的1/16)。(v
图3示出了块300的每个子块的仿射MVF的示例。为了推导出每个M×N子块的运动矢量,可以根据等式(1)计算每个子块的中心样本的运动矢量,并且取整到运动矢量分数精度(例如,JEM中的1/16)。然后可以应用运动补偿插值滤波器,利用推导出的运动矢量生成各子块的预测。在MCP之后,对每个子块的高精度运动矢量进行取整,并将其保存为与正常运动矢量相同的精度。
在JEM中,有两个仿射运动模式:AF_INTER模式和AF_MERGE模式。对于宽度和高度都大于8的CU,可以应用AF_INTER模式。在比特流中,发信令通知(signal)CU级别的仿射标志,以指示是否使用AF_INTER模式。在AF_INTER模式中,使用相邻块构造具有运动矢量对{(v
图4示出了在AF_INTER模式中块400的运动矢量预测(MVP)的示例。如图4所示,从子块A、B或C的运动矢量中选择v
当在AF_MERGE模式下应用CU时,它从有效的相邻重构块中获取用仿射模式编解码的第一个块。图5A示出了当前CU500的候选块的选择顺序的示例。如图5A所示,选择顺序可以是从当前CU 500的左(501)、上(502)、右上(503)、左下(504)到左上(505)。图5B示出了在AF_MERGE模式中当前CU 500的候选块的另一个示例。如果相邻的左下块501以仿射模式编解码,如图5B所示,则导出包含子块501的CU左上角、右上角和左下角的运动矢量v
根据等式(1)中的仿射运动模型计算当前CU的CPMV v0和v1后,可以生成当前CU的MVF。为了识别当前CU是否使用AF_MERGE模式进行编解码,当至少有一个相邻块以仿射模式编解码时,可以在比特流中用信令通知仿射标志。
在JEM中,仅当当前块的宽度和高度都大于8时可以使用非Merge仿射模式;仅当当前块的区域(即宽度x高度)不小于64时可以使用Merge仿射模式。
1.2可选时域运动矢量预测(ATMVP)的示例
在ATMVP方法中,通过从小于当前CU的块中提取多组运动信息(包括运动矢量和参考指数),来修改时域运动矢量预测(TMVP)方法。
图6示出了CU 600的ATMVP运动预测过程的示例。ATMVP方法分两步预测CU 600内子CU 601的运动矢量。第一步是用时域矢量识别参考图片650中的相应块651。参考图片650也称为运动源图片。第二步是将当前的CU 600划分成子CU 601,并从每个子CU对应的块中获取每个子CU的运动矢量和参考指数。
在第一步中,参考图片650和对应的块由当前CU 600的空间相邻块的运动信息确定。为了避免相邻块的重复扫描处理,使用当前CU 600的Merge候选列表中的第一Merge候选。第一可用的运动矢量及其相关联的参考索引被设置为时域矢量和对运动源图片的索引。这样,与TMVP相比,可以更准确地识别对应的块,其中对应的块(有时称为并置块)始终位于相对于当前CU的右下角或中心位置。
在第二步中,通过将时域矢量添加到当前CU的坐标中,通过运动源图片650中的时域矢量识别子CU 651的对应块。对于每个子CU,使用其对应块的运动信息(例如,覆盖中心样本的最小运动网格)来导出子CU的运动信息。在识别出对应的N×N块的运动信息后,用与HEVC的TMVP同样方式,将其转换为当前子CU的运动矢量和参考指数,其中应用运动缩放和其它程序。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的POC都小于当前图片的POC),并且可能使用运动矢量MVx(例如,与参考图片列表X对应的运动矢量)来预测每个子CU的运动矢量MVy(例如,X等于0或1并且Y等于1-X)。
1.3空时运动矢量预测(STMVP)的示例
在STMVP方法中,子CU的运动矢量按照光栅扫描顺序递归导出。图7示出具有四个子块的一个CU和相邻块的示例。考虑8×8的CU 700,其包括四个4×4子CU A(701)、B(702)、C(703)和D(704)。当前帧中相邻的4×4块标记为a(711)、b(712)、c(713)和d(714)。
子CU A的运动推导由识别其两个空间邻居开始。第一邻居是子CU A701上方的N×N块(块c 713)。如果该块c(713)不可用或是帧内编解码的,则检查子CU A(701)上方的其它N×N块(从左到右,从块c 713处开始)。第二邻居是子CU A 701左侧的一个块(块b 712)。如果块b(712)不可用或是帧内编解码的,则检查子CU A 701左侧的其它块(从上到下,从块b712处开始)。每个列表从相邻块获得的运动信息被缩放到给定列表的第一参考帧。接下来,按照HEVC中规定的与TMVP相同的程序,推导出子块A 701的时域运动矢量预测(TMVP)。提取块D 704处的并置块的运动信息并进行相应的缩放。最后,在检索和缩放运动信息后,对每个参考列表分别平均所有可用的运动矢量。将平均的运动矢量指定为当前子CU的运动矢量。
1.4双向光流(BIO)的示例
双向光流(BIO)方法是在逐块运动补偿之上对双向预测进行的逐样本运动细化。在一些实现中,样本级的运动细化不使用信令。
设I
将此光流等式与每个样本的运动轨迹的埃尔米特(Hermite)插值相结合,得到唯一的三阶多项式,该多项式在末端同时匹配函数值I
图8示出了双向光流(BIO)方法中的示例光流轨迹。这里,τ
通过最小化A点和B点之间的值的差Δ来确定运动矢量场(v
上述等式中的所有值取决于样本位置,表示为(i′,j′)。假设在局部周围区域的运动是一致的,那么Δ可以在以当前预测点(i,j)为中心的(2M+1)x(2M+1)方形窗口Ω内最小化,其中M等于2:
后在水平方向最小化。结果如下:
其中,
为了避免被零除或很小的值除,可在式(7)和式(8)中引入正则化参数r和m,其中
r=500·4
m=700·4
这里,d是视频样本的比特深度。
为了使BIO的内存访问与常规双向预测运动补偿相同,计算当前块内位置的所有预测和梯度值I
使用BIO,可以对每个样本的运动场进行细化。为了降低计算复杂度,在JEM中采用了基于块设计的BIO。可以基于4x4块计算运动细化。在基于块的BIO中,可以对4x4块中所有样本的等式(9)中的s
这里,b
在某些情况下,由于噪声或不规则运动,BIO的MV团(regiment)可能不可靠。因此,在BIO中,MV团的尺寸被固定到一个阈值。该阈值是基于当前图片的参考图片是否全部来自一个方向确定的。例如,如果当前图片的所有参考图片都来自一个方向,则该阈值的值被设置为12×2
可以使用与HEVC运动补偿处理一致的操作(例如,2D可分离有限脉冲响应(FIR))通过运动补偿插值同时计算BIO的梯度。在一些实施例中,2D可分离FIR的输入是与运动补偿处理相同的参考帧,以及根据块运动矢量的分数部分的分数位置(fracX,fracY)。对于水平梯度
表2 BIO中用于梯度计算的示例滤波器
表3 BIO中用于预测信号生成的示例插值滤波器
在JEM中,当两个预测来自不同的参考图片时,BIO可应用于所有的双向预测块。当为CU启用局部照明补偿(LIC)时,可以禁用BIO。
在一些实施例中,在正常MC处理之后将OBMC应用于块。为了降低计算复杂度,在OBMC处理期间可能不应用BIO。这意味着在OBMC处理期间,当使用自己的MV时,将BIO应用于块的MC处理,而当使用相邻块的MV时,不将BIO应用于块的MC处理。
在JEM中,仅为亮度分量调用BIO。
1.5帧速率上转换(FRUC)的示例
对于CU,当其Merge标志为真时,可以用信令通知对FRUC标志。当FRUC标志为假时,可以用信令通知Merge索引并且使用常规Merge模式。当FRUC标志为真时,可以用信令通知另一个FRUC模式标志以指示将使用哪种方法(例如,双边匹配或模板匹配)来导出该块的运动信息。
在编码器端,基于对正常Merge候选所做的RD成本选择决定是否对CU使用FRUCMerge模式。例如,通过使用RD成本选择来检查CU的多个匹配模式(例如,双边匹配和模板匹配)。导致最低成本的模式进一步与其它CU模式相比较。如果FRUC匹配模式是最有效的模式,那么对于CU,将FRUC标志设置为真,并且使用相关的匹配模式。
通常,FRUC Merge模式中的运动推导处理有两个步骤:首先执行CU级运动搜索,然后执行子CU级运动细化。在CU级,基于双边匹配或模板匹配,导出整个CU的初始运动矢量。首先,生成MV候选列表,并且选择导致最低匹配成本的候选作为进一步CU级细化的起点。然后在起始点附近执行基于双边匹配或模板匹配的局部搜索。将最小匹配成本的MV结果作为整个CU的MV值。随后,以导出的CU运动矢量为起点,进一步在子CU级细化运动信息。
例如,对于W×H CU运动信息推导执行以下推导过程。在第一阶段,推导出了整个W×H CU的MV。在第二阶段,该CU进一步被分成M×M子CU。M的值按照(16)计算,D是预先定义的划分深度,在JEM中默认设置为3。然后导出每个子CU的MV值。
图10示出在帧速率上转换(FRUC)法中使用的双边匹配的示例。通过在两张不同的参考图片(1010,1011)中沿当前CU(1000)的运动轨迹找到两个块之间最接近的匹配,使用双边匹配来获得当前CU的运动信息。在连续运动轨迹假设下,指向两个参考块的运动矢量MV0(1001)和MV1(1002)与当前图片和两个参考图片之间的时间距离(例如,TD0(1003)和TD1(1004))成正比。在一些实施例中,当当前图片1000暂时位于两个参考图片(1010,1011)之间并且当前图片到两个参考图片的时间距离相同时,双边匹配成为基于镜像的双向MV。
图11示出在帧速率上转换(FRUC)方法中使用的模板匹配的示例。模板匹配可以用于通过找到当前图片中的模板(例如,当前CU的顶部和/或左侧相邻块)与参考图片1110中的块(例如,与模板尺寸相同)之间的最接近匹配来获取当前CU 1100的运动信息。除了上述的FRUC Merge模式外,模板匹配也可以应用于AMVP模式。在JEM和HEVC中,AMVP都具有两个候选。通过模板匹配方法,可以导出新的候选。如果通过模板匹配新导出的候选与第一个现有的AMVP候选不同,则将其插入AMVP候选列表的最开始处,并且然后将列表尺寸设置为2(例如,通过删除第二个现有AMVP候选)。当应用于AMVP模式时,仅应用CU级搜索。
CU级设置的MV候选可以包括以下:(1)原始AMVP候选,如果当前CU处于AMVP模式,(2)所有Merge候选,(3)插值MV场(稍后描述)中的数个MV,以及顶部和左侧相邻运动矢量。
当使用双边匹配时,Merge候选的每个有效MV可以用作输入,以生成假设为双边匹配的MV对。例如,Merge候选在参考列表A处的一个有效MV为(MVa,ref
在一些实现中,还可以将来自插值MV场中的四个MV添加到CU级候选列表中。更具体地,添加当前CU的位置(0,0)、(W/2,0)、(0,H/2)和(W/2,H/2)处插值的MV。当在AMVP模式下应用FRUC时,原始的AMVP候选也被添加到CU级的MV候选集。在一些实现中,在CU级,可以将AMVP CU的15个MV和Merge CU的13个MV添加到候选列表中。
在子CU级设置的MV候选包括从CU级搜索确定的MV,(2)顶部、左侧、左上方和右上方相邻的MV,(3)参考图片中并置的MV的缩放版本,(4)一个或多个ATMVP候选(例如,最多四个)和(5)一个或多个STMVP候选(例如,最多四个)。来自参考图片的缩放MV如下导出。两个列表中的参考图片都被遍历。参考图片中子CU的并置位置处的MV被缩放为起始CU级MV的参考。ATMVP和STMVP候选可以是前四个。在子CU级,一个或多个MV(例如,最多17个)被添加到候选列表中。
在一些实施例中,两个参考列表中每个参考图片的运动场在4×4的块级别上被遍历。图12示出了在FRUC方法中的单边运动估计(ME)1200的示例。对于每个4×4块,如果与块相关联的运动通过当前图片中的4×4块,并且该块没有被分配任何插值运动,则根据时间距离TD0和TD1将参考块的运动缩放到当前图片(与HEVC中TMVP的MV缩放相同方式),并且在当前帧中将该缩放运动分配给该块。如果没有分配缩放的MV给4×4块,则在插值运动场中将块的运动标记为不可用。
匹配成本的计算在不同的步骤处有点不同。当从CU级的候选集中选择候选时,匹配成本可以是双边匹配或模板匹配的绝对和差(absolute sum difference,SAD)。在确定起始MV后,双边匹配在子CU级搜索的匹配成本C如下计算:
这里,w是权重系数。在一些实施例中,w可以被经验地设置为4。MV和MV
在FRUC模式下,通过仅使用亮度(亮度)样本导出MV。导出的运动将用于MC帧间预测的亮度和色度。确定MV后,对亮度使用8抽头(8-taps)插值滤波器并且对色度使用4抽头(4-taps)插值滤波器,来执行最终MC。
MV细化是基于模式的MV搜索,以双边匹配成本或模板匹配成本为标准。在JEM中,支持两种搜索模式—无限制中心偏置菱形搜索(UCBDS)和自适应交叉搜索,分别在CU级和子CU级进行MV细化。对于CU级和子CU级的MV细化,都在四分之一亮度样本MV精度下直接搜索MV,接着是八分之一亮度样本MV细化。将CU和子CU步骤的MV细化的搜索范围设置为8个亮度样本。
在双边匹配Merge模式下,应用双向预测,因为CU的运动信息是基于在两个不同的参考图片中沿着当前CU运动轨迹的两个块之间的最近匹配得出的。在模板匹配Merge模式下,编码器可以从列表0的单向预测、列表1的单向预测或者双向预测中为CU做出选择。该选择可以基于如下的模板匹配成本:
如果costBi<=factor*min(cost0,cost1)
则使用双向预测;
否则,如果cost0<=cost1
则使用列表0中的单向预测;
否则,
使用列表1中的单向预测;
这里,cost0是列表0模板匹配的SAD,cost1是列表2模板匹配的SAD,并且costBi是双向模板匹配的SAD。例如,当factor的值等于1.25时,意味着选择过程朝双向预测偏移。帧间预测方向选择可应用于CU级模板匹配处理。
1.6为色度分量中的MC导出的MV的示例
在示例中,HEVC标准定义了如何从亮度分量中的MC使用的MV(称为mv)导出色度分量中的MC使用的MV(称为mvC)。一般来说,mvC是以mv乘以一个系数来计算的,这取决于色彩格式,如4:2:0或4:2:2。
1.7 VVC中当前图片参考的示例
在HEVC屏幕内容编解码扩展(SCC)中,采用了帧内块复制(IBC,或称为帧内块补偿)技术,也称为当前图片参考(CPR)。这个工具对于屏幕内容视频的编解码非常有效,因为文本和图形丰富的内容频繁出现在相同图片中。将具有相等或相似模式的先前重构块作为预测器可以有效地降低预测误差,从而提高编解码效率。
与HEVC SCC中的CRP的设计类似,在VVC中,在序列和图片级二者上用信令通知IBC模式的使用。当在序列参数集(SPS)上启用IBC模式时,它可以在图片级启用。当在图片级启用IBC模式时,当前重建的图片被视为参考图片。因此,在现有的VVC帧间模式的顶层不需要在块级上进行语法改变来用信令通知IBC模式的使用。
本实施例的特征包括:
○它被视为常规帧间模式。因此,Merge和跳过模式也可用于IBC模式。Merge候选列表构造是统一的,包含来自以IBC模式或HEVC帧间模式编解码的相邻位置的Merge候选。取决于所选择的Merge索引,可以将Merge或跳过模式下的当前块合并到IBC模式编解码的邻居、或者以不同图片作为参考图片的常规帧间模式编解码的邻居。
○IBC模式的块矢量预测和编解码方案重用在HEVC帧间模式(AMVP和MVD编码)中用于运动矢量预测和编解码的方案。
○IBC模式的运动矢量(也称为块矢量)以整数像素精度编解码,但在解码后以1/16像素精度存储在存储器中,因为在插值和去方块阶段需要四分之一像素精度。当用于IBC模式的运动矢量预测时,存储的矢量预测器将右移4。
○搜索范围:限制在当前CTU内。
○当启用仿射模式/三角模式/GBI/加权预测时,不允许CPR。
1.8成对平均候选的示例
通过对当前Merge候选列表中预定义候选对进行平均,生成成对平均候选,并且预定义对定义为{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)},其中数字表示Merge候选列表的Merge索引。分别计算每个参考列表的平均运动矢量。如果两个运动矢量都在一个列表中可用,则即使当这两个运动矢量指向不同的参考图片时,也会对它们进行平均;如果只有一个运动矢量可用,则直接使用该运动矢量;如果没有运动矢量可用,则保持此列表无效。在HEVC标准中,成对平均候选替换组合候选。假设两个Merge候选的MV是MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y),则表示为MV*=(MV*x,MV*y)的成对Merge候选的MV导出为:
MV*x=(MV0x+MV1x)/2,并且
MV*y=(MV0y+MV1y)/2。
此外,当MV0和MV1参考当前图片(即CPR模式)时,MV*x和MV*y被进一步取整,以移除比全像素精度更高的部分,以确保获取整数MV:
MV*x=(MV*x/16)<<4,并且
MV*y=(MV*y/16)<<4
应当注意的是,对于每一对,如果两个中的一个用CPR编解码,而另一个没有用CPR编码,则不允许该对生成成对平均候选。
1.9三角预测模式的示例
三角预测模式(TPM)的概念是引入用于运动补偿预测的新的三角分割。在对角线方向或逆对角线方向上将CU划分成两个三角预测单元。CU中的每个三角预测单元是使用从单个单向预测候选列表导出的其自身的单向预测运动矢量和参考帧索引进行帧间预测的。在对三角预测单元进行预测后,对对角线边缘进行自适应加权处理。然后,将变换和量化处理应用到整个CU中。应当注意的是,此模式仅适用于Merge模式(注意:跳过模式被视为特殊的Merge模式)。TPM的单向预测候选列表。
名为TPM运动候选列表的单向预测候选列表由五个单向预测运动矢量候选组成。它从七个相邻块导出,包括五个空域相邻块和两个时域并置块。收集7个相邻块的运动矢量,并将其按照单向预测运动矢量、双向预测运动矢量的L0运动矢量、双向预测运动矢量的L1运动矢量、以及双向预测运动矢量的L0和L1运动矢量的平均运动矢量的顺序放入单向预测候选列表中。如果候选数目小于5,则将零运动矢量添加到列表中。添加到该列表中的运动候选被称为TPM候选,从空域/时域块导出的运动信息被称为常规运动候选。
更具体地,涉及以下步骤:
(1)在不进行任何修剪操作的情况下,从A1、B1、B0、A0、B2、Col和Col2(与在常规Merge模式中相似)中获取常规运动候选。
(2)设置变量numCurrMergeCand=0。
(3)对于从A1、B1、B0、A0、B2、Col和Col2导出的每个常规运动候选,并且numCurrMergeCand小于5,如果该常规运动候选是单向预测的(来自列表0或列表1),则直接将其添加到Merge列表中作为TPM候选,且numCurrMergeCand增加1。这种TPM候选被命名为“原始单向预测预测候选”。
应用完全修剪。
(4)对于从A1、B1、B0、A0、B2、Col和Col2导出的每个运动候选,并且numCurrMergeCand小于5,如果该常规运动候选是双向预测的,则将来自列表0的运动信息添加到TPM Merge列表(即,修改为来自列表0的单向预测)作为新的TPM候选,且numCurrMergeCand增加1。这种TPM候选被命名为“截断的列表0预测候选”。
应用完全修剪。
(5)对于从A1、B1、B0、A0、B2、Col和Col2导出的每个运动候选,并且numCurrMergeCand小于5,如果该常规运动候选是双向预测的,则将来自列表1的运动信息添加到TPM Merge列表(即,修改为来自列表1的单向预测),且numCurrMergeCand增加1。这种TPM候选被命名为“截断的列表1预测候选”。
应用完全修剪。
(6)对于从A1、B1、B0、A0、B2、Col和Col2导出的每个运动候选,并且numCurrMergeCand小于5,如果该常规运动候选是双向预测的,则首先将列表1的运动信息缩放到列表0参考图片,并且将两个MV(一个来自原始列表0,并且另一个是来自列表1的缩放MV)的平均添加到TPM Merge列表,这种候选被称为来自列表0运动候选的平均单向预测,且numCurrMergeCand增加1。
应用完全修剪。
(7)如果numCurrMergeCand小于5,则添加零运动矢量候选。
在将候选插入列表时,如果需要将其与所有先前添加的候选做比较,以查看该候选是否与它们中的一个等同,则将这种处理称为完全修剪。
假设缩放的MV表示为(MV1’x,MV1’y),并且列表0MV表示为(MV0x,MV0y)。表示为(MV*x,MV*y)的来自列表0运动候选的平均单向预测被定义为:
MV*x=(MV0x+MV1’x+1)>>1,并且
MV*y=(MV0y+MV1’y+1)>>1。
2.现有实现的缺陷
现有的基于子块的预测技术存在以下问题:
(1)在一些现有实现中,子块尺寸(诸如JEM中的4×4)主要针对亮度分量设计的。在JEM中,对于4:2:0格式的色度分量,子块的尺寸是2×2,并且对于4:2:2格式的色度分量,子块的尺寸是2×4。子块的小尺寸对带宽提出了更高的要求。图13示出了JEM中4:2:0格式的不同分量的16×16块(Cb/Cr为8×8)的子块的示例。
(2)在一些现有的基于子块的工具(诸如JEM中的仿射预测)中,用等式(1)中的仿射模型为每个分量独立地计算每个子块的MV,这导致亮度和色度分量之间的运动矢量的错位。
(3)在一些现有的基于子块的工具(诸如仿射预测)中,对于Merge模式和非Merge帧间模式(即AMVP模式、或常规帧间模式),使用约束是不同的,需要对其进行统一。
(4)在一些现有实现中,从列表0运动候选中导出成对Merge候选/平均单向预测的运动矢量平均操作应该与子块预测中使用的取整方法对准。从而硬件可以有统一的设计。
3.视频编解码中统一取整的示例方法
(a)对于一个亮度及其相应的色度块(例如,对于4:2:0色彩格式,一个M x N的亮度块对应于一个M/2x N/2的Cb块和一个M/2x N/2的Cr块),对于不同的分量,划分的子块的数目可以不同。如果块对于该分量具有较大的尺寸,则针对该分量将块划分为更多子块。
(b)对于每个色彩分量,子块的尺寸是相同的,例如对于Y、Cb和Cr分量为w×h,其中w×h可以是8×8、8×4、4×8、4×4等。例如,w和h都等于4。图14示出了4:2:0格式的不同分量的16×16块(对于Cb/Cr为8×8)的提议子块的示例。在一个示例中,如果w>W或h>H,则针对该分量不将块划分为子块。
(c)可以允许一个块内的不同尺寸的子块。在一个示例中,如果W(或H)不是w(或h)的整数倍,则建议将宽度/高度小于w/h的子块合并到其相邻的左侧或上方子块中。图15示出了将12×16的块(对于Cb/Cr为6×8)划分为子块的示例。子块尺寸为4×4。对于Cb/Cr分量,最后两个子块的尺寸为2×4,因此它们被合并到其左侧相邻块中。
(d)子块尺寸可进一步取决于块形状。
(i)在一个示例中,对于正方形块(W等于H),w可以设置为等于h。
(ii)可选地,对于非正方形块(W不等于H),w可以不等于h。
例如,当W>H时,w可以设置为大于h,反之亦然。
(e)可以在序列参数集(SPS)、图片参数集(PPS)、条带标头中用信令通知不同色彩分量或不同块形状的子块尺寸。
(f)可以以不同的方式确定Y分量和Cb/Cr分量的子块尺寸。例如,可以从诸如4×4、8×8、4×8和8×4的一些候选中自适应地确定Y分量的子块尺寸,但是将Cb/Cr分量的子块尺寸固定为4×4。
(g)Y分量和Cb/Cr分量的子块尺寸可取决于色彩格式,诸如4:2:0、4:2:2和4:4:4。
(a)在一个示例中,可以从另一个分量的对应子块的MV中导出一个分量的子块的MV。图16示出了4:2:0格式的示例。按照图13中的示例划分每个分量的块。从Y分量中对应的4×4子块的MV复制第一个导出的MV*,然后根据第1.6节中规定的规则,从MV*导出Cb或Cr分量中的2×2子块的MV。
(b)在另一示例中,可以从另一个分量的几个对应子块的MV导出一个分量的子块的MV。图17示出了4:2:0格式的示例,其中Cb或Cr分量中的4×4子块对应于Y分量中的四个4×4子块。按照图14中的示例划分每个分量的块。从另一个分量的几个对应子块的MV计算第一个导出的MV*,然后根据第1.6节中规定的规则,从MV*导出Cb或Cr分量中的4×4子块的MV。
(i)在一个实施例中,MV*被计算为Y分量中所有对应子块MV的平均。在示例中,MV*=(MV0+MV1+MV2+MV3)/4。假设MV*=(MV*x,MV*y),MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)并且MV3=(MV3x,MV3y),
(1)在一个实施例中,MV*x=Shift(MV0x+MV1x+MV2x+MV3x,2),MV*y=Shift(MV0y+MV1y+MV2y+MV3y,2)。
(2)在另一个实施例中,MVx*=SignShift(MV0x+MV1x+MV2x+MV3x,2),MVy*=SignShift(MV0y+MV1y+MV2y+MV3y,2)。
(3)在另一个实施例中,MV*的计算可以按以下步骤依次进行:
MV’x=Shift(MV0x+MV1x,1),
MV’y=Shift(MV0y+MV1y,1),
MV”x=Shift(MV2x+MV3x,1),
MV”y=Shift(MV2y+MV3y,1),
MV*x=Shift(MV’x+MV”x,1),以及
MV*y=Shift(MV’y+MV”y,1)。
(4)在另一个实施例中,MV*的计算可以按以下步骤依次进行:
MV’x=Shift(MV0x+MV2x,1),
MV’y=Shift(MV0y+MV2y,1),
MV”x=Shift(MV1x+MV3x,1),
MV”y=Shift(MV1y+MV3y,1),
MV*x=Shift(MV’x+MV”x,1),以及
MV*y=Shift(MV’y+MV”y,1)。
(5)在另一个实施例中,MV*的计算可以按以下步骤依次进行:
MV’x=SignShift(MV0x+MV1x,1),
MV’y=SignShift(MV0y+MV1y,1),
MV”x=SignShift(MV2x+MV3x,1),
MV”y=SignShift(MV2y+MV3y,1),
MV*x=SignShift(MV’x+MV”x,1),以及
MV*y=SignShift(MV’y+MV”y,1)。
(6)在另一个实施例中,MV*的计算可以按以下步骤依次进行:
MV’x=SignShift(MV0x+MV2x,1),
MV’y=SignShift(MV0y+MV2y,1),
MV”x=SignShift(MV1x+MV3x,1),
MV”y=SignShift(MV1y+MV3y,1),
MV*x=SignShift(MV’x+MV”x,1),以及
MV*y=SignShift(MV’y+MV”y,1)。
(ii)在一个实施例中,MV*被计算为Y分量中左上对应子块的MV。在该示例例中,MV*=MV0。
(iii)在一个实施例中,MV*被计算为Y分量中中心对应子块的MV。
(iv)在一个实施例中,MV*被计算为Y分量中所有对应子块MV的中值(median)。在一个示例中,MV*=median(MV0,MV1,MV2,MV3)。
(v)可以基于色彩格式(诸如4:2:0、4:2:2和4:4:4)来确定如何从另一个分量导出一个分量的子块的MV。
(1)在色彩格式为4:4:4的示例中,所有分量的子块尺寸都相同,并且每个子块的子块的MV都相同。
(2)在色彩格式为4:2:2的示例中,所有分量的子块尺寸都相同。从另一个分量的几个对应子块的MV计算第一个导出的MV*,然后根据第2.6节中规定的规则,从MV*导出Cb或Cr分量中的子块的MV。在图18所示的示例中,一个Cb/Cr子块对应于具有运动矢量MV0和MV1的两个Y子块。
(a)MV*=(MV0+MV1)/2;假设MV*=(MV*x,MV*y),MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),
(i)在一个实施例中,MV*x=Shift(MV0x+MV1x,1),MV*y=Shift(MV0y+MV1y,1)。
(ii)在另一实施例中,MVx*=SignShift(MV0x+MV1x,1),MVy*=SignShift(MV0y+MV1y,1)。
(a)块尺寸约束取决于与一个或两个阈值相比的宽度和高度。例如,如果当前块的宽度和高度都大于M(例如,M等于8),或者宽度大于M0并且高度大于M1(例如,M0等于8,并且M1等于4),则允许Merge仿射模式和非Merge仿射模式二者;否则,不允许Merge仿射模式和非Merge仿射模式。
(b)块尺寸约束取决于一个块内的样本点总数(即面积宽度x高度)。在一个示例中,如果当前块的面积(即宽度×高度)不小于N(例如,N等于64),则允许Merge仿射模式和非Merge仿射模式二者;否则,不允许Merge仿射模式和非Merge仿射模式。
(c)对于Merge仿射模式,它可以是如在JEM中用信令通知标志的显式模式,或者也可以是如在其他实现中不用信令通知标志的隐式模式。在后一种情况下,如果不允许Merge仿射模式,则不将仿射Merge候选放入统一Merge候选列表中。
(d)对于非Merge仿射模式,当根据上述规则不允许仿射时,跳过对仿射模式指示的信令通知。
MV*x=Shift(MV0x+MV1x,1),并且
MV*y=Shift(MV0y+MV1y,1).
可替代地,
MV*x=SignShift(MV0x+MV1x,1),并且
MV*y=SignShift(MV0y+MV1y,1)。
(a)MV*x=Shift(MV0x+MV1x,1);MV*y=Shift(MV0y+MV1y,1);则MV*x=(Shift(MV*x,4))<<4;MV*y=(Shift(MV*y,4))<<4(b)MV*x=SignShift(MV0x+MV1x,1);MV*y=SignShift(MV0y+MV1y,1);则MV*x=(SignShift(MV*x,4))<<4;MV*y=(SignShift(MV*y,4))<<4
(c)MV*x=(Shift(MV0x+MV1x,(W+1)))< (d)MV*x=(SignShift(MV0x+MV1x,(W+1)))<
MV*x=Shift(MV0x+MV1’x,1),并且 MV*y=Shift(MV0y+MV1’y,1). 可替代地, MV*x=SignShift(MV0x+MV1’x,1),并且 MV*y=SignShift(MV0y+MV1’y,1)。 在一些实施例中,SignShift(x,s)可以向0右移一个整数,定义为:
这里,off=(1<<(s-1))-1。 在其他实施例中,SignShift(x,s)可替代地定义为:
这里,off=(1<<(s-1))-1。 上面描述的示例可以并入下面描述的方法的上下文,例如,可以在视频解码器和/或视频编码器处实现的方法1930、1960和1990。 图19A示出了视频处理的示例方法1930的流程图。方法1930包括:在步骤1932,基于运动候选对,为视频的当前块的处理生成成对Merge候选。 方法1930包括:在步骤1934,基于所述成对Merge候选执行所述视频的比特流表示与所述当前块之间的转换。 图19B示出了视频处理的示例方法1960的流程图。方法1960包括:在步骤1962,为视频的当前块的处理生成成对Merge候选,所述生成基于参考包含所述当前块的当前图片的运动候选对。 方法1960包括:在步骤1964,基于所述成对Merge候选执行所述视频的比特流表示与所述当前块之间的转换。 图19C示出了视频处理的示例方法1990的流程图。方法1990包括:在步骤1992,基于缩放运动矢量和列表0运动矢量,为使用几何分割模式编解码的视频的当前块,生成单向预测运动候选。 方法1990包括:在步骤1994,基于所述单向预测运动候选,执行所述视频的比特流表示与所述当前块之间的转换。 在一些实施例中,实现了以下技术解决方案: A1.一种视频处理方法,包括:基于运动候选对,为视频的当前块的处理生成成对Merge候选;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV 其中,Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中,>>表示右移操作。 A2.一种视频处理方法,包括:基于运动候选对,为视频的当前块的处理生成成对Merge候选;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV
其中off和s是整数,并且其中,>>表示移位操作。 A3.一种视频处理方法,包括:基于运动候选对,为视频的当前块的处理生成成对Merge候选;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV
其中off和s是整数,并且其中,>>表示移位操作。 A4.根据解决方案A1至A3中任一项所述的方法,其中,Merge候选对来自Merge候选列表。 A5.根据解决方案A1至A3中任一项所述的方法,其中,所述参考图片列表L包括参考图片列表0(L0)或参考图片列表1(L1)。 A6.根据解决方案A1至A3中任一项所述的方法,还包括:将所述成对Merge候选插入所述Merge候选列表中。 A7.根据解决方案A1至A3中任一项所述的方法,还包括:在执行所述转换之后更新所述Merge候选列表。 A8.根据解决方案A1至A7中任一项所述的方法,其中,off=0。 A9.根据解决方案A1至A7中任一项所述的方法,其中,当确定s=0时,off=0。 A10.根据解决方案A1至A7中任一项所述的方法,其中,off=1<<(s-1)。 A11.根据解决方案A1至A7中任一项所述的方法,其中,当确定s≠0时,off=1<<(s-1)。 A12.根据解决方案A1至A7中任一项所述的方法,其中,off=(1<<(s-1))-1。 A13.根据解决方案A1至A12中任一项所述的方法,其中,所述当前视频块是编解码单元。 A14.根据解决方案A1至A13中任一项所述的方法,其中,执行所述转换包括:从所述当前视频块生成所述比特流表示。 A15.根据解决方案A1至A13中任一项所述的方法,其中,执行所述转换包括:从所述比特流表示生成所述当前视频块。 A16.一种视频解码装置,包括处理器,所述处理器被配置为实现解决方案A1至A15中任一项所述的方法。 A17.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于实现解决方案A1至A15中任一项所述的方法的程序代码。 在一些实施例中,实现了以下技术解决方案: B1.一种视频处理方法,包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV 其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中,>>表示右移操作。 B2.根据解决方案B1所述的方法,其中,生成所述成对Merge候选还包括执行以下操作: MV B3.一种视频处理方法,包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV
其中off和s是整数,并且其中,>>表示移位操作。 B4.根据解决方案B3所述的方法,其中,生成所述成对Merge候选还包括执行以下操作: MV B5.一种视频处理方法,包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV
其中off和s是整数,并且其中,>>表示移位操作。 B6.根据解决方案B5所述的方法,其中,生成所述成对Merge候选还包括执行以下操作: MV B7.一种视频处理方法,包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV MV 其中Shift(x,s)=(x+off)>>s,其中W、off和s是整数,并且其中,>>表示右移操作。 B8.一种视频处理方法,包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV MV 其中
其中W、off和s是整数,并且其中,>>表示移位操作。 B9.一种视频处理方法,包括:为视频的当前块的处理生成成对Merge候选,其中所述生成基于参考包含所述当前块的当前图片的运动候选对;以及基于所述成对Merge候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述运动候选对包括第一运动候选中的参考图片列表L的第一运动矢量MV0=(MV0 x,MV0 y)、以及第二运动候选中的所述参考图片列表L的第二运动矢量MV1=(MV1x,MV1y),并且其中,MV*=(MV*x,MV*y)是所述成对Merge候选,使得: MV MV 其中
其中W、off和s是整数,并且其中,>>表示移位操作。 B10.根据解决方案B7至B9中任一项所述的方法,其中,W=2或W=4。 B11.根据解决方案B10所述的方法,其中,(1<<W)是运动矢量表示精度。 B12.根据解决方案B1至B11中任一项所述的方法,其中,所述Merge候选对来自Merge候选列表。 B13.根据解决方案B1至B11中任一项所述的方法,其中,所述参考图片列表L包括参考图片列表0(L0)或参考图片列表1(L1)。 B14.根据解决方案B1至B11中任一项所述的方法,还包括:将所述成对Merge候选插入所述Merge候选列表中。 B15.根据解决方案B1至B11中任一项所述的方法,还包括:在执行所述转换之后更新所述Merge候选列表。 B16.根据解决方案B1至B15中任一项所述的方法,其中,off=0。 B17.根据解决方案B1至B15中任一项所述的方法,其中,当确定s=0时,off=0。 B18.根据解决方案B1至B15中任一项所述的方法,其中,off=1<<(s-1)。 B19.根据解决方案B1至B15中任一项所述的方法,其中,当确定s≠0时,off=1<<(s-1)。 B20.根据解决方案B1至B15中任一项所述的方法,其中,off=(1<<(s-1))-1。 B21.根据解决方案B1至B20中任一项所述的方法,其中,所述当前视频块是编解码单元。 B22.根据解决方案B1至B21中任一项所述的方法,其中,执行所述转换包括:从所述当前块生成所述比特流表示。 B23.根据解决方案B1至B21中任一项所述的方法,其中,执行所述转换包括:从所述比特流表示生成所述当前块。 B24.一种视频解码装置,包括处理器,所述处理器被配置为实现解决方案B1至B23中任一项所述的方法。 B25.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于实现解决方案B1至B23中任一项所述的方法的程序代码。 在一些实施例中,实现了以下技术解决方案: C1.一种视频处理方法,包括:基于缩放运动矢量和列表0运动矢量,为使用几何分割模式编解码的视频的当前块,生成单向预测运动候选;以及基于所述单向预测运动候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述缩放运动矢量为MV1’=(MV1′x,MV1′y),并且所述列表0运动矢量为MV0=(MV0x,MV0y),并且其中,MV*=(MV*x,MV*y)是所述单向预测运动候选,使得: MV 其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中,>>表示右移操作。 C2.一种视频处理方法,包括:基于缩放运动矢量和列表0运动矢量,为使用几何分割模式编解码的视频的当前块,生成单向预测运动候选;以及基于所述单向预测运动候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述缩放运动矢量为MV1’=(MV1′x,MV1′y),并且所述列表0运动矢量为MV0=(MV0x,MV0y),并且其中,MV*=(MV*x,MV*y)是所述单向预测运动候选,使得: MV
其中off和s是整数,并且其中,>>表示移位操作。 C3.一种视频处理方法,包括:基于缩放运动矢量和列表0运动矢量,为使用几何分割模式编解码的视频的当前块,生成单向预测运动候选;以及基于所述单向预测运动候选,执行所述视频的比特流表示与所述当前块之间的转换,其中,所述缩放运动矢量为MV1’=(MV1′x,MV1′y),并且所述列表0运动矢量为MV0=(MV0x,MV0y),并且其中,MV*=(MV*x,MV*y)是所述单向预测运动候选,使得: MV
其中off和s是整数,并且其中,>>表示移位操作。 C4.根据解决方案C1至C3中任一项所述的方法,其中,MV*使用来自列表0的参考图片。 C5.根据解决方案C1至C3中任一项所述的方法,其中,所述缩放运动矢量和所述列表0运动矢量来自从使用所述几何分割模式编解码的块导出的运动候选列表。 C6.根据解决方案C1至C3中任一项所述的方法,还包括:将所述单向预测运动候选插入所述运动候选列表中。 C7.根据解决方案C1至C3中任一项所述的方法,还包括:在执行所述转换之后更新所述运动候选列表。 C8.根据解决方案C1至C7中任一项所述的方法,其中,off=0。 C9.根据解决方案C1至C7中任一项所述的方法,其中,当确定s=0时,off=0。 C10.根据解决方案C1至C7中任一项所述的方法,其中,off=1<<(s-1)。 C11.根据解决方案C1至C7中任一项所述的方法,其中,当确定s≠0时,off=1<<(s-1)。 C12.根据解决方案C1至C7中任一项所述的方法,其中,=(1<<(s-1))-1。 C13.根据解决方案C1至C12中任一项所述的方法,其中,所述几何分割模式包括三角预测模式(TPM)。 C14.根据解决方案C1至C12中任一项所述的方法,其中,将所述当前块分割成多个分割,其中至少一个分割是非正方形和非矩形的。 C15.根据解决方案C1至C14中任一项所述的方法,其中,所述当前视频块是编解码单元。 C16.根据解决方案C1至C15中任一项所述的方法,其中,执行所述转换包括:从所述当前视频块生成所述比特流表示。 C17.根据解决方案C1至C15中任一项所述的方法,其中,执行所述转换包括:从所述比特流表示生成所述当前视频块。 C18.一种视频解码装置,包括处理器,所述处理器被配置为实现解决方案C1至C17中任一项所述的方法。 C19.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于实现解决方案C1至C17中任一项所述的方法的程序代码。 4.公开技术的示例实现 图20是所述视频处理装置2000的框图。装置2000可用于实现本文所述的一个或多个方法。装置2000可以被实现在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置2000可以包括一个或多个处理器2002、一个或多个存储器2004和所述视频处理硬件2006。处理器2002可以被配置为实现本文所述的一个或多个方法(包括但不限于方法1930、1960和1990)。(一个或多个)存储器2004可用于存储用于实现本文所述的方法和技术的数据和代码。所述视频处理硬件2006可用于在硬件电路中实现本文所述的一些技术。 在一些实施例中,可以使用实现在如图20所述的硬件平台上的解码装置来实现所述视频解码方法。 图21是示出示例所述视频处理系统2100的框图,其中可以实施本文公开的各种技术。各种实现可能包括系统2100的部分或全部分量。系统2100可包括用于接收所述视频内容的输入2102。所述视频内容可以原始或未压缩格式接收,例如8位或10位多分量像素值,或者可以压缩或编码格式接收。输入2102可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(PON)等的有线接口,以及诸如Wi-Fi或蜂窝接口的无线接口。 系统2100可包括编解码分量2104,其可实现本文中所描述的各种编解码或编码方法。编解码分量2104可以降低从输入2102到编解码分量2104的输出的所述视频的平均比特率,以产生所述视频的编解码表示。因此,编解码技术有时被称为所述视频压缩或所述视频转码技术。编解码分量2104的输出可以被存储,也可以通过连接的通信进行传输,如分量2106所示。输入2102处接收的所述视频的存储或通信比特流(或编解码)表示可由分量2108用于生成像素值或发送到显示接口2110的可显示所述视频。从比特流表示生成用户可观看所述视频的处理有时称为所述视频解压缩。此外,尽管某些所述视频处理操作被称为“编解码”操作或工具,但应当理解的是,编解码工具或操作被用于编码器处,并且逆向编码结果的对应的解码工具或操作将由解码器执行。 外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清晰度多媒体接口(HDMI)或显示端口等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文中所述的技术可实施在各种电子设备中,例如移动电话、笔记本电脑、智能手机或其他能够执行数字数据处理和/或所述视频显示的设备。 从上述来看,应当理解的是,为了便于说明,本发明公开的技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了的之外,本发明公开的技术不限于权利要求的限定。 本发明文件中描述的主题的实现和功能操作可以在各种系统、数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明书中描述的主题的实现可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的和非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、分量、子程序或其它适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其它程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。 本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。 例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或Merge到专用逻辑电路中。 本说明书和附图仅意在被视为示例性的,其中示例性是指示例。如本文所用,除非上下文另有明确说明,否则单数形式“一”、“一个”和“这个”也应包括复数形式。此外,“或”的使用旨在包括“和/或”,除非上下文另有明确说明。 虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中删除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。 同样,尽管图纸中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统分量的分离不应理解为在所有实施例中都需要这样的分离。 仅描述了一些实现和示例,其它实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
- 三角预测模式中的取整
- 一种用于从预定定向帧内预测模式集合中移除定向帧内预测模式的帧内预测装置