首页> 中国专利> 视频编解码中的位置索引方法及视频解码器

视频编解码中的位置索引方法及视频解码器

摘要

本发明公开了一种视频编解码中的位置索引方法,包括以下步骤:A.计算并存储至少部分重复计算的所有可能结果;B.创建用于定位读取步骤A所存储结果的地址控制装置;C.在视频编解码过程中,执行至所述至少部分重复计算时,调用所述地址控制装置读取相应的结果。本发明由于将原来需要进行的大量运算通过提前计算出并存储,以此构成查找表,进而在实际的运算尤其是实际的运动矢量预测过程中仅需通过查事先存储的结果(查找表)即可获得相应的结果,这样大大节省了时间,提高了系统的实时性。相应的,本发明还提出一种视频解码器。

著录项

  • 公开/公告号CN101257625A

    专利类型发明专利

  • 公开/公告日2008-09-03

    原文格式PDF

  • 申请/专利权人 海信集团有限公司;

    申请/专利号CN200810015490.7

  • 发明设计人 刘韶;刘微;

    申请日2008-04-01

  • 分类号H04N7/26(20060101);H04N7/46(20060101);H04N7/50(20060101);

  • 代理机构37101 青岛联智专利商标事务所有限公司;

  • 代理人邵新华

  • 地址 266100 山东省青岛市崂山区株洲路151号

  • 入库时间 2023-12-17 20:41:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-20

    未缴年费专利权终止 IPC(主分类):H04N7/26 授权公告日:20110420 终止日期:20190401 申请日:20080401

    专利权的终止

  • 2011-04-20

    授权

    授权

  • 2008-10-29

    实质审查的生效

    实质审查的生效

  • 2008-09-03

    公开

    公开

说明书

技术领域

本发明涉及视频编解码技术领域,尤其涉及一种视频编解码中的位置索引方法及视频解码器。

背景技术

目前在视频编解码领域中,经常会重复的采用大量的数学计算。这些计算重复繁琐,计算量非常大,占用时间较多,使得系统的实时性较差。以下以视频编解码标准AVS为例。

视频编解码标准AVS的编解码算法都采用不同的帧类型模式,分别为I、P、B帧。采用P、B帧的目的是为了提高压缩率,P、B帧都采用了运动预测的方法,这其中还包涵着对运动矢量的预测,即是用当前块的周围宏块的运动矢量预测当前块的运动矢量,如图1所示,图示了当前块E及其左块A、左上块D、上块B、右上块C的位置关系,其中当前块E的运动矢量根据块A、B、C和D的原始运动矢量进行预测。

运动矢量预测是以块为单位,根据宏块类型进行预测。在AVS中,运动矢量预测最重要也是最复杂的一步是:当A、B、C块中至少有两个块可用时,且当前块E不是16×8或8×16模式时,对当前块E的运动矢量的预测需要进行如下缩放计算:

MVA_x=Sign(mvA_x)×((Abs(mvA_x)×BlockDistanceE×(512/BlockDistanceA)+256)>>9)

                                                                                1(a)

MVA_y=Sign(mvA_y)×((Abs(mvA_y)×BlockDistanceE×(512/BlockDistanceA)+256)>>9)

                                                                                1(b)

MVB_x=Sign(mvB_x)×((Abs(mvB_x)×BlockDistanceE×(512/BlockDistanceB)+256)>>9)

                                                                                1(c)

MVB_y=Sign(mvB_y)×((Abs(mvB_y)×BlockDistanceE×(512/BlockDistanceB)+256)>>9)

                                                                                1(d)

MVC_x=Sign(mvC_x)×((Abs(mvC_x)×BlockDistanceE×(512/BlockDistanceC)+256)>>9)

                                                                                1(e)

MVC_y=Sign(mvC_y)×((Abs(mvC_y)×BlockDistanceE×(512/BlockDistanceC)+256)>>9)

                                                                                1(f)

其中,MVΦ_Ω表示当前块E在块Φ的Ω方向上的运动矢量预测值,Φ取值为A、B、C,表示是哪个块;Ω取值为x、y,表示横纵坐标。Sign()表示判断括号内的表达式的符号,Abs()表示对括号内的值取绝对值;BlockDistanceΦ表示块Φ到其参考块之间的距离,“>>”表示右移操作,其后所跟数字为右移的位数;mvΦ_Ω表示块Φ在Ω方向上的原始运动矢量;“/”表示取整操作。

