运动补偿修正方法、编码方法、编码器及存储介质与流程

文档序号:20679815发布日期:2020-05-08 18:17阅读:409来源:国知局
运动补偿修正方法、编码方法、编码器及存储介质与流程

本发明涉及编解码技术领域,特别是涉及一种运动补偿修正方法、编码方法、编码器及存储介质。



背景技术:

因为视频图像数据量比较大,通常需要对视频像素数据进行压缩,从而降低视频的数据量。压缩后的数据称之为视频码流,视频码流通过有线或者无线网络传输至用户端,再进行解码观看,能够实现降低传输过程中的网络带宽和减少存储空间的目的。

整个视频编码流程包括预测、变换、量化、编码等过程,其中预测分为帧内预测和帧间预测两部分。帧间预测过程实际上就是获取当前编码块的运动矢量(motionvector,mv)信息的过程,为了便于描述,下文中将mv信息简称为mv。为了提高预测精度,在获取运动矢量后,一般还会对运动矢量进行补偿,双向光流(bi-directionalopticalflowbdof)补偿方法是运动补偿中的一种,本申请的发明人在长期的研发过程中,发现目前bdof补偿方法还存在一定的局限性,也在一定程度上影响了帧间预测的准确度。



技术实现要素:

本发明主要是提供一种运动补偿修正方法、编码方法、编码器及存储介质,能够提高修正效果,进而提高预测准确度。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种运动补偿修正方法,该方法包括获取当前编码块的运动补偿结果,当前编码块的运动补偿结果包括当前编码块的运动矢量及帧间预测值;确定当前编码块中的待修正像素,待修正像素包括当前编码块中部分或全部像素;利用待修正像素的关联像素的运动矢量获取待修正像素的修正运动矢量,关联像素包括空域关联像素和/或时域关联相关像素;利用待修正像素的修正运动矢量及预测值梯度基于光流公式对待修正像素的预测值进行修正,待修正像素的预测值梯度是至少利用当前编码块的帧间预测值计算得到的。

为解决上述技术问题,本发明采用的另一个技术方案是:提供一种编码方法,该编码方法包括获取当前编码块的多个帧间预测值,多个帧间预测值中至少包括一个利用上述的运动补偿修正方法修正后得到的帧间预测值;选取预测代价最小的帧间预测值作为当前编码块的帧间预测结果;基于当前编码块的预测结果对当前编码块进行编码,得到码流。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种编码器,该编码器包括处理器,处理器用于执行指令以实现前述的运动补偿修正方法。

为解决上述技术问题,本申请采用的再一个技术方案是:提供一种计算机可读存储介质,计算机可读存储介质用于存储指令/程序数据,指令/程序数据能够被执行以实现前述的运动补偿修正方法。

本发明的有益效果是:区别于现有技术的情况,本发明在对预测值进行补偿修正的过程中,充分利用了时域和空域相关联像素的信息,能够提高修正效果,进而提高预测准确度。

附图说明

图1是本申请实施方式中一运动补偿修正方法的流程示意图;

图2是本申请实施方式中另一运动补偿修正方法的流程示意图;

图3是本申请实施方式中一待修正像素的选取方式的示意图;

图4是本申请实施方式中空域关联像素的运动矢量缩放的示意图;

图5是本申请实施方式中待修正像素与空域关联像素的位置关系示意图;

图6是本申请实施方式中sobel算子的内核的示意图;

图7是本申请实施方式中又一运动补偿修正方法的流程示意图;

图8是本申请实施方式中另一待修正像素的选取方式的示意图;

图9是本申请实施方式中当前块与同位块的位置关系示意图;

图10是本申请实施方式中一编码方法的流程示意图;

图11是本申请实施方式中一运动补偿修正装置的结构示意图;

图12是本申请实施方式中一编码器的结构示意图;

图13为本申请实施方式中一计算机可读存储介质的结构示意图。

具体实施方式

为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。

请参阅图1,图1是本申请实施方式中一运动补偿修正方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施方式包括:

s110:获取当前编码块的运动补偿结果。

其中,当前编码块的运动补偿结果包括当前编码块的mv、参考帧及帧间预测值。可利用常规的运动补偿方式对当前编码块的帧间预测值进行补偿修正得到当前编码块的运动补偿结果。

s120:确定当前编码块中的待修正像素。

其中,待修正像素包括当前编码块中部分或全部像素。

