一种运动估计中确定运动矢量代价的方法及装置制造方法

文档序号:7811679阅读:191来源:国知局
一种运动估计中确定运动矢量代价的方法及装置制造方法
【专利摘要】本发明公开了一种便于硬件实现的确定运动矢量代价的方法及装置。所述运动估计中确定运动矢量代价的方法,包括:针对待编码的当前帧所分成的每一个宏块,根据当前宏块使用的QP值、以及预先为当前帧配置的基准QP及其波动范围,从基准QP及其波动范围内各QP值对应的查找表中选取需要使用的查找表;根据当前宏块使用的MV值、以及选取出的需要使用的查找表,确定当前宏块使用的MV值对应的COST值。使用本方案,可以有效降低运动矢量代价计算部分的硬件逻辑的复杂度,从而获得相对较低的功耗与较小的硅片面积。
【专利说明】一种运动估计中确定运动矢量代价的方法及装置

【技术领域】
[0001]本发明涉及运动估计【技术领域】,尤其涉及一种运动估计中确定运动矢量代价的方法及装置。

【背景技术】
[0002]运动估计(Mot1n Estimat1n)是视频压缩中广泛使用的技术,同时是视频压缩过程中最核心且运算量最大的部分之一,如何高质量与高效率的进行运动估计至关重要。运动估计的基本思想是将图像序列的每一帧分成许多互不重叠的宏块(Macroblocks),并认为宏块内所有象素的位移量都相同,然后对每个宏块到参考帧(REF)某一给定的特定搜索范围内根据一定的匹配准则找出与当前块最相似的块,即匹配块,匹配块与当前块的相对位移即为运动矢量(Mot1n Vector,MV) 0视频压缩的时候,只需保存运动矢量和残差数据就可以完全恢复出当前块。
[0003]H.264 是 ITU(Internat1nal Telecommunicat1n Unite,国际通信联盟)和MPEG (Mot1n Picture Experts Group,运动图像专家组)联合制定的视频编码标准。X264是开源的且公认的最高质量的H.264编解码器的实现,目前获得了广泛的认可与使用,即便如此,巨大的运算量使得高分辨率的实时视频录制在软件层面也难以实现,专用集成电路则是较为可行的实现方式之一。然而如何在电路级实现如此庞大的逻辑规模也有着较大的挑战,将算法与硬件的特点相结合,从中找到巧妙的方法成为了大家努力研究的方向之
O
[0004]X264中采用了基于最佳匹配块的运动估计算法,运动估计的过程即是计算与寻求最优匹配块代价(COST)的过程。匹配块的代价通常由当前块的残差数据代价、运动矢量代价与参考帧代价组成。匹配块的代价一定程度上代表着当前块编码后所需花费码字的代价(视频压缩后的尺寸即由一个个的码字组成),代价越低则意味着当前运动矢量下的当前块能取得越好的编码效果。计算各代价的过程均具有一定的复杂度。
[0005]X264中运动矢量代价由公式[I]确定:
[0006]MV_C0ST = lambda*(log2f(MV|+l)*2+0.718+ !! i)+5f [I]
[0007]其中,MV_C0ST表示运动矢量代价,lambda表示拉格朗日系数,由编码过程中的量化参数(Quantizat1n Parameter, QP)映射得到。从上述公式[I]可以看到计算过程中包含有对数计算,对数计算运算量十分庞大,为此,X264中又进一步在编码的初始化阶段预先将所有MV与QP相对应的COST值预先计算并保存在查找表中,在后续实际的运动估计过程中通过查表直接得到。其中,每一个QP值对应一张查找表,每一张查找表用于表示MV与COST之间的对应关系,现有技术中,MV与COST之间是——对应关系。
[0008]这种处理方式在软件层面固然是一个很好的方法,然而在硬件层面这将给硬件设计带来一定的挑战,考虑到H.264标准中QP的取值范围是O?51,相应的,对应52张查找表;而MV的取值范围更大,以MV±2048为例,则整个查找表的尺寸将超过200Kbyte。具体实施中,若不采用查找表而使用动态计算的方式会由于对数计算而使得硬件电路变得不切实际;若采用查找表,如将查找表置于硬件内部则因为表的尺寸而占用大块的硬件资源,如将查找表置于外存中动态取值则将消耗额外的外存带宽,且又会因为外存访问延迟而影响性能。综上,亟待提供一种便于硬件实现的确定运动矢量代价的方案。


