版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
本申请涉及图像处理领域,并且更为具体地,涉及一种图像处理的方法与装置。
背景技术:
视频编码帧间预测的大致思想为:利用视频相邻帧之间的时域相关性,使用先前已经编码的重构帧作为参考帧,通过运动估计和运动补偿的方法对当前帧进行预测,从而去除视频的时间冗余信息。帧间预测的大致流程包括运动估计(motionestimation,me)与运动补偿(motioncompensation,mc)。当前帧的当前编码块在参考帧中寻找最相似块作为当前块的预测块,当前块与其相似块之间的相对位移为运动矢量(motionvector,mv)。运动估计的过程就是将当前帧的当前编码块在参考帧中经过搜索、比较后得到运动矢量的过程。运动补偿就是利用mv和参考帧得到预测帧的过程。运动补偿得到的预测帧可能和原始的当前帧有一定的差别,因此需要将预测帧和当前帧的差值(残差)经过变换、量化等过程之后传递到解码端,除此之外还需要将mv和参考帧的信息传递到解码端。解码端通过mv、参考帧、以及预测帧和当前帧的差值,可以重构出当前帧。
由于自然物体运动的连续性,物体在相邻两帧之间的运动矢量不一定刚好是整数个像素单位。为了提高运动矢量的精度,亚像素精度被提出来。例如,在高性能视频编码(highefficiencyvideocoding,hevc)标准中,对亮度分量的运动估计采用1/4像素精度的运动矢量。但是在数字视频中并不存在分数像素处的样值,一般来说,为了实现1/k像素精度估计,必须将这些分像素点的值近似内插出来,也就是对参考帧的行方向和列方向进行k倍内插,即在插值之后的参考帧中进行搜索预测块。在对当前块进行插值的过程,需要用到当前块中的像素点及其相邻区域的像素点。
通常,在帧间预测过程中只考虑传统的运动模型(例如,平移运动)。然而在现实世界中,还有很多种运动形式,比如缩放、旋转、透视运动等无规则的运动。为了考虑上述多运动形式,在vtm-3.0中,引入了仿射运动补偿预测(affinemotioncompensationprediction,可简称为affine)技术。在affine模式中,图像块的仿射运动场可以通过两个控制点(四参数)或三个控制点(六参数)的运动矢量导出。
在affine模式中,可以对图像处理单元的运动估计采用1/4像素精度、1/16像素精度或其它亚像素精度的运动矢量。affine技术的图像处理单元是sub-cu(可称为子块),sub-cu的大小为4×4(单位:像素),这会使affine技术产生较大的带宽压力。
技术实现要素:
本申请提供一种图像处理的方法与装置,可以在一定程度上降低affine预测技术造成的带宽压力。
第一方面,提供一种图像处理的方法,所述方法包括:获取图像块的控制点的运动矢量cpmv;根据所述图像块的cpmv,获取所述图像块中子图像块的运动矢量,所述运动矢量为整像素精度。
第二方面,提供一种图像处理的装置,所述装置包括:第一获取单元,用于获取图像块的控制点的运动矢量cpmv;第二获取单元,用于根据所述第一获取单元获取的所述图像块的cpmv,获取所述图像块中子图像块的运动矢量,所述运动矢量为整像素精度。
第三方面,提供一种图像处理的装置,所述编码装置包括存储器和处理器,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,并且对所述存储器中存储的指令的执行使得所述处理器执行第一方面提供的方法。
第四方面,提供一种芯片,所述芯片包括处理模块与通信接口,所述处理模块用于控制所述通信接口与外部进行通信,所述处理模块还用于实现第一方面提供的方法。
第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时使得所述计算机实现第一方面或第一方面的任一可能的实现方式中的方法。
第六方面,提供一种包含指令的计算机程序产品,所述指令被计算机执行时使得所述计算机实现第一方面提供的方法。
本申请提供的方案,通过使作为图像处理单元的子图像块的运动矢量为整像素精度,可以使子图像块的运动补偿过程不涉及亚像素,从而在一定程度上可以降低affine预测技术产生的带宽压力。
附图说明
图1是视频编码架构的示意图。
图2是1/4像素插值的示意图。
图3(a)和图3(b)分别是四参数affine模型和六参数affine模型的示意图。
图4是affine运动矢量场的示意图。
图5是现有技术的affine模式与hevc模式所需参考像素点的对比图。
图6是根据本申请实施例的图像处理的方法的示意性流程图。
图7是根据本申请实施例的图像处理的方法的另一示意性流程图。
图8是根据本申请实施例的图像处理的方法的再一示意性流程图。
图9是根据本申请实施例的图像处理的装置的示意性流程图。
图10是根据本申请实施例的图像处理的装置的另一示意性流程图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
为了便于理解根据本申请实施例的方案,下面首先描述几个相关的概念。
1、帧间预测
如图1所示,视频编码框架主要包括帧内预测、帧间预测、变换、量化、熵编码、环路滤波几个部分。
本申请主要针对帧间预测(interprediction)部分进行改进。
帧间预测的大致思想是:利用视频相邻帧之间的时域相关性,使用重构帧作为参考帧,通过运动估计(motionestimation,me)和运动补偿(motioncompensation,mc)对当前帧进行预测,从而去除视频的时间冗余信息。
本文中提及的当前帧,在编码场景下,表示当前正在编码的帧,在解码场景下,表示当前正在解码的帧。
本文中提及的重构帧,在编码场景下,表示先前已经编码的帧,在解码场景下,表示先前已经解码的帧。
对于一帧图像,在编码过程中不会直接对整帧图像进行处理,通常将整帧图像划分为图像块进行处理。
作为示例,先将整帧图像划分成编码区域(codingtreeunit,ctu),例如ctu的大小为64×64或128×128(单位:像素),然后可以进一步地将ctu划分成方形或矩形的编码单元(codingunit,cu)。在编码过程中,对cu进行处理。
本文中提及的图像块的大小的单位均为像素。
帧间预测的大致流程如下。
针对当前帧中的当前图像块(下文简称为当前块),在参考帧中寻找最相似块作为当前块的预测块。当前块与相似块之间的相对位移称为运动矢量(motionvector,mv)。运动估计指的是,将当前帧的当前块在参考帧中经过搜索、比较后得到运动矢量的过程。运动补偿指的是,利用参考块与运动估计得到的运动矢量得到预测块的过程。
帧间预测的过程获得的预测块可能和原始的当前块有一定的差别,因此,需要计算预测块与当前块之间的差值,该差值可称为残差。对残差进行变换、量化、熵编码等处理之后,得到编码比特流。
在编码端,完成图像编码后,即熵编码得到的比特流之后,会将比特流以及编码模式信息,例如帧间预测模式、运动矢量信息等信息,进行存储或发送到解码端。
在解码端,获得熵编码比特流之后,先对该比特流进行熵解码,得到相应的残差;然后,根据解码得到的运动矢量等编码模式信息,获得预测块;最后,根据残差和预测块,得到当前块中各像素点的值,即重构出当前块,以此类推,重构出当前帧。
如图1所示,在编码过程中,还可以包括反量化和反变换等步骤。反量化指的就是与量化过程相反的过程。反变换指的就是与变换过程相反的过程。
帧间预测主要包括前向预测、后向预测、双预测等。其中,前向预测是利用当前帧的前一重构帧(可以称为历史帧)对当前帧进行预测。后向预测是利用当前帧之后的帧(可以称为将来帧)对当前帧进行预测。双预测可以是双向预测,即既利用“历史帧”也利用“将来帧”来对当前帧进行预测。双预测还可以是两个方向的预测,例如,利用两个“历史帧”来对当前帧进行预测,或者,利用两个“将来帧”来对当前帧进行预测。
2、亚像素精度运动估计
在实际场景中,由于自然物体运动的连续性,物体在相邻两帧之间的运动矢量不一定刚好是整数个像素单位,因此,需要将运动估计的精度提升到亚像素级别(也称为1/k像素精度)。例如,在hevc标准中,对亮度分量的运动估计采用1/4像素精度的运动矢量。
但在数字视频中并不存在1/k像素处的样值,通常,为了实现1/k像素精度的运动估计,将1/k像素点的值近似内插出来,换言之,对参考帧的行方向和列方向进行k倍内插,在插值之后的图像中进行搜索。对当前块进行插值的过程,需要用到当前块中的像素点及其相邻区域的像素点。
作为示例,1/4像素插值的过程如图2所示。对于一个大小为8×8、4×8、4×4或8×4的图像块,会用到该图像块外部左侧的3个像素点和右侧的4个像素点来产生内插点的像素值。如图2所示,对于一个大小为4×4的图像块,a0,0和d0,0为1/4像素点,b0,0和h0,0为半像素点,c0,0和n0,0为3/4像素点。假如说当前块为2×2的块,a0,0~a1,0,a0,0~a0,1围成的2×2块。为了计算这个2×2的块中所有的内插点,需要用到2×2外部的一些点,包括左边3个,右边4个,上边3个,下边4个。
3、仿射运动补偿预测技术(affinemotioncompensatedprediction,下文简称为affine)。
affine为一种帧间预测技术。
在hevc标准中,帧间预测过程只考虑了传统的运动模型(例如,平移运动)。然而在现实世界中,还有很多种运动形式,比如缩放、旋转、透视运动等无规则的运动。为了考虑到上述运动形式,在vtm-3.0中,引入了affine技术。
如图3所示,一个affine模式的运动场可以通过两个控制点(四参数)(如图3(a)所示)或三个控制点(六参数)(如图3(b)所示)的运动矢量导出。
下文中,将控制点的mv(controlpointmotionvector)简称为cpmv。
affine的处理单元不是cu,而是将cu划分之后得到的子块(sub-cu),每个sub-cu的大小为4×4。在affine模式,每个sub-cu具有一个mv。可以理解到,不同于普通cu,affine模式的cu不只有一个mv,一个cu中具有多少个sub-cu,这个cu就具有多少个mv。
作为示例,一个cu中的sub-cu的mv通过如图3中所示的两个控制点或三个控制点的cpmv计算导出。例如,对于四参数的affine运动模型,位于(x,y)位置的sub-cu的mv通过以下公式计算得到:
再例如,对于六参数的affine运动模型,位于(x,y)位置的sub-cu的mv通过以下公式计算得到:
其中(mv0x,mv0y)为左上角控制点的mv,(mv1x,mv1y)为右上角控制点的mv,(mv2x,mv2y)为左下角控制点的mv。上述公式中的w表示sub-cu的所在cu的宽,h表示sub-cu的所在cu的高。
经过上述公式(1)的计算,一个cu中运动矢量的示意图如图4所示,每个方格代表4×4大小的sub-cu。在上述公式计算之后的所有sub-cu的mv都会转换成1/16像素精度的表示,也就是说sub-cu的mv最高精度是1/16像素。
在计算得到每一个sub-cu的mv之后,经过运动补偿的过程得到每一个sub-cu的预测块。色度分量和亮度分量的sub-cu的大小都是4×4,色度分量4×4块的运动矢量由其对应的四个4×4的亮度分量运动矢量平均得到。
在affine模式的编码过程中,在码流中写入cpmv信息,不需要写入每个sub-cu的mv信息。
4、自适应运动矢量精度(adaptivemotionvectorresolution,amvr)
amvr技术可以使得cu具有整像素精度和亚像素精度的运动矢量。整像素精度例如可以为1像素精度、2像素精度等。亚像素精度例如可以为1/2像素精度、1/4像素精度、1/8像素精度或1/16像素精度等。
例如,对于每一个采用affineamvr技术的cu(有些情况下可能cu不采用affineamvr),在编码端自适应地决策其对应的mv精度,并将决策的结果写进码流传递到解码端。
affineamvr技术中提及的整像素精度或亚像素精度指的是cpmv的像素精度,而不是sub-cu的像素精度。
对于整像素的cpmv,cu的运动估计的过程都是整像素的过程,但是经过上述公式(1)或公式(2)计算之后得到的sub-cu的mv可能是1/4像素精度或其它亚像素精度。
如果sub-cu的mv是亚像素精度,则sub-cu的运动补偿过程会涉及到亚像素,且由于sub-cu的大小为4×4,这会使得affine预测过程产生较大的带宽压力。
申请人在vvc最新的参考软件vtm-4.0上,选取官方通测数据作为测试序列,进行了仿真,仿真结果如图5所示。
如图5所示,左侧方框表示hevc最坏情况(1/4像素精度的mv)为8×8的双向帧间预测cu,所需的参考像素点的个数为(8 7)×(8 7)×2=450。右侧方框表示vvc的affine模式下最坏情况(1/16和1/4像素精度mv)下的4×4双向帧间预测的cu,所需参考像素点的个数为(4 7)×(4 7)×2×4=968。
从图5可知,现有的affine模式,相比于hevc,增加了115%的参考像素点,造成了较大的带宽压力。
针对上述问题,本申请提出一种图像处理的方法与装置,可以在一定程度上减小affine技术产生的带宽压力。
本申请适用于数字视频编码技术领域,具体用于视频编解码器的帧间预测部分。本申请可以应用于符合国际视频编码标准h.264/hevc和中国avs2标准等的编解码器,以及符合下一代视频编码标准vvc或avs3等的编解码器。
本申请可以应用于视频编解码器的帧间预测部分,也就是说,根据本申请实施例的图像处理的方法可以由编码装置执行,也可以由解码装置执行。
图6为本申请提供的图像处理的方法600的示意性流程图,该方法600包括如下步骤。
610,获取图像块的控制点的运动矢量(cpmv)。
下文将描述获取图像块的cpmv的方式,这里暂不描述。
620,根据该图像块的cpmv,获取图像块中子图像块的运动矢量,该运动矢量为整像素精度。
换句话说,基于该图像块的cpmv,获取该图像块中的子图像块的运动矢量,并使得该子图像块的运动矢量的像素精度为整像素精度。
本申请中提及的子图像块表示图像处理或视频处理的处理单元。该子图像块的宽和/或高可以小于8像素。例如,子图像块的大小为4×4(像素)。
子图像块可以是通过划分图像块得到的块。可以理解到,若图像块与子图像块的大小相同,则子图像块可以认为就是图像块本身。
子图像块可以是方形的块、例如大小为4×4或8×8的块,也可以是矩形的块,例如大小为2×4或4×8的块。
本申请中提及的图像块的大小可以为16×16、16×8、16×4、8×16、4×8、8×8、8×4、4×8等其它尺寸。
应理解,作为处理单元的子图像块的运动矢量为整像素精度,因此,子图像块的运动补偿过程不会涉及到亚像素,从而可以降低视频帧间预测过程产生的带宽压力。
根据图像块的cpmv,获取图像块中子图像块的运动矢量的过程可以包括:根据该图像块的两个或三个控制点的运动矢量,计算获得子图像块的运动矢量,并使得所获得的子图像块的运动矢量的像素精度为整像素精度。
作为示例,可以根据前文描述的公式(1)或公式(2),计算得到子图像块的运动矢量。
可选地,在一些实施例中,如果直接基于图像块的cpmv计算得到的子图像块的运动矢量的像素精度为整像素精度,则这个运动矢量就是本申请要获取的子图像块的运动矢量。
例如,作为一种可能的实现方式,采用一种算法,根据图像块的cpmv计算子图像块的运动矢量,该算法可以保证计算出的子图像块的运动矢量的像素精度为整像素。
可选地,在一些实施例中,如果直接基于图像块的cpmv,计算得到的子图像块的运动矢量的像素精度为亚像素精度,例如,1/4像素精度、1/8像素精度或1/16像素精度,则还需要对当前计算得到的运动矢量进行处理,使其由亚像素精度变为整像素精度。
可选地,步骤620包括如下步骤1)和步骤2)。
1)根据图像块的cpmv,计算子图像块的第一运动矢量,第一运动矢量为亚像素精度。
例如,根据前文描述的公式(1)或公式(2),基于cpmv计算子图像块的第一运动矢量,计算得到的第一运动矢量的像素精度为亚像素。
2)将第一运动矢量处理为整像素精度的第二运动矢量。
作为步骤2)的一种可能的实现方式:根据子图像块的第一运动矢量,获取第二运动矢量,使得第二运动矢量的终点为与第一运动矢量的终点最接近的整像素点。
例如,最接近的整像素点可以是第一运动矢量的终点的上方、下方、左方或右方的整像素点。
作为一个示例,通过如下公式,根据子图像块的第一运动矢量(mv1x,mv1y),计算得到该子图像块的第二运动矢量(mv2x,mv2y)。
若mv1x>=0,mv2x=((mv1x (1<<(shift-1)))>>shift)<<shift;
若mv1x<0,mv2x=-((-mv1x (1<<(shift-1)))>>shift)<<shift;
若mv1y>=0,mv2y=((mv1y (1<<(shift-1)))>>shift)<<shift;
若mv1y<0,mv2y=-((-mv1y (1<<(shift-1)))>>shift)<<shift,
式(3)。
其中,shift的取值与编码软件平台中运动矢量的存储精度有关。例如,在当前的vtm-4.0参考软件中,运动矢量的存储精度为1/16精度,则可以将shift的取值设置为4。
作为另一个示例,通过如下公式,根据子图像块的第一运动矢量(mv1x,mv1y),获得该子图像块的第二运动矢量(mv2x,mv2y)。
若mv1x>=0,mv2x=(mv1x>>shift)<<shift;
若mv1x<0,mv2x=-(((-mv1x)>>shift)<<shift);
若mv1y>=0,mv2y=(mv1y>>shift)<<shift;
若mv1y<0,mv2y=-(((-mv1y)>>shift)<<shift),式(4)。
其中,shift的含义与前文描述的shift的含义一致。
公式(3)和公式(4)中的“<<”表示左移,“>>”表示右移。
需要说明的是,本申请对运动矢量的像素精度由亚像素级别转换为整像素级别的方式不作限定。例如,还可以根据其它可行的从亚像素到整像素的变换算法,根据第一运动矢量获得整像素精度的第二运动矢量。
当前affine技术中处理的最小cu(对应本申请实施例中的图像块)的大小为16×16时,在运动估计的过程中不会带来带宽的压力,因此,对运动估计过程不需要进行修改。这种情形下,图像块的cpmv的像素精度可能为整像素,也可能为亚像素。若图像块的cpmv的像素精度为亚像素,则根据图像块的cpmv计算得到的子图像块的运动矢量的像素精度也为亚像素;若图像块的cpmv的像素精度为整像素,根据图像块的cpmv计算得到的子图像块的运动矢量的像素精度也有可能为亚像素,例如,根据公式(1)或公式(2)计算得到的子图像块的运动矢量的像素精度可能是亚像素。
上述可知,现有的affine技术中,子图像块,即处理单元的运动矢量的像素精度可能为亚像素,这会导致运动补偿过程涉及亚像素,会增加affine技术的带宽压力。
本申请提供的方案,通过使作为图像处理单元的子图像块的运动矢量为整像素精度,可以使子图像块的运动补偿过程不涉及亚像素,从而在一定程度上可以降低affine预测技术产生的带宽压力。
应理解,通过扩大作为处理单元的子图像块的大小,在一定程度上也可以缓解带宽压力的问题,但是,这样会降低图像压缩性能。本申请通过将作为处理单元的子图像块的运动矢量处理为整像素精度,可以保证整像素精度的运动补偿,从而一方面可以解决带宽压力的问题,另一方面也可以保证较好的图像压缩性能。
可以根据本申请提供的方案,对现有的affine技术进行改进,即将affine模式下的sub-cu的运动矢量处理为整像素精度,从而可以降低affine技术产生的带宽压力。
除了可以应用于affine技术之外,本申请提供的方案也可以应用于将来可能出现的其它类似的技术中,例如,运动矢量的像素精度包括整像素精度与亚像素精度,且图像处理单元的尺寸较小,例如,4×4。
应理解,本申请提供的方案,可用于提升压缩视频质量,提升编解码器的硬件友好性,对广播电视、电视会议、网络视频等视频的压缩处理具有重要意义。
可选地,在一些实施例中,本申请实施例提供的方法还包括:将该图像块的cpmv处理为整像素精度。
本实施例可以保证图像块的cpmv为整像素精度。
下文将描述将该图像块的cpmv处理为整像素精度的实施方式。
可选地,如图7所示,在一些实施例中,步骤610包括如下步骤611、步骤612和步骤613。
611,获取该图像块的运动信息候选列表。
例如,获取该图像块的空域和/或时域邻近块的运动矢量,基于这些邻近块的运动矢量,构建该图像块的运动信息候选列表。
612,将该运动信息候选列表中的运动矢量处理为整像素精度。
例如,可以采用前文描述的公式(3)或公式(4),将该运动信息候选列表中的运动矢量处理为整像素精度。
邻近块指的是用于构建该图像块的运动信息候选列表的邻近块,例如,时域和/或空域上的邻近块。本申请对于确定邻近块的方式不作限定。
613,根据所述运动信息候选列表中处理为整像素精度的运动矢量,获取所述图像块的cpmv。
affine帧间预测模式可以分为affinemerge模式和affineinter模式。
图7所示实施例可以应用于affineinter模式,也可以应用于affinemerge模式。
可选地,在如图7所示的实施例中,该图像块的帧间预测方式为affinemerge模式。
在affinemerge模式下,可以从运动信息候选列表选择一个cpmv直接作为该图像块的cpmv。即步骤613包括:从该图像块的运动信息候选列表中选择一个cpmv作为该图像块的cpmv。
因为用于构建运动信息候选列表的邻近块的运动矢量被处理为整像素精度,因此,从运动信息候选列表选择cpmv直接作为该图像块的cpmv,可以保证该图像块的cpmv为整像素。
作为示例,affinemerge模式的帧间预测的大致流程包括如下步骤。在本示例中,以图像块为cu为例。
步骤1-1,从空域临近块和/或时域临近块获取邻近块的运动矢量(mv)。此过程会获取到affine模式的邻近块的mv以及传统模式的邻近块的mv,根据这些邻近块的mv组合得到cpmvs,并由这些cpmvs构建该cu的运动信息候选列表。
步骤1-2,将该cu的运动信息候选列表中的运动矢量,处理为整像素精度。
步骤1-3,从运动信息候选列表中选择一个组合(该组合中可能包含两个或者三个cpmv,代表两个控制点和三个控制点的cpmv),作为cu的cpmvs。
在affinemerge模式中,将运动信息候选列表中选出的cpmvs作为当前cu的cpmvs,不需要进行运动估计,也不存在affineinter模式中的mvd的概念(下文将描述)。也就是说,在affinemerge模式中,只需要将从运动信息候选列表中选出的cpmvs的索引(一个cu只需要写一个索引)写入码流,不需要传输mvd。
关于步骤1-1中提及的邻近块,该临近块的帧间预测模式可以是传统的帧间预测模式也可能是affine模式,因此从临近块获取到的mv可能是整像素精度也可能是亚像素精度。
本实施例通过将当前图像块的邻近块的运动矢量处理为整像素精度,从而可以保证该图像块的cpmv为整像素精度。
前文已述,图7所示的实施例也可以应用于affineinter模式。为了更好地理解本申请实施例,在描述将图7所示的实施例应用于affineinter模式的实施例之前,先描述一下affineinter模式的大致流程。
作为示例,affineinter模式的大致流程包括如下步骤。在本示例中,以图像块为cu为例。
步骤2-1,从空域临近块和/或时域临近块获取邻近块的运动矢量。此过程会获取到affine模式的邻近块的运动矢量以及传统模式的邻近块的运动矢量;根据所获取的运动矢量组合得到cpmvs,并由这些cpmvs构建该cu的运动信息候选列表。
步骤2-2,从步骤2-1构建的运动信息候选列表中选择一个组合(该组合中可能包含两个或者三个cpmv,代表两个控制点和三个控制点的cpmv),作为当前cu的预测mv(motionvectorprediction,mvp)(即当前cu的预测cpmvs)。
步骤2-3,以当前整个cu为单位进行运动估计,获取当前cu的cpmvs。
步骤2-4,计算步骤2-2选择的cpmvs与步骤2-3运动估计的cpmvs之间的差值,获得运动矢量差值(motionvectordifference,mvd)。
在affineinter模式中,需要将选择的cpmvs的索引,以及mvd写入码流。
在affineinter模式中,运动估计过程以cu(对应于本申请实施例中的图像块)为单位进行,运动补偿过程则以4×4的sub-cu(对应于本申请实施例中的子图像块)为单位进行。
关于步骤2-1中提及的邻近块,该临近块的帧间预测模式可以是传统的帧间预测模式也可能是affine模式,因此从临近块获取到的mv可能是整像素精度也可能是亚像素精度。
在affineinter模式中,编码端会进行cu的运动矢量的不同像素精度的选择,这个过程可以称为自适应运动矢量精度(adaptivemotionvectorresolution,amvr)决策。
amvr决策的像素精度本质上是mvd的像素精度,也就是cu的cpmvs的像素精度,而不是sub-cu的mv的像素精度。
在现有的affineinter模式中,amvr决策的像素精度的范围包括但不限于:1/16像素精度、1/8像素精度、1/4像素精度、1/2像素精度、1像素精度、2像素精度、4像素精度等。换句话说,cu可以有多种不同像素精度的cpmvs。例如,cu可以有整像素、1/4像素精度和1/16像素精度三种不同的cpmvs。
可选地,在图7所示的实施例中,图像块的帧间预测模式为affineinter模式,步骤611包括获取该图像块的运动信息候选列表;步骤612包括将该运动信息候选列表中的运动矢量处理为整像素精度;步骤613包括:从图像块的运动信息候选列表选择该图像块的预测cpmv,获得该图像块的mvd,该图像块的预测cpmv与该图像块的mvd,获得该图像块的cpmv。
如图8所示,在本实施例中,步骤610还可以包括步骤614,对该图像块进行n像素的运动矢量精度决策,n为正整数。
即对该图像块进行整像素精度的运动矢量精度决策(amvr决策)。
可以理解到,通过对图像块进行整像素精度的amvr决策,可以保证图像块的mvd的像素精度为整像素,也可以保证图像块的cpmv的像素精度为整像素。这样,可以保证图像块的运动估计过程中不涉及亚像素,从而可以在一定程度上降低带宽压力。
在本实施例中,使用affineamvr进行运动矢量精度决策时,不对所有像素精度进行决策,而是跳过其中1/m(m>1)像素精度的决策,也就是说,只进行n像素精度的决策。
应理解,在本实施例中,在将运动矢量精度索引写入码流时,由于像素精度可选项减少,因此写入码流的比特数(bit数)相应减少,甚至可以无需写入表示运动矢量精度索引的比特数。例如,原本像素精度可选项包括三种:整像素、1/4像素和1/16像素,则至少需要2比特的信息表示这三种像素精度,例如,采用“0”表示1/4像素,“10”表示1/16像素,“11”表示整像素。而在本实施例中,可以采用“0”表示整像素,因而只需在码流中写入1比特的数据,或者,可以通过协议约定好采用整像素精度,因而无需将运动矢量精度索引写入码流,这样节省信令开销,同时也可以减小带宽压力。
需要说明的是,在该图像块的帧间预测模式为affineinter模式的情况下,对该图像块进行n(n为正整数)像素的运动矢量精度决策的实施例与图8所示实施例可以组合实施,也可以解耦于图8所示实施例而独立实施。
可选地,如图8所示,在一些实施例中,该图像块的帧间预测模式为affineinter模式,步骤610包括:获取图像块的cpmv,对该图像块进行n像素的运动矢量精度决策,n为正整数。
应理解,通过对该图像块进行n像素的运动矢量精度决策,无论是否将该图像块的邻近块的运动矢量处理为整像素精度,都可以保证该图像块的cpmv为整像素精度。
还应理解,在affineinter模式中,通过将图像块的cpmv的像素精度处理为整像素精度,可以保证整像素精度的运动估计,有助于减少带宽压力。
上述可知,在affinemerge模式中,将图像块的cpmv的像素精度处理为整像素精度的实现方式为:将所述运动信息候选列表中的运动矢量处理为整像素精度。
在affineinter模式中,将图像块的cpmv的像素精度处理为整像素精度的实现方式为:将所述运动信息候选列表中的运动矢量处理为整像素精度,且对该图像块进行整像素精度的amvr决策。
或者,在affineinter模式中,将图像块的cpmv的像素精度处理为整像素精度的实现方式为:对该图像块进行整像素精度的amvr决策。
在上述涉及将邻近块的运动矢量处理为整像素精度的实施例中,可以采用上述公式(3)或公式(4)所示的方式,将邻近块的运动矢量处理为整像素精度。也可以采用其它可行的由亚像素转整像素的算法或方法,将邻近块的运动矢量处理为整像素精度。本申请对此不作限定。
可选地,在一些实施例中,当图像块的大小小于阈值时,将该图像块的cpmv处理为整像素精度。
该阈值可以根据实际需求确定。例如,该阈值为16像素。
例如,当图像块的高和/或宽小于16像素时,将该图像块的cpmv处理为整像素精度。
从前文描述的affineinter模式可知,在affineinter模式下,会进行以图像块为单位的运动估计。例如,当图像块的高和宽等于或大于16像素时,即使是亚像素精度的运动估计过程也不会造成较大的带宽压力,这种情形下,可以不对图像块的cpmv进行处理使之成为整像素精度。
但是,如果图像块的高和/或宽小于16像素,例如,图像块的大小为4×8、8×4、4×16或16×4,亚像素精度的运动估计过程可能会造成较大的带宽压力。这种情况下,可以将该图像块的cpmv处理为整像素精度。
可选地,在一些实施例中,图像块的预测模式为affineinter模式,且图像块的高和/或宽小于16像素,根据本申请实施例的方法还包括:对图像块进行整像素精度的amvr决策。
本实施例可以保证整像素精度的运动估计过程,从而可以避免造成较大的带宽压力。
此外,将满足高和/或宽小于16像素的条件的图像块的运动矢量精度索引写入码流时,由于像素精度可选项减少,可以减小写入码流的bit数。
例如,针对高和宽大于或等于16像素的cu,在整像素、1/4像素和1/16像素三种方式中选择amvr像素精度,例如,采用“0”代表1/4像素,“10”代表1/16像素,“11”代表整像素。针对高和/或宽小于16像素的cu,因为只有一种amvr像素精度可选项,因此不需要将amvr像素精度索引写入码流,例如可以通过协议约定采用整像素精度。
本申请实施例可以应用于不同种的帧间预测方式,例如,前向预测、后向预测或双预测。换言之,本申请实施例中提及的子图像块的帧间预测方式可以为如下任一种:前向预测、后向预测、双预测。
例如,子图像块的帧间预测方式为前向预测,则将前向预测过程所得的子图像块的运动矢量处理为整像素。
再例如,子图像块的帧间预测方式为后向预测,则将后向预测过程所得的子图像块的运动矢量处理为整像素。
再例如,子图像块的帧间预测方式为双预测,则将双预测过程所得的子图像块的运动矢量处理为整像素。
可选地,子图像块的帧间预测方式为双预测,但只针对双预测中的一个预测过程,采用本申请实施例提供的方法,将子图像块的运动矢量处理为整像素精度。
例如,该图像块的cpmv为双预测过程中前向预测所得的图像块的cpmv,或者,双预测过程中后向预测所得的该图像块的cpmv。
换句话说,例如,子图像块的帧间预测方式为双预测,则将双预测过程的一个预测过程所得的子图像块的运动矢量处理为整像素。这一个预测过程可以是双预测中的前向预测过程,或者是双预测中的后向预测过程。
上述可知,本申请提供的方案,通过使作为图像处理单元的子图像块的运动矢量为整像素精度,可以使子图像块的运动补偿过程不涉及亚像素,从而在一定程度上可以降低affine预测技术产生的带宽压力。
进一步地,通过将图像块的cpmv的像素精度处理为整像素精度,在affineinter模式中,可以保证整像素精度的运动估计,有助于减少带宽压力。
因此,本申请提供的方案,即可以降低帧间预测过程造成的带宽压力,同时也可以保证一定的压缩性能。
上文描述了本申请的方法实施例,下文将描述本申请的装置实施例。应理解,装置实施例的描述与方法实施例的描述相互对应,因此,未详细描述的内容可以参见前面方法实施例,为了简洁,这里不再赘述。
如图9所示,本申请实施例提供一种图像处理的装置900,该装置900包括如下单元。
第一获取单元910,用于获取图像块的控制点的运动矢量cpmv。
第二获取单元920,用于根据该第一获取单元910获取的该图像块的cpmv,获取该图像块中子图像块的运动矢量,该运动矢量为整像素精度。
本申请提供的方案,通过使作为图像处理单元的子图像块的运动矢量为整像素精度,可以使子图像块的运动补偿过程不涉及亚像素,从而在一定程度上可以降低affine预测技术产生的带宽压力。
可选地,在一些实施例中,该第二获取单元920用于:根据该图像块的cpmv,计算该子图像块的第一运动矢量,该第一运动矢量为亚像素精度;将该第一运动矢量处理为整像素精度的第二运动矢量。
可选地,在一些实施例中,该第二获取单元920用于,根据该子图像块的第一运动矢量,获取第二运动矢量,使得第二运动矢量的终点为与第一运动矢量的终点最接近的整像素点。
例如,第二获取单元920用于,通过公式(3)或公式(4),将第一运动矢量处理为像素精度为整像素的第二运动矢量。
可选地,在一些实施例中,该子图像块的高和/或宽为4像素。
可选地,在一些实施例中,该第一获取单元910用于:获取该图像块的运动信息候选列表,将该运动信息候选列表中的运动矢量处理为整像素精度;根据该运动信息候选列表中处理为整像素精度的运动矢量,获取该图像块的cpmv。
可选地,在一些实施例中,该装置900还包括:处理单元930,用于对该图像块进行n像素的运动矢量精度决策,n为正整数。
可选地,在一些实施例中,该图像块的高和/或宽小于16像素。
可选地,在一些实施例中,该子图像块的帧间预测方式为如下任一种:前向预测、后向预测、双预测。
可选地,在一些实施例中,该子图像块的帧间预测方式为双预测,其中,该图像块的cpmv为双预测过程中前向预测所得的该图像块的cpmv,或者,双预测过程中后向预测所得的该图像块的cpmv。
可选地,本实施例的图像处理的装置900可以为编码器,该装置900中还可以包括用于实现视频编码相关流程的功能模块。
可选地,本实施例的图像处理的装置900可以为解码器,该装置900中还可以包括用于实现视频解码相关流程的功能模块。
如图10所示,本发明实施例还提供一种图像处理的装置1000。该装置1000包括处理器1010与存储器1020,该存储器1020用于存储指令,该处理器1010用于执行该存储器1020存储的指令,并且对该存储器1020中存储的指令的执行使得,该处理器1010用于执行上文方法实施例的方法。
具体地,该编码装置1000还包括通信接口1030,用于与外部器件传输信号。
可选地,本实施例的图像处理的装置1000为编码器,通信接口1030用于从外部器件接收待处理的图像或视频数据。或者,通信接口1030还用于向解码端发送编码码流。
可选地,本实施例的图像处理的装置1000为解码器,通信接口1030用于从编码端接收编码码流。
本发明实施例还提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得,该计算机执行上文方法实施例的方法。
本发明实施例还提供一种包含指令的计算机程序产品,其特征在于,该指令被计算机执行时使得计算机执行上文方法实施例的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digitalvideodisc,dvd))、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
1.一种图像处理的方法,其特征在于,包括:
获取图像块的控制点的运动矢量cpmv;
根据所述图像块的cpmv,获取所述图像块中子图像块的运动矢量,所述运动矢量为整像素精度。
2.根据权利要求1所述的方法,其特征在于,基于所述图像块的cpmv,获取所述图像块中子图像块的运动矢量,包括:
根据所述图像块的cpmv,计算所述子图像块的第一运动矢量,所述第一运动矢量为亚像素精度;
将所述第一运动矢量处理为整像素精度的第二运动矢量。
3.根据权利要求1或2所述的方法,其特征在于,所述子图像块的高和/或宽为4像素。
4.根据权利要求1至3中任一项所述的方法,其特征在于,获取图像块的控制点的运动矢量cpmv,包括:
获取所述图像块的运动信息候选列表;
将所述运动信息候选列表中的运动矢量处理为整像素精度;
根据所述运动信息候选列表中处理为整像素精度的运动矢量,获取所述图像块的cpmv。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
对所述图像块进行n像素的运动矢量精度决策,n为正整数。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述图像块的高和/或宽小于16像素。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述子图像块的帧间预测方式为如下任一种:前向预测、后向预测、双预测。
8.根据权利要求1至6中任一项所述的方法,其特征在于,所述子图像块的帧间预测方式为双预测,其中,所述图像块的cpmv为双预测过程中前向预测所得的所述图像块的cpmv,或者,双预测过程中后向预测所得的所述图像块的cpmv。
9.根据权利要求2所述的方法,其特征在于,将所述第一运动矢量处理为整像素精度的第二运动矢量,包括:
根据所述第一运动矢量,获取所述第二运动矢量,使得所述第二运动矢量的终点为与所述第一运动矢量的终点最接近的整像素点。
10.一种图像处理的装置,其特征在于,包括:
第一获取单元,用于获取图像块的控制点的运动矢量cpmv;
第二获取单元,用于根据所述第一获取单元获取的所述图像块的cpmv,获取所述图像块中子图像块的运动矢量,所述运动矢量为整像素精度。
11.根据权利要求10所述的装置,其特征在于,所述第二获取单元用于:
根据所述图像块的cpmv,计算所述子图像块的第一运动矢量,所述第一运动矢量为亚像素精度;
将所述第一运动矢量处理为整像素精度的第二运动矢量。
12.根据权利要求10或11所述的装置,其特征在于,所述子图像块的高和/或宽为4像素。
13.根据权利要求10至12中任一项所述的装置,其特征在于,所述第一获取单元用于:
获取所述图像块的运动信息候选列表;
将所述运动信息候选列表中的运动矢量处理为整像素精度;
根据所述运动信息候选列表中处理为整像素精度的运动矢量,获取所述图像块的cpmv。
14.根据权利要求10至13中任一项所述的装置,其特征在于,所述装置还包括:
处理单元,用于对所述图像块进行n像素的运动矢量精度决策,n为正整数。
15.根据权利要求10至14中任一项所述的装置,其特征在于,所述图像块的高和/或宽小于16像素。
16.根据权利要求10至15中任一项所述的装置,其特征在于,所述子图像块的帧间预测方式为如下任一种:前向预测、后向预测、双预测。
17.根据权利要求10至16中任一项所述的装置,其特征在于,所述子图像块的帧间预测方式为双预测,其中,所述图像块的cpmv为双预测过程中前向预测所得的所述图像块的cpmv,或者,双预测过程中后向预测所得的所述图像块的cpmv。
18.根据权利要求11所述的装置,其特征在于,所述第二获取单元用于,根据所述第一运动矢量,获取所述第二运动矢量,使得所述第二运动矢量的终点为与所述第一运动矢量的终点最接近的整像素点。
19.一种图像处理装置,其特征在于,包括:存储器与处理器,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,并且对所述存储器中存储的指令的执行使得,所述处理器用于执行如权利要求1至9中任一项所述的方法。
20.一种计算机存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被计算机执行时使得,所述计算机执行如权利要求1至9中任一项所述的方法。
21.一种包含指令的计算机程序产品,其特征在于,所述指令被计算机执行时使得计算机执行如权利要求1至9中任一项所述的方法。
技术总结