s130:利用待修正像素的关联像素的运动矢量获取待修正像素的修正运动矢量。

其中,关联像素包括空域关联像素和/或时域关联相关像素。

s140:利用待修正像素的修正运动矢量及预测值梯度基于光流公式对待修正像素的预测值进行修正。

其中,待修正像素的预测值梯度是利用当前编码块的帧间预测值计算得到的。

通过该实施方式的实施,在对预测值进行补偿修正过程中,充分利用了时域和空域相关联像素的信息,能够提高修正效果,进而提高预测准确度。

该实施方式中,可分别利用空域关联像素或时域关联相关像素的mv获取待修正像素的修正mv,进而得到修正值;也可以同时利用空域关联像素和时域关联相关像素的mv获取待修正像素的修正mv,进而得到修正值。下面将分别对不同的实现方式进行说明。

请参阅图2,图2是本申请实施方式中另一运动补偿修正方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图2所示的流程顺序为限。该实施方式中,利用空域方式获取待修正像素的修正mv,其中,空域方式是指利用与当前编码块空域临近的已编码像素(空域关联像素)的mv进行mv差值(修正mv)的计算。如图2所示,本实施方式包括:

s210:获取当前编码块的运动补偿结果。

s220:确定当前编码块中的待修正像素。

其中,空域方式下,可选择当前编码块中与已编码侧的距离小于第一阈值的部分或全部像素作为待修正像素。可按照不同大小的空间单元来选取待修正像素,如可按像素级选取,也可以按块级选取。

像素级选取是指选取当前编码块中的若干行和/或若干列像素进行预测值修正。其中,因为当前编码块内像素距离参考像素越近,相关性越强,所以选取当前编码块内靠近左边界和上边界的像素进行预测值修正,能够提高修正效果。因此,选取时应尽量多的选取这部分区域的像素。

块级选取是指以m*n(m和n可以相等也可以不等)大小的子块为单元,选取当前编码块中的若干子块行和/或若干子块列进行预测值修正。同样由于当前编码块内像素距离参考像素越近,相关性越强,所以选取当前编码块内靠近左边界和上边界的子块进行预测值修正,能够提高修正效果。

例如,可对当前编码块内最上面n行(1<=n<=height/4)的4*4子块行以及最左侧m列(1<=m<=width/4)的4*4子块列进行预测值修正。其中height是当前编码块的高,width是当前编码块的宽。

请参阅图3,图3是本申请实施方式中一待修正像素的选取方式的示意图。在一具体实施例中,n=3,m=1,即当前编码块内最上面的3条4*4子块行和最左侧1条4*4子块列需要进行预测值修正,如图3所示,图中每个阴影小方块代表当前编码块中的一个4*4子块。

s230:计算空域关联像素的运动矢量与当前编码块的运动矢量的差值得到待修正像素的空域修正运动矢量。

其中,空域方式下,所用关联像素为空域关联像素,所算得的待修正像素的修正mv为空域修正mv。空域关联像素包括当前帧中在当前编码块的已编码侧且与待修正像素距离最近的已编码像素,已编码侧可以是当前编码块的左侧和/或上侧。即空域关联像素可包括上侧空域关联像素和/或左侧空域关联像素,上侧空域关联像素为当前帧中在当前编码块的上侧且与待修正像素距离最近的已编码像素,左侧空域关联像素为当前帧中在当前编码块的左侧且与待修正像素距离最近的已编码像素。

其中,待修正像素的空域修正mv包括前向空域修正mv和后向空域修正mv,可设定待修正像素的前向空域修正mv为空域关联像素前向mv减去当前编码块前向mv的差值,待修正像素的后向空域修正mv为空域关联像素后向mv减去当前编码块后向mv的差值。

在一实施方式中,当空域关联像素包括上侧空域关联像素和左侧空域关联像素时:待修正像素的前向空域修正mv为上侧空域关联像素前向修正mv和左侧空域关联像素前向修正mv的加权平均值;待修正像素的后向空域修正mv为上侧空域关联像素后向修正mv和左侧空域关联像素后向修正mv的加权平均值。

其中,上侧空域关联像素的前向修正mv为上侧空域关联像素前向mv减去当前编码块前向mv的差值,上侧空域关联像素的后向修正mv为上侧空域关联像素后向mv减去当前编码块后向mv的差值;左侧空域关联像素的前向修正mv为左侧空域关联像素前向mv减去当前编码块前向mv的差值,左侧空域关联像素的后向修正mv为左侧空域关联像素后向mv减去当前编码块后向mv的差值。具体计算公式总结如下:

