运动矢量修正、预测、编码方法、编码器及存储装置

文档序号:1559109 发布日期:2020-01-21 浏览:11次 >En<

阅读说明:本技术 运动矢量修正、预测、编码方法、编码器及存储装置 (Motion vector correction method, motion vector prediction method, motion vector encoding device, and storage device ) 是由 方诚 江东 林聚财 殷俊 曾飞洋 于 2019-09-18 设计创作,主要内容包括:本申请公开了一种运动矢量修正、预测、编码方法、编码器及存储装置,该运动矢量修正方法包括对当前块进行划分得到至少一个子块;分别利用多个修正运动矢量组合对每个子块的第一预测结果进行修正得到每个子块的多个第二预测结果,每个修正运动矢量组合包括相互独立的第一修正运动矢量和第二修正运动矢量,子块的第一预测结果为对子块利用当前块的最终运动矢量预测而得到的;分别为每个子块选择预测代价最小的第二预测结果对应的修正运动矢量组合作为子块的最终修正运动矢量组合;利用所有子块的最终修正运动矢量组合进行修正。通过上述方式,本申请能够提高预测的准确度。(The application discloses a motion vector correction, prediction and coding method, an encoder and a storage device, wherein the motion vector correction method comprises the steps of dividing a current block to obtain at least one sub-block; correcting the first prediction result of each sub-block by using a plurality of corrected motion vector combinations respectively to obtain a plurality of second prediction results of each sub-block, wherein each corrected motion vector combination comprises a first corrected motion vector and a second corrected motion vector which are independent from each other, and the first prediction result of the sub-block is obtained by predicting the sub-block by using the final motion vector of the current block; respectively selecting a correction motion vector combination corresponding to a second prediction result with the minimum prediction cost for each subblock as a final correction motion vector combination of the subblocks; and correcting by using the final correction motion vector combination of all the sub-blocks. Through the mode, the accuracy of prediction can be improved.)

运动矢量修正、预测、编码方法、编码器及存储装置

技术领域

本申请涉及编解码技术领域,特别是涉及运动矢量修正、预测、编码方法、编码器及存储装置。

背景技术

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

整个视频编码流程包括预测、变换、量化、编码等过程,其中预测分为帧内预测和帧间预测两部分。帧间预测用的是图像帧间的时域相关性来对图像进行压缩。帧间预测过程实际上就是获取当前编码块的运动矢量(MotionVector,MV)信息的过程,为了便于描述,下文中将MV信息简称为MV。为了提高预测精度,在获取运动矢量后,一般还会对运动矢量进行修正,本申请的发明人在长期的研发过程中,发现目前运动矢量修正方法还存在一定的局限性,也在一定程度上影响了帧间预测的准确度。

发明内容

