CN102611886A - 一种运动预测或补偿方法 - Google Patents
一种运动预测或补偿方法 Download PDFInfo
- Publication number
- CN102611886A CN102611886A CN 201110024415 CN201110024415A CN102611886A CN 102611886 A CN102611886 A CN 102611886A CN 201110024415 CN201110024415 CN 201110024415 CN 201110024415 A CN201110024415 A CN 201110024415A CN 102611886 A CN102611886 A CN 102611886A
- Authority
- CN
- China
- Prior art keywords
- motion vector
- pixels
- coordinate
- motion
- location
- 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
Links
Images
Abstract
本发明实施例提供了一种视频编解码过程中运动预测或补偿的方法,本发明实施例提出一种运动预测或补偿方法,包括获得候选运动矢量集合;基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索;使用精细化搜索后得到的运动矢量进行运动预测或补偿。从而提升了编码性能,同时保持合理的复杂度。
Description
技术领域
本发明涉及通信技术领域,特别涉及视频编解码中的一种运动预测或补偿方法。
背景技术
运动预测和运动补偿是视频压缩中的重要技术,视频压缩码流中的一部分比特用于传输运动矢量信息,特别在低码率情况下,对于高清视频来说,用于传输运动矢量信息所耗费的比特通常超过码流总比特数的百分之五十。因此,需要通过选择最优的运动矢量,来提高编码效率。针对连续动态图像的视频编码,将连续若干幅图像分成P、B、I三种类型,对于P帧,是根据本帧与相邻的前一帧(I帧或P帧)的相关性进行预测来压缩本帧数据;对于B帧,则是根据相邻的前一帧、本帧以及后一帧数据的相关性进行预测来压缩本帧。针对P帧和B帧的不同,其在选择运动矢量时,P帧仅需根据其前一帧获得运动矢量集合,而B帧可以根据其前一帧和后一帧获得运动矢量集合。
运动矢量用来描述本帧和作为参考的相邻帧之间的运动偏移关系。为了提高帧间预测的准确度,现有技术采用非整像素插值技术,提高帧间预测精度。如图1所示,描述了进行帧间预测时,作为参考块的相邻帧中像素的二分之一精度像素或者四分之一精度像素位置关系。其中大写的A/B/C/D/E/F...表示整像素精度位置,小写的b/h/j/m/t/aa/hh/dd/ee...表示二分之一精度像素位置,小写的a/c/d/e/g/i/k/n/p/q/r...表示四分之一精度像素位置。其中整像素位置为图像原有像素,二分之一和四分之一精度位置像素为通过整像素插值获得的非整像素位置像素。插值过程使用插值滤波器,比如二分之一像素b的获取可以使用插值滤波器(1,-5,20,20,-5,1)/64对整像素点D/E/F/G/H/I插值获得,四分之一精度像素a可以通过整插值滤波器(1,1)/2对整像素点F和二分之一像素点b插值滤波获取。
以B帧为例,现有技术中一种运动估计和补偿方案为:在每帧图像中包含了若干待编码码块,对于一个待编码码块,根据该待编码码块周边码块(通常指该待编码码块左侧码块、左上方码块、上方码块及右上方码块)的运动矢量得到空域候选运动矢量,以及根据这些空域候选运动矢量计算的中值运动矢量;获取该待编码码块前一帧中相同位置上的码块,及其四邻域、八邻域码块的运动矢量,得到时域候选运动矢量;从上述空域候选运动矢量、中值运动矢量和时域候选运动矢量组成的候选运动矢量集合中选择一个或多个最优的运动矢量,作为当前块的运动补偿的前向运动矢量和/或后向运动矢量。通过在编码端和解码端使用相同的最优运动矢量的选取过程,可以不必传输运动矢量信息,从而节省运动矢量信息的传输比特。一般的选取过程为:利用一个待编码块的候选运动矢量集合中每个运动信息所指向的前向或者后向参考帧中对应的参考块作为模板块,以该运动矢量信息的镜像位置在后向或者前向参考帧中获取和模板对应块,计算两个模板和模板对应块之间的差异情况(可以使用均方差或者像素插值绝对值和),选取差异最小的运动信息作为当前待编码块的最优运动矢量。使用该运动矢量进行运动预测补偿,实现编码和解码。
由于运动预测和补偿的精度可以到非整像素位置,因此在编解码端的运动预测或补偿过程中,在选取最优运动矢量时,需要搜索大量的候选运动矢量指向位置,并从中选取最优的运动矢量用于预测和补偿,由于候选运动矢量为当前编码或解码块周边时空域相关的图像块的运动信息,这些运动矢量在作为当前块运动矢量时准确度不够,但重新做分像素级运动搜索复杂度过高,因此如何提升现有方案的编码性能,同时保持合理的复杂度成为一个关键问题。
发明内容
本发明实施例提供了一种视频编解码过程中运动预测或补偿的方法,以提升编码性能,同时保持合理的复杂度。
本申请实施例提出一种运动预测或补偿方法,包括
获得候选运动矢量集合;
基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索;
使用精细化搜索后得到的运动矢量进行运动预测或补偿。
本发明实施例提出的技术方案,通过采用获得候选运动矢量集合,基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿的技术手段,提升了编码性能,同时保持合理的复杂度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为运动矢量精度位置示意图;
图2为本发明实施例提供的一种运动预测或补偿方法流程图;
图3A为本发明第一实施例流程图;
图3B为本申请实施例B帧中编码块的运动矢量选择示意图;
图3C为本申请实施例B帧匀速线性运动的模型示意图;
图4为本发明获得第二运动矢量集合另一实施例流程图;
图5为本发明获得第三运动矢量集合另一实施例流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
实施例一:
如图2所示为本发明实施例提供一种运动预测或补偿方法,包括:
步骤001、获得候选运动矢量集合。
本发明实施例中,作为候选运动矢量集合的可以为不同的运动矢量集合。
某些实施方式中,作为候选运动矢量集合可以为第一运动矢量集合,所述第一运动矢量集合利用和当前编码或解码块时域和空域的至少一项相关的运动矢量生成。
某些实施方式中,所述候选运动矢量集合可以为第二运动矢量集合,所述获得候选运动矢量集合包括:利用和当前编码或解码块时域和空域的至少一项相关的运动矢量生成初始运动矢量集合;对初始运动矢量集合中的运动矢量取反,得到取反后的运动矢量;取反后的运动矢量和初始候选运动矢量集合构成第二运动矢量集合。
某些实施方式中,所述候选运动矢量集合可以为第三运动矢量集合,所述获得候选运动矢量集合包括:利用和当前编码或解码块时域和空域的至少一项相关的运动矢量生成初始运动矢量集合;对初始运动矢量集合中的运动矢量取反,得到取反后的运动矢量;对取反后的运动矢量和初始候选运动矢量集合构成的新运动矢量集合取整,得到所述第三运动矢量集合。
上述举例说明了作为候选运动矢量集合的矢量集合,另外一些实施方式中,候选运动矢量集合也可以通过其他方式获得,并不限于上述几种,在本发明实施例基础上进行的变换均在本发明保护范围之内。
步骤002、基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索。
某些实施方式中,所述候选运动矢量集合的信息为候选运动矢量个数;
所述基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿包括:
如果运动矢量个数小于等于N,则对最优运动矢量进行运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿;
如果运动矢量个数大于N,则不进行运动矢量精细化搜索,直接使用所述最优运动矢量进行运动预测或补偿;
其中所述N为小于候选运动矢量集合中运动矢量总数的正整数。
某些实施方式中,所述候选运动矢量集合的信息为候选运动矢量中非整像素运动矢量个数;
所述基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿包括:
如果所述非整像素运动矢量个数小于等于N,则对最优运动矢量进行运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿;
如果非整像素运动矢量个数大于N,则不进行运动矢量精细化搜索,直接使用所述最优运动矢量进行运动预测或补偿;
其中所述N为小于候选运动矢量集合中非整像素运动矢量总数的正整数。
步骤003、使用精细化搜索后得到的运动矢量进行运动预测或补偿。
以精细化搜索得到的最优运动矢量进行运动预测或补偿,完成编解码过程。由于该方法为现有技术,在此不再叙述。
实施例二:参见图3A,对于实施例一中候选运动矢量集合的生成方法进一步进行说明如下:
步骤101:获得第一运动矢量集合,所述第一运动矢量集合利用和当前编码或解码块时域和空域的至少一项相关的运动矢量生成。也即获取当前编码块或解码块的初始候选运动矢量集合。
具体的,根据当前编码块或解码块的周边编码块或解码块得到空域候选运动矢量,根据参考帧得到当前编码块或解码块的时域候选运动矢量,该参考帧可以为当前编码块或解码块所在的当前帧的前一帧,或后一帧,或前一帧和后一帧,将空域候选运动矢量和时域候选运动矢量组成初始运动矢量集合。
参见图3B,为具有双向运动补偿特性的B帧中编码块或解码块的运动矢量选择示意图。假设当前帧中的编码块或解码块mv为当前编码块或解码块,则当前编码块或解码块mv的周边编码块或解码块通常指图3B中示出的mv的左侧编码块或解码块mva、上方编码块或解码块mvb、右上方编码块或解码块mvc、左上方编码块或解码块mvd,根据上述编码块或解码块mva、mvb、mvc、mvd获得当前编码块或解码块mv的空域候选运动矢量;假设以参考帧为当前帧中的前一帧为例,则当前编码块或解码块mv在前一帧中对应位置处的编码块或解码块为mvcol,相应的mvcol的四邻域及八邻域编码块或解码块分别为mv0至mv7,根据上述mvcol和mv0至mv7获得mv的时域候选运动矢量,同理,也可以根据当前编码块或解码块mv在后一帧中对应位置处的编码块或解码块mvcol’及其四邻域及八邻域编码块或解码块mv0’至mv7’获得时域候选运动矢量。
通过上述方法获得的第一运动矢量集合可以作为候选运动矢量集合用于执行基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索。
在某些实施方式中,所述候选运动矢量集合可以为第二运动矢量集合,即对步骤101中获得的初始运动矢量集合中的运动矢量取反,得到取反后的运动矢量;取反后的运动矢量和初始候选运动矢量集合构成第二运动矢量集合。具体陈述如下:
步骤102:为第一候选运动矢量集合中的运动矢量添加反向运动矢量。
具体的,可以根据预设运动模型为初始候选运动矢量集合中的运动矢量添加反向运动矢量。预设运动模型包括匀速直线运动模型、或加速运动模型。
以匀速直线运动模型为例,参见图3C,为B帧匀速线性运动的模型示意图。假设Vb是该后向运动矢量,Vf是前向运动矢量,B帧与前向参考帧之间的距离为Tf,与后向参考帧之间的距离为Tb,则对于图3C中示出的匀速直线运动模型来说,每一对前向运动矢量和后向运动矢量当满足如下关系:Vf/Tf=-Vb/Tb。
另外,除了上述图3C中示出的匀速直线运动模型外,也可以采用加速运动模型,此时两个运动矢量Vf和Vb之间可以满足关系Vf=-(Vb+α),其中α为速度差。
以上取反操作可以对初始候选运动矢量集合中的每一个运动矢量进行操作,也可以对初始候选运动矢量集合中已经构成反向关系的不进行该操作,而对剩余的运动矢量进行该操作。
步骤103:根据反向运动矢量和初始候选运动矢量集合中的运动矢量生成新的候选运动矢量集合。
在为初始候选运动矢量集合中的运动矢量添加完反向运动矢量后,将所添加的反向运动矢量和原来初始候选运动矢量集合中的运动矢量中的所有前向运动矢量组成前向候选运动矢量集合,以及所有后向运动矢量组成后向候选运动矢量集合。
除了上述分别建立前向候选运动矢量集合和后向候选运动矢量集合的方式外,也可以在一个新的候选运动矢量集合中包含所有前向运动矢量和后向运动矢量,该新的候选运动矢量集合中包含了若干组运动矢量,每一组运动矢量中有相对应的前向运动矢量和后向运动矢量,每一组相对应的前向运动矢量和后向运动矢量可以通过标识信息进行区别。
通过前述步骤获得的第二运动矢量集合可以作为候选运动矢量集合用于执行基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索。
在某些实施方式中,所述候选运动矢量集合可以为第三运动矢量集合,即对前述获得的第二运动矢量集合进行取整操作,获得第三运动矢量集合。具体陈述如下:
步骤104:为新的候选运动矢量集合中的运动矢量进行取整操作。
具体的,对于候选运动矢量集合中的运动矢量,根据其运动矢量位置的进行取整操作。对于候选运动矢量其中每一维度,当该维度坐标为非整像素位置时,如果该维度非整像素位置运动矢量的坐标距离该维度非整像素位置邻近的两个整像素的坐标位置(A,B)距离相同时,将该维度非整像素位置运动矢量的坐标值取整至整像素的坐标位置(A,B)其中一个,所述整像素的坐标位置的确定由该维度非整像素位置运动矢量坐标值的符号确定;
以四分之一非整像素精度运动估计和运动补偿为例,参见图1所示像素点位置关系,如果候选运动矢量集合中的运动矢量指向F或G位置,则为整像素精度运动矢量,如果候选运动矢量集合中的运动矢量指向b位置,则为二分之一精度运动矢量,如果候选动矢量集合中的运动矢量指向a或c位置,为四分之一精度运动矢量。对于候选动矢量集合中的运动矢量为整像素精度时,不需要对其进行取整操作。对于候选动矢量集合中的运动矢量为四分之一精度时,根据临近原则对其取整操作,例如当运动矢量(x1,y1)指向a位置时,由于和a临近的两个整像素位置为F(x2,y2)和G(x3,y3),而a距离F距离比距离G距离更近,因此将a取整至F点位置,候选运动矢量(x1,y1)取整至(x2,y2)。同理c点取整至G位置。对于候选运动矢量集合中的运动矢量为二分之一精度时,由于该运动矢量指向位置距离其相邻的两个整像素位置距离相等,因此,在取整时,需要根据当前运动矢量的符号取整至不同的整像素位置。当运动矢量(x1,y1)指向图1中二分之一像素位置b时,整像素位置F和G距离b相等。如果当对b取整时,如果x1的符号为正,则将b的x1维度坐标取整至F点坐标x2,如果x1符号为负,将b的x1维度坐标取整至G点坐标x3;同理,对于y1为正,将y1坐标取整至F点坐标y2,当y1为负,将y1坐标取整至G点坐标y3。以上取整过程也可以反过来,对于每一维度符号为负时取以上操作中符号为正时的取整坐标,为正时,取以上操作中符号为负时的取整坐标。
以上过程可以表示为如下伪代码描述,对于运动矢量集合中的一个运动矢量MV,其横坐标和纵坐标值分别为MV_x和MV_y,以对MV_x取整为例,如下:
iTmp=MV_x;
MV_pos=abs(MV_x)&0x3;
If(MV_pos==3||MV_pos==1)
{
iSign=iTmp>=0?1:-1;
iAbs=abs(iTmp);
iTmp=(((iAbs+2)>>2)<<2);
MV_x=iSign*iTmp;
}
Else if(MV_pos==2)
{
iTmp=((MV_x>>2)<<2);
MV=iTmp;
}
以上取整过程的具体描述为,对候选运动矢量横坐标和纵坐标分别进行取整操作,以横坐标为例,利用横坐标最低两位判断当前横坐标是二分之一像素还是四分之一像素,对四分之一像素位置运动矢量的坐标值取绝对值,再加二后,右移两位,再左移两位后得到取整后的该维度坐标的绝对值,该维度坐标符号保持不变。对二分之一像素位置运动矢量的坐标值的该维度坐标进行右移两位操作,再左移两位操作,得到取整后的该维度坐标值。对于整像素点不进行取整操作,也可以在实现中为了实现方便,进行取整操作。
通过前述步骤获得的第三运动矢量集合可以作为候选运动矢量集合用于执行基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索。
前述取整方法是以二分之一精度时的取整方法为例进行说明,某些实施方式中也可以有八分之一精度时的取整方法,或者将取整操作定义为将四分之一和八分之一点归一化至二分之一和整像素精度位置的操作。
本申请取整方法的取整目标可以根据实际系统要求进行扩展,以整像素位置为取整目标,将二分之一和/或四分之一取整至整像素位置;
或者,以整像素位置和二分之一像素位置为取整目标,则将二分之一像素位置视为整像素位置,将四分之一和/或八分之一取整至整像素和二分之一像素位置。
不同的取整目标选择会带来不同的压缩性能和复杂度,满足不同的应用需求。
某些实施方式中,取整的另一种实现方案如下:
在步骤104的取整过程的具体实现还可以采用如下对横坐标取整的伪代码描述的取整过程:
iTmp=MV_x;
MV_pos=MV_x&0x3;
if((MV_pos==1)&&(MV_x<0))
MV=MV-1;
else if((MV_pos==3)&&(MV_x>0))
MV=MV+1;
iTmp=((MV_x>>2)<<2);
MV_x=iTmp;
以上取整过程的具体描述为,根据候选运动矢量横坐标和纵坐标分别进行取整操作,以横坐标为例,当横坐标最低两位为1,并且横坐标为负值,横坐标减一;当横坐标最低两位为3,并且横坐标为正值,横坐标加一;对以上操作后的横坐标右移两位后,再左移两位得到取整后的横坐标值,完成横坐标的取整过程。
在具体实现时,上述实施例中的伪代码方案仅为该取整方法的具体实现方式的举例说明,显然本领域技术人员在本发明实施例基础上很容易想到其它具体实现方式,在本发明实施例披露的技术思想下,任何可以体现本发明实质的软硬件实现方案均属于本发明保护范围。
上述步骤104中提供对新运动矢量集合取整的方法,包括对非整像素位置运动矢量的坐标值进行取整操作,所述取整操作包括对于非整像素位置运动矢量的坐标的每一维度,当该维度坐标为非整像素位置时,如果该维度非整像素位置运动矢量的坐标距离该维度非整像素位置邻近的两个整像素的坐标位置(A,B)距离相同时,将该维度非整像素位置运动矢量的坐标值取整至整像素的坐标位置(A,B)其中一个,所述整像素的坐标位置的确定由该维度非整像素位置运动矢量坐标值的符号确定。
本发明实施例提出的技术方案,通过采用对非整像素位置运动矢量的坐标值进行取整操作,所述取整操作包括对于非整像素位置运动矢量的坐标的每一维度,当该维度坐标为非整像素位置时,如果该维度非整像素位置运动矢量的坐标距离该维度非整像素位置邻近的两个整像素的坐标位置(A,B)距离相同时,将该维度非整像素位置运动矢量的坐标值取整至整像素的坐标位置(A,B)其中一个,所述整像素的坐标位置的确定由该维度非整像素位置运动矢量坐标值的符号确定的技术手段,解决了在现有运动矢量候选集中选取最优运动矢量过程复杂度高得问题,同时保持较好的编码性能。
本发明实施例中,若该维度非整像素位置运动矢量的坐标距离该维度非整像素位置邻近的两个整像素的坐标位置(A,B)距离相同,则该维度非整像素位置运动矢量的坐标位置为二分之一像素位置。则将该维度非整像素位置运动矢量的坐标值取整至整像素的坐标位置(A,B)其中一个包括:将该维度非整像素位置运动矢量的坐标值在该维度进行右移两位操作,再左移两位操作,取整至整像素的坐标位置(A,B)其中一个。
本发明实施例中,所述整像素的坐标位置的确定由该维度非整像素位置运动矢量坐标值的符号确定包括:
当该非整像素位置运动矢量的坐标值的符号为正时,对该非整像素位置运动矢量的坐标值取整后得到的整像素坐标位置为A;当该非整像素位置运动矢量的坐标值符号为负时,对该非整像素位置运动矢量的坐标值取整后得到的整像素坐标位置为B,或者:
当该非整像素位置运动矢量的坐标值的符号为负时,对该非整像素位置运动矢量的坐标值取整后得到的整像素坐标位置为A;当该非整像素位置运动矢量的坐标值符号为正时,对该非整像素位置运动矢量的坐标值取整后得到的整像素坐标位置为B。
某些实施方式中,若该维度非整像素位置运动矢量的坐标位置不是二分之一像素位置,而是四分之一像素位置,则对于四分之一像素位置运动矢量坐标值取整至整像素精度位置为,将该维度非整像素位置运动矢量的坐标值取整至最近的整像素的坐标位置。
某些实施方式中,对非整像素位置运动矢量的坐标值进行取整操作之前还包括:获取当前编码或者解码块的候选运动矢量集合,为所述初始候选运动矢量集合中的运动矢量添加一个反向运动矢量,根据所述反向运动矢量和所述初始候选运动矢量集合中的运动矢量生成新的候选运动矢量集合,以用于进行取整操作。
本发明所述各实施例中,以二分之一位置像素位置为例对非整像素位置运动矢量的坐标值取整方法进行说明,但并不构成对本发明的限制,若以整像素位置为取整目标,将二分之一像素位置和/或四分之一像素位置取整至整像素位置;另外一种实时方式中,以整像素位置和二分之一像素位置为取整目标,则将二分之一像素位置视为整像素位置,将四分之一像素位置和/或八分之一像素位置取整至整像素和二分之一像素位置。即此时,本发明实施例所说的整像素位置包括二分之一像素位置。按此思路,本领域技术人员显然容易想到进一步的扩展方法。
某些实施方式中,获得第二运动矢量的方法可以有多种实现方式:
参见图4,为本申请视频编码方法的获得第二运动矢量集合另一实施例流程图,该实施例示出了对运动矢量进行统一判断生成反向运动矢量的过程:
步骤201:获取当前编码块的初始候选运动矢量集合。
根据当前编码块的周边编码块得到空域候选运动矢量,根据参考帧得到当前编码块的时域候选运动矢量,该参考帧可以为当前编码块所在的当前帧的前一帧,或后一帧,或前一帧和后一帧,将空域候选运动矢量和时域候选运动矢量组成初始运动矢量集合。
步骤202:判断初始候选运动矢量集合中是否只存在单方向的运动矢量,若是,则执行步骤203;否则,执行步骤204。
在初始运动矢量集合中,包括根据当前编码块的周边编码块,参考帧中各个编码块得到的运动矢量,此处判断是否只存在单方向的运动矢量指初始候选运动矢量集合中是否仅包含前向运动矢量,或者仅包含后向运动矢量。
步骤203:为单方向的运动矢量分别添加反向运动矢量,执行步骤205。
在初始运动矢量集合中,如果仅包含前向运动矢量,则为每个前向运动矢量添加一个后向运动矢量,如果仅包含后向运动矢量,则为每个后向运动矢量添加一个前向运动矢量。结合图3C可知,每一对前向运动矢量和后向运动矢量,当采用匀速直线运动模型时,应当满足如下关系:Vf/Tf=-Vb/Tb。
步骤204:分别为前向运动矢量添加后向运动矢量作为其反向运动矢量,以及分别为后向运动矢量添加前向运动矢量作为其反向运动矢量。
在初始运动矢量集合中,如果即包含前向运动矢量,又包含后向运动矢量,则分别为前向运动矢量添加后向运动矢量,以及分别为后向运动矢量添加前向运动矢量。结合图3C可知,每一对前向运动矢量和后向运动矢量,当采用匀速直线运动模型时,应当满足如下关系:Vf/Tf=-Vb/Tb。
步骤205:根据反向运动矢量和初始候选运动矢量集合中的运动矢量生成新的候选运动矢量集合。
步骤206:为新的候选运动矢量集合中的每个运动矢量分配索引标识。
步骤207:采用RDO方式从新的候选运动矢量集合中选择用于编码的运动矢量。
步骤208:将所述选择的运动矢量的索引标识,及根据所述选择的运动矢量获得的信息编入码流。
编入码流中的索引信息相当于编码终端所选择的运动矢量的选择信息,当码流发送的解码终端时,可以根据选择信息找到对应的运动矢量。
需要说明的是,上述实施例中除了采用步骤206至步骤208示出的RDO方式进行运动矢量的选择,也可以采用在编码端和解码端同时推导的方式获得运动矢量,对此本申请实施例不进行限制。
参见图5,为本申请视频编码方法的获得第二运动矢量集合的另一实施例流程图,该实施例示出了对运动矢量进行逐一判断生成反向运动矢量的过程:
步骤301:获取当前编码块的初始候选运动矢量集合。
根据当前编码块的周边编码块得到空域候选运动矢量,根据参考帧得到当前编码块的时域候选运动矢量,该参考帧可以为当前编码块所在的当前帧的前一帧,或后一帧,或前一帧和后一帧,将空域候选运动矢量和时域候选运动矢量组成初始运动矢量集合。
步骤302:从初始候选运动矢量集合中顺序提取一个运动矢量。
步骤303:为提取的运动矢量添加一个反向运动矢量。
其中,若所提取的运动矢量为前向运动矢量,则为所述提取的运动矢量添加一个后向运动矢量作为其反向运动矢量,若所提取的运动矢量为后向运动矢量,则为所述提取的运动矢量添加一个前向运动矢量作为其反向运动矢量。
结合图3C,添加反向运动矢量后的每一对前向运动矢量和后向运动矢量当满足如下关系:Vf/Tf=-Vb/Tb。
步骤304:判断是否完成对初始候选运动矢量集合中所有运动矢量添加反向运动矢量,若是,则执行步骤305;否则,返回步骤302。
步骤305:根据反向运动矢量和初始候选运动矢量集合中的运动矢量生成新的候选运动矢量集合。
由上述实施例可以看出,本申请实施例在构建视频编码的候选运动矢量集合时,获取当前编码块的初始候选运动矢量集合,为初始候选运动矢量集合中的每一个运动矢量添加一个反向运动矢量添加反向运动矢量,根据反向运动矢量和初始候选运动矢量集合中的运动矢量生成新的候选运动矢量集合,从新的候选运动矢量集合中选择用于编码的运动矢量进行编码。应用本申请实施例生成的候选运动矢量集合中,包括了为运动矢量生成的反向运动矢量,该反向运动矢量相当于预测的运动矢量,从而使得候选运动矢量集合更加完备,从中选择的用于编码的运动矢量更优,提高了编码性能。
本发明实施例中,基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索可以有多种实现方式。
所述候选运动矢量集合的信息可以为不同的信息类型,现举例说明如下;
举例一:
在某些实施方式中,所述候选运动矢量集合的信息为候选运动矢量个数;
所述基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿包括:
如果运动矢量个数小于等于N,则对最优运动矢量进行运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿;
如果运动矢量个数大于N,则不进行运动矢量精细化搜索,直接使用所述最优运动矢量进行运动预测或补偿;
其中所述N为小于候选运动矢量集合中运动矢量总数的正整数。
具体陈述如下:
计算获得的候选运动矢量集合中每个运动矢量的模板差异情况,选取差异最小的运动矢量作为最优运动矢量;
计算候选运动矢量集合中运动矢量个数;
如果运动矢量个数大于2,则不进行精细化搜索,直接使用选出的最优运动矢量进行运动预测或补偿;
如果候选运动个数小于2,则对选出的最优运动矢量进行精细化搜索,具体的搜索方法如下:
以图1为例,说明精细化搜索过程。如当前最优运动矢量指向参考帧f位置,以f为中心,以四分之一精度为步长,可以获得其四邻域或八邻域位置的四个(b/e/j/g)或者八个(a/b/c/e/g/i/j/k)运动矢量位置,作为运动矢量精细化搜索范围,计算四个或八个精细化搜索候选运动矢量的模板差异情况,选出差异最小的精细化搜索候选运动矢量作为精细化搜索得到的最优运动矢量。
举例二:
在某些实施方式中,候选运动矢量集合的信息可以为候选运动矢量集合中非整像素运动矢量个数。
所述基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿包括:
如果所述非整像素运动矢量个数小于等于N,则对最优运动矢量进行运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿;
如果非整像素运动矢量个数大于N,则不进行运动矢量精细化搜索,直接使用所述最优运动矢量进行运动预测或补偿;
其中所述N为小于候选运动矢量集合中非整像素运动矢量总数的正整数。
具体实施方式中,N可以为2.
举例三:在某些实施方式中,候选运动矢量集合的信息可以为候选运动矢量集合中候选运动矢量的方向信息,如候选运动矢量集合中的主方向个数或者方向的一致度。
所述基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿包括:
以主方向个数为例,如果主方向个数小于N,则对最优运动矢量进行运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿;如果主方向个数大于N,则不进行运动矢量精细化搜索,直接使用所述最优运动矢量进行运动预测或补偿。
其中所述N为小于候选运动矢量集合中主方向总数的正整数。
具体实施方式中,主方向的计算可以为如下过程:
所述主方向为按照二维直角坐标系的四个象限划分四个方向;
计算候选运动矢量集合中每个运动矢量(xi,yi)所表示坐标点落入坐标系四象限中的个数,如果候选运动矢量落入该象限,则存在该象限所表示的主方向,如果没有运动矢量坐标落入该象限,则没有该主方向;
计算候选运动矢量主方向个数,如果个数小于等于1,进行运动矢量精细化搜索,如果个数大于1,则不进行精细化搜索。
主方向的划分还可以为8方向或16方向,或者选用不同的坐标系表示方式,如将直角坐标系旋转,来划分运动矢量的主方向。
以上基于主方向决定是否进行运动矢量精细化搜索的方法也可以采用如下万法:
计算候选运动矢量主方向个数,如果个数大于等于1,进行运动矢量精细化搜索,如果个数小于1,则不进行精细化搜索。
举例四:在某些实施方式中,候选运动矢量集合的信息可以为候选运动矢量集合中非整像素精度运动矢量的主方向信息来进行判断。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (17)
1.一种运动预测或补偿方法,其特征在于,所述方法包括:
获得候选运动矢量集合;
基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索;
使用精细化搜索后得到的运动矢量进行运动预测或补偿。
2.根据权利要求1所述的方法,其特征在于:
所述候选运动矢量集合的信息为候选运动矢量个数;
所述基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿包括:
如果运动矢量个数小于等于N,则对最优运动矢量进行运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿;
如果运动矢量个数大于N,则不进行运动矢量精细化搜索,直接使用所述最优运动矢量进行运动预测或补偿;
其中所述N为小于候选运动矢量集合中运动矢量总数的正整数。
3.根据权利要求1所述的方法,其特征在于:
所述候选运动矢量集合的信息为候选运动矢量中非整像素运动矢量个数;
所述基于所述候选运动矢量集合的信息进行最优运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿包括:
如果所述非整像素运动矢量个数小于等于N,则对最优运动矢量进行运动矢量精细化搜索,使用精细化搜索后得到的运动矢量进行运动预测或补偿;
如果非整像素运动矢量个数大于N,则不进行运动矢量精细化搜索,直接使用所述最优运动矢量进行运动预测或补偿;
其中所述N为小于候选运动矢量集合中非整像素运动矢量总数的正整数。
4.根据权利要求1至3任一项所述的方法,其特征在于:
所述候选运动矢量集合为第一运动矢量集合,所述第一运动矢量集合利用和当前编码或解码块时域和空域的至少一项相关的运动矢量生成。
5.根据权利要求1至3任一项所述的方法,其特征在于:
所述候选运动矢量集合为第二运动矢量集合,所述获得候选运动矢量集合包括:
利用和当前编码或解码块时域和空域的至少一项相关的运动矢量生成初始运动矢量集合;
对初始运动矢量集合中的运动矢量取反,得到取反后的运动矢量;
取反后的运动矢量和初始候选运动矢量集合构成第二运动矢量集合。
6.根据权利要求5所述的方法,其特征在于,所述对初始运动矢量集运动矢量集合中的运动矢量取反包括:
根据预设运动模型为初始候选运动矢量集合中的每一个运动矢量添加一个反向运动矢量添加反向运动矢量;
所述预设运动模型包括:匀速直线运动模型、或加速运动模型。
7.根据权利要求5所述的方法,其特征在于,所述对初始运动矢量集运动矢量集合中的运动矢量取反包括:
判断所述初始候选运动矢量集合中是否只存在单方向的运动矢量;
若只存在单方向的运动矢量,则为所述单方向的运动矢量分别添加反向运动矢量,所述只存在单方向的运动矢量包括只存在前向运动矢量,或者只存在后向运动矢量;
若同时存在前向运动矢量和后向运动矢量,则分别为所述前向运动矢量添加后向运动矢量作为其反向运动矢量,以及分别为所述后向运动矢量添加前向运动矢量作为其反向运动矢量。
8.根据权利要求5所述的方法,其特征在于,所述对初始运动矢量集运动矢量集合中的运动矢量取反包括:
从所述初始候选运动矢量集合中顺序提取一个运动矢量;
为所述提取的运动矢量添加一个反向运动矢量,其中,若所提取的运动矢量为前向运动矢量,则为所述提取的运动矢量添加一个后向运动矢量作为其反向运动矢量,若所提取的运动矢量为后向运动矢量,则为所述提取的运动矢量添加一个前向运动矢量作为其反向运动矢量;
判断是否完成对所述初始候选运动矢量集合中所有运动矢量添加反向运动矢量,若是,则触发执行所述生成新的候选运动矢量集合的步骤;否则,返回所述从所述初始候选运动矢量集合中顺序提取一个运动矢量的步骤。
9.根据权利要求1至3任一项所述的方法,其特征在于:
所述候选运动矢量集合为第三运动矢量集合,所述获得候选运动矢量集合包括:
利用和当前编码或解码块时域和空域的至少一项相关的运动矢量生成初始运动矢量集合;
对初始运动矢量集合中的运动矢量取反,得到取反后的运动矢量;
对取反后的运动矢量和初始候选运动矢量集合构成的新运动矢量集合取整,得到所述第三运动矢量集合。
10.根据权利要求9所述的方法,其特征在于,对新运动矢量集合取整包括:
对非整像素位置运动矢量的坐标值进行取整操作,所述取整操作包括对于非整像素位置运动矢量的坐标的每一维度,当该维度坐标为非整像素位置时,如果该维度非整像素位置运动矢量的坐标距离该维度非整像素位置邻近的两个整像素的坐标位置(A,B)距离相同时,将该维度非整像素位置运动矢量的坐标值取整至整像素的坐标位置(A,B)其中一个,所述整像素的坐标位置的确定由该维度非整像素位置运动矢量坐标值的符号确定。
11.根据权利要求10所述的方法,其特征在于,所述整像素的坐标位置的确定由该维度非整像素位置运动矢量坐标值的符号确定包括:
当该非整像素位置运动矢量的坐标值的符号为正时,对该非整像素位置运动矢量的坐标值取整后得到的整像素坐标位置为A;当该非整像素位置运动矢量的坐标值符号为负时,对该非整像素位置运动矢量的坐标值取整后得到的整像素坐标位置为B,或者:
当该非整像素位置运动矢量的坐标值的符号为负时,对该非整像素位置运动矢量的坐标值取整后得到的整像素坐标位置为A;当该非整像素位置运动矢量的坐标值符号为正时,对该非整像素位置运动矢量的坐标值取整后得到的整像素坐标位置为B。
12.根据权利要求10所述的方法,其特征在于,所述对非整像素位置运动矢量的坐标值进行取整操作之前还包括:
获取当前编码或者解码块的候选运动矢量集合,为所述初始候选运动矢量集合中的运动矢量添加一个反向运动矢量,根据所述反向运动矢量和所述初始候选运动矢量集合中的运动矢量生成新的候选运动矢量集合,以用于进行取整操作。
13.根据权利要求10所述的方法,其特征在于,所述将该维度非整像素位置运动矢量的坐标值取整至整像素的坐标位置(A,B)其中一个包括:
将该维度非整像素位置运动矢量的坐标值在该维度进行右移两位操作,再左移两位操作,取整至整像素的坐标位置(A,B)其中一个。
14.根据权利要求10所述的方法,其特征在于,所述对非整像素位置运动矢量的坐标值进行取整操作还包括:
如果该维度非整像素位置运动矢量的坐标位置为四分之一像素位置,将该维度非整像素位置运动矢量的坐标值取整至最近的整像素的坐标位置。
15.根据权利要求14所述的方法,其特征在于,所述对四分之一像素位置运动矢量的坐标值进行取整操作包括:
对四分之一像素位置运动矢量的坐标值的该维度坐标取绝对值,再加二后,右移两位,再左移两位后得到取整后的该维度坐标的绝对值,该维度坐标符号保持不变。
16.根据权利要求10所述的方法,其特征在于,所述对非整像素位置运动矢量的坐标值进行取整操作之后还包括:
从取整后的候选运动矢量集合中选择用于编码或解码的运动矢量进行编解码。
17.根据权利要求10所述的方法,其特征在于,所述非整像素位置运动矢量的坐标值取整包括:
以整像素位置为取整目标,将二分之一像素位置和/或四分之一像素位置取整至整像素位置;或者,以整像素位置和二分之一像素位置为取整目标,则将二分之一像素位置视为整像素位置,将四分之一像素位置和/或八分之一像素位置取整至整像素和二分之一像素位置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110024415 CN102611886A (zh) | 2011-01-22 | 2011-01-22 | 一种运动预测或补偿方法 |
CN201110025944.0A CN102710934B (zh) | 2011-01-22 | 2011-01-24 | 一种运动预测或补偿方法 |
PCT/CN2012/070700 WO2012097753A1 (zh) | 2011-01-22 | 2012-01-21 | 一种运动预测或补偿方法 |
EP12736417.2A EP2667604B1 (en) | 2011-01-22 | 2012-01-21 | Motion prediction or compensation method |
US13/947,681 US9288492B2 (en) | 2011-01-22 | 2013-07-22 | Motion prediction or compensation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110024415 CN102611886A (zh) | 2011-01-22 | 2011-01-22 | 一种运动预测或补偿方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102611886A true CN102611886A (zh) | 2012-07-25 |
Family
ID=46529012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110024415 Pending CN102611886A (zh) | 2011-01-22 | 2011-01-22 | 一种运动预测或补偿方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102611886A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109905714A (zh) * | 2017-12-08 | 2019-06-18 | 华为技术有限公司 | 帧间预测方法、装置及终端设备 |
CN110169073A (zh) * | 2017-01-05 | 2019-08-23 | 联发科技股份有限公司 | 用于视频编解码的解码器侧运动向量恢复 |
CN110365987A (zh) * | 2018-04-09 | 2019-10-22 | 杭州海康威视数字技术股份有限公司 | 一种运动矢量确定方法、装置及其设备 |
WO2020001624A1 (zh) * | 2018-06-28 | 2020-01-02 | 杭州海康威视数字技术股份有限公司 | 一种运动矢量确定方法和设备 |
WO2020007306A1 (zh) * | 2018-07-06 | 2020-01-09 | 杭州海康威视数字技术股份有限公司 | 一种解码、编码方法和设备 |
CN111526369A (zh) * | 2020-04-29 | 2020-08-11 | Oppo广东移动通信有限公司 | 视频的运动估计方法、装置、电子设备和存储介质 |
CN111654703A (zh) * | 2015-05-04 | 2020-09-11 | 谷歌有限责任公司 | 用于应用流的预取的编码 |
WO2020182162A1 (zh) * | 2019-03-11 | 2020-09-17 | 杭州海康威视数字技术股份有限公司 | 编解码方法与装置、编码端设备和解码端设备 |
RU2776356C1 (ru) * | 2019-03-11 | 2022-07-19 | Ханчжоу Хиквижен Диджитал Текнолоджи Ко., Лтд. | Способ и устройство кодирования и декодирования, оборудование на стороне кодирования и оборудование на стороне декодирования |
US11638027B2 (en) | 2016-08-08 | 2023-04-25 | Hfi Innovation, Inc. | Pattern-based motion vector derivation for video coding |
-
2011
- 2011-01-22 CN CN 201110024415 patent/CN102611886A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111654703B (zh) * | 2015-05-04 | 2024-03-15 | 谷歌有限责任公司 | 用于应用流的预取的编码 |
CN111654703A (zh) * | 2015-05-04 | 2020-09-11 | 谷歌有限责任公司 | 用于应用流的预取的编码 |
US11638027B2 (en) | 2016-08-08 | 2023-04-25 | Hfi Innovation, Inc. | Pattern-based motion vector derivation for video coding |
CN110169073A (zh) * | 2017-01-05 | 2019-08-23 | 联发科技股份有限公司 | 用于视频编解码的解码器侧运动向量恢复 |
CN110169073B (zh) * | 2017-01-05 | 2023-03-10 | 寰发股份有限公司 | 编码方法、编码装置、解码方法及解码装置 |
US11290724B2 (en) | 2017-12-08 | 2022-03-29 | Huawei Technologies Co., Ltd. | Inter prediction method and apparatus, and terminal device |
CN109905714A (zh) * | 2017-12-08 | 2019-06-18 | 华为技术有限公司 | 帧间预测方法、装置及终端设备 |
CN110365987A (zh) * | 2018-04-09 | 2019-10-22 | 杭州海康威视数字技术股份有限公司 | 一种运动矢量确定方法、装置及其设备 |
CN110365987B (zh) * | 2018-04-09 | 2022-03-25 | 杭州海康威视数字技术股份有限公司 | 一种运动矢量确定方法、装置及其设备 |
WO2020001624A1 (zh) * | 2018-06-28 | 2020-01-02 | 杭州海康威视数字技术股份有限公司 | 一种运动矢量确定方法和设备 |
WO2020007306A1 (zh) * | 2018-07-06 | 2020-01-09 | 杭州海康威视数字技术股份有限公司 | 一种解码、编码方法和设备 |
CN110691247A (zh) * | 2018-07-06 | 2020-01-14 | 杭州海康威视数字技术股份有限公司 | 一种解码、编码方法和设备 |
RU2776356C1 (ru) * | 2019-03-11 | 2022-07-19 | Ханчжоу Хиквижен Диджитал Текнолоджи Ко., Лтд. | Способ и устройство кодирования и декодирования, оборудование на стороне кодирования и оборудование на стороне декодирования |
WO2020182162A1 (zh) * | 2019-03-11 | 2020-09-17 | 杭州海康威视数字技术股份有限公司 | 编解码方法与装置、编码端设备和解码端设备 |
US11902563B2 (en) | 2019-03-11 | 2024-02-13 | Hangzhou Hikvision Digital Technology Co., Ltd. | Encoding and decoding method and device, encoder side apparatus and decoder side apparatus |
CN111526369A (zh) * | 2020-04-29 | 2020-08-11 | Oppo广东移动通信有限公司 | 视频的运动估计方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102710934A (zh) | 一种运动预测或补偿方法 | |
CN102611886A (zh) | 一种运动预测或补偿方法 | |
CN102611887A (zh) | 非整像素位置运动矢量的坐标值取整方法和装置 | |
CN104363451A (zh) | 图像预测方法及相关装置 | |
CN104769947B (zh) | 一种基于p帧的多假设运动补偿编码方法 | |
CN110312132A (zh) | 一种编解码方法、装置及其设备 | |
CN102075760B (zh) | 快速运动估计方法及装置 | |
CN108491763B (zh) | 三维场景识别网络的无监督训练方法、装置及存储介质 | |
CN103748880A (zh) | 图像序列的编码方法和装置及图像序列的解码方法和装置 | |
EP3343923A1 (en) | Motion vector field coding method and decoding method, and coding and decoding apparatuses | |
CN104219533A (zh) | 一种双向运动估计方法和视频帧率上转换方法及系统 | |
CN106031170A (zh) | 运动信息编码的方法 | |
JP2022530172A (ja) | 適応解像度ビデオ符号化のためのインター符号化 | |
CN104811726B (zh) | 帧率转换中运动估计的候选运动矢量选择方法 | |
CN102740071A (zh) | 可分级视频编解码器的编码设备及其方法 | |
WO2020253730A1 (zh) | 一种编解码方法、装置及其设备 | |
CN103327327A (zh) | 用于高性能视频编码hevc的帧间预测编码单元选择方法 | |
NZ590990A (en) | Content adaptive and art directable scalable video coding | |
CN102595110B (zh) | 视频编码方法、解码方法及终端 | |
CN104918047A (zh) | 一种双向运动估计的排除方法和装置 | |
CN102843554A (zh) | 帧间图像预测编解码方法及视频编解码器 | |
CN104601991A (zh) | 一种时域预测参数的搜索方法和装置 | |
CN104782126A (zh) | 用于对多视点图像进行编码/解码的设备和方法 | |
Wu et al. | Bayesian rule based fast TU depth decision algorithm for high efficiency video coding | |
CN101888558B (zh) | 一种色度插值方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120725 |