设当前像素(待修正像素)坐标为(i,j),那么上侧空域关联像素的位置为(i,-1),左侧空域关联像素的位置为(-1,j)。

设参数mvneil0和mvneil1分别表示已编码像素(空域关联像素)的前向和后向mv,mvcurl0和mvcurl1表示当前编码块前向和后向mv,若只有单向mv,则另一个方向无需进行mv差值计算,也无需进行后续的修正值计算,将该方向的mv差值置为(0,0)。mval0和mval1表示上侧空域关联像素的前向和后向mv的差值,mvll0和mvll1表示左侧空域关联像素的前向和后向mv的差值,mvl0diff和mvl1diff分别表示最终加权后前向和后向的mv差值。则mv差值的计算方式如下:

其中,权重的分配规则为关联像素离当前像素越近,则用其计算出的mv差值的权重越大。wa和wl的范围都可取到0~1,且wa+wl=1。

在一实施方式中,可利用待修正像素的位置坐标值计算权重参数,如权重参数wa、wl的获取方式可以是:

weightall=i+j+2

wa=1-wl

在一实施方式中,由于当前编码块和空域关联像素可能采用单向预测或双向预测,所以计算mv差值时可设定一些统一计算规则,如可以是下面规则中的一种或多种。

若当前编码块采用单向预测且空域关联像素采用双向预测,则选取空域关联像素的与当前编码块mv方向一致的mv作为空域关联像素的mv。

若当前编码块与空域关联像素均采用单向预测且空域关联像素mv的方向与当前编码块mv的方向相同,则直接使用空域关联像素的mv。

若当前编码块与空域关联像素均采用单向预测且空域关联像素mv的方向与当前编码块mv的方向相反,则将待修正像素的空域修正mv(mvdiff)置为0。

若当前编码块与空域关联像素均采用双向预测,则分别计算空域关联像素前向mv与当前编码块前向mv的差值,空域关联像素后向mv与当前编码块后向mv的差值。

若当前编码块采用双向预测且空域关联像素采用单向预测,则将没有做预测的方向上的待修正像素的空域修正mv(mvdiff)置为0。

若当前编码块采用单向/双向预测且空域关联像素的mv不可用,则将待修正像素的空域修正mv(mvdiff)置为0。其中,空域关联像素mv不可用可能是因为左边或者上边的块不存在,或者是非帧间预测块。

若当前编码块采用单向/双向预测且空域关联像素mv与当前编码块mv的差值大于第三阈值,则将待修正像素的空域修正mv(mvdiff)置为0。

在一实施方式中,在计算mv差值之前,还应确定当前编码块的参考帧和上侧/左侧空域关联像素的参考帧是否一致,若不一致,则需要对关联像素的mv进行缩放,若一致,则无需进行缩放。

缩放过程包括:获取关联像素的原始运动矢量;利用关联像素的第二poc距离与当前编码块的第三poc距离对关联像素的原始运动矢量进行缩放得到关联像素的运动矢量。即以当前帧和当前帧的参考帧之间的距离poccur(第三poc距离)为基准,利用所用已编码像素和已编码像素的参考帧之间距离pocnei(第二poc距离)对该已编码像素的mv进行缩放,并且后续用缩放后的saclemv参与mv差值计算。其中,poc是pictureordercount(图像序列号)的缩写,用于标识图像的播放顺序。

请参阅图4,图4是本申请实施方式中空域关联像素的运动矢量缩放的示意图。在一具体实施例中,当前待修正像素当前帧的poc为4,当前帧的参考帧的poc为5,上侧空域关联像素的参考帧的poc为8。则当前帧和当前帧的参考帧之间的距离poccur=|5-4|=1,上侧空域关联像素和上侧空域关联像素的参考帧之间的距离pocnei=|8-4|=4,那么以poccur为基准的缩放系数为poccur/pocnei,对上侧空域关联像素的mv进行缩放:scalemv=mv*poccur/pocnei=mv*1/4。