本申请主要解决的技术问题是提供一种运动矢量修正、预测、编码方法、编码器及存储装置,能够提高预测的准确度。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种运动矢量修正方法,该运动矢量修正方法包括对当前块进行划分得到至少一个子块;分别利用多个修正运动矢量组合对每个子块的第一预测结果进行修正得到每个子块的多个第二预测结果,每个修正运动矢量组合包括相互独立的第一修正运动矢量和第二修正运动矢量,子块的第一预测结果为对子块利用当前块的最终运动矢量预测而得到的;分别为每个子块选择预测代价最小的第二预测结果对应的修正运动矢量组合作为子块的最终修正运动矢量组合,当前块的最终运动矢量是对当前块进行帧间预测时所选出的运动矢量;利用所有子块的最终修正运动矢量组合进行修正。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种运动矢量修正方法,该运动矢量修正方法包括对当前块进行划分得到至少一个子块;分别利用多个修正运动矢量组合对每个子块的第一预测结果进行修正得到每个子块的多个第二预测结果,每个修正运动矢量组合包括第一修正运动矢量和第二修正运动矢量,第一修正运动矢量和第二修正运动矢量中的一个是从预设搜索范围中搜索得到的,另一个是利用第一距离和第二距离对搜索得到的运动矢量进行缩放而得到的,第一距离为第一参考帧与当前帧之间的距离,第二距离为第二参考帧与当前帧之间的距离,第一参考帧为第一修正运动矢量作用的参考帧,第二参考帧为第二修正运动矢量作用的参考帧,子块的第一预测结果为对子块利用当前块的最终运动矢量预测而得到的,当前块的最终运动矢量是对当前块进行帧间预测时所选出的运动矢量;分别为每个子块选择预测代价最小的第二预测结果对应的修正运动矢量组合作为子块的最终修正运动矢量组合;利用所有子块的最终修正运动矢量组合进行修正。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种预测方法,该预测方法包括获取当前块的第一预测结果,利用上述的运动矢量修正方法对第一预测结果进行修正得第二预测结果,将第二预测结果作为当前块的预测结果。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种编码方法,该编码方法包括获取当前块的预测结果,其中,当前块的预测结果是利用上述的运动矢量修正方法修正后的;基于当前块的预测结果对当前块进行编码。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种编码器,编码器包括处理器和存储器,处理器耦接存储器,存储器用于存储程序,处理器用于执行程序以实现上述的运动矢量修正、预测、编码方法。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种存储装置,存储装置存储有程序,程序被执行时能够实现上述的运动矢量修正、预测、编码方法。

本申请的有益效果是:区别于现有技术的情况,本申请通过将修正运动矢量组合中的第一修正运动矢量和第二修正运动矢量设置成相互独立的,可以获得更多的修正运动矢量组合,进而得到更多的修正方案,能够提高最终修正方案的获取精度,也就能够提高预测准确度。

附图说明

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

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

图3是本申请一实施方式中修正运动矢量的搜索区域示意图;

图4是本申请另一实施方式中修正运动矢量的搜索区域示意图;

图5是本申请又一实施方式中运动矢量修正方法的流程示意图;

图6是本申请一实施方式中预测方法的流程示意图;

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

图8是本申请一实施方式中运动矢量修正装置的结构示意图;

图9是本申请另一实施方式中运动矢量修正装置的结构示意图;

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

图11是本申请一实施方式中存储装置的结构示意图。

具体实施方式

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

请参阅图1,图1是本申请一实施方式中运动矢量修正方法的流程示意图。在该实施方式中,运动矢量修正方法包括如下步骤:

S110:对当前块进行划分得到至少一个子块。

其中,当前块为当前编码块,可根据当前块的尺寸将当前块划分为多个尺寸相同/不同的子块,同一当前块可以有多种子块划分方式。

S120:分别利用多个修正运动矢量组合对每个子块的第一预测结果进行修正得到每个子块的多个第二预测结果。

其中,每个修正运动矢量组合包括相互独立的第一修正运动矢量和第二修正运动矢量,相互独立的意思是指第一修正运动矢量、第二修正运动矢量都是独立获取的,或者说第一修正运动矢量与第二修正运动矢量并没有特定的关联关系,第一/第二修正运动矢量并不是对第二/第一修正运动矢量进行特定运算得到的,第一修正运动矢量、第二修正运动矢量可以相同,也可以不同。

子块的第一预测结果为利用当前块的最终运动矢量对子块进行预测而得到的。当前块的最终运动矢量是对帧间预测模式下得到的当前块的较优运动矢量,帧间预测模式可以是高级运动向量预测(Advanced Motion Vector Prediction,AMVP)模式、Merge模式,具体还可以分为常规模式、仿射模式、三角模式、HASH模式等,可以使用上述任意帧间预测模式获得当前块的最终运动矢量,在此不做限定。

S130:分别为每个子块选择预测代价最小的第二预测结果对应的修正运动矢量组合作为子块的最终修正运动矢量组合。