所述BlockDistanceΦ通过以下方式计算:

如果块Φ的参考块在块Φ之前(显示顺序),则BlockDistance等于块Φ的DistanceIndex减去所述参考块的DistanceIndex的差、加上512的和、再与512取模;

如果块Φ的参考块在块Φ之后(显示顺序),则BlockDistance等于所述参考块的DistanceIndex减去块Φ的DistanceIndex的差、加上512的和、再与512取模。

其中,DistanceIndex表示块距离索引,其定义如下:

如果块的所有像素都属于所在隔行扫描图像的第二场(显示顺序)或者都属于所在逐行扫描图像的底场,DistanceIndex等于picture_distance乘2加1;否则,DistanceIndex等于picture_distance乘2。其中,picture_distance是指图像间距。

上述计算BlockDistanceΦ的描述可以概括为下述表达式:

BlockDistance=(|DistanceIndexCur-DistanceIndexRef|+512)%512       1(g)

DistanceIndexCur表示当前块Φ的块距离索引,DistanceIndexRef表示块Φ的参考块的块距离索引,“%”表示取模操作。

通过以上描述可以看出,运动矢量预测需要经过1(a)、1(b)、1(c)、1(d)、1(e)、1(f)、1(g)中的乘法、除法及取模等复杂运算,其计算过程非常耗时,并且所述块距离索引的获得也要耗费一定的时间。另外,通常在一帧图像中需要进行上述计算的块占有较大的比例。因此可见,计算重复繁琐、计算量非常大、占用时间较多、系统实时性较差这些问题尤为显著。

发明内容

本发明所要解决的技术问题在于提供一种快速的运动矢量预测方法。

为了解决上述技术问题,本发明提出了一种视频编解码中的位置索引方法,包括以下步骤:

A、计算并存储至少部分重复计算的所有可能结果;

B、创建用于定位读取步骤A所存储结果的地址控制装置;

C、在视频编解码过程中,执行至所述至少部分重复计算时,调用所述地址控制装置读取相应的结果。

其中,所述位置索引方法应用于视频编解码过程中的运动矢量预测过程,步骤A计算并存储运动矢量预测中至少部分重复计算的所有可能结果。

另外,步骤A中所述所有可能结果以查找表的形式存储;并且,步骤B中所述地址控制装置为位置索引装置,通过对索引字段的确定来定位需要读取的所述所有可能的结果。

可选的,其应用于AVS视频编解码标准、MPEG2视频编解码标准或H.264视频编解码标准。

其中:所述三种视频编解码标准的解码过程包括对视频码流进行熵解码的熵解码步骤及对视频信号进行预测重建并输出重建后的视频信号的预测重建的步骤;并且,所述步骤A和步骤B设置在熵解码步骤之前,所述步骤C在预测重建步骤当中。

另外,所述熵解码步骤和预测重建步骤之间还包括:

反量化步骤,用于对接收到的视频码流的量化系数进行缩放,得到变换系数;

反变换步骤,用于将所述变换系数转换为空域值。

另一方面,本发明还提出一种视频解码器,包括:

计算模块,用于计算运动矢量预测中至少部分重复计算的所有可能结果;

存储模块,用于存储所述计算模块得到的所有可能结果;

地址控制模块,用于定位读取所述存储模块所存储结果;

运动矢量预测模块,用于进行运动矢量预测,当执行至所述至少部分重复计算时,调用所述地址控制装置读取相应的结果,并完成运动矢量预测过程。

其中,还包括熵解码模块、反量化反变换模块、运动补偿模块及重构模块;所述视频码流依次经过所述熵解码模块、反量化反变换模块、运动矢量预测模块、运动补偿模块及重构模块,并最终输出重构后的视频图像;并且,所述计算模块和存储模块工作于所述熵解码之前,所述地址控制模块工作于运动矢量预测过程。

优选的,所述所有可能结果以查找表的形式存储于所述存储模块中;所述地址控制模块为位置索引模块,其通过对索引字段的确定来定位需要读取的所述所有可能的结果。

其中,其应用于AVS视频编解码标准、MPEG2视频编解码标准或H.264视频编解码标准。

本发明由于将原来需要进行的大量运算通过提前计算出并存储,以此构成查找表,进而在实际的运算尤其是实际的运动矢量预测过程中仅需通过查事先存储的结果(查找表)即可获得相应的结果,这样大大节省了时间,提高了系统的实时性。以下结合附图对本发明进行详细说明,本发明的这些及其他目的、特征、方面和优点将变得更加明显。