在一实施方式中,当前编码块的mv是已知的,且当前编码块内所有像素的mv都一致,由于现有技术中mv是以4*4块为单位存储的,即在一个4*4块存储单元内的所有像素mv都一致。所以在获取空域关联像素的mv时可以以4*4块为单元获取。请参阅图5,图5是本申请实施方式中待修正像素与空域关联像素的位置关系示意图。图中每个小的方格代表一个4*4子块。其中,图中每个待修正子块都会利用上方同列对应位置的已编码4*4块和/或左侧同行对应位置的已编码4*4块的mv进行差值计算。

其中,因当前编码块内所有像素的mv都一致,所以待修正像素的修正mv取决于空域关联像素的mv。

s240:至少利用当前编码块的预测值计算得到待修正像素的预测值梯度。

该实施方式中,利用当前像素一侧邻近像素的像素值减去另一侧邻近像素的像素值得到当前像素的梯度值。可以用多种滤波器或算子实现,比如[-101]滤波器,soble算子,robert梯度算子等。

其中,待修正像素的预测值梯度包括前向预测值梯度和后向预测值梯度,前向预测值梯度包括前向预测值水平梯度和前向预测值垂直梯度,后向预测值梯度包括后向预测值水平梯度和后向预测值垂直梯度。

在一实施方式中,可以用[-101]滤波器来计算待修正像素的预测值梯度,具体如下:

设(i,j)代表像素坐标,i=0且j=0时,(0,0)代表当前编码块左上角像素的像素坐标。

前向预测值的梯度计算,分为水平梯度ghl0和垂直梯度gvl0:

ghl0(i,j)=il0(i+1,j)-il0(i-1,j)

gvl0(i,j)=il0(i,j+1)-il0(i,j-1)

后向预测值的梯度计算,分为水平梯度ghl1和垂直梯度gvl1:

ghl1(i,j)=il1(i+1,j)-il1(i-1,j)

gvl1(i,j)=il1(i,j+1)-il1(i,j-1)

其中il0代表当前像素前向预测值,il0代表当前像素后向预测值。若当前像素进行的是单向预测,则没有进行预测的那个方向无需进行梯度计算,也不进行后续修正值的计算过程。

在一实施方式中,在当前像素坐标为(0,j)(j>=1)时,左边的相邻像素使用左侧相邻的参考像素。即上式中的il0(-1,j)和il1(-1,j)为左侧相邻参考像素的重建值。或者(0,j)(j>=1)位置的像素的梯度用(1,j)位置像素的梯度填充。

在当前像素坐标为(i,0)(i>=0)时,上方的相邻像素使用上方相邻的参考像素。或者(i,0)(i>=0)位置像素的梯度用(i,1)位置像素的梯度填充。

在一实施方式中,可以用soble算子求待修正像素的预测值,具体如下:

请参阅图6,图6是本申请实施方式中sobel算子的内核的示意图。sobel算子基于两个简单的3*3内核,内核结构如图6所示。

当前像素位于3*3内核的中间位置,其余相邻像素位置也按3*3内核对应位置排布。

那么当前像素前向预测值的梯度计算如下,分为水平梯度ghl0和垂直梯度gvl0:

ghl0(i,j)=-il0(i-1,j-1)-2*il0(i-1,j)-il0(i-1,j+1)+il0(i+1,j-1)+2*il0(i+1,j)+il0(i+1,j+1)

gvl0(i,j)=-i(i-1,j-1)-2*i(i,j-1)-i(i+1,j-1)+i(i-1,j+1)+2*i(i,j+1)+i(i+1,j+1)

当前像素后向预测值的梯度计算如下,分为水平梯度ghl1和垂直梯度gvl1:

ghl1(i,j)=-il1(i-1,j-1)-2*il1(i-1,j)-il1(i-1,j+1)+il1(i+1,j-1)+2*il1(i+1,j)+il1(i+1,j+1)

gvl1(i,j)=-il1(i-1,j-1)-2*il1(i,j-1)-il1(i+1,j-1)+il1(i-1,j+1)+2*il1(i,j+1)+il1(i+1,j+1)

同样地,在当前像素坐标为(0,j)(j>=1)时,左边的相邻像素使用左侧相邻的参考像素。即上式中的il0(-1,j)和il1(-1,j)为左侧相邻参考像素的重建值。或者(0,j)(j>=1)位置的像素的梯度用(1,j)位置像素的梯度填充。

在当前像素坐标为(i,0)(i>=0),上方的相邻像素使用上方相邻的参考像素。或者(i,0)(i>=0)位置像素的梯度用(i,1)位置像素的梯度填充