其中,第二预测结果可以由第一预测值和第二预测值加权平均得到,可以将第一预测值与第二预测值的差异作为预测代价,具体可以计算第一预测值与第二预测值的绝对误差和(Sum of Absolute Difference,SAD),得到预测代价。在其他实施方式中,也可以通过其他方式计算预测代价,如计算参考图像与原始图像的SAD等。

S140:利用所有子块的最终修正运动矢量组合进行修正。

其中,可以是使用最终修正运动矢量组合对当前块的最终运动矢量进行修正,然后用修正后的运动矢量进行预测得到预测值。

该实施方式中,修正运动矢量组合中的第一修正运动矢量和第二修正运动矢量是相互独立的,可以获得更多的修正运动矢量组合,进而得到更多的修正方案,能够提高最终修正方案的获取精度,也就能够提高预测准确度。

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

S201:获取当前块的第一预测结果。

利用帧间预测模式获取当前块的最终运动矢量(MV0),当前块为双向预测块,最终运动矢量包括第一指向运动矢量(MV1)和第二指向运动矢量(MV2),即MV0为{MV1,MV2}。获取第一指向运动矢量和第二指向运动矢量对应的第一参考帧ref1和第二参考帧ref2,分别在参考帧ref1、ref2上找到对应的第一参考块pre1和第二参考块pre2。分别利用第一指向运动矢量和第二指向运动矢量,采用双线性插值的方法获取当前块的第一预测值和第二预测值,对第一预测值和第二预测值进行加权平均得当前块的预测值(第一预测结果)。在该实施方式中,以前向后向双向预测为例进行说明,即第一指向运动矢量为前向运动矢量,第二指向运动矢量为后向运动矢量,第一参考帧为前向参考帧,第二参考帧为后向参考帧,但不限于此,在其他实施方式中,也可以是同一方向的两个参考帧。

S202:对当前块进行划分得到至少一个子块。

其中,对应地,参考块也被划分成多个子块。

其中,若当前块的尺寸小于预设值,可以不对当前块进行子块划分,直接对当前块进行后续操作。即子块数量为一个时,当前块为子块。

可采用以下划分方式中的至少一种将当前块划分成至少一个子块:

在一实施方式中,采用固定子块尺寸的方式进行划分。不论当前块是什么尺寸,均统一划分为w*h大小的子块,w为子块的宽,h为子块的高,w和h可以相等,也可以不等。可设定子块尺寸范围,如设置4<=w,h<=128。如果当前块的宽小于w或当前块的高小于h,则不再对当前块进行子块划分,直接对当前块进行运动矢量修正操作。例如,在一具体实施例中,设子块尺寸为8*4,那么对于尺寸为4*4、8*4、4*8等的当前块,则不再进行子块划分;对于尺寸为16*16的当前块,可划分为8个8*4的子块。

在一实施方式中,按照指定范围内的子块尺寸和固定的子块排列方式以及子块形状对当前块进行划分得到至少一个子块。可根据当前块的尺寸,动态调整子块的尺寸。不同尺寸的当前块,对应的划分出的子块的尺寸也可能不同。

其中,若当前块为正方形块,则将当前块划分成多个大小相同的正方形子块;若当前块为非正方形块,则将当前块划分成多个以当前块短边为边长的正方形子块。同样地,可设定子块尺寸范围,如可设置子块最小为n0*n0,最大为n1*n1,n0<n1;那么实际划分时,子块的尺寸n*n不能超出这个范围,即n0<=n<=n1,n0、n、n1均为大于等于0的整数。

如在一具体实施例中,设最小子块大小为4*4,最大子块大小为32*32。那么对于正方形的当前块,4*4的块不进行划分,8*8的块可划分为4个4*4子块,16*16的块可划分为4个8*8子块,以此类推,直到128*128的块;由于子块最大只能32*32,所以只能分割为16个32*32的子块。对于非正方形的当前块,4*N、N*4(N>4)的块划分为若干4*4的子块,8*N、N*8(N>8)的块划分为若干8*8的子块,以此类推,直到64*N,N*64(N>64)的块,由于子块最大只能32*32,所以只能分割为若干个32*32的子块。

