WO2022077495A1 - 帧间预测方法、编码器、解码器以及计算机存储介质 - Google Patents
帧间预测方法、编码器、解码器以及计算机存储介质 Download PDFInfo
- Publication number
- WO2022077495A1 WO2022077495A1 PCT/CN2020/121676 CN2020121676W WO2022077495A1 WO 2022077495 A1 WO2022077495 A1 WO 2022077495A1 CN 2020121676 W CN2020121676 W CN 2020121676W WO 2022077495 A1 WO2022077495 A1 WO 2022077495A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- pixel
- weight
- prediction
- block
- predicted value
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例公开了一帧间预测方法、编码器、解码器以及计算机存储介质,解码器解析码流,获取当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,利用当前块的每一个子块的第一运动矢量确定每一个子块中的像素点的第一预测值,利用当前块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值;对于当前块内的一像素点,确定像素点的第一权重和第二权重;其中,第一权重对应第一预测值,第二权重对应第二预测值;基于第一权重、第二权重、第一预测值以及第二预测值,确定像素点的预测值;根据像素点的预测值,确定当前块的第三预测值;其中,第三预测值用于确定当前块的重建值。
Description
本申请涉及视频编解码技术领域,尤其涉及一种帧间预测方法、编码器、解码器以及计算机存储介质。
在视频编解码领域,为了兼顾性能和代价,一般情况下,在多功能视频编码(Versatile Video Coding,VVC)及数字音视频编解码技术标准工作组(Audio Video coding Standard Workgroup of China,AVS)中的仿射预测是基于子块来实现的。
基于子块的仿射预测并不够精确,因而需要通过交织预测(interweaved prediction)等技术对基于子块的仿射预测进行改善。虽然交织预测引入的新的子块划分方式能在一定程度上提高预测的准确性,但是交织预测也带来了明显的复杂度,降低了编解码效率。
发明内容
本申请提出一种帧间预测方法、编码器、解码器以及计算机存储介质,可以大大提升编码性能,从而提高了编解码效率。
本申请的技术方案是这样实现的:
第一方面,本申请实施例提供了一种帧间预测方法,应用于解码器,该方法包括:
解析码流,获取当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;
对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;
基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;
根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的重建值。
第二方面,本申请实施例提供了一种帧间预测方法,应用于编码器,该方法包括:
确定当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;
对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;
基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;
根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的残差。
第三方面,本申请实施例提供了一种解码器,所述解码器包括解析部分,第一确定部分;
所述解析部分,配置为解析码流,获取当前块的预测模式参数;
所述第一确定部分,配置为当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的重建值。
第四方面,本申请实施例提供了一种解码器,所述解码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如上所述的帧间 预测方法。
第五方面,本申请实施例提供了一种编码器,所述编码器包括第二确定部分;
所述第二确定部分,配置为确定当前块的预测模式参数;当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的残差。
第六方面,本申请实施例提供了一种编码器,所述编码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如上所述的帧间预测方法。
第七方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时,实现如第一方面所述的帧间预测方法,所述计算机程序被第二处理器执行时,实现如第二方面所述的帧间预测方法。
本申请实施例所提供的一种帧间预测方法、编码器、解码器以及计算机存储介质,解码器解析码流,获取当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,利用当前块的每一个子块的第一运动矢量确定每一个子块中的像素点的第一预测值,利用当前块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值;其中,当前块包括一个或多个子块;当前块包括一个或多个像素点;对于当前块内的一像素点,确定像素点的第一权重和第二权重;其中,第一权重对应第一预测值,第二权重对应第二预测值;基于第一权重、第二权重、第一预测值以及第二预测值,确定像素点的预测值;根据像素点的预测值,确定当前块的第三预测值;其中,第三预测值用于确定当前块的重建值。也就是说,本申请提出的帧间预测方法,可以对当前块使用基于子块的预测,获得一组预测值,即第一预测值,同时对当前块使用基于点的预测,获得另一组预测值,即第二预测值,并在对当前块中的相同像素点进行基于子块的预测的第一权重和基于点的预测的第二权重的确定之后,使用第一权重和第二权重对第一预测值和第二预测值进行加权平均,最终获得当前块的新的预测值,从而可以在提高帧间预测的精确性的同时,降低计算的复杂度,减小带宽,进而大大提升编码性能,提高了编解码效率。
图1为像素的插值示意图;
图2为子块插值的示意图一;
图3为子块插值的示意图二;
图4为交织预测的示意图;
图5为基于子块的预测值的权重的示意图一;
图6为基于子块的预测值的权重的示意图二;
图7为本申请实施例提供的一种视频编码系统的组成框图示意图;
图8为本申请实施例提供的一种视频解码系统的组成框图示意图;
图9为帧间预测方法的实现流程示意图一;
图10为第一权重的示意图一;
图11为第一权重的示意图二;
图12为帧间预测方法的实现流程示意图二;
图13为单向预测的示意图;
图14为帧间预测方法的实现流程示意图三;
图15为双向预测的示意图一;
图16为帧间预测方法的实现流程示意图四;
图17为双向预测的示意图二;
图18为插值滤波的示意图一;
图19为插值滤波的示意图二;
图20为插值滤波的示意图三;
图21为插值滤波的示意图四;
图22为插值滤波的示意图五;
图23为插值滤波的示意图六;
图24为帧间预测方法的实现流程示意图五;
图25为解码器的组成结构示意图一;
图26为解码器的组成结构示意图二;
图27为编码器的组成结构示意图一;
图28为编码器的组成结构示意图二。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。
目前,通用的视频编解码标准基于都采用基于块的混合编码框架。视频图像中的每一帧被分割成相同大小(比如128×128,64×64等)的正方形的最大编码单元(Largest Coding Unit,LCU),每个最大编码单元还可以根据规则划分成矩形的编码单元(Coding Unit,CU);而且编码单元可能还会划分成更小的预测单元(Prediction Unit,PU)。具体地,混合编码框架可以包括有预测、变换(Transform)、量化(Quantization)、熵编码(EntropyCoding)、环路滤波(In Loop Filter)等模块;其中,预测模块可以包括帧内预测(intra prediction)和帧间预测(inter prediction),帧间预测可以包括运动估计(motion estimation)和运动补偿(motion compensation)。由于视频图像的一个帧内相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测方式能够消除相邻像素之间的空间冗余;但是由于视频图像中的相邻帧之间也存在着很强的相似性,在视频编解码技术中使用帧间预测方式消除相邻帧之间的时间冗余,从而能够提高编码效率。下述本申请将以帧间预测进行详细描述。
帧间预测即使用已经编/解码的帧来预测当前帧中需要编/解码的部分,在基于块的编解码框架里,需要编/解码的部分通常是编码单元或预测单元。这里把需要编/解码的编码单元或预测单元统称为当前块。平移运动是视频中的一种常见而且简单的运动方式,所以平移的预测也是视频编解码中的一种传统的预测方法。视频中的平移运动可以理解为一部分内容随着时间的变化,从一个帧上的某一个位置移动到了另一个帧上的某一个位置。平移的一个简单的单向预测可以用某一帧与当前帧之间的一个运动矢量(motion vector,MV)来表示。这里所说的某一帧为当前帧的一个参考帧,当前块通过这个包含参考帧和运动矢量的运动信息可以找到参考帧上的一个与当前块大小相同的参考块,把这个参考块作为当前块的预测块。理想的平移运动中,当前块的内容在不同帧之间没有变形、旋转等变化以及亮度颜色的变化等,然而,视频中的内容并不总是符合这样的理想情况。双向预测在一定程度上可以解决上述问题。通常的双向预测是指双向的平移的预测。双向预测即是用两个参考帧和运动矢量的运动信息分别从两个参考帧(两个参考帧可能是同一个参考帧)找到两个与当前块大小相同的参考块,利用这两个参考块生成当前块的预测块。生成方法包括平均、加权平均以及一些其他的计算等。
在本申请中,可以认为预测是运动补偿的一部分,有些文献会把本申请中的预测称为运动补偿,如本申请所说仿射预测,有些文献会叫作仿射运动补偿。
旋转、放大、缩小、扭曲、形变等也是在视频中常见的变化,然而,普通的平移预测并不能很好地处理这种变化,于是仿射(affine)预测模型被应用于视频编解码中,如VVC和AVS中的仿射,其中,VVC和AVS3的仿射预测模型相似。在旋转、放大、缩小、扭曲、形变等变化中,可以认为当前块不是所有点都使用相同的MV,因此需要导出每一个点的MV。仿射预测模型用少量的几个参数通过计算导出每一个点的MV。VVC和AVS3的仿射预测模型都使用了2控制点(4参数)和3控制点(6参数)模型。2控制点即当前块的左上角和右上角2个控制点,3控制点即当前块的左上角、右上角和左下角3个控制点。一般情况下,由于每个MV包括一个x分量和一个y分量,所以2个控制点有4个参数,3个控制点有6个参数。
根据仿射预测模型可以为每一个像素点导出一个MV,每一个像素点都可以在参考帧中找到其对应的位置,如果这个位置不是整像素点,那么需要通过插值的方法得出这个分像素点的值。现在视频编解码标准中使用的插值方法通常都是有限长单位冲激响应(Finite Impulse Response,FIR)滤波器来实现,而按这种方式实现复杂度(成本)是很高的。例如,在AVS3中,对亮度分量使用8抽头的插值滤波器,而且普通模式分像素精度是1/4像素的,affine模式的分像素精度是1/16像素的。对每一个符合1/16像素精度的分像素点,需要使用水平方向的8个整像素和垂直方向8个整像素即 64个整像素插值得到。图1为像素的插值示意图,如图1所示,圆形像素是想要得到的分像素点,深色的正方形像素是该分像素对应的整像素的位置,它们两个之间的矢量就是分像素的运动矢量,浅色的正方形像素是对圆形分像素点的插值需要用到的像素,要得到该分像素点的值,需要这些8x8的浅色的正方形像素区域的像素值进行插值,也包含深色的像素点。
在传统的平移的预测中,当前块的每个像素点的MV是相同的。如果进一步地引入子块的概念,子块的大小如4x4,8x8等。图2为子块插值的示意图一,4x4的块插值需要使用的像素区域如图2所示。图3为子块插值的示意图二,8x8的块插值需要使用的像素区域如图3所示。
如果一个子块中的每个像素点的MV是相同的。那么一个子块中的像素点可以一起进行插值,从而分摊带宽、使用同一个相位的滤波器以及共享插值过程的中间值。但是如果每一个像素点使用一个MV,那么带宽就会增加,而且可能会使用不同相位的滤波器以及不能共享插值过程的中间值。
基于点的仿射预测代价很高,因此,为了兼顾性能和代价,在VVC和AVS3中的仿射预测是基于子块来实现的。AVS3中的子块大小有4x4和8x8两种大小,VVC中使用4x4的子块大小。每一个子块有一个MV,子块内部的像素点共享同一个MV。从而对子块内部的所有像素点统一做插值。通过上述方法,基于子块的仿射预测与其他基于子块的预测方法的运动补偿复杂度相近。
可见,基于子块的仿射预测方法中,子块内部的像素点共享同一个MV,其中,确定这个共享MV的方法是取当前子块中心的MV。而对4x4、8x8等水平垂直方向上至少有一个是偶数个像素的子块来说,其中心其实是落在非整数像素点上的。目前的标准中都取一个整数像素的位置,例如,如对4x4子块,取距离左上角位置为(2,2)的像素点。对8x8子块,取距离左上角位置为(4,4)的像素点。
仿射预测模型可以根据当前块所使用的控制点(2个控制点或3个控制点)导出每一个像素点的MV。在基于子块的仿射预测中,根据上一段中像素点计算出这个位置的MV,作为该子块的MV。为了推导每个子块的运动矢量,可以将每个子块的中心采样的运动矢量取整到1/16精度,然后进行运动补偿。
随着技术的发展,仿射预测也可以使用双向预测,具体可以理解为对当前块使用两组仿射模型参数,这两组仿射模型参数可能分别来自于不同的参考帧,也可能来自于同一个参考帧。对两组仿射模型参数分别进行仿射预测,然后对两组仿射预测的结果进行平均或加权平均,最终得到当前块的预测块。
基于子块的仿射预测并不够精确,因而有一些技术提出对基于子块的仿射预测做进一步的改善,其中有一个技术叫做交织预测。交织预测新增了一种子块划分方式,新的子块划分方式与原来的划分方式不同。图4为交织预测的示意图,如图4所示,Pattern 0是现有的划分方式,Pattern 1是交织预测新增的划分方式,与Pattern 0相比,Pattern 1中所有子块的划分在水平方向和垂直方向分别偏移了半个子块的长度。这是一种典型的划分方法,Pattern0和Pattern1也可以用其他的划分方法。与Pattern 0相同,Pattern 1的每一个子块同样可以利用仿射模型计算出一个MV,然后使用这个MV进行基于子块的预测。因此,对当前块的每一个点都能得到两个预测值,一个来自于Pattern 0,另一个来自于Pattern 1,从而构成当前块对应的预测块P0和预测块P1,进而基于P0和P1获得当前块对应的新的预测块P。
一般情况下,与子块基准位置(确定为子块MV的位置)的距离越近,预测的准确度越高,与子块基准位置的距离越远,预测的准确度越底。由于目前的标准中,对4x4子块取距离左上角位置为(2,2)的像素位置为子块基准位置。对8x8子块取距离左上角位置为(4,4)的像素位置为子块基准位置,因此,子块中的不同像素位置所对应的预测值的权重也可以不同。图5为基于子块的预测值的权重的示意图一,图6为基于子块的预测值的权重的示意图二,如图5和6所示,对于不同的像素位置,基于子块的预测值的权重也存在差异。例如,4x4子块中位置为(2,2)、(2,3)、(3,2)、(3,3)的像素位置的预测值的权重较大,取值为3,而其他像素位置的预测值的权重较小,取值为1相应地,8x8子块中的中间区域的16个像素位置的预测值的权重较大,取值为3,而其他像素位置的预测值的权重较小,取值为1。进一步地,可以对P0和P1中的每一个像素位置上的预测值分别根据其对应的权重值进行加权平均,具体地,如果一个像素位置在P0和P1的位置权重相等,即在P0和P1这两种情况下权重值均为1,或者,在P0和P1这两种情况下权重值均为3,则按1:1平均,否则,则按对应的权重进行加权平均,如3:1或1:3。
可以理解的是,交织预测方法的提出可以看做是对单向预测或者双向预测中的每一个单向预测进行的改进。如果交织预测应用于双向预测,那么对每一个单向预测都会相应有一个交织预测。原单向预测的预测值和交织预测的预测值加权平均得到新的单向预测的预测值,两个新的单向预测的 预测值再平均(或加权平均)得到最终的预测值。
交织预测利用不同的划分方式,使得两种划分方式的子块的基准位置也呈现交织状,从而使一些在一种划分方式里预测准确度不高的点在另一个划分方式里预测准确度较高,并通过加权平均的办法减少了误差,从而提高了压缩性能。
然而,交织预测技术也存在一定的弊端,具体地,交织预测使用了2种不同的子块划分方式,每种子块划分方式要分别进行基于子块的预测,可见,与原有的预测方法相比,仅仅基于子块的预测这一项,交织预测的方法就增加了超过一倍的复杂度。
一方面是计算量的增加,这是由于原有的预测方法的子块划分方法是统一的,而交织预测会划分出更小的子块,在插值结果点数相同,且在都使用水平垂直可分离的滤波器且滤波器抽头数相同的情况下,更小的子块意味着更多的计算量。以1个4x4的子块和4个2x2的子块,都使用8抽头的水平垂直可分离的滤波器为例。1个4x4的子块水平方向需要插值4x(4+7)个点,垂直方向需要插值4x4个点,共60个点。1个2x2的子块水平方向需要插值2x(2+7)个点,垂直方向需要插值2x2个点,共4个子块,共88个点。计算量是超过1倍的。
另一方面是带宽的增加,由于Pattern1的每一个子块都有一个新的MV,而Pattern1的子块的MV和其周边的Pattern0的子块的MV不一定相同,且Pattern1的子块的MV和其周边的Pattern0的子块都是错位的,因此会增加带宽。带宽增加的多少看具体的硬件实现方式、子块之间的插值顺序的控制以及算法对MV的限制等。
再一方面,2x2,4x2,2x4的这种小块的差值也会带来额外的复杂度,还有包括每种划分的子块之间的插值顺序的控制,中间值的存储,加权时机的控制等,都会带来额外的复杂度。
综上所述,交织预测的性能来源于“交织”,但“交织”也带来了明显的复杂度。在这个技术的基础上,虽然已经提出了一些对该技术的简化方法,但都是在“交织”的框架下进行的,并不能有效地降低“交织”带来的复杂度,也就是说,目前针对上述问题只能改善不能消除。
由此可见,虽然交织预测引入的新的子块划分方式能在一定程度上提高预测的准确性,但是交织预测也带来了明显的复杂度,降低了编解码效率。
为了解决现有技术中存在的缺陷,在本申请的实施例中,可以对当前块使用基于子块的预测,获得一组预测值,即第一预测值,同时对当前块使用基于点的预测,获得另一组预测值,即第二预测值,并在对当前块中的相同像素点进行基于子块的预测的第一权重和基于点的预测的第二权重的确定之后,使用第一权重和第二权重对第一预测值和第二预测值进行加权平均,最终获得当前块的新的预测值,从而可以在提高帧间预测的精确性的同时,降低计算的复杂度,减小带宽,进而大大提升编码性能,提高了编解码效率。
应理解,本申请实施例提供一种视频编码系统,图7为本申请实施例提供的一种视频编码系统的组成框图示意图,如图7所示,该视频编码系统11可以包括:变换单元111、量化单元112、模式选择和编码控制逻辑单元113、帧内预测单元114、帧间预测单元115(包括:运动补偿和运动估计)、反量化单元116、反变换单元117、环路滤波单元118、编码单元119和解码图像缓存单元110;针对输入的原始视频信号,通过编码树块(Coding Tree Unit,CTU)的划分可以得到一个视频重建块,通过模式选择和编码控制逻辑单元113确定编码模式,然后,对经过帧内或帧间预测后得到的残差像素信息,通过变换单元111、量化单元112对该视频重建块进行变换,包括将残差信息从像素域变换到变换域,并对所得的变换系数进行量化,用以进一步减少比特率;帧内预测单元114用于对该视频重建块进行帧内预测;其中,帧内预测单元114用于确定该视频重建块的最优帧内预测模式(即目标预测模式);帧间预测单元115用于执行所接收的视频重建块相对于一或多个参考帧中的一或多个块的帧间预测编码,以提供时间预测信息;其中吗,运动估计为产生运动向量的过程,运动向量可以估计该视频重建块的运动,然后,运动补偿基于由运动估计所确定的运动向量执行运动补偿;在确定帧间预测模式之后,帧间预测单元115还用于将所选择的帧间预测数据提供到编码单元119,而且,将所计算确定的运动向量数据也发送到编码单元119;此外,反量化单元116和反变换单元117用于该视频重建块的重构建,在像素域中重构建残差块,该重构建残差块通过环路滤波单元118去除方块效应伪影,然后,将该重构残差块添加到解码图像缓存单元110的帧中的一个预测性块,用以产生经重构建的视频重建块;编码单元119是用于编码各种编码参数及量化后的变换系数。而解码图像缓存单元110用于存放重构建的视频重建块,用于预测参考。随着视频图像编码的进行,会不断生成新的重构建的视频重建块,这些重构建的视频重建块都会被存放在解码图像缓存单元110中。
本申请实施例还提供一种视频解码系统,图8为本申请实施例提供的一种视频解码系统的组成 框图示意图,如图8所示,该视频解码系统12可以包括:解码单元121、反变换单元127,与反量化单元122、帧内预测单元123、运动补偿单元124、环路滤波单元125和解码图像缓存单元126单元;输入的视频信号经过视频编码系统11进行编码处理之后,输出该视频信号的码流;该码流输入视频解码系统12中,首先经过解码单元121,用于得到解码后的变换系数;针对该变换系数通过反变换单元127与反量化单元122进行处理,以便在像素域中产生残差块;帧内预测单元123可用于基于所确定的帧内预测方向和来自当前帧或图片的先前经解码块的数据而产生当前视频解码块的预测数据;运动补偿单元124是通过剖析运动向量和其他关联语法元素来确定用于视频解码块的预测信息,并使用该预测信息以产生正被解码的视频解码块的预测性块;通过对来自反变换单元127与反量化单元122的残差块与由帧内预测单元123或运动补偿单元124产生的对应预测性块进行求和,而形成解码的视频块;该解码的视频信号通过环路滤波单元125以便去除方块效应伪影,可以改善视频质量;然后将经解码的视频块存储于解码图像缓存单元126中,解码图像缓存单元126存储用于后续帧内预测或运动补偿的参考图像,同时也用于视频信号的输出,得到所恢复的原始视频信号。
本申请实施例提供的一种帧间预测方法主要作用于视频编码系统11的帧间预测单元215和视频解码系统12的帧间预测单元,即运动补偿单元124;也就是说,如果在视频编码系统11能够通过本申请实施例提供的帧间预测方法得到一个较好的预测效果,那么,对应地,在视频解码系统12,也能够改善视频解码恢复质量。
基于此,下面结合附图和实施例对本申请的技术方案进一步详细阐述。在进行详细阐述之前,需要说明的是,说明书通篇中提到的“第一”、“第二”、“第三”等,仅仅是为了区分不同的特征,不具有限定优先级、先后顺序、大小关系等功能。
需要说明的是,本实施例以AVS3标准为基础进行示例性说明,本申请提出的帧间预测方法同样可以适用于VVC等其他编码标准技术,不申请对此不作具体限定。
本申请实施例提供一种帧间预测方法,该方法应用于视频解码设备,即解码器。该方法所实现的功能可以通过解码器中的第一处理器调用计算机程序来实现,当然计算机程序可以保存在第一存储器中,可见,该解码器至少包括第一处理器和第一存储器。
进一步地,在本申请的实施例中,图9为帧间预测方法的实现流程示意图一,如图9所示,解码器进行帧间预测的方法可以包括以下步骤:
步骤101、解析码流,获取当前块的预测模式参数。
在本申请的实施例中,解码器可以先解析二进制码流,从而获得当前块的预测模式参数。其中,预测模式参数可以用于对当前块所使用的预测模式进行确定。
需要说明的是,待解码图像可以划分为多个图像块,而当前待解码的图像块可以称为当前块(可以用CU表示),与当前块相邻的图像块可以称为相邻块;即在待解码图像中,当前块与相邻块之间具有相邻关系。这里,每个当前块可以包括第一图像分量、第二图像分量和第三图像分量,也即当前块表示待解码图像中当前待进行第一图像分量、第二图像分量或者第三图像分量预测的图像块。
其中,假定当前块进行第一图像分量预测,而且第一图像分量为亮度分量,即待预测图像分量为亮度分量,那么当前块也可以称为亮度块;或者,假定当前块进行第二图像分量预测,而且第二图像分量为色度分量,即待预测图像分量为色度分量,那么当前块也可以称为色度块。
进一步地,在本申请的实施例中,预测模式参数不仅可以指示当前块采用的预测模式,还可以指示与该预测模式相关的参数。
可以理解的是,在本申请的实施例中,预测模式可以包括有帧间预测模式、传统帧内预测模式以及非传统帧内预测模式等。
也就是说,在编码侧,编码器可以选取最优的预测模式对当前块进行预编码,在这过程中就可以确定出当前块的预测模式,然后确定用于指示预测模式的预测模式参数,从而将相应的预测模式参数写入码流,由编码器传输到解码器。
相应地,在解码器侧,解码器通过解析码流便可以直接获取到当前块的预测模式参数,并根据解析获得的预测模式参数确定当前块所使用的预测模式,以及该预测模式对应的相关参数。
进一步地,在本申请的实施例中,解码器在解析获得预测模式参数之后,可以基于预测模式参数确定当前块是否使用帧间预测模式。
步骤102、当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,利用当前块的每一个子块的第一运动矢量确定每一个子块中的像素点的第一预测值,利用当前块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值;其中,当前块包括一个或多个子块;当前块包括 一个或多个像素点。
在本申请的实,解码器在解析获得预测模式参数之后,如果解析获得的预测模式参数指示当前块使用帧间预测模式确定当前块的帧间预测值,那么解码器可以利用当前块的每一个子块的第一运动矢量确定每一个子块中的像素点的第一预测值,同时,解码器可以利用当前块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值。
也就是说,在本申请中,解码器可以对当前块使用基于子块的预测,得到一组预测值,即每一个子块中的像素点对应的第一预测值,同时,解码器还可以对当前块使用基于点的预测,得到另一组预测值,即每一个像素点对应的第二预测值。
可以理解的是,在本申请中,第一预测值为基于子块的预测所获得的子块中的像素点的预测值,第二预测值为基于点的预测获得的当前块中的像素点的预测值。可见,对于当前块中的同一个像素(像素位置),解码器可以采用不同的方式获得对应的两个预测值,即通过基于子块的预测获得的第一预测值,和通过基于点的预测获得的第二预测值。
可以理解的是,在本申请中,当前块可以包括一个或多个子块;当前块可以包括一个或多个像素点(sample),每一个像素点都对应有一个像素位置和一个像素值。
示例性的,在本申请的实施例中,解码器在确定每一个子块中的像素点的第一预测值时,可以先确定当前块的每一个子块的第一运动矢量,然后再基于该第一运动矢量确定出子块中的像素点对应的第一预测值。
也就是说,在本申请中,解码器在基于子块的预测时,可以把当前块划分成若干子块,对每一个子块确定一个运动矢量,即每一个子块对应有一个第一运动矢量,然后解码器可以使用每一个子块的第一运动矢量对子块进行预测,获得子块中的像素点对应的第一预测值。
示例性的,在本申请的实施例中,解码器在确定每一个像素点的第二预测值时,可以先确定当前块的每一个像素点的第二运动矢量,然后再基于该第二运动矢量确定出像素点对应的第二预测值。
也就是说,在本申请中,解码器在基于子块的预测时,可以对每一个像素点确定一个运动矢量,即每一个像素点对应有一个第二运动矢量,然后解码器可以使用每一个像素点的第二运动矢量对像素点进行预测,获得对应的第二预测值。
可以理解的是,在本申请的实施例中,当前块的子块的第一运动矢量和像素点的第二运动矢量都可以采用仿射模型来导出。进一步地,解码器也可以采用其他的方式进行第一运动矢量和第二运动矢量的确定,例如其他基于子块的预测技术,如解码端运动矢量修正(decoder-side motion vector refinement,DMVR),VVC中称为BDOF的BIO(bi-directional optical flow),基于子块的时域运动向量预测(sub-block based temporal motion vector prediction,SbTMVP),运动向量预测(motion vector angular prediction,MVAP)等。解码器还可以根据子块的第一运动矢量来确定该子块中的像素点的第二运动矢量,如根据两个或更多个子块的第一运动矢量来确定其中一个子块中的任一个像素点的第二运动矢量。
进一步地,在本申请的实施例中,解码器基于子块的预测和基于点的预测可以使用不同的预测方法。例如,解码器可以使用不同的插值方式进行基于子块的预测和基于点的预测。具体地,在基于子块的预测和基于点的预测时,解码器可以使用不同的插值滤波器对分像素的值进行插值处理。
示例性的,在本申请中,基于子块的预测可以使用比较复杂的滤波器,基于点的预测可以使用比较简单的滤波器。
示例性的,在本申请中,基于子块的预测可以使用抽头数较多的滤波器,基于点的预测可以使用抽头数较少的滤波器。
示例性的,在本申请中,基于子块的预测和基于点的预测可以分别使用可分离的二维滤波器或不可分离的二维滤波器。
需要说明的是,在本申请的实施例中,可分离滤波器可以为二维滤波器,具体地,可分离滤波器可以为横竖可分离的二维滤波器或水平垂直可分离的二维滤波器,可以由水平方向的一维滤波器和垂直方向的一维滤波器构成。
也就是说,在本申请中,如果使用可分离滤波器,那么该可分离滤波器可以在水平方向和垂直方向分别进行滤波处理。
可以理解的是,在本申请中,作为水平垂直可分离的可分离滤波器,可以对二维像素点在两个方向上分别进行滤波处理,具体地,可分离滤波器可以先进行一个方向(如水平方向或垂直方向)的滤波,得到该方向对应的中间值,然后对该中间值进行另一个方向(如垂直方向或水平方向)的滤波,得到最终的滤波结果。
需要说明的是,在本申请中,目前多种常见的编解码场景已经使用了可分离滤波器,如帧间基于块的预测的插值滤波、帧间基于子块的预测的插值滤波,也包括仿射基于子块的预测的插值滤波等。进一步地,可分离滤波器还可以应用于HEVC、VVC、AVS3中基于块或子块的运动补偿,即运动补偿预测插值滤波器可以包括可分离的二维滤波器。示例性的,AVS3中仿射运动补偿预测的亮度插值滤波器可以为可分离的二维滤波器,其中,亮度插值滤波器系数如表1所示:
表1
进一步地,在本申请的实施例中,在进行基于子块的预测时,对于当前块的一子块,解码器可以根据第一运动矢量确定第一滤波参数;然后可以基于第一滤波参数,利用第一滤波器进行滤波处理,获得第一预测值。
具体地,在本申请中,第一滤波器可以为以下滤波器中的任意一种:n抽头的插值滤波器、可分离的二维滤波器、不可分离的二维滤波器;其中,n为以下值中的任一者:8,6,5,4,3,2。
需要说明的是,在本申请的实施例中,第一滤波器的第一滤波参数可以包括该第一滤波器的滤波器系数,还可以包括该第一滤波器的滤波器相位,本申请不作具体限定。
示例性的,在本申请中,如果第一滤波参数为第一滤波器的滤波器系数,那么解码器在根据第一运动矢量确定第一滤波参数时,可以先确定第一比例参数;然后再根据第一比例参数和第一运动矢量,确定第一滤波参数。
示例性的,在本申请中,如果第一滤波参数为第一滤波器的滤波器相位,那么解码器在根据第一运动矢量确定第一滤波参数时,可以先确定第一相位与运动矢量的映射表;然后再根据第一相位与运动矢量的映射表和第一运动矢量,确定第一滤波参数。
进一步地,在本申请的实施例中,在进行基于点的预测时,对于当前块的一像素点,解码器可以根据第二运动矢量确定第二滤波参数;然后可以基于第二滤波参数,利用第二滤波器进行滤波处理,获得第二预测值。
具体地,在本申请中,第二滤波器可以为以下滤波器中的任意一种:m抽头的插值滤波器、可分离的二维滤波器、不可分离的二维滤波器;其中,m为以下值中的任一者:8,6,5,4,3,2。
可以理解的是,在本申请中,m可以小于或者等于n,即基于子块的预测可以使用抽头数较多的滤波器,基于点的预测可以使用抽头数较少的滤波器。
需要说明的是,在本申请的实施例中,第二滤波器的第二滤波参数可以包括该第二滤波器的滤波器系数,还可以包括该第二滤波器的滤波器相位,本申请不作具体限定。
示例性的,在本申请中,如果第二滤波参数为第二滤波器的滤波器系数,那么解码器在根据第二运动矢量确定第二滤波参数时,可以先确定第二比例参数;然后再根据第二比例参数和第二运动矢量,确定第二滤波参数。
示例性的,在本申请中,如果第二滤波参数为第二滤波器的滤波器相位,那么解码器在根据第二运动矢量确定第二滤波参数时,可以先确定第二相位与运动矢量的映射表;然后再根据第二相位 与运动矢量的映射表和第二运动矢量,确定第二滤波参数。
也就是说,在本申请的实施例中,基于子块的预测的第一滤波器和基于点的预测的第二滤波器可以分别采用不同的形式,具体地,可以使用不同的方式分别确定第一滤波器的第一滤波系数和第二滤波器的第二滤波系数。如基于子块的预测使用如上表1所示的根据分像素的运动矢量确定相位从表中确定的系数的形式。基于点的预测既可以使用根据分像素的运动矢量确定相位从表中确定系数的形式,也可以使用根据分像素的运动矢量计算出系数的形式。
示例性的,在本申请的实施例中,解码器在确定当前块的每一个子块中的像素点的第一预测值时,也可以先确定每一个子块与当前块之间的运动矢量偏差;然后再基于运动矢量偏差,确定每一个子块中的像素点的第一预测值。
需要说明的是,在本申请中,第一比例参数或第二比例参数可以包括至少一个比例值,其中,至少一个比例值均为非零实数。
进一步地,在本申请的实施例中,解码器基于运动矢量计算获得的滤波器系数中的任意一个滤波器系数,可以为该运动矢量的一次函数(多项式)、二次函数(多项式)或者高次函数(多项式),本申请不作具体限定。
也就是说,在本申请中,解码器在按照预设计算规则中不同的计算方法计算获得多个像素点对应的多个滤波器系数中,部分滤波器系数可以为运动矢量的一次函数(多项式),即两者为线性关系,还可以为第运动矢量的二次函数(多项式)或高次函数(多项式),即两者为非线性关系。
在一些场景中,即使不先进行第一运动矢量的计算,也可以确定出子块的第一预测值量。例如,双向光流,在AVS中简称BIO,在VVC中简称BDOF,利用双向光流计算子块与当前块的运动矢量偏差,然后利用光流原理根据梯度、运动矢量偏差以及当前的预测值得到新的预测值。
需要说明的是,在本申请中,在一些场景中,针对一个块(编码块或预测块),如4x4的块,作为一个整体进行计算,如运动矢量偏差的计算、预测值的修正等的计算,也可以按照本申请中的子块的思想来处理。
需要说明的是,在本申请的实施例中,当前块为当前帧中待解码的图像块,当前帧以图像块的形式按一定顺序依次进行解码,该当前块为当前帧内按该顺序下一时刻待解码的图像块。当前块可具有多种规格尺寸,例如1616、3232或3216等规格,其中数字表示当前块上像素点的行数和列数。
进一步对,在本申请的实施例中,当前块可以划分为多个子块,其中,每一个子块的尺寸大小都是相同的,子块为较小规格的像素点集合。子块的尺寸可以为8x8或4x4。
示例性的,在本申请中,当前块的尺寸为1616,可以划分为4个尺寸均为8x8的子块。
可以理解的是,在本申请的实施例中,在解码器解析码流获取到预测模式参数指示使用帧间预测模式确定当前块的帧间预测值的情况下,就可以继续采用本申请实施例所提供的帧间预测方法。
进一步地,在本申请的实施例中,解码器可以将当前块的一个子块作为参考块;然后利用参考块的第一运动矢量确定参考块中的像素点的第一预测值,利用参考块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值;其中,参考块包括一个或多个像素点。
需要说明的是,在本申请的实施例中,由于当前块中包括有一个或多个子块,同时,当前块中包括有一个或多个像素点,因此,如果一个像素点属于一个子块,那么可以在基于该子块进行预测的同时,还以利用该子块中的像素点对该像素点进行基于点的预测。也就是说,解码器在进行基于子块的预测和基于点的预测时,基于点的预测与基于子块的预测可以共享同一个参考块,其中,参考块即插值滤波需要用到的参考像素组成的块。具体地,对一个子块,可以将组成该子块的各个像素点确定为一个参考块,该子块进行基于子块的预测使用的参考块和每个点进行基于点的预测使用的参考块都在这个确定的参考块内。优选地,可以将基于子块的预测和对应子块内的点的基于点的预测同时进行,或者将基于子块的预测和对应子块内的点的基于点的预测连续进行,从而避免参考像素的反复读入缓存。
可以理解的是,在本申请中,如果基于点的预测与基于子块的预测可以共享同一个参考块,那么解码器可以对基于点的预测的MV进行限制从而可以对是否增加带宽进行限制。例如,基于子块的预测使用水平垂直可分离的8抽头滤波器,基于点的预测使用水平垂直可分离的4抽头滤波器,那么左上角的点的MV向左或向上超过子块的MV2个像素,该点需要用的参考块都不会超过子块的参考块。那么右上角的点的MV向右或向上超过子块的MV2个像素,该点需要用的参考块都不会超过子块的参考块,相应地,子块内部的点的可以活动的范围更大。
进一步地,也可以适当放宽点的MV的限制,可以对性能和复杂度进行权衡,适当增加参考块的大小。
步骤103、对于当前块内的一像素点,确定像素点的第一权重和第二权重;其中,第一权重对应第一预测值,第二权重对应第二预测值。
在本申请的实,对于当前块内的一个像素点,解码器可以分别确定该像素点的第一权重和第二权重;其中,第一权重对应第一预测值,第二权重对应第二预测值。具体地,同一个像素点的第一权重与第二权重可以相同,也可以不同。
需要说明的是,在本申请的实施例中,对于当前块中的一个像素点,解码器可以分别通过基于子块的预测和基于点的预测获得第一预测值和第二预测值,相应地,解码器也可以对这两个预测值进行权重值的设置,从而确定与第一预测值对应的第一权重,和与第二预测值对应的第二权重。
可以理解的是,在本申请中,对于当前块中的一个像素点,第一权重即为解码器基于子块的预测所对应的权重值,第二权重即为解码器基于点的预测所对应的权重值。
进一步地,在本申请的实施例中,解码器可以使用多种不同的方式分别确定第一权重和第二权重,其中,解码器可以采用相同的方法确定第一权重和第二权重,也可以采用不同的方法确定第一权重和第二权重。
示例性的,在本申请中,解码器在确定当前块中的一个像素的、基于子块的预测所对应的第一权重时,可以先确定像素点对应的目标子块;其中,该目标子块中包括该像素点,即确定出该像素点属于当前块的多个子块中的哪一个子块;然后可以确定像素点的像素位置与目标子块的参考位置之间的第一距离;其中,参考位置为目标子块的第一运动矢量所使用的位置;最后,解码器可以按照第一距离确定第一权重;其中,第一距离与第一权重成反比,即第一距离越大,说明该像素点的像素位置距离参考位置越远,那么该像素点对应的第一权重越小。
也就是说,在本申请中,基于子块的预测,解码器对像素位置与子块的第一运动矢量所使用的像素位置较近的权重较大,对像素位置与子块的第一运动矢量使用的像素位置较远的权重较小。
示例性的,在本申请中,解码器在确定当前块中的一个像素的、基于子块的预测所对应的第一权重时,可以先确定像素点对应的目标子块;其中,该目标子块中包括该像素点,即确定出该像素点属于当前块的多个子块中的哪一个子块;然后可以确定像素点的运动矢量与目标子块的第一运动矢量之间的偏差值;最后,可以进一步按照偏差值确定第一权重;其中,偏差值与第一权重成反比,即偏差值越小,说明该像素点的运动矢量与目标子块的第一运动矢量越接近,那么该像素点对应的第一权重越大。
也就是说,在本申请中,基于子块的预测,解码器对像素点的运动矢量与子块的第一运动矢量较接近的权重较大,对像素点的运动矢量与子块的第一运动矢量差距较大的权重较小。
示例性的,在本申请中,解码器在确定当前块中的一个像素的、基于点的预测所对应的第二权重时,可以先确定像素点在参考图像中的对应的分像素和整像素;然后可以确定分像素和整像素之间的第二距离;最后可以按照第二距离确定第二权重;其中,第二距离与第二权重成反比,即第二距离越大,说明分像素和整像素之间的距离越远,那么该像素点对应的第二权重越小。
也就是说,在本申请中,基于点的预测,解码器对像素点的素位置对应的参考图像中的分像素位置离整像素位置较近的权重较大,像素点的像素位置对应的参考图像中的分像素位置离整像素较远的权重较小。
示例性的,在本申请中,解码器在确定当前块中的一个像素的、基于点的预测所对应的第二权重时,可以先像素点的运动矢量的绝对值;然后可以进一步按照绝对值确定第二权重;其中,绝对值与第二权重成反比,即绝对值越小,对应的第二权重越大。
也就是说,在本申请中,基于点的预测,解码器对像素点的运动矢量绝对值越小的权重较大,对像素点的运动矢量绝对值越大的权重较小。例如,像素点的运动矢量为(1/4,1/4)时对应的第二权重,大于运动矢量为(1/2,1/2)时对应的第二权重。
可以理解的是,在本申请中,解码器在对第一权重和第二权重进行设置时可以采用不同的方式,也可以采用相同的方式。
进一步地,在本申请中,基于子块的预测的第一权重的设置可以使用与交织预测类似的方法,即基于子块的预测对像素位置与子块的第一运动矢量使用的像素位置较近的设置第一权重较大,对像素位置与子块的第一运动矢量使用的像素位置较远的设置第一权重较小。
示例性的,图10为第一权重的示意图一,如图10所示,将与子块的第一运动矢量使用的像素位置较近的像素位置所对应的第二权重设置为4,将与子块的第一运动矢量使用的像素位置较远的像素位置所对应的第二权重设置为1。其中,本申请不限制第二权重的具体取值。
示例性的,图11为第一权重的示意图二,如图11所示,将与子块的第一运动矢量使用的像素 位置较近的像素位置所对应的第二权重设置为3,将与子块的第一运动矢量使用的像素位置较远的像素位置所对应的第二权重设置为1。其中,本申请不限制第二权重的具体取值。
进一步地,在本申请中,基于点的预测的第二权重的设置可以使用与基于子块的预测的第二权重不同的设置方法。例如,解码器可以将像素点的像素位置对应的参考图像中的分像素位置离整像素较近的设置第二权重较大,将像素点的像素位置对应的参考图像中的分像素位置离整像素较远的设置第二权重较小。或像素点的运动矢量离整数较近的设置第二权重较大,像素点的运动矢量离整数较远的设置第二权重较小。
示例性的,在本申请中,像素点的运动矢量是(1/4,1/4)的像素位置的第二权重比像素点的运动矢量是(1/2,1/2)的像素位置的第二权重大。
进一步地,在本申请中,如果解码器先对第二滤波器的位置进行确定,即解码器先确定出当前像素对应的整像素的运动矢量和分像素的运动矢量,那么在基于点的预测的第二权重的设置时,将分像素的运动矢量的绝对值越大的像素位置设置第二权重越小,将分像素的运动矢量的绝对值越小的像素位置设置第二权重越大。
示例性的,在本申请中,第二权重w由分像素的运动矢量(x,y)导出的方法为:
w=clip3(0,1,1-abs(x)-abs(y))
其中abs表示绝对值,clip3(a,b,c)表示如果c小于a,结果取a,如果c大于b,结果取b,否则结果取c。具体地,这是归一化的表达是,x和y的1表示1个像素,也可以为了计算方便,如用移位去掉分数/小数,对这个式子进行变形。
可以理解的是,在本申请中,为了与基于子块的预测值的第一权重匹配,第二权重w可以乘以一个倍数等。
可以理解的是,本申请实施例提出的帧间预测方法对解码器执行步骤102和步骤103的顺序不进行限定,也就是说,在本申请中,解码器可以先执行步骤102,然后执行步骤103,也可以先执行步骤103,再执行步骤102,还可以同时执行步骤102和步骤103。
步骤104、基于第一权重、第二权重、第一预测值以及第二预测值,确定像素点的预测值。
在本申请的实施例中,解码器在基于子块的预测获得第一预测值和对应的第一权重,同时基于点的预测获得第二预测值和对应的第二权重之后,便可以利用第一权重、第二权重、第一预测值以及第二预测值,获得当前块中的一个像素点的预测值。
可以理解的是,在本申请的实施例中,解码器在进行基于子块的预测和基于点的预测之后,针对当前块中的一个像素点,可以对在确定出该像素点分别对应的第一权重和第二权重之后,利用第一权重和第二权重对第一预测值和第二预测值进行进行加权平均,从而可以获得该像素点的预测值。
图12为帧间预测方法的实现流程示意图二,如图12所示,在根据像素点的预测值,确定当前块的第三预测值之前,即步骤105之前,解码器进行帧间预测的方法还可以包括以下步骤:
步骤106、对于当前块中的一像素点,基于第一预测值和第二预测值,确定像素点的预测值。
在本申请的实施例中,解码器在基于子块的预测获得第一预测值,同时基于点的预测获得第二预测值之后,便可以利用第一预测值和第二预测值,获得当前块中的一个像素点的预测值。
可以理解的是,在本申请的实施例中,与步骤104相比,解码器也可以在分别获得第一预测值和第二预测值之后,直接对相同的像素点的第一预测值和第二预测值进行平均运算,获得该像素点的预测值。
也就是说,在本申请中,解码器也可以不对第一预测值和第二预测值进行加权平均运算,而是直接利用这两个预测值确定最终的预测结果。
需要说明的是,在本申请中,也可以将步骤106所提出的方法作为步骤104的其中一种情况,即第一权重和第二权重相等的情况。
步骤105、根据像素点的预测值,确定当前块的第三预测值;其中,第三预测值用于确定当前块的重建值。
在本申请的实施例中,解码器在基于第一权重、第二权重、第一预测值以及第二预测值,确定像素点的预测值之后,进而可以根据像素点的预测值,确定出当前块的第三预测值。
需要说明的是,在本申请中,解码器可以按照上述方法对当前块中的全部像素点进行滤波处理,利用当前块中的全部像素点的预测值进行当前块的第三预测值的确定,也可以对当前块中的部分像素点进行滤波处理,利用当前块中的部分像素点的预测值进行子块的第三预测值的确定。
可以理解的是,在本申请的实施例中,第三预测值用于确定当前块的重建值。
进一步地,在本申请的实施例中,解码器可以在遍历当前块中的全部像素点或部分像素点之后, 对当前块的全部像素点或部分像素点的预测值进行加法运算,获得求和结果,最后可以对加法结果进行归一化处理,最终便可以获得当前块的第三预测值。
在本申请的实施例中,进一步地,上述步骤101至步骤106提出的帧间预测方法,既可以应用于单向预测,也可以应用于双向预测。
具体地,图13为单向预测的示意图,如图13所示,解码器对当前块使用基于子块的预测得到一组预测值,即第一预测值,进而生成基于子块的预测块,同时对当前块使用基于点的预测得到另一组预测值,即第二预测值,进而生成基于点的预测块,针对相同的像素点的两个预测值进行加权平均,便可以得到该像素点的预测值,最终获得当前块的预测快。
进一步地,在本申请的实施例中,图14为帧间预测方法的实现流程示意图三,如图14所示,解码器进行帧间预测的方法还可以包括以下步骤:
步骤201、解析码流,确定帧间预测方向。
步骤202、若帧间预测方向为双向预测,则基于第一预测方向,利用每一个子块的第一运动矢量确定每一个子块中的像素点的第四预测值,利用每一个像素点的第二运动矢量确定每一个像素点的第五预测值;基于第二预测方向,利用每一个子块的第一运动矢量确定每一个子块中的像素点的第六预测值,利用每一个像素点的第二运动矢量确定每一个像素点的第七预测值。
步骤203、对于当前块的一像素点,基于第一预测方向,确定像素点的第三权重和第四权重;基于第二预测方向,确定像素点的第五权重和第六权重。
步骤204、基于第三权重、第四权重、第四预测值以及第五预测值,获得像素点的、第一预测方向对应的预测值,基于第五权重、第六权重、第六预测值以及第七预测值,获得像素点的、第二预测方向对应的预测值。
步骤205、根据第一预测方向对应的预测值和第二预测方向对应的预测值,确定像素点的预测值。
相比之下,图15为双向预测的示意图一,如图15所示,对于第一参考方向和第二参考方向,解码器可以对每一个单向预测分别进行基于子块的预测和基于点的预测,针对相同的像素点,获得该预测方向所对应的两个预测值,例如第四预测值和第五预测值,最终便可以获得每个参考方向上的基于子块的预测块和基于点的预测块,然后通过第三权重和第四权重的加权平均,获得该像素点在该预测方向上的预测值,以分别获得第一参考方向和第二参考方向的预测块。最后根据每个预测方向上的该像素点的预测值,计算获得该像素点最终的预测结果,即获得当前块对应的预测块。
也就是说,在本申请中,解码器在进行双向预测时,针对其中的每一个单向预测,对当前块使用基于子块的预测得到一组预测值,同时对当前块使用基于点的预测得到另一组预测值,针对相同的像素点的两个预测值进行加权平均,便可以得到该像素点的预测值。然后再将两个单向预测的预测值进行平均(或加权平均),最终便可以得到双向预测的预测值。
需要说明的是,在本申请中,帧间预测处理过程中的平均运算或加权平均运算可以在需要进行平均或加权平均的整个预测块都得出来以后再进行,也可以在需要进行平均或加权平均的子块的预测块都得出来以后再进行,还可以在需要进行平均或加权平均的点的预测块都得出来以后再进行,本申请不作具体限定。
进一步地,在本申请的实施例中,图16为帧间预测方法的实现流程示意图四,如图16所示,解码器进行帧间预测的方法还可以包括以下步骤:
步骤201、解析码流,确定帧间预测方向。
步骤202、若帧间预测方向为双向预测,则基于第一预测方向,利用每一个子块的第一运动矢量确定每一个子块中的像素点的第四预测值,利用每一个像素点的第二运动矢量确定每一个像素点的第五预测值;基于第二预测方向,利用每一个子块的第一运动矢量确定每一个子块中的像素点的第六预测值,利用每一个像素点的第二运动矢量确定每一个像素点的第七预测值。
步骤203、对于当前块的一像素点,基于第一预测方向,确定像素点的第三权重和第四权重;基于第二预测方向,确定像素点的第五权重和第六权重。
步骤206、基于第三权重、第四权重、第五权重、第六权重、第四预测值、第五预测值、第六预测值以及第七预测值,确定像素点的预测值。
相比之下,图17为双向预测的示意图二,如图17所示,对于第一参考方向和第二参考方向,解码器可以对每一个单向预测分别进行基于子块的预测和基于点的预测,针对相同的像素点,获得该预测方向所对应的两个预测值,例如第四预测值和第五预测值,最终便可以获得每个参考方向上的基于子块的预测块和基于点的预测块,并在确定每一个单向预测上的两个预测值之后,可以通过 每一个预测值对应的权重进行加权平均计算,最终获得该像素点最终的预测结果,即获得当前块对应的预测块。
也就是说,在本申请中,解码器在进行双向预测时,针对其中的每一个单向预测,对当前块使用基于子块的预测得到一组预测值,同时对当前块使用基于点的预测得到另一组预测值,然后再将两个单向预测的四个预测值进行平均(或加权平均),最终便可以得到双向预测的预测值。
可见,对于双向预测,解码器可以在确定两个预测方向的各自的预测值之后再平均或加权平均运算,也可以不分别计算每一个预测方向的预测值,而是直接由第一预测方向基于子块的预测块、第一预测方向基于点的预测块、第二预测方向基于子块的预测块和第二预测方向基于点的预测块加权平均得到。
可以理解的是,在本申请中,平均运算可以认为是一种特殊的加权平均运算,像素点像素位置在部分场景中可以理解为相同概念的不同表达方式。
进一步地,本申请提出的帧间预测方法,可以只用于亮度分量,也可以用于亮度分量和色度分量,还可以用于其他任何格式,如RGB等的某个或某几个或所有分量。本申请实施例以亮度分量为例进行说明,但并不局限于亮度分量。
也就是说,本申请提出的帧间预测方法,可以适用于任何一个图像分量上,在本实施例中示例性的对亮度分量使用预测方案,但是也可以用于色度分量,或者其他格式的任一分量。本申请提出的帧间预测方法也可以适用于任何一种视频格式上,包括但不限于YUV格式,包括但不限于YUV格式的亮度分量。
本实施例提供了一种帧间预测方法,可以对当前块使用基于子块的预测,获得一组预测值,即第一预测值,同时对当前块使用基于点的预测,获得另一组预测值,即第二预测值,并在对当前块中的相同像素点进行基于子块的预测的第一权重和基于点的预测的第二权重的确定之后,使用第一权重和第二权重对第一预测值和第二预测值进行加权平均,最终获得当前块的新的预测值,从而可以在提高帧间预测的精确性的同时,降低计算的复杂度,减小带宽,进而大大提升编码性能,提高了编解码效率。
基于上述实施例,在本申请中,如果使用水平垂直可分离的8抽头滤波器对每一个像素点分别进行预测的话,每个像素点需要对应插值8+1共9个点,而4x4的子块中每个像素点平均需要对应插值3.75个点,可以看出,这样计算复杂度会比基于子块的预测高很多,同时带宽也会大大增加,因此,本申请提出使用较为简单的预测方法来进行基于点的预测。例如,基于子块的预测所对应的滤波器使用8抽头滤波器,而基于点的预测所对应的滤波器使用4抽头滤波器。
示例性的,在本申请中,在进行基于点的预测时,解码器可以使用水平垂直可分离的4抽头滤波器。更进一步地,解码器可以直接复用目前常见的基于子块的预测的4抽头滤波器,该4抽头滤波器目前主要应用于色度分量插值处理。AVS3用于仿射的基于子块的色度的滤波器系数如表2所示:
表2
示例性的,在本申请中,解码器还可以使用3x3的滤波器进行基于点的预测,其中,3x3的滤波器可以为水平垂直不可分离的滤波器,也可以为水平垂直可分离的3抽头的滤波器。相比之下,使用3x3的滤波器进行基于点的预测的计算复杂度和对带宽的压力都比使用4抽头的滤波器更小。
具体地,在本申请中,以水平垂直可分离的3抽头滤波器为例,在进行基于点的预测时。每个像素点需要插值水平方向的3个中间点和垂直方向的1个点,共4个点,由于只有3个抽头,因此只需要12次乘法。而大小为4x4的子块平均每个点需要插值3.75个点,如果使用8抽头的滤波器,平均需要30次乘法,如果使用6抽头滤波器,平均需要22.5次乘法。
进一步地,在本申请的实施例中,如果使用水平垂直可分离的3抽头滤波器,由于3抽头的滤波器的中心就在中间那个抽头的位置,因此可以将分像素的运动矢量设置为负值。具体地。在设置3抽头滤波器的分像素的运动矢量时,可以将分像素的运动矢量设置在-1/2像素至1/2像素的区间中。
例如,如果一个像素点的运动矢量是1/4像素,那么解码器可以以该像素点在参考图像中对应位置的像素点为中心,分像素的运动矢量为1/4。图18为插值滤波的示意图一,如图18所示,像素点1是当前像素2在参考图像中对应位置的像素点,可以使用以像素点1为中心的3个像素点对当前像素2进行插值滤波。
例如,如果一个像素点的运动矢量是3/4像素,那么解码器可以以该像素点在参考图像中的、右边一个像素点为中心,分像素的运动矢量为-1/4。图19为插值滤波的示意图二,如图19所示,像素点1是当前像素2在参考图像中对应位置的像素点,像素点3是当前像素2右边的一个像素点,可以使用以像素点3为中心的3个像素点对当前像素2进行插值滤波。
进一步地,在本申请的实施例中,如果使用水平垂直可分离的3抽头滤波器,在设置3抽头滤波器的分像素的运动矢量时,还可以将分像素的运动矢量设置在-1像素至1像素的区间中。
例如,如果一个像素点的运动矢量是3/4像素,那么解码器可以以该像素点在参考图像中对应位置的像素点为中心,分像素的运动矢量为3/4像素,图20为插值滤波的示意图三,如图20所示,像素点1是当前像素2在参考图像中对应位置的像素点,可以使用以像素点1为中心的3个像素点对当前像素2进行插值滤波。
进一步地,在本申请的实施例中,在进行基于点的预测时,还可以先确定出每一个像素点所使用的滤波器的位置,然后再基于滤波器的位置直接进行分像素的运动矢量的计算,最后根据滤波器所使用的3个点进行插值滤波。
例如,解码器可以在参考图像中确定与当前像素相同位置的像素点,并将该像素点作为当前像素对应的滤波器的中心。具体地,如果一个像素点的运动矢量5/4像素,那么对应的分像素的运动矢量也为5/4像素,整像素的运动矢量为0像素。图21为插值滤波的示意图四,如图21所示,像素点1是当前像素2在参考图像中对应位置的像素点,可以使用以像素点1为中心的3个像素点对当前像素2进行插值滤波。这种场景下,可以整像素的运动矢量称为运动矢量1,将分像素的运动矢量称为运动矢量2,其中,运动矢量1为0像素,运动矢量2为5/4像素。
可以理解的是,在本申请中,上述插值滤波方法可以根据统一的规则为一组像素点设置滤波器使用的参考像素的位置,从而在实现方面更简便。例如,对同一个子块的各个像素点设置相同的运动矢量1,进而可以使各个像素点的滤波器使用的参考像素都是有规律排列的,类似于基于子块的 预测每个点所使用的参考像素的规律,只是基于点的预测使用的参考像素个数更少。相应地,对于硬件也可以实现参考像素的统一读取,且对于软件的并行操作,如单指令多数据流(Single Instruction Multiple Data,SIMD),也更有利,从而可以减小控制带宽。
示例性的,图22为插值滤波的示意图五,如图22所示,像素点A、B、C、D是当前块中的相邻4个像素点分别在参考图像中的相同位置所对应的参考像素单,像素点a、b、c、d则分别表征它们在参考图像中的实际的位置,如果设置分像素的运动矢量的取值范围是-1/2像素到1/2像素,那么在基于点的预测时,使用的水平垂直可分离的3抽头滤波器中的水平方向的滤波器分别如图中的四个水平方框,可以看到,像素点A和像素点B的滤波器在水平方向相差1个像素,但像素点A和像素点C的滤波器在水平方向相差2个像素,像素点D和像素点C的滤波器在水平方向相差了1个像素。
示例性的,图23为插值滤波的示意图六,如图23所示,像素点A、B、C、D是当前块中的相邻几个像素点分别在参考图像中的相同位置所对应的参考像素单,像素点a、b、c、d则分别表征它们在参考图像中的实际的位置,如果先确定滤波器的位置,那么在基于点的预测时,使用的水平垂直可分离的3抽头滤波器中的水平方向的滤波器的中心则分别为这几个像素点对应的位置,即整像素的运动矢量(运动矢量1)均为0,进而可以确定这相邻4个像素点对应的水平方向的滤波器之间也都相差1个像素。
进一步地,在本申请的实施例中,在确定一组像素点的滤波器的位置时,即在确定一组像素点的运动矢量1(整像素的运动矢量)时,可以按照将该组像素点对应的运动矢量2(分像素的运动矢量)较为均匀地分散在0附近的原则来执行。具体地,可以在确定出该组像素点对应的运动矢量2之后,对这些运动矢量2进行求和计算,然后可以根据最小求和结果所对应的位置确定为这组像素点的滤波器的位置,也就是说,解码器可以将该组像素点对应的运动矢量2的和最小时所对应的整像素的运动矢量确定为这组像素点对应的运动矢量1。
可以理解的是,在本申请中,上述方法提出的一组像素点可以为基于子块的预测划分的子块的像素点,也可以是基于子块的预测划分的子块再划分的组,如将一个4x4的子块再分成4个2x2的组。也可以与基于子块的预测划分的子块有“交织”,但是由于各点之间没有数据依赖,不共享插值的中间结果,因此复杂度较交织预测更低。
进一步地,在本申请中,解码器还可以按照其他多种方式来进一步确定基于点的预测的第二滤波器。例如,解码器可以使用函数或多项式的形式确定第二滤波器的第二滤波参数,其中,函数或多项式可以包括样条函数、分段函数等。解码器还可以使用查表(相位与运动矢量的映射表)的形式进一步确定第二滤波器的第二滤波参数。本申请不作具体限定。
示例性的,在本申请中,如果在基于点的预测时使用的第二滤波器为3抽头的滤波器,那么,假设当前像素的位置所对应的的分像素的运动矢量(运动矢量2)为(mv_x,mv_y)那么,第二滤波器的水平方向的第二滤波参数,即滤波器的系数可以表示为下表3:
表3
像素点 | 滤波器系数 |
左 | mv_x×mv_x-mv_x/2 |
中心 | 1-2×mv_x×mv_x |
右 | mv_x×mv_x+mv_x/2 |
第二滤波器的垂直方向的第二滤波参数,即滤波器的系数可以表示为下表4:
表4
像素点 | 滤波器系数 |
上 | mv_y×mv_y-mv_y/2 |
中心 | 1-2×mv_y×mv_y |
下 | mv_y×mv_y+mv_y/2 |
需要说明的是,在本申请中,解码器基于当前像素对应的分像素的运动矢量,按照预设计算规则计算获得的滤波器系数可以认为是一个关于mv_x或mv_y的函数(多项式)。但是由于可分离滤波器在水平方向或垂直方向上的滤波器仅仅有3个抽头,因此,当分像素点偏离中心较多时,使用相同的计算规则,即利用相同的简单函数(如一次、二次函数)计算获得的滤波器系数准确性可能较差。
为了提高滤波器系数的准确性,在本申请中,在使用当前像素对应的分像素的运动矢量计算滤波器系数时,可以采用分段函数来取代原有的简单函数,也就是说,可以通过分段函数计算至少一 个滤波器系数,即第二滤波系数。
可以理解的是,在本申请中,分段函数可以称作样条函数(spline function)。示例性的,当mv_x或mv_y的值(绝对值)小于(或等于)一个阈值时,可以使用一个函数(多项式)导出对应的滤波器系数,而当mv_x或mv_y的值(绝对值)大于(或等于)该阈值时,使用另外一个函数(多项式)导出对应的滤波器系数。即采用两段式的分段函数进行滤波器系数的计算。
进一步地,在本申请的实施例中,也可以采用三段式或多段式的分段函数进行滤波器系数的计算。
具体地,在本申请中,在计算像素点对应的多个滤波器系数中的不同滤波器系数时,可以使用相同的分段函数,也可以使用不同的分段函数;在计算像素点对应的多个滤波器系数中的不同滤波器系数时,针对mv_x或mv_y所使用的的阈值可能全部相同也可能不全相同。
进一步地,在本申请的实施例中,解码器在计算滤波器系数的过程中,还可以使用预设上限值和\或预设下限值对最终的计算结果进行限制。例如,当计算获得的滤波器系数大于或者等于预设上限值时,直接将该预设上限值作为对应的滤波器系数进行导出,或者,当计算获得的滤波器系数小于或者等于预设下限值时,直接将该预设下限值作为对应的滤波器系数进行导出。
可以理解的是,本申请提出的分段函数方式或限制大小方式不仅可以作用于可分离滤波器中,也可以应用于常见的二维滤波器,即水平垂直不可分离的二维滤波器,具体地,针对滤波器的至少一个系数,可以按照分段函数进行计算,或者,可以按照预设上限值和预设下限值对最终计算结果的大小进行限制。
需要说明的是,在本申请中,对滤波器系数的大小进行限制的方式可以理解为更加具体的分段函数,因此,解码器在计算滤波器系数时,可以同时采用分段函数的方式和限制大小的方式。
进一步地,在本申请中,如果第二滤波器的第二滤波参数为滤波器相位,那么解码器在确定第二滤波参数时,可以先确定第二相位与运动矢量的映射表,然后再根据第二相位与运动矢量的映射表和第二运动矢量,确定像素点对应的滤波器相位,即第二滤波参数。
需要说明的是,在本申请中,解码器在确定第一相位与运动矢量的映射表或第二相位与运动矢量的映射表时,既可以通过训练获得,也可以通过计算获得。
也就是说,在本申请的实施例中,第一相位与运动矢量的映射表或第二相位与运动矢量的映射表既可以是通过一定的计算公式推导获得的,也可以是直接训练获得的。其中,在计算获得相位与运动矢量的映射表时,也可以按照分段函数的方式进行推导,还可以根据其他更加复杂的公式推导出来。当然,也可以有不必根据公式推导出来的滤波器相位,而是训练出来的滤波器相位。
在本申请的实施例中,如果运动矢量的精度较高,或者在进行滤波时使用的运动矢量的精度较高,或者mv_x或mv_y的可能的值很多,或者根据运动矢量计算系数复杂度不高,那么采用通过运动矢量和比例参数计算滤波器系数的方式进行滤波参数的确定比较合理。然而,如果运动矢量的精度不高,或者在进行滤波时使用的运动矢量的精度不高,或者说mv_x或mv_y的可能的值不是很多,或者根据运动矢量计算系数复杂度较高,那么可以优选将滤波参数确定为滤波器相位,即将可分离滤波器做成多个相位,每个相位有一组固定的系数的形式。
示例性的,如果进行滤波时的运动矢量精度是1/16像素精度,最大值是16/16像素,最小值是-16/16像素,那么总共有33个可能的mv_x或mv_y的值。例如,相位与运动矢量的映射表如表5所示,其中,对于水平方向,mv对应像素点在水平方向的运动矢量差值mv_x,coef0是该像素点左边的相邻像素点的系数,coef1是该像素点的系数,coef2是该像素点右边的相邻像素点的系数。对于垂直方向,mv对应像素点在垂直方向的运动矢量差值mv_y,coef0是该像素点上边的相邻像素点的系数,coef1是该像素点的系数,coef2是该像素点下边的相邻像素点的系数。
进一步地,在本申请的实施例中,解码器可以确定运动矢量的精度参数,并基于精度参数确定缩小参数;从而可以在利用滤波器相位进行滤波处理之后,按照缩小参数进行缩小处理和/或右移处理。
可以理解的是,在本申请中,如果进行滤波时的运动矢量精度是1/16像素精度,那么滤波器系数都放大了256倍,因此,在完成滤波处理,获得滤波结果之后,需要将滤波结果缩小256倍,或右移8位。
进一步地,在本申请中,缩小或右移可以在单向滤波后分别进行;也可以在水平垂直滤波都处理完后进行;其中,如果在单向滤波后分别进行缩小或右移,那么需要调整缩小的倍数或右移的位数,从而保证总的缩小倍数或右移位数一致与滤波器系数的放大倍数一致。
表5
mv | coef0 | coef1 | coef2 |
-16 | 256 | 0 | 0 |
-15 | 240 | 16 | 0 |
-14 | 224 | 32 | 0 |
-13 | 208 | 48 | 0 |
-12 | 192 | 64 | 0 |
-11 | 176 | 80 | 0 |
-10 | 160 | 96 | 0 |
-9 | 144 | 112 | 0 |
-8 | 128 | 128 | 0 |
-7 | 105 | 158 | -7 |
-6 | 84 | 184 | -12 |
-5 | 65 | 206 | -15 |
-4 | 48 | 224 | -16 |
-3 | 33 | 238 | -15 |
-2 | 20 | 248 | -12 |
-1 | 9 | 254 | -7 |
0 | 0 | 256 | 0 |
1 | -7 | 254 | 9 |
2 | -12 | 248 | 20 |
3 | -15 | 238 | 33 |
4 | -16 | 224 | 48 |
5 | -15 | 206 | 65 |
6 | -12 | 184 | 84 |
7 | -7 | 158 | 105 |
8 | 0 | 128 | 128 |
9 | 0 | 112 | 144 |
10 | 0 | 96 | 160 |
11 | 0 | 80 | 176 |
12 | 0 | 64 | 192 |
13 | 0 | 48 | 208 |
14 | 0 | 32 | 224 |
15 | 0 | 16 | 240 |
16 | 0 | 0 | 256 |
本实施例提供了一种帧间预测方法,可以对当前块使用基于子块的预测,获得一组预测值,即第一预测值,同时对当前块使用基于点的预测,获得另一组预测值,即第二预测值,并在对当前块中的相同像素点进行基于子块的预测的第一权重和基于点的预测的第二权重的确定之后,使用第一权重和第二权重对第一预测值和第二预测值进行加权平均,最终获得当前块的新的预测值,从而可以在提高帧间预测的精确性的同时,降低计算的复杂度,减小带宽,进而大大提升编码性能,提高了编解码效率。
图24为帧间预测方法的实现流程示意图五,如图24所示,编码器进行帧间预测的方法可以包括以下步骤:
步骤401、确定当前块的预测模式参数。
在本申请的实施例中,编码器可以先确定当前块的预测模式参数。具体地,编码器可以先确定当前块使用的预测模式,然后基于该预测模式确定对应的预测模式参数。其中,预测模式参数可以用于对当前块所使用的预测模式进行确定。
需要说明的是,在本申请的实施例中,预测模式参数指示了当前块采用的预测模式以及与该预 测模式相关的参数。这里,针对预测模式参数的确定,可以采用简单的决策策略,比如根据失真值的大小进行确定;也可以采用复杂的决策策略,比如根据率失真优化(Rate Distortion Optimization,RDO)的结果进行确定,本申请实施例不作任何限定。通常而言,可以采用RDO方式来确定当前块的预测模式参数。
具体地,在一些实施例中,编码器在确定当前块的预测模式参数时,可以先利用多种预测模式对当前块进行预编码处理,获得每一种预测模式对应的率失真代价值;然后从所获得的多个率失真代价值中选择最小率失真代价值,并根据最小率失真代价值对应的预测模式确定当前块的预测模式参数。
也就是说,在编码器侧,针对当前块可以采用多种预测模式分别对当前块进行预编码处理。这里,多种预测模式通常包括有帧间预测模式、传统帧内预测模式和非传统帧内预测模式;其中,传统帧内预测模式可以包括有直流(Direct Current,DC)模式、平面(PLANAR)模式和角度模式等,非传统帧内预测模式可以包括有基于矩阵的帧内预测(Matrix-based Intra Prediction,MIP)模式、跨分量线性模型预测(Cross-component Linear Model Prediction,CCLM)模式、帧内块复制(Intra Block Copy,IBC)模式和PLT(Palette)模式等,而帧间预测模式可以包括有普通帧间预测模式、GPM模式和AWP模式等。
这样,在利用多种预测模式分别对当前块进行预编码之后,可以得到每一种预测模式对应的率失真代价值;然后从所得到的多个率失真代价值中选取最小率失真代价值,并将该最小率失真代价值对应的预测模式确定为当前块的预测模式参数。除此之外,还可以在利用多种预测模式分别对当前块进行预编码之后,得到每一种预测模式对应的失真值;然后从所得到的多个失真值中选取最小失真值,然后将该最小失真值对应的预测模式确定为当前块使用的预测模式,并根据该预测模式设置对应的预测模式参数。如此,最终使用所确定的预测模式参数对当前块进行编码,而且在这种预测模式下,可以使得预测残差较小,能够提高编码效率。
也就是说,在编码侧,编码器可以选取最优的预测模式对当前块进行预编码,在这过程中就可以确定出当前块的预测模式,然后确定用于指示预测模式的预测模式参数,从而将相应的预测模式参数写入码流,由编码器传输到解码器。
相应地,在解码器侧,解码器通过解析码流便可以直接获取到当前块的预测模式参数,并根据解析获得的预测模式参数确定当前块所使用的预测模式,以及该预测模式对应的相关参数。
步骤402、当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,利用当前块的每一个子块的第一运动矢量确定每一个子块中的像素点的第一预测值,利用当前块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值;其中,当前块包括一个或多个子块;当前块包括一个或多个像素点。
在本申请的实,编码器在确定预测模式参数之后,如果预测模式参数指示当前块使用帧间预测模式确定当前块的帧间预测值,那么编码器可以利用当前块的每一个子块的第一运动矢量确定每一个子块中的像素点的第一预测值,同时,编码器可以利用当前块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值。
也就是说,在本申请中,编码器可以对当前块使用基于子块的预测,得到一组预测值,即每一个子块中的像素点对应的第一预测值,同时,编码器还可以对当前块使用基于点的预测,得到另一组预测值,即每一个像素点对应的第二预测值。
可以理解的是,在本申请中,第一预测值为基于子块的预测所获得的子块中的像素点的预测值,第二预测值为基于点的预测获得的当前块中的像素点的预测值。可见,对于当前块中的同一个像素(像素位置),编码器可以采用不同的方式获得对应的两个预测值,即通过基于子块的预测获得的第一预测值,和通过基于点的预测获得的第二预测值。
可以理解的是,在本申请中,当前块可以包括一个或多个子块;当前块可以包括一个或多个像素点(sample),每一个像素点都对应有一个像素位置和一个像素值。
示例性的,在本申请的实施例中,编码器在确定每一个子块中的像素点的第一预测值时,可以先确定当前块的每一个子块的第一运动矢量,然后再基于该第一运动矢量确定出子块中的像素点对应的第一预测值。
也就是说,在本申请中,编码器在基于子块的预测时,可以把当前块划分成若干子块,对每一个子块确定一个运动矢量,即每一个子块对应有一个第一运动矢量,然后编码器可以使用每一个子块的第一运动矢量对子块进行预测,获得子块中的像素点对应的第一预测值。
示例性的,在本申请的实施例中,编码器在确定每一个像素点的第二预测值时,可以先确定当 前块的每一个像素点的第二运动矢量,然后再基于该第二运动矢量确定出像素点对应的第二预测值。
也就是说,在本申请中,编码器在基于子块的预测时,可以对每一个像素点确定一个运动矢量,即每一个像素点对应有一个第二运动矢量,然后编码器可以使用每一个像素点的第二运动矢量对像素点进行预测,获得对应的第二预测值。
可以理解的是,在本申请的实施例中,当前块的子块的第一运动矢量和像素点的第二运动矢量都可以采用仿射模型来导出。进一步地,编码器也可以采用其他的方式进行第一运动矢量和第二运动矢量的确定,例如其他基于子块的预测技术。编码器还可以根据子块的第一运动矢量来确定该子块中的像素点的第二运动矢量,如根据两个或更多个子块的第一运动矢量来确定其中一个子块中的任一个像素点的第二运动矢量。
进一步地,在本申请的实施例中,编码器基于子块的预测和基于点的预测可以使用不同的预测方法。例如,编码器可以使用不同的插值方式进行基于子块的预测和基于点的预测。具体地,在基于子块的预测和基于点的预测时,编码器可以使用不同的插值滤波器对分像素的值进行插值处理。
示例性的,在本申请中,基于子块的预测可以使用比较复杂的滤波器,基于点的预测可以使用比较简单的滤波器。
示例性的,在本申请中,基于子块的预测可以使用抽头数较多的滤波器,基于点的预测可以使用抽头数较少的滤波器。
示例性的,在本申请中,基于子块的预测和基于点的预测可以分别使用可分离的二维滤波器或不可分离的二维滤波器。
需要说明的是,在本申请的实施例中,可分离滤波器可以为二维滤波器,具体地,可分离滤波器可以为横竖可分离的二维滤波器或水平垂直可分离的二维滤波器,可以由水平方向的一维滤波器和垂直方向的一维滤波器构成。
也就是说,在本申请中,如果使用可分离滤波器,那么该可分离滤波器可以在水平方向和垂直方向分别进行滤波处理。
可以理解的是,在本申请中,作为水平垂直可分离的可分离滤波器,可以对二维像素点在两个方向上分别进行滤波处理,具体地,可分离滤波器可以先进行一个方向(如水平方向或垂直方向)的滤波,得到该方向对应的中间值,然后对该中间值进行另一个方向(如垂直方向或水平方向)的滤波,得到最终的滤波结果。
需要说明的是,在本申请中,目前多种常见的编解码场景已经使用了可分离滤波器,如帧间基于块的预测的插值滤波、帧间基于子块的预测的插值滤波,也包括仿射基于子块的预测的插值滤波等。进一步地,可分离滤波器还可以应用于HEVC、VVC、AVS3中基于块或子块的运动补偿,即运动补偿预测插值滤波器可以包括可分离的二维滤波器。示例性的,AVS3中仿射运动补偿预测的亮度插值滤波器可以为可分离的二维滤波器,其中,亮度插值滤波器系数如上表1所示。
进一步地,在本申请的实施例中,在进行基于子块的预测时,对于当前块的一子块,编码器可以根据第一运动矢量确定第一滤波参数;然后可以基于第一滤波参数,利用第一滤波器进行滤波处理,获得第一预测值。
具体地,在本申请中,第一滤波器可以为以下滤波器中的任意一种:n抽头的插值滤波器、可分离的二维滤波器、不可分离的二维滤波器;其中,n为以下值中的任一者:8,6,5,4,3,2。
需要说明的是,在本申请的实施例中,第一滤波器的第一滤波参数可以包括该第一滤波器的滤波器系数,还可以包括该第一滤波器的滤波器相位,本申请不作具体限定。
示例性的,在本申请中,如果第一滤波参数为第一滤波器的滤波器系数,那么编码器在根据第一运动矢量确定第一滤波参数时,可以先确定第一比例参数;然后再根据第一比例参数和第一运动矢量,确定第一滤波参数。
示例性的,在本申请中,如果第一滤波参数为第一滤波器的滤波器相位,那么编码器在根据第一运动矢量确定第一滤波参数时,可以先确定第一相位与运动矢量的映射表;然后再根据第一相位与运动矢量的映射表和第一运动矢量,确定第一滤波参数。
进一步地,在本申请的实施例中,在进行基于点的预测时,对于当前块的一像素点,编码器可以根据第二运动矢量确定第二滤波参数;然后可以基于第二滤波参数,利用第二滤波器进行滤波处理,获得第二预测值。
具体地,在本申请中,第二滤波器可以为以下滤波器中的任意一种:m抽头的插值滤波器、可分离的二维滤波器、不可分离的二维滤波器;其中,m为以下值中的任一者:8,6,5,4,3,2。
可以理解的是,在本申请中,m可以小于或者等于n,即基于子块的预测可以使用抽头数较多 的滤波器,基于点的预测可以使用抽头数较少的滤波器。
需要说明的是,在本申请的实施例中,第二滤波器的第二滤波参数可以包括该第二滤波器的滤波器系数,还可以包括该第二滤波器的滤波器相位,本申请不作具体限定。
示例性的,在本申请中,如果第二滤波参数为第二滤波器的滤波器系数,那么编码器在根据第二运动矢量确定第二滤波参数时,可以先确定第二比例参数;然后再根据第二比例参数和第二运动矢量,确定第二滤波参数。
示例性的,在本申请中,如果第二滤波参数为第二滤波器的滤波器相位,那么编码器在根据第二运动矢量确定第二滤波参数时,可以先确定第二相位与运动矢量的映射表;然后再根据第二相位与运动矢量的映射表和第二运动矢量,确定第二滤波参数。
也就是说,在本申请的实施例中,基于子块的预测的第一滤波器和基于点的预测的第二滤波器可以分别采用不同的形式,具体地,可以使用不同的方式分别确定第一滤波器的第一滤波系数和第二滤波器的第二滤波系数。如基于子块的预测使用如上表1所示的根据分像素的运动矢量确定相位从表中确定的系数的形式。基于点的预测既可以使用根据分像素的运动矢量确定相位从表中确定系数的形式,也可以使用根据分像素的运动矢量计算出系数的形式。
示例性的,在本申请的实施例中,编码器在确定当前块的每一个子块中的像素点的第一预测值时,也可以先确定每一个子块与当前块之间的运动矢量偏差;然后再基于运动矢量偏差,确定每一个子块中的像素点的第一预测值。
需要说明的是,在本申请中,第一比例参数或第二比例参数可以包括至少一个比例值,其中,至少一个比例值均为非零实数。
进一步地,在本申请的实施例中,编码器基于运动矢量计算获得的滤波器系数中的任意一个滤波器系数,可以为该运动矢量的一次函数(多项式)、二次函数(多项式)或者高次函数(多项式),本申请不作具体限定。
也就是说,在本申请中,编码器在按照预设计算规则中不同的计算方法计算获得多个像素点对应的多个滤波器系数中,部分滤波器系数可以为运动矢量的一次函数(多项式),即两者为线性关系,还可以为第运动矢量的二次函数(多项式)或高次函数(多项式),即两者为非线性关系。
在一些场景中,即使不先进行第一运动矢量的计算,也可以确定出子块的第一预测值量。例如,双向光流,在AVS中简称BIO,在VVC中简称BDOF,利用双向光流计算子块与当前块的运动矢量偏差,然后利用光流原理根据梯度、运动矢量偏差以及当前的预测值得到新的预测值。
需要说明的是,在本申请中,在一些场景中,针对一个块(编码块或预测块),如4x4的块,作为一个整体进行计算,如运动矢量偏差的计算、预测值的修正等的计算,也可以按照本申请中的子块的思想来处理。
需要说明的是,在本申请的实施例中,当前块为当前帧中待编码的图像块,当前帧以图像块的形式按一定顺序依次进行编码,该当前块为当前帧内按该顺序下一时刻待编码的图像块。当前块可具有多种规格尺寸,例如1616、3232或3216等规格,其中数字表示当前块上像素点的行数和列数。
进一步对,在本申请的实施例中,当前块可以划分为多个子块,其中,每一个子块的尺寸大小都是相同的,子块为较小规格的像素点集合。子块的尺寸可以为8x8或4x4。
示例性的,在本申请中,当前块的尺寸为1616,可以划分为4个尺寸均为8x8的子块。
可以理解的是,在本申请的实施例中,在编码器确定预测模式参数指示使用帧间预测模式确定当前块的帧间预测值的情况下,就可以继续采用本申请实施例所提供的帧间预测方法。
进一步地,在本申请的实施例中,编码器可以将当前块的一个子块作为参考块;然后利用参考块的第一运动矢量确定参考块中的像素点的第一预测值,利用参考块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值;其中,参考块包括一个或多个像素点。
需要说明的是,在本申请的实施例中,由于当前块中包括有一个或多个子块,同时,当前块中包括有一个或多个像素点,因此,如果一个像素点属于一个子块,那么可以在基于该子块进行预测的同时,还以利用该子块中的像素点对该像素点进行基于点的预测。也就是说,编码器在进行基于子块的预测和基于点的预测时,基于点的预测与基于子块的预测可以共享同一个参考块,其中,参考块即插值滤波需要用到的参考像素组成的块。具体地,对一个子块,可以将组成该子块的各个像素点确定为一个参考块,该子块进行基于子块的预测使用的参考块和每个点进行基于点的预测使用的参考块都在这个确定的参考块内。优选地,可以将基于子块的预测和对应子块内的点的基于点的预测同时进行,或者将基于子块的预测和对应子块内的点的基于点的预测连续进行,从而避免参考像素的反复读入缓存。
可以理解的是,在本申请中,如果基于点的预测与基于子块的预测可以共享同一个参考块,那么编码器可以对基于点的预测的MV进行限制从而可以对是否增加带宽进行限制。例如,基于子块的预测使用水平垂直可分离的8抽头滤波器,基于点的预测使用水平垂直可分离的4抽头滤波器,那么左上角的点的MV向左或向上超过子块的MV2个像素,该点需要用的参考块都不会超过子块的参考块。那么右上角的点的MV向右或向上超过子块的MV2个像素,该点需要用的参考块都不会超过子块的参考块,相应地,子块内部的点的可以活动的范围更大。
进一步地,也可以适当放宽点的MV的限制,可以对性能和复杂度进行权衡,适当增加参考块的大小。
步骤403、对于当前块内的一像素点,确定像素点的第一权重和第二权重;其中,第一权重对应第一预测值,第二权重对应第二预测值。
在本申请的实,对于当前块内的一个像素点,编码器可以分别确定该像素点的第一权重和第二权重;其中,第一权重对应第一预测值,第二权重对应第二预测值。具体地,同一个像素点的第一权重与第二权重可以相同,也可以不同。
需要说明的是,在本申请的实施例中,对于当前块中的一个像素点,编码器可以分别通过基于子块的预测和基于点的预测获得第一预测值和第二预测值,相应地,编码器也可以对这两个预测值进行权重值的设置,从而确定与第一预测值对应的第一权重,和与第二预测值对应的第二权重。
可以理解的是,在本申请中,对于当前块中的一个像素点,第一权重即为编码器基于子块的预测所对应的权重值,第二权重即为编码器基于点的预测所对应的权重值。
进一步地,在本申请的实施例中,编码器可以使用多种不同的方式分别确定第一权重和第二权重,其中,编码器可以采用相同的方法确定第一权重和第二权重,也可以采用不同的方法确定第一权重和第二权重。
示例性的,在本申请中,编码器在确定当前块中的一个像素的、基于子块的预测所对应的第一权重时,可以先确定像素点对应的目标子块;其中,该目标子块中包括该像素点,即确定出该像素点属于当前块的多个子块中的哪一个子块;然后可以确定像素点的像素位置与目标子块的参考位置之间的第一距离;其中,参考位置为目标子块的第一运动矢量所使用的位置;最后,编码器可以按照第一距离确定第一权重;其中,第一距离与第一权重成反比,即第一距离越大,说明该像素点的像素位置距离参考位置越远,那么该像素点对应的第一权重越小。
也就是说,在本申请中,基于子块的预测,编码器对像素位置与子块的第一运动矢量所使用的像素位置较近的权重较大,对像素位置与子块的第一运动矢量使用的像素位置较远的权重较小。
示例性的,在本申请中,编码器在确定当前块中的一个像素的、基于子块的预测所对应的第一权重时,可以先确定像素点对应的目标子块;其中,该目标子块中包括该像素点,即确定出该像素点属于当前块的多个子块中的哪一个子块;然后可以确定像素点的运动矢量与目标子块的第一运动矢量之间的偏差值;最后,可以进一步按照偏差值确定第一权重;其中,偏差值与第一权重成反比,即偏差值越小,说明该像素点的运动矢量与目标子块的第一运动矢量越接近,那么该像素点对应的第一权重越大。
也就是说,在本申请中,基于子块的预测,编码器对像素点的运动矢量与子块的第一运动矢量较接近的权重较大,对像素点的运动矢量与子块的第一运动矢量差距较大的权重较小。
示例性的,在本申请中,编码器在确定当前块中的一个像素的、基于点的预测所对应的第二权重时,可以先确定像素点在参考图像中的对应的分像素和整像素;然后可以确定分像素和整像素之间的第二距离;最后可以按照第二距离确定第二权重;其中,第二距离与第二权重成反比,即第二距离越大,说明分像素和整像素之间的距离越远,那么该像素点对应的第二权重越小。
也就是说,在本申请中,基于点的预测,编码器对像素点的素位置对应的参考图像中的分像素位置离整像素位置较近的权重较大,像素点的像素位置对应的参考图像中的分像素位置离整像素较远的权重较小。
示例性的,在本申请中,编码器在确定当前块中的一个像素的、基于点的预测所对应的第二权重时,可以先像素点的运动矢量的绝对值;然后可以进一步按照绝对值确定第二权重;其中,绝对值与第二权重成反比,即绝对值越小,对应的第二权重越大。
也就是说,在本申请中,基于点的预测,编码器对像素点的运动矢量绝对值越小的权重较大,对像素点的运动矢量绝对值越大的权重较小。例如,像素点的运动矢量为(1/4,1/4)时对应的第二权重,大于运动矢量为(1/2,1/2)时对应的第二权重。
可以理解的是,在本申请中,编码器在对第一权重和第二权重进行设置时可以采用不同的方式, 也可以采用相同的方式。
进一步地,在本申请中,基于子块的预测的第一权重的设置可以使用与交织预测类似的方法,即基于子块的预测对像素位置与子块的第一运动矢量使用的像素位置较近的设置第一权重较大,对像素位置与子块的第一运动矢量使用的像素位置较远的设置第一权重较小。
进一步地,在本申请中,基于点的预测的第二权重的设置可以使用与基于子块的预测的第二权重不同的设置方法。例如,编码器可以将像素点的像素位置对应的参考图像中的分像素位置离整像素较近的设置第二权重较大,将像素点的像素位置对应的参考图像中的分像素位置离整像素较远的设置第二权重较小。或像素点的运动矢量离整数较近的设置第二权重较大,像素点的运动矢量离整数较远的设置第二权重较小。
示例性的,在本申请中,像素点的运动矢量是(1/4,1/4)的像素位置的第二权重比像素点的运动矢量是(1/2,1/2)的像素位置的第二权重大。
进一步地,在本申请中,如果编码器先对第二滤波器的位置进行确定,即编码器先确定出当前像素对应的整像素的运动矢量和分像素的运动矢量,那么在基于点的预测的第二权重的设置时,将分像素的运动矢量的绝对值越大的像素位置设置第二权重越小,将分像素的运动矢量的绝对值越小的像素位置设置第二权重越大。
示例性的,在本申请中,第二权重w由分像素的运动矢量(x,y)导出的方法为:
w=clip3(0,1,1-abs(x)-abs(y))
其中abs表示绝对值,clip3(a,b,c)表示如果c小于a,结果取a,如果c大于b,结果取b,否则结果取c。具体地,这是归一化的表达是,x和y的1表示1个像素,也可以为了计算方便,如用移位去掉分数/小数,对这个式子进行变形。
可以理解的是,在本申请中,为了与基于子块的预测值的第一权重匹配,第二权重w可以乘以一个倍数等。
可以理解的是,本申请实施例提出的帧间预测方法对编码器执行步骤402和步骤403的顺序不进行限定,也就是说,在本申请中,编码器可以先执行步骤402,然后执行步骤403,也可以先执行步骤403,再执行步骤402,还可以同时执行步骤402和步骤403。
步骤404、基于第一权重、第二权重、第一预测值以及第二预测值,确定像素点的预测值。
在本申请的实施例中,编码器在基于子块的预测获得第一预测值和对应的第一权重,同时基于点的预测获得第二预测值和对应的第二权重之后,便可以利用第一权重、第二权重、第一预测值以及第二预测值,获得当前块中的一个像素点的预测值。
可以理解的是,在本申请的实施例中,编码器在进行基于子块的预测和基于点的预测之后,针对当前块中的一个像素点,可以对在确定出该像素点分别对应的第一权重和第二权重之后,利用第一权重和第二权重对第一预测值和第二预测值进行进行加权平均,从而可以获得该像素点的预测值。
进一步地,在本申请中,在根据像素点的预测值,确定当前块的第三预测值之前,即步骤405之前,编码器进行帧间预测的方法还可以包括以下步骤:
步骤406、对于当前块中的一像素点,基于第一预测值和第二预测值,确定像素点的预测值。
在本申请的实施例中,编码器在基于子块的预测获得第一预测值,同时基于点的预测获得第二预测值之后,便可以利用第一预测值和第二预测值,获得当前块中的一个像素点的预测值。
可以理解的是,在本申请的实施例中,与步骤404相比,编码器也可以在分别获得第一预测值和第二预测值之后,直接对相同的像素点的第一预测值和第二预测值进行平均运算,获得该像素点的预测值。
也就是说,在本申请中,编码器也可以不对第一预测值和第二预测值进行加权平均运算,而是直接利用这两个预测值确定最终的预测结果。
需要说明的是,在本申请中,也可以将步骤406所提出的方法作为步骤404的其中一种情况,即第一权重和第二权重相等的情况。
步骤405、根据像素点的预测值,确定当前块的第三预测值;其中,第三预测值用于确定当前块的残差。
在本申请的实施例中,编码器在基于第一权重、第二权重、第一预测值以及第二预测值,确定像素点的预测值之后,进而可以根据像素点的预测值,确定出当前块的第三预测值。
需要说明的是,在本申请中,编码器可以按照上述方法对当前块中的全部像素点进行滤波处理,利用当前块中的全部像素点的预测值进行当前块的第三预测值的确定,也可以对当前块中的部分像素点进行滤波处理,利用当前块中的部分像素点的预测值进行子块的第三预测值的确定。
可以理解的是,在本申请的实施例中,第三预测值用于确定当前块的残差(residual)。
进一步地,在本申请的实施例中,编码器可以在遍历当前块中的全部像素点或部分像素点之后,对当前块的全部像素点或部分像素点的预测值进行加法运算,获得求和结果,最后可以对加法结果进行归一化处理,最终便可以获得当前块的第三预测值。
在本申请的实施例中,进一步地,上述步骤401至步骤406提出的帧间预测方法,既可以应用于单向预测,也可以应用于双向预测。
进一步地,在本申请的实施例中,编码器进行帧间预测的方法还可以包括以下步骤:
步骤501、确定帧间预测方向。
步骤502、若帧间预测方向为双向预测,则基于第一预测方向,利用每一个子块的第一运动矢量确定每一个子块中的像素点的第四预测值,利用每一个像素点的第二运动矢量确定每一个像素点的第五预测值;基于第二预测方向,利用每一个子块的第一运动矢量确定每一个子块中的像素点的第六预测值,利用每一个像素点的第二运动矢量确定每一个像素点的第七预测值。
步骤503、对于当前块的一像素点,基于第一预测方向,确定像素点的第三权重和第四权重;基于第二预测方向,确定像素点的第五权重和第六权重。
步骤504、基于第三权重、第四权重、第四预测值以及第五预测值,获得像素点的、第一预测方向对应的预测值,基于第五权重、第六权重、第六预测值以及第七预测值,获得像素点的、第二预测方向对应的预测值。
步骤505、根据第一预测方向对应的预测值和第二预测方向对应的预测值,确定像素点的预测值。
也就是说,在本申请中,编码器在进行双向预测时,针对其中的每一个单向预测,对当前块使用基于子块的预测得到一组预测值,同时对当前块使用基于点的预测得到另一组预测值,针对相同的像素点的两个预测值进行加权平均,便可以得到该像素点的预测值。然后再将两个单向预测的预测值进行平均(或加权平均),最终便可以得到双向预测的预测值。
需要说明的是,在本申请中,帧间预测处理过程中的平均运算或加权平均运算可以在需要进行平均或加权平均的整个预测块都得出来以后再进行,也可以在需要进行平均或加权平均的子块的预测块都得出来以后再进行,还可以在需要进行平均或加权平均的点的预测块都得出来以后再进行,本申请不作具体限定。
进一步地,在本申请的实施例中,编码器进行帧间预测的方法还可以包括以下步骤:
步骤501、确定帧间预测方向。
步骤502、若帧间预测方向为双向预测,则基于第一预测方向,利用每一个子块的第一运动矢量确定每一个子块中的像素点的第四预测值,利用每一个像素点的第二运动矢量确定每一个像素点的第五预测值;基于第二预测方向,利用每一个子块的第一运动矢量确定每一个子块中的像素点的第六预测值,利用每一个像素点的第二运动矢量确定每一个像素点的第七预测值。
步骤503、对于当前块的一像素点,基于第一预测方向,确定像素点的第三权重和第四权重;基于第二预测方向,确定像素点的第五权重和第六权重。
步骤506、基于第三权重、第四权重、第五权重、第六权重、第四预测值、第五预测值、第六预测值以及第七预测值,确定像素点的预测值。
也就是说,在本申请中,编码器在进行双向预测时,针对其中的每一个单向预测,对当前块使用基于子块的预测得到一组预测值,同时对当前块使用基于点的预测得到另一组预测值,然后再将两个单向预测的四个预测值进行平均(或加权平均),最终便可以得到双向预测的预测值。
可见,对于双向预测,编码器可以在确定两个预测方向的各自的预测值之后再平均或加权平均运算,也可以不分别计算每一个预测方向的预测值,而是直接由第一预测方向基于子块的预测块、第一预测方向基于点的预测块、第二预测方向基于子块的预测块和第二预测方向基于点的预测块加权平均得到。
可以理解的是,在本申请中,平均运算可以认为是一种特殊的加权平均运算,像素点像素位置在部分场景中可以理解为相同概念的不同表达方式。
进一步地,本申请提出的帧间预测方法,可以只用于亮度分量,也可以用于亮度分量和色度分量,还可以用于其他任何格式,如RGB等的某个或某几个或所有分量。本申请实施例以亮度分量为例进行说明,但并不局限于亮度分量。
也就是说,本申请提出的帧间预测方法,可以适用于任何一个图像分量上,在本实施例中示例性的对亮度分量使用预测方案,但是也可以用于色度分量,或者其他格式的任一分量。本申请提出 的帧间预测方法也可以适用于任何一种视频格式上,包括但不限于YUV格式,包括但不限于YUV格式的亮度分量。
本实施例提供了一种帧间预测方法,可以对当前块使用基于子块的预测,获得一组预测值,即第一预测值,同时对当前块使用基于点的预测,获得另一组预测值,即第二预测值,并在对当前块中的相同像素点进行基于子块的预测的第一权重和基于点的预测的第二权重的确定之后,使用第一权重和第二权重对第一预测值和第二预测值进行加权平均,最终获得当前块的新的预测值,从而可以在提高帧间预测的精确性的同时,降低计算的复杂度,减小带宽,进而大大提升编码性能,提高了编解码效率。
基于上述实施例,在本申请的再一实施例中,图25为解码器的组成结构示意图一,如图25所示,本申请实施例提出的解码器300可以包括解析部分301和第一确定部分302;
所述解析部分301,配置为解析码流,获取当前块的预测模式参数;
所述第一确定部分302,配置为当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的重建值。
图26为解码器的组成结构示意图二,如图26所示,本申请实施例提出的解码器300还可以包括第一处理器303、存储有第一处理器303可执行指令的第一存储器304、第一通信接口305,和用于连接第一处理器303、第一存储器304以及第一通信接口305的第一总线306。
进一步地,在本申请的实施例中,上述第一处理器303,用于解析码流,获取当前块的预测模式参数;当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的重建值。
图27为编码器的组成结构示意图一,如图27所示,本申请实施例提出的编码器400可以包括第二确定部分401;
所述第二确定部分401,配置为确定当前块的预测模式参数;当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的残差。
图28为编码器的组成结构示意图二,如图28所示,本申请实施例提出的编码器400还可以包括第二处理器402、存储有第二处理器402可执行指令的第二存储器403、第二通信接口404,和用于连接第二处理器402、第二存储器403以及第二通信接口404的第二总线405。
进一步地,在本申请的实施例中,上述第二处理器402,配置为确定当前块的预测模式参数;当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值; 根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的残差。
本申请实施例提供了一种编码器和编码器,可以对当前块使用基于子块的预测,获得一组预测值,即第一预测值,同时对当前块使用基于点的预测,获得另一组预测值,即第二预测值,并在对当前块中的相同像素点进行基于子块的预测的第一权重和基于点的预测的第二权重的确定之后,使用第一权重和第二权重对第一预测值和第二预测值进行加权平均,最终获得当前块的新的预测值,从而可以在提高帧间预测的精确性的同时,降低计算的复杂度,减小带宽,进而大大提升编码性能,提高了编解码效率。
本申请实施例提供计算机可读存储介质和计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述实施例所述的方法。
具体来讲,本实施例中的一种帧间预测方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种帧间预测方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
解析码流,获取当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;
对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;
基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;
根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的重建值。
具体来讲,本实施例中的一种帧间预测方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种帧间预测方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
确定当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;
对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;
基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;
根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的残差。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
本申请实施例所提供的一种帧间预测方法、编码器、解码器以及计算机存储介质,解码器解析码流,获取当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,利用当前块的每一个子块的第一运动矢量确定每一个子块中的像素点的第一预测值,利用当前块的每一个像素点的第二运动矢量确定每一个像素点的第二预测值;其中,当前块包括一个或多个子块;当前块包括一个或多个像素点;对于当前块内的一像素点,确定像素点的第一权重和第二权重;其中,第一权重对应第一预测值,第二权重对应第二预测值;基于第一权重、第二权重、第一预测值以及第二预测值,确定像素点的预测值;根据像素点的预测值,确定当前块的第三预测值;其中,第三预测值用于确定当前块的重建值。也就是说,本申请提出的帧间预测方法,可以对当前块使用基于子块的预测,获得一组预测值,即第一预测值,同时对当前块使用基于点的预测,获得另一组预测值,即第二预测值,并在对当前块中的相同像素点进行基于子块的预测的第一权重和基于点的预测的第二权重的确定之后,使用第一权重和第二权重对第一预测值和第二预测值进行加权平均,最终获得当前块的新的预测值,从而可以在提高帧间预测的精确性的同时,降低计算的复杂度,减小带宽,进而大大提升编码性能,提高了编解码效率。
Claims (43)
- 一种帧间预测方法,应用于解码器,所述方法包括:解析码流,获取当前块的预测模式参数;当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的重建值。
- 根据权利要求1所述的方法,其中,所述根据所述像素点的预测值,确定所述当前块的第三预测值之前,所述方法还包括:解析所述码流,确定帧间预测方向;若所述帧间预测方向为双向预测,则基于第一预测方向,利用所述每一个子块的所述第一运动矢量确定所述每一个子块中的像素点的第四预测值,利用所述每一个像素点的所述第二运动矢量确定所述每一个像素点的第五预测值;基于第二预测方向,利用所述每一个子块的所述第一运动矢量确定所述每一个子块中的像素点的第六预测值,利用所述每一个像素点的所述第二运动矢量确定所述每一个像素点的第七预测值;对于所述当前块的一像素点,基于所述第一预测方向,确定所述像素点的第三权重和第四权重;基于所述第二预测方向,确定所述像素点的第五权重和第六权重;基于所述第三权重、所述第四权重、所述第四预测值以及所述第五预测值,获得所述像素点的、所述第一预测方向对应的预测值,基于所述第五权重、所述第六权重、所述第六预测值以及所述第七预测值,获得所述像素点的、所述第二预测方向对应的预测值;根据所述第一预测方向对应的预测值和所述第二预测方向对应的预测值,确定所述像素点的预测值。
- 根据权利要求1所述的方法,其中,所述根据所述像素点的预测值,确定所述当前块的第三预测值之前,所述方法还包括:解析所述码流,确定帧间预测方向;若所述帧间预测方向为双向预测,则基于第一预测方向,利用所述每一个子块的所述第一运动矢量确定所述每一个子块中的像素点的第四预测值,利用所述每一个像素点的所述第二运动矢量确定所述每一个像素点的第五预测值;基于第二预测方向,利用所述每一个子块的所述第一运动矢量确定所述每一个子块中的像素点的第六预测值,利用所述每一个像素点的所述第二运动矢量确定所述每一个像素点的第七预测值;对于所述当前块的一像素点,基于所述第一预测方向,确定所述像素点的第三权重和第四权重;基于所述第二预测方向,确定所述像素点的第五权重和第六权重;基于所述第三权重、所述第四权重、所述第五权重、所述第六权重、所述第四预测值、所述第五预测值、所述第六预测值以及所述第七预测值,确定所述像素点的预测值。
- 根据权利要求1所述的方法,其中,所述利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,包括:对于所述当前块的一子块,根据所述第一运动矢量确定第一滤波参数;基于所述第一滤波参数,利用第一滤波器进行滤波处理,获得所述第一预测值。
- 根据权利要求4所述的方法,其中,所述第一滤波器可以为以下滤波器中的任意一种:n抽头的插值滤波器、可分离的二维滤波器、不可分离的二维滤波器;其中,n为以下值中的任一者:8,6,5,4,3,2。
- 根据权利要求4所述的方法,其中,所述根据所述第一运动矢量确定第一滤波参数,包括:确定第一比例参数;根据所述第一比例参数和所述第一运动矢量,确定所述第一滤波参数;其中,所述第一滤波参数为所述第一运动矢量的一次函数、二次函数或者高次函数。
- 根据权利要求4所述的方法,其中,所述根据所述第一运动矢量确定第一滤波参数,包括:确定第一相位与运动矢量的映射表;根据所述第一相位与运动矢量的映射表和所述第一运动矢量,确定所述第一滤波参数。
- 根据权利要求1所述的方法,其中,所述利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值,包括:对于所述当前块的一像素点,根据所述第二运动矢量确定第二滤波参数;基于所述第二滤波参数,利用第二滤波器进行滤波处理,获得所述第二预测值。
- 根据权利要求8所述的方法,其中,所述第二滤波器可以为以下滤波器中的任意一种:m抽头的插值滤波器、可分离的二维滤波器、不可分离的二维滤波器,其中,m为以下值中的任一者:8,6,5,4,3,2。
- 根据权利要求8所述的方法,其中,所述根据所述第一运动矢量确定第一滤波参数,包括:确定第二比例参数;根据所述第二比例参数和所述第二运动矢量,确定所述第二滤波参数;其中,所述第二滤波参数为所述第二运动矢量的一次函数、二次函数或者高次函数。
- 根据权利要求8所述的方法,其中,所述根据所述第二运动矢量确定第二滤波参数,包括:确定第二相位与运动矢量的映射表;根据所述第二相位与运动矢量的映射表和所述第二运动矢量,确定所述第二滤波参数。
- 根据权利要求1所述的方法,其中,所述对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重,包括:确定所述像素点对应的目标子块;确定所述像素点的像素位置与所述目标子块的参考位置之间的第一距离;所述参考位置为所述目标子块的所述第一运动矢量所使用的位置;按照所述第一距离确定所述第一权重;其中,所述第一距离与所述第一权重成反比。
- 根据权利要求1所述的方法,其中,所述对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重,包括:确定所述像素点对应的目标子块;确定所述像素点的运动矢量与所述目标子块的所述第一运动矢量之间的偏差值;按照所述偏差值确定所述第一权重;其中,所述偏差值与所述第一权重成反比。
- 根据权利要求1所述的方法,其中,所述对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重,包括:确定所述像素点在参考图像中的对应的分像素和整像素;确定所述分像素和所述整像素之间的第二距离;按照所述第二距离确定所述第二权重;其中,所述第二距离与所述第二权重成反比。
- 根据权利要求1所述的方法,其中,所述对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重,包括:确定所述像素点的运动矢量的绝对值;按照所述绝对值确定所述第二权重;其中,所述绝对值与所述第二权重成反比。
- 根据权利要求4至11任一项所述的方法,其中,所述根据所述像素点的预测值,确定所述当前块的第三预测值之前,所述方法还包括:对于所述当前块中的一像素点,基于所述第一预测值和所述第二预测值,确定所述像素点的预测值。
- 根据权利要求1所述的方法,其中,所述方法还包括:将所述当前块的一个子块作为参考块;利用所述参考块的第一运动矢量确定所述参考块中的像素点的第一预测值,利用所述参考块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述参考块包括一个或多个像素点。
- 根据权利要求9所述的方法,其中,若所述第二滤波器为水平垂直可分离的3抽头滤波器,所述方法还包括:所述每一个像素点对应的分像素的运动矢量属于-1/2像素至1/2像素的区间;或者,所述每一个像素点对应的分像素的运动矢量属于-1像素至1像素的区间。
- 根据权利要求9所述的方法,其中,若所述第二滤波器为水平垂直可分离的3抽头滤波器, 所述方法还包括:在参考图像中确定与所述每一个像素点位置相同的参考像素点;将所述参考像素点确定为所述第二滤波器的中心。
- 一种帧间预测方法,应用于编码器,所述方法包括:确定当前块的预测模式参数;当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的残差。
- 根据权利要求20所述的方法,其中,所述根据所述像素点的预测值,确定所述当前块的第三预测值之前,所述方法还包括:确定帧间预测方向;若所述帧间预测方向为双向预测,则基于第一预测方向,利用所述每一个子块的所述第一运动矢量确定所述每一个子块中的像素点的第四预测值,利用所述每一个像素点的所述第二运动矢量确定所述每一个像素点的第五预测值;基于第二预测方向,利用所述每一个子块的所述第一运动矢量确定所述每一个子块中的像素点的第六预测值,利用所述每一个像素点的所述第二运动矢量确定所述每一个像素点的第七预测值;对于所述当前块的一像素点,基于所述第一预测方向,确定所述像素点的第三权重和第四权重;基于所述第二预测方向,确定所述像素点的第五权重和第六权重;基于所述第三权重、所述第四权重、所述第四预测值以及所述第五预测值,获得所述像素点的、所述第一预测方向对应的预测值,基于所述第五权重、所述第六权重、所述第六预测值以及所述第七预测值,获得所述像素点的、所述第二预测方向对应的预测值;根据所述第一预测方向对应的预测值和所述第二预测方向对应的预测值,确定所述像素点的预测值。
- 根据权利要求20所述的方法,其中,所述根据所述像素点的预测值,确定所述当前块的第三预测值之前,所述方法还包括:确定帧间预测方向;若所述帧间预测方向为双向预测,则基于第一预测方向,利用所述每一个子块的所述第一运动矢量确定所述每一个子块中的像素点的第四预测值,利用所述每一个像素点的所述第二运动矢量确定所述每一个像素点的第五预测值;基于第二预测方向,利用所述每一个子块的所述第一运动矢量确定所述每一个子块中的像素点的第六预测值,利用所述每一个像素点的所述第二运动矢量确定所述每一个像素点的第七预测值;对于所述当前块的一像素点,基于所述第一预测方向,确定所述像素点的第三权重和第四权重;基于所述第二预测方向,确定所述像素点的第五权重和第六权重;基于所述第三权重、所述第四权重、所述第五权重、所述第六权重、所述第四预测值、所述第五预测值、所述第六预测值以及所述第七预测值,确定所述像素点的预测值。
- 根据权利要求20所述的方法,其中,所述利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,包括:对于所述当前块的一子块,根据所述第一运动矢量确定第一滤波参数;基于所述第一滤波参数,利用第一滤波器进行滤波处理,获得所述第一预测值。
- 根据权利要求23所述的方法,其中,所述第一滤波器可以为以下滤波器中的任意一种:n抽头的插值滤波器、可分离的二维滤波器、不可分离的二维滤波器;其中,n为以下值中的任一者:8,6,5,4,3,2。
- 根据权利要求23所述的方法,其中,所述根据所述第一运动矢量确定第一滤波参数,包括:确定第一比例参数;根据所述第一比例参数和所述第一运动矢量,确定所述第一滤波参数;其中,所述第一滤波参数为所述第一运动矢量的一次函数、二次函数或者高次函数。
- 根据权利要求23所述的方法,其中,所述根据所述第一运动矢量确定第一滤波参数,包括:确定第一相位与运动矢量的映射表;根据所述第一相位与运动矢量的映射表和所述第一运动矢量,确定所述第一滤波参数。
- 根据权利要求20所述的方法,其中,所述利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值,包括:对于所述当前块的一像素点,根据所述第二运动矢量确定第二滤波参数;基于所述第二滤波参数,利用第二滤波器进行滤波处理,获得所述第二预测值。
- 根据权利要求27所述的方法,其中,所述第二滤波器可以为以下滤波器中的任意一种:m抽头的插值滤波器、可分离的二维滤波器、不可分离的二维滤波器,其中,m为以下值中的任一者:8,6,5,4,3,2。
- 根据权利要求27所述的方法,其中,所述根据所述第一运动矢量确定第一滤波参数,包括:确定第二比例参数;根据所述第二比例参数和所述第二运动矢量,确定所述第二滤波参数;其中,所述第二滤波参数为所述第二运动矢量的一次函数、二次函数或者高次函数。
- 根据权利要求27所述的方法,其中,所述根据所述第二运动矢量确定第二滤波参数,包括:确定第二相位与运动矢量的映射表;根据所述第二相位与运动矢量的映射表和所述第二运动矢量,确定所述第二滤波参数。
- 根据权利要求20所述的方法,其中,所述对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重,包括:确定所述像素点对应的目标子块;确定所述像素点的像素位置与所述目标子块的参考位置之间的第一距离;所述参考位置为所述目标子块的所述第一运动矢量所使用的位置;按照所述第一距离确定所述第一权重;其中,所述第一距离与所述第一权重成反比。
- 根据权利要求20所述的方法,其中,所述对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重,包括:确定所述像素点对应的目标子块;确定所述像素点的运动矢量与所述目标子块的所述第一运动矢量之间的偏差值;按照所述偏差值确定所述第一权重;其中,所述偏差值与所述第一权重成反比。
- 根据权利要求20所述的方法,其中,所述对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重,包括:确定所述像素点在参考图像中的对应的分像素和整像素;确定所述分像素和所述整像素之间的第二距离;按照所述第二距离确定所述第二权重;其中,所述第二距离与所述第二权重成反比。
- 根据权利要求20所述的方法,其中,所述对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重,包括:确定所述像素点的运动矢量的绝对值;按照所述绝对值确定所述第二权重;其中,所述绝对值与所述第二权重成反比。
- 根据权利要求23至30任一项所述的方法,其中,所述根据所述像素点的预测值,确定所述当前块的第三预测值之前,所述方法还包括:对于所述当前块中的一像素点,基于所述第一预测值和所述第二预测值,确定所述像素点的预测值。
- 根据权利要求20所述的方法,其中,所述方法还包括:将所述当前块的一个子块作为参考块;利用所述参考块的第一运动矢量确定所述参考块中的像素点的第一预测值,利用所述参考块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述参考块包括一个或多个像素点。
- 根据权利要求28所述的方法,其中,若所述第二滤波器为水平垂直可分离的3抽头滤波器,所述方法还包括:所述每一个像素点对应的分像素的运动矢量属于-1/2像素至1/2像素的区间;或者,所述每一个像素点对应的分像素的运动矢量属于-1像素至1像素的区间。
- 根据权利要求28所述的方法,其中,若所述第二滤波器为水平垂直可分离的3抽头滤波器,所述方法还包括:在参考图像中确定与所述每一个像素点位置相同的参考像素点;将所述参考像素点确定为所述第二滤波器的中心。
- 一种解码器,所述解码器包括解析部分,第一确定部分;所述解析部分,配置为解析码流,获取当前块的预测模式参数;所述第一确定部分,配置为当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的重建值。
- 一种解码器,所述解码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如权利要求1-19任一项所述的方法。
- 一种编码器,所述编码器包括第二确定部分;所述第二确定部分,配置为确定当前块的预测模式参数;当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,利用所述当前块的每一个子块的第一运动矢量确定所述每一个子块中的像素点的第一预测值,利用所述当前块的每一个像素点的第二运动矢量确定所述每一个像素点的第二预测值;其中,所述当前块包括一个或多个子块;所述当前块包括一个或多个像素点;对于所述当前块内的一像素点,确定所述像素点的第一权重和第二权重;其中,所述第一权重对应所述第一预测值,所述第二权重对应所述第二预测值;基于所述第一权重、所述第二权重、所述第一预测值以及所述第二预测值,确定所述像素点的预测值;根据所述像素点的预测值,确定所述当前块的第三预测值;其中,所述第三预测值用于确定所述当前块的残差。
- 一种编码器,所述编码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如权利要求20-38任一项所述的方法。
- 一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求1-19任一项所述的方法,或者,被第二处理器执行时实现如权利要求20-38任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/121676 WO2022077495A1 (zh) | 2020-10-16 | 2020-10-16 | 帧间预测方法、编码器、解码器以及计算机存储介质 |
CN202080093968.7A CN114982228A (zh) | 2020-10-16 | 2020-10-16 | 帧间预测方法、编码器、解码器以及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/121676 WO2022077495A1 (zh) | 2020-10-16 | 2020-10-16 | 帧间预测方法、编码器、解码器以及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022077495A1 true WO2022077495A1 (zh) | 2022-04-21 |
Family
ID=81208900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2020/121676 WO2022077495A1 (zh) | 2020-10-16 | 2020-10-16 | 帧间预测方法、编码器、解码器以及计算机存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114982228A (zh) |
WO (1) | WO2022077495A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107113425A (zh) * | 2014-11-06 | 2017-08-29 | 三星电子株式会社 | 视频编码方法和设备以及视频解码方法和设备 |
CN107534767A (zh) * | 2015-04-27 | 2018-01-02 | Lg电子株式会社 | 用于处理视频信号的方法及其装置 |
WO2019039322A1 (en) * | 2017-08-22 | 2019-02-28 | Panasonic Intellectual Property Corporation Of America | IMAGE ENCODER, IMAGE DECODER, IMAGE ENCODING METHOD, AND IMAGE DECODING METHOD |
CN110719489A (zh) * | 2019-09-18 | 2020-01-21 | 浙江大华技术股份有限公司 | 运动矢量修正、预测、编码方法、编码器及存储装置 |
CN111034197A (zh) * | 2017-08-22 | 2020-04-17 | 松下电器(美国)知识产权公司 | 图像编码器、图像解码器、图像编码方法和图像解码方法 |
CN111107373A (zh) * | 2018-10-29 | 2020-05-05 | 华为技术有限公司 | 基于仿射预测模式的帧间预测的方法及相关装置 |
CN111669584A (zh) * | 2020-06-11 | 2020-09-15 | 浙江大华技术股份有限公司 | 一种帧间预测滤波方法、装置和计算机可读存储介质 |
-
2020
- 2020-10-16 CN CN202080093968.7A patent/CN114982228A/zh active Pending
- 2020-10-16 WO PCT/CN2020/121676 patent/WO2022077495A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107113425A (zh) * | 2014-11-06 | 2017-08-29 | 三星电子株式会社 | 视频编码方法和设备以及视频解码方法和设备 |
CN107534767A (zh) * | 2015-04-27 | 2018-01-02 | Lg电子株式会社 | 用于处理视频信号的方法及其装置 |
WO2019039322A1 (en) * | 2017-08-22 | 2019-02-28 | Panasonic Intellectual Property Corporation Of America | IMAGE ENCODER, IMAGE DECODER, IMAGE ENCODING METHOD, AND IMAGE DECODING METHOD |
CN111034197A (zh) * | 2017-08-22 | 2020-04-17 | 松下电器(美国)知识产权公司 | 图像编码器、图像解码器、图像编码方法和图像解码方法 |
CN111107373A (zh) * | 2018-10-29 | 2020-05-05 | 华为技术有限公司 | 基于仿射预测模式的帧间预测的方法及相关装置 |
CN110719489A (zh) * | 2019-09-18 | 2020-01-21 | 浙江大华技术股份有限公司 | 运动矢量修正、预测、编码方法、编码器及存储装置 |
CN111669584A (zh) * | 2020-06-11 | 2020-09-15 | 浙江大华技术股份有限公司 | 一种帧间预测滤波方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114982228A (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI771679B (zh) | 以區塊為基礎之預測技術 | |
JP2023179682A (ja) | 隣接サンプル減少を伴う線形またはアフィン変換を使用するイントラ予測 | |
KR102359415B1 (ko) | 비디오 코딩을 위한 인터 예측 장치 및 방법을 위한 보간 필터 | |
TWI504241B (zh) | 影像編碼方法、裝置、影像解碼方法、裝置及其程式產品 | |
JP7455869B2 (ja) | イントラ予測を用いた符号化 | |
EP3984229A1 (en) | Simplified downsampling for matrix based intra prediction | |
JP2012142886A (ja) | 画像符号化装置及び画像復号装置 | |
EP2092752A2 (en) | Adaptive interpolation method and system for motion compensated predictive video coding and decoding | |
EP3085086A1 (en) | Method and apparatus for encoding and decoding video signal using adaptive sampling | |
WO2022022278A1 (zh) | 帧间预测方法、编码器、解码器以及计算机存储介质 | |
WO2022061680A1 (zh) | 帧间预测方法、编码器、解码器以及计算机存储介质 | |
WO2022077495A1 (zh) | 帧间预测方法、编码器、解码器以及计算机存储介质 | |
US11202082B2 (en) | Image processing apparatus and method | |
TW202332274A (zh) | 在4:4:4色度格式及單一樹狀結構情況下針對所有通道之基於矩陣的內部預測技術 | |
WO2022037344A1 (zh) | 帧间预测方法、编码器、解码器以及计算机存储介质 | |
TW202209893A (zh) | 幀間預測方法、編碼器、解碼器以及電腦儲存媒介 | |
CN113906763B (zh) | 用于视频编解码的色度去方块协调 | |
US20220264148A1 (en) | Sample Value Clipping on MIP Reduced Prediction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20957273 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20957273 Country of ref document: EP Kind code of ref document: A1 |