其中,步骤s230和s240只是示意性描述,两者可以同时进行,也可以调换顺序执行。

s250:利用待修正像素的修正运动矢量及预测值梯度基于光流公式得到待修正像素的修正值。

其中,待修正像素的修正值包括前向修正值和后向修正值,待修正像素的修正值为待修正像素前向修正值与待修正像素后向修正值的加权平均值。

具体地,前向修正mv包括前向修正mv水平分量和前向修正mv垂直分量,后向修正mv包括后向修正mv水平分量和后向修正mv垂直分量;待修正像素的预测值梯度包括前向预测值梯度和后向预测值梯度,前向预测值梯度包括前向预测值水平梯度和前向预测值垂直梯度,后向预测值梯度包括后向预测值水平梯度和后向预测值垂直梯度。

待修正像素的前向修正值为待修正像素的前向修正mv水平分量与前向预测值水平梯度的乘积加上待修正像素的前向修正mv垂直分量与前向预测值垂直梯度的乘积;待修正像素的后向修正值为待修正像素的后向修正mv水平分量与后向预测值水平梯度的乘积加上待修正像素的后向修正mv垂直分量与后向预测值垂直梯度的乘积。

该实施方式中,所用修正mv是利用空域方式获得的,所得修正值为空域修正值。

s260:利用待修正像素的修正值对待修正像素的预测值进行修正。

其中,修正后的待修正像素的预测值为当前编码块的帧间预测值与待修正像素的修正值的和。该实施方式中,所得待修正像素的预测值为空域修正值与当前编码块的帧间预测值的和。

其中,利用待修正像素的修正运动矢量及预测值梯度基于光流公式对待修正像素的预测值进行修正的具体计算方式如下:

设i(i,j)代表待修正像素原始预测值,δil0(i,j)和δil1(i,j)分别代表前向和后向的修正值,i′(i,j)代表修正后的预测值,mvl0diffx(i,j)代表前向mv差值的水平分量,mvl0diffy(i,j)代表前向mv差值的垂直分量,mvl1diffx(i,j)代表后向mv差值的水平分量,mvl1diffy(i,j)代表后向mv差值的垂直分量:

δil0(i,j)=ghl0(i,j)*mvl0diffx(i,j)+gvl0(i,j)*mvl0diffy(i,j)

δil1(i,j)=ghl1(i,j)*mvl1diffx(i,j)+gvl1(i,j)*mvl1diffy(i,j)

δi(i,j)=wl0*δil0(i,j)+wl1*δil1(i,j)

i′(i,j)=i(i,j)+δi(i,j)

其中wl0和wl1分别为前向和后向修正值的权重,获取方式同现有技术的双向预测中前后向加权值的获取方式。通过该实施方式的实施,在进行运动补偿修正时,可以选择单向预测,也可以选择双向预测,且双向预测时前后向预测值权重可以适应调配,使得修正效果更好,适用性更广。

请参阅图7,图7是本申请实施方式中又一运动补偿修正方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图7所示的流程顺序为限。该实施方式中,利用时域方式获取待修正像素的修正mv,其中,时域方式使用当前像素在参考帧中同位像素的mv和当前像素mv做差值。如图7所示,本实施方式包括:

s310:获取当前编码块的运动补偿结果。

s320:确定当前编码块中的待修正像素。

其中,时域方式下,可选择当前编码块中第一poc距离小于第二阈值的部分或全部像素作为待修正像素,当前编码块中的像素的第一poc距离为当前编码块中的像素的时域关联像素的参考帧与当前编码块的参考帧之间的poc距离。

其中,由于时域方式下和空域参考像素间距离没有关系,可以选择对当前编码块内所有像素都进行预测值修正。也可以根据预设规则对当前编码块内每个像素进行判断,如可根据当前像素的参考帧中同位像素的参考帧和当前像素的参考帧间的poc距离确定是否进行修正,若poc距离大于一个阈值th则不进行预测值修正。若同位像素的参考帧不存在或不可用,也不进行预测值修正。其中,同位像素是指参考帧中和当前像素空域坐标相同的像素。

请参阅图8,图8是本申请实施方式中另一待修正像素的选取方式的示意图。在一具体实施例中,判断当前编码块中的第一当前像素和第二当前像素。如图所示,第一当前像素的参考帧的poc=7,第一同位像素的参考帧的poc=11,设poc距离的阈值th=3,第一同位像素的参考帧和第一当前像素的参考帧的pcc距离为11-7=4,大于th,因此不进行预测值修正。