其中,若当前块为正方形块,则将当前块划分成多个正方形子块,多个正方形子块的尺寸可相同也可不同;若当前块为非正方形块,则将当前块划分成多个与当前块具有相同宽高比的非正方形子块。同样地,可设定子块尺寸范围,如可设置子块尺寸最小为w0*h0,最大为w1*h1,w0<w1,h0<h1,那么实际划分时子块的尺寸w*h不能超出这个范围,即w0<=w<=w1,h0<=h<=h1,所有参数都为大于等于0的整数。该种划分方式下,所得子块的形状与当前块形状一致,子块与当前块的相关性会更好。

如在一具体实施例中:设最小子块大小为8*8,最大子块大小为16*16,且对正方形块是划分为4个相同大小的正方形子块,对非正方形块是划分为4个相同大小且宽高比和当前块一致的非正方形子块。那么对于正方形的当前块,4*4和8*8的块可不进行划分,16*16的块划分为4个8*8的子块,32*32的块划分为4个16*16的子块,但到了64*64的块,由于子块最大只能16*16,所以只能分割为16个16*16的子块。对于非正方形的当前块,4*N、N*4、8*N、N*8的块可不进行划分,如16*32的块可划分为4个8*16的块,32*16的块可划分为4个16*8的块,以此类推,直到128*64的块,由于子块最大只能16*16,所以只能分割为64个16*8的子块。

以上,提供了多种子块划分方式,对子块的划分更加灵活,可匹配不同的计算复杂度,对应地,也会得到多种修正方案,可使预测更加准确,提高预测精度。

S203:获取修正运动矢量组合。

每个修正运动矢量组合包括相互独立的第一修正运动矢量和第二修正运动矢量。可以是第一修正运动矢量在第一搜索范围独立搜索得到的,第二修正运动矢量在第二搜索范围独立搜索得到的。独立搜索是指在搜索获取一修正运动矢量时跟另一修正运动矢量无关,或者说两个修正运动矢量的搜索互不相关,互不影响。

其中,可以是在修正运动矢量作用的参考帧中的参考块附近进行搜索获取修正运动矢量,搜索范围用于限定搜索区域的边界,如可以是以参考块的顶点(左上角像素所在的点)为中心的N*M像素范围,N和M相同或不同,当前不限于此,还可以是以参考块的中心点、右下角点等为原点的像素范围,在此不做限定。参考块为当前块在修正运动矢量作用的参考帧中对应的块,搜索时,可以按照预定顺序遍历搜索范围内的所有像素点,获取多个第一/第二修正运动矢量,进而得到多个修正运动矢量组合。

在一实施方式中,第一搜索范围与第二搜索范围均为预设的第一范围;第一搜索范围与第二搜索范围可以相同也可以不同,在此不做限定。如第一搜索范围与第二搜索范围都是5*5像素区域,也可以是第一搜索范围为5*5像素区域,第二搜索范围为9*9像素区域。

在一实施方式中,第一搜索范围与第二搜索范围中的一个为预设的第二范围,另一个为利用第一距离和第二距离对第二范围进行调整而得到的第三范围。第一距离为第一参考帧与当前帧之间的距离,第二距离为第二参考帧与当前帧之间的距离,第一参考帧为第一修正运动矢量作用的参考帧,第二参考帧为第二修正运动矢量作用的参考帧。即可以根据参考帧与当前帧之间的距离对搜索范围进行调整,且第一距离和第二距离可以相同也可以不同。对搜索范围进行调整时,仍然以参考块的顶点为中心,只是改变了范围边界的大小,即中心点位置保持不变。另外,还可以设置搜索范围的上限,若调整后的搜索范围大于了设置的最大搜索范围,则将设置的最大搜索范围作为最终的搜索范围,即第三范围为调整范围与预设最大范围中较小的一个。