附图说明

图1是一个当前块与其周围块的位置关系的一个实施例的示意图;

图2是一种视频解码方法的一个实施例的流程框图;

图3是一种运动矢量预测方法的一个实施例的流程图;

图4是当前图像与其参考图像的参考关系的一个实施例的示意图;

图5是基于图4实施例的查找表的一个实施例的结构示意图;

图6是当前图像与其参考图像的参考关系的另一个实施例的示意图;

图7是基于图6实施例的查找表的一个实施例的结构示意图;

图8是当前图像与其参考图像的参考关系的再一个实施例的示意图;

图9是基于图8实施例的查找表的一个实施例的结构示意图;

图10是当前图像与其参考图像的参考关系的第四个实施例的示意图;

图11是当前图像与其参考图像的参考关系的第五个实施例的示意图;

图12是基于图11实施例的查找表的一个实施例的结构示意图;

图13是当前图像与其参考图像的参考关系的第六个实施例的示意图;

图14是基于图13实施例的查找表的一个实施例的结构示意图;

图15是本发明一种视频解码器的一个实施例的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合实施例及实施例附图对本发明作进一步详细的说明。

参考图2,图示了一种视频解码方法的一个实施例的流程示意图。从本实施例中也可以清楚的反应出本发明所述位置索引方法的过程,如图所示,从编码端来的码流首先经过熵解码,熵解码后的数据经过反量化、反变换、预测重建及环路滤波后,最终输出至处理芯片外。其中,本发明所述的计算至少部分重复计算并生成查找表的过程在所述熵解码过程之前完成,即在解码前完成。所述查找表在图示预测重建中的运动矢量预测过程中使用。对于查找表中所有可能结果的计算及表的结构,可以参考后述实施例。并且,所述生成查找表的过程中同时创建地址控制装置,优选的可以是位置索引,以在运动矢量预测过程中通过该装置对所存储的计算结果进行定位读取。

以AVS标准为例,将进一步说明本发明视频编解码中的位置索引方法。参考图3,图示了AVS标准中运动矢量预测过程的一个实施例的流程图。如图所示,同时结合图1,包括以下步骤:

S31,判断当前块的左块、上块及右上块中是否只有一个可用,若是,则执行步骤S34,否则执行步骤S32。即,对于图1来说,就是判断当前块E的周围的A、B、C块是否仅有一个可用,这里所述的是否可用可以通过判断相应块的参考索引值实现,若参考索引值为-1则表示不可用,否则可用。例如,对于块B来说,判断其参考索引值是否为-1,若是,则块B不可用,否则可用。所述参考索引值的定义和计算可以参考AVS标准中的相关定义及计算,在这里不进行进一步阐述;

S32,判断当前块所在的宏块的编码模式是否为8×16或16×8编码模式,若是,则执行步骤S35,否则执行步骤S33。即,对于图1来说,就是判断当前块E所在的宏块是否是8×16或16×8编码模式,因为E的编码模式可能是16×16、16×8、8×16或8×8模式;

S33,通过查找查找表及计算对当前块的左块、上块及右上块的原始运动矢量进行缩放,得到缩放后的值,最后根据该值进行计算得到当前块的运动矢量预测值。即,对于图1来说,通过查找查找表及计算对A、B、C的原始运动矢量进行缩放,具体的缩放方法可以按照背景技术部分描述进行,即对式1(a)、1(b)、1(c)、1(d)、1(e)、1(f)进行计算,得到缩放后的值MVA_x、MVA_y、MVB_x、MVB_y、MVC_x、MVC_y,再进行如下计算:

定义距离Dist(MV1,MV2)=Abs(x1-x2)+Abs(y1-y2),其中MV1=[x1,y1],MV2=[x2,y2]。定义VAB等于Dist(MVA,MVB),VBC等于Dist(MVB,MVC),VCA等于Dist(MVC,MVA)。当前块E的运动矢量预测值的计算如下:

第一步,计算VAB,VBC,VCA三者的平均值;

第二步,如果第一步得到平均值和VAB相等,则当前块E的运动矢量预测值等于MVC;否则,如果所述平均值和VBC相等,则当前块E的运动矢量预测值等于MVA;否则,则当前块E的运动矢量预测值等于MVB。

