CN114866783A - 帧间预测方法、编码器、解码器以及计算机存储介质 - Google Patents

帧间预测方法、编码器、解码器以及计算机存储介质 Download PDF

Info

Publication number
CN114866783A
CN114866783A CN202210644545.0A CN202210644545A CN114866783A CN 114866783 A CN114866783 A CN 114866783A CN 202210644545 A CN202210644545 A CN 202210644545A CN 114866783 A CN114866783 A CN 114866783A
Authority
CN
China
Prior art keywords
sub
block
motion vector
prediction
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210644545.0A
Other languages
English (en)
Inventor
杨宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Publication of CN114866783A publication Critical patent/CN114866783A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请实施例公开了一种帧间预测方法、编码器、解码器以及计算机存储介质,解码器解析码流,获取当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,确定当前块的子块的第一运动矢量;其中,当前块包括多个子块;基于第一运动矢量确定子块的第一预测值,和像素位置与子块之间的运动矢量偏差;其中,像素位置为子块内的像素点的位置;根据运动矢量偏差确定二维滤波器的滤波系数;其中,二维滤波器用于按照预设形状进行二次预测处理;基于滤波系数和第一预测值,确定子块的第二预测值,将第二预测值确定为子块的帧间预测值。

Description

帧间预测方法、编码器、解码器以及计算机存储介质
本申请是申请日为2021年07月13日的PCT国际专利申请PCT/CN2021/106081进入中国国家阶段的中国专利申请号202180005841.X、发明名称为“帧间预测方法、编码器、解码器以及计算机存储介质”的分案申请。
相关申请的交叉引用
本申请要求在2020年07月29日提交中国专利局、申请号为202010746227.6、申请名称为“帧间预测方法、编码器、解码器以及计算机存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及视频编解码技术领域,尤其涉及一种帧间预测方法、编码器、解码器以及计算机存储介质。
背景技术
在视频编解码领域,为了兼顾性能和代价,一般情况下,在多功能视频编码(Versatile Video Coding,VVC)及数字音视频编解码技术标准工作组(Audio Videocoding Standard Workgroup of China,AVS)中的仿射预测是基于子块来实现的。目前,提出了使用光流原理的预测修正(prediction refinement with optical flow,PROF)使用光流原理对基于子块的仿射预测进行修正,进而提高了压缩性能。
然而,PROF的应用是基于子块内的像素位置的运动矢量与子块运动矢量的偏差非常小的情况,也就是说,子块内的像素位置的运动矢量与子块运动矢量的偏差非常小的情况下使用PROF的光流计算方法是有效的,但是,由于PROF依赖于基准位置的水平方向和垂直方向的梯度,在实际位置离基准位置较远的情况下,基准位置的水平和垂直方向的梯度并不能真实的反映基准位置和实际位置之间的水平和垂直方向的梯度,因此,在子块内的像素位置的运动矢量与子块运动矢量的偏差较大的情况下,该方法就不是特别有效了。
发明内容
本申请提出一种帧间预测方法、编码器、解码器以及计算机存储介质,可以大大提升编码性能,从而提高了编解码效率。
本申请的技术方案是这样实现的:
第一方面,本申请实施例提供了一种帧间预测方法,应用于解码器,该方法包括:
解析码流,获取当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;
基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;
根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状进行二次预测处理;
基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
第二方面,本申请实施例提供了一种帧间预测方法,应用于编码器,该方法包括:
确定当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;
基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;
根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状使用二次预测;
基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
第三方面,本申请实施例提供了一种解码器,所述解码器包括解析部分,第一确定部分;
所述解析部分,配置为解析码流,获取当前块的预测模式参数;
所述第一确定部分,配置为当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;以及基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;以及根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状进行二次预测处理;以及基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
第四方面,本申请实施例提供了一种解码器,所述解码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如上所述的帧间预测方法。
第五方面,本申请实施例提供了一种编码器,所述编码器包括第二确定部分;
所述第二确定部分,配置为确定当前块的预测模式参数;以及当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;以及基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;以及根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状使用二次预测;以及基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
第六方面,本申请实施例提供了一种编码器,所述编码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如上所述的帧间预测方法。
第七方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被第一处理器和第二处理器执行时,实现如上所述的帧间预测方法。
本申请实施例所提供的一种帧间预测方法、编码器、解码器以及计算机存储介质,解码器解析码流,获取当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,确定当前块的子块的第一运动矢量;其中,当前块包括多个子块;基于第一运动矢量确定子块的第一预测值,和像素位置与子块之间的运动矢量偏差;其中,像素位置为子块内的像素点的位置;根据运动矢量偏差确定二维滤波器的滤波系数;其中,二维滤波器用于按照预设形状进行二次预测处理;基于滤波系数和第一预测值,确定子块的第二预测值,将第二预测值确定为子块的帧间预测值。编码器确定当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,确定当前块的子块的第一运动矢量;其中,当前块包括多个子块;基于第一运动矢量确定子块的第一预测值,和像素位置与子块之间的运动矢量偏差;其中,像素位置为子块内的像素点的位置;根据运动矢量偏差确定二维滤波器的滤波系数;其中,二维滤波器用于按照预设形状使用二次预测;基于滤波系数和第一预测值,确定子块的第二预测值,将第二预测值确定为子块的帧间预测值。也就是说,本申请提出的帧间预测方法,可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的第一预测值的基础上进行基于点的二次预测,获得第二预测值。其中,利用二维滤波器进行的基于点的二次预测,可以使用构成预设形状的几个点的信息对第一预测值进行修正,最终获得修正后的第二预测值,本申请提出的帧间预测方法能够很好的适用于全部场景,大大提升编码性能,从而提高了编解码效率。
附图说明
图1为仿射模型的示意图一;
图2为仿射模型的示意图二;
图3为像素的插值示意图;
图4为子块插值的示意图一;
图5为子块插值的示意图二;
图6为每个子块的运动矢量示意图;
图7为样本位置示意图;
图8为仿射预测亮度样本的位置示意图;
图9为仿射预测整像素样本和分像素样本的位置示意图;
图10为仿射预测色度样本的位置示意图;
图11为仿射预测整像素样本和分像素样本的位置示意图;
图12为仿射预测的流程的示意图;
图13为PROF修正预测值的流程示意图一;
图14为PROF修正预测值的流程示意图二;
图15为本申请实施例提供的一种视频编码系统的组成框图示意图;
图16为本申请实施例提供的一种视频解码系统的组成框图示意图;
图17为帧间预测方法的实现流程示意图一;
图18为二维滤波器的示意图一;
图19为二维滤波器的示意图二;
图20为帧间预测方法的实现流程示意图二;
图21为帧间预测方法的实现流程示意图三;
图22为帧间预测方法的实现流程示意图四;
图23为对边界像素位置滤波的示意图;
图24为边界的扩展示意图;
图25为帧间预测方法的实现流程示意图五;
图26为解码器的组成结构示意图一;
图27为解码器的组成结构示意图二;
图28为编码器的组成结构示意图一;
图29为编码器的组成结构示意图二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。
在视频图像中,一般采用第一图像分量、第二图像分量和第三图像分量来表征当前块(Coding Block,CB);其中,这三个图像分量分别为一个亮度分量、一个蓝色色度分量和一个红色色度分量,具体地,亮度分量通常使用符号Y表示,蓝色色度分量通常使用符号Cb或者U表示,红色色度分量通常使用符号Cr或者V表示;这样,视频图像可以用YCbCr格式表示,也可以用YUV格式表示。
目前,通用的视频编解码标准基于都采用基于块的混合编码框架。视频图像中的每一帧被分割成相同大小(比如128×128,64×64等)的正方形的最大编码单元(LargestCoding Unit,LCU),每个最大编码单元还可以根据规则划分成矩形的编码单元(CodingUnit,CU);而且编码单元可能还会划分成更小的预测单元(Prediction Unit,PU)。具体地,混合编码框架可以包括有预测、变换(Transform)、量化(Quantization)、熵编码(EntropyCoding)、环路滤波(In Loop Filter)等模块;其中,预测模块可以包括帧内预测(intra prediction)和帧间预测(inter prediction),帧间预测可以包括运动估计(motion estimation)和运动补偿(motion compensation)。由于视频图像的一个帧内相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测方式能够消除相邻像素之间的空间冗余;但是由于视频图像中的相邻帧之间也存在着很强的相似性,在视频编解码技术中使用帧间预测方式消除相邻帧之间的时间冗余,从而能够提高编码效率。下述本申请将以帧间预测进行详细描述。
帧间预测即使用已经编/解码的帧来预测当前帧中需要编/解码的部分,在基于块的编解码框架里,需要编/解码的部分通常是编码单元或预测单元。这里把需要编/解码的编码单元或预测单元统称为当前块。平移运动是视频中的一种常见而且简单的运动方式,所以平移的预测也是视频编解码中的一种传统的预测方法。视频中的平移运动可以理解为一部分内容随着时间的变化,从一个帧上的某一个位置移动到了另一个帧上的某一个位置。平移的一个简单的单向预测可以用某一帧与当前帧之间的一个运动矢量(motionvector,MV)来表示。这里所说的某一帧为当前帧的一个参考帧,当前块通过这个包含参考帧和运动矢量的运动信息可以找到参考帧上的一个与当前块大小相同的参考块,把这个参考块作为当前块的预测块。理想的平移运动中,当前块的内容在不同帧之间没有变形、旋转等变化以及亮度颜色的变化等,然而,视频中的内容并不总是符合这样的理想情况。双向预测在一定程度上可以解决上述问题。通常的双向预测是指双向的平移的预测。双向预测即是用两个参考帧和运动矢量的运动信息分别从两个参考帧(两个参考帧可能是同一个参考帧)找到两个与当前块大小相同的参考块,利用这两个参考块生成当前块的预测块。生成方法包括平均、加权平均以及一些其他的计算等。
在本申请中,可以认为预测是运动补偿的一部分,有些文献会把本申请中的预测称为运动补偿,如本申请所说仿射预测,有些文献会叫作仿射运动补偿。
旋转、放大、缩小、扭曲、形变等也是在视频中常见的变化,然而,普通的平移预测并不能很好地处理这种变化,于是仿射(affine)预测模型被应用于视频编解码中,如VVC和AVS中的仿射,其中,VVC和AVS3的仿射预测模型相似。在旋转、放大、缩小、扭曲、形变等变化中,可以认为当前块不是所有点都使用相同的MV,因此需要导出每一个点的MV。仿射预测模型用少量的几个参数通过计算导出每一个点的MV。VVC和AVS3的仿射预测模型都使用了2控制点(4参数)和3控制点(6参数)模型。2控制点即当前块的左上角和右上角2个控制点,3控制点即当前块的左上角、右上角和左下角3个控制点。示例性的,图1为仿射模型的示意图一,图2为仿射模型的示意图二,如图1和2所示。因为每个MV包括一个x分量和一个y分量,所以2个控制点有4个参数,3个控制点有6个参数。
根据仿射预测模型可以为每一个像素位置导出一个MV,每一个像素位置都可以在参考帧中找到其对应的位置,如果这个位置不是整像素位置,那么需要通过插值的方法得出这个分像素位置的值。现在视频编解码标准中使用的插值方法通常都是有限长单位冲激响应(Finite Impulse Response,FIR)滤波器来实现,而按这种方式实现复杂度(成本)是很高的。例如,在AVS3中,对亮度分量使用8抽头的插值滤波器,而且普通模式分像素精度是1/4像素的,affine模式的分像素精度是1/16像素的。对每一个符合1/16像素精度的分像素点,需要使用水平方向的8个整像素和垂直方向8个整像素即64个整像素插值得到。图3为像素的插值示意图,如图3所示,圆形像素是想要得到的分像素点,深色的正方形像素是该分像素对应的整像素的位置,它们两个之间的矢量就是分像素的运动矢量,浅色的正方形像素是对圆形分像素位置的插值需要用到的像素,要得到该分像素位置的值,需要这些8x8的浅色的正方形像素区域的像素值进行插值,也包含深色的像素位置。
在传统的平移的预测中,当前块的每个像素位置的MV是相同的。如果进一步地引入子块的概念,子块的大小如4x4,8x8等。图4为子块插值的示意图一,4x4的块插值需要使用的像素区域如图4所示。图5为子块插值的示意图二,8x8的块插值需要使用的像素区域如图5所示。
如果一个子块中的每个像素位置的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。图6为每个子块的运动矢量示意图,如图6所示,为了推导每个子块的运动矢量,每个子块的中心采样的运动矢量如图所示,取整到1/16精度,然后进行运动补偿。
随着技术的发展,一个叫做使用光流的预测改进技术PROF的方法被提出。这个技术可以在不增加带宽的情况下,对基于块的仿射预测的预测值进行改进。在基于子块的仿射预测做完后,对每一个已完成基于子块的仿射预测的像素点计算其水平方向和垂直方向的梯度。在VVC中PROF计算梯度时使用的是3抽头的滤波器[-1,0,1],其计算方法和双向光流(Bi-directional Optical flow,BDOF)的方法相同。之后,对每一个像素位置,计算其运动矢量偏差,该运动矢量偏差即为当前像素位置的运动矢量与整个子块使用MV的差值。这些运动矢量偏差都可以根据仿射预测模型的公式计算得出。由于公式的特性,一些子块的相同位置的运动矢量偏差是相同的,对这些子块,只需要计算出一组运动矢量偏差,其他子块可以直接复用这些值。对每一个像素位置,使用该点的水平垂直梯度及运动矢量偏差(包括水平方向的偏差和垂直方向的偏差)计算出该像素位置的预测值的修正值,然后将原预测值,即基于子块的仿射预测的预测值,加上预测值的修正值,便可以得到修正后的预测值。
计算水平垂直方向的梯度时,使用[-1,0,1]滤波器,也就是对当前像素位置,水平方向会使用到其左边距离为一的像素位置和右边距离为一的像素位置的预测值,垂直方向会使用到其上边距离为一的像素位置和下边距离为一的像素位置的预测值。如果当前像素位置是当前块的边界位置,那么上述的几个像素位置中有的会超过当前块的边界一个像素距离。使用当前块的边界的预测值向外填充一个像素距离的位置以满足梯度计算,从而不需要额外地增加上述超过当前块的边界一个像素距离的预测值。由于梯度计算只需要使用基于子块的仿射预测的预测值,所以不需要增加额外的带宽。
在VVC标准文本中,对根据控制点的MV导出当前块的各个子块的MV以及子块内的各像素位置的运动矢量偏差。VVC中每个子块使用的作为子块MV的像素位置都相同,所以只需要导出一组子块的运动矢量偏差,其他子块可以复用该子块。进一步地,在VVC标准文本中,对PROF流程的描述,PROF对运动矢量偏差的计算包含在上面的流程中。
AVS3的仿射预测在计算子块的MV时,和VVC的基本原理相同,但AVS3对当前块的左上角子块A,右上角子块B和左下角子块C有特殊的处理。
下面是AVS3标准文本对仿射运动单元子块运动矢量阵列的导出的描述:
如果仿射控制点运动矢量组中有3个运动矢量,那么运动矢量组可以表示为mvsAffine(mv0,mv1,mv2);如果仿射控制点运动矢量组中有2个运动矢量,那么运动矢量组可以表示为mvsAffine(mv0,mv1)。接着,可以按照以下步骤导出仿射运动单元子块运动矢量阵列:
1、计算变量dHorX、dVerX、dHorY和dVerY:
dHorX=(mv1_x-mv0_x)<<(7-Log(width));
dHorY=(mv1_y-mv0_y)<<(7-Log(width));
若运动矢量组为mvsAffine(mv0,mv1,mv2),则:
dVerX=(mv2_x-mv0_x)<<(7-Log(height));
dVerY=(mv2_y-mv0_y)<<(7-Log(height));
若运动矢量组为mvsAffine(mv0,mv1),则:
dVerX=-dHorY;
dVerY=dHorX;
需要说明的是,图7为样本位置示意图,如图7所示,(xE,yE)是当前预测单元亮度预测块左上角样本在当前图像的亮度样本矩阵中的位置,当前预测单元的宽度和高度分别是width和height,每个子块的宽度和高度分别是subwidth和subheight,当前预测单元亮度预测块的左上角样本所在的子块为A,右上角样本所在的子块为B,左下角样本所在的子块为C。
2.1、如果当前预测单元的预测参考模式是‘Pred_List01’或AffineSubblockSizeFlag等于1(AffineSubblockSizeFlag用于指示子块尺寸的大小),则subwidth和subheight均等于8,(x,y)是尺寸为8x8的子块左上角位置的坐标,则可以计算每个8x8亮度子块的运动矢量mvE(mvE_x,mvE_y):
如果当前子块是A,则xPos和yPos均等于0;
如果当前子块是B,则xPos等于width,yPos等于0;
如果当前子块为C且mvsAffine中有3个运动矢量,则xPos等于0,yPos等于height;
否则,xPos等于(x-xE)+4,yPos等于(y-yE)+4;
因此,当前8x8子块的运动矢量mvE为:
mvE_x=Clip3(-131072,131071,Rounding((mv0_x<<7)+dHorX×xPos+dVerX×yPos,7));
mvE_y=Clip3(-131072,131071,Rounding((mv0_y<<7)+dHorY×xPos+dVerY×yPos,7));
2.2、如果当前预测单元的预测参考模式是‘Pred_List0’或‘Pred_List1’,且AffineSubblockSizeFlag等于0,则subwidth和subheight均等于4,(x,y)是尺寸为4x4的子块左上角位置的坐标,计算每个4x4亮度子块的运动矢量mvE(mvE_x,mvE_y):
如果当前子块是A,则xPos和yPos均等于0;
如果当前子块是B,则xPos等于width,yPos等于0;
如果当前子块是C且mvAffine中有3个运动矢量,则xPos等于0,yPos等height;
否则,xPos等于(x-xE)+2,yPos等于(y-yE)+2;
因此,当前4x4子块的运动矢量mvE为:
mvE_x=Clip3(-131072,131071,Rounding((mv0_x<<7)+dHorX×xPos+dVerX×yPos,7));
mvE_y=Clip3(-131072,131071,Rounding((mv0_y<<7)+dHorY×xPos+dVerY×yPos,7))。
下面是AVS3文本对于仿射预测样本导出及亮度、色度样本插值的描述:
如果当前预测单元亮度预测块左上角样本在当前图像的亮度样本矩阵中的位置为(xE,yE)。
如果当前预测单元的预测参考模式是‘PRED_List0’且AffineSubblockSizeFlag的值为0,mv0E0是MvArrayL0运动矢量集合在(xE+x,yE+y)位置的、4x4单元的LO运动矢量。亮度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值,是参考图像队列0中参考索引为RefIdxL0的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E0_x,((yE+y)<<4)+mv0E0_y)的样本值,色度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值,是参考图像队列0中参考索引为RefIdxL0的1/32精度色度样本矩阵中位置为(((xE+2x)<<4)+MvC_x,((yE+2y)<<4)+MvC_y)的样本值。其中,x1=((xE+2x)>>3)<<3,y1=((yE+2y)>>3)<<3,mv1E0是MvArrayL0运动矢量集合在(x1,y1)位置的4x4单元的LO运动矢量,mv2E0是MvArrayL0运动矢量集合在(x1+4,y1)位置的4x4单元的LO运动矢量,mv3E0是MvArrayL0运动矢量集合在(x1,y1+4)位置的4x4单元的LO运动矢量,mv4E0是MvArrayL0运动矢量集合在(x1+4,y1+4)位置的4x4单元的LO运动矢量。
MvC_x=(mv1E0_x+mv2E0_x+mv3E0_x+mv4E0_x+2)>>2
MvC_y=(mv1E0_y+mv2E0_y+mv3E0_y+mv4E0_y+2)>>2
如果当前预测单元的预测参考模式是‘PRED_List0’且AffineSubblockSizeFlag的值为1,mv0E0是MvArrayL0运动矢量集合在(xE+x,yE+y)位置的、8x8单元的LO运动矢量。亮度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值,是参考图像队列0中参考索引为RefIdxL0的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E0_x,((yE+y)<<4)+mv0E0_y)的样本值,色度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/32精度色度样本矩阵中位置为(((xE+2x)<<4)+MvC_x,((yE+2y)<<4)+MvC_y)的样本值。其中,MvC_x等于mv0E0_x,MvC_y等于mv0E0。
如果当前预测单元的预测参考模式是‘PRED_List1’且AffineSubblockSizeFlag的值为0,mv0E1是MvArrayL1运动矢量集合在(xE+x,yE+y)位置的、4x4单元的L1运动矢量。亮度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值,是参考图像队列1中参考索引为RefIdxL1的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E1_x,((yE+y)<<4)+mv0E1_y)的样本值,色度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/32精度色度样本矩阵中位置为(((xE+2x)<<4)+MvC_x,((yE+2y)<<4)+MvC_y)的样本值。其中,x1=((xE+2x)>>3)<<3,y1=((yE+2y)>>3)<<3,mv1E1是MvArrayL1运动矢量集合在(x1,y1)位置的4x4单元的L1运动矢量,mv2E1是MvArrayL1运动矢量集合在(x1+4,y1)位置的4x4单元的L1运动矢量,mv3E1是MvArrayL1运动矢量集合在(x1,y1+4)位置的4x4单元的L1运动矢量,mv4E1是MvArrayL1运动矢量集合在(x1+4,y1+4)位置的4x4单元的L1运动矢量。
MvC_x=(mv1E1_x+mv2E1_x+mv3E1_x+mv4E1_x+2)>>2
MvC_y=(mv1E1_y+mv2E1_y+mv3E1_y+mv4E1_y+2)>>2
如果当前预测单元的预测参考模式是‘PRED_List1’且AffineSubblockSizeFlag的值为1,mv0E1是MvArrayL1运动矢量集合在(xE+x,yE+y)位置的、8x8单元的L1运动矢量。亮度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值,是参考图像队列1中参考索引为RefIdxL1的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E1_x,((yE+y)<<4)+mv0E1_y)的样本值,色度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/32精度色度样本矩阵中位置为(((xE+2x)<<4)+MvC_x,((yE+2y)<<4)+MvC_y)的样本值。其中MvC_x等于mv0E1_x,MvC_y等于mv0E1。
如果当前预测单元的预测模式是‘PRED_List01’,mv0E0是MvArrayL0运动矢量集合在(xE+x,yE+y)位置的8x8单元的L0运动矢量,mv0E1是MvArrayL1运动矢量集合在(x,y)位置的、8x8单元的L1运动矢量。亮度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E0_x,((yE+y)<<4)+mv0E0_y)的样本值,色度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/32精度色度样本矩阵中位置为(((xE+2x)<<4)+MvC0_x,((yE+2y)<<4)+MvC0_y)的样本值,亮度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/16精度亮度样本矩阵中位置为((((xE+x)<<4)+mv0E1_x,((yE+y)<<4)+mv0E1_y))的样本值,色度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/32精度色度样本矩阵中位置为(((xE+2x)<<4)+MvC1_x,((yE+2y)<<4)+MvC1_y)的样本值。其中MvC0_x等于mv0E0_x,MvC0_y等于mv0E0_y,MvC1_x等于mv0E1_x,MvC1_y等于mv0E1_y。
其中,参考图像的亮度1/16精度样本矩阵和色度1/32精度样本矩阵中各个位置的元素值通过如下的仿射亮度样本插值过程和仿射色度样本插值过程所定义的插值方法得到。参考图像外的整数样本应使用该图像内距离该样本最近的整数样本(边缘或角样本)代替,即运动矢量能指向参考图像外的样本。
具体地,仿射亮度样本插值过程如下:
图8为仿射预测亮度样本的位置示意图,如图8所示,A,B,C,D是相邻整像素样本,dx与dy是整像素样本A周边分像素样本a(dx,dy)与A的水平和垂直距离,dx等于fx&15,dy等于fy&15,其中(fx,fy)是该分像素样本在1/16精度的亮度样本矩阵中的坐标。图9为仿射预测整像素样本和分像素样本的位置示意图,整像素Ax,y和周边的255个分像素样本ax,y(dx,dy)的具体位置如图9所示。
具体地,样本位置ax,0(x=1~15)由水平方向上距离插值点最近得8个整数值滤波得到,预测值的获取方式如下:
ax,0=Clip1((fL[x][0]×A-3,0+fL[x][1]×A-2,0+fL[x][2]×A-1,0+fL[x][3]×A0,0+fL[x][4]×A1,0+fL[x][5]×A2,0+fL[x][6]×A3,0+fL[x][7]×A4,0+32)>>6)。
具体地,样本位置a0,y(y=1~15)由垂直方向上距离插值点最近得8个整数值滤波得到,预测值的获取方式如下:
a0,y=Clip1((fL[y][0]×A0,-3+fL[y][1]×A-2,0+fL[y][2]×A-1,0+fL[y][3]×A0,0+fL[y][4]×A1,0+fL[y][5]×A2,0+fL[y][6]×A3,0+fL[y][7]×A-4,0+32)>>6)。
具体地,样本位置ax,y(x=1~15,y=1~15)的预测值的获取方式如下:
ax,y=Clip1((fL[y][0]×a'x,y-3+fL[y][1]×a'x,y-2+fL[y][2]×a'x,y-1+fL[y][3]×a'x,y+fL[y][4]×a'x,y+1+fL[y][5]×a'x,y+2+fL[y][6]×a'x,y+3+fL[y][7]×a'x,y+4+(1<<(19-BitDepth)))>>(20-BitDepth))。
其中:
a'x,y=(fL[x][0]×A-3,y+fL[x][1]×A-2,y+fL[x][2]×A-1,y+fL[x][3]×A0,y+fL[x][4]×A1,y+fL[x][5]×A2,y+fL[x][6]×A3,y+fL[x][7]×A4,y+((1<<(BitDepth-8))>>1))>>(BitDepth-8)。
亮度插值滤波器系数如表1所示:
表1
Figure BDA0003683561850000061
具体地,仿射色度样本插值过程如下:
图10为仿射预测色度样本的位置示意图,如图10所示,A,B,C,D是相邻整像素样本,dx与dy是整像素样本A周边分像素样本a(dx,dy)与A的水平和垂直距离,dx等于fx&31,dy等于fy&31,其中(fx,fy)是该分像素样本在1/32精度的色度样本矩阵中的坐标。图11为仿射预测整像素样本和分像素样本的位置示意图,整像素Ax,y和周边的1023个分像素样本ax,y(dx,dy)的具体位置如图11所示。
具体地,对于dx等于0或dy等于0的分像素点,可直接用色度整像素插值得到,对于dx不等于0且dy不等于0的点,使用整像素行(dy等于0)上的分像素进行计算:
if(dx==0){
ax,y(0,dy)=Clip3(0,(1<<BitDepth)-1,(fC[dy][0]×Ax,y-1+fC[dy][1]×Ax,y+fC[dy][2]×Ax,y+1+fC[dy][3]×Ax,y+2+32)>>6)
}
else if(dy==0){
ax,y(dx,0)=Clip3(0,(1<<BitDepth)-1,(fC[dx][0]×Ax-1,y+fC[dx][1]×Ax,y+fC[dx][2]×Ax+1,y+fC[dx][3]×Ax+2,y+32)>>6)
}
else{
ax,y(dx,dy)=Clip3(0,(1<<BitDepth)-1,(C[dy][0]×a'x,y-1(dx,0)+C[dy][1]×a'x,y(dx,0)+C[dy][2]×a'x,y+1(dx,0)+C[dy][3]×a'x,y+2(dx,0)+(1<<(19-BitDepth)))>>(20-BitDepth))
}
其中,a'x,y(dx,0)是整像素行上的分像素的临时值,定义为:a'x,y(dx,0)=(fC[dx][0]×Ax-1,y+fC[dx][1]×Ax,y+fC[dx][2]×Ax+1,y+fC[dx][3]×Ax+2,y+((1<<(BitDepth-8))>>1))>>(BitDepth-8)。
色度插值滤波器系数如表2所示:
表2
Figure BDA0003683561850000062
Figure BDA0003683561850000071
图12为仿射预测的流程的示意图,如图12所示,常见的仿射预测的方法可以包括以下步骤:
步骤101、确定控制点的运动矢量。
步骤102、根据控制点的运动矢量确定子块的运动矢量。
步骤103、根据子块的运动矢量对子块进行预测。
目前,图13为PROF修正预测值的流程示意图一,如图13所示,在通过PROF改进基于块的仿射预测的预测值时,具体可以包括以下步骤:
步骤101、确定控制点的运动矢量。
步骤102、根据控制点的运动矢量确定子块的运动矢量。
步骤103、根据子块的运动矢量对子块进行预测。
步骤104、根据控制点的运动矢量与子块的运动矢量确定子块内每个位置与子块的运动矢量偏差。
步骤105、根据控制点的运动矢量确定子块的运动矢量。
步骤106、使用基于子块的预测值导出每一个位置计算水平和垂直方向的梯度。
步骤107、利用光流原理,根据每一个位置的运动矢量偏差和水平、垂直方向的梯度,计算每一个位置的预测值的偏差值。
步骤108、对每一个位置基于子块的预测值加上预测值的偏差值,得到修正后的预测值。
目前,图14为PROF修正预测值的流程示意图二,如图14所示,在通过PROF改进基于块的仿射预测的预测值时,具体还可以包括以下步骤:
步骤101、确定控制点的运动矢量。
步骤109、根据控制点的运动矢量确定子块的运动矢量及子块内每个位置与子块的运动矢量的偏差。
步骤103、根据子块的运动矢量对子块进行预测。
步骤106、使用基于子块的预测值导出每一个位置计算水平和垂直方向的梯度。
步骤107、利用光流原理,根据每一个位置的运动矢量偏差和水平、垂直方向的梯度,计算每一个位置的预测值的偏差值。
步骤108、对每一个位置基于子块的预测值加上预测值的偏差值,得到修正后的预测值。
使用光流原理的预测修正PROF可以使用光流原理对基于子块的仿射预测进行修正,提高了压缩性能。然而,PROF的应用是基于子块内的像素位置的运动矢量与子块运动矢量的偏差非常小的情况,也就是说,子块内的像素位置的运动矢量与子块运动矢量的偏差非常小的情况下使用PROF的光流计算方法是有效的,但是,由于PROF依赖于基准位置的水平方向和垂直方向的梯度,在实际位置离基准位置较远的情况下,基准位置的水平和垂直方向的梯度并不能真实的反映基准位置和实际位置之间的水平和垂直方向的梯度,因此,在子块内的像素位置的运动矢量与子块运动矢量的偏差较大的情况下,该方法就不是特别有效了。
由此可见,现有的PROF修正预测值方法并不严谨,在对仿射预测进行改善时,并不能很好的适用于全部场景,编码性能有待提升。
为了解决现有技术中存在的缺陷,在本申请的实施例中,可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的第一预测值的基础上进行基于点的二次预测,获得第二预测值。其中,利用二维滤波器进行的基于点的二次预测,可以使用构成预设形状的几个点的信息对第一预测值进行修正,最终获得修正后的第二预测值,本申请提出的帧间预测方法能够很好的适用于全部场景,大大提升编码性能,从而提高了编解码效率。
应理解,本申请实施例提供一种视频编码系统,图15为本申请实施例提供的一种视频编码系统的组成框图示意图,如图15所示,该视频编码系统11可以包括:变换单元111、量化单元112、模式选择和编码控制逻辑单元113、帧内预测单元114、帧间预测单元115(包括:运动补偿和运动估计)、反量化单元116、反变换单元117、环路滤波单元118、编码单元119和解码图像缓存单元110;针对输入的原始视频信号,通过编码树块(Coding TreeUnit,CTU)的划分可以得到一个视频重建块,通过模式选择和编码控制逻辑单元113确定编码模式,然后,对经过帧内或帧间预测后得到的残差像素信息,通过变换单元111、量化单元112对该视频重建块进行变换,包括将残差信息从像素域变换到变换域,并对所得的变换系数进行量化,用以进一步减少比特率;帧内预测单元114用于对该视频重建块进行帧内预测;其中,帧内预测单元114用于确定该视频重建块的最优帧内预测模式(即目标预测模式);帧间预测单元115用于执行所接收的视频重建块相对于一或多个参考帧中的一或多个块的帧间预测编码,以提供时间预测信息;其中吗,运动估计为产生运动向量的过程,运动向量可以估计该视频重建块的运动,然后,运动补偿基于由运动估计所确定的运动向量执行运动补偿;在确定帧间预测模式之后,帧间预测单元115还用于将所选择的帧间预测数据提供到编码单元119,而且,将所计算确定的运动向量数据也发送到编码单元119;此外,反量化单元116和反变换单元117用于该视频重建块的重构建,在像素域中重构建残差块,该重构建残差块通过环路滤波单元118去除方块效应伪影,然后,将该重构残差块添加到解码图像缓存单元110的帧中的一个预测性块,用以产生经重构建的视频重建块;编码单元119是用于编码各种编码参数及量化后的变换系数。而解码图像缓存单元110用于存放重构建的视频重建块,用于预测参考。随着视频图像编码的进行,会不断生成新的重构建的视频重建块,这些重构建的视频重建块都会被存放在解码图像缓存单元110中。
本申请实施例还提供一种视频解码系统,图16为本申请实施例提供的一种视频解码系统的组成框图示意图,如图16所示,该视频解码系统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等其他编码标准技术,不申请对此不作具体限定。
本申请实施例提供一种帧间预测方法,该方法应用于视频解码设备,即解码器。该方法所实现的功能可以通过解码器中的第一处理器调用计算机程序来实现,当然计算机程序可以保存在第一存储器中,可见,该解码器至少包括第一处理器和第一存储器。
进一步地,在本申请的实施例中,图17为帧间预测方法的实现流程示意图一,如图17所示,解码器进行帧间预测的方法可以包括以下步骤:
步骤201、解析码流,获取当前块的预测模式参数。
在本申请的实施例中,解码器可以先解析二进制码流,从而获得当前块的预测模式参数。其中,预测模式参数可以用于对当前块所使用的预测模式进行确定。
需要说明的是,待解码图像可以划分为多个图像块,而当前待解码的图像块可以称为当前块(可以用CU表示),与当前块相邻的图像块可以称为相邻块;即在待解码图像中,当前块与相邻块之间具有相邻关系。这里,每个当前块可以包括第一图像分量、第二图像分量和第三图像分量,也即当前块表示待解码图像中当前待进行第一图像分量、第二图像分量或者第三图像分量预测的图像块。
其中,假定当前块进行第一图像分量预测,而且第一图像分量为亮度分量,即待预测图像分量为亮度分量,那么当前块也可以称为亮度块;或者,假定当前块进行第二图像分量预测,而且第二图像分量为色度分量,即待预测图像分量为色度分量,那么当前块也可以称为色度块。
进一步地,在本申请的实施例中,预测模式参数不仅可以指示当前块采用的预测模式,还可以指示与该预测模式相关的参数。
可以理解的是,在本申请的实施例中,预测模式可以包括有帧间预测模式、传统帧内预测模式以及非传统帧内预测模式等。
也就是说,在编码侧,编码器可以选取最优的预测模式对当前块进行预编码,在这过程中就可以确定出当前块的预测模式,然后确定用于指示预测模式的预测模式参数,从而将相应的预测模式参数写入码流,由编码器传输到解码器。
相应地,在解码器侧,解码器通过解析码流便可以直接获取到当前块的预测模式参数,并根据解析获得的预测模式参数确定当前块所使用的预测模式,以及该预测模式对应的相关参数。
进一步地,在本申请的实施例中,解码器在解析获得预测模式参数之后,可以基于预测模式参数确定当前块是否使用帧间预测模式。
步骤202、当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,确定当前块的子块的第一运动矢量;其中,当前块包括多个子块。
在本申请的实施例中,解码器在解析获得预测模式参数之后,如果解析获得的预测模式参数指示当前块使用帧间预测模式确定当前块的帧间预测值,那么解码器可以先确定出当前块的每一个子块的第一运动矢量。其中,一个子块对应有一个第一运动矢量。
需要说明的是,在本申请的实施例中,当前块为当前帧中待解码的图像块,当前帧以图像块的形式按一定顺序依次进行解码,该当前块为当前帧内按该顺序下一时刻待解码的图像块。当前块可具有多种规格尺寸,例如16×16、32×32或32×16等规格,其中数字表示当前块上像素点的行数和列数。
进一步对,在本申请的实施例中,当前块可以划分为多个子块,其中,每一个子块的尺寸大小都是相同的,子块为较小规格的像素点集合。子块的尺寸可以为8×8或4×4。
示例性的,在本申请中,当前块的尺寸为16×16,可以划分为4个尺寸均为8×8的子块。
可以理解的是,在本申请的实施例中,在解码器解析码流获取到预测模式参数指示使用帧间预测模式确定当前块的帧间预测值的情况下,就可以继续采用本申请实施例所提供的帧间预测方法。
在本申请的实施例中,进一步地,当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,解码器确定当前块的子块的第一运动矢量的方法可以包括以下步骤:
步骤202a、解析码流,获取当前块的仿射模式参数和预测参考模式。
步骤202b、当仿射模式参数指示使用仿射模式时,确定控制点模式和子块尺寸参数。
步骤202c、根据预测参考模式、控制点模式以及子块尺寸参数,确定第一运动矢量。
在本申请的实施例中,解码器在解析获得预测模式参数之后,如果解析获得的预测模式参数指示当前块使用帧间预测模式确定当前块的帧间预测值,那么解码器可以通过解析码流,获得仿射模式参数和预测参考模式。
需要说明的是,在本申请的实施例中,仿射模式参数用于对是否使用仿射模式进行指示。具体地,仿射模式参数可以为仿射运动补偿允许标志affine_enable_flag,解码器通过仿射模式参数的取值的确定,可以进一步确定是否使用仿射模式。
也就是说,在本申请中,仿射模式参数可以为一个二值变量。若所述仿射模式参数的取值为1,则指示使用所述仿射模式;若所述仿射模式参数的取值为0,则指示不使用所述仿射模式。
可以理解的是,在本申请中,解码器解析码流,如果未解析得到所述仿射模式参数,那么也可以理解为指示不使用所述仿射模式。
示例性的,在本申请中,仿射模式参数的取值可以等于仿射运动补偿允许标志affine_enable_flag的值,如果affine_enable_flag的值为‘1’,表示可使用仿射运动补偿;如果affine_enable_flag的值为‘0’,表示不应使用仿射运动补偿。
进一步地,在本申请的实施例中,如果解码器解析码流所获取的仿射模式参数指示使用仿射模式,那么解码器可以进行获取控制点模式和子块尺寸参数。
需要说明的是,在本申请的实施例中,控制点模式用于对控制点的个数进行确定。在仿射模型中,一个子块可以有2个控制点或者3个控制点,相应地,控制点模式可以为2个控制点对应的控制点模式,或者为3个控制点对应的控制点模式。即控制点模式可以包括4参数模式和6参数模式。
可以理解的是,在本申请的实施例中,对于AVS3标准,如果当前块使用了仿射模式,那么解码器还需要确定出当前块在仿射模式中控制点的个数进行确定,从而可以确定出使用的是4参数(2个控制点)模式,还是6参数(3个控制点)模式。
进一步地,在本申请的实施例中,如果解码器解析码流所获取的仿射模式参数指示使用仿射模式,那么解码器可以通过解析码流,进一步获取子块尺寸参数。
具体地,子块尺寸参数可以通过仿射预测子块尺寸标志affine_subblock_size_flag确定,解码器通过解析码流,获得子块尺寸标志,并根据子块标志的取值确定当前块的子块的尺寸大小。其中,子块的尺寸大小可以为8×8或4×4。具体地,在本申请中,子块尺寸标志可以为一个二值变量。若子块尺寸标志的取值为1,则指示子块尺寸参数为8×8;若子块尺寸标志的取值为0,则指示子块尺寸参数为4×4。
示例性的,在本申请中,子块尺寸标志的取值可以等于仿射预测子块尺寸标志affine_subblock_size_flag的值,如果affine_subblock_size_flag的值为‘1’,则当前块划分为尺寸为8×8的子块;如果affine_subblock_size_flag的值为‘0’,则当前块划分为尺寸为4×4的子块。
可以理解的是,在本申请中,解码器解析码流,如果未解析得到子块尺寸标志,那么也可以理解为当前块划分为4×4的子块。也就是说,如果码流中不存在affine_subblock_size_flag,可以直接将子块尺寸标志的取值设置为0。
进一步地,在本申请的实施例中,解码器在确定控制点模式和子块尺寸参数之后,便可以根据预测参考模式、控制点模式以及子块尺寸参数,进一步确定出当前块中的子块的第一运动矢量。
具体地,在本申请的实施例中,解码器可以先根据所述预测参考模式确定控制点运动矢量组;然后可以基于所述控制点运动矢量组、所述控制点模式以及所述子块尺寸参数,确定出子块的第一运动矢量。
可以理解的是,在本申请的实施例中,控制点运动矢量组可以用于对控制点的运动矢量进行确定。
需要说明的是,在本申请的实施例中,解码器可以按照上述方法,遍历当前块中的每一个子块,利用每一个子块的控制点运动矢量组、控制点模式以及子块尺寸参数,确定出每一个子块的第一运动矢量,从而可以根据每一个子块的第一运动矢量构建获得运动矢量集合。
可以理解的是,在本申请的实施例中,当前块的运动矢量集合中可以包括当前块的每一个子块的第一运动矢量。
进一步地,在本申请的实施例中,解码器在根据所述控制点运动矢量组、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量时,可以先根据所述控制点运动矢量组、所述控制点模式以及所述当前块的尺寸参数,确定差值变量;然后可以基于所述预测模式参数和所述子块尺寸参数,确定子块位置;最后,便可以利用所述差值变量和所述子块位置,确定所述子块的所述第一运动矢量,进而可以获得当前块的多个子块的运动矢量集合。
示例性的,在本申请中,差值变量可以包括4个变量,具体为dHorX、dVerX、dHorY和dVerY,在计算差值变量时,解码器需要先确定出控制点运动矢量组,其中,控制点运动矢量组可以对控制点的运动矢量进行表征。
具体地,如果控制点模式为6参数模式,即存在3个控制点,那么控制点运动矢量组可以为包括3个运动矢量的运动矢量组,表示为mvsAffine(mv0,mv1,mv2);如果控制点模式为4参数模式,即存在2个控制点,那么控制点运动矢量组可以为包括2个运动矢量的运动矢量组,表示为mvsAffine(mv0,mv1)。
接着,解码器便可以利用控制点运动矢量组进行差值变量的计算:
dHorX=(mv1_x-mv0_x)<<(7-Log(width));
dHorY=(mv1_y-mv0_y)<<(7-Log(width));
若运动矢量组为mvsAffine(mv0,mv1,mv2),则:
dVerX=(mv2_x-mv0_x)<<(7-Log(height));
dVerY=(mv2_y-mv0_y)<<(7-Log(height));
若运动矢量组为mvsAffine(mv0,mv1),则:
dVerX=-dHorY;
dVerY=dHorX。
其中,width和height分别为当前块的宽度和高度,即当前块的尺寸参数,具体地,当前块的尺寸参数可以为解码器通过解析码流获取的。
进一步地,在本申请的实施例中,解码器在确定出差值变量之后,可以接着基于所述预测模式参数和所述子块尺寸参数,确定子块位置。具体地,解码器可以通过字块尺寸标志确定出子块的尺寸,同时可以通过预测模式参数确定具体使用哪一种预测模式,然后便可以根据子块的尺寸和使用的预测模式,确定出子块位置。
示例性的,在本申请中,如果当前块的预测参考模式的取值为2,即为第三参考模式‘Pred_List01’,或者,子块尺寸标志的取值为1,即子块的宽度subwidth和高度subheight均等于8,则(x,y)是8×8子块左上角位置的坐标,那么可以通过以下方式确定子块位置的坐标xPos和yPos:
如果子块是当前块的左上角的控制点,则xPos和yPos均等于0;
如果子块是当前块的右上角的控制点,则xPos等于width,yPos等于0;
如果子块是当前块的左下角的控制点,控制点运动矢量组可以为包括3个运动矢量的运动矢量组,则xPos等于0,yPos等于height;
否则,xPos等于(x-xE)+4,yPos等于(y-yE)+4。
示例性的,在本申请中,如果当前块的预测参考模式的取值0或1,即为第一参考模式‘Pred_List0’或第二参考模式‘Pred_List1’,且子块尺寸标志的取值为0,即子块的宽度subwidth和高度subheight均等于4,(x,y)是4×4子块左上角位置的坐标,那么可以通过以下方式确定子块位置的坐标xPos和yPos:
如果子块是当前块的左上角的控制点,则xPos和yPos均等于0;
如果子块是当前块的右上角的控制点,则xPos等于width,yPos等于0;
如果子块是当前块的左下角的控制点,控制点运动矢量组可以为包括3个运动矢量的运动矢量组,则xPos等于0,yPos等于height;
否则,xPos等于(x-xE)+2,yPos等于(y-yE)+2。
进一步地,在本申请的实施例中,解码器计算获得子块位置之后,接着可以基于子块位置和差值变量确定出该子块的第一运动矢量,最后,遍历当前块的每一个子块,获得每一个子块的第一运动矢量,便可以构建获得当前块的多个子块的运动矢量集合。
示例性的,在本申请中,解码器在确定出子块位置xPos和yPos之后,可以通过以下方式确定出子块的第一运动矢量mvE(mvE_x,mvE_y)
mvE_x=Clip3(-131072,131071,Rounding((mv0_x<<7)+dHorX×xPos+dVerX×yPos,7));
mvE_y=Clip3(-131072,131071,Rounding((mv0_y<<7)+dHorY×xPos+dVerY×yPos,7))。
需要说明的是,在本申请中,在确定子块内的每个位置与子块的运动矢量的偏差时,如果当前块使用的是仿射预测模型,可以根据仿射预测模型的公式计算出子块内的每个位置的运动矢量,与子块的运动矢量相减得到它们的偏差。如果子块的运动矢量都选择子块内同一位置的运动矢量,如4x4的块使用距离左上角(2,2)的位置,8x8的块使用距离左上角(4,4)的位置,根据现在标准包括VVC和AVS3中使用的仿射模型,每个子块相同位置的运动矢量偏差都是相同的。但是AVS在左上角,右上角,以及3控制点的情况下的左下角(上述AVS3文本中的,如图7所示的A,B,C位置)与其他块使用的位置不同,相应地在计算左上角,右上角,以及3控制点的情况下的左下角的子块的运动矢量偏差时与其他块也不同。具体如实施例。
步骤203、基于第一运动矢量确定子块的第一预测值,和像素位置与子块之间的运动矢量偏差;其中,像素位置为子块内的像素点的位置。
在本申请的实施例中,解码器在确定出当前块的每一个子块的第一运动矢量之后,可以基于子块的第一运动矢量,分别确定出子块的第一预测值和像素位置与子块之间的运动矢量偏差。
可以理解的是,在本申请的实施例中,步骤203具体可以包括:
步骤203a、基于第一运动矢量确定子块的第一预测值。
步骤203b、基于第一运动矢量确定像素位置与子块之间的运动矢量偏差。
其中,本申请实施例提出的帧间预测方法对解码器执行步骤203a和步骤203b的顺序不进行限定,也就是说,在本申请中,在确定出当前块的每一个子块的第一运动矢量之后,解码器可以先执行步骤203a,然后执行步骤203b,也可以先执行步骤203b,再执行步骤203a,还可以同时执行步骤203a和步骤203b。
进一步地,在本申请的实施例中,解码器在基于所述第一运动矢量确定所述子块的第一预测值时,可以先确定样本矩阵;其中,所述样本矩阵包括亮度样本矩阵和色度样本矩阵;然后可以根据所述预测参考模式、所述子块尺寸参数、所述样本矩阵以及所述运动矢量集合,确定所述第一预测值。
需要说明的是,在本申请的实施例中,解码器在根据所述预测参考模式、所述子块尺寸参数、所述样本矩阵以及所述运动矢量集合,确定所述第一预测值时,可以先根据所述预测参考模式和所述子块尺寸参数,从所述运动矢量集合中确定目标运动矢量;然后可以利用预测参考模式对应的参考图像队列和参考索引所述样本矩阵以及所述目标运动矢量,确定预测样本矩阵;其中,所述预测样本矩阵包括多个子块的所述第一预测值。
具体地,在本申请的实施例中,样本矩阵可以包括亮度样本矩阵和色度样本矩阵,相应地,解码器确定出的预测样本矩阵可以包括亮度预测样本矩阵和色度预测样本矩阵,其中,亮度预测样本矩阵包括多个子块的第一亮度预测值,色度预测样本矩阵包括多个子块的第一色度预测值,第一亮度预测值和第一色度预测值构成子块的第一预测值。
示例性的,在本申请中,假设当前块左上角样本在当前图像的亮度样本矩阵中的位置为(xE,yE)。如果当前块的预测参考模式取值为0,即使用第一参考模式‘PRED_List0’,且子块尺寸标志的取值为0,即子块尺寸参数为4×4,那么目标运动矢量mv0E0是当前块的运动矢量集合在(xE+x,yE+y)位置的4×4子块的第一运动矢量。亮度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E0_x,((yE+y)<<4)+mv0E0_y)的样本值,色度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/32精度色度样本矩阵中位置为(((xE+2×x)<<4)+MvC_x,((yE+2×y)<<4)+MvC_y)的样本值。其中,x1=((xE+2×x)>>3)<<3,y1=((yE+2×y)>>3)<<3,mv1E0是当前块的运动矢量集合在(x1,y1)位置的4×4单元的第一运动矢量,mv2E0是当前块的运动矢量集合在(x1+4,y1)位置的4×4单元的第一运动矢量,mv3E0是当前块的运动矢量集合在(x1,y1+4)位置的4×4单元的第一运动矢量,mv4E0是当前块的运动矢量集合在(x1+4,y1+4)位置的4×4单元的第一运动矢量。
具体地,MvC_x和MvC_y可以通过以下方式确定:
MvC_x=(mv1E0_x+mv2E0_x+mv3E0_x+mv4E0_x+2)>>2
MvC_y=(mv1E0_y+mv2E0_y+mv3E0_y+mv4E0_y+2)>>2
示例性的,在本申请中,假设当前块左上角样本在当前图像的亮度样本矩阵中的位置为(xE,yE),如果当前块的预测参考模式取值为0,即使用第一参考模式‘PRED_List0’,且子块尺寸标志的取值为1,即子块尺寸参数为8×8,那么目标运动矢量mv0E0是当前块的运动矢量集合在(xE+x,yE+y)位置的8×8单元的第一运动矢量。亮度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E0_x,((yE+y)<<4)+mv0E0_y)的样本值,色度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/32精度色度样本矩阵中位置为(((xE+2×x)<<4)+MvC_x,((yE+2×y)<<4)+MvC_y)的样本值。其中,MvC_x等于mv0E0_x,MvC_y等于mv0E0。
示例性的,在本申请中,假设当前块左上角样本在当前图像的亮度样本矩阵中的位置为(xE,yE)。如果当前块的预测参考模式取值为1,即使用第二参考模式‘PRED_List1’,且子块尺寸标志的取值为0,即子块尺寸参数为4×4,那么目标运动矢量mv0E1是当前块的运动矢量集合在(xE+x,yE+y)位置的4×4单元的第一运动矢量。亮度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E1_x,((yE+y)<<4)+mv0E1_y)的样本值,色度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/32精度色度样本矩阵中位置为(((xE+2×x)<<4)+MvC_x,((yE+2×y)<<4)+MvC_y)的样本值。其中,x1=((xE+2×x)>>3)<<3,y1=((yE+2×y)>>3)<<3,mv1E1是MvArray第一运动矢量集合在(x1,y1)位置的4×4单元的第一运动矢量,mv2E1是MvArray第一运动矢量集合在(x1+4,y1)位置的4×4单元的第一运动矢量,mv3E1是MvArray第一运动矢量集合在(x1,y1+4)位置的4×4单元的第一运动矢量,mv4E1是MvArray第一运动矢量集合在(x1+4,y1+4)位置的4×4单元的第一运动矢量。
具体地,MvC_x和MvC_y可以通过以下方式确定:
MvC_x=(mv1E1_x+mv2E1_x+mv3E1_x+mv4E1_x+2)>>2
MvC_y=(mv1E1_y+mv2E1_y+mv3E1_y+mv4E1_y+2)>>2
示例性的,在本申请中,假设当前块左上角样本在当前图像的亮度样本矩阵中的位置为(xE,yE)。如果当前块的预测参考模式取值为1,即使用第二参考模式‘PRED_List1’,且子块尺寸标志的取值为1,即子块尺寸参数为8×8,那么目标运动矢量mv0E1是当前块的运动矢量集合在(xE+x,yE+y)位置的8×8单元的第一运动矢量。亮度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E1_x,((yE+y)<<4)+mv0E1_y)的样本值,色度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/32精度色度样本矩阵中位置为(((xE+2×x)<<4)+MvC_x,((yE+2×y)<<4)+MvC_y)的样本值。其中MvC_x等于mv0E1_x,MvC_y等于mv0E1。
示例性的,在本申请中,假设当前块左上角样本在当前图像的亮度样本矩阵中的位置为(xE,yE)。如果当前块的预测参考模式取值为2,即使用第三参考模式‘PRED_List01’,那么目标运动矢量mv0E0是当前块的运动矢量集合在(xE+x,yE+y)位置的8×8单元的第一运动矢量,目标运动矢量mv0E1是当前块的运动矢量集合在(x,y)位置的8×8单元的第一运动矢量。亮度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/16精度亮度样本矩阵中位置为(((xE+x)<<4)+mv0E0_x,((yE+y)<<4)+mv0E0_y)的样本值,色度预测样本矩阵predMatrixL0中的元素predMatrixL0[x][y]的值是参考图像队列0中参考索引为RefIdxL0的1/32精度色度样本矩阵中位置为(((xE+2×x)<<4)+MvC0_x,((yE+2×y)<<4)+MvC0_y)的样本值,亮度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/16精度亮度样本矩阵中位置为((((xE+x)<<4)+mv0E1_x,((yE+y)<<4)+mv0E1_y)的样本值,色度预测样本矩阵predMatrixL1中的元素predMatrixL1[x][y]的值是参考图像队列1中参考索引为RefIdxL1的1/32精度色度样本矩阵中位置为(((xE+2×x)<<4)+MvC1_x,((yE+2×y)<<4)+MvC1_y)的样本值。其中MvC0_x等于mv0E0_x,MvC0_y等于mv0E0_y,MvC1_x等于mv0E1_x,MvC1_y等于mv0E1_y。
需要说明的是,在申请的实施例中,样本矩阵中的亮度样本矩阵可以为1/16精度亮度样本矩阵,样本矩阵中的色度样本矩阵可以为1/32精度色度样本矩阵。
可以理解的是,在本申请的实施例中,对于不同的预测参考模式,解码器通过解析码流所获取的参考图像队列和参考索引是不相同的。
进一步地,在本申请的实施例中,解码器确定样本矩阵时,可以先获取亮度插值滤波器系数和色度插值滤波器系数;然后可以基于所述亮度插值滤波器系数确定所述亮度样本矩阵,同时,可以基于所述色度插值滤波器系数确定所述色度样本矩阵。
示例性的,在本申请中,解码器在确定亮度样本矩阵时,获取的亮度插值滤波器系数如上述表1所示,然后按照如图8和图9所示的像素位置和样本位置,计算获得亮度样本矩阵。
具体地,样本位置ax,0(x=1~15)由水平方向上距离插值点最近得8个整数值滤波得到,预测值的获取方式如下:
ax,0=Clip1((fL[x][0]×A-3,0+fL[x][1]×A-2,0+fL[x][2]×A-1,0+fL[x][3]×A0,0+fL[x][4]×A1,0+fL[x][5]×A2,0+fL[x][6]×A3,0+fL[x][7]×A4,0+32)>>6)。
具体地,样本位置a0,y(y=1~15)由垂直方向上距离插值点最近得8个整数值滤波得到,预测值的获取方式如下:
a0,y=Clip1((fL[y][0]×A0,-3+fL[y][1]×A-2,0+fL[y][2]×A-1,0+fL[y][3]×A0,0+fL[y][4]×A1,0+fL[y][5]×A2,0+fL[y][6]×A3,0+fL[y][7]×A-4,0+32)>>6)。
具体地,样本位置ax,y(x=1~15,y=1~15)的预测值的获取方式如下:
ax,y=Clip1((fL[y][0]×a'x,y-3+fL[y][1]×a'x,y-2+fL[y][2]×a'x,y-1+fL[y][3]×a'x,y+fL[y][4]×a'x,y+1+fL[y][5]×a'x,y+2+fL[y][6]×a'x,y+3+fL[y][7]×a'x,y+4+(1<<(19-BitDepth)))>>(20-BitDepth))。
其中:
a'x,y=(fL[x][0]×A-3,y+fL[x][1]×A-2,y+fL[x][2]×A-1,y+fL[x][3]×A0,y+fL[x][4]×A1,y+fL[x][5]×A2,y+fL[x][6]×A3,y+fL[x][7]×A4,y+((1<<(BitDepth-8))>>1))>>(BitDepth-8)。
示例性的,在本申请中,解码器在确定色度样本矩阵时,可以先解析码流获得色度插值滤波器系数如上述表2所示,然后按照如图10和图11所示的像素位置和样本位置,计算获得色度样本矩阵。
具体地,对于dx等于0或dy等于0的分像素点,可直接用色度整像素插值得到,对于dx不等于0且dy不等于0的点,使用整像素行(dy等于0)上的分像素进行计算:
Figure BDA0003683561850000121
其中,a'x,y(dx,0)是整像素行上的分像素的临时值,定义为:a'x,y(dx,0)=(fC[dx][0]×Ax-1,y+fC[dx][1]×Ax,y+fC[dx][2]×Ax+1,y+fC[dx][3]×Ax+2,y+((1<<(BitDepth-8))>>1))>>(BitDepth-8)。
进一步地,在本申请的实施例中,解码器在基于所述像素位置与子块之间的运动矢量偏差时,可以先解析所述码流,获取二次预测参数;如果二次预测参数指示使用二次预测,那么解码器可以基于所述差值变量确定所述子块与每一个像素位置之间的所述运动矢量偏差。
具体地,在本申请的实施例中,解码器在基于所述差值变量确定所述子块与每一个像素位置之间的所述运动矢量偏差时,可以按照上述步骤202所提出的方法,根据所述控制点运动矢量组、所述控制点模式以及所述当前块的尺寸参数,确定出dHorX、dVerX、dHorY和dVerY这4个差值变量,然后在利用差值变量进一步确定出子块中的每一个像素位置所对应的运动矢量偏差。
示例性的,在本申请中,width和height分别为解码器获取的当前块的宽度和高度,利用子块尺寸参数所确定出子块的宽度subwidth和高度subheight。假设(i,j)为子块内部的任意像素点的坐标,其中,i的取值范围是0~(subwidth-1),j的取值范围是0~(subheight-1),那么,可以通过以下方法计算4不同类型的子块的内部每个像素(i,j)位置的运动矢量偏差:
如果子块是当前块的左上角的控制点A,那么(i,j)像素的运动矢量偏差dMvA[i][j]:
dMvA[i][j][0]=dHorX×i+dVerX×j
dMvA[i][j][1]=dHorY×i+dVerY×j;
如果子块是当前块的右上角的控制点B,那么(i,j)像素的运动矢量偏差dMvB[i][j]:
dMvB[i][j][0]=dHorX×(i-subwidth)+dVerX×j
dMvB[i][j][1]=dHorY×(i-subwidth)+dVerY×j;
如果子块是当前块的左下角的控制点C,控制点运动矢量组可以为包括3个运动矢量的运动矢量组,那么(i,j)像素的运动矢量偏差dMvC[i][j]:
dMvC[i][j][0]=dHorX×i+dVerX×(j-subheight)
dMvC[i][j][1]=dHorY×i+dVerY×(j-subheight);
否则,(i,j)像素的运动矢量偏差dMvN[i][j]:
dMvN[i][j][0]=dHorX×(i–(subwidth>>1))+dVerX×(j–(subheight>>1))
dMvN[i][j][1]=dHorY×(i–(subwidth>>1))+dVerY×(j–(subheight>>1))。
其中,dMvX[i][j][0]表示运动矢量偏差在水平分量的偏差值,dMvX[i][j][1]表示运动矢量偏差在垂直分量的偏差值。X为A,B,C或N。
可以理解的是,在本申请的实施例中,解码器在基于所述差值变量确定所述子块与每一个像素位置之间的所述运动矢量偏差之后,便可以利用子块内的全部像素位置对应的全部运动矢量偏差,构建出该子块对应的运动矢量偏差矩阵。可见,运动矢量偏差矩阵中包括有子块与任意一个内部的像素点之间的运动矢量偏差,即运动矢量偏差。
进一步地,在本申请的实施例中,如果解码器解析码流获得的二次预测参数指示不使用二次预测,那么,解码器可以选择直接将上述步骤203a中所获得的当前块的子块的第一预测值作为子块的第二预测值,而不再进行下述步骤204和步骤205的处理。
具体地,在本本申请的实施例中,如果二次预测参数指示不使用二次预测,那么解码器可以利用所述预测样本矩阵确定出第二预测值。其中,预测样本矩阵包括多个子块的所述第一预测值,解码器可以将像素位置所在的子块的第一预测值确定为自身的第二预测值。
示例性的,在本申请中,如果当前块的预测参考模式取值为0或1,即使用第一参考模式‘PRED_List0’,或使用第二参考模式‘PRED_List1’,那么可以直接从包括有一个亮度预测样本矩阵和两个色度预测样本矩阵的预测样本矩阵中,选择像素位置所在的子块的第一预测值,并将该第一预测值确定为像素位置的帧间预测值,即第二预测值。
示例性的,在本申请中,如果当前块的预测参考模式取值为2,即使用第三参考模式‘PRED_List01’,那么可以先对预测样本矩阵中所包括的2个亮度预测样本矩阵(2组共4个色度预测样本矩阵)进行均值运算,得到1个平均后的亮度预测样本(2个平均后的色度预测样本),最后便从这个平均后的亮度预测样本(2个平均后的色度预测样本)中,选择像素位置所在的子块的第一预测值,并将该第一预测值确定为像素位置的帧间预测值,即第二预测值。
步骤204、根据运动矢量偏差确定二维滤波器的滤波系数;其中,二维滤波器用于按照预设形状进行二次预测处理。
在本申请的实施例中,解码器在基于所述第一运动矢量分别确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差之后,便可以根据运动矢量偏差进一步确定出二维滤波器的滤波系数。
需要说明的是,在本申请的实施例中,二维滤波器的滤波器系数是与像素位置所对应的运动矢量偏差相关的。也就是说,对于不同的像素位置,如果对应的运动矢量偏差不同,那么使用的二维滤波器的滤波系数也是不同的。
可以理解的是,在本申请的实施例中,二维滤波器用于利用多个相邻的、构成所述预设形状的像素位置进行二次预测。其中,预设形状为矩形、菱形或任意一种对称形状。
也就是说,在本申请的中,用于进行二次预测的二维滤波器是相邻的构成预设形状的点所构成的滤波器。相邻的构成预设形状的点可以包括多个点,例如由9个点构成。预设形状可以为对称形状,例如,预设形状可以包括矩形、菱形或其他任意一种对称形状。
示例性的,在本申请中,二维滤波器是一个矩形的滤波器,具体地,二维滤波器是由9个相邻的构成矩形的像素位置组成的滤波器。在9个像素位置中,位于中心的像素位置是当前需要二次预测的像素位置的像素位置。
进一步地,在本申请的实施例中,解码器在根据所述运动矢量偏差确定二维滤波器的滤波系数时,可以先解析码流,获取比例参数,然后可以根据比例参数和运动矢量偏差,确定所述像素位置对应的所述滤波器系数。
需要说明的是,在本申请的实施例中,比例参数可以包括至少一个比例值,所述运动矢量偏差包括水平偏差和垂直偏差;其中,所述至少一个比例值均为非零实数。
具体地,在本申请中,当所述二维滤波器利用9个相邻的、构成矩形的像素位置进行二次预测时,位于所述矩形的中心的像素位置为待预测位置,其他8个像素位置依次位于所述待预测位置的左上、上、右上、右、右下、下、左下、左的相邻位置。
相应地,在本申请中,解码器可以基于所述至少一个比例值和所述待预测位置的所述运动矢量偏差,按照预设计算规则计算获得所述9个相邻的像素位置对应的9个滤波器系数系数。
需要说明的是,在本申请中,预设计算规则可以包括多种不同的计算方式,如加法运算、减法运算、乘法运动等。其中,对于不同的像素位置,可以使用不同的计算方式进行滤波器系数的计算。
可以理解的是,在本申请中,解码器在按照预设计算规则中不同的计算方法计算获得多个像素位置对应的多个滤波器系数中,部分滤波器系数可以为运动矢量偏差的一次函数,即两者为线性关系,还可以为运动矢量偏差的二次函数或高次函数,即两者为非线性关系。
也就是说,在本申请中,多个相邻的像素位置对应的多个滤波器系数中的任意一个滤波器系数,可以为所述运动矢量偏差的一次函数、二次函数或者高次函数。
示例性的,在本申请中,假设像素位置的运动矢量偏差为(dmv_x,dmv_y),其中,如果目标像素位置的坐标为(i,j),那么dmv_x可以表示为dMvX[i][j][0],即表示运动矢量偏差在水平分量的偏差值,dmv_y可以表示为dMvX[i][j][1],即表示运动矢量偏差在垂直分量的偏差值。
相应地,表3为基于运动矢量偏差(dmv_x,dmv_y)所获得的滤波器系数,如表3所示,对于二维滤波器,按照像素位置的运动矢量偏差(水平偏差为dmv_x,所述垂直偏差为dmv_y)和不同的比例参数,如m和n,可以获得9个相邻的像素位置对应的9个滤波器系数,其中,解码器可以直接将中心的待预测位置的滤波器系数设置为1。
表3
Figure BDA0003683561850000131
Figure BDA0003683561850000141
其中,比例参数m和n一般是小数或分数,一种可能的情况是m和n都是2的幂,如1/2,1/4,1/8等。这里的dmv_x,dmv_y都是其实际的大小,即dmv_x,dmv_y的1表示1个像素的距离,dmv_x,dmv_y是小数或者分数。
需要说明的是,在本申请的实施例中,与现有的8抽头的滤波器相比,目前常见的8抽头的滤波器所对应的整像素位置和分像素位置的运动矢量在水平和垂直方向均为非负的,且大小均属于0像素到1像素之间,即dmv_x,dmv_y不可以为负的。而在本申请中,滤波器对应的整像素位置和分像素位置的运动矢量在水平和垂直方向都可以为负的,即dmv_x,dmv_y可以为负的。
示例性的,在本申请的实施例中,如果比例参数m为1/16,n为1/2,那么上述表3可以表示为下表4:
表4
像素位置 滤波器系数
左上 (-dmv_x-dmv_y)/16
-dmv_x/2
左下 (-dmv_x+dmv_y)/16
-dmv_y/2
中心 1
dmv_y/2
右上 (dmv_x-dmv_y)/16
dmv_x/2
右下 (dmv_x+dmv_y)/16
可以理解的是,在本申请的实施例中,在视频编解码技术以及标准中,通常使用放大倍数以避免小数,浮点数运算,然后将计算的结果缩小合适的倍数以得到正确的结果。放大倍数时通常使用左移,缩小倍数时通常使用右移。因此,在通过二维滤波器进行二次预测时,在实际应用时会写成如下的形式:
假设像素位置的运动矢量偏差为(dmv_x,dmv_y),经过左移shift1得到(dmv_x’,dmv_y’),基于上述表4,二维滤波器的系数可以表示为下表5:
表5
像素位置 滤波器系数
左上 -dmv_x’-dmv_y’
-dmv_x’×8
左下 -dmv_x’+dmv_y’
-dmv_y’×8
中心 16<<shift1
dmv_y’×8
右上 dmv_x’-dmv_y’
dmv_x×8
右下 dmv_x’+dmv_y’
图18为二维滤波器的示意图一,如图18所示,以基于子块的预测的结果为二次预测的基础,浅色正方形为该滤波器的整像素位置,也就是基于子块的预测得到的位置。圆形是需要进行二次预测的分像素位置,即像素位置的位置,深色正方形是该分像素位置对应的整像素位置,插值得到这个分像素位置时需要如图所示的9个整像素位置。
图19为二维滤波器的示意图二,如图19所示,以基于子块的预测的结果为二次预测的基础,浅色正方形为该滤波器的整像素位置,也就是基于子块的预测得到的位置。圆形是需要进行二次预测的分像素位置,即像素位置的位置,深色正方形是该分像素位置对应的整像素位置,插值得到这个分像素位置时需要如图所示的13个整像素位置。
步骤205、基于滤波系数和第一预测值,确定子块的第二预测值,将第二预测值确定为子块的帧间预测值。
在本申请的实施例中,解码器在根据运动矢量偏差确定出二维滤波器的滤波系数之后,便可以基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,从而可以实现结合与像素位置的运动矢量偏差对子块的二次预测,完成对第一预测值的修正。
可以理解的是,在本申请的实施例中,解码器利用像素位置所对应的运动矢量偏差确定出滤波器系数,从而可以按照滤波器系数,通过二维滤波器对第一预测值进行修正,获得修正后的、子块的第二预测值。可见,第二预测值为基于所述第一预测值的修正值。
进一步地,在本申请的实施例中,解码器在基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值时,可以先对滤波器系数与子块的第一预测值进行乘法运算,获得乘积结果,遍历子块中的全部像素位置之后,再对子块的全部像素位置的所述乘积结果进行加法运算,获得求和结果,最后可以对加法结果进行归一化处理,最终便可以获得子块修正后的第二预测值。
需要说明的是,在本申请的实施例中,在进行二次预测之前,一般情况下是将像素位置所在的子块的第一预测值作为该像素位置的修正前的预测值,因此,在通过二维滤波器进行滤波时,可以将滤波器系数与对应像素位置的预测值,即第一预测值相乘,并对每一个像素位置对应的乘积结果进行累加,然后归一化。
可以理解的是,在本申请中,解码器可以通过多种方式进行归一化处理,例如,可以将滤波器系数与对应的像素位置的预测值相乘后累加的结果,右移4+shift1位。或者,还可以将滤波器系数与对应的像素位置的预测值相乘后累加的结果,再加上(1<<(3+shift1)),然后右移4+shift1位。
可见,在本申请中,在获得子块内部的像素位置对应的运动矢量偏差之后,对每一个子块,以及每一个子块中的每一个像素位置,可以根据运动矢量偏差,基于子块的运动补偿的第一预测值,使用二维滤波器进行滤波,完成对子块的二次预测,得到新的第二预测值。
进一步地,在本申请的实施例中,二维滤波器可以理解为利用多个相邻的、构成所述预设形状的像素位置进行二次预测。其中,预设形状可以为矩形、菱形或任意一种对称形状。
具体地,在本申请的实施例中,二维滤波器在利用9个相邻的、构成矩形的像素位置进行二次预测时,可以先确定所述当前块的预测样本矩阵,和所述当前块的所述子块的运动矢量偏差集合;其中,所述运动矢量偏差矩阵包括全部像素位置对应的所述运动矢量偏差;然后基于所述9个相邻的、构成矩形的像素位置,利用所述预测样本矩阵和所述运动矢量偏差集合,确定所述当前块的二次预测后的样本矩阵。
示例性的,在本申请中,如果当前块的宽度和高度分别是width和height,每个子块的宽度和高度分别是subwidth和subheight。如图7所示,当前块的亮度预测样本矩阵的左上角样本所在的子块为A,右上角样本所在的子块为B,左下角样本所在的子块为C,其他位置所在子块为其它子块。
对当前块中的每个子块,可以将子块的运动矢量偏差矩阵为dMv,那么:
1、如果子块是A,dMv等于dMvA;
2、如果子块是B,dMv等于dMvB;
3、如果子块为C,且该子块的控制点运动矢量组mvAffine中有3个运动矢量,dMv等于dMvC;
4、如果子块为A、B、C以外的其他子块,dMv等于dMvN。
进一步地,假设(x,y)是当前子块左上角位置的坐标,(i,j)是亮度子块内部像素的坐标,i的取值范围是0~(subwidth-1),j的取值范围是0~(subheight-1),基于子块的预测样本矩阵为PredMatrixSb,二次预测的预测样本矩阵为PredMatrixS,可以按照以下方法计算(x+i,y+j)的二次预测的预测样本PredMatrixS[x+i][y+j]:
PredMatrixS[x+i][y+j]=
(UPLEFT(x+i,y+j)×(-dMv[i][j][0]-dMv[i][j][1])+
UP(x+i,y+j)×((-dMv[i][j][1])<<3)+
UPRIGHT(x+i,y+j)×(dMv[i][j][0]-dMv[i][j][1])+
LEFT(x+i,y+j)×((-dMv[i][j][0])<<3)+
CENTER(x+i,y+j)×(1<<15)+
RIGHT(x+i,y+j)×(dMv[i][j][0]<<3)+
DOWNLEFT(x+i,y+j)×(-dMv[i][j][0]+dMv[i][j][1])+
DOWN(x+i,y+j)×(dMv[i][j][1]<<3)+
DOWNRIGHT(x+i,y+j)×(dMv[i][j][0]+dMv[i][j][1])+
(1<<10))>>11
PredMatrixS[x+i][y+j]=Clip3(0,(1<<BitDepth)-1,PredMatrixS[x+i][y+j])。
其中,UPLEFT(x+i,y+j)=predMatrix[x+i-1<0?0:x+i-1][y+j-1<0?0:y+j-1]
UP(x+i,y+j)=predMatrix[x+i][y+j-1<0?0:y+j-1]
UPRIGHT(x+i,y+j)=predMatrix[x+i+1>width-1?width-1:x+i+1][y+j-1<0?0:y+j-1]
LEFT(x+i,y+j)=predMatrix[x+i-1<0?0:x+i-1][y+j]
CENTER(x+i,y+j)=predMatrix[x+i][y+j]
RIGHT(x+i,y+j)=predMatrix[x+i+1>width-1?width-1:x+i+1][y+j]
DOWNLEFT(x+i,y+j)=predMatrix[x+i-1<0?0:x+i-1][y+j+1<0?0:y+j-1]
DOWN(x+i,y+j)=predMatrix[x+i][y+j-1<0?0:y+j-1]
DOWNRIGHT(x+i,y+j)=predMatrix[x+i+1>width-1?width-1:x+i+1][y+j+1>height-1?height-1:y+j+1]。
可以理解的是,在本申请的实施例中,CENTER(x+i,y+j)像素位置可以为上述9个相邻的、构成矩形的像素位置中的中心位置,然后可以基于该(x+i,y+j)像素位置,以及与其相邻的其他8个像素位置,进行二次预测处理。具体地,其他8个像素位置分别为UP(上)、UPRIGHT(右上)、LEFT(左)、RIGHT(右)、DOWNLEFT(左下)、DOWN(下)、DOWNRIGHT(右下)、UPLEFT(左上)。
需要说明的是,在本申请中,PredMatrixS[x+i][y+j]的计算公式的精度可以使用更低的精度。比如将每一个乘法右边的项都右移,如dMv[i][j][0]和dMv[i][j][1]都右移shift3位,相应的,1<<15变为1<<(15-shift3),…+(1<<10))>>11变为…+(1<<(10-shift3)))>>(11-shift3)。
示例性的,可以限制运动矢量的大小在一个合理的范围,如上述使用的运动矢量在水平方向和垂直方向的正负值都不超过1个像素或1/2像素或1/4像素等。
可以理解的是,如果当前块的预测参考模式是‘Pred_List01’,那么解码器将各分量的多个预测样本矩阵平均得到该分量的最终的预测样本矩阵。例如,2个亮度预测样本矩阵平均后得到新的亮度预测样本矩阵。
进一步地,在本申请的实施例中,在得到当前块的预测样本矩阵后,如果当前块没有变换系数,那么预测矩阵就作为当前块的解码结果,如果当前块还有变换系数,那么,可以先解码变换系数,并通过反变换、反量化得到残差矩阵,将残差矩阵加到预测矩阵上得到解码结果。
综上所述,通过步骤201至步骤205所提出的帧间预测方法,在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的预测的基础上进行基于点的二次预测。基于点的二次预测使用构成矩形、菱形等预设形状的多个点的信息。基于点的二次预测使用二维滤波器。二维滤波器是相邻的构成预设形状的点的构成的滤波器。相邻的构成预设形状的点可以为9个点。对一个像素位置,滤波器处理的结果为该位置的新预测值。
本申请提出的帧间预测方法,适用于像素位置的运动矢量与子块的运动矢量有偏差的情况,也就是说本申请中,解码器是在基于子块的预测后,由于对于像素位置没有完全预测而进行的二次预测。如果像素位置的运动矢量与子块的运动矢量没有偏差,那么使用本申请提出的帧间预测方法预测后的第二预测值应该和使用本申请提出的帧间预测方法之前的第一预测值相同。在本申请中,在像素位置的运动矢量与子块的运动矢量没有偏差时对,也可以选择对该像素位置不使用本申请提出的帧间预测方法。
本申请提出的帧间预测方法可以适用于所有像素位置的运动矢量与子块的运动矢量有偏差的情况,包括如仿射预测模型这种可以计算出每个像素位置的运动矢量,而只进行了基于子块的预测的情况,也就是当前块所有像素位置的运动矢量都可以计算出来,当前块并不是所有像素位置的运动矢量都与它所在子块的运动矢量相同。还可以适用于并非所有的像素位置的运动矢量都可以根据一个模型计算出来,但是当前块内部的一些像素位置,如一个子块,的运动矢量发生变化而与其他位置的运动矢量不相同的时候,假设这些内容在当前帧的时间点上是连续变化的,那么这些相邻的而运动矢量不同的部分,如子块,之间的运动矢量可能是连续变化的,这时候根据计算模型等方式重新计算一些相关像素位置的运动矢量后,这些运动矢量与原来的运动矢量有偏差的情况。也就是说,本申请提出的帧间预测方法,可以适用于仿射预测或者其他场景,并不对应用场景进行限定。
本申请提出的帧间预测方法所使用的二维滤波器,可以为一个矩形的滤波器,也可以为一个菱形的滤波器,或者其他形状的滤波器。示例性的,二维滤波器是由9个相邻的构成矩形的像素位置组成的滤波器。9个像素位置中位于中心的像素位置是当前需要预测的像素位置。
需要说明的是,本申请提出的帧间预测方法,可以适用于任何一个图像分量上,在本实施例中示例性的对亮度分量使用二次预测方案,但是也可以用于色度分量,或者其他格式的任一分量。本申请提出的帧间预测方法也可以适用于任何一种视频格式上,包括但不限于YUV格式,包括但不限于YUV格式的亮度分量。
本实施例提供了一种帧间预测方法,解码器解析码流,获取当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,确定当前块的子块的第一运动矢量;其中,当前块包括多个子块;基于第一运动矢量确定子块的第一预测值,和像素位置与子块之间的运动矢量偏差;其中,像素位置为子块内的像素点的位置;根据运动矢量偏差确定二维滤波器的滤波系数;其中,二维滤波器用于按照预设形状进行二次预测处理;基于滤波系数和第一预测值,确定子块的第二预测值,将第二预测值确定为子块的帧间预测值。也就是说,本申请提出的帧间预测方法,可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的第一预测值的基础上进行基于点的二次预测,获得第二预测值。其中,利用二维滤波器进行的基于点的二次预测,可以使用构成预设形状的几个点的信息对第一预测值进行修正,最终获得修正后的第二预测值,本申请提出的帧间预测方法能够很好的适用于全部场景,大大提升编码性能,从而提高了编解码效率。
基于上述实施例中,在本申请的再一实施例中,图20为帧间预测方法的实现流程示意图二,如图20所示,解码器进行帧间预测的方法可以包括以下步骤:
步骤301、根据子块的第一运动矢量对子块进行预测,获得第一预测值。
步骤302、确定子块内每一个位置与子块的运动矢量偏差。
步骤303、根据每一个位置的运动矢量偏差,利用二维滤波器对第一预测值进行滤波,得到第二预测值。
也就是说,本申请提出的帧间预测方法,可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的预测的基础上进行基于点的二次预测,最终完成对第一预测值的修正,获得新的预测值,即第二预测值。
具体地,基于点的二次预测使用二维滤波器。二维滤波器是相邻的构成预设形状的点的构成的滤波器。相邻的构成预设形状的点可以为9个点。对一个像素位置,滤波器处理的结果为该位置的新预测值。其中,二维滤波器的滤波系数由每一个位置的运动矢量偏差确定,二维滤波器的输入为第一预测值,输出为第二预测值。
进一步地,在本申请中,如果本申请中对当前块使用仿射模式,那么需要先对控制点的运动矢量进行确定。图21为帧间预测方法的实现流程示意图三,如图21所示,解码器进行帧间预测的方法可以包括以下步骤:
步骤304、确定控制点的第二运动矢量。
步骤305、根据第二运动矢量确定子块的第一运动矢量。
步骤301、根据子块的第一运动矢量对子块进行预测,获得第一预测值。
步骤302、确定子块内每一个位置与子块的运动矢量偏差。
步骤303、根据每一个位置的运动矢量偏差,利用二维滤波器对第一预测值进行滤波,得到第二预测值。
由此可见,在本申请的实施例中,在对控制点的运动矢量进行确定之后,可以利用控制点的运动矢量对子块进行预测处理,并在确定出子块中的像素位置与子块的运动矢量偏差之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的预测的基础上进行基于点的二次预测,最终完成对第一预测值的修正,获得新的预测值,即第二预测值。
进一步地,在本申请中,也可以将确定子块的第一运动矢量和确定子块内每个位置与子块的运动矢量偏差的两个步骤同时进行。图22为帧间预测方法的实现流程示意图四,如图22所示,解码器进行帧间预测的方法可以包括以下步骤:
步骤304、确定控制点的第二运动矢量。
步骤306、根据第二运动矢量确定子块的第一运动矢量,和子块内每一个位置与子块的运动矢量偏差。
步骤301、根据子块的第一运动矢量对子块进行预测,获得第一预测值。
步骤303、根据每一个位置的运动矢量偏差,利用二维滤波器对第一预测值进行滤波,得到第二预测值。
由此可见,在本申请的实施例中,在对控制点的运动矢量进行确定之后,可以同时进行子块的第一运动矢量和子块内每一个位置与子块的运动矢量偏差的确定,然后对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的预测的基础上进行基于点的二次预测,最终完成对第一预测值的修正,获得新的预测值,即第二预测值。
需要说明的是,在本申请的实施例中,因为仿射模型可以明确地计算出每一个像素位置的运动矢量,或者说子块内每一个像素位置与子块运动矢量的偏差,因此,本申请提出的帧间预测方法可以用于对仿射预测进行改善,当然,该方法也可以应用于其他基于子块的预测的改善。
进一步地,本申请提出的帧间预测方法可以以AVS3标准为基础,也可以应用于VVC标准,本申请不作具体限定。
示例性的,在本申请中,解析码流的序列头信息,判断对该序列解码时是否使用本申请提出的二次预测方法。一般情况下,对该二次预测方法的控制级别是序列级的,如果是这样,就按上述方法判断。如果对该二次预测方法的控制级别是图像级的,也就是说对每一帧图像都需要判断解码时是否使用本申请提出的二次预测方法,那么在解码每一帧图像时,解析码流的图像头信息,判断对该帧图像解码时是否使用本技术。如果对当前序列或当前帧图像使用本技术,那么对应地当前序列或当前帧图像符合条件的编码单元使用本申请提出的二次预测方法。在本实施例中,该技术使用在用仿射模式解码的编码单元,也就是说对应地当前序列或当前帧图像中使用仿射模式的编码单元使用本技术。仿射模式是序列级控制的,该序列是否使用仿射模式需要解析序列头的信息,文本描述如表6所示的序列头定义:
表6
Figure BDA0003683561850000171
其中,仿射运动补偿允许标志affine_enable_flag为二值变量。值为‘1’表示可使用仿射运动补偿;值为‘0’表示不应使用仿射运动补偿。AffineEnableFlag的值等于affine_enable_flag的值。
进一步地,如果使用序列级的控制,那么可以在文本中加入如下表7所示的序列头定义:
表7
Figure BDA0003683561850000172
其中,二次预测允许标志secondary_pred_enable_flag为二值变量。值为‘1’表示可使用二次预测;值为‘0’表示不应使用二次预测。SencondaryPredEnableFlag的值等于secondary_pred_enable_flag的值。
进一步地,如果本申请提出的二次预测方法只对仿射模式使用,那么也可以在文本中加入如下表8所示的序列头定义:
表8
Figure BDA0003683561850000173
Figure BDA0003683561850000181
进一步地,在AVS3中,仿射预测的子块的尺寸可以使用4x4或8x8,选择哪一个尺寸是在图像级控制的,文本描述如下表9所示的帧间预测图像头定义:
表9
Figure BDA0003683561850000182
其中,仿射预测子块尺寸标志affine_subblock_size_flag为二值变量。值为‘0’表示当前图像仿射预测子块最小尺寸为4x4;值为‘1’表示最小尺寸为8x8。AffineSubblockSizeFlag的值等于affine_subblock_size_flag的值。如果位流中不存在affine_subblock_size_flag,AffineSubblockSizeFlag的值等于0。
解码当前块时,需要解析其是否使用仿射模式。在AVS3中,如果当前块使用了仿射模式,还需要确定使用的是4参数(2控制点)模式还是6参数(3控制点)模式,预测参考模式,以及各个控制点的运动信息。预测参考模式包括只参考参考帧列表0的预测参考模式‘Pred_List0’,只参考参考帧列表1的预测参考模式‘Pred_List1’,参考参考帧列表0和参考帧列表1的预测参考模式‘Pred_List01’,确定使用的是4参数(2控制点)模式还是6参数(3控制点)模式,预测参考模式,以及各个控制点的运动信息在不同的模式(直接模式、跳过模式、普通模式)下有不同的确定方法。
仿射模式标志affine_flag为二值变量。值为‘1’表示当前块是仿射模式;值为‘0’表示不是仿射模式。AffineFlag的值等于affine_flag的值。如果位流中不存在affine_flag,AffineFlag的值为0。
仿射运动矢量索引cu_affine_cand_idx,跳过模式或直接模式下的仿射模式索引值。AffineCandIdx的值等于cu_affine_cand_idx的值。如果位流中不存在cu_affine_cand_idx,AffineCandIdx的值等于0。
仿射自适应运动矢量精度索引affine_amvr_index,用于确定编码单元的仿射运动矢量精度。AffineAmvrIndex的值等于affine_amvr_index的值。如果位流中不存在affine_amvr_index,则AffineAmvrIndex的值等于0。
仿射帧间模式L0运动矢量水平分量差绝对值mv_diff_x_abs_l0_affine,仿射帧间模式L0运动矢量垂直分量差绝对值mv_diff_y_abs_l0_affine,来自参考图像队列0的运动矢量差值的绝对值。MvDiffXAbsL0Affine等于mv_diff_x_abs_l0_affine的值,MvDiffYAbsAffineAffine等于mv_diff_y_abs_l0_affine的值。
仿射帧间模式L0运动矢量水平分量差符号值mv_diff_x_sign_l0_affine,仿射帧间模式L0运动矢量垂直分量差符号值mv_diff_y_sign_l0_affine,来自参考图像队列0的运动矢量差值的符号位。MvDiffXSignL0Affine的值等于mv_diff_x_sign_l0_affine的值,MvDiffYSignL0Affine的值等于mv_diff_y_sign_l0_affine。如果位流中不存在mv_diff_x_sign_l0_affine或mv_diff_y_sign_l0_affine,则MvDiffXSignL0Affine或MvDiffYSignL0Affine的值为0。如果MvDiffXSignL0Affine的值为0,MvDiffXL0Affine等于MvDiffXAbsL0Affine;如果MvDiffXSignL0Affine的值为1,MvDiffXL0Affine等于-MvDiffXAbsL0Affine。如果MvDiffYSignL0Affine的值为0,MvDiffYL0Affine等于MvDiffYAbsL0Affine;如果MvDiffYSignL0Affine的值为1,MvDiffYL0Affine等于-MvDiffYAbsL0Affine。MvDiffXL0Affine和MvDiffYL0Affine的取值范围为-32768~32767。
仿射帧间模式L1运动矢量水平分量差绝对值mv_diff_x_abs_l1_affine,仿射帧间模式L1运动矢量垂直分量差绝对值mv_diff_y_abs_l1_affine,来自参考图像队列1的运动矢量差值的绝对值。MvDiffXAbsL1Affine等于mv_diff_x_abs_l1_affine的值,MvDiffYAbsAffineAffine等于mv_diff_y_abs_l1_affine的值。
仿射帧间模式L1运动矢量水平分量差符号值mv_diff_x_sign_l1_affine,仿射帧间模式L1运动矢量垂直分量差符号值mv_diff_y_sign_l1_affine,来自参考图像队列1的运动矢量差值的符号位。MvDiffXSignL1Affine的值等于mv_diff_x_sign_l1_affine的值,MvDiffYSignL1Affine的值等于mv_diff_y_sign_l1_affine。如果位流中不存在mv_diff_x_sign_l1_affine或mv_diff_y_sign_l1_affine,则MvDiffXSignL1Affine或MvDiffYSignL1Affine的值为0。如果MvDiffXSignL1Affine的值为0,MvDiffXL1Affine等于MvDiffXAbsL1Affine;如果MvDiffXSignL1Affine的值为1,MvDiffXL1Affine等于-MvDiffXAbsL1Affine。如果MvDiffYSignL1Affine的值为0,MvDiffYL1Affine等于MvDiffYAbsL1Affine;如果MvDiffYSignL1Affine的值为1,MvDiffYL0Affine等于-MvDiffYAbsL1Affine。MvDiffXL1Affine和MvDiffYL1Affine的取值范围为-32768~32767。
进一步地,在本申请的一个实施例中,如果当前块使用了仿射模式,也确定了仿射模式的控制点模式,预测参考模式,以及子块尺寸参数,就可以使用仿射模型导出每个子块的运动矢量。
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List0’,将mvs_L0(对应参考帧列表0的仿射控制点运动矢量组)作为仿射控制点运动矢量组,并通过仿射运动单元子块运动矢量阵列的导出的方法得到当前预测单元的L0运动矢量集合(记作MvArrayL0)。MvArrayL0集合由所有亮度预测子块的L0运动矢量组成。
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List1’,将mvs_L1(对应参考帧列表1的仿射控制点运动矢量组)作为仿射控制点运动矢量组,并通过仿射运动单元子块运动矢量阵列的导出的方法得到当前预测单元的L1运动矢量集合(记作MvArrayL1)。MvArrayL1由所有亮度预测子块的L1运动矢量组成。
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List01’,分别将mvs_L0和mvs_L1作为仿射控制点运动矢量组并按“仿射运动单元子块运动矢量阵列的导出”定义的方法得到当前预测单元的L0运动矢量集合(记作MvArrayL0)和L1运动矢量集合(记作MvArrayL1)。MvArrayL0和MvArrayL1分别由所有亮度预测子块的L0运动矢量和L1运动矢量组成。
接下来,可以进一步获取色度运动矢量的矩阵,及仿射亮度样本插值和仿射色度样本插值得到仿射模式的亮度预测样本矩阵,以及色度预测样本矩阵。
若当前序列或当前帧图像不使用本技术,如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List0’或Pred_List1’,那么得到的亮度预测样本矩阵以及色度预测样本矩阵即为当前预测单元的预测样本矩阵,如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List01’,那么得到的2个亮度预测样本矩阵平均后得到当前预测单元的亮度预测样本矩阵,对每一个色度分量,上一步得到的2组(每组2个,共4个)色度预测样本矩阵平均得到当前预测单元的色度预测样本矩阵。
若当前序列或当前帧图像使用本技术,导出仿射运动单元子块内部像素运动矢量偏差矩阵:
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List0’,将mvs_L0(对应参考帧列表0的仿射控制点运动矢量组)作为仿射控制点运动矢量组,并通过仿射运动单元子块内部像素运动矢量偏差矩阵的导出的方法得到当前预测单元的L0的4种子块内部运动矢量偏差矩阵运动矢量集合dMvA_L0,dMvB_L0,dMvC_L0,dMvN_L0。然后通过仿射运动单元子块内部像素运动矢量偏差矩阵的导出的dMvA,dMvB,dMvC,dMvN分别作为dMvA_L0,dMvB_L0,dMvC_L0,dMvN_L0。
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List1’,将mvs_L1(对应参考帧列表1的仿射控制点运动矢量组)作为仿射控制点运动矢量组,并通过仿射运动单元子块内部像素运动矢量偏差矩阵的导出的方法得到当前预测单元的L1的4种子块内部运动矢量偏差矩阵运动矢量集合dMvA_L1,dMvB_L1,dMvC_L1,dMvN_L1。然后通过仿射运动单元子块内部像素运动矢量偏差矩阵的导出的dMvA,dMvB,dMvC,dMvN分别作为dMvA_L1,dMvB_L1,dMvC_L1,dMvN_L1。
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List01’,分别将mvs_L0和mvs_L1作为仿射控制点运动矢量组,并通过仿射运动单元子块内部像素运动矢量偏差矩阵的导出的方法得到当前预测单元的L0的4种子块内部运动矢量偏差矩阵运动矢量集合dMvA_L0,dMvB_L0,dMvC_L0,dMvN_L0和L1的4种子块内部运动矢量偏差矩阵运动矢量集合dMvA_L1,dMvB_L1,dMvC_L1,dMvN_L1。
进一步地,在本申请中,可以按照以下方法进行仿射运动单元子块内部像素运动矢量偏差矩阵的导出:
如果仿射控制点运动矢量组中有3个运动矢量,运动矢量组表示为mvsAffine(mv0,mv1,mv2);否则(仿射控制点运动矢量组中有2个运动矢量),运动矢量组表示为mvsAffine(mv0,mv1)。
1、计算变量dHorX、dVerX、dHorY和dVerY:
dHorX=(mv1_x-mv0_x)<<(7-Log(width))
dHorY=(mv1_y-mv0_y)<<(7-Log(width))
如果mvsAffine中有3个运动矢量,则:
dVerX=(mv2_x-mv0_x)<<(7-Log(height))
dVerY=(mv2_y-mv0_y)<<(7-Log(height))
否则(mvsAffine中有2个运动矢量):
dVerX=-dHorY
dVerY=dHorX。
如图7,假设前预测单元的宽度和高度分别是width和height,每个子块的宽度和高度分别是subwidth和subheight。当前预测单元亮度预测块的左上角样本所在的子块为A,右上角样本所在的子块为B,左下角样本所在的子块为C,其他位置所在子块为其它子块。
(i,j)是亮度子块内部像素的坐标,i的取值范围是0~(subwidth-1),j的取值范围是0~(subheight-1),计算4种亮度预测子块内部每个像素(i,j)位置的运动矢量偏差:
2.1、如果当前子块是A,(i,j)像素的运动矢量偏差dMvA[i][j]:
dMvA[i][j][0]=dHorX×i+dVerX×j
dMvA[i][j][1]=dHorY×i+dVerY×j;
2.2、如果当前子块是B,(i,j)像素的运动矢量偏差dMvB[i][j]:
dMvB[i][j][0]=dHorX×(i-subwidth)+dVerX×j
dMvB[i][j][1]=dHorY×(i-subwidth)+dVerY×j;
2.3、如果当前子块为C且mvAffine中有3个运动矢量,(i,j)像素的运动矢量偏差dMvC[i][j]:
dMvC[i][j][0]=dHorX×i+dVerX×(j-subheight)
dMvC[i][j][1]=dHorY×i+dVerY×(j-subheight;
2.4、(i,j)像素的运动矢量偏差dMvN[i][j]:
dMvN[i][j][0]=dHorX×(i–(subwidth>>1))+dVerX×(j–(subheight>>1))
dMvN[i][j][1]=dHorY×(i–(subwidth>>1))+dVerY×(j–(subheight>>1))。
其中,dMvX[i][j][0]表示水平分量的值,dMvX[i][j][1]表示竖直分量的值。X为A,B,C或N。
进一步地,在本申请中,导出仿射运动单元子块内部像素运动矢量偏差矩阵后,对每一个子块,对每一个像素位置,根据运动矢量偏差,基于子块的运动补偿的第一预测值,使用二维滤波器进行滤波得到新的第二预测值。在本实施例中该帧间预测技术对亮度分量使用,然而,该帧间预测技术也可以用在色度分量,或者其他格式的任一分量。
具体地,在本申请的实施例中,二维滤波器在利用9个相邻的、构成矩形的像素位置进行二次预测时,可以先确定当前块的预测样本矩阵,和当前块的子块的运动矢量偏差集合;其中,运动矢量偏差矩阵包括全部像素位置对应的运动矢量偏差;然后基于9个相邻的、构成矩形的像素位置,利用预测样本矩阵和运动矢量偏差集合,确定当前块的二次预测后的样本矩阵。
示例性的,在本申请中,二维滤波器在利用9个相邻的、构成矩形的像素位置进行二次预测的过程如下:
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List0’,将亮度预测样本矩阵PredMatrixL0作为PredMatrixSb,并通过仿射二次预测的预测矩阵导出的方法得到PredMatrixS作为新的亮度预测样本矩阵PredMatrixL0。
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List1’,将亮度预测样本矩阵PredMatrixL1作为PredMatrixSb,并通过仿射二次预测的预测矩阵导出的方法得到PredMatrixS作为新的亮度预测样本矩阵PredMatrixL1。
如果当前预测单元(这里预测单元等于编码块)的预测参考模式是‘Pred_List01’,分别将亮度预测样本矩阵PredMatrixL0和PredMatrixL1作为PredMatrixSb,并通过仿射二次预测的预测矩阵导出的方法得到PredMatrixS作为新的亮度预测样本矩阵PredMatrixL0和PredMatrixL1。
进一步地,在本申请中,可以按照以下方法进行仿射二次预测的预测矩阵导出:
如图7,假设当前块的宽度和高度分别是width和height,每个子块的宽度和高度分别是subwidth和subheight。当前块亮度预测样本矩阵的左上角样本所在的子块为A,右上角样本所在的子块为B,左下角样本所在的子块为C,其他位置所在子块为其它子块。
对当前块中的每个子块,记子块的运动矢量偏差矩阵为dMv。执行如下操作:
1、如果子块是A,dMv等于dMvA;
2、如果子块是B,dMv等于dMvB;
3、如果子块为C且mvAffine中有3个运动矢量,dMv等于dMvC;
4、dMv等于dMvN。
(x,y)是子块左上角位置的坐标,(i,j)是亮度子块内部像素的坐标,i的取值范围是0~(subwidth-1),j的取值范围是0~(subheight-1),基于子块的预测样本矩阵为PredMatrixSb,二次预测的预测样本矩阵为PredMatrixS,按照如下方法计算(x+i,y+j)的二次预测的预测样本PredMatrixS[x+i][y+j]:
PredMatrixS[x+i][y+j]=(UPLEFT(x+i,y+j)×(-dMv[i][j][0]-dMv[i][j][1])+UP(x+i,y+j)×((-dMv[i][j][1])<<3)+
UPRIGHT(x+i,y+j)×(dMv[i][j][0]-dMv[i][j][1])+
LEFT(x+i,y+j)×((-dMv[i][j][0])<<3)+
CENTER(x+i,y+j)×(1<<15)+
RIGHT(x+i,y+j)×(dMv[i][j][0]<<3)+
DOWNLEFT(x+i,y+j)×(-dMv[i][j][0]+dMv[i][j][1])+
DOWN(x+i,y+j)×(dMv[i][j][1]<<3)+
DOWNRIGHT(x+i,y+j)×(dMv[i][j][0]+dMv[i][j][1])+
(1<<10))>>11
PredMatrixS[x+i][y+j]=Clip3(0,(1<<BitDepth)-1,PredMatrixS[x+i][y+j])。
其中,UPLEFT(x+i,y+j)=predMatrix[x+i-1<0?0:x+i-1][y+j-1<0?0:y+j-1]
UP(x+i,y+j)=predMatrix[x+i][y+j-1<0?0:y+j-1]
UPRIGHT(x+i,y+j)=predMatrix[x+i+1>width-1?width-1:x+i+1][y+j-1<0?0:y+j-1]
LEFT(x+i,y+j)=predMatrix[x+i-1<0?0:x+i-1][y+j]
CENTER(x+i,y+j)=predMatrix[x+i][y+j]
RIGHT(x+i,y+j)=predMatrix[x+i+1>width-1?width-1:x+i+1][y+j]
DOWNLEFT(x+i,y+j)=predMatrix[x+i-1<0?0:x+i-1][y+j+1<0?0:y+j-1]
DOWN(x+i,y+j)=predMatrix[x+i][y+j-1<0?0:y+j-1]
DOWNRIGHT(x+i,y+j)=predMatrix[x+i+1>width-1?width-1:x+i+1][y+j+1>height-1?height-1:y+j+1]。
可以理解的是,在本申请的实施例中,CENTER(x+i,y+j)像素位置可以为上述9个相邻的、构成矩形的像素位置中的中心位置,然后可以基于该(x+i,y+j)像素位置,以及与其相邻的其他8个像素位置,进行二次预测处理。具体地,其他8个像素位置分别为UP(上)、UPRIGHT(右上)、LEFT(左)、RIGHT(右)、DOWNLEFT(左下)、DOWN(下)、DOWNRIGHT(右下)、UPLEFT(左上)。
需要说明的是,在本申请的实施例中,在对当前块中的每一个像素位置进行滤波时,二维滤波器使用的对应像素位置的值是上述基于子块的预测的预测值,滤波后的结果是通过本技术得到的新的预测值。具体地,根据二维滤波器的形状(如矩形、菱形)可知,二维滤波器需要使用的像素位置有可能超过当前块的边界。图23为对边界像素位置滤波的示意图,如图23所示,以上述的9点矩形滤波器为例,如果待滤波的像素位置处在当前块的边界上,那么对这个点滤波时滤波器对应的部分像素位置就会超出当前块边界。
针对上述问题,本申请提出了一种解决方法,具体是将当前块的、基于子块的预测的当前块的边界进行扩展,以使二维滤波器需要的像素位置不会超过扩展后的块的边界。也就是说,如果二维滤波器所要使用的像素位置不属于当前块,那么可以根据当前块的边界位置对该当前块进行扩展处理。图24为边界的扩展示意图,如图24所示,以上述的9点矩形滤波器为例,基于子块的预测的当前块需要上下左右边界各扩展出一个像素位置,一个简单的扩展方法是左边扩展的像素复制其水平方向对应的左边界的像素值,右边扩展的像素复制其水平方向对应的右边界的像素值,上边扩展的像素复制其竖直方向对应的上边界的像素值,下边扩展的像素复制其竖直方向对应的下边界的像素值,扩展的四个顶点可以复制其对应的顶点的像素值。
可以理解的是,通过扩展处理保证二维滤波器需要的像素位置不会超过扩展后的块的边界的方法,同样可以应用于其他形状的二维滤波器,不申请不作具体限定。
针对上述问题,本申请还提出了一种解决方法,如果二维滤波器的某一个位置对应的像素位置超出了当前块的边界,那么调整其对应的像素位置为当前块内的一个位置。也就是说,如果二维滤波器所要使用的像素位置不属于当前块,那么可以利用所述当前块内的像素位置替换该像素位置。例如,设当前块的左上角像素位置为(0,0),当前块的宽度是width,当前块的高度是height,那么当前块水平方向的范围是0~(width-1),当前块竖直方向的范围是0~(height-1)。如果滤波器需要使用的像素位置为(x,y),如果x小于0,那么将x设为0。如果x大于width-1,那么将x设为width-1。如果y小于0,那么将y设为0,如果y大于height-1,那么将y设为height-1。
可以理解的是,利用所述当前块内的像素位置替换超出当前块的像素位置的方式来保证二维滤波器需要的像素位置不会超过扩展后的块的边界的方法,同样可以应用于其他形状的二维滤波器,不申请不作具体限定。
本申请实施例提供一种帧间预测方法,可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的第一预测值的基础上进行基于点的二次预测,获得第二预测值。其中,利用二维滤波器进行的基于点的二次预测,可以使用构成预设形状的几个点的信息对第一预测值进行修正,最终获得修正后的第二预测值,本申请提出的帧间预测方法能够很好的适用于全部场景,大大提升编码性能,从而提高了编解码效率。
本申请实施例提供一种帧间预测方法,该方法应用于视频编码设备,即编码器。该方法所实现的功能可以通过编码器中的第二处理器调用计算机程序来实现,当然计算机程序可以保存在第二存储器中,可见,该编码器至少包括第二处理器和第二存储器。
图25为帧间预测方法的实现流程示意图五,如图25所示,编码器进行帧间预测的方法可以包括以下步骤:
步骤401、确定当前块的预测模式参数。
在本申请的实施例中,编码器可以先确定当前块的预测模式参数。具体地,编码器可以先确定当前块使用的预测模式,然后基于该预测模式确定对应的预测模式参数。其中,预测模式参数可以用于对当前块所使用的预测模式进行确定。
需要说明的是,在本申请的实施例中,待编码图像可以划分为多个图像块,当前待编码的图像块可以称为当前块,与当前块相邻的图像块可以称为相邻块;即在待编码图像中,当前块与相邻块之间具有相邻关系。这里,每个当前块可以包括第一图像分量、第二图像分量和第三图像分量;也即当前块为待编码图像中当前待进行第一图像分量、第二图像分量或者第三图像分量预测的图像块。
其中,假定当前块进行第一图像分量预测,而且第一图像分量为亮度分量,即待预测图像分量为亮度分量,那么当前块也可以称为亮度块;或者,假定当前块进行第二图像分量预测,而且第二图像分量为色度分量,即待预测图像分量为色度分量,那么当前块也可以称为色度块。
需要说明的是,在本申请的实施例中,预测模式参数指示了当前块采用的预测模式以及与该预测模式相关的参数。这里,针对预测模式参数的确定,可以采用简单的决策策略,比如根据失真值的大小进行确定;也可以采用复杂的决策策略,比如根据率失真优化(Rate Distortion Optimization,RDO)的结果进行确定,本申请实施例不作任何限定。通常而言,可以采用RDO方式来确定当前块的预测模式参数。
具体地,在一些实施例中,编码器在确定当前块的预测模式参数时,可以先利用多种预测模式对当前块进行预编码处理,获得每一种预测模式对应的率失真代价值;然后从所获得的多个率失真代价值中选择最小率失真代价值,并根据最小率失真代价值对应的预测模式确定当前块的预测模式参数。
也就是说,在编码器侧,针对当前块可以采用多种预测模式分别对当前块进行预编码处理。这里,多种预测模式通常包括有帧间预测模式、传统帧内预测模式和非传统帧内预测模式;其中,传统帧内预测模式可以包括有直流(Direct Current,DC)模式、平面(PLANAR)模式和角度模式等,非传统帧内预测模式可以包括有基于矩阵的帧内预测(Matrix-based Intra Prediction,MIP)模式、跨分量线性模型预测(Cross-componentLinear Model Prediction,CCLM)模式、帧内块复制(Intra Block Copy,IBC)模式和PLT(Palette)模式等,而帧间预测模式可以包括有普通帧间预测模式、GPM模式和AWP模式等。
这样,在利用多种预测模式分别对当前块进行预编码之后,可以得到每一种预测模式对应的率失真代价值;然后从所得到的多个率失真代价值中选取最小率失真代价值,并将该最小率失真代价值对应的预测模式确定为当前块的预测模式参数。除此之外,还可以在利用多种预测模式分别对当前块进行预编码之后,得到每一种预测模式对应的失真值;然后从所得到的多个失真值中选取最小失真值,然后将该最小失真值对应的预测模式确定为当前块使用的预测模式,并根据该预测模式设置对应的预测模式参数。如此,最终使用所确定的预测模式参数对当前块进行编码,而且在这种预测模式下,可以使得预测残差较小,能够提高编码效率。
也就是说,在编码侧,编码器可以选取最优的预测模式对当前块进行预编码,在这过程中就可以确定出当前块的预测模式,然后确定用于指示预测模式的预测模式参数,从而将相应的预测模式参数写入码流,由编码器传输到解码器。
相应地,在解码器侧,解码器通过解析码流便可以直接获取到当前块的预测模式参数,并根据解析获得的预测模式参数确定当前块所使用的预测模式,以及该预测模式对应的相关参数。
步骤402、当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,确定当前块的子块的第一运动矢量;其中,当前块包括多个子块。
在本申请的实施例中,如果预测模式参数指示当前块使用帧间预测模式确定当前块的帧间预测值,那么编码器可以先确定出当前块的每一个子块的第一运动矢量。其中,一个子块对应有一个第一运动矢量。
需要说明的是,在本申请的实施例中,当前块为当前帧中待编码的图像块,当前帧以图像块的形式按一定顺序依次进行编码,该当前块为当前帧内按该顺序下一时刻待编码的图像块。当前块可具有多种规格尺寸,例如16×16、32×32或32×16等规格,其中数字表示当前块上像素点的行数和列数。
进一步对,在本申请的实施例中,当前块可以划分为多个子块,其中,每一个子块的尺寸大小都是相同的,子块为较小规格的像素点集合。子块的尺寸可以为8×8或4×4。
示例性的,在本申请中,当前块的尺寸为16×16,可以划分为4个尺寸均为8×8的子块。
可以理解的是,在本申请的实施例中,在编码器确定预测模式参数指示使用帧间预测模式确定当前块的帧间预测值的情况下,就可以继续采用本申请实施例所提供的帧间预测方法。
在本申请的实施例中,进一步地,当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,编码器确定当前块的子块的第一运动矢量时,可以确定当前块的仿射模式参数和预测参考模式。当仿射模式参数指示使用仿射模式时,确定控制点模式和子块尺寸参数。最后可以根据预测参考模式、控制点模式以及子块尺寸参数,确定第一运动矢量。
在本申请的实施例中,编码器在确定预测模式参数之后,如果预测模式参数指示当前块使用帧间预测模式确定当前块的帧间预测值,那么编码器可以确定仿射模式参数和预测参考模式。
需要说明的是,在本申请的实施例中,仿射模式参数用于对是否使用仿射模式进行指示。具体地,仿射模式参数可以为仿射运动补偿允许标志affine_enable_flag,编码器通过仿射模式参数的取值的确定,可以进一步确定是否使用仿射模式。
也就是说,在本申请中,仿射模式参数可以为一个二值变量。若所述仿射模式参数的取值为1,则指示使用所述仿射模式;若所述仿射模式参数的取值为0,则指示不使用所述仿射模式。
示例性的,在本申请中,仿射模式参数的取值可以等于仿射运动补偿允许标志affine_enable_flag的值,如果affine_enable_flag的值为‘1’,表示可使用仿射运动补偿;如果affine_enable_flag的值为‘0’,表示不应使用仿射运动补偿。
进一步地,在本申请的实施例中,如果编码器确定的仿射模式参数指示使用仿射模式,那么编码器可以进行获取控制点模式和子块尺寸参数。
需要说明的是,在本申请的实施例中,控制点模式用于对控制点的个数进行确定。在仿射模型中,一个子块可以有2个控制点或者3个控制点,相应地,控制点模式可以为2个控制点对应的控制点模式,或者为3个控制点对应的控制点模式。即控制点模式可以包括4参数模式和6参数模式。
可以理解的是,在本申请的实施例中,对于AVS3标准,如果当前块使用了仿射模式,那么编码器还需要确定出当前块在仿射模式中控制点的个数进行确定,从而可以确定出使用的是4参数(2个控制点)模式,还是6参数(3个控制点)模式。
进一步地,在本申请的实施例中,如果编码器确定的仿射模式参数指示使用仿射模式,那么编码器可以进一步确定子块尺寸参数。
具体地,可以通过仿射预测子块尺寸标志affine_subblock_size_flag表征子块尺寸参数,编码器可以对子块尺寸标志的取值的设定来指示子块尺寸参数,即指示当前块的子块的尺寸大小。其中,子块的尺寸大小可以为8×8或4×4。具体地,在本申请中,子块尺寸标志可以为一个二值变量。若子块尺寸标志的取值为1,则指示子块尺寸参数为8×8;若子块尺寸标志的取值为0,则指示子块尺寸参数为4×4。
示例性的,在本申请中,子块尺寸标志的取值可以等于仿射预测子块尺寸标志affine_subblock_size_flag的值,如果affine_subblock_size_flag的值为‘1’,则当前块划分为尺寸为8×8的子块;如果affine_subblock_size_flag的值为‘0’,则当前块划分为尺寸为4×4的子块。
进一步地,在本申请的实施例中,编码器在确定控制点模式和子块尺寸参数之后,便可以根据预测参考模式、控制点模式以及子块尺寸参数,进一步确定出当前块中的子块的第一运动矢量。
具体地,在本申请的实施例中,编码器可以先根据所述预测参考模式确定控制点运动矢量组;然后可以基于所述控制点运动矢量组、所述控制点模式以及所述子块尺寸参数,确定出子块的第一运动矢量。
可以理解的是,在本申请的实施例中,控制点运动矢量组可以用于对控制点的运动矢量进行确定。
需要说明的是,在本申请的实施例中,编码器可以按照上述方法,遍历当前块中的每一个子块,利用每一个子块的控制点运动矢量组、控制点模式以及子块尺寸参数,确定出每一个子块的第一运动矢量,从而可以根据每一个子块的第一运动矢量构建获得运动矢量集合。
可以理解的是,在本申请的实施例中,当前块的运动矢量集合中可以包括当前块的每一个子块的第一运动矢量。
进一步地,在本申请的实施例中,编码器在根据所述控制点运动矢量组、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量时,可以先根据所述控制点运动矢量组、所述控制点模式以及所述当前块的尺寸参数,确定差值变量;然后可以基于所述预测模式参数和所述子块尺寸参数,确定子块位置;最后,便可以利用所述差值变量和所述子块位置,确定所述子块的所述第一运动矢量,进而可以获得当前块的多个子块的运动矢量集合。
需要说明的是,在本申请中,在确定子块内的每个位置与子块的运动矢量的偏差时,如果当前块使用的是仿射预测模型,可以根据仿射预测模型的公式计算出子块内的每个位置的运动矢量,与子块的运动矢量相减得到它们的偏差。如果子块的运动矢量都选择子块内同一位置的运动矢量,如4x4的块使用距离左上角(2,2)的位置,8x8的块使用距离左上角(4,4)的位置,根据现在标准包括VVC和AVS3中使用的仿射模型,每个子块相同位置的运动矢量偏差都是相同的。但是AVS在左上角,右上角,以及3控制点的情况下的左下角(上述AVS3文本中的,如图7所示的A,B,C位置)与其他块使用的位置不同,相应地在计算左上角,右上角,以及3控制点的情况下的左下角的子块的运动矢量偏差时与其他块也不同。具体如实施例。
步骤403、基于第一运动矢量确定子块的第一预测值,和像素位置与子块之间的运动矢量偏差;其中,像素位置为子块内的像素点的位置。
在本申请的实施例中,编码器在确定出当前块的每一个子块的第一运动矢量之后,可以基于子块的第一运动矢量,分别确定出子块的第一预测值和像素位置与子块之间的运动矢量偏差。
可以理解的是,在本申请的实施例中,步骤403具体可以包括:
步骤403a、基于第一运动矢量确定子块的第一预测值。
步骤403b、基于第一运动矢量确定像素位置与子块之间的运动矢量偏差。
其中,本申请实施例提出的帧间预测方法对编码器执行步骤403a和步骤403b的顺序不进行限定,也就是说,在本申请中,在确定出当前块的每一个子块的第一运动矢量之后,编码器可以先执行步骤403a,然后执行步骤403b,也可以先执行步骤403b,再执行步骤403a,还可以同时执行步骤403a和步骤403b。
进一步地,在本申请的实施例中,编码器在基于所述第一运动矢量确定所述子块的第一预测值时,可以先确定样本矩阵;其中,所述样本矩阵包括亮度样本矩阵和色度样本矩阵;然后可以根据所述预测参考模式、所述子块尺寸参数、所述样本矩阵以及所述运动矢量集合,确定所述第一预测值。
需要说明的是,在本申请的实施例中,编码器在根据所述预测参考模式、所述子块尺寸参数、所述样本矩阵以及所述运动矢量集合,确定所述第一预测值时,可以先根据所述预测参考模式和所述子块尺寸参数,从所述运动矢量集合中确定目标运动矢量;然后可以利用预测参考模式对应的参考图像队列和参考索引所述样本矩阵以及所述目标运动矢量,确定预测样本矩阵;其中,所述预测样本矩阵包括多个子块的所述第一预测值。
具体地,在本申请的实施例中,样本矩阵可以包括亮度样本矩阵和色度样本矩阵,相应地,编码器确定出的预测样本矩阵可以包括亮度预测样本矩阵和色度预测样本矩阵,其中,亮度预测样本矩阵包括多个子块的第一亮度预测值,色度预测样本矩阵包括多个子块的第一色度预测值,第一亮度预测值和第一色度预测值构成子块的第一预测值。
需要说明的是,在申请的实施例中,样本矩阵中的亮度样本矩阵可以为1/16精度亮度样本矩阵,样本矩阵中的色度样本矩阵可以为1/32精度色度样本矩阵。
可以理解的是,在本申请的实施例中,对于不同的预测参考模式,编码器获取的参考图像队列和参考索引是不相同的。
进一步地,在本申请的实施例中,编码器确定样本矩阵时,可以先获取亮度插值滤波器系数和色度插值滤波器系数;然后可以基于所述亮度插值滤波器系数确定所述亮度样本矩阵,同时,可以基于所述色度插值滤波器系数确定所述色度样本矩阵。
进一步地,在本申请的实施例中,编码器在基于所述像素位置与子块之间的运动矢量偏差时,可以确定二次预测参数;如果二次预测参数指示使用二次预测,那么编码器可以基于所述差值变量确定所述子块与每一个像素位置之间的所述运动矢量偏差。
可以理解的是,在本申请的实施例中,编码器在基于所述差值变量确定所述子块与每一个像素位置之间的所述运动矢量偏差之后,便可以利用子块内的全部像素位置对应的全部运动矢量偏差,构建出该子块对应的运动矢量偏差矩阵。可见,运动矢量偏差矩阵中包括有子块与任意一个内部的像素点之间的运动矢量偏差,即运动矢量偏差。
进一步地,在本申请的实施例中,如果编码器确定的二次预测参数指示不使用二次预测,那么,编码器可以选择直接将上述步骤403a中所获得的当前块的子块的第一预测值作为子块的第二预测值,而不再进行下述步骤404和步骤405的处理。
具体地,在本本申请的实施例中,如果二次预测参数指示不使用二次预测,那么编码器可以利用所述预测样本矩阵确定出第二预测值。其中,预测样本矩阵包括多个子块的所述第一预测值,编码器可以将像素位置所在的子块的第一预测值确定为自身的第二预测值。
示例性的,在本申请中,如果当前块的预测参考模式取值为0或1,即使用第一参考模式‘PRED_List0’,或使用第二参考模式‘PRED_List1’,那么可以直接从包括有1个亮度预测样本矩阵(2个色度预测样本矩阵)的预测样本矩阵中,选择像素位置所在的子块的第一预测值,并将该第一预测值确定为像素位置的帧间预测值,即第二预测值。
示例性的,在本申请中,如果当前块的预测参考模式取值为2,即使用第三参考模式‘PRED_List01’,那么可以先对预测样本矩阵中所包括的2个亮度预测样本矩阵(2组共4个色度预测样本矩阵)进行均值运算,得到1个平均后的亮度预测样本(2个平均后的色度预测样本),最后便从这个平均后的亮度预测样本(2个平均后的色度预测样本)中,选择像素位置所在的子块的第一预测值,并将该第一预测值确定为像素位置的帧间预测值,即第二预测值。
步骤404、根据运动矢量偏差确定二维滤波器的滤波系数;其中,二维滤波器用于按照预设形状进行二次预测处理。
在本申请的实施例中,编码器在基于所述第一运动矢量分别确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差之后,便可以根据运动矢量偏差进一步确定出二维滤波器的滤波系数。
需要说明的是,在本申请的实施例中,二维滤波器的滤波器系数是与像素位置所对应的运动矢量偏差相关的。也就是说,对于不同的像素位置,如果对应的运动矢量偏差不同,那么使用的二维滤波器的滤波系数也是不同的。
进一步地,在本申请的实施例中,编码器在根据所述运动矢量偏差确定二维滤波器的滤波系数时,可以先确定比例参数,然后可以根据比例参数和运动矢量偏差,确定所述像素位置对应的所述滤波器系数。
需要说明的是,在本申请的实施例中,比例参数可以包括至少一个比例值,所述运动矢量偏差包括水平偏差和垂直偏差;其中,所述至少一个比例值均为非零实数。
具体地,在本申请中,当所述二维滤波器利用9个相邻的、构成矩形的像素位置进行二次预测时,位于所述矩形的中心的像素位置为待预测位置,其他8个像素位置依次位于所述待预测位置的左上、上、右上、右、右下、下、左下、左的相邻位置。
相应地,在本申请中,编码器可以基于所述至少一个比例值和所述待预测位置的所述运动矢量偏差,按照预设计算规则计算获得所述9个相邻的像素位置对应的9个滤波器系数系数。
需要说明的是,在本申请中,预设计算规则可以包括多种不同的计算方式,如加法运算、减法运算、乘法运动等。其中,对于不同的像素位置,可以使用不同的计算方式进行滤波器系数的计算。
可以理解的是,在本申请中,编码器在按照预设计算规则中不同的计算方法计算获得多个像素位置对应的多个滤波器系数中,部分滤波器系数可以为运动矢量偏差的一次函数,即两者为线性关系,还可以为运动矢量偏差的二次函数或高次函数,即两者为非线性关系。
也就是说,在本申请中,多个相邻的像素位置对应的多个滤波器系数中的任意一个滤波器系数,可以为所述运动矢量偏差的一次函数、二次函数或者高次函数。
示例性的,在本申请中,假设像素位置的运动矢量偏差为(dmv_x,dmv_y),其中,如果目标像素位置的坐标为(i,j),那么dmv_x可以表示为dMvX[i][j][0],即表示运动矢量偏差在水平分量的偏差值,dmv_y可以表示为dMvX[i][j][1],即表示运动矢量偏差在垂直分量的偏差值。
其中,比例参数一般是小数或分数,一种可能的情况是比例参数都是2的幂,如1/2,1/4,1/8等。这里的dmv_x,dmv_y都是其实际的大小,即dmv_x,dmv_y的1表示1个像素的距离,dmv_x,dmv_y是小数或者分数。
需要说明的是,在本申请的实施例中,与现有的8抽头的滤波器相比,目前常见的8抽头的滤波器所对应的整像素位置和分像素位置的运动矢量在水平和垂直方向均为非负的,且大小均属于0像素到1像素之间,即dmv_x,dmv_y不可以为负的。而在本申请中,滤波器对应的整像素位置和分像素位置的运动矢量在水平和垂直方向都可以为负的,即dmv_x,dmv_y可以为负的。
需要说明的是,在本申请的实施例中,用于进行二次预测的二维滤波器是相邻的构成预设形状的点所构成的滤波器。相邻的构成预设形状的点可以包括多个点,例如由9个点构成。
可以理解的是,在本申请的实施例中,预设形状可以为对称形状,例如,预设形状可以包括矩形、菱形或其他任意一种对称形状。
示例性的,在本申请中,二维滤波器是一个矩形的滤波器,具体地,二维滤波器是由9个相邻的构成矩形的像素位置组成的滤波器。在9个像素位置中,位于中心的像素位置是当前需要二次预测的像素位置的像素位置。
步骤405、基于滤波系数和第一预测值,确定子块的第二预测值,将第二预测值确定为子块的帧间预测值。
在本申请的实施例中,编码器在根据运动矢量偏差确定出二维滤波器的滤波系数之后,便可以基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,从而可以实现结合与像素位置的运动矢量偏差对子块的二次预测,完成对第一预测值的修正。
可以理解的是,在本申请的实施例中,编码器利用像素位置所对应的运动矢量偏差确定出滤波器系数,从而可以按照滤波器系数,通过二维滤波器对第一预测值进行修正,获得修正后的、子块的第二预测值。可见,第二预测值为基于所述第一预测值的修正值。
进一步地,在本申请的实施例中,编码器在基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值时,可以先对滤波器系数与子块的第一预测值进行乘法运算,获得乘积结果,遍历子块中的全部像素位置之后,再对子块的全部像素位置的所述乘积结果进行加法运算,获得求和结果,最后可以对加法结果进行归一化处理,最终便可以获得子块修正后的第二预测值。
需要说明的是,在本申请的实施例中,在进行二次预测之前,一般情况下是将像素位置所在的子块的第一预测值作为该像素位置的修正前的预测值,因此,在通过二维滤波器进行滤波时,可以将滤波器系数与对应像素位置的预测值,即第一预测值相乘,并对每一个像素位置对应的乘积结果进行累加,然后归一化。
可以理解的是,在本申请中,编码器可以通过多种方式进行归一化处理,例如,可以将滤波器系数与对应的像素位置的预测值相乘后累加的结果,右移4+shift1位。或者,还可以将滤波器系数与对应的像素位置的预测值相乘后累加的结果,再加上(1<<(3+shift1)),然后右移4+shift1位。
可见,在本申请中,在获得子块内部的像素位置对应的运动矢量偏差之后,对每一个子块,以及每一个子块中的每一个像素位置,可以根据运动矢量偏差,基于子块的运动补偿的第一预测值,使用二维滤波器进行滤波,完成对子块的二次预测,得到新的第二预测值。
进一步地,在本申请的实施例中,二维滤波器可以理解为利用多个相邻的、构成所述预设形状的像素位置进行二次预测。其中,预设形状可以为矩形、菱形或任意一种对称形状。
具体地,在本申请的实施例中,二维滤波器在利用9个相邻的、构成矩形的像素位置进行二次预测时,可以先确定所述当前块的预测样本矩阵,和所述当前块的所述子块的运动矢量偏差集合;其中,所述运动矢量偏差矩阵包括全部像素位置对应的所述运动矢量偏差;然后基于所述9个相邻的、构成矩形的像素位置,利用所述预测样本矩阵和所述运动矢量偏差集合,确定所述当前块的二次预测后的样本矩阵。
示例性的,可以限制运动矢量的大小在一个合理的范围,如上述使用的运动矢量在水平方向和垂直方向的正负值都不超过1个像素或1/2像素或1/4像素等。
可以理解的是,如果当前块的预测参考模式是‘Pred_List01’,那么编码器将各分量的多个预测样本矩阵平均得到该分量的最终的预测样本矩阵。例如,2个亮度预测样本矩阵平均后得到新的亮度预测样本矩阵。
进一步地,在本申请的实施例中,在得到当前块的预测样本矩阵后,如果当前块没有变换系数,那么预测矩阵就作为当前块的编码结果,如果当前块还有变换系数,那么,可以先编码变换系数,并通过反变换、反量化得到残差矩阵,将残差矩阵加到预测矩阵上得到编码结果。
综上所述,通过步骤401至步骤405所提出的帧间预测方法,在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的预测的基础上进行基于点的二次预测。基于点的二次预测使用构成矩形、菱形等预设形状的多个点的信息。基于点的二次预测使用二维滤波器。二维滤波器是相邻的构成预设形状的点的构成的滤波器。相邻的构成预设形状的点可以为9个点。对一个像素位置,滤波器处理的结果为该位置的新预测值。
本实施例提供了一种帧间预测方法,可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的第一预测值的基础上进行基于点的二次预测,获得第二预测值。其中,利用二维滤波器进行的基于点的二次预测,可以使用构成预设形状的几个点的信息对第一预测值进行修正,最终获得修正后的第二预测值,本申请提出的帧间预测方法能够很好的适用于全部场景,大大提升编码性能,从而提高了编解码效率。
基于上述实施例,在本申请的再一实施例中,图26为解码器的组成结构示意图一,如图26所示,本申请实施例提出的解码器300可以包括解析部分301和第一确定部分302;
所述解析部分301,配置为解析码流,获取当前块的预测模式参数;
所述第一确定部分302,配置为当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;以及基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;以及根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状进行二次预测处理;以及基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
图27为解码器的组成结构示意图二,如图27所示,本申请实施例提出的解码器300还可以包括第一处理器303、存储有第一处理器303可执行指令的第一存储器304、第一通信接口305,和用于连接第一处理器303、第一存储器304以及第一通信接口305的第一总线306。
进一步地,在本申请的实施例中,上述第一处理器303,用于解析码流,获取当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状进行二次预测处理;基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ReadOnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供了一种解码器,该解码器可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的第一预测值的基础上进行基于点的二次预测,获得第二预测值。其中,利用二维滤波器进行的基于点的二次预测,可以使用构成预设形状的几个点的信息对第一预测值进行修正,最终获得修正后的第二预测值,本申请提出的帧间预测方法能够很好的适用于全部场景,大大提升编码性能,从而提高了编解码效率。
图28为编码器的组成结构示意图一,如图28所示,本申请实施例提出的编码器400可以包括第二确定部分401;
所述第二确定部分401,配置为确定当前块的预测模式参数;以及当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;以及基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;以及根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状使用二次预测;以及基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
图29为编码器的组成结构示意图二,如图29所示,本申请实施例提出的编码器400还可以包括第二处理器402、存储有第二处理器402可执行指令的第二存储器403、第二通信接口404,和用于连接第二处理器402、第二存储器403以及第二通信接口404的第二总线405。
进一步地,在本申请的实施例中,上述第二处理器402,用于确定当前块的预测模式参数;当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状使用二次预测;基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ReadOnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供了一种编码器,该编码器可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的第一预测值的基础上进行基于点的二次预测,获得第二预测值。其中,利用二维滤波器进行的基于点的二次预测,可以使用构成预设形状的几个点的信息对第一预测值进行修正,最终获得修正后的第二预测值,本申请提出的帧间预测方法能够很好的适用于全部场景,大大提升编码性能,从而提高了编解码效率。
本申请实施例提供计算机可读存储介质和计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述实施例所述的方法。
具体来讲,本实施例中的一种帧间预测方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种帧间预测方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
解析码流,获取当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;
基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;
根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状进行二次预测处理;
基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
具体来讲,本实施例中的一种帧间预测方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种帧间预测方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
确定当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;
基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;其中,所述像素位置为所述子块内的像素点的位置;
根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状使用二次预测;
基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
工业实用性
本申请实施例所提供的一种帧间预测方法、编码器、解码器以及计算机存储介质,解码器解析码流,获取当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,确定当前块的子块的第一运动矢量;其中,当前块包括多个子块;基于第一运动矢量确定子块的第一预测值,和像素位置与子块之间的运动矢量偏差;其中,像素位置为子块内的像素点的位置;根据运动矢量偏差确定二维滤波器的滤波系数;其中,二维滤波器用于按照预设形状进行二次预测处理;基于滤波系数和第一预测值,确定子块的第二预测值,将第二预测值确定为子块的帧间预测值。编码器确定当前块的预测模式参数;当预测模式参数指示使用帧间预测模式确定当前块的帧间预测值时,确定当前块的子块的第一运动矢量;其中,当前块包括多个子块;基于第一运动矢量确定子块的第一预测值,和像素位置与子块之间的运动矢量偏差;其中,像素位置为子块内的像素点的位置;根据运动矢量偏差确定二维滤波器的滤波系数;其中,二维滤波器用于按照预设形状使用二次预测;基于滤波系数和第一预测值,确定子块的第二预测值,将第二预测值确定为子块的帧间预测值。也就是说,本申请提出的帧间预测方法,可以在基于子块的预测之后,对运动矢量与子块的运动矢量有偏差的像素位置,在基于子块的第一预测值的基础上进行基于点的二次预测,获得第二预测值。其中,利用二维滤波器进行的基于点的二次预测,可以使用构成预设形状的几个点的信息对第一预测值进行修正,最终获得修正后的第二预测值,本申请提出的帧间预测方法能够很好的适用于全部场景,大大提升编码性能,从而提高了编解码效率。

Claims (42)

1.一种帧间预测方法,其特征在于,应用于解码器,所述方法包括:
解析码流,获取当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;
基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;
根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状进行二次预测处理;
基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
2.根据权利要求1所述的方法,其特征在于,所述确定所述当前块的子块的第一运动矢量,包括:
解析所述码流,获取所述当前块的仿射模式参数和预测参考模式;
当所述仿射模式参数指示使用仿射模式时,确定控制点模式和子块尺寸参数;
根据所述预测参考模式、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量。
3.根据权利要求2所述的方法,其特征在于,所述根据所述预测参考模式、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量,包括:
根据所述预测参考模式确定控制点运动矢量组;
根据所述控制点运动矢量组、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
遍历所述当前块的每一个子块,根据所述每一个子块的第一运动矢量构建运动矢量集合。
5.根据权利要求4所述的方法,其特征在于,所述根据所述控制点运动矢量组、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量,包括:
根据所述控制点运动矢量组、所述控制点模式以及所述当前块的尺寸参数,确定差值变量;
基于所述预测模式参数和所述子块尺寸参数,确定子块位置;
利用所述差值变量和所述子块位置,确定所述子块的所述第一运动矢量。
6.根据权利要求4所述的方法,其特征在于,所述基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差,包括:
确定样本矩阵;其中,所述样本矩阵包括亮度样本矩阵和色度样本矩阵;
根据所述预测参考模式、所述子块尺寸参数、所述样本矩阵以及所述运动矢量集合,确定所述第一预测值。
7.根据权利要求2所述的方法,其特征在于,所述基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差,包括:
解析所述码流,获取二次预测参数;
当所述二次预测参数指示使用二次预测时,基于差值变量确定所述子块与每一个像素位置之间的所述运动矢量偏差;其中,所述差值变量是根据控制点运动矢量组、所述控制点模式以及所述当前块的尺寸参数确定的;所述控制点运动矢量组是根据所述当前块的预测参考模式确定的。
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
解析所述码流,获取二次预测参数;
当所述二次预测参数指示不使用二次预测时,将所述预测样本矩阵中的所述第一预测值确定为所述第二预测值。
9.根据权利要求1所述的方法,其特征在于,所述二维滤波器用于利用多个相邻的、构成所述预设形状的像素位置进行二次预测。
10.根据权利要求9所述的方法,其特征在于,所述预设形状为矩形、菱形或任意一种对称形状。
11.根据权利要求10所述的方法,其特征在于,所述根据所述运动矢量偏差确定二维滤波器的滤波系数,包括:
获取比例参数;
根据所述比例参数和所述运动矢量偏差,确定所述像素位置对应的所述滤波器系数。
12.根据权利要求10所述的方法,其特征在于,所述比例参数包括至少一个比例值,所述运动矢量偏差包括水平偏差和垂直偏差;其中,所述至少一个比例值均为非零实数。
13.根据权利要求12所述的方法,其特征在于,当所述二维滤波器利用9个相邻的、构成矩形的像素位置进行二次预测时,位于所述矩形的中心的像素位置为待预测位置,其他8个像素位置依次位于所述待预测位置的左上、上、右上、右、右下、下、左下、左的相邻位置。
14.根据权利要求13所述的方法,其特征在于,所述根据所述比例参数和所述运动矢量偏差,确定所述像素位置对应的所述滤波器系数,包括:
基于所述至少一个比例值和所述待预测位置的所述运动矢量偏差,按照预设计算规则计算获得所述9个相邻的像素位置对应的9个滤波器系数系数。
15.根据权利要求14所述的方法,其特征在于,
将所述待预测位置的滤波器系数设置为1。
16.根据权利要求14所述的方法,其特征在于,所述根据所述比例参数和所述运动矢量偏差,确定所述像素位置对应的所述滤波器系数,包括:
对所述运动矢量偏差进行移位处理,获得移位后运动矢量偏差;
基于所述至少一个比例值和所述待预测位置的所述移位后运动矢量偏差,按照预设计算规则计算获得所述滤波器系数。
17.根据权利要求9所述的方法,其特征在于,所述多个相邻的像素位置对应的多个滤波器系数中的任意一个滤波器系数,为所述运动矢量偏差的一次函数、二次函数或者高次函数。
18.根据权利要求1所述的方法,其特征在于,所述基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,包括:
对所述滤波系数和所述第一预测值进行乘法运算,获得所述像素位置对应的乘积结果;
对所述子块的全部像素位置的所述乘积结果进行加法运算,获得求和结果;
对所述求和结果进行归一化处理,获得所述第二预测值。
19.一种帧间预测方法,其特征在于,应用于编码器,所述方法包括:
确定当前块的预测模式参数;
当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;
基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;
根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状使用二次预测;
基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
20.根据权利要求19所述的方法,其特征在于,所述确定所述当前块的子块的第一运动矢量,包括:
确定所述当前块的仿射模式参数和预测参考模式;
当所述仿射模式参数指示使用仿射模式时,确定控制点模式和子块尺寸参数;
根据所述预测参考模式、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量。
21.根据权利要求20所述的方法,其特征在于,所述根据所述预测参考模式、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量,包括:
根据所述预测参考模式确定控制点运动矢量组;
根据所述控制点运动矢量组、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量。
22.根据权利要求21所述的方法,其特征在于,所述方法还包括:
遍历所述当前块的每一个子块,根据所述每一个子块的第一运动矢量构建运动矢量集合。
23.根据权利要求21所述的方法,其特征在于,所述根据所述控制点运动矢量组、所述控制点模式以及所述子块尺寸参数,确定所述第一运动矢量,包括:
根据所述控制点运动矢量组、所述控制点模式以及所述当前块的尺寸参数,确定差值变量;
基于所述预测模式参数和所述子块尺寸参数,确定子块位置;
利用所述差值变量和所述子块位置,确定所述子块的所述第一运动矢量。
24.根据权利要求21所述的方法,其特征在于,所述基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差,包括:
确定样本矩阵;其中,所述样本矩阵包括亮度样本矩阵和色度样本矩阵;
根据所述预测参考模式、所述子块尺寸参数、所述样本矩阵以及所述运动矢量集合,确定所述第一预测值。
25.根据权利要求20所述的方法,其特征在于,所述基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差,包括:
确定二次预测参数;
当所述二次预测参数指示使用二次预测时,基于差值变量确定所述子块与每一个像素位置之间的所述运动矢量偏差。
26.根据权利要求20所述的方法,其特征在于,所述方法还包括:
确定二次预测参数;
当所述二次预测参数指示不使用二次预测时,将所述预测样本矩阵中的所述第一预测值确定为所述第二预测值。
27.根据权利要求19所述的方法,其特征在于,所述二维滤波器用于利用多个相邻的、构成所述预设形状的像素位置进行二次预测。
28.根据权利要求27所述的方法,其特征在于,所述预设形状为矩形、菱形或任意一种对称形状。
29.根据权利要求28所述的方法,其特征在于,所述根据所述运动矢量偏差确定二维滤波器的滤波系数,包括:
确定比例参数;
根据所述比例参数和所述运动矢量偏差,确定所述像素位置对应的所述滤波器系数。
30.根据权利要求28所述的方法,其特征在于,所述比例参数包括至少一个比例值,所述运动矢量偏差包括水平偏差和垂直偏差;其中,所述至少一个比例值均为非零实数。
31.根据权利要求30所述的方法,其特征在于,当所述二维滤波器利用9个相邻的、构成矩形的像素位置进行二次预测时,位于所述矩形的中心的像素位置为待预测位置,其他8个像素位置依次位于所述待预测位置的左上、上、右上、右、右下、下、左下、左的相邻位置。
32.根据权利要求31所述的方法,其特征在于,所述根据所述比例参数和所述运动矢量偏差,确定所述像素位置对应的所述滤波器系数,包括:
基于所述至少一个比例值和所述待预测位置的所述运动矢量偏差,按照预设计算规则计算获得所述9个相邻的像素位置对应的9个滤波器系数系数。
33.根据权利要求32所述的方法,其特征在于,
将所述待预测位置的滤波器系数设置为1。
34.根据权利要求31所述的方法,其特征在于,所述根据所述比例参数和所述运动矢量偏差,确定所述像素位置对应的所述滤波器系数,包括:
对所述运动矢量偏差进行移位处理,获得移位后运动矢量偏差;
基于所述至少一个比例值和所述待预测位置的所述移位后运动矢量偏差,按照预设计算规则计算获得所述滤波器系数。
35.根据权利要求27所述的方法,其特征在于,所述多个相邻的像素位置对应的多个滤波器系数中的任意一个滤波器系数,为所述运动矢量偏差的一次函数、二次函数或者高次函数。
36.根据权利要求19所述的方法,其特征在于,所述基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,包括:
对所述滤波系数和所述第一预测值进行乘法运算,获得所述像素位置对应的乘积结果;
对所述子块的全部像素位置的所述乘积结果进行加法运算,获得求和结果;
对所述求和结果进行归一化处理,获得所述第二预测值。
37.一种解码器,其特征在于,所述解码器包括解析部分,第一确定部分;
所述解析部分,配置为解析码流,获取当前块的预测模式参数;
所述第一确定部分,配置为当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;以及基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;以及根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状进行二次预测处理;以及基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
38.一种解码器,所述解码器包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被执行时,所述第一处理器执行时实现如权利要求1-18任一项所述的方法。
39.一种编码器,其特征在于,所述编码器包括第二确定部分;
所述第二确定部分,配置为确定当前块的预测模式参数;以及当所述预测模式参数指示使用帧间预测模式确定所述当前块的帧间预测值时,确定所述当前块的子块的第一运动矢量;其中,所述当前块包括多个子块;以及基于所述第一运动矢量确定所述子块的第一预测值,和所述像素位置与子块之间的运动矢量偏差;以及根据所述运动矢量偏差确定二维滤波器的滤波系数;其中,所述二维滤波器用于按照预设形状使用二次预测;以及基于所述滤波系数和所述第一预测值,确定所述子块的第二预测值,将所述第二预测值确定为所述子块的帧间预测值。
40.一种编码器,所述编码器包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被执行时,所述第二处理器执行时实现如权利要求19-36任一项所述的方法。
41.一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求1-18任一项所述的方法。
42.一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求19-36任一项所述的方法。
CN202210644545.0A 2020-07-29 2021-07-13 帧间预测方法、编码器、解码器以及计算机存储介质 Pending CN114866783A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN202010746227.6A CN114071157A (zh) 2020-07-29 2020-07-29 帧间预测方法、编码器、解码器以及计算机存储介质
CN2020107462276 2020-07-29
CN202180005841.XA CN114556944A (zh) 2020-07-29 2021-07-13 帧间预测方法、编码器、解码器以及计算机存储介质
PCT/CN2021/106081 WO2022022278A1 (zh) 2020-07-29 2021-07-13 帧间预测方法、编码器、解码器以及计算机存储介质

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202180005841.XA Division CN114556944A (zh) 2020-07-29 2021-07-13 帧间预测方法、编码器、解码器以及计算机存储介质

Publications (1)

Publication Number Publication Date
CN114866783A true CN114866783A (zh) 2022-08-05

Family

ID=80037497

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202010746227.6A Withdrawn CN114071157A (zh) 2020-07-29 2020-07-29 帧间预测方法、编码器、解码器以及计算机存储介质
CN202180005841.XA Pending CN114556944A (zh) 2020-07-29 2021-07-13 帧间预测方法、编码器、解码器以及计算机存储介质
CN202210644545.0A Pending CN114866783A (zh) 2020-07-29 2021-07-13 帧间预测方法、编码器、解码器以及计算机存储介质

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN202010746227.6A Withdrawn CN114071157A (zh) 2020-07-29 2020-07-29 帧间预测方法、编码器、解码器以及计算机存储介质
CN202180005841.XA Pending CN114556944A (zh) 2020-07-29 2021-07-13 帧间预测方法、编码器、解码器以及计算机存储介质

Country Status (5)

Country Link
CN (3) CN114071157A (zh)
MX (1) MX2023000959A (zh)
TW (1) TW202211690A (zh)
WO (1) WO2022022278A1 (zh)
ZA (1) ZA202213227B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115278255B (zh) * 2022-09-23 2022-12-20 山东宝德龙健身器材有限公司 一种用于力量器械安全管理的数据存储系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118042154A (zh) * 2018-01-25 2024-05-14 三星电子株式会社 使用基于子块的运动补偿进行视频信号处理的方法和装置
EP3741121B1 (en) * 2018-02-14 2024-09-25 Huawei Technologies Co., Ltd. Adaptive interpolation filter
CN110662073B (zh) * 2018-06-29 2022-08-30 北京字节跳动网络技术有限公司 子块的边界滤波
CN111050168B (zh) * 2019-12-27 2021-07-13 浙江大华技术股份有限公司 仿射预测方法及其相关装置
CN112601081B (zh) * 2020-12-04 2022-06-24 浙江大华技术股份有限公司 一种自适应分区多次预测方法及装置

Also Published As

Publication number Publication date
TW202211690A (zh) 2022-03-16
WO2022022278A1 (zh) 2022-02-03
MX2023000959A (es) 2023-02-22
ZA202213227B (en) 2023-09-27
CN114556944A (zh) 2022-05-27
CN114071157A (zh) 2022-02-18

Similar Documents

Publication Publication Date Title
CN109997363B (zh) 图像编码/解码方法和装置以及存储有比特流的记录介质
JP7391958B2 (ja) ビデオ信号符号化/復号方法及び前記方法に用いられる機器
JP7009632B2 (ja) 変換に基づく映像コーディング方法及びその装置
WO2010001918A1 (ja) 画像処理装置および方法、並びにプログラム
KR102352058B1 (ko) 비디오 코딩을 위한 디바이스들 및 방법들
KR20100036284A (ko) 동화상 부호화 장치, 동화상 부호화 방법, 동화상 복호 장치 및 동화상 복호 방법
CN113382234B (zh) 视频信号编码/解码方法以及用于所述方法的设备
CN116668725A (zh) 对图像编码和解码的方法、非暂态计算机可读存储介质
CN116055720A (zh) 视频信号编码/解码方法及其设备
CN114586366A (zh) 帧间预测方法、编码器、解码器及存储介质
CN118632018A (zh) 视频信号编码/解码方法及其装置
CN114866783A (zh) 帧间预测方法、编码器、解码器以及计算机存储介质
WO2022061680A1 (zh) 帧间预测方法、编码器、解码器以及计算机存储介质
WO2022077495A1 (zh) 帧间预测方法、编码器、解码器以及计算机存储介质
TW202332274A (zh) 在4:4:4色度格式及單一樹狀結構情況下針對所有通道之基於矩陣的內部預測技術
CN116980596A (zh) 一种帧内预测方法、编码器、解码器及存储介质
CN114125466A (zh) 帧间预测方法、编码器、解码器以及计算机存储介质
WO2022037344A1 (zh) 帧间预测方法、编码器、解码器以及计算机存储介质
CN118679735A (zh) 用于视频编解码的跨分量预测的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination