基于光流的预测细化的计算
文献发布时间:2024-04-18 19:59:31
相关申请的交叉引用
本申请是申请日为2020年3月17日、申请号为202080022320.0、发明名称为“基于光流的预测细化的计算”的发明专利申请的分案申请,其要求于2019年3月17日提交的国际专利申请No.PCT/CN2019/078411、2019年3月18日提交的国际专利申请No.PCT/CN2019/078501、2019年3月19日提交的国际专利申请No.PCT/CN2019/078719和2019年3月27日提交的国际专利申请No.PCT/CN2019/079961的优先权和利益,其全部公开内容通过引用而并入,作为本申请的公开内容的一部分。
技术领域
本文档涉及视频编解码和解码。
背景技术
尽管视频压缩技术有所进步,但数字视频仍然是互联网和其他数字通信网络中占最大的带宽使用。随着能够接收和显示视频的连接用户设备的数量增加,预计数字视频使用的带宽需求将继续增长。
发明内容
提供了可以由数字视频编码器、代码转换器和解码器实施的各种技术,以在视频处理中使用基于光流的预测细化。
提供了一种处理视频数据的方法,包括:为视频的仿射编解码视频块确定至少一个控制点运动矢量;基于所述至少一个控制点运动矢量,确定包括所述仿射编解码视频块的位置(x,y)的子块的运动矢量;基于所述至少一个控制点运动矢量,确定所述位置(x,y)在第一方向上的第一运动位移Vx(x,y)和在第二方向上的第二运动位移Vy(x,y);确定所述位置(x,y)在所述第一方向上的第一梯度分量Gx(x,y)和在所述第二方向上的第二梯度分量Gy(x,y);通过利用所述第一梯度分量Gx(x,y)、所述第二梯度分量Gy(x,y)、所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)修改针对所述位置(x,y)推导的预测样点P(x,y)来确定所述位置(x,y)的细化预测样点P’(x,y),其中所述预测样点P(x,y)是基于所述子块的运动矢量来推导的;以及使用所述细化预测样点P’(x,y)来执行所述仿射编解码视频块和所述视频的比特流之间的转换;其中,所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)的精度与所述子块的运动矢量的精度不同。
提供了一种用于处理视频数据的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器执行时使得所述处理器:为视频的仿射编解码视频块确定至少一个控制点运动矢量;基于所述至少一个控制点运动矢量,确定包括所述仿射编解码视频块的位置(x,y)的子块的运动矢量;基于所述至少一个控制点运动矢量,确定所述位置(x,y)在第一方向上的第一运动位移Vx(x,y)和在第二方向上的第二运动位移Vy(x,y);确定所述位置(x,y)在所述第一方向上的第一梯度分量Gx(x,y)和在所述第二方向上的第二梯度分量Gy(x,y);通过利用所述第一梯度分量Gx(x,y)、所述第二梯度分量Gy(x,y)、所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)修改针对所述位置(x,y)推导的预测样点P(x,y)来确定所述位置(x,y)的细化预测样点P’(x,y),其中所述预测样点P(x,y)是基于所述子块的运动矢量来推导的;以及使用所述细化预测样点P’(x,y)来执行所述仿射编解码视频块和所述视频的比特流之间的转换;其中,所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)的精度与所述子块的运动矢量的精度不同。
提供了一种存储指令的非暂时性计算机可读存储介质,所述指令使得处理器:为视频的仿射编解码视频块确定至少一个控制点运动矢量;基于所述至少一个控制点运动矢量,确定包括所述仿射编解码视频块的位置(x,y)的子块的运动矢量;基于所述至少一个控制点运动矢量,确定所述位置(x,y)在第一方向上的第一运动位移Vx(x,y)和在第二方向上的第二运动位移Vy(x,y);确定所述位置(x,y)在所述第一方向上的第一梯度分量Gx(x,y)和在所述第二方向上的第二梯度分量Gy(x,y);通过利用所述第一梯度分量Gx(x,y)、所述第二梯度分量Gy(x,y)、所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)修改针对所述位置(x,y)推导的预测样点P(x,y)来确定所述位置(x,y)的细化预测样点P’(x,y),其中所述预测样点P(x,y)是基于所述子块的运动矢量来推导的;以及使用所述细化预测样点P’(x,y)来执行所述仿射编解码视频块和所述视频的比特流之间的转换;其中,所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)的精度与所述子块的运动矢量的精度不同。
提供了一种存储通过由视频处理装置执行的方法生成的视频的比特流的非暂时性计算机可读记录介质,其中所述方法包括:为视频的仿射编解码视频块确定至少一个控制点运动矢量;基于所述至少一个控制点运动矢量,确定包括所述仿射编解码视频块的位置(x,y)的子块的运动矢量;基于所述至少一个控制点运动矢量,确定所述位置(x,y)在第一方向上的第一运动位移Vx(x,y)和在第二方向上的第二运动位移Vy(x,y);确定所述位置(x,y)在所述第一方向上的第一梯度分量Gx(x,y)和在所述第二方向上的第二梯度分量Gy(x,y);通过利用所述第一梯度分量Gx(x,y)、所述第二梯度分量Gy(x,y)、所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)修改针对所述位置(x,y)推导的预测样点P(x,y)来确定所述位置(x,y)的细化预测样点P’(x,y),其中所述预测样点P(x,y)是基于所述子块的运动矢量来推导的;以及使用所述细化预测样点P’(x,y)来生成所述比特流;其中,所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)的精度与所述子块的运动矢量的精度不同。
提供了一种用于存储视频的比特流的方法,包括:为视频的仿射编解码视频块确定至少一个控制点运动矢量;基于所述至少一个控制点运动矢量,确定包括所述仿射编解码视频块的位置(x,y)的子块的运动矢量;基于所述至少一个控制点运动矢量,确定所述位置(x,y)在第一方向上的第一运动位移Vx(x,y)和在第二方向上的第二运动位移Vy(x,y);确定所述位置(x,y)在所述第一方向上的第一梯度分量Gx(x,y)和在所述第二方向上的第二梯度分量Gy(x,y);通过利用所述第一梯度分量Gx(x,y)、所述第二梯度分量Gy(x,y)、所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)修改针对所述位置(x,y)推导的预测样点P(x,y)来确定所述位置(x,y)的细化预测样点P’(x,y),其中所述预测样点P(x,y)是基于所述子块的运动矢量来推导的;使用所述细化预测样点P’(x,y)来生成所述比特流;以及将所述比特流存储在非暂时性计算机可读记录介质中,其中,所述第一运动位移Vx(x,y)和所述第二运动位移Vy(x,y)的精度与所述子块的运动矢量的精度不同。
提供了一种处理视频数据的方法,包括:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;以及使用基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行所述视频块和所述视频块的比特流之间的转换。
提供了一种用于处理视频数据的装置,包括处理器和其上具有指令的非暂时性存储器,其中所述指令在由所述处理器执行时使得所述处理器:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;以及使用基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行所述视频块和所述视频块的比特流之间的转换。
提供了一种存储指令的非暂时性计算机可读存储介质,所述指令使得处理器:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;以及使用基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行所述视频块和所述视频块的比特流之间的转换。
提供了一种存储通过由视频处理装置执行的方法生成的视频的比特流的非暂时性计算机可读记录介质,其中所述方法包括:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;以及使用基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来生成所述比特流。
提供了一种用于存储视频的比特流的方法,包括:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;使用基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来生成所述比特流;以及将所述比特流存储在非暂时性计算机可读记录介质中。
视频处理方法的第一示例包括:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;以及使用基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行视频块和视频块的比特流表示之间的转换。
视频处理方法的第二示例包括:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;以及基于位置(x,y)处的重构样点值Rec(x,y),对视频块的比特流表示进行编码以包括残差样点值Res(x,y),其中该重构样点值Rec(x,y)至少基于细化预测样点P’(x,y)。
视频处理方法的第三示例包括:确定使用基于光流的方法编解码的视频块中的位置(x,y)处的第一运动位移Vx(x,y)和位置(x,y)处的第二运动位移Vy(x,y),其中x和y是分数,其中Vx(x,y)和Vy(x,y)是至少基于位置(x,y)和视频块的基本视频块的中心位置而确定的;以及使用第一运动位移和第二运动位移来执行视频块和当前视频块的比特流表示之间的转换。
视频处理方法的第四示例包括:确定在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在视频块中的位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y),其中第一梯度分量和第二梯度分量基于位置(x,y)处的预测样点P(x,y)的最终预测样点值,并且其中x和y是整数;以及使用基于加到预测样点P(x,y)的最终预测样点值的残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行视频块和视频块的比特流表示之间的转换,其中该预测样点P(x,y)使用梯度(Gx(x,y),Gy(x,y))进行细化。
视频处理方法的第五示例包括:确定在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在视频块中的位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y),其中第一梯度分量和第二梯度分量基于位置(x,y)处的预测样点P(x,y)的最终预测样点值,并且其中x和y是整数;以及基于位置(x,y)处的重构样点值Rec(x,y),对视频块的比特流表示进行编码以包括残差样点值Res(x,y),其中,重构样点值Rec(x,y)基于加到预测样点P(x,y)的最终预测样点值的残差样点值Res(x,y),其中该预测样点P(x,y)使用梯度(Gx(x,y),Gy(x,y))进行细化。
视频处理方法的第六示例包括:确定在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在视频块中的位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y),其中第一梯度分量和第二梯度分量基于位置(x,y)处的预测样点P(x,y)的中间预测样点值,其中预测样点P(x,y)的最终预测样点值基于中间预测样点值,并且其中x和y是整数;以及使用基于预测样点P(x,y)的最终预测样点值以及残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行视频块和视频块的比特流表示之间的转换。
视频处理方法的第七示例包括:确定在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在视频块中的位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y),其中第一梯度分量和第二梯度分量基于位置(x,y)处的预测样点P(x,y)的中间预测样点值,其中预测样点P(x,y)的最终预测样点值基于中间预测样点值,并且其中x和y是整数;以及基于位置(x,y)处的重构样点值Rec(x,y),对视频块的比特流表示进行编码以包括残差样点值Res(x,y),其中重构样点值Rec(x,y)基于预测样点P(x,y)的最终预测样点值以及残差样点值Res(x,y)。
视频处理方法的第八示例包括:通过利用在仿射编解码视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中第一方向与第二方向正交,并且其中x和y是整数;基于细化预测样点P’(x,y)和残差样点值Res(x,y),确定位置(x,y)处的重构样点值Rec(x,y);确定仿射编解码视频块中的位置(x,y)处的细化的重构样点值Rec’(x,y),其中Rec’(x,y)=Rec(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y);以及使用细化的重构样点值Rec’(x,y)来执行仿射编解码视频块和仿射编解码视频块的比特流表示之间的转换。
视频处理方法的第九示例包括:通过利用在仿射编解码视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中第一方向与第二方向正交,并且其中x和y是整数;基于细化预测样点P’(x,y)和残差样点值Res(x,y),确定位置(x,y)处的重构样点值Rec(x,y);确定仿射编解码视频块中的位置(x,y)处的细化的重构样点值Rec’(x,y),其中Rec’(x,y)=Rec(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y);以及对仿射编解码视频块的比特流表示进行编码,以包括残差样点值Res(x,y)。
视频处理方法的第十示例包括:为仿射模式下的视频块确定具有1/N像素精度的运动矢量;确定针对视频块中的位置(x,y)估计的运动位移矢量(Vx(x,y),Vy(x,y)),其中运动位移矢量是以1/M像素精度推导的,其中N和M是正整数,并且其中x和y是整数;以及使用运动矢量和运动位移矢量来执行视频块和视频块的比特流表示之间的转换。
视频处理方法的第十一示例包括:为视频块或为视频块的子块确定两个运动矢量集合,其中两个运动矢量集合中的每一个具有不同的运动矢量像素精度,并且其中两个运动矢量集合是使用时域运动矢量预测(TMVP)技术或使用基于子块的时域运动矢量预测(SbTMVP)技术来确定的;以及基于两个运动矢量集合来执行视频块和视频块的比特流表示之间的转换。
视频处理方法的第十二示例包括:通过使用K个子块图案将使用仿射编解码模式编解码的视频块划分为多个分割,对该视频块执行交织预测技术,其中K是大于1的整数;通过使用K个子块图案中的第一子块图案来执行运动补偿,生成视频块的预测样点,其中位置(x,y)处的预测样点被表示为P(x,y),其中x和y是整数;针对表示为第L个图案的、K个子块图案中的剩余子块图案中的至少一个,基于利用第一子块图案推导的预测样点以及使用K个子块图案中的第一子块图案和第L个图案推导的运动矢量之间的差来确定位置(x,y)处的偏移值OL(x,y);根据OL(x,y)和P(x,y)来确定位置(x,y)的最终预测样点;以及使用最终预测样点来执行视频块的比特流表示和视频块之间的转换。
视频处理方法的第十三示例包括:使用最终预测样点来执行视频块的比特流表示和视频块之间的转换,其中最终预测样点通过以下方式从细化的中间预测样点进行推导:(a)基于规则来执行交织预测技术,随后执行基于光流的预测细化技术,或者(b)执行运动补偿技术。
视频处理方法的第十四示例包括:当应用双向预测时,使用最终预测样点来执行视频块的比特流表示和视频块之间的转换,其中最终预测样点通过以下方式从细化的中间预测样点进行推导:(a)执行基于光流的预测细化技术,其中交织预测技术被禁用,或者(b)执行运动补偿技术。
视频处理方法的第十五示例包括:使用预测样点来执行视频块的比特流表示和视频块之间的转换,其中预测样点通过执行基于光流的预测细化技术从细化的中间预测样点进行推导,其中执行基于光流的预测细化技术仅取决于在视频块的第一方向上估计的运动位移的第一集合Vx(x,y)或在视频块的第二方向上估计的运动位移的第二集合Vy(x,y),其中x和y是整数,并且其中第一方向与第二方向正交。
视频处理方法的第十六示例包括:通过对视频块的运动矢量进行细化来获得视频块的细化的运动矢量,其中运动矢量在执行运动补偿技术之前被细化,其中细化的运动矢量具有1/N像素精度,并且其中运动矢量具有1/M像素精度;通过对视频块执行基于光流的预测细化技术来获得最终预测样点,其中基于光流的预测细化技术被应用于细化的运动矢量和运动矢量之间的差;以及使用最终预测样点来执行视频块的比特流表示和视频块之间的转换。
视频处理方法的第十七示例包括:使用用于视频块的多步解码器侧运动矢量细化过程来确定最终运动矢量,其中最终运动矢量具有1/N像素精度;以及使用最终运动矢量来执行当前块和比特流表示之间的转换。
视频处理方法的第十八示例包括:通过对视频块的中间预测样点执行交织预测技术和基于光流的预测细化技术,获得视频块的细化的中间预测样点;从细化的中间预测样点推导最终预测样点;以及使用最终预测样点来执行视频块的比特流表示和视频块之间的转换。
视频处理方法的第十九示例包括:通过对视频块的中间预测样点执行交织预测技术和相位变化仿射子块运动补偿(PAMC)技术,获得视频块的细化的中间预测样点;从细化的中间预测样点推导最终预测样点;以及使用最终预测样点来执行视频块的比特流表示和视频块之间的转换。
视频处理方法的第二十示例包括:通过对视频块的中间预测样点执行基于光流的预测细化技术和相位变化仿射子块运动补偿(PAMC)技术,获得视频块的细化的中间预测样点;从细化的中间预测样点推导最终预测样点;以及使用最终预测样点来执行视频块的比特流表示和视频块之间的转换。
视频处理方法的第二十一示例包括:在视频块和视频块的比特流表示之间的转换期间,通过根据在视频块中的位置(x,y)处估计的第一方向和/或第二方向上的梯度以及针对位置(x,y)估计的第一运动位移和/或第二运动位移来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y);以及使用来自细化预测样点P’(x,y)的位置(x,y)处的重构样点值Rec(x,y)来执行该转换。
视频处理方法的第二十二示例包括:基于来自邻近块或基本块的信息,确定对应于对视频块进行编解码的基于光流的方法的视频块中的位置(x,y)处的第一位移矢量Vx(x,y)和第二位移矢量Vy(x,y);以及使用第一位移矢量和第二位移矢量来执行视频块和当前视频块的比特流表示之间的转换。
视频处理方法的第二十三示例包括:在视频块和视频块的比特流表示之间的转换期间,通过修改视频块中的位置(x,y)处的预测样点P(x,y)来确定位置(x,y)处的细化预测样点P’(x,y),并且其中位置(x,y)处的第一方向上的梯度和第二方向上的梯度基于从位置(x,y)处的细化预测样点P’(x,y)和残差样点值确定的最终预测值而确定;以及使用第一方向上的梯度和第二方向上的梯度来执行该转换。
视频处理方法的第二十四示例包括:确定被仿射编解码的视频块中的位置(x,y)处的重构样点Rec(x,y);使用位置(x,y)处的第一位移矢量和第二位移矢量以及第一梯度和第二梯度来细化Rec(x,y),以获得细化的重构样点Rec’(x,y);以及使用细化的重构样点来执行视频块和当前视频块的比特流表示之间的转换。
视频处理方法的第二十五示例包括:在使用仿射编解码模式编解码的视频块和视频块的比特流表示之间的转换期间,通过使用K个子块图案将视频块划分为多个分割来执行视频块的交织预测,其中K是大于1的整数;使用K个子块图案中的第一子块图案来执行运动补偿,以生成视频块的预测样点,其中位置(x,y)处的预测样点被表示为P(x,y);针对表示为第L个图案的、K个子块图案中的剩余子块图案中的至少一个,基于P(x,y)以及使用K个子块中的第一子块和第L个图案推导的运动矢量之间的差来确定位置(x,y)处的偏移值OL(x,y);根据OL(x,y)和P(x,y)来确定位置(x,y)的最终预测样点;以及使用最终预测样点来执行该转换。
在又一示例方面,公开了一种被配置为实施本专利文档中描述的方法之一的视频编码器装置。
在又一示例方面,公开了一种被配置为实施本专利文档中描述的方法之一的视频解码器装置。
在又一方面,公开了一种计算机可读介质。用于实施本专利文档中描述的方法之一的处理器可执行代码被存储在该计算机可读介质上。因此,非暂时性计算机可读介质具有用于实施上述方法和本专利文档中描述的方法中的任何一种所述的方法的代码。
本文档中详细描述了这些方面和其他方面。
附图说明
图1示出了Merge候选列表构造的示例推导过程。
图2示出了空域Merge候选的示例位置。
图3示出了考虑用于空域Merge候选的冗余检查的示例候选对。
图4示出了N×2N和2N×N分割的第二PU(Prediction Unit,预测单元)的示例位置。
图5示出了时域Merge候选的运动矢量缩放的图示。
图6示出了时域Merge候选C0和C1的示例候选位置。
图7示出了组合的双向预测Merge候选的示例。
图8总结了运动矢量预测候选的推导过程。
图9示出了空域运动矢量候选的运动矢量缩放的图示。
图10示出了用于编解码单元CU的高级时域运动矢量预测值(Advanced TemporalMotion Vector Predictor,ATMVP)运动预测的示例。
图11示出了具有四个子块(A-D)及其邻近块(a-d)的一个CU的示例。
图12是应用OBMC的子块的示例图示。
图13示出了用于推导IC(Illumination Compensation,照明补偿)参数的邻近样点的示例。
图14示出了简化仿射运动模型。
图15示出了每个子块的仿射MVF(Motion Vector Field,运动矢量场)的示例。
图16示出了用于AF_INTER的MVP(Motion Vector Predictor,运动矢量预测值)的示例。
图17A-图17B示出了AF_MERGE的候选。
图18示出了双边匹配的示例。
图19示出了模板匹配的示例。
图20示出了帧速率上转换FRUC(Frame Rate Upconversion,帧速率上转换)中的单边运动估计ME(Motion Estimation,运动估计)的示例。
图21示出了光流轨迹的示例。
图22A-图22B示出了块的外部的访问位置的示例以及如何使用填充以避免额外的存储器访问和计算的示例。
图23示出了BIO(Bi-directional Optical flow,双向光流)中使用的插值样点的示例。
图24示出了基于双边模板匹配的DMVR(Decoder-side Motion VectorRefinement,解码器侧运动矢量细化)的示例。
图25示出了子块MV VSB和像素Δv(i,j)(如箭头所示)的示例。
图26示出了如何推导出Vx(x,y)和/或Vy(x,y)的示例。
图27示出了视频处理装置的示例。
图28A至图28U是视频处理方法的示例流程图。
图29示出了交织预测中的划分图案的示例。
图30示出了相位变化水平滤波的示例。
图31示出了应用一次8抽头水平滤波的示例。
图32示出了非均匀相位垂直滤波的示例。
图33是示出其中可以实施本文公开的各种技术的示例视频处理系统的框图。
图34是示出根据本公开的一些实施例的视频编解码系统的框图。
图35是示出根据本公开的一些实施例的编码器的框图。
图36是示出根据本公开的一些实施例的解码器的框图。
具体实施方式
本文档提供了各种技术,图像或视频比特流的解码器可以使用这些技术来提高解压缩或解码的数字视频或图像的质量。为简洁起见,本文使用的术语“视频”包括图片序列(传统上称为视频)和单独的图像。此外,视频编码器还可以在编码过程期间实施这些技术,以便重建用于进一步编码的解码帧。
为了便于理解,在本文档中使用了章节标题,并且不将实施例和技术限制于对应的章节。这样,来自一个章节的实施例可以与来自其他章节的实施例相结合。
1.概述
本专利文档中描述的技术涉及视频编解码技术。具体地,所描述的技术涉及视频编解码中的运动补偿。它可以应用于现有的视频编解码标准,如HEVC,或即将要定案的标准(多功能视频编解码)。它也可以应用于未来的视频编解码标准或视频编解码器。
2.背景
视频编解码标准主要是通过熟知的ITU-T和ISO/IEC标准的发展而演变的。ITU-T制定了H.261和H.263,ISO/IEC制定了MPEG-1和MPEG-4可视化,并且这两个组织联合制定了H.262/MPEG-2视频和H.264/MPEG-4高级视频编解码(Advanced Video Coding,AVC)和H.265/HEVC标准。自H.262以来,视频编解码标准基于混合视频编解码结构,其中利用了时域预测加变换编解码。为了探索HEVC以外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索组(Joint Video Exploration Team,JVET)。此后,JVET采用了许多新方法,并将其放入名为联合探索模型(Joint Exploration Model,JEM)的参考软件中。2018年4月,VCEG(Q6/16)和ISO/IEC JTC1 SC29/WG11(MPEG)之间的联合视频专家组(JVET)成立,以致力于VVC(Versatile Video Coding,多功能视频编解码)标准,目标是与HEVC相比比特率降低50%。
VVC草案的最新版本,即多功能视频编解码(草案2),可在以下网址找到:http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET-K1001-v7.zipVVC的最新参考软件名为VTM,可在以下网址找到:https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-2.1
2.1HEVC/H.265中的帧间预测
每个帧间预测的PU具有针对一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。也可以使用inter_pred_idc来信令通知对两个参考图片列表之一的使用。运动矢量可以被显式地编解码为相对于预测值的增量。
当用跳过模式对CU进行编解码时,一个PU与该CU相关联,并且不存在显著的残差系数、没有编解码的运动矢量增量或参考图片索引。规定Merge模式,由此从包括空域和时域候选的邻近PU获得当前PU的运动参数。Merge模式可以应用于任何帧间预测的PU,而不仅仅对于跳跃模式。Merge模式的可选方案是运动参数的显式传输,其中每一PU显式地信令通知运动矢量(更准确地,与运动矢量预测值相比的运动矢量差)、每个参考图片列表的对应参考图片索引和参考图片列表的使用。在本公开中,这种模式被称为高级运动矢量预测(Advanced Motion Vector Prediction,AMVP)。
当信令指示要使用两个参考图片列表之一时,从一个样点块中产生PU。这被称为“单向预测”。单向预测可用于P条带和B条带。
当信令指示要使用两个参考图片列表两者时,从两个样点块中产生PU。这被称为“双向预测”。双向预测仅可用于B条带。
以下文本提供了关于HEVC中规定的帧间预测模式的详细信息。描述将从Merge模式开始。
2.1.1 Merge模式
2.1.1.1 Merge模式的候选的推导
当使用Merge模式预测PU时,从比特流中解析指向Merge候选列表中的条目的索引并将其用于检索运动信息。在HEVC标准中规定了该列表的构建,并且可以根据以下步骤的序列进行概述:
·步骤1:初始候选推导
ο步骤1.1:空域候选推导
ο步骤1.2:空域候选的冗余检查
ο步骤1.3:时域候选推导
·步骤2:附加候选插入
ο步骤2.1:创建双向预测候选
ο步骤2.2:插入零运动候选
这些步骤也示意性地描绘在图1中。对于空域Merge候选推导,在位于五个不同位置的候选当中选择最多四个Merge候选。对于时域Merge候选推导,在两个候选当中选择最多一个Merge候选。由于在解码器处假设每个PU的恒定数量的候选,因此当从步骤1获得的候选的数量未达到在条带头中信令通知的Merge候选的最大数量(MaxNumMergeCand)时,生成附加候选。由于候选的数量是恒定的,因此使用截断一元二值化(Truncated Unarybinarization,TU)对最佳Merge候选的索引进行编码。如果CU的尺寸等于8,则当前CU的所有PU共享单个Merge候选列表,其与2N×2N预测单元的Merge候选列表相同。
在下文中,将详细描述与上述步骤相关联的操作。
2.1.1.2空域候选推导
在空域Merge候选的推导中,在位于图2中描绘的位置的候选当中选择最多四个Merge候选。推导的顺序是A
2.1.1.3时域候选推导
在该步骤中,仅一个候选被添加到列表。具体地,在该时域Merge候选的推导中,基于属于与给定参考图片列表内的当前图片具有最小POC(Picture Order Count,图片顺序计数)差的图片的并置(co-located)PU来推导缩放运动矢量。在条带头中显式地信令通知要用于推导并置PU的参考图片列表。如在图5中由虚线所示的,获得了对于时域Merge候选的缩放运动矢量,该缩放运动矢量是使用POC距离tb和td从并置PU的运动矢量缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的POC差,并且td被定义为并置图片的参考图片与并置图片之间的POC差。时域Merge候选的参考图片索引被设置为等于零。HEVC规范中描述了缩放过程的实际实现。对于B条带,两个运动矢量(一个用于参考图片列表0,并且另一个用于参考图片列表1)被获得并组合,以生成双向预测Merge候选。
图5示出了时域Merge候选的运动矢量缩放的图示。
在属于参考帧的并置PU(Y)中,在候选C
图6示出了时域Merge候选C0和C1的示例候选位置。
2.1.1.4附加候选插入
除了空域和时域的Merge候选之外,存在两种附加类型的Merge候选:组合的双向预测Merge候选和零Merge候选。通过利用空域和时域的Merge候选来生成组合的双向预测Merge候选。组合的双向预测Merge候选仅用于B条带。通过将初始候选的第一参考图片列表运动参数与另一初始候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,则它们将形成新的双向预测候选。作为示例,图7描绘了当原始列表(在左边)中的两个候选(其具有mvL0和refIdxL0或mvL1和refIdxL1)用于创建被添加到最终列表(在右边)的组合的双向预测Merge候选。存在许多关于组合的规则,这些规则被考虑以生成这些附加Merge候选。
插入零运动候选以填充Merge候选列表中的剩余条目,并因此达到MaxNumMergeCand容量。这些候选具有零空域位移和参考图片索引,该索引从零开始并且每次向列表中添加新的零运动候选时增加。这些候选使用的参考帧的数量对于单向预测和双向预测分别是1和2。最后,不对这些候选执行冗余检查。
2.1.1.5用于并行处理的运动估计区域
为了加速编码过程,可以并行执行运动估计,由此同时推导给定区域内部的所有预测单元的运动矢量。从空域邻域推导Merge候选可能干扰并行处理,因为一个预测单元不能从邻近PU推导运动参数,直到其相关联的运动估计完成。为了缓和编解码效率和处理时延之间的折衷(trade-off),HEVC定义了运动估计区域(Motion Estimation Region,MER),使用“log2_parallel_merge_level_minus2”语法元素在图片参数集中信令通知MER的尺寸。当定义MER时,落入相同区域的Merge候选被标记为不可用,并且因此在列表构建中不被考虑。
2.1.2 AMVP
AMVP利用运动矢量与邻近PU的空时相关性,该空时相关性用于运动参数的显式传输。对于每个参考图片列表,通过首先检查左边、上边的时域邻近的PU位置的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度,来构建运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测值,并发送指示所选候选的对应索引。与Merge索引信令类似,使用截断一元对最佳运动矢量候选的索引进行编码。在这种情况下,要编码的最大值是2(见图8)。在接下来的章节中,将提供关于运动矢量预测候选的推导过程的细节。
2.1.2.1 AMVP候选的推导
在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,最终基于位于如图2所示描绘五个不同位置的每个PU的运动矢量来推导两个运动矢量候选。
对于时域运动矢量候选推导,从基于两个不同并置位置而推导的两个候选中选择一个运动矢量候选。在产生第一空时候选列表之后,移除列表中的重复运动矢量候选。如果潜在候选的数量大于二,则从列表中移除相关联的参考图片列表内其参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于二,则将附加的零运动矢量候选添加到列表。
2.1.2.2空域运动矢量候选
在空域运动矢量候选的推导中,在从位于如图2所描绘的位置的PU中推导的五个潜在候选当中考虑最多两个候选,那些位置与运动Merge的位置相同。当前PU的左侧的推导顺序被定义为A
·没有空域缩放
(1)相同的参考图片列表,以及相同的参考图片索引(相同的POC)
(2)不同的参考图片列表,但是相同的参考图片(相同的POC)
·空域缩放
(3)相同的参考图片列表,但是不同的参考图片(不同的POC)
(4)不同的参考图片列表,以及不同的参考图片(不同的POC)
首先检查非空域缩放情况,然后是空域缩放。当不管参考图片列表如何POC在邻近PU的参考图片与当前PU的参考图片之间都不同时,考虑空域缩放。如果左边候选的所有PU都不可用或者都是帧内编解码的,则允许针对上边运动矢量的缩放以帮助对左边和上边MV候选的并行推导。否则,针对上边运动矢量不允许空域缩放。
图9示出了空域运动矢量候选的运动矢量缩放的图示。
如图9所描绘的,在空域缩放过程中,以与时域缩放类似的方式来缩放邻近PU的运动矢量。主要差异在于参考图片列表和当前PU的索引被给定作为输入;实际缩放过程与时域缩放的过程相同。
2.1.2.3时域运动矢量候选
除了参考图片索引推导之外,用于推导时域Merge候选的所有过程与用于推导空域运动矢量候选的过程相同(参见图6)。参考图片索引被信令通知给解码器。
2.2 JEM中的新的帧间预测方法
2.2.1基于子CU的运动矢量预测
在具有QTBT的JEM中,每个CU对于每个预测方向最多可以有一个运动参数集合。通过将大CU划分为子CU并且推导大CU的所有子CU的运动信息,在编码器中考虑两个子CU级别运动矢量预测方法。可选时域运动矢量预测(Alternative Temporal Motion VectorPrediction,ATMVP)方法允许每个CU从比并置参考图片中的当前CU小的多个块中提取运动信息的多个集合。在空时运动矢量预测(Spatial-Temporal Motion Vector Prediction,STMVP)方法中,通过使用时域运动矢量预测值和空域邻近运动矢量来递归地推导子CU的运动矢量。
为了保持对于子CU运动预测的更准确的运动场,当前禁用参考帧的运动压缩。
2.2.1.1可选时域运动矢量预测
在可选时域运动矢量预测(ATMVP)方法中,通过从比当前CU小的块提取多个运动信息(包括运动矢量和参考索引)集来修改运动矢量时域运动矢量预测(Temporal MotionVector Prediction,TMVP)。如图10所示,子CU是正方形的N×N块(N默认被设置为4)。
ATMVP分两个步骤来预测CU内的子CU的运动矢量。第一步骤是用所谓的时域矢量来识别参考图片中的对应块。参考图片也称为运动源图片。第二步骤是将当前CU划分为子CU,并从与每个子CU相对应的块中获得运动矢量以及每个子CU的参考索引,如图10所示。
在第一步骤中,参考图片和对应块由当前CU的空域邻近块的运动信息确定。为了避免邻近块的反复的扫描过程,使用当前CU的Merge候选列表中的第一Merge候选。第一可用运动矢量以及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,在ATMVP中,与TMVP相比,可以更准确地识别对应块,其中对应块(有时称为并置块)总是相对于当前CU处于右下或中心位置。
在第二步骤中,通过向当前CU的坐标添加时域矢量,通过运动源图片中的时域矢量来识别子CU的对应块。对于每个子CU,其对应块的运动信息(覆盖中心样点的最小运动网格)用于推导子CU的运动信息。在识别对应的N×N块的运动信息之后,以与HEVC的TMVP相同的方式将其转换为当前子CU的运动矢量和参考索引,其中运动缩放和其它过程适用。例如,解码器检查是否满足低延迟条件(即当前图片的所有参考图片的POC小于当前图片的POC),并且可能使用运动矢量MV
2.2.1.2空时运动矢量预测(STMVP)
在该方法中,按照光栅扫描顺序递归地推导子CU的运动矢量。图11示出了这个概念。让我们考虑8×8的CU,它包含4个4×4的子CU:A、B、C和D。当前帧中的邻近的4×4块被标记为a、b、c和d。
子CU A的运动推导通过识别其两个空域邻居(neighbour)开始。第一邻居是子CUA上边的N×N块(块c)。如果这个块c不可用或是帧内编解码的,则检查子CU A上边的其它N×N块(从左到右,从块c开始)。第二邻居是子CU A左边的块(块b)。如果块b不可用或是帧内编解码的,则检查子CU A左边的其它块(从上到下,从块b开始)。从每个列表的邻近块中获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循如HEVC规定的TMVP推导的相同过程来推导子块A的时域运动矢量预测值(TMVP)。在位置D处的并置块的运动信息被相应地提取和缩放。最后,在检索和缩放运动信息之后,对每个参考列表单独地对所有可用的运动矢量(最多3个)求平均。平均运动矢量被分配为当前子CU的运动矢量。
2.2.1.3子CU运动预测模式信令
子CU模式被启用作为附加Merge候选,并且不需要附加语法元素来信令通知这些模式。两个附加Merge候选被添加到每个CU的Merge候选列表以表示ATMVP模式和STMVP模式。如果序列参数集指示启用了ATMVP和STMVP,则可以使用多达七个Merge候选。附加Merge候选的编码逻辑与HM中的Merge候选的编码逻辑相同,这意味着,对于P条带或B条带中的每个CU,针对两个附加Merge候选可能还需要两次RD检查。
在JEM中,Merge索引的所有二进制位(bin)都由CABAC进行上下文编解码。而在HEVC中,仅对第一二进制位进行上下文编解码,并且对其余二进制位进行上下文旁路编解码。
2.2.2自适应运动矢量差分辨率
在HEVC中,当在条带头中的use_integer_mv_flag等于0时,以四分之一(quarter)亮度样点为单位信令通知(PU的运动矢量和预测运动矢量之间的)运动矢量差(MotionVector Difference,MVD)。在JEM中,引入了局部自适应运动矢量分辨率(LocallyAdaptive Motion Vector Resolution,LAMVR)。在JEM中,可以以四分之一亮度样点、整数亮度样点或四亮度样点为单位对MVD进行编解码。以编解码单元(CU)级别控制MVD分辨率,并且对于具有至少一个非零MVD分量的每个CU,有条件地信令通知MVD分辨率标志。
对于具有至少一个非零MVD分量的CU,信令通知第一标志以指示在CU中是否使用四分之一亮度样点MV精度。当第一标志(等于1)指示未使用四分之一亮度样点MV精度时,信令通知另一个标志以指示使用整数亮度样点MV精度还是四亮度样点MV精度。
当CU的第一MVD分辨率标志为零或未针对CU进行编解码(意味着CU中的所有MVD均为零)时,四分之一亮度样点MV分辨率用于CU。当CU使用整数亮度样点MV精度或四亮度样点MV精度时,CU的AMVP候选列表中的MVP被取整为对应精度。
在编码器中,CU级别的RD检查用于确定哪个MVD分辨率要用于CU。也就是说,对于每个MVD分辨率,执行三次CU级别的RD检查。为了加快编码器速度,在JEM中应用以下编码方案:
·在具有正常四分之一亮度样点MVD分辨率的CU的RD检查期间,存储当前CU(整数亮度样点准度)的运动信息。存储的运动信息(取整之后)被用作在针对具有整数亮度样点和4亮度样点MVD分辨率的相同CU的RD检查期间的进一步的小范围运动矢量细化的起始点,使得耗时的运动估计过程不会重复三次。
·有条件地调用具有4亮度样点MVD分辨率的CU的RD检查。对于CU,当整数亮度样点MVD分辨率的RD代价远大于四分之一亮度样点MVD分辨率的RD代价时,跳过对于CU的4亮度样点MVD分辨率的RD检查。
2.2.3更高的运动矢量存储精度
在HEVC中,运动矢量精度是四分之一像素(对于4:2:0视频,四分之一亮度样点和八分之一色度样点)。在JEM中,内部运动矢量存储和Merge候选的精度增加到1/16像素。较高的运动矢量精度(1/16像素)用于用跳跃/Merge模式编解码的CU的运动补偿帧间预测。如第0章节所述,对于用正常AMVP模式编解码的CU,使用整数像素或四分之一像素运动。
具有与HEVC运动补偿插值滤波器相同的滤波器长度和归一化因子的SHVC上采样插值滤波器被用作附加分数像素位置的运动补偿插值滤波器。色度分量运动矢量精度在JEM中是1/32样点,通过使用两个邻近的1/16像素分数位置的滤波器的平均来推导1/32像素分数位置的附加插值滤波器。
2.2.4重叠块运动补偿
重叠块运动补偿(OBMC)先前在H.263中使用过。在JEM中,与H.263不同,可以使用CU级别的语法来打开和关闭OBMC。当在JEM中使用OBMC时,除了CU的右边界和下边界之外,对于所有运动补偿(Motion Compensation,MC)块边界都执行OBMC。此外,它被应用于亮度和色度分量。在JEM中,MC块对应于编解码块。当用子CU模式(包括子CU Merge、仿射和FRUC(Frame Rate Up Conversion,帧速率上转换)模式)对CU进行编解码时,CU的每个子块是MC块。为了以统一的方式处理CU边界,在子块级别对于所有MC块边界执行OBMC,其中子块尺寸被设置为等于4×4,如图12所示。
当OBMC应用于当前子块时,除了当前运动矢量之外,四个相连的邻近子块的运动矢量(如果可用并且与当前运动矢量不相同)还用于推导当前子块的预测块。基于多个运动矢量的这些多个预测块被组合以生成当前子块的最终预测信号。
基于邻近子块的运动矢量的预测块被表示为PN,其中N表示用于邻近的上边、下边、左边和右边的子块的索引,并且基于当前子块的运动矢量的预测块被表示为PC。当PN基于包含邻近子块的与当前子块相同的运动信息的运动信息时,OBMC不是从PN执行的。否则,将PN的每个样点添加到PC中的相同样点中,即PN的四行/列被添加到PC中。加权因子{1/4,1/8,1/16,1/32}用于PN,并且加权因子{3/4,7/8,15/16,31/32}用于PC。例外情况是小的MC块(即当编解码块的高度或宽度等于4或者CU用子CU模式进行编解码时),对于这样的块,只有PN的两行/列被添加到PC中。在这种情况下,加权因子{1/4,1/8}用于PN,并且加权因子{3/4,7/8}用于PC。对于基于垂直(水平)邻近子块的运动矢量生成的PN,将PN的相同的行(列)中的样点以相同的加权因子添加到PC。
在JEM中,对于尺寸小于或等于256个亮度样点的CU,信令通知CU级别标志,以指示对于当前CU是否应用了OBMC。对于尺寸大于256个亮度样点或未用AMVP模式编解码的CU,默认应用OBMC。在编码器处,当OBMC应用于CU时,其影响在运动估计阶段期间被考虑在内。使用上邻近块和左邻近块的运动信息由OBMC形成的预测信号用于补偿当前CU的原始信号的顶部边界和左侧边界,然后应用正常运动估计过程。
2.2.5局部照明补偿
局部照明补偿(LIC)基于照明变化的线性模型,使用缩放因子a和偏移b。并且对于每个帧间模式编解码的编解码单元(CU)自适应地启用或禁用它。
图13示出了用于推导IC参数的邻近样点的示例。
当LIC应用于CU时,采用最小平方误差法以通过使用当前CU的邻近样点及其对应的参考样点来推导参数a和b。更具体地,如图13所示,使用参考图片中的CU的子采样(2:1子采样)邻近样点和对应的样点(由当前CU或子CU的运动信息识别)。IC参数被单独地推导并应用于每个预测方向。
当用Merge模式对CU进行编解码时,以类似于Merge模式下的运动信息复制的方式,从邻近块复制LIC标志;否则,为CU信令通知LIC标志,指示LIC是否适用。
当对于图片启用LIC时,需要附加的CU级别RD检查来确定是否将LIC应用于CU。当对于CU启用LIC时,绝对差的均值移除和(Mean-Removed Sum of Absolute Difference,MR-SAD)和绝对哈达玛(Hadamard)变换差的均值移除和(Mean-Removed Sum of AbsoluteHadamard-Transformed Difference,MR-SATD)(而不是SAD和SATD)分别用于整数像素运动搜索和分数像素运动搜索。
为了降低编码复杂度,在JEM中应用以下编码方案。
·当当前图片及其参考图片之间没有明显的照明变化时,对于整个图片禁用LIC。为了识别这种情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片和当前图片的每个参考图片之间的直方图差小于给定阈值,则对于当前图片禁用LIC;否则,对于当前图片启用LIC。
2.2.6仿射运动补偿预测
在HEVC中,只有平移运动模型被应用于运动补偿预测(Motion CompensationPrediction,MCP)。而在现实世界中,存在许多种运动,例如,放大/缩小、旋转、透视运动和其它不规则运动。在JEM中,应用简化的仿射变换运动补偿预测。如图14所示,块的仿射运动场由两个控制点运动矢量来描述。
块的运动矢量场(Motion Vector Field,MVF)由以下等式描述:
其中(v
为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。子块尺寸M×N由等式2推导,其中MvPre是运动矢量分数精度(在JEM中为1/16),(v
在由等式2推导出之后,如果需要,应该向下调整M和N,使其分别为w和h的因数(divisor)。
为了推导每个M×N子块的运动矢量,如图15所示,根据等式1计算每个子块的中心样点的运动矢量,并取整为1/16的分数精度。然后,应用章节0中提到的运动补偿插值滤波器来用推导的运动矢量生成每个子块的预测。
在MCP之后,每个子块的高精度运动矢量被取整并保存为与正常运动矢量相同的精度。
在JEM中,有两种仿射运动模式:AF_INTER模式和AF_MERGE模式。对于宽度和高度都大于8的CU,可以应用AF_INTER模式。在比特流中信令通知CU级别的仿射标志,以指示是否使用AF_INTER模式。在这种模式下,使用邻近块构建具有运动矢量对{(v
当在AF_MERGE下应用CU,它从有效的邻近重构块中获得用仿射模式编解码的第一块。并且候选块的选择顺序是从左边、上边、右上、左下到左上,如图17A所示。如果在仿射模式下编解码邻近左下块A,如图17B所示,推导包含块A的CU的左上角、右上角和左下角的运动矢量v
在推导出当前CU的CPMV v
2.2.7模式匹配运动矢量推导
模式匹配的运动矢量推导(Pattern Matched Motion Vector Derivation,PMMVD)模式是基于帧速率上转换(Frame-Rate Up Conversion,FRUC)技术的特殊Merge模式。利用该模式,在解码器侧推导块的运动信息,而不是信令通知块的运动信息。
当CU的Merge标志为真时,向CU信号通知FRUC标志。当FRUC标志为假时,信号通知Merge索引并使用常规Merge模式。当FRUC标志为真时,信号通知的额外的FRUC模式标志以指示将使用哪种方法(双边匹配或模板匹配)来推导该块的运动信息。
在编码器侧,关于是否对CU使用FRUC Merge模式的决定是基于对正常Merge候选所做的RD代价选择。即,通过使用RD代价选择来校验CU的两种匹配模式(双边匹配和模板匹配)两者。引起最小代价的匹配模式与其他CU模式进一步比较。如果FRUC匹配模式是最有效的模式,则对于CU将FRUC标志设置为真,并且使用相关的匹配模式。
FRUC Merge模式中的运动推导过程具有两个步骤:首先执行CU级别运动搜索,然后进行子CU级别运动细化。在CU级别,基于双边匹配或模板匹配,推导整个CU的初始运动矢量。首先,生成MV候选列表,并且选择引起最小匹配代价的候选作为进一步CU级别细化的起点。然后,在起点附近执行基于的双边匹配或模板匹配的局部搜索,并且将最小匹配代价的MV结果作为整个CU的MV。随后,以推导的CU运动矢量作为起点,进一步在子CU级别细化运动信息。
例如,对于w×HCU运动信息推导执行以下推导过程。在第一阶段,推导整个w×HCU的MV。在第二阶段,该CU进一步被划分为M×M个子CU。M的值的计算方法如(1)所示,D是预定义的划分深度,在JEM中默认设置为3。然后推导每个子CU的MV。
如图18所示,通过在两个不同参考图片中沿当前CU的运动轨迹找到两个块之间的最接近匹配,使用双边匹配来推导当前CU的运动信息。在连续运动轨迹的假设下,指向两个参考块的运动矢量MV0和MV1应当与当前图片和两个参考图片之间的时间距离(即TD0和TD1)成比例。作为特殊情况,当当前图片在时间上在两个参考图片之间并且从当前图片到两个参考图片的时间距离相同时,双边匹配成为基于镜像的双向MV。
如图19所示,模板匹配用于通过找到当前图片中的模板(当前CU的顶部和/或左边邻近块)与参考图片中的块(与模板的尺寸相同)之间的最接近匹配来推导当前CU的运动信息。除了上述FRUC Merge模式之外,模板匹配也应用于AMVP模式。在JEM中,正如在HEVC中所做的那样,AMVP有两个候选。通过模板匹配方法,新的候选被推导出。如果由模板匹配新推导的候选与第一现有AMVP候选不同,则将其插入AMVP候选列表的最开始处,然后将列表尺寸设置为2(意味着移除第二现有AMVP候选)。当应用于AMVP模式时,仅应用CU级别搜索。
2.2.7.1 CU级别MV候选集
在CU级别处设置的MV候选包括:
(i)如果当前CU处于AMVP模式,则为原始AMVP候选,
(ii)所有Merge候选,
(iii)在章节0中介绍的插值MV场中的几个MV。
(iv)顶部和左边邻近运动矢量
当使用双边匹配时,将Merge候选的每个有效MV用作输入,以生成假设双边匹配的情况下的MV对。例如,在参考列表A中,Merge候选的一个有效MV是(MVa,refa)。然后,在其他参考列表B中找到其配对的双边MV的参考图片refb,使得refa和refb在时间上位于当前图片的不同侧。如果这样的refb在参考列表B中不可用,则refb被确定为与refa不同的参考,并且其到当前图片的时间距离是列表B中的最小值。在确定refb之后,通过基于当前图片refa和refb之间的时间距离来缩放MVa来推导MVb。
来自插值MV场的四个MV也被添加到CU级别候选列表。更具体地,添加当前CU的位置(0,0)、(W/2,0)、(0,H/2)和(W/2,H/2)处的插值MV。
当FRUC应用于AMVP模式时,原始AMVP候选也被添加到CU级别MV候选集。
在CU级别,对于AMVP CU,最多将15个MV添加到候选列表,对于Merge CU,最多将13个MV添加到候选列表。
2.2.7.2子CU级别MV候选集
在子CU级别处设置的MV候选包括:
(i)从CU级别搜索确定的MV,
(ii)顶部、左边、左上角和右上角的邻近MV,
(iii)来自参考图片的并置MV的缩放版本,
(iv)最多4个ATMVP候选,
(v)最多4个STMVP候选。
来自参考图片的缩放MV如下推导。遍历两个列表中的所有参考图片。参考图片中的子CU的并置位置处的MV被缩放到起始CU级别MV的参考。
ATMVP和STMVP候选仅限于前四个。
在子CU级别,最多将17个MV添加到候选列表中。
2.2.7.3插值MV场的生成
在对帧进行编解码之前,基于单边ME为整个图片生成插值运动场。然后,运动场可以稍后用作CU级别或子CU级别MV候选。
首先,两个参考列表中的每个参考图片的运动场以4×4块级遍历。对于每个4×4块,如果与块相关联的运动通过当前图片中的4×4块(如图20所示)并且块未被分配任何插值运动,则参考块的运动根据时间距离TD0和TD1(以与HEVC中的TMVP的MV缩放的方式相同的方式)被缩放到当前图片,并且将缩放的运动分配给当前帧中的块。如果没有缩放的MV被分配给4×4块,则在插值运动场中将块的运动标记为不可用。
2.2.7.4插值和匹配代价
当运动矢量指向分数样点位置时,需要运动补偿插值。为了降低复杂度,替代常规8抽头HEVC插值,将双线性插值用于双边匹配和模板匹配。
匹配代价的计算在不同步骤处有点不同。当从CU级别的候选集中选择候选时,匹配代价是双边匹配或模板匹配的绝对和差(Absolute Sum Difference,SAD)。在确定起始MV之后,子CU级别搜索的双边匹配的匹配代价计算如下:
其中w是根据经验设置为4的加权因子,MV和MV
在FRUC模式中,仅通过使用亮度样点来推导MV。推导的运动将用于MC帧间预测的亮度和色度两者。在确定MV之后,使用用于亮度的8抽头插值滤波器和用于色度的4抽头插值滤波器来执行最终MC。
2.2.7.5 MV细化
MV细化是基于模式的MV搜索,以双边匹配代价或模板匹配代价为标准。在JEM中,支持两种搜索模式—无限制中心偏置菱形搜索(Unrestricted Center-Biased DiamondSearch,UCBDS)和自适应交叉搜索,分别在CU级别和子CU级别进行MV细化。对于CU和子CU级别MV细化两者,以四分之一亮度样点MV精度直接搜索MV,并且接着是八分之一亮度样点MV细化。将用于CU和子CU步骤的MV细化的搜索范围设置为等于8个亮度样点。
2.2.7.6模板匹配FRUC Merge模式中预测方向的选择
在双边匹配Merge模式中,始终应用双向预测,因为CU的运动信息是基于在两个不同的参考图片中沿当前CU的运动轨迹的两个块之间的最近匹配推导的。对于模板匹配Merge模式没有这样的限制。在模板匹配Merge模式中,编码器可以从列表0中的单向预测、列表1中的单向预测或双向预测当中为CU选择。选择基于如下的模板匹配代价:
如果costBi<=factor*min(cost0,cost1)
则使用双向预测;
否则,如果cost0<=cost1
则使用来自列表0的单向预测;
否则,
使用来自列表1的单向预测;
其中cost0是列表0模板匹配的SAD,cost1是列表1模板匹配的SAD,costBi是双向预测模板匹配的SAD。factor的值等于1.25,这意味着选择过程偏向于双向预测。
帧间预测方向选择仅被应用于CU级别模板匹配过程。
2.2.8广义双向预测改进
VTM-3.0采用了JVET-L0646中提出的广义双向预测改进(Generalized Bi-prediction improvement,GBi)。
GBi是在JVET-C0047中提出的。JVET-K0248改进了GBi的增益-复杂度折衷,并被采用到BMS2.1中。BMS2.1 GBi在双向预测模式中对来自L0和L1的预测值应用不相等的权重。在帧间预测模式中,基于率失真优化(rate-distortion optimization,RDO)来评估包括相等权重对(1/2,1/2)的多个权重对,并且将所选权重对的GBi索引信令通知给解码器。在Merge模式下,GBi索引从邻近的CU继承而来。在BMS2.1 GBi中,双向预测模式下的预测值生成如等式(1)所示。
P
其中P
对于非低延迟图片,权重集尺寸从5减少到3,其中w
在JVET-L0646中,提出了一种基于JVET-L0197和JVET-L0296的组合解决方案,以进一步提高GBi性能。具体而言,以下修改应用于BMS2.1中的现有GBi设计之上
2.2.8.1 GBi编码器漏洞修复
为了减少GBi编码时间,在当前编码器设计中,编码器将存储从等于4/8的GBi权重估计的单向预测运动矢量,并将其重新用于其它GBi权重的单向预测搜索。这种快速编码方法应用于平移运动模型和仿射运动模型两者。在VTM2.0中,采用6参数仿射模型和4参数仿射模型。当GBi权重等于4/8时,在BMS2.1编码器存储单向预测仿射MV时,BMS2.1编码器不区分4参数仿射模型和6参数仿射模型。因此,在用4/8的GBi权重进行编码之后,4参数仿射MV可以被6参数仿射MV覆盖。所存储的6参数仿射MV可以用于其他GBi权重的4参数仿射ME,或者所存储的4参数仿射MV可以用于6参数仿射ME。所提出的GBi编码器漏洞修复是为了分开4参数仿射MV和6参数仿射MV存储。当GBi权重等于4/8时,编码器基于仿射模型类型存储那些仿射MV,并且对于其他GBi权重,基于仿射模型类型重新使用对应的仿射MV。
2.2.8.2 GBi编码器加速
当启用GBi时,提出了五种编码器加速方法来减少编码时间。
(1)有条件地跳过一些GBi权重的仿射运动估计
在BMS2.1中,对于所有GBi权重执行包括4参数仿射ME和6参数仿射ME的仿射ME。我们建议对那些不相等的GBi权重(不等于4/8的权重)有条件地跳过仿射ME。具体而言,当且仅当仿射模式被选择为当前最佳模式并且在评估4/8的GBi权重之后它不是仿射Merge模式时,将对其他GBi权重执行仿射ME。如果当前图片是非低延迟图片,当执行仿射ME时,对于不相等的GBi权重,将跳过平移模型的双向预测ME。如果未选择仿射模式作为当前最佳模式,或者如果选择仿射Merge作为当前最佳模式,则对于所有其他GBi权重,将跳过仿射ME。
(2)在1像素和4像素MVD精度的编码中,减少用于低延迟图片的RD代价检查的权重数量
对于低延迟图片,对于包括1/4像素、1像素和4像素的所有MVD精度,RD代价检查有五种权重。编码器将首先检查1/4像素MVD精度的RD代价。我们建议跳过用于1像素和4像素MVD精度的RD代价检查的一部分GBi权重。我们根据以1/4像素MVD精度的它们的RD代价,对那些不相等的权重进行排序。在以1像素MVD精度和4像素MVD精度编码期间,仅评估RD代价最小的前两个权重以及4/8的GBi权重。因此,对于低延迟图片的1像素MVD精度和4像素MVD精度,最多将评估三个权重。
(3)当L0和L1参考图片相同时,有条件地跳过双向预测搜索
对于RA中的一些图片,相同的图片可能出现在两个参考图片列表中(列表0和列表1)。例如,对于CTC中的随机接入编解码配置,第一图片组(Group Of Pictures,GOP)的参考图片结构如下所列。
我们可以看到图片16、8、4、2、1、12、14和15在两个列表中具有相同的(多个)参考图片。对于这些图片的双向预测,L0和L1参考图片可能是相同的。我们建议,当1)双向预测中的两个参考图片相同,并且2)时域层大于1,以及3)MVD精度为1/4像素时,编码器跳过对于不相等GBi权重的双向预测ME。对于仿射双向预测ME,这种快速跳过方法仅适用于4参数仿射ME。
(4)基于时域层和参考图片与当前图片之间的POC距离,跳过对于不相等GBi权重的RD代价检查
当时域层等于4(RA中最高的时域层)或者参考图片(列表0或列表1)和当前图片之间的POC距离等于1并且编解码QP大于32时,我们建议跳过对于那些不相等的GBi权重的RD代价评估。
(5)在ME期间,对于不相等的GBi权重,将浮点计算改为定点计算
对于现有的双向预测搜索,编码器将修复一个列表的MV,并在另一个列表中细化MV。目标是在ME之前修改以降低计算复杂度。例如,如果列表1的MV是固定的,并且编码器要细化列表0的MV,则列表0MV细化的目标是用等式(5)来修改。O是原始信号,并且P
T=((O<<3)-w*P
其中,项(1/(8-w))以浮点精度存储,这增加了计算复杂度。我们建议将等式(5)改为如等式(6)的固定点。
T=(O*a
其中a
γ=(1< 2.2.8.3 GBi的CU尺寸约束 在这种方法中,对于小的CU禁用GBi。在帧间预测模式下,如果使用双向预测,并且CU区域小于128个亮度样点,则在没有任何信令通知的情况下禁用GBi。 2.2.9双向光流 2.2.9.1理论分析 在BIO中,首先执行运动补偿以生成当前块的第一预测(在每个预测方向上)。第一预测用于推导块内的每个子块/像素的空间梯度、时间梯度和光流,然后用于生成第二预测,即子块/像素的最终预测。细节描述如下。 双向光流(BIO)是按样点的运动细化,其在用于双向预测的按块的运动补偿的基础上进行。样点级别运动细化不使用信令。 图21示出了光流轨迹的示例。 假设I 将该光流等式与Hermite插值相结合以获得每个样点的运动轨迹,最终得到与函数值I 这里,τ 通过最小化点A和点B(图9上运动轨迹和参考帧平面的交点)的值之间的差Δ来确定运动矢量场(v 等式9中的所有值都取决于样点位置(i′,j′),到目前为止从符号中忽略该位置。假设运动在局部周围区域中是一致的,我们最小化以当前预测点(i,j)为中心的(2M+I)×(2M+1)正方形窗口Ω内的Δ,其中M等于2: 对于这个优化问题,JEM使用简化的方法,首先在垂直方向最小化,然后在水平方向最小化。这得到: 其中, 为了避免除以零或非常小的值,正则化参数r和m被引入等式(11)和(12)中。 r=500·4 m=700·4 这里d是视频样点的比特深度。 为了保持BIO的存储器访问与规则双向预测运动补偿的相同,所有预测和梯度值I 利用BIO,有可能针对每个样点细化运动场。为了降低计算复杂度,在JEM中使用基于块的BIO设计。基于4×4块来计算运动细化。在基于块的BIO中,聚合4×4块中所有样点的等式(13)中的s 其中b 在某些情况下,由于噪音或不规则的运动,BIO的MV细化可能不可靠。因此,在BIO中,MV细化的幅度被限幅到阈值thBIO。阈值基于当前图片的参考图片是否都来自一个方向来确定。如果当前图片的所有参考图片都来自一个方向,则阈值被设置为12×2 使用与HEVC运动补偿过程(2D可分离FIR)一致的操作,与运动补偿插值同时计算BIO的梯度。该2D可分离FIR的输入是与运动补偿过程和根据块运动矢量的分数部分的分数位置(fracX,fracY)相同的参考帧样点。在水平梯度 表2示出了用于BIO中预测信号生成的插值滤波器。 表1:用于BIO中梯度计算的滤波器 表2:用于BIO中预测信号生成的插值滤波器 在JEM中,当两个预测来自不同的参考图片时,BIO被应用于所有双向预测块。当对于CU启用LIC时,BIO被禁用。 在JEM中,OBMC被应用于正常MC过程之后的块。为了降低计算复杂性,BIO没有在OBMC过程期间被应用。这意味着当使用自己的MV时,BIO仅被应用于块的MC过程,而当在OBMC过程期间使用邻近块的MV时,BIO不应用于MC过程。 2.2.9.2如在JVET-L0256提出的VTM-3.0中的BIO 步骤1:判断BIO是否适用(W和H是当前块的宽度和高度) 如果满足以下内容,则BIO是不适用的 ·仿射编解码 ·ATMVP编解码 ·(iPOC-iPOC0)*(iPOC-iPOC1)>=0 ·H==4或(W==4且H==8) ·具有加权预测 ·GBi权重不是(1,1) 如果满足以下内容,则不使用BIO -两个参考块(表示为R0和R1)之间的总SAD小于阈值。 步骤2:数据准备 对于WxH块,(W+2)x(H+2)个样点被插值。 像正常运动补偿一样,用8抽头插值滤波器对内部WxH个样点进行插值。 样点的四条外侧线(图23中的黑色圆圈)用双线性滤波器进行插值。 对于每个位置,在两个参考块(表示为R0和R1)上计算梯度 Gx0(x,y)=(R0(x+1,y)-R0(x-1,y))>>4 Gy0(x,y)=(R0(x,y+1)-R0(x,y-1))>>4 Gx1(x,y)=(R1(x+1,y)-R1(x-1,y))>>4 Gy1(x,y)=(R1(x,y+1)-R1(x,y-1))>>4 对于每个位置,内部值计算如下: T1=(R0(x,y)>>6)-(R1(x,y)>>6),T2=(Gx0(x,y)+Gx1(x,y))>>3,T3=(Gy0(x,y)+Gy1(x,y))>>3 B1(x,y)=T2*T2,B2(x,y)=T2*T3,B3(x,y)=-T1*T2,B5(x,y)=T3*T3,B6(x,y)=-T1*T3 步骤3:计算每个块的预测 如果两个4×4参考块之间的SAD小于阈值,则跳过4×4块的BIO。 计算Vx和Vy。 计算4×4块中每个位置的最终预测。 b(x,y)=(Vx(Gx P(x,y)=(R b(x,y)被称为校正项。 2.2.9.3VTM-3.0中的BIO 以下章节编号指的是VVC标准文档中当前版本中的章节。 8.3.4帧间块的解码过程 -如果predFlagL0和predFlagL1等于1,DiffPicOrderCnt(currPic,refPicList0[refIdx0])*DiffPicOrderCnt(currPic,refPicList1[refIdx1])<0,MotionModelIdc[xCb][yCb]等于0,并且MergeModeList[merge_idx[xCb][yCb]]不等于SbCol,则将bioAvailableFlag的值设置为TRUE。 -否则,将bioAvailableFlag的值设置为FALSE。 ...(继续原始规范的文本) -如果bioAvailableFlag等于TRUE,则应用以下内容: -变量shift设置为等于Max(2,14-bitDepth)。 -变量cuLevelAbsDiffThres和subCuLevelAbsDiffThres设置为等于(1<<(bitDepth-8+shift))*cbWidth*cbHeight and 1<<(bitDepth-3+shift)。变量cuLevelSumAbsoluteDiff设置为0。 -对于xSbIdx=0..(cbWidth>>2)-1和ySbIdx=0..(cbHeight>>2)-1,当前子块的变量subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]和双向光流利用标志bioUtilizationFlag[xSbIdx][ySbIdx]被推导为: subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]=∑ bioUtilizationFlag[xSbIdx][ySbIdx]=subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]>=subCuLevelAbsDiffThres cuLevelSumAbsoluteDiff+=subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx] -如果cuLevelSumAbsoluteDiff小于cuLevelAbsDiffThres,则将bioAvailableFlag设置为FALSE。 -如果bioAvailableFlag等于TRUE,通过使用亮度编解码子块宽度sbWidth、亮度编解码子块高度sbHeight和样点阵列predSamplesL0L和predSamplesL1L,以及变量predFlagL0、predFlagL1、refIdxL0、refIdxL1调用8.3.4.5条款中指定的双向光流样点预测过程,来推导当前亮度编解码子块内的预测样点predSamplesL[xL+xSb][yL+ySb],其中xL=0..sbWidth-1以及yL=0..sbHeight-1。 8.3.4.3分数样点插值过程 8.3.4.3.1通用 该过程的输入是: -亮度位置(xSb,ySb),指定当前编解码子块的左上角样点相对于当前图片的左上角亮度样点, -变量sbWidth,指定亮度样点中当前编解码子块宽度, -变量sbHeight,指定亮度样点中当前编解码子块高度, -以1/16亮度样点单位给定的亮度运动矢量mvLX, -以1/32色度样点单位给定的色度运动矢量mvCLX, -选定的参考图片样点阵列refPicLXL以及阵列refPicLXCb和refPicLXCr。 -双向光流启用标志bioAvailableFlag。 该过程的输出是: -当bioAvailableFlag为FALSE时,预测亮度样点值的(sbWidth)x(sbHeight)阵列predSamplesLXL,或当bioAvailableFlag为TRUE时,预测亮度样点值的(sbWidth+2)x(sbHeight+2)阵列predSamplesLXL。 -预测色度样点值的两个(sbWidth/2)x(sbHeight/2)阵列predSamplesLXCb和predSamplesLXCr。 假设(xIntL,yIntL)是以全样点单位给出的亮度位置,(xFracL,yFracL)是以1/16样点单位给出的偏移。这些变量仅在这一条款中用于指定参考样点阵列refPicLXL、refPicLXCb和refPicLXCr内的分数样点位置。 当bioAvailableFlag等于TRUE时,对于在预测亮度样点阵列predSamplesLXL内每个亮度样点位置(xL=-1..sbWidth,yL=-1..sbHeight),对应的预测亮度样点值predSamplesLXL[xL][yL]推导如下: -变量xIntL、yIntL、xFracL和yFracL推导如下: xIntL=xSb-1+(mvLX[0]>>4)+xL yIntL=ySb-1+(mvLX[1]>>4)+yL xFracL=mvLX[0]&15 yFracL=mvLX[1]&15 -bilinearFiltEnabledFlag的值推导如下: -如果xL等于-1或者sbWidth,或者,yL等于-1或者sbHeight,将bilinearFiltEnabledFlag的值设置为TRUE。 -否则,将bilinearFiltEnabledFlag的值设置为FALSE -通过调用8.3.4.3.2条款中指定的过程,以(xIntL,yIntL)、(xFracL,yFracL)、refPicLXL和bilinearFiltEnabledFlag作为输入,来推导预测亮度样点值predSamplesLXL[xL][yL]。 当bioAvailableFlag等于FALSE时,对于在预测亮度采样阵列predSamplesLXL内的每个亮度样点位置(xL=0..sbWidth-1,yL=0..sbHeight-1),对应的预测亮度样点值predSamplesLXL[xL][yL]推导如下: -变量xIntL、yIntL、xFracL和yFracL推导如下: xIntL=xSb+(mvLX[0]>>4)+xL yIntL=ySb+(mvLX[1]>>4)+yL xFracL=mvLX[0]&15 yFracL=mvLX[1]&15 -变量bilinearFiltEnabledFlag设置为FALSE。 -通过调用8.3.4.3.2条款指定的过程,以(xIntL,yIntL)、(xFracL,yFracL)、和refPicLXL以及bilinearFiltEnabledFlag作为输入,推导出预测亮度样点值predSamplesLXL[xL][yL]。 …(继续原始规范的文本) 8.3.4.5双向光流预测过程 该过程的输入是: -两个变量nCbW和nCbH,指定当前编解码块的宽度和高度, -两个(nCbW+2)x(nCbH+2)亮度预测样点阵列predSamplesL0和predSamplesL1, -预测列表利用标志predFlagL0和predFlagL1, -参考索引refIdxL0和refIdxL1, -双向光流利用标志bioUtilizationFlag[xSbIdx][ySbIdx],其中,xSbIdx=0..(nCbW>>2)-1,ySbIdx=0..(nCbH>>2)-1 该过程的输出是亮度预测样点值的(nCbW)x(nCbH)阵列pbSamples 变量bitDepth设置为等于BitDepthY。 变量shift2设置为等于Max(3,15-bitDepth),并且变量offset2设置为等于1<<(shift2-1)。 变量mvRefineThres设置为等于1<<(13-bitDepth)。 对于xSbIdx=0..(nCbW>>2)-1以及ySbIdx=0..(nCbH>>2)-1, -如果bioUtilizationFlag[xSbIdx][ySbIdx]为FALSE,对于x=xSb..xSb+3,y=ySb..ySb+3,当前预测单元的预测样点值推导如下: pbSamples[x][y]=Clip3(0,(1< (predSamplesL0[x][y]+predSamplesL1[x][y]+offset2)>>shift2) -否则,当前预测单元的预测样点值推导如下: -指定当前子块的左上角样点相对于预测样点阵列predSamplesL0和predSampleL1的左上角样点的位置(xSb,ySb)推导如下: xSb=(xSbIdx<<2)+1 ySb=(ySbIdx<<2)+1 -对于x=xSb-1..xSb+4,y=ySb-1..ySb+4,应用以下内容: -对于预测样点阵列内每个对应样点(x,y)的位置(hx,vy)推导如下: hx=Clip3(1,nCbW,x) vy=Clip3(1,nCbH,y) -变量gradientHL0[x][y]、gradientVL0[x][y]、gradientHL1[x][y]和gradientVL1[x][y]推导如下: gradientHL0[x][y]=(predSamplesL0[hx+1][vy]-predSampleL0[hx-1][vy])>>4 gradientVL0[x][y]=(predSampleL0[hx][vy+1]-predSampleL0[hx][vy-1])>>4gradientHL1[x][y]=(predSamplesL1[hx+1][vy]-predSampleL1[hx-1][vy])>>4gradientVL1[x][y]=(predSampleL1[hx][vy+1]-predSampleL1[hx][vy 1])>>4 -变量temp、tempX和tempY推导如下: temp[x][y]=(predSamplesL0[hx][vy]>>6)-(predSamplesL1[hx][vy]>>6) tempX[x][y]=(gradientHL0[x][y]+gradientHL1[x][y])>>3 tempY[x][y]=(gradientVL0[x][y]+gradientVL1[x][y])>>3 -变量sGx2、sGy2、sGxGy、sGxdI和sGydI推导如下: sGx2=∑ sGy2=∑ sGxGy=∑ sGxdI=∑ sGydI=∑ -当前子块的水平和垂直运动细化推导如下: vx=sGx2>0?Clip3(-mvRefineThres,mvRefineThres,-(sGxdI<<3)>>Floor(Log2(sGx2))):0 vy=sGy2>0?Clip3(-mvRefineThres,mvRefineThres,((sGydI<<3)-((vx*sGxGym)<<12+vx*sGxGys)>>1)>>Floor(Log2(sGy2))):0 sGxGym=sGxGy>>12; sGxGys=sGxGy&((1<<12)-1) 对于x=xSb-1..xSb+2,y=ySb-1..ySb+2,应用以下内容:sampleEnh=Round((vx*(gradientHL1[x+1][y+1]-gradientHL0[x+1][y+1]))>>1)+Round((vy*(gradientVL1[x+1][y+1]-gradientVL0[x+1][y+1]))>>1) pbSamples[x][y]=Clip3(0,(1< 2.2.10解码器侧运动矢量细化 DMVR是一种解码器侧运动矢量推导(Decoder-side Motion Vector Derivation,DMVD)。 在双向预测操作中,对于一个块区域的预测,分别使用列表0的运动矢量(MV)和列表1的MV形成的两个预测块被组合以形成单个预测信号。在解码器侧运动矢量细化(DMVR)方法中,双向预测的两个运动矢量通过双边模板匹配过程进一步细化。双边模板匹配应用于解码器中,以在双边模板和参考图片中的重构样点之间执行基于失真的搜索,以便在不发送附加运动信息的情况下获得细化的MV。 在DMVR中,从列表0的初始MV0和列表1的MV1分别生成双边模板作为两个预测块的加权组合(即平均值),如图24所示。模板匹配操作包括计算生成的模板和参考图片中的(初始预测块周围的)样点区域之间的代价度量。对于两个参考图片中的每一个,产生最小模板代价的MV被认为是该列表中用以替换原始MV的更新的MV。在JEM中,对于每个列表搜索9个MV候选。9个候选MV包括原始MV和8个周围MV,其中一个亮度样点在水平或垂直方向或两者上相对于原始MV偏移的亮度样点。最后,两个新的MV(即如图24所示的MV0′和MV1′)用于生成最终的双向预测结果。绝对差之和(sum of absolute differences,SAD)被用作代价度量。请注意,当计算由一个周围MV生成的预测块的代价时,取整的MV(取整为整数像素)实际上用于获得预测块,而不是实际的MV。 DMVR应用于双向预测的Merge模式,其中一个MV来自过去的参考图片,并且另一个来自未来的参考图片,而无需传输附加语法元素。在JEM中,当对于CU启用LIC、仿射运动、FRUC或子CU Merge候选时,不应用DMVR。 2.2.11 JVET-N0236 该贡献提出了一种利用光流来细化基于子块的仿射运动补偿预测的方法。在执行基于子块的仿射运动补偿之后,通过添加由光流等式推导的差来细化预测样点,这被称为利用光流的预测细化(Prediction Refinement With Optical Flow,PROF)。该提出方法可以在不增加内存访问带宽的情况下实现像素级粒度的帧间预测。 为了实现更精细的运动补偿粒度,该贡献提出了一种利用光流细化基于子块的仿射运动补偿预测的方法。在执行基于子块的仿射运动补偿之后,通过添加由光流等式推导的差来细化亮度预测样点。提出的PROF(利用光流的预测细化)被描述为以下四个步骤。 步骤1)执行基于子块的仿射运动补偿以生成子块预测I(i,j)。 步骤2)使用3抽头滤波器[-1,0,1],在每个样点位置处计算子块预测的空间梯度g g g 为了梯度计算,子块预测在每一侧扩展一个像素。为了减少内存带宽和复杂度,扩展边界上的像素从参考图片中最近的整数像素位置复制。因此,避免了填充区域的附加插值。 步骤3)通过光流等式来计算亮度预测细化。 ΔI(i,j)=g 其中,Δv(i,j)是对于样点位置(i,j)计算的像素MV(表示为v(i,j))和像素(i,j)所属的子块的子块MV之间的差,如图25所示。 由于仿射模型参数和相对于子块中心的像素位置不会随着子块不同而改变,因此可以对第一个子块计算Δv(i,j),并将其重新用于同一CU中的其他子块。假设x和y是从像素位置到子块中心的水平偏移和垂直偏移,Δv(x,y)可以通过下面的等式来推导: 对于4参数仿射模型, 对于6参数仿射模型, 其中,(v 步骤4)最后,亮度预测细化被添加到子块预测I(i,j)。最终的预测I’由下等式生成。 I′(i,j)=I(i,j)+ΔI(i,j) 2.2.12 JVET-N0510 相位变化仿射子块运动补偿(Phase-variant Affine sub-block MotionCompensation,PAMC) 为了更好地近似仿射子块中的仿射运动模型,将相位变化MC应用于子块。在所提出的方法中,仿射编解码块也被划分为4×4个子块,并且如在VTM4.O中所做的那样,为每个子块推导出子块MV。每个子块的MC被划分为两个阶段。第一阶段是用(4+L-1)行水平滤波对(4+L-1)×(4+L-1)参考块窗口进行滤波,其中L是插值滤波器的滤波器抽头长度。然而,不同于平移MC,在所提出的相位变化仿射子块MC中,每个样点行的滤波相位是不同的。对于每个样点行,MVx推导如下。 MVx=(subblockMVx<<7+dMvVerX×(rowIdx-L/2-2))>>7(等式1) 每个样点行的滤波相位是从MVx推导的。如在VTM4.0中所做的,subblockMVx是推导的子块MV的MV的x分量。rowIdx是样点行索引。dMvVerX是(cuBottomLeftCPMVx-cuTopLeftCPMVx)<<(7-log2LumaCbHeight),其中cuBottomLeftCPMVx为CU左下角控制点MV的x分量,cuTopLeftCPMVx为CU左上角控制点MV的x分量,并且LumaCbHeight为亮度编解码块(CB)的高度的log2。 在水平滤波之后,生成4×(4+L-1)水平滤波样点。图1示出了所提出的水平滤波的概念。灰色点是参考块窗口的样点,并且橙色点表示水平滤波的样点。8×1样点的蓝色管表示应用一次8抽头水平滤波,如图30和图31所示。每个样点行需要四次水平过滤。样点行上的滤波相位是相同的。然而,不同行上的滤波相位是不同的。生成偏斜的4×11样点。 在第二阶段,4×(4+L-1)水平滤波样点(图1中的橙色样点)被进一步垂直滤波。对于每个样点列,MVy推导如下。 MVy=(subblockMVy<<7+dMvHorY×(columnIdx-2))>>7(等式2) 每个样点列的滤波相位是从MVy推导的。如在VTM4.0中所做的,subblockMVy是推导的子块MV的MV的y分量。columnIdx是样点列索引。dMvHorY为(cuTopRightCPMVy-cuTopLeftCPMVy)<<(7-log2LumaCbWidth),其中,cuTopRightCPMVy是CU右上角控制点MV的y分量,cuTopLeftCPMVy是CU左上控制点MV的y分量,并且log2LumaCbWidth是亮度CB的宽度的log2。 在垂直滤波之后,生成4×4仿射子块预测样点。图32示出了所提出的垂直滤波的概念。浅橙色点是来自第一阶段的水平滤波的样点。红色点是作为最终预测样点的垂直过滤样点。 在本提案中,使用的插值滤波设置与VTM4.0中的相同。唯一的区别是一个样点行上的水平滤波相位不同,并且一个样点列上的垂直滤波相位不同。对于所提出的方法中每个仿射子块的滤波操作的数量,它与VTM4.0中的相同。 3.通过公开的技术解决方案所解决的问题的示例 1.BIO只考虑双向预测。 2.vx和vy的推导没有考虑邻近块的运动信息。 3.光流在JVET-N0236中用于仿射预测,但远非最优。 4.实施例和技术的示例 为了解决这些问题,我们提出了利用光流推导细化预测样点的不同形成。此外,我们提出了使用邻近(例如,相邻或非相邻)块的信息(诸如,重构样点或运动信息)、和/或一个子块/块的梯度和子块/块的预测块来获得当前子块/块的最终预测块。 以下列出的技术和实施例应该被认为是解释一般概念的示例。这些实施例不应该被狭义地解释。此外,这些技术可以以任何合适的方式组合。 分别由Ref0和Ref1表示来自列表0和列表1的当前图片的参考图片,表示t 在以下讨论中,SatShift(x,n)被定义为 Shift(x,n)被定义为Shift(x,n)=(x+offset0)>>n。 在一个示例中,offset0和/或offset1被设置为(1< 在另一个示例中,offset0=offset1=((1< Clip3(min,max,x)被定义为 在下面的讨论中,两个运动矢量之间的运算意味着该运算将被应用于运动矢量的两个分量。例如,MV3=MV1+MV2相当于MV3 在下面的讨论中,左侧邻近块、左下方邻近块、上方邻近块、右上方邻近块和左上方邻近块被表示为块A 1.提出块中的位置(x,y)处的预测样点P(x,y)可以被细化为P’(x,y)=P(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。P’(x,y)将与残差样点Res(x,y)一起使用,以生成重构的Rec(x,y)。(Gx(x,y),Gy(x,y))表示位置(x,y)处的梯度,诸如分别沿水平方向和垂直方向。(Vx(x,y),Vy(x,y))表示位置(x,y)处的运动位移,该运动位移可以被即时地(on-the-fly)推导。 a.可替代地,加权函数可以被应用于预测样点、梯度和运动位移。例如,P’(x,y)=α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),其中,α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,它们可以是整数或实数。 i.例如,P’(x,y)=(α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y)+offsetP)/(α(x,y)+β(x,y)+γ(x,y))。在一个示例中,offsetP被设置为0。可替代地,除法可以用移位来替换。 ii.例如,P’(x,y)=P(x,y)-Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y); iii.例如,P’(x,y)=P(x,y)-Gx(x,y)×Vx(x,y)-Gy(x,y)×Vy(x,y); iv.例如,P’(x,y)=P(x,y)+Gx(x,y)×Vx(x,y)-Gy(x,y)×Vy(x,y); v.例如,P’(x,y)=0.5×P(x,y)+0.25×Gx(x,y)×Vx(x,y)+0.25×Gy(x,y)×Vy(x,y); vi.例如,P’(x,y)=0.5×P(x,y)+0.5×Gx(x,y)×Vx(x,y)+0.5×Gy(x,y)×Vy(x,y); vii.例如,P’(x,y)=P(x,y)+0.5×Gx(x,y)×Vx(x,y)+0.5×Gy(x,y)×Vy(x,y); b.可替代地,P’(x,y)=Shift(α(x,y)×P(x,y),n1)+Shift(β(x,y)×Gx(x,y)×Vx(x,y),n2)+Shift(γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其为整数。n1、n2、n3是非负整数,诸如1。 c.可替代地,P’(x,y)=SatShift(α(x,y)×P(x,y),n1)+SatShift(β(x,y)×Gx(x,y)×Vx(x,y),n2)+SatShift(γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其为整数。n1、n2、n3是非负整数,诸如1。 d.可替代地,P’(x,y)=Shift(α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),n1),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其为整数。n1是非负整数,诸如1。 e.可替代地,P’(x,y)=SatShift(α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),n1),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其为整数。n1是非负整数,诸如1。 f.可替代地,P’(x,y)=α(x,y)×P(x,y)+Shift(β(x,y)×Gx(x,y)×Vx(x,y),n2)+Shift(γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其为整数。n2、n3是非负整数,诸如1。 g.可替代地,P’(x,y)=α(x,y)×P(x,y)+SatShift(β(x,y)×Gx(x,y)×Vx(x,y),n2)+SatShift(γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其为整数。n2、n3是非负整数,诸如1。 h.可替代地,P’(x,y)=α(x,y)×P(x,y)+Shift(β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其为整数。n3是非负整数,诸如1。 i.可替代地,P’(x,y)=α(x,y)×P(x,y)+SatShift(β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其为整数。n3是非负整数,诸如1。 j.可替代地,P’(x,y)=f0(P(x,y))+f1(Gx(x,y)×Vx(x,y))+f2(Gy(x,y)×Vy(x,y)),其中,f0、f1和f2是三个函数。 k.在一个示例中,利用P(x1,y1)来计算(Gx(x,y),Gy(x,y)),其中x1属于范围[x-Bx0,x+Bx1],并且y1属于范围[y-By0,y+By1],并且其中Bx0、Bx1、By0、By1是整数。 i.例如,Gx(x,y)=P(x+1,y)-P(x-1,y),Gy(x,y)=P(x,y+1)-P(x,y-1); (i)可替代地,Gx(x,y)=Shift(P(x+1,y)-P(x-1,y),n1),Gy(x,y)=Shift(P(x,y+1)-P(x,y-1),n2)。例如,n1=n2=1; (ii)可替代地,Gx(x,y)=SatShift(P(x+1,y)-P(x-1,y),n1),Gy(x,y)=SatShift(P(x,y+1)-P(x,y-1),n2)。例如,n1=n2=1; l.P(x,y)可以是单向预测(具有一个MV的帧间预测)的预测值; m.P(x,y)可以是双向预测(具有两个MV的帧间预测)之后的最终预测值; i.例如,Vx(x,y)、Vy(x,y)可以按照在BIO(又名双向光流BDOF)中指定的方式进行推导。 n.P(x,y)可以是多假设帧间预测(具有多于两个MV的帧间预测); o.P(x,y)可以是仿射预测; p.P(x,y)可以是帧内预测; q.P(x,y)可以是帧内块复制(Intra-Block Copy,IBC)预测。 r.P(x,y)可以通过三角形预测模式(Triangular Prediction Mode,TPM)生成,或者可以通过地理预测模式(Geographic Prediction Mode,GPM)技术生成。 s.P(x,y)可以是帧间-帧内组合预测; t.P(x,y)可以是全局帧间预测,其中区域共享相同的运动模型和参数; u.P(x,y)可以通过调色板编解码模式生成; v.P(x,y)可以是多视图或3D视频编解码中的帧间视图预测; w.P(x,y)可以是可缩放视频编解码中的帧间层预测; x.P(x,y)可以在细化之前被滤波; y.P(x,y)可以是最终预测,其将与残差样点值相加以得到重构样点值。在一些实施例中,当不应用细化过程时,P(x,y)可以是最终预测。在一些实施例中,当应用细化过程时,P’(x,y)可以是最终预测。 i.在一个示例中,对于双向预测或多假设预测应用块(或子块),以上函数被应用于最终预测值一次。 ii.在一个示例中,对于双向预测或多假设预测应用块(或子块),以上函数被应用多次,使得对于根据一个预测方向或参考图片或运动矢量的每个预测块,调用以上过程来更新预测块。之后,利用更新的预测块来生成最终预测块。 iii.可替代地,P(x,y)可以是中间预测,它将用于推导最终预测。 (i)例如,如果当前块是利用双向预测进行帧间预测的,则P(x,y)可以是来自一个参考图片列表的预测; (ii)例如,如果当前块是利用TPM或利用GPM技术进行帧间预测的,则P(x,y)可以是来自一个参考图片列表的预测; (iii)例如,如果当前块是利用多假设进行帧间预测的,则P(x,y)可以是来自一个参考图片的预测; (iv)例如,如果当前块是帧间-帧内组合预测的,则P(x,y)可以是帧间预测; (v)例如,当当前块使用LIC时,P(x,y)可以是在应用局部照明补偿(LIC)之前的帧间预测; (vi)例如,当当前块使用DMVR(或其他种类的DMVD)时,P(x,y)可以是在应用DMVR(或其他种类的DMVD)之前的帧间预测; (vii)例如,当当前块使用加权预测或广义双向预测(GBi)时,P(x,y)可以是在加权因子相乘之前的帧间预测; z.可以根据最终预测来推导表示为G(x,y)(例如,Gx(x,y)或/和Gy(x,y))的梯度,该最终预测将与残差样点值相加以得到重构样点值。在一些实施例中,当不应用细化过程时,最终预测样点值被加到残差样点值以得到重构样点值。 i.例如,可以根据P(x,y)来推导G(x,y)。 ii.可替代地,可以根据中间预测来推导G(x,y),该中间预测将用于推导最终预测。 (i)例如,如果当前块是利用双向预测进行帧间预测的,则可以根据来自一个参考图片列表的预测来推导G(x,y); (ii)例如,如果当前块是利用TPM或利用GPM技术进行帧间预测的,则可以根据来自一个参考图片列表的预测来推导G(x,y); (iii)例如,如果当前块是利用多假设进行帧间预测,则可以根据来自一个参考图片的预测来推导G(x,y); (iv)例如,如果当前块是帧间-帧内组合预测的,则可以根据帧间预测来推导G(x,y); (v)例如,当当前块使用LIC时,可以根据在应用局部照明补偿(LIC)之前的帧间预测来推导G(x,y); (vi)例如,当当前块使用DMVR(或其他种类的DMVD)时,可以根据在应用DMVR(或其他种类的DMVD)之前的帧间预测来推导G(x,y); (vii)例如,当当前块使用加权预测或广义双向预测(GBi)时,可以根据在加权因子相乘之前的帧间预测来推导G(x,y); aa.可替代地,可以通过其他方法进一步处理P’(x,y),以得到最终预测样点。 bb.可替代地,块中的位置(x,y)处的重构样点Rec(x,y)可以被细化为Rec’(x,y)=Rec(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。Rec’(x,y)将用于替换重构的Rec(x,y)。(Gx(x,y),Gy(x,y))表示位置(x,y)处的梯度,诸如分别沿水平方向和垂直方向。(Vx(x,y),Vy(x,y))表示位置(x,y)处的运动位移,其中该运动位移可以被即时地推导。 i.在一个示例中,根据重构样点来推导(Gx(x,y),Gy(x,y))。 2.提出在基于光流的方法(诸如在项目符号1)中利用的Vx(x,y)和/或Vy(x,y)可以取决于空域或时域邻近块。 a.可替代地,在BIO(又名BDOF)的过程中的Vx(x,y)和/或Vy(x,y) 可以取决于空域或时域邻近块。 b.在一个示例中,对空域或时域邻近块的“依赖”可以包括对运动信息(例如,MV)、编解码模式(例如,帧间编解码或帧内编解码)、邻近CU大小、邻近CU位置等的依赖 c.在一个示例中,(Vx(x,y),Vy(x,y))可以等于MV i.在一个示例中,MV ii.可替代地,MV iii.可替代地,MV iv.在一个示例中,Wc(x,y)=0。 v.在一个示例中,k=1。并且N1是空域邻近块。 (i)在一个示例中,N1是最靠近位置(x,y)的空域邻近块; (ii)在一个示例中,当位置(x,y)更靠近N1时,W vi.在一个示例中,k=1。并且N1是时域邻近块。 (i)例如,N1是位置(x,y)的并置图片中的并置块。 在一个示例中,不同的位置可以使用不同的空域或时域邻近块。 vii.图26示出了如何推导Vx(x,y)和/或Vy(x,y)的示例。在图中, 每个块表示基本块(例如,4×4块)。当前块用粗体线标记。 (i)例如,阴影基本块中的预测样点(不在顶部或左侧边界)将不用光流进行细化。 (ii)例如,顶部边界处的基本块(诸如C00、C10、C20和C30)中的预测样点将利用光流进行细化。 a.例如,顶部边界处的基本块中的预测样点的MV (iii)例如,左侧边界处的基本块(诸如C00、C01、C02和C03)中的预测样点将利用光流进行细化。 a.例如,左侧边界处的基本块中的预测样点的MV viii.在一个示例中,MVc和MV (i)在一个示例中,它们被缩放到MVc参考的参考图片。 ix.在一个示例中,空域或时域邻近块Ns仅在它没有被帧内编解码时才可以用于推导MV x.在一个示例中,空域或时域邻近块Ns仅在它没有被IBC编解码时才可以用于推导MV xi.在一个示例中,仅当MVs参考与MVc相同的参考图片时,空域或时域邻近块Ns才可以用于推导MV d.在一个示例中,(Vx(x,y),Vy(x,y))可以等于f(MVMix,MVc),其中f是函数,并且MVc是当前块的MV。 i.例如,(Vx(x,y),Vy(x,y))可以等于MV ii.例如,(Vx(x,y),Vy(x,y))可以等于MVc-MV iii.例如,(Vx(x,y),Vy(x,y))可以等于p×MV (i)可替代地,(Vx(x,y),Vy(x,y))可以等于Shift(p×MV e.在一个示例中,当前块是利用单向预测进行帧间预测的,并且MVc可以参考参考图片列表0。 f.在一个示例中,当前块是利用单向预测进行帧间预测的,并且MVc可以参考参考图片列表1。 g.在一个示例中,当前块是利用双向预测进行帧间预测的,并且MVc可以参考参考图片列表0或参考图片列表1。 i.在一个示例中,最终预测通过光流进行细化。可以利用参考图片列表(诸如,参考图片列表0或参考图片列表1)之一的MVc来推导(Vx(x,y),Vy(x,y))。 ii.在一个示例中,来自参考列表0的预测通过光流进行细化。可以利用参考参考列表0的MVc来推导(Vx(x,y),Vy(x,y))。 iii.在一个示例中,来自参考列表1的预测通过光流进行细化。可以利用参考参考列表1的MVc来推导(Vx(x,y),Vy(x,y))。 iv.通过光流进行细化之后的来自参考列表0的预测和独立地通过光流进行细化之后的来自参考列表1的预测可以被组合(例如,平均或加权平均),以得到最终预测。 h.在一个示例中,当前块是利用双向预测进行帧间预测的,并且BDOF被应用,其中Vx(x,y)、Vy(x,y)根据空域或时域邻近块而修改。 i.例如,假设在BDOF过程中推导的(Vx(x,y),Vy(x,y))被表示为V’(x,y)=(V’x(x,y),V’y(x,y)),用所公开的方法推导的(Vx(x,y),Vy(x,y))被表示为V”(x,y)=(V”x(x,y),V”y(x,y)),然后最终的V(x,y)=(Vx(x,y),Vy(x,y))可以被推导为: (i)例如,V(x,y)=V’(x,y)×W’(x,y)+V”(x,y)×W”(x,y),其中W’(x,y)和W”(x,y)是整数或实数。例如,W’(x,y)=0,W”(x,y)=1,或者W’(x,y)=1,W”(x,y)=0,或者W’(x,y)=0.5,W”(x,y)=0.5。 (ii)例如V(x,y)=Shift(V’(x,y)×W’(x,y)+V”(x,y)×W”(x,y),n1),其中W’(x,y)和W”(x,y)是整数。n1是非负整数,诸如1。 (iii)例如,V(x,y)=SatShift(V’(x,y)×W’(x,y)+V”(x,y)×W”(x,y),n1),其中W’(x,y)和W”(x,y)是整数。n1是非负整数,诸如1。 ii.例如,是否根据空域或时域邻近块来修改BDOF中的(Vx(x,y),Vy(x,y))可以取决于位置(x,y)。 (i)例如,图26中的阴影基本块(它们不在顶部和左侧边界处)中的(Vx(x,y),Vy(x,y))将不根据空域或时域邻近块进行修改。 i.Vx(x,y)和/或Vy(x,y)可以被裁剪。 j.可替代地,上面公开的方法中的空域或时域邻近块可以被当前块的非相邻块替换。 k.可替代地,上面公开的方法中的空域或时域邻近块可以被当前子块的非相邻子块替换。 l.可替代地,上面公开的方法中的空域或时域邻近块可以被覆盖当前子块的当前块/当前CTU/当前VPDU/当前区域的非相邻子块替换。 m.可替代地,上面公开的方法中的空域或时域邻近块可以被基于历史的运动矢量中的条目替换。 3.提出在JVET-N0236中公开的利用光流对仿射预测的细化中的Vx(x,y)和/或Vy(x,y)可以被推导为: a.Vx(x,y)=a×(x-xc)+b×(y-yc),Vy(x,y)=c×(x-xc)+d×(y-yc),其中,(x,y)是所考虑的位置,(xc,yc)是覆盖位置(x,y)的大小为w×h(例如,4×4或者8×8)的基本块的中心位置,其中a、b、c和d是仿射参数。 i.可替代地,Vx(x,y)=Shift(a×(x-xc)+b×(y-yc),n1),Vy(x,y)=Shift(c×(x-xc)+d×(y-yc),n1),其中n1是整数。 ii.可替代地,Vx(x,y)=SatShift(a×(x-xc)+b×(y-yc),n1),Vy(x,y)=SatShift(c×(x-xc)+d×(y-yc),n1),其中n1是整数。 iii.例如,假设覆盖位置(x,y)的基本块(例如,4×4或8×8)的左上方位置为(x0,y0),则(xc,yc)=(x0+(w/2),y0+(h/2))。 (i)可替代地,(xc,yc)=(x0+(w/2)-1,y0+(h/2)-1)。 (ii)可替代地,(xc,yc)=(x0+(w/2),y0+(h/2)-1)。 (iii)可替代地,(xc,yc)=(x0+(w/2)-1,y0+(h/2))。 iv.在一个示例中,如果当前块应用4参数仿射模式,则c=-b并且d=a。 v.在一个示例中,可以从CPMV以及当前块的宽度(W)和高度(H)推导a、b、c和d。例如, vi.a、b、c和d可以被裁剪; vii.a、b、c和d可以被移位。 viii.在一个示例中,a、b、c和d可以从邻近块的存储中获得,如在PCT/CN2018/111176中所公开的,其通过引用并入本文。 ix.在一个示例中,a、b、c和d可以从基于历史的存储中获得,如在PCT/CN2019/075867中所公开的,其通过引用并入本文。 x.可替代地,Vx(x,y)=-a×(x-xc)-b×(y-yc),Vy(x,y)=-c×(x-xc)-d×(y-yc)。 b.在一个示例中,Vx(x+1,y)=Vx(x,y)+a并且Vy(x+1,y)=Vy(x,y)+c。 i.可替代地,Vx(x+1,y)=Shift(Vx(x,y)+a,n1),Vy(x+1,y)=Shift(Vy(x,y)+c,n1),其中n1是整数。 ii.可替代地,Vx(x+1,y)=SatShift(Vx(x,y)+a,n1),Vy(x+1,y)=SatShift(Vy(x,y)+c,n1),其中n1是整数。 iii.可替代地,Vx(x+1,y)=Vx(x,y)+Shift(a,n1),Vy(x+1,y)=Vy(x,y)+Shift(c,n1),其中n1是整数。 iv.可替代地,Vx(x+1,y)=Vx(x,y)+SatShift(a,n1),Vy(x+1,y)=Vy(x,y)+SatShift(c,n1),其中n1是整数。 c.在一个示例中,Vx(x,y+1)=Vx(x,y)+b并且Vy(x+1,y)=Vy(x,y)+d。 i.可替代地,Vx(x,y+1)=Shift(Vx(x,y)+b,n1),Vy(x,y+1)=Shift(Vy(x,y)+d,n1),其中n1是整数。 ii.可替代地,Vx(x,y+1)=SatShift(Vx(x,y)+b,n1),Vy(x,y+1)=SatShift(Vy(x,y)+d,n1),其中n1是整数。 iii.可替代地,Vx(x,y+1)=Vx(x,y)+Shift(b,n1),Vy(x,y+1)=Vy(x,y)+Shift(d,n1),其中n1是整数。 iv.可替代地,Vx(x,y+1)=Vx(x,y)+SatShift(b,n1),Vy(x,y+1)=Vy(x,y)+SatShift(d,n1),其中n1是整数。 d.在一个示例中,如果当前块是利用双向预测进行仿射预测的,则{a,b,c,d}可以参考参考图片列表0或参考图片列表1。 i.在一个示例中,最终预测通过光流进行细化。可以利用参考参考图片列表(诸如,参考图片列表0或参考图片列表1)之一的{a,b,c,d}来推导(Vx(x,y),Vy(x,y))。利用(Vx(x,y),Vy(x,y))来细化最终预测样点。 ii.在一个示例中,来自参考列表0的预测通过光流进行细化。可以利用参考参考列表0的{a,b,c,d}来推导(Vx(x,y),Vy(x,y))。 iii.在一个示例中,来自参考列表1的预测通过光流进行细化。可以利用参考参考列表1的{a,b,c,d}来推导(Vx(x,y),Vy(x,y))。 iv.通过光流进行细化(例如,利用使用参考参考图片列表0的a、b、c和d推导的第一运动位移矢量(V e.Vx(x,y)、Vy(x,y)可以具有与MVc不同的精度。 i.在一个示例中,Vx(x,y)、Vy(x,y)可以具有1/8像素精度。 ii.在一个示例中,Vx(x,y)、Vy(x,y)可以具有1/16像素精度。 iii.在一个示例中,Vx(x,y)、Vy(x,y)可以具有1/32像素精度。 iv.在一个示例中,Vx(x,y)、Vy(x,y)可以具有1/64像素精度。 v.在一个示例中,Vx(x,y)、Vy(x,y)可以具有1/128像素精度。 f.Vx(x,y)、Vy(x,y)可以具有浮点像素精度。 4.提出可以根据最终预测来推导基于光流的方法中(诸如在JVET-N0236中公开的利用光流对仿射预测的细化中)的表示为G(x,y)(例如,Gx(x,y)或/和Gy(x,y))的梯度,其中该最终预测将与残差样点值相加以得到重构样点值。 i.可替代地,可以根据中间预测来推导G(x,y),该中间预测将用于推导最终预测。 (i)例如,如果当前块是利用双向预测进行仿射预测的,则可以根据来自一个参考图片列表的预测来推导G(x,y); (ii)例如,当当前块使用仿射模式和LIC两者时,可以根据在应用局部照明补偿(LIC)之前的帧间预测来推导G(x,y); (iii)例如,当当前块使用仿射模式以及加权预测或广义双向预测(GBi)或具有CU级别权重的双向预测(Bi-predictionwith CU-level Weights BCW)两者时,可以根据在乘以加权因子之前的帧间预测来推导G(x,y); (iv)例如,当当前块使用仿射模式和LIC两者时,可以根据应用了局部照明补偿(LIC)的帧间预测来推导G(x,y); (v)例如,当当前块使用仿射模式以及加权预测或广义双向预测(GBi)或具有CU级别权重的双向预测(BCW)两者时,可以根据乘以加权因子的帧间预测来推导G(x,y); 5.提出仿射编解码块中的位置(x,y)处的重构样点Rec(x,y)可以被细化为Rec’(x,y)=Rec(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。Rec’(x,y)将用于替换重构的Rec(x,y)。(Gx(x,y),Gy(x,y))表示位置(x,y)处的梯度,诸如分别沿水平方向和垂直方向。(Vx(x,y),Vy(x,y))可以利用在JVET-N0236中提出的方法或在本文档中公开的方法来推导。 a.在一个示例中,根据重构样点来推导(Gx(x,y),Gy(x,y))。 b.在一个示例中,可以在2*2块级别推导Vx(x,y)和Vy(x,y)。 6.可以在子块级别推导V(x,y),即Vx(x,y)和Vy(x,y),并且可以在子块级别执行基于光流的细化。 a.在一个示例中,可以在2*2块级别推导Vx(x,y)和Vy(x,y)。 b.在一个示例中,可以在4*1块级别推导Vx(x,y)和Vy(x,y)。 7.在PROF中,可以仅使用Vx(x,y)或Vy(x,y)。 a.在一个示例中,Vx(x,y)用于PROF,并且Vy(x,y)被假设为零。 b.在一个示例中,Vy(x,y)用于PROF,并且Vx(x,y)被假设为零。 c.在一个示例中,在RPOF中使用Vx(x,y)还是Vy(x,y)可以取决于仿射参数。 i.例如,如果Vx(x,y)的绝对值之和大于或等于Vy(x,y)的绝对值之和,则Vx(x,y)可以用于PROF,并且Vy(x,y)可以被假设为零。 ii.例如,如果Vx(x,y)的绝对值之和小于或等于Vy(x,y)的绝对值之和,则Vy(x,y)可以用于PROF,并且Vx(x,y)可以被假设为零。 iii.例如,如果绝对水平梯度之和大于或等于绝对垂直梯度之和,则Vx(x,y)可以用于PROF,并且Vy(x,y)可以被假设为零。 iv.例如,如果绝对水平梯度之和小于或等于绝对垂直梯度之和,则Vy(x,y)可以用于PROF,并且Vx(x,y)可以被假设为零。 8.在仿射模式下推导的运动矢量可以具有1/N像素精度,并且Vx(x,y)、Vy(x,y)可以具有1/M像素精度,其中N和M是正整数。 a.在一个示例中,N等于8并且M等于16。 b.在一个示例中,N等于8并且M等于32。 c.在一个示例中,N等于8并且M等于64。 d.在一个示例中,N等于8并且M等于128。 e.在一个示例中,N等于4并且M等于8。 f.在一个示例中,N等于4并且M等于16。 g.在一个示例中,N等于4并且M等于32。 h.在一个示例中,N等于4并且M等于64。 i.在一个示例中,N等于4并且M等于128。 9.在TMVP或/和SbTMVP中,可以为每个块或/和子块推导具有不同精度的两个MV集合(分别表示为MV1和MV2)。 a.在一个示例中,MV1可以具有1/N像素精度,并且MV2可以具有1/M像素精度,其中N和M是正整数。 b.可以采用在项目符号8中描述的N和M。 c.在一个示例中,N等于16并且M等于32。 d.在一个示例中,N等于16并且M等于64。 e.在一个示例中,N等于16并且M等于128。 f.可以对每个块或/和子块应用基于光流的细化,其中MV1作为 MVc,并且MV2-MV1作为V(x,y)。 10.对于具有1/M像素精度的运动矢量MV,在用于运动补偿之前,它可以取整为1/N像素精度(表示为MvR),然后Mv和取整后的MV MvR之间的增量(delta)MV用于执行PROF并生成最终预测样点。 a.在一个示例中,M是16并且N是1。 b.在一个示例中,M是8并且N是1。 c.在一个示例中,M是4并且N是1。 d.在一个示例中,M是16并且N是2。 e.在一个示例中,M是8并且N是2。 f.在一个示例中,M是4并且N是2。 g.在一个示例中,Mv可以仅在水平或垂直方向上被取整为1/N像素精度,并且相应地,PROF可以在水平或垂直方向上被执行。 h.在一个示例中,对于双向预测块,该方法可以仅被应用于预测方向X上的运动矢量,其中X=0,1。 i.在一个示例中,对于双向预测块,该方法可以被应用于两个预测方向上的运动矢量。 j.在一个示例中,假设存在K1个分数MV分量(即,一个MV分量对应于一个水平或垂直MV),该方法可以被应用于分数MV分量中的K2个分数MV分量,其中K1>=0,K2>=0,K2<=K1。 11.在PCT/CN2019/072060或/和PCT/CN2018/109425中提出的运动矢量细化方法(在BDOF之上)中推导的运动矢量可以具有1/N MV精度。在示例实施例中,一种视频处理的方法包括:使用用于当前视频块的多步解码器侧运动矢量细化过程来确定最终运动矢量;以及使用最终运动矢量来执行当前块和比特流表示之间的转换。在一些实施例中,在多步细化过程中的第i步对细化值执行用于当前宏块的多步解码器侧运动矢量细化过程,其中i是整数。在一些实施例中,多步细化过程包括使用第(i-1)步的细化值用于生成第i步的细化值,其中i=1至N,其中N是在多步细化过程期间执行的细化步骤的总数,并且其中N大于1。 a.在一个示例中,N等于32。 b.在一个示例中,N等于64。 c.在一个示例中,N等于128。 d.当细化的MV用于执行运动补偿时,可以应用在项目符号10中描述的方法。 i.在一个示例中,细化的MV具有1/32像素精度,在用于运动补偿之前,它首先被取整为1/16像素精度,并且细化的MV和取整后的MV之间的增量MV用于执行PROF并生成最终预测样点。 ii.在一个示例中,细化的MV具有1/32像素精度,在用于运动补偿之前,它首先被取整为1像素精度,并且细化的MV和取整后的MV之间的增量MV用于执行PROF并生成最终预测样点。 iii.在一个示例中,细化的MV具有1/64像素精度,在用于运动补偿之前,它首先被取整为1/16像素精度,并且细化的MV和取整后的MV之间的增量MV用于执行PROF并生成最终预测样点。 iv.在一个示例中,细化的MV具有1/64像素精度,在用于运动补偿之前,它首先被取整为1像素精度,并且细化的MV和取整后的MV之间的增量MV用于执行PROF并生成最终预测样点。 12.提出包括在JVET-N0236中描述的方法的上述方法可以被应用于某种类型的块。 a.在一个示例中,该方法仅被应用于8x4块或子块; b.在一个示例中,该方法仅被应用于4x8块或子块; c.在一个示例中,该方法仅被应用于4x4单向预测块或子块; d.在一个示例中,该方法仅被应用于8x4、4x8和4x4单向预测块或子块。 e.在一个示例中,该方法被应用于除4x4双向预测块或子块之外的所有可能的块。 f.在一个示例中,该方法仅被应用于亮度块。 g.在一个示例中,是否应用该方法可以取决于 i.色彩分量; ii.块尺寸; iii.色彩格式; iv.块位置; v.运动类型; vi.运动矢量的幅度; vii.编解码模式; viii.像素梯度的幅度; ix.变换类型; x.是否应用了BIO xi.是否应用了双向预测; xii.是否应用了DMVR; 13.PROF可以被应用于在PCT/CN2019/071507中描述的交织预测,其通过引用被并入本文。在交织预测中,从给定块的两个不同的子块分割生成中间预测值,其中两个不同的子块分割是不同的,至少使得一个分割中的一些或所有子块具有与另一个分割上的一些或所有子块不同的尺寸。 a.在一个示例中,在仿射模式下编解码的块可以被划分为K个图案的子块。在图29中示出了K=2的示例。在第一图案中,执行运动补偿以生成每个子块的预测样点(表示为P(x,y))。在第L(1 i.在一个示例中,K等于2。 (i)在一个示例中,最终预测样点可以被生成为:P(x,y)+((O1(x,y)+1)>>1)。 (ii)在一个示例中,最终预测样点可以被生成为:P(x,y)+(O1(x,y)>>1)。 ii.在一个示例中,最终预测样点可以被生成为:P(x,y)+(O1(x,y)+…+OK(x,y)+K/2)/K。 iii.在一个示例中,最终预测样点可以被生成为:P(x,y)+(O1(x,y)+…+OK(x,y))/K。 b.在一个示例中,可以使用中间P(x,y)来推导OL(x,y)。 i.例如,可以使用在水平和垂直插值之后但是在将其转换为输入样点的相同比特深度之前生成的中间P(x,y)来推导OL(x,y)。 c.在一个示例中,可以为每个预测方向推导OL(x,y)。 d.在一个示例中,VL(x,y),即第L个图案中的V(x,y),可以被推导为MVL(x,y)-MV1(x,y)。 e.在一个示例中,MV1(x,y)可以具有1/N像素MV精度,并且MVL(x,y)可以具有1/ML像素MV精度。 i.在一个示例中,N等于16并且ML等于32。 ii.在一个示例中,N等于16并且ML等于64。 iii.在一个示例中,N等于16并且ML等于128。 iv.在一个示例中,N等于8并且ML等于16。 v.在一个示例中,N等于8并且ML等于32。 vi.在一个示例中,N等于8并且ML等于64。 vii.在一个示例中,N等于8并且ML等于128。 viii.在一个示例中,N等于4并且ML等于8。 ix.在一个示例中,N等于4并且ML等于16。 x.在一个示例中,N等于4并且ML等于32。 xi.在一个示例中,N等于4并且ML等于64。 xii.在一个示例中,N等于4并且ML等于128。 xiii.对于不同的L,ML可以不同。 14.基于光流的预测细化方法(简称PROF)可以与交织预测进行组合。 a.在一个示例中,交织预测可以首先被应用来生成一些中间预测块,并且PROF可以被进一步应用来细化那些中间预测块。可以根据细化的中间预测块来推导最终预测块。 b.在一个示例中,在仿射模式下编解码的块可以被划分为K个图案的子块。对于每个图案,可以执行运动补偿以生成每个子块的预测样点。然后,可以对每个图案进一步执行PROF,以更新图案的预测。最后,融合每个图案的预测样点(诸如在PCT/CN2018/089242、PCT/CN2018/103770、PCT/CN2018/104984、PCT/CN2019/070058、PCT/CN2019/071507、PCT/CN2019/071576中的任何一个或多个中描述的),以生成块的最终预测。在示例实施例中,一种用于改进视频系统中的基于块的运动预测的方法包括:从视频帧中选择像素集合以形成块;根据第一图案将块分割为子块的第一集合;基于子块的第一集合来生成第一中间预测块;根据第二图案将块分割为子块的第二集合,其中第二集合中的至少一个子块具有与第一集合中的子块不同的尺寸;基于子块的第二集合来生成第二中间预测块;以及基于第一中间预测块和第二中间预测块来确定预测块。在一些实施例中,确定预测块包括使用部分预测,其中预测样点的第一子集中国的样点被计算为第一中间预测块的加权组合,并且预测样点的第二子集中的样点从基于子块的预测复制,其中第一子集和第二子集基于划分图案。 c.在一个示例中,对于单向预测,PROF和交织预测可以被应用于一个块。 d.在一个示例中,对于双向预测,交织预测可以被禁用,而PROF可以被启用。 e.在一个示例中,当PROF和交织预测(命名为梳状模式(comb-mode))都被应用于一个块时,可以利用较短的抽头滤波器,诸如6抽头或双线性插值滤波器,其可以不同于用于对未以梳状模式编解码的其他块进行编解码的插值滤波器。 f.在一个示例中,当PROF和交织预测(命名为梳状模式)都被应用于一个块时,仿射子块尺寸可以被设置为8x4或4x8或其他。此外,可替代地,用于梳状模式的子块尺寸可以不同于用于对没有以梳状模式编解码的其他仿射编解码块进行编解码的子块尺寸。 g.可以根据编解码信息(诸如预测方向、参考图片信息、色彩分量等)来确定是否和/或如何应用PROF和交织预测。 15.PROF可以被应用于帧内预测 a.在一个示例中,在角度预测中,子像素位置参考样点通过PROF生成。这里,邻近的重构样点被认为是预测样点,并且子像素位置和整数像素位置之间的差被认为是V(x,y)。 i.在一个示例中,对于上侧或/和右上方线中的子像素位置,Vy(x,y)可以总是为零。 ii.在一个示例中,对于左侧或/和左下方列中的子像素位置,Vx(x,y)可以总是为零。 iii.在一个示例中,子像素位置可以具有1/N像素精度。 (i)例如,N可以等于32。 (ii)例如,N可以等于64。 (iii)例如,N可以等于128。 iv.在一个示例中,子像素位置可以具有浮动精度。 16.在一个示例中,PROF和交织预测可以以组合的方式应用。 a.例如,首先应用PROF,然后应用交织预测。 i.具有两个不同划分图案的预测可以首先通过PROF进行处理,然后它们可以被加权求和以得到最终预测(或者在另一个预测过程之前的中间预测)。 b.例如,首先应用交织预测,然后应用PROF。 i.具有两个不同划分图案的预测可以被加权求和以得到中间预测,然后对中间预测应用PROF以得到最终预测(或者在另一个预测过程之前的中间预测)。 17.在一个示例中,PAMC和交织预测可以以组合的方式被应用。 a.例如,首先应用PAMC,然后应用交织预测。 i.可以利用PAMC的插值方法来生成具有两个不同划分图案的预测,然后它们可以被加权求和以得到最终预测(或者在另一个预测过程之前的中间预测)。 b.例如,首先应用交织预测,然后应用PAMC。 18.在一个示例中,PROF和PAMC可以以组合的方式被应用。 a.例如,首先应用PAMC,然后应用PROF。 i.可以利用PAMC的插值方法来生成预测,然后它们通过PROF进行处理以得到最终预测(或在另一个预测过程之前的中间预测)。 b.例如,首先应用PROF,然后应用PAMC。 图27是视频处理装置2700的框图。装置2700可以用于实施本文描述的一个或多个方法。装置2700可以体现在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置2700可以包括一个或多个处理器2702、一个或多个存储器2704和视频处理硬件2706。(多个)处理器2702可以被配置为实施本文档中描述的一种或多种方法。存储器(多个存储器)604可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件606可以用于在硬件电路系统中实施本文档中描述的一些技术,并且可以部分或完全是处理器2702的一部分(例如,图形处理器核心GPU或其他信号处理电路系统)。 图28A是视频处理方法的示例的流程图。方法2800A包括:在视频块和视频块的比特流表示之间的转换期间,通过根据在视频块中的位置(x,y)处估计的第一方向和/或第二方向上的梯度以及针对位置(x,y)估计的第一运动位移和/或第二运动位移来修改位置(x,y)处的预测样点P(x,y),确定(2802)位置(x,y)处的细化预测样点P’(x,y),并且使用来自细化预测样点P’(x,y)的位置(x,y)处的重构样点值Rec(x,y)来执行(2804)该转换。 图28B是视频处理方法的示例的流程图。方法2800B包括:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定(2812)位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;以及使用基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行(2814)视频块和视频块的比特流表示之间的转换。 图28C是视频处理方法的示例的流程图。方法2800C包括:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定(2822)位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数;以及基于位置(x,y)处的重构样点值Rec(x,y),对视频块的比特流表示进行编码(2824)以包括残差样点值Res(x,y),其中该重构样点值Rec(x,y)至少基于细化预测样点P’(x,y)。 在方法2800B和/或2800C的一些实施例中,第一方向和第二方向彼此正交。在方法2800B和/或2800C的一些实施例中,第一运动位移表示平行于第一方向的方向,并且第二运动位移表示平行于第二方向的方向。在方法2800B和/或2800C的一些实施例中,P’(x,y)=P(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。在方法2800B和/或2800C的一些实施例中,P’(x,y)=α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,并且其中α(x,y)、β(x,y)和γ(x,y)是整数或实数。在方法2800B和/或2800C的一些实施例中,P’(x,y)=(α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y)+offsetP)/(α(x,y)+β(x,y)+γ(x,y)),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,并且其中α(x,y)、β(x,y)和γ(x,y)是整数或实数。在方法2800B和/或2800C的一些实施例中,offsetP等于0。在方法2800B和/或2800C的一些实施例中,P’(x,y)是使用二进制移位操作来获得的。 在方法2800B和/或2800C的一些实施例中,P’(x,y)=P(x,y)-Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。在方法2800B和/或2800C的一些实施例中,P’(x,y)=P(x,y)-Gx(x,y)×Vx(x,y)-Gy(x,y)×Vy(x,y)。在方法2800B和/或2800C的一些实施例中,P’(x,y)=P(x,y)+Gx(x,y)×Vx(x,y)-Gy(x,y)×Vy(x,y)。在方法2800B和/或2800C的一些实施例中,P’(x,y)=0.5×P(x,y)+0.25×Gx(x,y)×Vx(x,y)+0.25×Gy(x,y)×Vy(x,y)。在方法2800B和/或2800C的一些实施例中,P’(x,y)=0.5×P(x,y)+0.5×Gx(x,y)×Vx(x,y)+0.5×Gy(x,y)×Vy(x,y)。在方法2800B和/或2800C的一些实施例中,P’(x,y)=P(x,y)+0.5×Gx(x,y)×Vx(x,y)+0.5×Gy(x,y)×Vy(x,y)。在方法2800B和/或2800C的一些实施例中,P’(x,y)=Shift(α(x,y)×P(x,y),n1)+Shift(β(x,y)×Gx(x,y)×Vx(x,y),n2)+Shift(γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中Shift()函数指示二进制移位操作,其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其中α(x,y)、β(x,y)和γ(x,y)是整数,并且其中n1、n2、n3是非负整数。在方法2800B和/或2800C的一些实施例中,n1、n2、n3等于1。 在方法2800B和/或2800C的一些实施例中,P’(x,y)=SatShift(α(x,y)×P(x,y),n1)+SatShift(β(x,y)×Gx(x,y)×Vx(x,y),n2)+SatShift(γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中SatShift()函数指示饱和二进制移位操作,其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其中α(x,y)、β(x,y)和γ(x,y)是整数,并且其中n1、n2、n3是非负整数。在方法2800B和/或2800C的一些实施例中,n1、n2、n3等于1。在方法2800B和/或2800C的一些实施例中,P’(x,y)=Shift(α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),n1),其中SatShift()函数指示饱和二进制移位操作,其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其中α(x,y)、β(x,y)和γ(x,y)是整数,并且其中n1是非负整数。在方法2800B和/或2800C的一些实施例中,n1等于1。 在方法2800B和/或2800C的一些实施例中,P’(x,y)=SatShift(α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),n1),其中SatShift()函数指示饱和二进制移位操作,其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其中α(x,y)、β(x,y)和γ(x,y)是整数,并且其中n1是非负整数。在方法2800B和/或2800C的一些实施例中,n1等于1。在方法2800B和/或2800C的一些实施例中,P’(x,y)=α(x,y)×P(x,y)+Shift(β(x,y)×Gx(x,y)×Vx(x,y),n2)+Shift(γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中Shift()函数指示二进制移位操作,其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其中α(x,y)、β(x,y)和γ(x,y)是整数,并且其中n2和n3是非负整数。在方法2800B和/或2800C的一些实施例中,n2和n3等于1。 在方法2800B和/或2800C的一些实施例中,P’(x,y)=α(x,y)×P(x,y)+SatShift(β(x,y)×Gx(x,y)×Vx(x,y),n2)+SatShift(γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中SatShift()函数指示饱和二进制移位操作,其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其中α(x,y)、β(x,y)和γ(x,y)是整数,并且其中n2和n3是非负整数。在方法2800B和/或2800C的一些实施例中,n2和n3等于1。在方法2800B和/或2800C的一些实施例中,P’(x,y)=α(x,y)×P(x,y)+Shift(β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中Shift()函数指示二进制移位操作,其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其中α(x,y)、β(x,y)和γ(x,y)是整数,并且其中n3是非负整数。在方法2800B和/或2800C的一些实施例中,n3等于1。 在方法2800B和/或2800C的一些实施例中,P’(x,y)=α(x,y)×P(x,y)+SatShift(β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),n3),其中SatShift()函数指示饱和二进制移位操作,其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,其中α(x,y)、β(x,y)和γ(x,y)是整数,并且其中n3是非负整数。在方法2800B和/或2800C的一些实施例中,n3等于1。在方法2800B和/或2800C的一些实施例中,1-4,其中P’(x,y)=f0(P(x,y))+f1(Gx(x,y)×Vx(x,y))+f2(Gy(x,y)×Vy(x,y)),并且其中f0()、f1()和f2()是三个函数。在方法2800B和/或2800C的一些实施例中,第一梯度分量Gx(x,y)和第二梯度分量Gy(x,y)是利用第二预测样点P(x1,y1)来计算的,其中x1属于第一范围[x-Bx0,x+Bx1],并且y1属于第二范围[y-By0,y+By1],其中Bx0和By0是整数,并且其中Bx1和By1是整数。 在方法2800B和/或2800C的一些实施例中,第一梯度分量Gx(x,y)=P(x+1,y)-P(x-1,y),并且第二梯度分量Gy(x,y)=P(x,y+1)-P(x,y-1)。在方法2800B和/或2800C的一些实施例中,第一梯度分量Gx(x,y)=Shift(P(x+1,y)-P(x-1,y),n1),并且第二梯度分量Gy(x,y)=Shift(P(x,y+1)-P(x,y-1),n2),其中Shift()函数指示二进制移位操作。在方法2800B和/或2800C的一些实施例中,第一梯度分量Gx(x,y)=SatShift(P(x+1,y)-P(x-1,y),n1),并且第二梯度分量Gy(x,y)=SatShift(P(x,y+1)-P(x,y-1),n2),其中SatShift()函数指示饱和二进制移位操作。在方法2800B和/或2800C的一些实施例中,n1和n2等于1。在方法2800B和/或2800C的一些实施例中,预测样点P(x,y)是位置(x,y)处的单向预测样点。在方法2800B和/或2800C的一些实施例中,预测样点P(x,y)是双向预测的最终结果。 在方法2800B和/或2800C的一些实施例中,Vx(x,y)和Vy(x,y)是使用双向光流(BIO)技术来推导的。在方法2800B和/或2800C的一些实施例中,预测样点P(x,y)满足以下任何一个:多假设帧间预测技术的结果;仿射预测技术的结果;帧内预测技术的结果;帧内块复制(IBC)预测技术的结果;通过三角形预测模式(TPM)技术生成;通过地理预测模式(GPM)技术生成;帧间-帧内组合预测技术的结果;全局帧间预测技术的结果,其中全局帧间预测技术包括共享相同的运动模型和参数的区域;调色板编解码模式的结果;多视图或3D视频编解码中的帧间视图预测的结果;可缩放视频编解码中的帧间层预测的结果;以及在确定细化预测样点P’(x,y)之前的滤波操作的结果。 在方法2800B和/或2800C的一些实施例中,当不应用细化过程时,预测样点P(x,y)是最终预测样点值,并且重构样点值Rec(x,y)是通过将预测样点P(x,y)与残差样点值Res(x,y)相加而获得的。在方法2800B和/或2800C的一些实施例中,当应用细化过程时,从预测样点P(x,y)细化的细化预测样点P’(x,y)是最终预测样点值,并且重构样点值Rec(x,y)是通过将细化预测样点P’(x,y)与残差样点值Res(x,y)相加而获得的。在方法2800B和/或2800C的一些实施例中,双向预测技术或多假设预测技术被应用于视频块或视频块的子块,并且第一梯度分量、第二梯度分量、第一运动位移和第二运动位移被应用于最终预测样点值一次。 在方法2800B和/或2800C的一些实施例中,双向预测技术或多假设预测技术被应用于视频块或视频块的子块,其中第一梯度分量、第二梯度分量、第一运动位移和第二运动位移被多次应用于视频块的预测块,以获得第一梯度分量、第二梯度分量、第一运动位移和第二运动位移的多个集合,并且其中更新的预测块通过基于细化预测样点P’(x,y)来更新每个预测块而获得,并且其中视频块的最终预测块使用更新的预测块来生成。在方法2800B和/或2800C的一些实施例中,第一集合包括应用于第一预测块的一个位置处的第一梯度分量、第二梯度分量、第一运动位移或第二运动位移中的至少一个,其中该至少一个不同于第二集合中的、应用于第二预测块的同一个位置处的第一梯度分量、第二梯度分量、第一运动位移或第二运动位移中的对应的至少一个。 在方法2800B和/或2800C的一些实施例中,预测样点P(x,y)是中间预测样点值,其中要利用该中间预测样点值来推导最终预测样点值。在方法2800B和/或2800C的一些实施例中,响应于视频块是使用双向预测技术进行帧间预测的,预测样点P(x,y)是来自一个参考图片列表的预测样点。在方法2800B和/或2800C的一些实施例中,响应于视频块是使用三角形预测模式(TPM)技术进行帧间预测的,预测样点P(x,y)是来自一个参考图片列表的预测样点。在方法2800B和/或2800C的一些实施例中,响应于视频块是使用几何分割模式(Geometric Partitioning Mode,GPM)技术进行帧间预测的,预测样点P(x,y)是来自一个参考图片列表的预测样点。在方法2800B和/或2800C的一些实施例中,响应于视频块是使用多假设预测技术进行帧间预测的,预测样点P(x,y)是来自一个参考图片的预测样点。 在方法2800B和/或2800C的一些实施例中,预测样点P(x,y)是被帧间-帧间组合预测的视频块的帧间预测样点。在方法2800B和/或2800C的一些实施例中,预测样点P(x,y)是在局部照明补偿(LIC)技术被应用于视频块之前的帧间预测样点,其中视频块使用LIC技术。在方法2800B和/或2800C的一些实施例中,预测样点P(x,y)是在解码器侧运动矢量细化(DMVR)技术或解码器侧运动矢量推导(DMVD)技术被应用于视频块之前的帧间预测样点,其中视频块使用DMVR技术或DMVD技术。在方法2800B和/或2800C的一些实施例中,预测样点P(x,y)是在加权因子相乘之前的帧间预测样点,其中视频块使用加权预测技术或广义双向预测(GBi)技术。 在方法2800B和/或2800C的一些实施例中,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是根据最终预测样点值而推导的,其中当不应用细化过程时,最终预测样点值被加到残差样点值Res(x,y)以获得重构样点值Rec(x,y)。在方法2800B和/或2800C的一些实施例中,最终预测样点值是预测样点P(x,y)。在方法2800B和/或2800C的一些实施例中,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是根据中间预测样点值而推导的,其中要利用该中间预测样点值来推导最终预测样点值。在方法2800B和/或2800C的一些实施例中,响应于视频块是使用双向预测技术进行帧间预测的,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是从来自一个参考图片列表的预测样点推导的。 在方法2800B和/或2800C的一些实施例中,响应于视频块是使用三角形预测模式(TPM)技术进行帧间预测的,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是从一个参考图片列表推导的。在方法2800B和/或2800C的一些实施例中,响应于视频块是使用几何预测模式(Geometric Prediction Mode,GPM)技术进行帧间预测的,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是从一个参考图片列表推导的。在方法2800B和/或2800C的一些实施例中,响应于视频块是使用多假设预测技术进行帧间预测的,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是从一个参考图片推导的。在方法2800B和/或2800C的一些实施例中,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是从被帧间-帧间组合预测的视频块的帧间预测样点推导的。 在方法2800B和/或2800C的一些实施例中,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是从在局部照明补偿(LIC)技术被应用于视频块之前的帧间预测样点推导的,其中视频块使用LIC技术。在方法2800B和/或2800C的一些实施例中,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是从在解码器侧运动矢量细化(DMVR)技术或解码器侧运动矢量推导(DMVD)技术被应用于视频块之前的帧间预测样点推导的,其中视频块使用DMVR技术或DMVD技术。在方法2800B和/或2800C的一些实施例中,第一方向上的第一梯度分量和/或第二方向上的第二梯度分量是从在加权因子相乘之前的帧间预测样点推导的,其中视频块使用加权预测技术或广义双向预测(GBi)技术。 在方法2800B和/或2800C的一些实施例中,细化预测样点P’(x,y)被进一步修改,以得到最终预测样点值。在方法2800B和/或2800C的一些实施例中,第一方向上的第一梯度分量被表示为Gx(x,y),第二方向上的第二梯度分量被表示为Gy(x,y),第一运动位移被表示为Vx(x,y),并且第二运动位移被表示为Vy(x,y),其中位置(x,y)处的重构样点值Rec(x,y)被细化的重构样点值Rec’(x,y)替换,并且其中Rec’(x,y)=Rec(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。在方法2800B和/或2800C的一些实施例中,第一梯度分量Gx(x,y)和第二梯度分量Gy(x,y)是基于重构样点值而推导的。 在方法2800B和/或2800C的一些实施例中,其中,该方法还包括基于至少来自视频块的空域邻近视频块或至少来自相对于视频块的时间位于时间上的时域邻近视频块的信息,确定视频块中的位置(x,y)处的第一运动位移Vx(x,y)和位置(x,y)处的第二运动位移Vy(x,y)。在方法2800B和/或2800C的一些实施例中,空域邻近视频块位于与视频块相邻,并且时域邻近视频块在时间上位于与视频块的时间相邻。在方法2800B和/或2800C的一些实施例中,第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是至少基于视频块的空域邻近视频块或至少基于相对于视频块的时间位于时间上的时域邻近视频块来使用双向光流(BIO)技术确定的。 在方法2800B和/或2800C的一些实施例中,来自空域邻近视频块或来自时域邻近视频块的信息包括运动信息、编解码模式、邻近编解码单元(CU)大小或邻近CU位置。在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于MVMix,其中该MVMix等于Wc(x,y)×MVc+WN1(x,y)×MVN1+WN2(x,y)×MVN2+…+WNk(x,y)×MVNk,其中MVc是视频块的运动矢量,其中MVN1…MVNk是k个空域邻近视频块或时域邻近视频块的运动矢量,其中N1…Nk是空域邻近视频块或时域邻近视频块,并且其中Wc、WN1…WNk是作为整数或实数的加权值。 在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于MVMix,其中该MVMix等于Shift(Wc(x,y)×MVc+WN1(x,y)×MVN1+WN2(x,y)×MVN2+…+WNk(x,y)×MVNk,n1),其中Shift()函数指示二进制移位操作,其中MVc是视频块的运动矢量,其中MVN1…MVNk是k个空域邻近视频块或时域邻近视频块的运动矢量,其中N1…Nk是空域邻近视频块或时域邻近视频块,其中Wc、WN1…WNk是作为整数或实数的加权值,并且其中n1是整数。在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于MVMix,其中该MVMix等于SatShift(Wc(x,y)×MVc+WN1(x,y)×MVN1+WN2(x,y)×MVN2+…+WNk(x,y)×MVNk,n1),其中SatShift()函数指示饱和二进制移位操作,其中MVc是视频块的运动矢量,其中MVN1…MVNk是k个空域邻近视频块或时域邻近视频块的运动矢量,其中N1…Nk是空域邻近视频块或时域邻近视频块,其中Wc、WN1…WNk是作为整数或实数的加权值,并且其中n1是整数。 在方法2800B和/或2800C的一些实施例中,Wc(x,y)等于零。在方法2800B和/或2800C的一些实施例中,k等于1,并且N1是空域邻近视频块。在方法2800B和/或2800C的一些实施例中,N1是在位置上最靠近视频块中的位置(x,y)的空域邻近视频块。在方法2800B和/或2800C的一些实施例中,随着N1向视频块中的位置(x,y)移近,WN1(x,y)的值增大。在方法2800B和/或2800C的一些实施例中,k等于1,并且N1是时域邻近视频块。在方法2800B和/或2800C的一些实施例中,N1是视频块中的位置(x,y)的并置图片中的并置视频块。在方法2800B和/或2800C的一些实施例中,响应于预测样点不位于视频块的顶部边界或左侧边界处,基本视频块中的预测样点不被细化。 在方法2800B和/或2800C的一些实施例中,响应于预测样点位于视频块的顶部边界处,基本视频块中的预测样点被细化。在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于MVMix,其中位于视频块的顶部边界处的基本视频块的MVMix基于位于视频块上方的相邻的邻近视频块而推导。在方法2800B和/或2800C的一些实施例中,响应于预测样点位于视频块的左侧边界处,基本视频块中的预测样点被细化。在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于MVMix,其中位于视频块的左侧边界处的基本视频块的MVMix基于位于视频块的左侧的相邻的邻近视频块而推导。在方法2800B和/或2800C的一些实施例中,视频块的运动矢量以及多个空域邻近视频块或多个时域邻近视频块的运动矢量被缩放到相同的参考图片。 在方法2800B和/或2800C的一些实施例中,相同的参考图片是由视频块的运动矢量参考的参考图片。在方法2800B和/或2800C的一些实施例中,仅当空域邻近视频块或时域邻近视频块没有被帧内编解码时,空域邻近视频块或时域邻近视频块才用于推导(Vx(x,y),Vy(x,y))。在方法2800B和/或2800C的一些实施例中,仅当空域邻近视频块或时域邻近视频块没有被帧内块复制(IBC)预测编解码时,空域邻近视频块或时域邻近视频块才用于推导(Vx(x,y),Vy(x,y))。在方法2800B和/或2800C的一些实施例中,仅当空域邻近视频块或时域邻近视频块的第一运动矢量参考视频块的第二运动矢量的相同的参考图片时,空域邻近视频块或时域邻近视频块才用于推导(Vx(x,y),Vy(x,y))。 在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于f(MVMix,MVc),其中f是函数,并且其中MVc是视频块的运动矢量。在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于MVMix-MVc。在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于MVc-MVMix。在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于p×MVMix+q×MVc,其中p和q是实数。在方法2800B和/或2800C的一些实施例中,(Vx(x,y),Vy(x,y))等于Shift(p×MVMix+q×MVc,n)或SatShift(p×MVMix+p×MVc,n),其中p、q和n是整数,其中Shift()函数指示二进制移位操作,并且其中SatShift()函数指示饱和二进制移位操作。在方法2800B和/或2800C的一些实施例中,视频块是利用单向预测进行帧间预测的,并且其中视频块的运动矢量参考参考图片列表0。在方法2800B和/或2800C的一些实施例中,视频块是利用单向预测进行帧间预测的,并且其中视频块的运动矢量参考参考图片列表1。 在方法2800B和/或2800C的一些实施例中,视频块是利用双向预测技术进行帧间预测的,并且其中视频块的运动矢量参考参考图片列表0或参考图片列表1。在方法2800B和/或2800C的一些实施例中,最终预测样点值基于第一运动位移Vx(x,y)和第二运动位移Vy(x,y)而细化,其中该第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是从参考参考图片列表0或参考图片列表1的视频块的运动矢量推导的。在方法2800B和/或2800C的一些实施例中,来自参考图片列表0的第一预测样点值基于第一运动位移Vx(x,y)和第二运动位移Vy(x,y)而细化,其中该第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是从参考参考图片列表0的运动矢量推导的。在方法2800B和/或2800C的一些实施例中,来自参考图片列表1的第二预测样点值基于第一运动位移Vx(x,y)和第二运动位移Vy(x,y)而细化,其中该第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是从参考参考图片列表1的运动矢量推导的。 在方法2800B和/或2800C的一些实施例中,从参考图片列表0细化的第一预测样点值和从参考图片列表1细化的第二第一预测样点值用于推导最终预测样点值。在方法2800B和/或2800C的一些实施例中,最终预测样点值等于从参考图片列表0细化的第一预测样点值和从参考图片列表1细化的第二预测样点值的平均值或加权平均值。在方法2800B和/或2800C的一些实施例中,视频块是利用双向预测技术进行帧间预测的,其中双向光流(BIO)技术被应用于视频块,并且其中第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是基于空域邻近视频块或时域邻近视频块而修改的。 在方法2800B和/或2800C的一些实施例中,第一运动位移矢量V’(x,y)=(V’x(x,y),V’y(x,y))根据BIO技术进行推导,其中使用除BIO技术之外的方法推导的第二运动位移矢量被表示为V”(x,y)=(V”x(x,y),V”y(x,y)),其中第三运动位移矢量V(x,y)=(Vx(x,y),Vy(x,y))根据运动位移矢量的第一集合和运动位移矢量的第二集合而获得,其中第三运动位移矢量V(x,y)用于对预测样点P(x,y)进行细化。在方法2800B和/或2800C的一些实施例中,运动位移矢量的第三集合是使用以下等式来获得的:V(x,y)=V’(x,y)×W’(x,y)+V”(x,y)×W”(x,y),其中W’(x,y)和W”(x,y)是整数或实数。在方法2800B和/或2800C的一些实施例中,运动位移矢量的第三集合是使用以下等式来获得的:V(x,y)=Shift(V’(x,y)×W’(x,y)+V”(x,y)×W”(x,y),n1),其中Shift()函数指示二进制移位操作,并且其中W’(x,y)和W”(x,y)是整数,并且n1是非负整数。 在方法2800B和/或2800C的一些实施例中,运动位移矢量的第三集合是使用以下等式来获得的:V(x,y)=SatShift(V’(x,y)×W’(x,y)+V”(x,y)×W”(x,y),n1),其中SatShift()函数指示饱和二进制移位操作,并且其中W’(x,y)和W”(x,y)是整数,并且n1是非负整数。在方法2800B和/或2800C的一些实施例中,第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是基于空域邻近视频块或时域邻近视频块并且基于位置(x,y)而修改的。在方法2800B和/或2800C的一些实施例中,不位于视频块的顶部边界或视频块的左侧边界处的第一运动位移Vx(x,y)和第二运动位移Vy(x,y)不被修改。在方法2800B和/或2800C的一些实施例中,第一运动位移Vx(x,y)和第二运动位移Vy(x,y)被裁剪。 在方法2800B和/或2800C的一些实施例中,空域邻近视频块或时域邻近视频块是视频块的非相邻视频块。在方法2800B和/或2800C的一些实施例中,空域邻近视频块或时域邻近视频块是视频块的非相邻子块。在方法2800B和/或2800C的一些实施例中,空域邻近视频块或时域邻近视频块是覆盖子块的视频块或编解码树单元(CTU)或视频处理和分发单元(VPDU)或当前区域中的任何一个的非相邻子块。在方法2800B和/或2800C的一些实施例中,空域邻近视频块或时域邻近视频块的运动矢量包括基于历史的运动矢量中的条目。在方法2800B和/或2800C的一些实施例中,在解码器侧确定第一运动位移和第二运动位移包括通过解析视频块的比特流表示来确定与第一运动位移和第二运动位移相关联的信息的存在。 在方法2800B和/或2800C的一些实施例中,第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是在视频块的子块级别推导的。在方法2800B和/或2800C的一些实施例中,第一运动位移和第二运动位移是在2*2块级别推导的。在方法2800B和/或2800C的一些实施例中,第一运动位移和第二运动位移是在4*1块级别推导的。在方法2800B和/或2800C的一些实施例中,视频块是8x4视频块,或者子块是8x4子块。在方法2800B和/或2800C的一些实施例中,视频块是4x8视频块,或者子块是4x8子块。在方法2800B和/或2800C的一些实施例中,视频块是4x4单向预测视频块,或者子块是4x4单向预测子块。在方法2800B和/或2800C的一些实施例中,视频块是8x4、4x8和4x4单向预测视频块,或者子块是8x4、4x8和4x4单向预测子块。 在方法2800B和/或2800C的一些实施例中,视频块不包括4x4双向预测视频块,或者子块不包括4x4双向预测子块。在方法2800B和/或2800C的一些实施例中,视频块是亮度视频块。在方法2800B和/或2800C的一些实施例中,该确定和该执行是基于以下中的任何一个或多个而执行的:视频块的色彩分量、视频块的块尺寸、视频块的色彩格式、视频块的块位置、运动类型、运动矢量的幅度、编解码模式、像素梯度的幅度、变换类型、是否应用双向光流(BIO)技术、是否应用双向预测技术、以及是否应用解码器侧运动矢量细化(DMVR)方法。 图28D是视频处理方法的示例的流程图。方法2800D包括:确定(2832)使用基于光流的方法编解码的视频块中的位置(x,y)处的第一运动位移Vx(x,y)和位置(x,y)处的第二运动位移Vy(x,y),其中x和y是分数,其中Vx(x,y)和Vy(x,y)是至少基于位置(x,y)和视频块的基本视频块的中心位置而确定的;以及使用第一运动位移和第二运动位移来执行(2834)视频块和当前视频块的比特流表示之间的转换。 在方法2800D的一些实施例中,Vx(x,y)=a×(x-xc)+b×(y-yc),其中Vy(x,y)=c×(x-xc)+d×(y-yc),其中(xc,yc)是视频块的基本视频块的中心位置,其中a、b、c和d是仿射参数,其中基本视频块具有大小w×h,并且其中基本视频块的位置包括位置(x,y)。在方法2800D的一些实施例中,Vx(x,y)=Shift(a×(x-xc)+b×(y-yc),n1),其中Vy(x,y)=Shift(c×(x-xc)+d×(y-yc),n1),其中(xc,yc)是视频块的基本视频块的中心位置,其中a、b、c和d是仿射参数,其中基本视频块具有大小w×h,其中基本视频块的位置包括位置(x,y),其中Shift()函数指示二进制移位操作,并且其中n1是整数。在方法2800D的一些实施例中,Vx(x,y)=SatShift(a×(x-xc)+b×(y-yc),n1),其中Vy(x,y)=SatShift(c×(x-xc)+d×(y-yc),n1),其中(xc,yc)是视频块的基本视频块的中心位置,其中a、b、c和d是仿射参数,其中基本视频块具有大小w×h,其中基本视频块的位置包括位置(x,y),其中SatShift()函数指示饱和二进制移位操作,并且其中n1是整数。 在方法2800D的一些实施例中,Vx(x,y)=-a×(x-xc)-b×(y-yc),其中Vy(x,y)=-c×(x-xc)-d×(y-yc),其中(xc,yc)是视频块的基本视频块的中心位置,其中a、b、c和d是仿射参数,其中基本视频块具有大小w×h,并且其中基本视频块的位置包括位置(x,y)。在方法2800D的一些实施例中,(xc,yc)=(x0+(w/2),y0+(h/2)),并且其中基本视频块的左上方位置为(x0,y0)。在方法2800D的一些实施例中,(xc,yc)=(x0+(w/2)-1,y0+(h/2)-1),并且其中基本视频块的左上方位置为(x0,y0)。在方法2800D的一些实施例中,(xc,yc)=(x0+(w/2),y0+(h/2)-1),并且其中基本视频块的左上方位置为(x0,y0)。 在方法2800D的一些实施例中,(xc,yc)=(x0+(w/2)-1,y0+(h/2))),并且其中基本视频块的左上方位置为(x0,y0)。在方法2800D的一些实施例中,响应于视频块是使用4参数仿射模式进行编解码的,c=-b并且d=a。在方法2800D的一些实施例中,a、b、c和d可以从控制点运动矢量(CPMV)、视频块的宽度(W)和视频块的高度(H)进行推导。在方法2800D的一些实施例中, 在方法2800D的一些实施例中,a、b、c和d可以从基于历史的存储信息中获得。在方法2800D的一些实施例中,Vx(x+1,y)=Vx(x,y)+a,并且其中Vy(x+1,y)=Vy(x,y)+c。在方法2800D的一些实施例中,Vx(x+1,y)=Shift(Vx(x,y)+a,n1),其中Vy(x+1,y)=Shift(Vy(x,y)+c,n1),其中Shift()函数指示二进制移位操作,并且其中n1是整数。在方法2800D的一些实施例中,Vx(x+1,y)=SatShift(Vx(x,y)+a,n1),其中Vy(x+1,y)=SatShift(Vy(x,y)+c,n1),其中SatShift()函数指示饱和二进制移位操作,并且其中n1是整数。在方法2800D的一些实施例中,Vx(x+1,y)=Vx(x,y)+Shift(a,n1),其中Vy(x+1,y)=Vy(x,y)+Shift(c,n1),其中Shift()函数指示二进制移位操作,并且其中n1是整数。 在方法2800D的一些实施例中,Vx(x+1,y)=Vx(x,y)+SatShift(a,n1),其中Vy(x+1,y)=Vy(x,y)+SatShift(c,n1),其中SatShift()函数指示饱和二进制移位操作,并且其中n1是整数。在方法2800D的一些实施例中,Vx(x,y+1)=Vx(x,y)+b,并且其中Vy(x+1,y)=Vy(x,y)+d。在方法2800D的一些实施例中,Vx(x,y+1)=Shift(Vx(x,y)+b,n1),其中Vy(x,y+1)=Shift(Vy(x,y)+d,n1),其中Shift()函数指示二进制移位操作,并且其中n1是整数。在方法2800D的一些实施例中,Vx(x,y+1)=SatShift(Vx(x,y)+b,n1),其中Vy(x,y+1)=SatShift(Vy(x,y)+d,n1),其中SatShift()函数指示饱和二进制移位操作,并且其中n1是整数。在方法2800D的一些实施例中,Vx(x,y+1)=Vx(x,y)+Shift(b,n1),其中Vy(x,y+1)=Vy(x,y)+Shift(d,n1),其中Shift()函数指示二进制移位操作,并且其中n1是整数。 在方法2800D的一些实施例中,Vx(x,y+1)=Vx(x,y)+SatShift(b,n1),其中Vy(x,y+1)=Vy(x,y)+SatShift(d,n1),其中SatShift()函数指示饱和二进制移位操作,并且其中n1是整数。在方法2800D的一些实施例中,响应于视频块是利用双向预测技术进行仿射预测的,a、b、c和d参考参考图片列表0或参考图片列表1。在方法2800D的一些实施例中,最终预测样点利用第一运动位移Vx(x,y)和第二运动位移Vy(x,y)进行细化,并且其中第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是使用参考参考图片列表0和参考图片列表1中的任何一个的a、b、c和d来推导的。 在方法2800D的一些实施例中,第一运动位移Vx(x,y)和第二运动位移Vy(x,y)的预测样点来自参考图片列表0并且被细化,并且其中第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是使用参考参考图片列表0的a、b、c和d来推导的。在方法2800D的一些实施例中,第一运动位移Vx(x,y)和第二运动位移Vy(x,y)的预测样点来自参考图片列表1并且被细化,并且其中第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是使用参考参考图片列表1的a、b、c和d来推导的。在方法2800D的一些实施例中,来自参考图片列表0的第一预测样点利用使用参考参考图片列表0的a、b、c和d推导的第一运动位移矢量(V0x(x,y),V0y(x,y))进行细化,其中来自参考图片列表1的第二预测样点利用使用参考参考图片列表1的a、b、c和d推导的第二运动位移矢量(V1x(x,y),V1y(x,y))进行细化,并且其中最终预测样点通过组合第一预测样点和第二预测样点而获得。 在方法2800D的一些实施例中,运动位移矢量(Vx(x,y),Vy(x,y))具有与视频块的运动矢量的第二运动矢量精度不同的第一运动矢量精度。在方法2800D的一些实施例中,第一运动矢量精度是1/8像素精度。在方法2800D的一些实施例中,第一运动矢量精度是1/16像素精度。在方法2800D的一些实施例中,第一运动矢量精度是1/32像素精度。在方法2800D的一些实施例中,第一运动矢量精度是1/64像素精度。在方法2800D的一些实施例中,第一运动矢量精度是1/128像素精度。在方法2800D的一些实施例中,运动位移矢量(Vx(x,y),Vy(x,y))基于浮动像素精度技术而确定。 图28E是视频处理方法的示例的流程图。方法2800E包括:确定(2842)在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在视频块中的位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y),其中第一梯度分量和第二梯度分量基于位置(x,y)处的预测样点P(x,y)的最终预测样点值,并且其中x和y是整数;以及使用基于加到预测样点P(x,y)的最终预测样点值的残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行(2844)视频块和视频块的比特流表示之间的转换,其中该预测样点P(x,y)使用梯度(Gx(x,y),Gy(x,y))进行细化。 图28F是视频处理方法的示例的流程图。方法2800F包括:确定(2852)在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在视频块中的位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y),其中第一梯度分量和第二梯度分量基于位置(x,y)处的预测样点P(x,y)的最终预测样点值,并且其中x和y是整数;以及基于位置(x,y)处的重构样点值Rec(x,y),对视频块的比特流表示进行编码(2854)以包括残差样点值Res(x,y),其中重构样点值Rec(x,y)基于加到预测样点P(x,y)的最终预测样点值的残差样点值Res(x,y),其中该预测样点P(x,y)使用梯度(Gx(x,y),Gy(x,y))进行细化。 图28G是视频处理方法的示例的流程图。方法2800G包括:确定(2862)在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在视频块中的位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y),其中第一梯度分量和第二梯度分量基于位置(x,y)处的预测样点P(x,y)的中间预测样点值,其中预测样点P(x,y)的最终预测样点值基于中间预测样点值,并且其中x和y是整数;以及使用基于预测样点P(x,y)的最终预测样点值以及残差样点值Res(x,y)而获得的位置(x,y)处的重构样点值Rec(x,y)来执行(2864)视频块和视频块的比特流表示之间的转换。 图28H是视频处理方法的示例的流程图。方法2800H包括:确定(2872)在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在视频块中的位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y),其中第一梯度分量和第二梯度分量基于位置(x,y)处的预测样点P(x,y)的中间预测样点值,其中预测样点P(x,y)的最终预测样点值基于中间预测样点值,并且其中x和y是整数;以及基于位置(x,y)处的重构样点值Rec(x,y),对视频块的比特流表示进行编码(2874)以包括残差样点值Res(x,y),其中重构样点值Rec(x,y)基于预测样点P(x,y)的最终预测样点值以及残差样点值Res(x,y)。 在方法2800G和/或2800H的一些实施例中,响应于视频块是使用双向预测技术进行仿射预测的,第一梯度分量和/或第二梯度分量基于来自一个参考图片列表的中间预测样点值。在方法2800G和/或2800H的一些实施例中,当视频块使用仿射模式和LIC时,第一梯度分量和/或第二梯度分量基于在应用局部照明补偿(LIC)之前的帧间预测样点值。在方法2800G和/或2800H的一些实施例中,当视频块使用具有加权预测技术或具有CU级别权重的双向预测(BCW)技术中的任何一种的仿射模式时,第一梯度分量和/或第二梯度分量基于在乘以加权因子之前的帧间预测样点值。在方法2800G和/或2800H的一些实施例中,当视频块使用仿射模式和LIC时,第一梯度分量和/或第二梯度分量基于具有被应用的局部照明补偿(LIC)的帧间预测样点值。在方法2800G和/或2800H的一些实施例中,当视频块使用具有加权预测技术或具有CU级别权重的双向预测(BCW)技术中的任何一种的仿射模式时,第一梯度分量和/或第二梯度分量基于乘以加权因子的帧间预测样点值。 图28I是视频处理方法的示例的流程图。方法2800I包括:通过利用在仿射编解码视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定(2882)位置(x,y)处的细化预测样点P’(x,y),其中第一方向与第二方向正交,并且其中x和y是整数;基于细化预测样点P’(x,y)和残差样点值Res(x,y),确定(2884)位置(x,y)处的重构样点值Rec(x,y);确定(2886)仿射编解码视频块中的位置(x,y)处的细化的重构样点值Rec’(x,y),其中Rec’(x,y)=Rec(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y);以及使用细化的重构样点值Rec’(x,y)来执行(2888)仿射编解码视频块和仿射编解码视频块的比特流表示之间的转换。 图28J是视频处理方法的示例的流程图。方法2800J包括:通过利用在仿射编解码视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定(2892)位置(x,y)处的细化预测样点P’(x,y),其中第一方向与第二方向正交,并且其中x和y是整数;基于细化预测样点P’(x,y)和残差样点值Res(x,y),确定(2894)位置(x,y)处的重构样点值Rec(x,y);确定(2896)仿射编解码视频块中的位置(x,y)处的细化的重构样点值Rec’(x,y),其中Rec’(x,y)=Rec(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y);以及对仿射编解码视频块的比特流表示进行编码(2898),以包括残差样点值Res(x,y)。 在方法2800I和/或2800J的一些实施例中,第一梯度分量Gx(x,y)和/或第二梯度分量Gy(x,y)基于重构样点值Rec(x,y)。在方法2800I和/或2800J的一些实施例中,第一运动位移Vx(x,y)和第二运动位移Vy(x,y)是在仿射编解码视频块的2*2块级别推导的。 图28K是视频处理方法的示例的流程图。方法2800K包括:为仿射模式下的视频块确定(28102)具有1/N像素精度的运动矢量;确定(28104)针对视频块中的位置(x,y)估计的运动位移矢量(Vx(x,y),Vy(x,y)),其中运动位移矢量是以1/M像素精度推导的,其中N和M是正整数,并且其中x和y是整数;以及使用运动矢量和运动位移矢量来执行(28106)视频块和视频块的比特流表示之间的转换。 在方法2800K的一些实施例中,N等于8并且M等于16,或者N等于8并且M等于32,或者N等于8并且M等于64,或者N等于8并且M等于128,或者N等于4并且M等于8,或者N等于4并且M等于16,或者N等于4并且M等于32,或者N等于4并且M等于64,或者N等于4并且M等于128。 图28L是视频处理方法的示例的流程图。方法2800L包括:为视频块或为视频块的子块确定(28112)两个运动矢量集合,其中两个运动矢量集合中的每一个具有不同的运动矢量像素精度,并且其中两个运动矢量集合是使用时域运动矢量预测(TMVP)技术或使用基于子块的时域运动矢量预测(SbTMVP)技术来确定的;以及基于两个运动矢量集合来执行(28114)视频块和视频块的比特流表示之间的转换。 在方法2800L的一些实施例中,两个运动矢量集合包括运动矢量的第一集合和运动矢量的第二集合,其中运动矢量的第一集合具有1/N像素精度,其中运动矢量的第二集合具有1/M像素精度,并且其中N和M是正整数。在方法2800L的一些实施例中,N等于8并且M等于16,或者N等于8并且M等于32,或者N等于8并且M等于64,或者N等于8并且M等于128,或者N等于4并且M等于8,或者N等于4并且M等于16,或者N等于4并且M等于32,或者N等于4并且M等于64,或者N等于4并且M等于128,或者N等于16并且M等于32,或者N等于16并且M等于64,或者N等于16并且M等于128。在方法2800L的一些实施例中,细化通过应用基于光流的方法而应用于两个运动矢量集合,其中两个运动矢量集合包括运动矢量的第一集合和运动矢量的第二集合,其中基于光流的方法中的预测样点使用运动矢量的第一集合来获得,并且其中在基于光流的方法中针对视频块中的位置估计的运动位移通过从运动矢量的第一集合中的第一运动矢量减去运动矢量的第二集合中的第二运动矢量而获得。 在方法2800L的一些实施例中,基于光流的方法通过以下方式而应用:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数,并且其中位置(x,y)处的重构样点值Rec(x,y)基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得。在方法2800L的一些实施例中,第一方向和第二方向彼此正交。在方法2800L的一些实施例中,第一运动位移表示平行于第一方向的方向,并且第二运动位移表示平行于第二方向的方向。在方法2800L的一些实施例中,P’(x,y)=P(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。 在方法2800C至2800L中的任何一种或多种的一些实施例中,视频块是8x4视频块,或者子块是8x4子块。在方法2800C至2800L中的任何一种或多种的一些实施例中,视频块是4x8视频块,或者子块是4x8子块。在方法2800C至2800L中的任何一种或多种的一些实施例中,视频块是4x4单向预测视频块,或者子块是4x4单向预测子块。在方法2800C至2800L中的任何一种或多种的一些实施例中,视频块是8x4、4x8和4x4单向预测视频块,或者子块是8x4、4x8和4x4单向预测子块。在方法2800C至2800L中的任何一种或多种的一些实施例中,视频块不包括4x4双向预测视频块,或者子块不包括4x4双向预测子块。在方法2800C至2800L中的任何一种或多种的一些实施例中,视频块是亮度视频块。在方法2800C至2800L中的任何一种或多种的一些实施例中,该确定和该执行是基于以下中的任何一个或多个而执行的:视频块的色彩分量、视频块的块尺寸、视频块的色彩格式、视频块的块位置、运动类型、运动矢量的幅度、编解码模式、像素梯度的幅度、变换类型、是否应用双向光流(BIO)技术、是否应用双向预测技术、以及是否应用解码器侧运动矢量细化(DMVR)方法。 图28M是视频处理方法的示例的流程图。方法2800M包括:通过使用K个子块图案将使用仿射编解码模式编解码的视频块划分为多个分割,对该视频块执行(28122)交织预测技术,其中K是大于1的整数;通过使用K个子块图案中的第一子块图案来执行运动补偿,生成(28124)视频块的预测样点,其中位置(x,y)处的预测样点被表示为P(x,y),其中x和y是整数;针对表示为第L个图案的、K个子块图案中的剩余子块图案中的至少一个,基于利用第一子块图案推导的预测样点以及使用K个子块图案中的第一子块图案和第L个图案推导的运动矢量之间的差来确定(28126)位置(x,y)处的偏移值OL(x,y);根据OL(x,y)和P(x,y)来确定(28128)位置(x,y)的最终预测样点;以及使用最终预测样点来执行(28130)视频块的比特流表示和视频块之间的转换。 在方法2800M的一些实施例中,K=2,并且其中L=1,并且最终预测样点是使用P(x,y)+((O1(x,y)+1)>>1)来确定的,其中>>表示二进制移位操作。在方法2800M的一些实施例中,K=2,并且其中L=1,并且最终预测样点是使用P(x,y)+(O1(x,y)>>1)来确定的,其中>>表示二进制移位操作。在方法2800M的一些实施例中,最终预测样点是使用P(x,y)+(O1(x,y)+…+OK(x,y)+K/2)/K来确定的。在方法2800M的一些实施例中,最终预测样点是使用P(x,y)+(O1(x,y)+…+OK(x,y))/K来确定的。在方法2800M的一些实施例中,OL(x,y)是在执行水平和垂直插值之后并且在将预测样点转换为输入样点的比特深度之前从利用第一子块图案推导的预测样点生成的。在方法2800M的一些实施例中,OL(x,y)是为每个预测方向生成的。在方法2800M的一些实施例中,第L个图案中的位置(x,y)处的运动位移被推导为来自第L个图案的位置(x,y)处的第一运动矢量和来自K个子块图案中的第一子块图案的位置(x,y)处的第二运动矢量之间的差。 在方法2800M的一些实施例中,使用K个子块图案中的第一子块图案推导的运动矢量具有1/N像素精度,并且使用第L个图案推导的运动矢量具有1/ML像素精度,其中N和M是整数。在方法2800M的一些实施例中,其中N=16并且ML=32,或者N=16并且ML=64,或者N=16并且ML=128,或者N=8并且ML=16,或者N=8并且ML=32,或者N=8并且ML=64,或者N=8并且ML=128,或者N=4并且ML=8,或者N=4并且ML=16,或者N=4并且ML=32,或者N=4并且ML=64,或者N=4并且ML=128。在方法2800M的一些实施例中,对于K个子块图案中的剩余子块图案中的每一个,ML是不同的。 图28N是视频处理方法的示例的流程图。方法2800N包括:使用最终预测样点来执行(28132)视频块的比特流表示和视频块之间的转换,其中最终预测样点通过以下方式从细化的中间预测样点进行推导:(a)基于规则来执行交织预测技术,随后执行基于光流的预测细化技术,或者(b)执行运动补偿技术。 在方法2800N的一些实施例中,视频块是通过使用K个子块图案将视频块划分为多个分割来使用仿射编解码模式进行编解码的,其中K是大于1的整数,其中对于每个子块图案,通过执行运动补偿技术来为每个子块生成预测样点,其中预测样点使用基于光流的预测细化技术进行细化以获得更新的预测样点,并且其中最终预测样点是通过组合每个子块图案的细化预测样点而生成的。在方法2800N的一些实施例中,视频块是单向预测视频块,并且其中交织预测技术和基于光流的预测细化技术被应用于视频块。在方法2800N的一些实施例中,第一抽头滤波器被应用于利用交织预测技术和/或基于光流的预测细化技术编解码的视频块,其中第一抽头滤波器比用于插值滤波器的第二抽头滤波器短,其中该插值滤波器用于没有利用交织预测技术和/或基于光流的预测细化技术编解码的其他视频块。 在方法2800N的一些实施例中,视频块的仿射子块尺寸为8x4或4x8。在方法2800N的一些实施例中,第一子块尺寸用于利用交织预测技术和/或基于光流的预测细化技术编解码的视频块,其中第一子块尺寸不同于没有利用交织预测技术和/或基于光流的预测细化技术编解码的其他视频块的第二子块尺寸。在方法2800N的一些实施例中,该规则基于视频块的编解码信息,其中编解码信息包括视频块的预测方向、视频块的参考图片信息、或视频块的色彩分量。 图28O是视频处理方法的示例的流程图。方法2800O包括:当应用双向预测时,使用最终预测样点来执行(28142)视频块的比特流表示和视频块之间的转换,其中最终预测样点通过以下方式从细化的中间预测样点进行推导:(a)执行基于光流的预测细化技术,其中交织预测技术被禁用,或者(b)执行运动补偿技术。 图28P是视频处理方法的示例的流程图。方法2800P包括:使用预测样点来执行(28152)视频块的比特流表示和视频块之间的转换,其中预测样点通过执行基于光流的预测细化技术从细化的中间预测样点进行推导,其中执行基于光流的预测细化技术仅取决于在视频块的第一方向上估计的运动位移的第一集合Vx(x,y)或在视频块的第二方向上估计的运动位移的第二集合Vy(x,y),其中x和y是整数,并且其中第一方向与第二方向正交。 在方法2800P的一些实施例中,预测样点仅基于运动位移的第一集合Vx(x,y),并且其中运动位移的第二集合Vy(x,y)为零。在方法2800P的一些实施例中,预测样点仅基于运动位移的第二集合Vy(x,y),并且其中运动位移的第一集合Vx(x,y)为零。在方法2800P的一些实施例中,响应于运动位移的第一集合的绝对值之和大于或等于运动位移的第二集合Vy(x,y)的绝对值之和,预测样点仅基于运动位移的第一集合Vx(x,y)。在方法2800P的一些实施例中,响应于运动位移的第一集合的绝对值之和小于或等于运动位移的第二集合Vy(x,y)的绝对值之和,预测样点仅基于运动位移的第二集合Vy(x,y)。 在方法2800P的一些实施例中,响应于第一方向上的第一梯度分量的绝对值之和大于或等于第二方向上的第二梯度分量的绝对值之和,预测样点仅基于运动位移的第一集合Vx(x,y)。在方法2800P的一些实施例中,响应于第一方向上的第一梯度分量的绝对值之和小于或等于第二方向上的第二梯度分量的绝对值之和,预测样点仅基于运动位移的第二集合Vy(x,y)。 图28Q是视频处理方法的示例的流程图。方法2800Q包括:通过对视频块的运动矢量进行细化来获得(28162)视频块的细化的运动矢量,其中运动矢量在执行运动补偿技术之前被细化,其中细化的运动矢量具有1/N像素精度,并且其中运动矢量具有1/M像素精度;通过对视频块执行基于光流的预测细化技术来获得(28164)最终预测样点,其中基于光流的预测细化技术被应用于细化的运动矢量和运动矢量之间的差;以及使用最终预测样点来执行(28166)视频块的比特流表示和视频块之间的转换。 在方法2800Q的一些实施例中,M是16并且N是1,或者M是8并且N是1,或者M是4并且N是1,或者M是16并且N是2,或者M是8并且N是2,或者M是4并且N是2。在方法2800Q的一些实施例中,运动矢量在第一方向或第二方向上,其中第一方向与第二方向正交,并且其中基于光流的预测细化技术在第一方向或第二方向上被执行。在方法2800Q的一些实施例中,视频块是双向预测视频块,并且其中运动矢量在第一方向或第二方向上被细化,其中第一方向与第二方向正交。在方法2800Q的一些实施例中,视频块是双向预测视频块,并且其中运动矢量在第一方向和第二方向上被细化,其中第一方向与第二方向正交。在方法2800Q的一些实施例中,对运动矢量的第一数量的分数运动矢量分量执行基于光流的预测细化技术,其中第一数量的分数运动矢量分量少于或等于运动矢量的第二数量的分数运动矢量分量。 图28R是视频处理方法的示例的流程图。方法2800R包括:使用视频块的多步解码器侧运动矢量细化过程来确定(28172)最终运动矢量,其中最终运动矢量具有1/N像素精度;以及使用最终运动矢量来执行(28174)当前块和比特流表示之间的转换。 在方法2800R的一些实施例中,N等于32或64或128。在方法2800R的一些实施例中,最终运动矢量是通过对视频块的运动矢量进行细化而获得的细化的运动矢量,其中运动矢量在执行运动补偿技术之前被细化,其中最终预测样点通过对视频块执行基于光流的预测细化技术而获得,其中基于光流的预测细化技术被应用于最终运动矢量和运动矢量之间的差。在方法2800R的一些实施例中,基于光流的预测细化技术通过以下方式而应用:通过利用在视频块中的位置(x,y)处估计的第一方向上的第一梯度分量Gx(x,y)和在位置(x,y)处估计的第二方向上的第二梯度分量Gy(x,y)、以及针对位置(x,y)估计的第一运动位移Vx(x,y)和针对位置(x,y)估计的第二运动位移Vy(x,y)来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y),其中x和y是整数,并且其中位置(x,y)处的最终预测样点Rec(x,y)是基于细化预测样点P’(x,y)和残差样点值Res(x,y)而获得的。在方法2800R的一些实施例中,第一方向和第二方向彼此正交。在方法2800R的一些实施例中,第一运动位移表示平行于第一方向的方向,并且第二运动位移表示平行于第二方向的方向。 在方法2800R的一些实施例中,P’(x,y)=P(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。在方法2800R的一些实施例中,具有1/32像素精度的细化的运动矢量在执行运动补偿技术之前被取整为1/16像素精度。在方法2800R的一些实施例中,具有1/32像素精度的细化的运动矢量在执行运动补偿技术之前被取整为1像素精度。在方法2800R的一些实施例中,具有1/64像素精度的细化的运动矢量在执行运动补偿技术之前被取整为1/16像素精度。在方法2800R的一些实施例中,具有1/64像素精度的细化的运动矢量在执行运动补偿技术之前被取整为1像素精度。 图28S是视频处理方法的示例的流程图。方法2800S包括:通过对视频块的中间预测样点执行交织预测技术和基于光流的预测细化技术,获得(28182)视频块的细化的中间预测样点;从细化的中间预测样点推导(28184)最终预测样点;以及使用最终预测样点来执行(28186)视频块的比特流表示和视频块之间的转换。 在方法2800S的一些实施例中,基于光流的预测细化技术被首先执行,然后交织预测技术被执行。在方法2800S的一些实施例中,具有两个不同子块划分图案的细化的中间预测样点首先使用基于光流的预测细化技术来获得,并且其中细化的中间预测样点使用交织预测技术进行加权求和以获得最终预测样点。在方法2800S的一些实施例中,交织预测技术被首先执行,然后基于光流的预测细化技术被执行。在方法2800S的一些实施例中,具有两个不同子块划分图案的中间预测样点首先使用交织预测技术进行加权求和以获得细化的中间预测样点,并且其中对细化的中间预测样点执行基于光流的预测细化技术以获得最终预测样点。在方法2800N至2800S中的任何一种或多种的一些实施例中,基于光流的预测细化技术是利用光流的预测细化(PROF)技术。 图28T是视频处理方法的示例的流程图。方法2800T包括:通过对视频块的中间预测样点执行交织预测技术和相位变化仿射子块运动补偿(PAMC)技术,获得(28192)视频块的细化的中间预测样点;从细化的中间预测样点推导(28194)最终预测样点;以及使用最终预测样点来执行(28196)视频块的比特流表示和视频块之间的转换。 在方法2800T的一些实施例中,PAMC技术被首先执行,然后交织预测技术被执行。在方法2800T的一些实施例中,具有两个不同子块划分图案的细化的中间预测样点首先使用PAMC技术的插值方法来获得,并且其中细化的中间预测样点使用交织预测技术进行加权求和以获得最终预测样点。在方法2800T的一些实施例中,交织预测技术被首先执行,然后PAMC技术被执行。 图28U是视频处理方法的示例的流程图。方法2800U包括:通过对视频块的中间预测样点执行基于光流的预测细化技术和相位变化仿射子块运动补偿(PAMC)技术,获得(28202)视频块的细化的中间预测样点;从细化的中间预测样点推导(28204)最终预测样点;以及使用最终预测样点来执行(28206)视频块的比特流表示和视频块之间的转换。 在方法2800U的一些实施例中,PAMC技术被首先执行,然后基于光流的预测细化技术被执行。在方法2800U的一些实施例中,具有两个不同子块划分图案的细化的中间预测样点首先使用PAMC技术的插值方法来获得,并且其中细化的中间预测样点使用基于光流的预测细化技术来处理以获得最终预测样点。在方法2800U的一些实施例中,基于光流的预测细化技术被首先执行,然后PAMC技术被执行。 在本文档中,术语“视频处理”可以指视频编码(包括转码)、视频解码、视频压缩或视频解压缩。例如,可以在从视频的像素表示到对应比特流表示的转换期间应用视频压缩算法,反之亦然。当前视频块的比特流表示可以例如对应于比特流内的并置的或散布在不同地方的比特,如语法所定义的。例如,宏块可以根据变换和编解码后的误差残差值并且还使用比特流中的头和其他字段中的比特来编码。 应当理解,通过允许使用本文档中公开的技术,所公开的方法和技术将有益于并入在诸如智能手机、膝上型电脑、台式机和类似设备的视频处理设备内的视频编码器和/或解码器实施例。 下面所列条款提供了使用本文档中公开的技术的附加特征和实施例。 1.一种视频处理的方法,包括:在视频块和视频块的比特流表示之间的转换期间,通过根据在视频块中的位置(x,y)处估计的第一方向和/或第二方向上的梯度以及针对位置(x,y)估计的第一运动位移和/或第二运动位移来修改位置(x,y)处的预测样点P(x,y),确定位置(x,y)处的细化预测样点P’(x,y);以及使用来自细化预测样点P’(x,y)的位置(x,y)处的重构样点值Rec(x,y)来执行该转换。 2.根据条款1所述的方法,其中,第一方向和第二方向彼此正交。 3.根据条款1或2中任一项所述的方法,其中,第一运动位移在平行于第一方向的方向上,并且第二运动位移在平行于第二方向的方向上。 4.根据条款1-3中任一项所述的方法,其中,第一方向上的梯度被表示为Gx(x,y),第二方向上的梯度被表示为Gv(x,y),第一运动位移被表示为Vx(x,y),并且第二运动位移被表示为Vy(x,y),并且其中P’(x,y)=P(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y)。 5.根据条款1-3中任一项所述的方法,其中,第一方向上的梯度被表示为Gx(x,y),第二方向上的梯度被表示为Gv(x,y),第一运动位移被表示为Vx(x,y),并且第二运动位移被表示为Vy(x,y),并且其中P’(x,y)=α(x,y)×P(x,y)+β(x,y)×Gx(x,y)×Vx(x,y)+γ(x,y)×Gy(x,y)×Vy(x,y),其中α(x,y)、β(x,y)和γ(x,y)是位置(x,y)处的加权值,并且是整数或实数。 6.根据条款1-5中任一项所述的方法,其中,预测样点P(x,y)是位置(x,y)处的单向预测样点。 7.根据条款1-5中任一项所述的方法,其中,预测样点P(x,y)是位置(x,y)处的双向预测的最终结果。 8.根据条款1-5中任一项所述的方法,其中,预测样点P(x,y)满足以下中的一个: ·多假设帧间预测的结果(具有多于两个MV的帧间预测); ·仿射预测的结果; ·帧内预测的结果; ·帧内块复制(IBC)预测的结果; ·通过三角形预测模式(TPM)生成; ·帧间-帧内组合预测的结果; ·全局帧间预测的结果,其中区域共享相同的运动模型和参数; ·调色板编解码模式的结果; ·多视图或3D视频编解码中的帧间视图预测的结果; ·可缩放视频编解码中的帧间层预测的结果; ·滤波操作的结果。 用以提高位置(x,y)处的预测的精度的细化过程的结果。 9.根据条款1-8中任一项所述的方法,其中,重构样点值Rec(x,y)在该转换期间使用之前被进一步细化。 章节4中列出的第1项提供了方法1至9的实施例的附加示例。 10.一种视频处理的方法,包括:基于来自邻近块或基本块的信息,确定对应于对视频块进行编解码的基于光流的方法的视频块中的位置(x,y)处的第一位移矢量Vx(x,y)和第二位移矢量Vy(x,y);以及使用第一位移矢量和第二位移矢量来执行视频块和当前视频块的比特流表示之间的转换。 11.根据条款10所述的方法,其中,邻近块是空域邻近块。 12.根据条款10所述的方法,其中,邻近块是时域邻近块。 13.根据条款10-12中任一项所述的方法,其中,邻近块是基于与视频块邻近的可能候选块的编解码单元大小或编解码模式或位置而选择的。 14.根据条款10-13中任一项所述的方法,其中,第一位移矢量和第二位移矢量是使用多个邻近块的运动矢量的组合来计算的。 15.根据条款11-13中任一项所述的方法,其中,基本块具有预定大小。 16.根据条款10所述的方法,其中,Vx(x,y)和Vy(x,y)被确定为:Vx(x,y)=a×(x-xc)+b(y-yc),Vy(x,y)=c×(x-xc)+d(y-yc),其中(xc,yc)是覆盖位置(x,y)的大小为w×h的基本块的中心位置。 17.根据条款10所述的方法,其中,Vx(x,y)和Vy(x,y)被确定为:Vx(x,y)=Shift(a×(x-xc)+b(y-yc),n1),Vy(x,y)=Shift(c×(x-xc)+d(y-yc),n1),其中n1是整数,并且其中(xc,yc)是覆盖位置(x,y)的大小为w×h的基本块的中心位置。 18.根据条款10所述的方法,其中,Vx(x,y)和Vy(x,y)被确定为Vx(x+1,y)=Vx(x,y)+a以及Vy(x+1,y)=Vy(x,y)+c;其中,参数a和c是基于来自邻近块或来自基于历史的存储的信息而获得的。 19.根据条款10至18中任一项所述的方法,其中,Vx(x,y)和Vy(x,y)的精度不同于基本块的运动矢量的精度。 章节4中的第2项提供了条款10-19的实施例的附加示例。 20.一种视频处理的方法,包括:在视频块和视频块的比特流表示之间的转换期间,通过修改视频块中的位置(x,y)处的预测样点P(x,y)来确定位置(x,y)处的细化预测样点P’(x,y),并且其中位置(x,y)处的第一方向上的梯度和第二方向上的梯度基于从位置(x,y)处的细化预测样点P’(x,y)和残差样点值确定的最终预测值而确定;以及使用第一方向上的梯度和第二方向上的梯度来执行该转换。 21.根据条款20所述的方法,其中,第一方向上的梯度和第二方向上的梯度对应于水平梯度和垂直梯度。 22.根据条款20-21中任一项所述的方法,其中,第一方向上的梯度和第二方向上的梯度是从中间预测的结果推导的。 23.根据条款20-21中任一项所述的方法,其中,第一方向上的梯度和第二方向上的梯度是从作为仿射预测的双向预测视频块的视频块的一个参考图片列表推导的。 章节4中的第3项和第4项提供了在条款20至23中描述的技术的附加示例实施例。 24.一种视频处理的方法,包括:确定被仿射编解码的视频块中的位置(x,y)处的重构样点Rec(x,y);使用位置(x,y)处的第一位移矢量和第二位移矢量以及第一梯度和第二梯度来细化Rec(x,y),以获得细化的重构样点Rec’(x,y);以及使用细化的重构样点来执行视频块和当前视频块的比特流表示之间的转换。 25.根据条款24所述的方法,其中,Rec’(x,y)=Rec(x,y)+Gx(x,y)×Vx(x,y)+Gy(x,y)×Vy(x,y),其中Gx(x,y)和Gy(x,y)表示第一梯度和第二梯度,并且Vx(x,y)和Vy(x,y)表示位置(x,y)处的第一位移矢量和第二位移矢量。 26.根据条款25所述的方法,其中,Vx(x,y)和Vy(x,y)是在子块级别推导的。 27.根据条款25所述的方法,其中,Vx(x,y)和Vy(x,y)是以1/M像素精度推导的,其中M是整数。 28.根据条款1至27中任一项所述的方法,其中,由于视频块具有特定大小和/或特定编解码模式,该方法被应用。 29.根据条款28所述的方法,其中,特定大小为8x4。 30.根据条款28所述的方法,其中,视频块是4x4单向预测视频块。 章节4中的第5项至第12项提供了在条款24至30中描述的实施例的示例。 31.根据条款1至27中任一项所述所述的方法,其中,由于视频块具有特定色彩分量或特定色彩格式、或者具有视频图片内的特定位置、或者使用特定变换类型,该方法被应用。 32.根据条款1-31中任一项所述所述的方法,其中,该转换包括从比特流表示生成当前块或者从当前块生成比特流表示。 33.一种视频处理的方法,包括:在使用仿射编解码模式编解码的视频块和视频块的比特流表示之间的转换期间,通过使用K个子块图案将视频块划分为多个分割来执行视频块的交织预测,其中K是大于1的整数;使用K个子块图案中的第一子块图案来执行运动补偿,以生成视频块的预测样点,其中位置(x,y)处的预测样点被表示为P(x,y);针对表示为第L个图案的、K个子块图案中的剩余子块图案中的至少一个,基于P(x,y)以及使用K个子块中的第一子块和第L个图案推导的运动矢量之间的差来确定位置(x,y)处的偏移值OL(x,y);根据OL(x,y)和P(x,y)来确定位置(x,y)的最终预测样点;以及使用最终预测样点来执行该转换。 34.根据条款33所述的方法,其中,K=2,并且其中L=1,并且最终预测样点是使用P(x,y)+((O1(x,y)+1)>>1)来确定的,其中>>表示二进制移位操作。 35.根据条款33所述的方法,其中,K=2,并且其中L=1,并且最终预测样点是使用P(x,y)+(O1(x,y)>>1)来确定的,其中>>表示二进制移位操作。 36.根据条款33-35中任一项所述的方法,其中,OL(x,y)是在执行水平和垂直插值之后从P(x,y)生成的。 37.根据条款33-35中任一项所述的方法,其中,第一图案的运动补偿可以使用1/N像素精度,并且第L个图案的运动补偿可以使用1/ML像素精度,其中N和M是整数。 38.根据条款38所述的方法,其中,N=16并且ML=32,64或128。 39.根据条款38所述的方法,其中,N=8并且ML=16,32,64或128。 40.根据条款38所述的方法,其中,N=4并且ML=8,16,32,64或128。 41.一种视频编码器或重新编码器,包括被配置为实施条款1-40中任何一项或多项所述的方法的处理器。 42.一种视频解码器,包括被配置为实施条款1-40中任何一项或多项所述的方法的处理器。 43.一种计算机可读介质,其上具有用于实施条款1-40中任何一项或多项所述的方法的代码。 图33是示出可以在其中实施本文公开的各种技术的示例视频处理系统2100的框图。各种实施方式可以包括系统2100的一些或所有组件。系统2100可以包括用于接收视频内容的输入2102。视频内容可以以例如8或10比特多分量像素值的原始或未压缩格式而接收,或者可以是压缩或编码格式。输入2102可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(Passive Optical Network,PON)等的有线接口和诸如Wi-Fi或蜂窝接口的无线接口。 系统2100可以包括可以实施本文档中描述的各种编解码或编码方法的编解码组件2104。编解码组件2104可以将来自输入2102的视频的平均比特率减小到编解码组件2104的输出,以产生视频的编解码表示。编解码技术因此有时被称为视频压缩或视频转码技术。编解码组件2104的输出可以被存储,或者经由如由组件2106表示的通信连接而发送。在输入2102处接收的视频的存储或通信传送的比特流(或编解码)表示可以由组件2108用于生成像素值或传送到显示接口2110的可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但是将理解,编解码工具或操作在编码器处被使用,并且反转编解码结果的对应的解码工具或操作将由解码器执行。 外围总线接口或显示接口的示例可以包括通用串行总线(USB)、或高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)、或显示端口(Displayport)等。存储接口的示例包括SATA(Serial Advanced Technology Attachment,串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型电脑、智能电话、或能够执行数字数据处理和/或视频显示的其他设备。 所公开技术的一些实施例包括做出启用视频处理工具或模式的决定或确定。在示例中,当视频处理工具或模式被启用时,编码器将在视频块的处理中使用或实施该工具或模式,但是不一定基于工具或模式的使用来修改产生的比特流。也就是说,当基于决定或确定启用视频处理工具或模式时,从视频的块到视频的比特流表示的转换将使用该视频处理工具或模式。在另一示例中,当视频处理工具或模式被启用时,解码器将在知道比特流已经基于视频处理工具或模式而修改的情况下处理比特流。也就是说,将使用基于该决定或该确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频的块的转换。 所公开技术的一些实施例包括做出禁用视频处理工具或模式的决定或确定。在示例中,当视频处理工具或模式被禁用时,编码器将不在视频的块到视频的比特流表示的转换中使用该工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器将在知道比特流还没有使用基于该决定或该确定而禁用的视频处理工具或模式而修改的情况下处理比特流。 图34是示出可以利用本公开的技术的示例视频编解码系统100的框图。如图34所示,视频编解码系统100可以包括源设备110和目标设备120。源设备110生成编码视频数据,其中该源设备110可以被称为视频编码设备。目标设备120可以解码由源设备110生成的编码视频数据,目标设备120可以被称为视频解码设备。源设备110可以包括视频源112、视频编码器114和输入/输出(I/O)接口116。 视频源112可以包括源,诸如视频捕捉设备、从视频内容提供器接收视频数据的接口、和/或用于生成视频数据的计算机图形系统、或这些源的组合。视频数据可以包括一个或多个图片。视频编码器114对来自视频源112的视频数据进行编码,以生成比特流。比特流可以包括形成视频数据的编解码表示的比特序列。比特流可以包括编解码图片和相关数据。编解码图片是图片的编解码表示。相关数据可以包括序列参数集、图片参数集和其他语法结构。I/O接口116可以包括调制器/解调器(调制解调器)和/或发射器。编码视频数据可以通过网络130a经由I/O接口116直接传输到目标设备120。编码视频数据也可以存储在存储介质/服务器130b上,以供目标设备120访问。 目标设备120可以包括I/O接口126、视频解码器124和显示设备122。 I/O接口126可以包括接收器和/或调制解调器。I/O接口126可以从源设备110或存储介质/服务器130b获取编码视频数据。视频解码器124可以对编码视频数据进行解码。显示设备122可以向用户显示解码视频数据。显示设备122可以与目标设备120集成,或者可以在被配置为与外部显示设备接口的目标设备120的外部。 视频编码器114和视频解码器124可以根据视频压缩标准进行操作,例如高效视频编解码(HEVC)标准、多功能视频编解码(VVM)标准和其他当前和/或另外的标准。 图35是示出视频编码器200的示例的框图,视频编码器200可以是图34所示的系统100中的视频编码器114。 视频编码器200可以被配置为执行本公开的任何或所有技术。在图35的示例中,视频编码器200包括多个功能组件。本公开中描述的技术可以在视频编码器200的各种组件之间共享。在一些示例中,处理器可以被配置为执行本公开中描述的任何或所有技术。 视频编码器200的功能组件可以包括分割单元201、预测单元202(其可以包括模式选择单元203、运动估计单元204、运动补偿单元205和帧内预测单元206)、残差生成单元207、变换单元208、量化单元209、逆量化单元210、逆变换单元211、重构单元212、缓冲区213和熵编码单元214。 在其他示例中,视频编码器200可以包括更多、更少或不同的功能组件。在示例中,预测单元202可以包括帧内块复制(IBC)单元。IBC单元可以执行IBC模式下的预测,其中至少一个参考图片是当前视频块所在的图片。 此外,诸如运动估计单元204和运动补偿单元205的一些组件可以高度集成,但是为了解释的目的,在图35的示例中分开表示。 分割单元201可以将图片分割为一个或多个视频块。视频编码器200和视频解码器300可以支持各种视频块尺寸。 模式选择单元203可以基于误差结果选择编解码模式(例如,帧内或帧间)之一,并且将作为结果的帧内编解码块或帧间编解码块提供给残差生成单元207以生成残差块数据,以及提供给重构单元212以重构编码块以用作参考图片。在一些示例中,模式选择单元203可以选择帧内和帧间预测模式的组合(CIIP),其中预测基于帧间预测信号和帧内预测信号。在帧间预测的情况下,模式选择单元203还可以选择块的运动矢量的分辨率(例如,子像素或整数像素精度)。 为了对当前视频块执行帧间预测,运动估计单元204可以通过将来自缓冲区213的一个或多个参考帧与当前视频块进行比较,来生成当前视频块的运动信息。运动补偿单元205可以基于运动信息和来自缓冲区213的除了与当前视频块相关联的图片之外的图片的解码样点,来确定当前视频块的预测视频块。 运动估计单元204和运动补偿单元205可以对当前视频块执行不同的操作,例如,取决于当前视频块是在I条带、P条带还是B条带中。 在一些示例中,运动估计单元204可以对当前视频块执行单向预测,并且运动估计单元204可以为当前视频块的参考视频块搜索列表0或列表1的参考图片。运动估计单元204然后可以生成指示列表0或列表1中的参考图片的参考索引,该参考索引包含参考视频块和指示当前视频块和参考视频块之间的空域位移的运动矢量。运动估计单元204可以输出参考索引、预测方向指示符和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前块的预测视频块。 在其他示例中,运动估计单元204可以对当前视频块执行双向预测,运动估计单元204可以在列表0中的参考图片中搜索当前视频块的参考视频块,并且还可以在列表1中搜索当前视频块的另一个参考视频块。运动估计单元204然后可以生成参考索引,该参考索引指示包含参考视频块的列表0和列表1中的参考图片以及指示参考视频块和当前视频块之间的空间位移的运动矢量。运动估计单元204可以输出当前视频块的参考索引和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前视频块的预测视频块。 在一些示例中,运动估计单元204可以输出完整的运动信息集,以用于解码器的解码处理。 在一些示例中,运动估计单元204可以不输出当前视频的完整的运动信息集。而是运动估计单元204可以参考另一个视频块的运动信息信令通知当前视频块的运动信息。例如,运动估计单元204可以确定当前视频块的运动信息与邻近视频块的运动信息足够相似。 在一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中指示值,该值向视频解码器300指示当前视频块具有与另一个视频块相同的运动信息。 在另一示例中,运动估计单元204可以在与当前视频块相关联的语法结构中标识另一视频块和运动矢量差(MVD)。运动矢量差指示当前视频块的运动矢量和所指示的视频块的运动矢量之间的差。视频解码器300可以使用所指示的视频块的运动矢量和运动矢量差来确定当前视频块的运动矢量。 如上所讨论的,视频编码器200可以预测性地信令通知运动矢量。可以由视频编码器200实施的预测信令通知技术的两个示例包括高级运动矢量预测(AMVP)和Merge模式信令通知。 帧内预测单元206可以对当前视频块执行帧内预测。当帧内预测单元206对当前视频块执行帧内预测时,帧内预测单元206可以基于同一图片中的其他视频块的解码样点来生成当前视频块的预测数据。当前视频块的预测数据可以包括预测视频块和各种语法元素。 残差生成单元207可以通过从当前视频块中减去(例如,由减号指示)当前视频块的(多个)预测视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括与当前视频块中样点的不同样点分量相对应的残差视频块。 在其他示例中,例如在跳过模式中,对于当前视频块可能没有当前视频块的残差数据,并且残差生成单元207可能不执行减去操作。 变换单元208可以通过将一个或多个变换应用于与当前视频块相关联的残差视频块来为当前视频块生成一个或多个变换系数视频块。 在变换单元208生成与当前视频块相关联的变换系数视频块之后,量化单元209可以基于与当前视频块相关联的一个或多个量化参数(QP)值来量化与当前视频块相关联的变换系数视频块。 逆量化单元210和逆变换单元211可以分别对变换系数视频块应用逆量化和逆变换,以从变换系数视频块重构残差视频块。重构单元212可以将重构后的残差视频块添加到来自预测单元202生成的一个或多个预测视频块的对应样点,以产生与当前块相关联的重构视频块,用于存储在缓冲区213中。 在重构单元212重构视频块之后,可以执行环路滤波操作,以减少视频块中的视频块效应。 熵编码单元214可以从视频编码器200的其他功能组件接收数据。当熵编码单元214接收到数据时,熵编码单元214可以执行一个或多个熵编码操作,以生成熵编码数据,并输出包括该熵编码数据的比特流。 图36是示出视频解码器300的示例的框图,视频解码器300可以是图34所示的系统100中的视频解码器124。 视频解码器300可以被配置为执行本公开的任何或所有技术。在图36的示例中,视频解码器300包括多个功能组件。本公开中描述的技术可以在视频解码器300的各种组件之间共享。在一些示例中,处理器可以被配置为执行本公开中描述的任何或所有技术。 在图36的示例中,视频解码器300包括熵解码单元301、运动补偿单元302、帧内预测单元303、逆量化单元304、逆变换单元305以及重构单元306和缓冲区307。在一些示例中,视频解码器300可以执行通常与针对视频编码器200(图35)描述的编码过程相反的解码过程。 熵解码单元301可以检索编码比特流。编码比特流可以包括熵编解码的视频数据(例如,视频数据的编码块)。熵解码单元301可以解码熵编解码的视频数据,并且根据熵解码的视频数据,运动补偿单元302可以确定包括运动矢量、运动矢量精度、参考图片列表索引和其他运动信息的运动信息。运动补偿单元302可以例如通过执行AMVP和Merge模式来确定这样的信息。 运动补偿单元302可以产生运动补偿块,可以基于插值滤波器执行插值。要以子像素精度使用的插值滤波器的标识符可以包括在语法元素中。 运动补偿单元302可以使用如视频编码器20在视频块的编码期间使用的插值滤波器来计算参考块的子整数像素的插值。运动补偿单元302可以根据所接收的语法信息确定视频编码器200使用的插值滤波器,并使用该插值滤波器来产生预测块。 运动补偿单元302可以使用一些语法信息来确定用于对编码视频序列的(多个)帧和/或(多个)条带进行编码的块的尺寸、描述编码视频序列的图片的每个宏块如何被分割的分割信息、指示每个分割如何被编码的模式、每个帧间编码块的一个或多个参考帧(和参考帧列表)以及用于对编码视频序列进行解码的其他信息。 帧内预测单元303可以使用例如在比特流中接收的帧内预测模式来从空间上相邻的块形成预测块。逆量化单元304对在比特流中提供并由熵解码单元301解码的量化后的视频块系数进行逆量化,即,解量化。逆变换单元305应用逆变换。 重构单元306可以将残差块与由运动补偿单元302或帧内预测单元303生成的对应预测块相加,以形成解码块。如果需要,还可以应用去块滤波器来滤波解码块,以便移除块效应。解码的视频块然后被存储在缓冲区307中,为随后的运动补偿/帧内预测提供参考块,并且还产生解码的视频以在显示设备上呈现。 在本专利文档中,术语“样点”或“多个样点”可以指视频块的一个或多个样点。根据前述内容,可以理解的是,为了说明的目的,本文已经描述了当前公开的技术的指定实施例,但是在不脱离本发明的范围的情况下,可以进行各种修改。因此,除了所附权利要求之外,当前公开的技术不受限制。 本文档中描述的所公开的以及其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路中、或者在计算机软件、固件或硬件(包括本文档中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中被实施。所公开的以及其他实施例可以被实施为一个或多个计算机程序产品,即在计算机可读介质上编码的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。传播信号是被生成以对信息进行编码以用于发送到合适的接收器装置的人工生成的信号,例如机器生成的电信号、光学信号或电磁信号。 计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署以在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上运行。 本文档书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实施为专用逻辑电路,例如,FPGA(Field Programmable Gate Array,现场可编程门阵列)或ASIC(专用集成电路)。 适合于运行计算机程序的处理器包括例如通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可换式磁盘;磁光盘;以及CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。 虽然本专利文档包含许多细节,但这些细节不应被解释为对任何主题或可能要求保护的范围的限制,而是作为指定于特定技术的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。 类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。 仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。
- 腰腿疼痛触压量化器
- 一种疼痛触压量化器