其中,MVA=[xA,yA]=[MVA_x,MVA_y];MVB=[xB,yB]=[MVB_x,MVB_y];MVC=[xC,yC]=[MVC_x,MVC_y]。

通过本步骤可以最终得到当前块E不是8×16或16×8编码模式时的当前块E的运动矢量预测值。其中,在计算MVA_x、MVA_y、MVB_x、MVB_y、MVC_x、MVC_y时,本步骤通过查找查找表得到其中的:

BlockDistanceE×(512/BlockDistanceA);

BlockDistanceE×(512/BlockDistanceB);

BlockDistanceE×(512/BlockDistanceC);

通过查查找表得到上述值后,再进行剩余的计算得到MVA_x、MVA_y、MVB_x、MVB_y、MVC_x、MVC_y。

在本发明的另一实施例中,计算MVA_x、MVA_y、MVB_x、MVB_y、MVC_x、MVC_y时,本步骤通过查找查找表得到其中的:

BlockDistanceE;BlockDistanceA;BlockDistanceB;BlockDistanceC;通过查查找表得到上述值后,再进行剩余的计算得到MVA_x、MVA_y、MVB_x、MVB_y、MVC_x、MVC_y。

在本发明的再一个实施例中,计算MVA_x、MVA_y、MVB_x、MVB_y、MVC_x、MVC_y时,本步骤通过查找查找表得到各个块及其对应参考块的块距离索引,即背景技术中的DistanceIndexCur、DistanceIndexRef。得到该值后,再进行剩余的计算过程,得到MVA_x、MVA_y、MVB_x、MVB_y、MVC_x、MVC_y。

上述的所有剩余计算可以以背景技术中的描述为标准判断,也可以以其它适当的标准进行判断。

本步骤中查找表的结构可以参考后续实施例的描述,在这里不进行说明;

本步骤结束后,执行步骤S36;

S34,当前块的运动矢量预测值为所述可用块的原始运动矢量。即,当步骤S31中判断条件成立时,表示仅有一个块可用,则该可用块的原始运动矢量作为当前块的运动矢量预测值;

本步骤结束后,执行步骤S36

S35,进行相应的运动矢量预测得到当前块的运动矢量预测值。即,当步骤S32判断当前块所在的宏块是8×16或16×8编码模式时,则采用该种情况下的运动矢量预测方法得到当前块的运动矢量预测值;

在本发明的一个实施例中,本步骤可以采用以下方式得到当前块的运动矢量预测值:

若当前块所在宏块为8×16编码模式:

1)当E为左块时:如果A和E的参考索引值相同,则当前块E的运动矢量预测值等于块A的原始运动矢量;否则执行步骤S33;

2)当E为右块时:如果C和E的参考索引值相同,则当前块E的运动矢量预测值等于块C的原始运动矢量;否则执行步骤S33;

若当前块所在宏块为16×8编码模式:

1)当E为上块时:如果B和E的参考索引值相同,则当前块E的运动矢量预测值等于块B的原始运动矢量;否则执行步骤S33;

2)当E为下块时:如果A和E的参考索引值相同,则当前块E的运动矢量预测值等于块A的原始运动矢量;否则执行步骤S33。

S36,结束。即,结束对当前块E的运动矢量预测。

以上仅阐述了对一个块的运动矢量预测过程,其它块只需重复上述过程即可。需要说明的是,由于运动矢量预测存在于AVS标准、H.264标准及MPEG-4标准中,在各个标准的运动矢量预测中都需要进行大量重复运算,因此均可以采用本发明所述方法对需要进行的计算提前计算得出并存储供查询使用。另外,图3所示的实施例的整个过程为AVS的标准流程,但是在此基础上的改进AVS运动矢量预测方法同样可以适用本发明所述方法,这也同样在本发明的范围内。

参考图4,图示了当前图像与其参考图像之间的参考关系的一个实施例的示意图。对于一幅要解码的P帧来说,其参考图像只能是如图4所示,即只能是其前面的两帧(I帧或P帧)中的一帧,当前P帧中任何一个宏块的MbRefIndex(块参考索引值)有两种可能,对应BlockDistance也只能有两种可能,tmp_MV_predict(一个中间变量,存储BlockDistanceE×(512/BlockDistanceΦ)的计算结果值)对应有2×2=4,四种可能,分别是(同时参考图1):

当前块E与A(或B或C)都参考参考帧0,此时块E和A(或B或C)的MbRefIndex都是“0”,即是图5表中tmp_MV_predict00的情况;