【发明内容】

[0009]本发明实施例提供一种便于硬件实现的确定运动矢量代价的方法及装置,用以有效降低运动矢量代价计算部分的硬件逻辑的复杂度,从而获得相对较低的功耗与较小的硅片面积。
[0010]本发明实施例提供一种运动估计中确定运动矢量代价的方法,包括:
[0011]针对待编码的当前帧所分成的每一个宏块,根据当前宏块使用的量化参数QP值、以及预先为当前帧配置的基准QP及其波动范围,从所述基准QP及其波动范围内各QP值对应的查找表中选取需要使用的查找表,所述查找表用于表示运动矢量MV与代价COST之间的对应关系;
[0012]根据当前宏块使用的MV值、以及选取出的需要使用的查找表,确定所述MV值对应的COST值。
[0013]基于同一技术构思,本发明实施例提供一种运动估计中确定运动矢量代价的装置,包括:
[0014]存储模块,用于存储预先为当前帧配置的基准QP及其波动范围内各QP值对应的查找表,所述查找表用于表示运动矢量MV与代价COST之间的对应关系;
[0015]选取模块,用于针对待编码的当前帧所分成的每一个宏块,根据当前宏块使用的量化参数QP值、以及所述基准QP及其波动范围,从所述存储模块中选取需要使用的查找表;
[0016]确定模块,用于根据当前宏块使用的MV值、以及选取出的需要使用的查找表,确定所述MV值对应的COST值。
[0017]本发明实施例提供的运动估计中确定运动矢量代价的方法及装置,考虑到实际编码中一帧内采用的不同数值的QP的个数通常不会太多,因此预先设定一帧的基准QP,并且配置基准QP的波动范围,编码过程中只会在基准QP的基础上,在波动范围内上下波动使用有限数量的QP值。由于基准QP及其波动范围所限定的范围相比现有技术中QP的取值范围大大减小,基准QP及其波动范围内的各QP值分别对应一张查找表,有限数量的QP值使得查找表的数量减少,从而有效降低了整个查找表的尺寸,使得运动矢量代价计算部分的硬件逻辑的复杂度降低,从而获得相对较低的功耗与较小的硅片面积。
[0018]本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

【专利附图】

【附图说明】
[0019]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0020]图1为本发明实施例中确定运动矢量代价的方法流程图;
[0021]图2为本发明实施例中确定运动矢量代价的装置框图;
[0022]图3为本发明实施例中选取模块的一种可能结构示意图。