第二当前像素的参考帧的poc=7,第二同位像素的参考帧的poc=10,设poc距离的阈值th=3,第一同位像素的参考帧和第一当前像素的参考帧的pcc距离为10-7=3,等于th,需要进行预测值修正。

s330:计算时域关联像素的运动矢量与当前编码块的运动矢量的差值得到待修正像素的空域修正运动矢量。

时域方式使用当前像素在参考帧中同位像素的mv和当前像素mv做差值。具体计算方式和规则与空域像素级mv获取方式基本一致,但不同的是空域方式中mv获取的是空域相邻4*4块的mv,而时域方式中mv获取的是参考帧中的同位4*4块的mv。请参阅图9,图9是本申请实施方式中当前块与同位块的位置关系示意图。此处同位4*4块指的是在参考帧中和当前4*4块的空域坐标位置相同且大小为4*4的块。因此在获取同位4*4块的mv前,先要把当前编码块划分为4*4子块,然后去参考帧中找到同位4*4块,获取该同位块的mv作为同位块中所有像素的mv。

在一实施方式中,当时域关联像素包括前向同位像素和后向同位像素时,其中,前向同位像素为当前编码块的前向参考帧中与待修正像素在同一位置的同位像素,后向同位像素为当前编码块的后向参考帧中与待修正像素在同一位置的同位像素。

待修正像素的前向时域修正mv为前向同位像素的前向修正mv和后向同位像素前向修正mv的加权平均值;待修正像素的后向时域修正mv为前向同位像素的后向修正mv和后向同位像素后向修正mv的加权平均值。

其中,前向同位像素的前向修正mv为前向同位像素的前向mv减去当前编码块的前向mv的差值,前向同位像素的后向修正mv为前向同位像素的后向mv减去当前编码块的后向mv的差值;后向同位像素的前向修正mv为后向同位像素的前向mv减去当前编码块的前向mv的差值,后向同位像素的后向修正mv为后向同位像素的后向mv减去当前编码块的后向mv的差值。具体计算公式总结如下:

设当前帧中某一子块的左上角坐标为(a,b),该子块在参考帧中对应同位块的的左上角坐标为(a′,b′),那么a=a′,b=b′。

设参数mvfcoll0(i,j)和mvfcoll1(i,j)分别表示前向同位像素的前向和后向mv,参数mvbcoll0(i,j)和mvbcoll1(i,j)分别表示后向同位像素的前向和后向mv;mvcurl0(i,j)和mvcurl1(i,j)表示当前编码块前向和后向mv,若只有单向mv,则另一个方向无需进行mv差值计算,也无需进行后续修正值计算,该方向的mv差值置为(0,0)。mvfl0(i,j)和mvfl1(i,j)表示前向同位像素的前向和后向mv的差值,mvbl0(i,j)和mvbl1(i,j)表示后向同位像素的前向和后向mv的差值,mvl0diff和mvl1diff分别表示最终加权后前向和后向的mv差值。

时域方式下mv插值具体公式计算为:

其中wf、wb都为权重参数,可根据poc距离来获取,权重分配规则为当前帧和参考帧对应的poc距离越近,那么此方向对应的mv差值的权重越大。wf和wb的范围都可取到0~1,且wf+wb=1。

在一实施方式中,设pocf代表当前帧和前向参考帧的poc距离,pocb代表当前帧后向参考帧的poc距离:

weightall=pocf+pocb

其中,由于当前编码块和时域关联像素可能采用单向预测或双向预测,所以计算mv差值时可设定一些统一计算规则,具体可参照上文中空域的规则,在此不再赘述。

s340:至少利用当前编码块的预测值计算得到待修正像素的预测值梯度。

计算方式与空域方式下相同,具体请参阅上述实施方式的描述,在此不再赘述。

s350:利用待修正像素的修正运动矢量及预测值梯度基于光流公式得到待修正像素的修正值。

时域方式下,修正值的计算方式和规则与空域方式下相同,只是所用修正mv为时域修正mv,所得修正值为时域修正值,具体计算过程请参阅上述实施方式的描述,在此不再赘述。

s360:利用待修正像素的修正值对待修正像素的预测值进行修正。

该实施方式中,所得待修正像素的预测值为时域修正值与当前编码块的帧间预测值的和