其中,可以设定当前帧与参考帧之间的距离较近的修正运动矢量的搜索范围为预设的范围,然后对这个搜索范围进行扩大得到当前帧与参考帧之间的距离较远的修正运动矢量的搜索范围,即,第一距离小于第二距离时,第一搜索范围为第二范围,第二搜索范围为第三范围;第二距离小于第一距离时,第一搜索范围为第三范围,第二搜索范围为第二范围。

在一实施方式中,设调整后的范围为调整范围,第二范围为N*N,调整范围为M*M,且M为N与调整值之和,调整值为距离比例除以2的四舍五入结果的2倍,距离比例为第一距离和第二距离中较大的一个与较小的一个的比值。其中,调整值可以根据距离比例计算得到,且在计算过程中以四舍五入原则求整。

其中,调整值为func(D1/D0),D1为第一距离和第二距离中较大的一个,D0为第一距离和第二距离中较小的一个。

当2*i≤D1/D0<2*(i+1)-1时,func(D1/D0)=2*i;

当2*(i+1)-1≤D1/D0<2*(i+1)时,func(D1/D0)=2*(i+1),i为大于等于0的整数。

例如,在一具体实施例中,设默认搜索范围为5*5,最大搜索范围为9*9,D0>D1,且D0=5,D1=2。那么第一修正运动矢量搜索范围是5*5,第二修正运动矢量的搜索范围计算如下:因为D1/D0=2.5,此时i=1,所以func(D1/D0)=2,搜索范围为7*7区域,搜索区域示意图请参阅图3所示。

确认后搜索范围后,分别在搜索范围内按照预定顺序遍历搜索范围内的所有像素点,获取多个修正运动矢量组合。

在一具体实施例中,请参阅图4,图4是本申请另一实施方式中修正运动矢量的搜索区域示意图。分别在参考帧ref1、ref2中,以参考块pre1、pre2中某一子块(图中实线框所示)的顶点A为中心确定第一搜索范围N*N(图中以N=5为例进行示意)和第二搜索范围M*M,第一搜索范围N*N和第二搜索范围M*M可以使用上述实施方式中所述的任意一种方法获得。在第一搜索范围内按照预定顺序遍历搜索所有像素点,如可按照从左到右,从上到下的光栅扫描顺序遍历所有像素点,得到P个前向修正运动矢量(ΔMV1),ΔMV1为顶点A指向搜索像素点的向量,如图4中所示,ΔMV1为A指向C的向量。同样地,在第二搜索范围内按照预定顺序遍历搜索所有像素点,得到Q个后向修正运动矢量(ΔMV2)。组合ΔMV1、ΔMV2得P*Q个修正运动矢量组合ΔMV0,ΔMV0为{ΔMV1,ΔMV2}。

S204:分别利用多个修正运动矢量组合对每个子块的第一预测结果进行修正得到每个子块的多个第二预测结果。

获取每个子块的最终运动矢量和第一预测结果。子块的第一预测结果是利用每个子块的最终运动矢量预测得到的,每个子块的最终运动矢量是利用当前块的最终运动矢量得来的,每个子块的最终运动矢量与当前块的最终运动矢量相同。

分别利用多个修正运动矢量组合{ΔMV1,ΔMV2}对子块的最终运动矢量{MV1,MV2}进行修正,得多个修正后的运动矢量{MV1+ΔMV1,MV2+ΔMV2},在其他实施方式中,修正后的运动矢量也可以是{MV1-ΔMV1,MV2-ΔMV2}。

分别利用多个修正后的运动矢量{MV1+ΔMV1,MV2+ΔMV2}计算子块的前向预测值和后向预测值,对前向预测值和后向预测值进行加权平均得子块的预测值(第二预测结果)。

上述实施方式中,计算获取子块的第二预测结果时,是先将当前块划分成多个子块,获取子块的最终运动矢量,利用多个子块的修正运动矢量组合对子块的最终运动矢量进行修正得多个修正后的子块的运动矢量,进而得多个子块的第二预测结果。