【具体实施方式】
[0023]本发明实施例提供一种便于硬件实现的确定运动矢量代价的方法及装置,用以有效降低运动矢量代价计算部分的硬件逻辑的复杂度,从而获得相对较低的功耗与较小的硅片面积。以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0024]本发明实施例提供的确定运动矢量代价的方案,将对运动矢量代价计算部分进行简化设计,具体包括:
[0025]简化设计策略一
[0026]考虑到实际编码中一帧内采用的不同数值的QP(量化参数)的个数通常不会太多,本发明实施例中,设定一帧的基准QP,并且配置基准QP的波动范围,编码过程中只会在基准QP的基础上,在波动范围内上下波动使用有限数量的QP值。基准QP及其波动范围内的各QP值分别对应一张查找表,通过控制波动范围,可以控制QP的数量,有限数量的QP值使得查找表的数量减少,从而有效降低了整个查找表的尺寸。
[0027]简化设计策略二
[0028]考虑到通常的实际视频录制过程中MV (运动矢量)的实际分布规律,通常MV取值较小的个数占的比重较高,另外计算COST(Rm)过程中由于对数的引入,COST值的变化具有随着MV的取值从小到大的变化而越来越趋缓的特点。基于上述考虑,本发明实施例提供了一套特殊结构的查找表,查找表中记录MV的各取值范围以及每一个取值范围所映射的COST值,且随着MV的取值从小到大的变化,MV的取值范围逐渐变大。将现有技术中MV值与COST值一一对应的映射关系,改变为固定取值范围内的若干MV与一个COST值相对应的映射关系,并且取值较大的MV对应的MV的取值范围也较大,从而在显著降低单张查找表尺寸的同时保持有效的计算精度。
[0029]具体实施中,查找表可以采用一种较佳结构,即随着MV的取值从小到大的变化,MV的取值范围呈2的指数函数趋势增长,如表I所示,以MV取值O?2047为例进行说明。
[0030]表I
[0031]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
3234 36 38 40 42 44 46 48 50 52 54 56 58 60 62
3335 37 39 41 43 45 47 49 51 53 55 57 59 61 63 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124
67 71 75 79 83 87 91 95 99 103 107 111 115 119 123 127 128 136 144 152 160 168 176 184 192 200 208 216 224 232 240 248
135 143 151 159 167 175 183 191 199 207 215 223 231 239 247 255
256 272 288 304 320 336 352 368 384 400 416 432 448 464 480 496
271 287 303 319 335 351 367 383 399 415 431 447 463 479 495 511 512 544 576 608 640 672 704 736 788 800 832 864 896 928 960 992
543 575 607 639 671 703 735 767 799 831 863 的 5 927 959 991 1023 1024 1088 1152 1216 1280 1344 1408 1472 1536 1600 1664 1728 1792 1856 1920 1984
1087 1151 1215 1279 1343 1407 1471 1535 1599 1163 1727 1791 1855 1919 1983 2047
[0032]上述表I表示了 MV所对应的COST值的查找规律,每个单元格代表一个COST值的存储,里面的数值表示映射到本COST值的MV的取值范围,可以看到:
[0033]当MV的取值为O?31时,MV的取值范围为1,即MV值与COST值——对应;
[0034]当MV的取值为32?63时,MV的取值范围为2,即每两个MV对应一个COST值;
[0035]当MV的取值为64?127时,MV的取值范围为4,即每四个MV对应一个COST值;
[0036]当MV的取值为128?255时,MV的取值范围为8,即每八个MV对应一个COST值;
[0037]当MV的取值为256?511时,MV的取值范围为16,即每十六个MV对应一个COST值;
[0038]当MV的取值为512?1023时,MV的取值范围为32,即每三十二个MV对应一个COST 值;
[0039]当MV的取值为1024?2047时,MV的取值范围为64,即每六十四个MV对应一个COST 值;
[0040]依此类推,精度逐步降低。
[0041]本发明实施例提供的特殊结构的查找表,相比所有MV值与COST值一一对应的查找表,单张查找表所需要的尺寸将显著降低,例如表I所不的查找表,其中每个格子代表I个16bit的存储空间,则查找表只需128个16bit的存储空间;同时考虑到COST值的分布特性,在较大MV时所带来的精度影响也较为有限。当然,表I仅是针对查找表的一种较佳结构举例说明,具体实施中,查找表可以不限于表I的具体结构,只要查找表中记录MV的取值范围以及每一个取值范围所映射的COST值,且随着MV的取值从小到大的变化,MV的取值范围逐渐变大,均可以达到降低查找表尺寸且保持计算精度的目的。
[0042]具体实施中,上述简化设计策略一和简化设计策略二可以配合使用,也可以单独使用。较佳的,简化设计策略一和简化设计策略二配合使用,例如,基于上面描述的有限数量的QP值的简化设计策略一,以基准QP的波动范围为[_4,3]为例,假设基准QP取值为30,则基准QP及其波动范围内各QP的取值分别为26、27、28、29、30、31、32、33,则相应的,仅需8张查找表;进一步的,如果每张查找表均采用表I所述的特殊结构,则硬件中只需要8*128*2 = 2Kbyte (8bit = lbyte)的整个查找表尺寸即可,而按照现有技术整个查找表的尺寸将超过200Kbyte,可见大大降低了查找表尺寸。
[0043]基于上述简化设计策略的介绍,本发明实施例提供了一种运动估计中确定运动矢量代价的方法,如图1所示,包括:
[0044]S101、针对待编码的当前帧所分成的每一个宏块,根据当前宏块使用的QP值、以及预先为当前帧配置的基准QP及其波动范围,从基准QP及其波动范围内各QP值对应的查找表中选取需要使用的查找表,其中,查找表用于表不MV与COST之间的对应关系。
[0045]在SlOl的具体实施中,可以在硬件中采用软件配置的方式预先设置基准QP及其波动范围,然后硬件根据当前宏块实际使用的QP值与基准QP的差值进行索引,选取具体需要使用哪张表(以基准QP及其波动范围内包括8个QP值为例,则对应8张查找表),具体实施中,可以选取该差值索引的QP所对应的查找表,然后再根据当前宏块使用的MV值进一步查出当前的COST值。
[0046]需要说明的是,假设基准QP的波动范围是[_4,3],则需要预先限定当前帧中每一个宏块使用的QP相对基准QP来说只会在[基准QP-4,基准QP+3]的范围内取值,所以只用8张查找表,利用当前宏块使用的QP值与基准QP的差值去映射这8张表中的一个。
[0047]较佳的,基准QP的波动范围限定为[_4,3]或者[-3,4]。相比于现有H.264标准中QP的取值范围是O?51,相应的,对应52张查找表;本发明实施中,QP的优选取值范围是基准QP-4?基准QP+3或者基准QP-3?基准QP+4,相应的,对应8张查找表,大大减少了查找表的数量,从而有效降低了整个查找表的尺寸。
[0048]S102、根据当前宏块使用的MV值、以及选取出的需要使用的查找表,确定当前宏块使用的MV值对应的COST值。
[0049]具体实施中,由于查找表用于表示MV与COST之间的对应关系,所以根据当前宏块使用的MV值,可以从选取出的需要使用的查找表中,确定出当前宏块使用的MV值对应的COST值,具体查找过程与现有技术中一致,不再赘述。
[0050]具体实施中,简化设计策略一和简化设计策略二可以配合使用,进一步对查找表的结构进行简化设计,采用特殊结构的查找表,即查找表中记录MV的各取值范围以及每一个取值范围所映射的COST值,且随着MV的取值从小到大的变化,MV的取值范围逐渐变大。较佳的,随着MV的取值从小到大的变化,MV的取值范围可以呈2的指数函数趋势增长,其中:
[0051 ] 当MV的取值为O?31时,每一个MV对应一个COST值;
[0052]当MV的取值为32?63时,每两个MV对应一个COST值;
[0053]当MV的取值为64?127时,每四个MV对应一个COST值;
[0054]当MV的取值为128?255时,每八个MV对应一个COST值;
[0055]当MV的取值为256?511时,每十六个MV对应一个COST值;
[0056]当MV的取值为512?1023时,每三十二个MV对应一个COST值;
[0057]当MV的取值为1024?2047时,每六十四个MV对应一个COST值;
[0058]依此类推。
[0059]基于同一技术构思,本发明实施例提供了一种运动估计中确定运动矢量代价的装置,由于该装置解决问题的原理与运动估计中确定运动矢量代价的方法相一致,因此该装置的实施可以参见方法的实施,重复之处不在赘述。
[0060]如图2所示,本发明实施例提供的运动估计中确定运动矢量代价的装置,包括:[0061 ] 存储模块201,用于存储预先为当前帧配置的基准QP及其波动范围内各QP值对应的查找表,所述查找表用于表不MV与COST之间的对应关系;
[0062]选取模块202,用于针对待编码的当前帧所分成的每一个宏块,根据当前宏块使用的QP值、以及基准QP及其波动范围,从存储模块201中选取需要使用的查找表;
[0063]确定模块203,用于根据当前宏块使用的MV值、以及选取出的需要使用的查找表,确定当前宏块使用的MV值对应的COST值。
[0064]具体实施中,存储模块201存储的查找表中记录MV的各取值范围以及每一个取值范围所映射的COST值,且随着MV的取值从小到大的变化,MV的取值范围逐渐变大。
[0065]较佳的,存储模块201存储的查找表中,随着MV的取值从小到大的变化,MV的取值范围呈2的指数函数趋势增长,其中:
[0066]当MV的取值为O?31时,每一个MV对应一个COST值;
[0067]当MV的取值为32?63时,每两个MV对应一个COST值;
[0068]当MV的取值为64?127时,每四个MV对应一个COST值;
[0069]当MV的取值为128?255时,每八个MV对应一个COST值;
[0070]当MV的取值为256?511时,每十六个MV对应一个COST值;
[0071]当MV的取值为512?1023时,每三十二个MV对应一个COST值;
[0072]当MV的取值为1024?2047时,每六十四个MV对应一个COST值;
[0073]依此类推。
[0074]具体实施中,选取模块202的一种可能结构,如图3所示,具体包括:
[0075]计算单元221,用于计算当前宏块使用的QP值与所述基准QP之间的差值,其中,当前帧中每一个宏块使用的QP在所述基准QP及其波动范围所限定的范围内取值;
[0076]索引单元222,用于根据计算单元221计算出的差值在基准QP的及其波动范围内进行索引,从存储模块201中选取该差值索引的QP所对应的查找表作为需要使用的查找表。
[0077]较佳的,基准QP的波动范围包括[_4,3]或者[-3,4]。相比于现有H.264标准中QP的取值范围是O?51,相应的,对应52张查找表;本发明实施中,QP的优选取值范围是基准QP-4?基准QP+3或者基准QP-3?基准QP+4,相应的,对应8张查找表,大大减少了查找表的数量,从而有效降低了整个查找表的尺寸。
[0078]本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要运动估计中确定运动矢量代价的装置具有上述功能,都应该在本申请的保护范围之内。
[0079]本发明实施例提供的运动估计中确定运动矢量代价的方法及装置,考虑到实际编码中一帧内采用的不同数值的QP的个数通常不会太多,因此预先设定一帧的基准QP,编码过程中只会在基准QP的基础上,在波动范围内上下波动使用有限数量的QP值,由于基准QP及其波动范围内的各QP值分别对应一张查找表,有限数量的QP值使得查找表的数量减少,从而有效降低了整个查找表的尺寸,使得运动矢量代价计算部分的硬件逻辑的复杂度降低,从而获得相对较低的功耗与较小的娃片面积。
[0080]进一步的,本发明实施例提供的运动估计中确定运动矢量代价的方法及装置,采用特殊结构的查找表,查找表中记录MV的各取值范围以及每一个取值范围所映射的COST值,且随着MV的取值从小到大的变化,MV的取值范围逐渐变大,将现有技术中MV值与COST值一一对应的映射关系,改变为固定取值范围内的若干MV与一个COST值相对应的映射关系,并且取值较大的MV对应的MV的取值范围也较大,从而在显著降低单张查找表尺寸的同时保持有效的计算精度。由于单张查找表尺寸的显著降低,进一步有效降低了整个查找表的尺寸,使得运动矢量代价计算部分的硬件逻辑的复杂度进一步降低,从而获得相对较低的功耗与较小的硅片面积。
[0081]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0082]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求以及等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种运动估计中确定运动矢量代价的方法,其特征在于,包括: 针对待编码的当前帧所分成的每一个宏块,根据当前宏块使用的量化参数QP值、以及预先为当前帧配置的基准QP及其波动范围,从所述基准QP及其波动范围内各QP值对应的查找表中选取需要使用的查找表,所述查找表用于表示运动矢量MV与代价COST之间的对应关系; 根据当前宏块使用的MV值、以及选取出的需要使用的查找表,确定所述MV值对应的COST 值。
2.如权利要求1所述的方法,其特征在于,所述查找表中记录MV的各取值范围以及每一个取值范围所映射的COST值,且随着MV的取值从小到大的变化,MV的取值范围逐渐变大。
3.如权利要求2所述的方法,其特征在于,随着MV的取值从小到大的变化,MV的取值范围呈2的指数函数趋势增长,其中: 当MV的取值为O?31时,每一个MV对应一个COST值; 当MV的取值为32?63时,每两个MV对应一个COST值; 当MV的取值为64?127时,每四个MV对应一个COST值; 当MV的取值为128?255时,每八个MV对应一个COST值; 当MV的取值为256?511时,每十六个MV对应一个COST值; 当MV的取值为512?1023时,每三十二个MV对应一个COST值; 当MV的取值为1024?2047时,每六十四个MV对应一个COST值; 依此类推。
4.如权利要求1至3任一所述的方法,其特征在于,所述根据当前宏块使用的QP值、以及预先为当前帧配置的基准QP及其波动范围,从所述基准QP及其波动范围内各QP值对应的查找表中选取需要使用的查找表,具体包括: 计算当前宏块使用的QP值与所述基准QP之间的差值,其中,当前帧中每一个宏块使用的QP在所述基准QP及其波动范围所限定的范围内取值; 根据所述差值在所述基准QP及其波动范围内进行索引,选取所述差值索引的QP所对应的查找表作为需要使用的查找表。
5.如权利要求4所述的方法,其特征在于,所述基准QP的波动范围包括[-4,3]或者[-3,4]。
6.一种运动估计中确定运动矢量代价的装置,其特征在于,包括: 存储模块,用于存储预先为当前帧配置的基准QP及其波动范围内各QP值对应的查找表,所述查找表用于表不运动矢量MV与代价COST之间的对应关系; 选取模块,用于针对待编码的当前帧所分成的每一个宏块,根据当前宏块使用的量化参数QP值、以及所述基准QP及其波动范围,从所述存储模块中选取需要使用的查找表; 确定模块,用于根据当前宏块使用的MV值、以及选取出的需要使用的查找表,确定所述MV值对应的COST值。
7.如权利要求6所述的装置,其特征在于,所述存储模块存储的查找表中记录MV的各取值范围以及每一个取值范围所映射的COST值,且随着MV的取值从小到大的变化,MV的取值范围逐渐变大。
8.如权利要求7所述的装置,其特征在于,所述存储模块存储的查找表中,随着MV的取值从小到大的变化,MV的取值范围呈2的指数函数趋势增长,其中: 当MV的取值为O?31时,每一个MV对应一个COST值; 当MV的取值为32?63时,每两个MV对应一个COST值; 当MV的取值为64?127时,每四个MV对应一个COST值; 当MV的取值为128?255时,每八个MV对应一个COST值; 当MV的取值为256?511时,每十六个MV对应一个COST值; 当MV的取值为512?1023时,每三十二个MV对应一个COST值; 当MV的取值为1024?2047时,每六十四个MV对应一个COST值; 依此类推。
9.如权利要求6至8任一所述的装置,其特征在于,所述选取模块,具体包括: 计算单元,用于计算当前宏块使用的QP值与所述基准QP之间的差值,其中,当前帧中每一个宏块使用的QP在所述基准QP及其波动范围所限定的范围内取值; 索引单元,用于根据所述计算单元计算出的差值在所述基准QP的及其波动范围内进行索引,从所述存储模块中选取所述差值索引的QP所对应的查找表作为需要使用的查找表。
10.如权利要求9所述的装置,其特征在于,所述基准QP的波动范围包括[-4,3]或者[-3,4]。
【文档编号】H04N19/42GK104185029SQ201410406168
【公开日】2014年12月3日 申请日期:2014年8月18日 优先权日:2014年8月18日
【发明者】翟云 申请人:北京君正集成电路股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1