以上实施方式中,可分别利用空域修正值或时域修正值对待修正像素的预测值进行修正。在另一实施方式中,还可以同时利用空域修正值和时域修正值对待修正像素的预测值进行修正。

具体地,可分别利用上述实施方式所提供的方式算得空域修正值的前后向修正值和时域修正值的前后向修正值。将空域修正值的前向修正值与时域修正值的前向修正值进行加权得到前向融合修正值;将空域修正值的后向修正值与时域修正值的后向修正值进行加权得到后向融合修正值;再利用前向融合修正值和后向融合修正值对待修正像素的预测值进行修正。

其中,可以分别将空域和时域的前向修正值和后向修正值进行加权平均,将空域和时域的修正值融合成一个修正值进行修正。也可以分别将空域和时域的前向修正值和后向修正值进行加权求和,进行空域和时域的叠加修正,即相当于先用空域修正值修正了一遍,再用时域修正值修正一遍。以上各种实施方式,在不冲突矛盾的情况下可结合使用,在此不做限定。

以上实施方式中,修正后所得预测值可作为一种帧间预测值,与其他方式获取到的帧间预测值进行预测代价的分析比较,选取预测代价最小的帧间预测值作为预测结果。

请参阅图10,图10是本申请一实施方式中编码方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图9所示的流程顺序为限。该方法可由编码器来执行。本实施方式中,编码方法包括以下步骤:

s410:获取当前编码块的多个帧间预测值。

其中,多个帧间预测值中至少包括一个利用上述任一实施例所述的运动补偿修正方法修正后得到的帧间预测值。

s420:选取预测代价最小的帧间预测值作为当前编码块的帧间预测结果。

s430:基于当前编码块的预测结果对当前编码块进行编码,得到码流。

本实施方式所提供的编码方法,通过利用如上任一实施方式的运动补偿修正方法,对预测值进行修正,从而可增加预测准确度,提高编码准确度,有利于进一步去除空间冗余,提高帧间编码的压缩率。

其中,本申请所提供的运动补偿修正方法可直接替代现有bdof模式,或作为一个单独的模式添加到运动补偿模块中,可在bdof和本申请方法之间进行选择。

若作为一个单独的模式添加,可在slice级或cu级新增一个句法元素作为标志位来表示当前slice或当前cu是否采用本提案所提方案,或是具体采用本提案中哪种方式(如空域方式和/或时域方式)。但在解码端计算资源允许的情况下,编解码端可以采用相同的运算方式来进行处理,而不需要添加多余的句法元素。

请参阅图11,图11是本申请一实施方式中运动补偿修正装置的结构示意图。该实施方式中,运动补偿修正装置50包括获取模块510、确定模块520,第一计算模块530和第二计算模块540,该运动补偿修正装置可用于执行上述任一实施方式所述的运动补偿修正方法。

其中,获取模块510用于获取当前编码块的运动补偿结果,运动补偿结果包括当前编码块的运动矢量及帧间预测值。

确定模块520用于确定当前编码块中的待修正像素,待修正像素包括当前编码块中部分或全部像素。

第一计算模块530用于利用待修正像素的关联像素的运动矢量获取待修正像素的修正运动矢量,关联像素包括空域关联像素和/或时域关联相关像素。

第二计算模块540用于利用待修正像素的修正运动矢量及预测值梯度基于光流公式对待修正像素的预测值进行修正,待修正像素的预测值梯度是利用当前编码块的帧间预测值计算得到的。

请参阅图12,图12是本申请一实施方式中编码器的结构示意图。该实施方式中,编码器10包括处理器11。

处理器11还可以称为cpu(centralprocessingunit,中央处理单元)。处理器11可能是一种集成电路芯片,具有信号的处理能力。处理器11还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器11也可以是任何常规的处理器等。

编码器10可以进一步包括存储器(图中未示出),用于存储处理器11运行所需的指令和数据。

处理器11用于执行指令以实现上述本申请运动补偿修正方法任一实施例及任意不冲突的组合所提供的方法。

请参阅图13,图13为本申请一实施方式中计算机可读存储介质的结构示意图。本申请实施例的计算机可读存储介质20存储有指令/程序数据21,该指令/程序数据21被执行时实现本申请运动补偿修正方法任一实施例以及任意不冲突的组合所提供的方法。其中,该指令21可以形成程序文件以软件产品的形式存储在上述存储介质20中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质20包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1