当前块E与A(或B或C)都参考参考帧1,此时块E和A(或B或C)的MbRefIndex都是“1”,即是图5表中tmp_MV_predict11的情况;

当前块E的参考帧是0,A(或B或C)的参考帧是1,二者的MbRefIndex分别为0和1,即是图5表中tmp_MV_predict01的情况;

当前块E的参考帧是1,A(或B或C)的参考帧是0,二者的MbRefIndex分别为1和0,即是图5表中tmp_MV_predict10的情况;

基于图4所示的实施例上述描述,图5展示了所述当前块E运动预测时所用到的查找表,该查找表所存储的内容为BlockDistanceE×(512/BlockDistanceΦ)的计算结果值,记为tmp_MV_predict;其中Φ为A、B或C。

参考图6,图示了当前图像与其参考图像之间的参考关系的另一个实施例的示意图。对于一幅要解码的B帧来说,其参考图像只能是如图6所示,即只能是其前面的一帧(I帧或P帧)或后面的一帧(I帧或P帧)。同时参考图1。

当预测帧内宏块的前向运动矢量时,其宏块的MbRefIndex只能有一种可能,相应的,BlockDistance也只能是一种可能,中间变量tmp_MV_predict也只能是一种可能:当前块E和A(或B或C)都参考前向参考帧0,此时二者的MbRefIndex均为0,即图7所示表中tmp_MV_predict00的情况;

当预测帧内宏块的后向运动矢量时,其宏块的MbRefIndex只能有一种可能,相应的,BlockDistance也只能是一种可能,中间变量tmp_MV_predict也只能是一种可能:当前块E和A(或B或C)都参考后向参考帧0,此时二者的MbRefIndex均为0,但是在查表过程中需要以MbRefIndex+2=2为索引进行查找,(在后向运动式量预测过程中均需要在原始MbRefIndex基础上加2进行查表),即图7所示表中tmp_MV_predict22的情况。

基于图6所示实施例的上述描述,图7展示了所述当前块E运动预测时所用到的查找表。

参考图8,图示了当前图像与其参考图像之间的参考关系的再一个实施例的示意图。对于一幅要解码的P帧的上半场来说,其参考图像只能是如图8所示,即其参考图像只能是前面的两帧(I帧或P帧)中上下半场中的一场,场内任何一个宏块的MbRefIndex只能有四种可能,相应的BlockDistance只能有四种可能,中间变量tmp_MV_predict有4×4=16,16种可能情况,如图9表所示,不在一一说明。

另外,参考图8,图示了当前图像与其参考图像之间的参考关系的第四个实施例的示意图。对于一幅要解码的P帧的下半场来说,其参考图像只能是如图10所示,即场内任何一个宏块的MbRefIndex有四种可能,相应的,BlockDistance有四种可能,中间变量tmp_MV_predict有4×4=16,16种可能情况,其表结构同样可以参考图9所示表,但其中具体的值不同。

基于图8所示实施例的上述描述,图9展示了所述当前块E运动预测时所用到的查找表。

参考图11,图示了当前图像与其参考图像之间的参考关系的第五个实施例的示意图。对于一幅要解码的B帧的上半场,其参考图像只能是如图11所示,即:

若预测帧内宏块的前向运动矢量,其宏块的MbRefIndex有两种可能,相应的,BlockDistance有两种可能,中间变量tmp_MV_predict有2×2=4,四种可能,分别是:

当前块E与A(或B或C)都参考前向参考场0,此时块E和A(或B或C)的MbRefIndex均为0,即图12表中tmp_MV_predict00的情况;

当前块E与A(或B或C)都参考前向参考场1,此时块E和A(或B或C)的MbRefIndex均为1,即图12表中tmp_MV_predict11的情况;

当前块E的前向参考场是0,A(或B或C)的前向参考场是1,二者的MbRefIndex分别为0和1,即图12表中tmp_MV_predict01的情况;

当前块E的前向参考场是1,A(或B或C)的前向参考场是0,二者的MbRefIndex分别为1和0,即图12表中tmp_MV_predict10的情况;

若预测帧内宏块的后向运动矢量,其宏块的MbRefIndex有两种可能,相应的BlockDistance也有两种可能,中间变量tmp_MV_predict有2×2=4,四种情况,分别是:

当前块E与A(或B或C)都参考后向参考场0,此时块E和A(或B或C)的MbRefIndex均为0,但是在查表过程中需要以MbRefIndex+2=2为索引进行查找,即图12表中tmp_MV_predict22的情况;

当前块E与A(或B或C)都参考后向参考场1,此时块E和A(或B或C)的MbRefIndex均为1,但是在查表过程中需要以MbRefIndex+2=3为索引进行查找,即图12表中tmp_MV_predict33的情况;

当前块E的后向参考场是0,A(或B或C)的后向参考场是1,二者的MbRefIndex分别为0和1,但是在查表过程中分别需要以MbRefIndex+2=2和MbRefIndex+2=3为索引进行查找,即图12表中tmp_MV_predict23的情况;

当前块E的后向参考场是1,A(或B或C)的后向参考场是0,二者的MbRefIndex分别为1和0,但是在查表过程中分别需要以MbRefIndex+2=3和MbRefIndex+2=2为索引进行查找,即图12表中tmp_MV_predict32的情况;

基于图11所示实施例的上述描述,图12展示了所述当前块E运动预测时所用到的查找表。

参考图13,图示了当前图像与其参考图像之间的参考关系的第六个实施例的示意图。对于一幅要解码的B帧的下半场来说,其参考图像只能是如图13所示,即:若预测帧内宏块的前向运动矢量,其宏块的MbRefIndex有两种可能,相应的,BlockDistance也有两种可能,中间变量tmp_MV_predict有2×2=4,四种可能,分别是:

当前块E与A(或B或C)都参考前向参考场0,此时块E和A(或B或C)的MbRefIndex均为0,即图14表中tmp_MV_predict00的情况;

当前块E与A(或B或C)都参考前向参考场1,此时块E和A(或B或C)的MbRefIndex均为1,即图14表中tmp_MV_predict11的情况;

当前块E的前向参考场是0,A(或B或C)的前向参考场是1,二者的MbRefIndex分别为0和1,即图14表中tmp_MV_predict01的情况;

当前块E的前向参考场是1,A(或B或C)的前向参考场是0,二者的MbRefIndex分别为1和0,即图14表中tmp_MV_predict10的情况;

若预测帧内宏块的后向运动矢量,其宏块的MbRefIndex有两种可能,相应的,BlockDistance也有两种可能,中间变量tmp_MV_predict有2×2=4,四种可能,分别是:

当前块E与A(或B或C)都参考后向参考场0,此时块E和A(或B或C)的MbRefIndex均为0,但是在查表过程中分别需要以MbRefIndex+2=2为索引进行查找,即图14表中tmp_MV_predict22的情况;

当前块E与A(或B或C)都参考后向参考场1,此时块E和A(或B或C)的MbRefIndex均为1,但是在查表过程中分别需要以MbRefIndex+2=3为索引进行查找,即图14表中tmp_MV_predict33的情况;

当前块E的后向参考场是0,A(或B或C)的后向参考场是1,二者的MbRefIndex分别为0和1,但是在查表过程中分别需要以MbRefIndex+2=2和MbRefIndex+2=3,即图14表中tmp_MV_predict23的情况;

当前块E的后向参考场是1,A(或B或C)的后向参考场是0,二者的MbRefIndex分别为1和0,但是在查表过程中分别需要以MbRefIndex+2=3和MbRefIndex+2=2,即图14表中tmp_MV_predict32的情况。

基于图13所示实施例的上述描述,图14展示了所述当前块E运动预测时所用到的查找表。

其中,查找表12和14虽然结构相同,但是其存储的具体值不同。另外,本具体实施方式部分的各个查找表中MbRefIndex_E 0、MbRefIndex_E 1、MbRefIndex_E 2、MbRefIndex_E 3表示当前块E的MbRefIndex取0,1,2,3的四种可能情况;MbRefIndex_Φ0、MbRefIndex_Φ1、MbRefIndex_Φ2、MbRefIndex_Φ3表示块Φ的MbRefIndex取0,1,2,3的四种可能情况,Φ取A、B或C;在各个表中,当前块E的MbRefIndex可能情况与块Φ的MbRefIndex可能情况的交叉对应值tmp_MV_predict即为所要查找的值,其中对于MbRefIndex_Em和MbRefIndex_Φn所对应的tmp_MV_predict记为tmp_MV_predictmn,m,n均在[0,3]范围内取值,当然这只是一种较为直观的表示方式而已,不应对本发明有所限定。另外,所有查找表中的“0”表示该种可能情况不会发生。