在另一实施方式中,也可以是在搜索范围内获取当前块的修正运动矢量组合,获取方式与子块的获取方式相同;利用当前块的修正运动矢量组合对当前块整体块的最终运动矢量进行修正,得多个修正后的运动矢量。然后对当前块进行划分,得到多个子块,每个子块也会有多个修正后的运动矢量,利用多个修正后的运动矢量得多个子块的第二预测结果。即可以是先划分子块,对每个子块进行修正;也可以是先对当前块整块进行修正,再划分子块,计算每个子块的预测代价。两种方式实质结果等价,在此对步骤执行方式不做限定。

S205:分别计算每个子块的预测代价。

基于绝对误差和(Sum of Absolute Difference,SAD)算法,获取子块的前向预测值与后向预测值的差异SAD,进而得子块的预测代价。

S206:选择预测代价最小的第二预测结果对应的修正运动矢量组合作为子块的最终修正运动矢量组合;利用所有子块的最终修正运动矢量组合对子块的运动矢量进行修正。

S207:分别利用修正后的运动矢量计算子块的预测值,进而得当前块的预测值(第二预测结果)。通过对运动矢量进行修正,能够提高预测的准确度。

上述实施方式中,是分别计算每一种修正运动矢量组合对应的预测结果的预测代价;在其他实施方式中,还可以分别单独计算每一前向修正运动矢量对应的前向预测值,每一后向修正运动矢量对应的后向预测值;对前向预测值和后向预测值进行排列组合,计算预测代价,选取预测代价最小的预测值组合对应的修正运动矢量组合作为最终修正运动矢量组合。即可以先对修正运动矢量进行组合得预测值,也可以先计算得预测值再对预测值进行组合;两种方式实质等价,在此对步骤执行方式不做限定。

请参阅图5,图5是本申请又一实施方式中运动矢量修正方法的流程示意图。在该实施方式中,运动矢量的修正方法包括如下步骤:

S410:对当前块进行划分得到至少一个子块。

可根据当前块的尺寸将当前块划分为多个尺寸相同/不同的子块,同一当前块可以有多种子块划分方式。

S420:分别利用多个修正运动矢量组合对每个子块的第一预测结果进行修正得到每个子块的多个第二预测结果。

其中,每个修正运动矢量组合包括第一修正运动矢量和第二修正运动矢量,第一修正运动矢量和第二修正运动矢量中的一个是从预设搜索范围中搜索得到的,另一个是利用第一距离和第二距离对搜索得到的运动矢量进行缩放而得到的,第一距离为第一参考帧与当前帧之间的距离,第二距离为第二参考帧与当前帧之间的距离,第一参考帧为第一修正运动矢量作用的参考帧,第二参考帧为第二修正运动矢量作用的参考帧,子块的第一预测结果为对子块利用当前块的最终运动矢量预测而得到的;

S430:分别为每个所述子块选择预测代价最小的所述第二预测结果对应的修正运动矢量组合作为所述子块的最终修正运动矢量组合;

S440:利用所有所述子块的所述最终修正运动矢量组合进行修正。

该实施方式中,第一距离和第二距离不同,一个修正运动矢量是对另一修正运动矢量进行缩放得到的,能够减少获取修正运动矢量的搜索次数,同时还根据当前帧与参考帧之间的距离对修正运动矢量进行缩放,相比直接采用两个相同的修正运动矢量,准确度更高。

在一实施方式中,第一距离小于所述第二距离时,可从预设搜索范围中搜索得到第一修正运动矢量,第二修正运动矢量为第一修正运动矢量与缩放系数的乘积,缩放系数为第二距离L与第一距离S的比值即SCALEΔMV=ΔMV*L/S。在另一实施方式中,第一距离小于第二距离时,还可以是预设搜索范围中搜索得到第二修正运动矢量,第一修正运动矢量为第二修正运动矢量与缩放系数的乘积,缩放系数为第一距离与第二距离的比值,即SCALEΔMV=deltaMV*S/L。即可以以距离较短的一侧为基准,也可以以距离较长的一侧为基准,在此不做限定。