值得注意的是,以上查找表所采用的只是一种二维表格的表现形式,其还完全可以根据所有的可能情况制成一维表格,这同样在本发明的保护范围内。另外,在本具体实施方式中BlockDistanceE(与MbRefIndex_E一一对应)、BlockDistanceΦ(与MbRefIndex_Φ一一对应)的可能情况均列举了在4种以内的情况,对于超过4种的情况完全可以类推得到,在此不进行详细说明。

另外,图4、图6、图8、图10、图11、图13中方框内的数字即为该帧作为参考帧的号码,在前向运动矢量预测中,其与MbRefIndex的值一致,查表时以MbRefIndex为索引进行;在后向运动矢量预测中,其与MbRefIndex的值一致,但是查表时以MbRefIndex+2为索引进行,此时MbRefIndex+2可以视为新的MbRefIndex。

需要说明的是,本发明的核心在于将需要计算的内容提前计算得到并存储供查询,其并不局限于表的结构或存储形式,上述仅为具体的实施例,其不应限定本发明。在本发明的一个优选实施例中,所有的查找表的具体存储可以采用数组的方式实现;本发明所述查找表中所存储的内容并不限于具体实施方式部分的tmp_MV_predict,其还可以是各个块的BlockDistance、块距离索引数据或512/BlockDistanceΦ等等,本发明也不局限于表中所存储内容。

在本发明一种视频编解码中运动矢量预测方法的另一个实施例中,在H.264标准中同样可以采用该方法。H.264标准中时域直接模式下亮度运动矢量和参考索引的推导过程当中,运动矢量mvL0,mvL1作为共同位置子宏块分割块的运动矢量mvCol的缩放值,按照下面过程计算(具体可以参考H.264标准文本):

tx=(16 384+Abs(td/2))/td                                   15-1

DistScaleFactor=Clip3(-1024,1023,(tb*tx+32)>>6)        15-2

mvL0=(DistScaleFactor*mvCol+128)>>8                      15-3

mvL1=mvL0-mvCol                                            15-4

其中,tb和td按下式导出:

tb=Clip3(-128,127,DiffPicOrderCnt(currPicOrField,pic0)) 15-5

td=Clip3(-128,127,DiffPicOrderCnt(pic1,pic0))           15-6

上述DistscaleFactor表示距离缩放因子,Clip3为H.264标准所定义的函数,mvL0和mvL1表示运动矢量,DiffPicOrderCnt表示不同图像顺序计数函数,currPicOrField表示当前帧或场,pic0和pic1为帧/场变量,tb、tx和td为中间变量。

其中,对于15-5和15-6两个式子来说,由于pic1和pic0的个数为有限个(在H.264标准文档中有披露),在给定当前帧或场(currPicOrField)的情况下,tb和td的个数也是有限个;由于tb和td的个数也是有限个,因而根据式子15-1,tx的取值也是有限个;因而,根据式子15-2,距离缩放因子(DistscaleFactor)的取值也是有限个。因此,同样可以在熵解码之前提前计算得到距离缩放因子的有限个值的结果并存储,进而在执行至运动矢量预测过程中式子15-3的计算时直接读取已经计算好的结果即可,这样也可以大大的加快运动矢量的预测过程,提高效率。同样的,对于所述提前计算存储的数据可以以查找表的形式存在,在使用时通过相关的索引字段查找相应的值即可。由于过程与AVS标准类似,本领域普通技术人员完全可以在以上描述的基础上不花费创造性劳动来得到在H.264标准中的应用,因此,为避免重复阐述,在此不进行进一步的展开。

参考图15,图示了本发明一种视频解码器的一个实施例的结构示意图。如图所示,包括处理器151、熵解码模块152、反变换反量化模块153、帧内预测模块154、运动补偿模块155、重构模块156、环路滤波模块157、计算模块158及视频输出模块159、存储模块160。

其中,各个模块的功能阐述如下:

熵解码模块152,用于查找起始码,去除填充字节,以及解码定长码、变长编码、帧内预测模式及运动矢量等信息;

反变换反量化模块153,用于进行逆之字(即zigzag scan)扫描,计算出反余弦变换后的残差矩阵的系数,并进行反量化反变换输出残差图像矩阵;

帧内预测模块154,用于判断参考样本值和参考预测模式在存储器中的存放位置,计算出当前块的帧内预测模式,以及计算出当前块的帧内预测块;

运动补偿模块155,用于计算出运动矢量,读取参考像素并控制运动补偿进行,完成非整数点像素插值等处理后输出运动补偿后的预测块;在此过程中,运动矢量的预测中的至少部分重复运算的结果通过查找事先存储的结果获得;

重构模块156,用于将预测块和残差矩阵相加输出重构块;

环路滤波模块157,用于根据当前块位置和宏块编码信息确定滤波参数并进行滤波得到解码完毕的视频数据;

计算模块158,用于将运动补偿模块155中进行的运动矢量预测过程中的至少部分重复计算的结果在熵解码之前计算得到并存储,在所述运动矢量预测过程读取使用;

处理器151,用于解码过程中的数据处理及过程控制;

视频输出模块159,用于输出解码完毕的视频数据;

存储模块160,用于存储计算模块158计算得到的结果

地址控制模块161,用于在运动补偿模块155中的运动矢量预测过程中控制读取所述存储模块160中的结果。

由于上述处理器151、熵解码模块152、反变换反量化模块153、帧内预测模块154、重构模块156、环路滤波模块157、视频输出模块159均为现有技术,在此不进行更详细的说明;所述运动补偿模块155中的除运动矢量预测的部分也为现有技术,也不进行详细的阐述。另外,所述存储模块160可以采用FLASH存储器,不进行进一步阐述。所述地址控制模块161采用字段索引的方式对存储于存储模块160中的结果进行查找读取以供运动矢量预测使用。

下面通过对AVS解码器及H.264解码器的介绍来具体阐述本发明。

首先,在AVS标准中运动矢量预测过程中的重复计算至少包括以下三者之一:块的距离索引数据的计算;一个块与其参考块之间的距离的计算;当前块与其参考块之间的距离与512对所述当前块的左块、上块或右上块与其参考块之间的距离取整后值的乘积的计算。上述的三种计算在同一帧/场的运动矢量预测过程中会进行多次,因而将其提前计算得到并存储,而该功能则是由计算模块158和存储模块160来完成,具体内容可以参考图4至图14相关实施例的描述,在此不进行重复阐述;而对于具体的运动矢量预测过程则可以参考图3所示实施例,在此也不尽兴重复阐述。

其次,在H.264标准中时域直接模式下亮度运动矢量和参考索引的推导过程当中,运动矢量mvL0,mvL1作为共同位置子宏块分割块的运动矢量mvCol的缩放值,按照下面过程计算(具体可以参考H.264标准文本):

tx=(16 384+Abs(td/2))/td                                  15-1

DistScaleFactor=Clip3(-1024,1023,(tb*tx+32)>>6)       15-2

mvL0=(DistScaleFactor*mvCol+128)>>8                     15-3

mvL1=mvL0-mvCol                                           15-4

其中,tb和td按下式导出:

tb=Clip3(-128,127,DiffPicOrderCnt(currPicOrField,pic0))15-5

td=Clip3(-128,127,DiffPicOrderCnt(pic1,pic0))          15-6

其中,对于15-5和15-6两个式子来说,由于pic1和pic0的个数为有限个(在H.264标准文档中有披露),在给定当前帧或场(currPicOrField)的情况下,tb和td的个数也是有限个;由于tb和td的个数也是有限个,因而根据式子15-1,tx的取值也是有限个;因而,根据式子15-2,距离缩放因子(DistscaleFactor)的取值也是有限个。因此,同样可以在熵解码之前由计算模块158和存储模块160提前计算得到距离缩放因子的有限个值的结果并存储,进而在执行至运动矢量预测过程中式子15-3的计算时直接通过地址控制模块161读取已经计算好的结果即可,这样也可以大大的加快运动矢量的预测过程,提高效率。

同样的,对于所述提前计算存储的数据可以以查找表的形式存在,在使用时通过相关的索引字段查找相应的值即可。由于过程与AVS标准类似,本领域普通技术人员完全可以在以上描述的基础上不花费创造性劳动来得到在H.264标准中的应用,因此,为避免重复阐述,在此不进行进一步的展开。

通过以上全部的阐述,本领域普通技术人员完全可以实现在AVS、H.264标准直接应用本发明,并且在不花费创造性的劳动的前提下而推广应用于H.263、MPEG4等视频编解码标准中,无论应用于何种视频编解码标准其都在本发明的保护范围内。

以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号