在一具体实施例中,设某个前向参考帧和当前帧的距离为S=1,某个后向参考帧和当前帧的距离为L=2,且以POC距离较短一侧(即前向)为基准,搜索获取前向修正运动矢量,设前向参考帧中当前参考子块搜索到某个点的ΔMV值为(2,3),那么后向参考帧中当前参考子块的ΔMV为SCALEΔMV=(4,6)。

该实施方式所述的运动矢量修正方法,只是改变了修正运动矢量的获取方式,其余步骤跟上述实施方式中相同,具体请参阅上述实施方式的描述,在此不再赘述。

在一实施方式中,上述任意实施方式所述的运动矢量修正方法可用于解码端运动矢量修正(decoder-side motion vector refinement,DMVR)中,或者说可以是对现有DMVR方法的改进。

请参阅图6,图6是本申请一实施方式中预测方法的流程示意图,本实施方式中,预测方法包括以下步骤:

S510:获取当前块的第一预测结果。

其中,当前块的第一预测结果是利用当前块的最终运动矢量预测得到的。当前块的最终运动矢量是帧间预测模式下得到的当前块的最终运动矢量,帧间预测模式可以是高级运动向量预测(Advanced Motion Vector Prediction,AMVP)模式、Merge模式,具体还可以分为常规模式、仿射模式、帧内块拷贝(Intra Block Copy,IBC)模式、三角模式、HASH模式等,可以使用上述任意帧间预测模式获得当前块的最终运动矢量,在此不做限定。

S520:利用运动矢量修正方法对第一预测结果进行修正得第二预测结果,将所述第二预测结果作为所述当前块的预测结果。

其中,可利用上述实施方式中的任意一种方式对第一预测结果进行修正。

本实施方式所提供的预测方法,利用如上任一实施方式的运动矢量方法对第一预测结果进行修正,能够提高预测准确度。

请参阅图7,图7是本申请一实施方式中编码方法的流程示意图,该方法可由编码器来执行。本实施方式中,编码方法包括以下步骤:

S610:获取当前块的预测结果。

其中,当前块的预测结果是利用上述任一实施方式所述的运动矢量修正方法修正后的。

S620:基于当前块的预测结果对当前块进行编码。

本实施方式所提供的编码方法,通过利用如上任一实施方式的运动矢量修正方法对当前块的预测结果进行修正,使所得运动矢量更加准确,有利于进一步去除空间冗余,提高帧间编码的压缩率。

请参阅图8,图8是本申请一实施方式中运动矢量修正装置的结构示意图,该实施方式中提供一种运动矢量修正装置70,该运动矢量修正装置包括划分模块710、预测模块720、选择模块730和修正模块740。

其中,划分模块710用于对当前块进行划分得到至少一个子块;预测模块720用于分别利用多个修正运动矢量组合对每个子块的第一预测结果进行修正得到每个子块的多个第二预测结果,每个修正运动矢量组合包括相互独立的第一修正运动矢量和第二修正运动矢量,子块的第一预测结果为对子块利用当前块的最终运动矢量预测而得到的;选择模块730用于分别为每个子块选择预测代价最小的第二预测结果对应的修正运动矢量组合作为子块的最终修正运动矢量组合;修正模块740用于利用所有子块的最终修正运动矢量组合进行修正。

在一实施方式中,第一修正运动矢量是在第一搜索范围独立搜索得到的,第二修正运动矢量是在第二搜索范围独立搜索得到的。

在一实施方式中,第一搜索范围与第二搜索范围均为预设的第一范围。

在一实施方式中,第一搜索范围与第二搜索范围中的一个为预设的第二范围,另一个为利用第一距离和第二距离对第二范围调整而得到的第三范围,第一距离为第一参考帧与当前帧之间的距离,第二距离为第二参考帧与当前帧之间的距离,第一参考帧为第一修正运动矢量作用的参考帧,第二参考帧为第二修正运动矢量作用的参考帧。

在一实施方式中,第一距离小于第二距离时,第一搜索范围为第二范围,第二搜索范围为第三范围;第二距离小于第一距离时,第一搜索范围为第三范围,第二搜索范围为第二范围。

其中第三范围为调整范围与预设最大范围中较小的一个,第二范围为N*N,调整范围为M*M,且M为N与调整值之和,调整值为距离比例除以2的四舍五入结果的2倍,距离比例为第一距离和第二距离中较大的一个与较小的一个的比值。

在一实施方式中,划分模块710具体用于按照固定的子块尺寸对当前块进行划分得到至少一个子块;或按照指定范围内的子块尺寸和固定的子块排列方式以及子块形状对当前块进行划分得到至少一个子块。

在一实施方式中,当前块为长方形时,子块形状为正方形或与当前块宽高比相同的长方形。

在一实施方式中,满足子块尺寸在指定范围的情况下,正方形的子块的边长为当前块短边的长度。

在一实施方式中,预测模块730具体用于分别利用多个修正运动矢量组合对当前块的最终运动矢量进行修正,得到多个修正后的运动矢量;分别利用多个修正后的运动矢量对每个子块进行预测,得到每个子块的多个第二预测结果。

请参阅图9,图9是本申请另一实施方式中运动矢量修正装置的结构示意图,该实施方式中提供一种运动矢量修正装置80,该运动矢量修正装置包括划分模块810、预测模块820、选择模块830和修正模块840。

其中,划分模块810用于对当前块进行划分得到至少一个子块;预测模块820用于分别利用多个修正运动矢量组合对每个子块的第一预测结果进行修正得到每个子块的多个第二预测结果,每个修正运动矢量组合包括第一修正运动矢量和第二修正运动矢量,第一修正运动矢量和第二修正运动矢量中的一个是从预设搜索范围中搜索得到的,另一个是利用第一距离和第二距离对搜索得到的运动矢量进行缩放而得到的,第一距离为第一参考帧与当前帧之间的距离,第二距离为第二参考帧与当前帧之间的距离,第一参考帧为第一修正运动矢量作用的参考帧,第二参考帧为第二修正运动矢量作用的参考帧,子块的第一预测结果为对子块利用当前块的最终运动矢量预测而得到的;选择模块830用于分别为每个子块选择预测代价最小的第二预测结果对应的修正运动矢量组合作为子块的最终修正运动矢量组合;修正模块840用于利用所有子块的最终修正运动矢量组合进行修正。

在一实施方式中,第一距离小于第二距离时,从预设搜索范围中搜索得到第一修正运动矢量,第二修正运动矢量为第一修正运动矢量与缩放系数的乘积,缩放系数为第二距离与第一距离的比值。

在一实施方式中,第一距离小于第二距离时,从预设搜索范围中搜索得到第二修正运动矢量,第一修正运动矢量为第二修正运动矢量与缩放系数的乘积,缩放系数为第一距离与第二距离的比值。

请参阅图10,图10是本申请一实施方式中编码器的结构示意图,该实施方式中,编码器90包括处理器910和存储器920,处理器910耦接存储器920,存储器920用于存储程序,处理器910用于执行程序以实现上述的任一种运动矢量修正、预测、编码方法。

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

请参阅图11,图11是本申请实施方式中存储装置的结构示意图,该实施方式中,存储装置100存储有程序1010,程序1010被执行时能够实现上述任一实施方式的运动矢量修正、预测、编码方法。

其中,该程序1010可以以软件产品的形式存储在上述存储装置100中,包括若干指令用以使得一个设备或处理器执行本申请各个实施方式方法的全部或部分步骤。

存储装置100是计算机存储器中用于存储某种不连续物理量的媒体。而前述的存储装置100包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

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

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

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

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。

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

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:视频编码方法、装置、计算机可读存储介质和计算机设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类