首页> 中国专利> 算术编码中的概率模型存储方法

算术编码中的概率模型存储方法

摘要

本发明公开了一种算术编码中的概率模型存储方法。本发明依据概率模型所对应的SE类别设置不同概率模型与存储位置的映射关系,并根据设置的映射关系,将算术编码过程中连续读取的概率模型集中存储到对应的存储位置,使得算术编码过程中能够以行为单位同时读取多个所需的概率模型,从而减少了访问存储单元的次数,提高了算术编码的效率。而且,每一行尽可能多的存储概率模型,提高了存储资源的利用率,减少了资源浪费。

著录项

  • 公开/公告号CN101068359A

    专利类型发明专利

  • 公开/公告日2007-11-07

    原文格式PDF

  • 申请/专利权人 北京中星微电子有限公司;

    申请/专利号CN200710099891.0

  • 发明设计人 刘子熹;

    申请日2007-05-31

  • 分类号H04N7/26(20060101);H04N7/24(20060101);H03M7/30(20060101);

  • 代理机构11018 北京德琦知识产权代理有限公司;

  • 代理人王一斌;王琦

  • 地址 100083 北京市海淀区学院路35号世宁大厦15层

  • 入库时间 2023-12-17 19:20:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-07-30

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

    专利权的终止

  • 2011-03-16

    专利权的转移 IPC(主分类):H04N7/26 变更前: 变更后: 登记生效日:20110127 申请日:20070531

    专利申请权、专利权的转移

  • 2009-05-27

    授权

    授权

  • 2008-01-02

    实质审查的生效

    实质审查的生效

  • 2007-11-07

    公开

    公开

说明书

技术领域

本发明涉及视频处理中的算术编码技术,特别涉及一种算术编码中的概率模型存储方法。

背景技术

基于H.264视频编解码标准的算术编码为一种基于上下文的自适应二进制算术编码,其编码对象是视频信号中的语法元素(SE),分为残差SE和非残差SE。

其中,残差SE包括:表示当前块是否有非零系数的CBF、表示当前位置上的非0系数的绝对值减1的CALM、表示当前位置上的系数是否为0的SCF、表示当前位置上的系数是否为最后一个非0系数的LSCF等类别的数据,通常表示为4×4的亮度DC系数、亮度/色度AC系数、色度DC系数矩阵等,每种残差SE又分为5个子类别(Cat);非残差SE包括:表示前后向预测的参考图像索引的refIdx、表示运动向量和其前后向预测值之差的MVD、表示当前亮度和色度块的直流和交流分量的非零情况的CBP、表示当前帧中的宏块是否是skip模式的mb_skip_flag等类别的数据,通常仅表示为一个数值。

上述算术编码首先需要对SE进行二进制化处理,得到该SE所属SE类别对应的概率模型的序号。其中,一个概率模型对应一个序号;对于残差SE来说,SE类别是指某一类别下的一个子类别。然后调用并调整得到的序号对应的概率模型。

概率模型为7比特的数值,每个概率模型的初始值存储于存储单元中。在调用概率模型时,需要根据预设的不同概率模型与存储位置的映射关系,从相应的存储位置读取对应的概率模型,并将更新后的该概率模型再存储到对应的存储位置。

其中,存储位置是指:如RAM、E2PROM等存储器的存储地址,和/或寄存器等具有存储功能的物理实体。

在H.264视频编解码标准中,共有399种与不同SE类别对应的概率模型。不同概率模型的序号及其对应的SE类别如表1所示。

SE类别 序号表示当前I帧中的宏块类型的mb_type_I 0~10表示当前P帧中的宏块是否是skip模式的mb_skip_flag_P 11~13表示当前P帧中的宏块类型的mb_type_P 14~20表示当前P帧中的子宏块类型的sub_mb_type_P 21~23表示当前B帧中的宏块是否是skip模式的mb_skip_flag_B 24~26表示当前B帧中的宏块类型的mb_type_B 27~35表示当前B帧中的子宏块类型的sub_mb_type_B 36~39表示水平方向上运动向量和其前后向预测值之差的MVDX 40~46表示垂直方向上运动向量和其前后向预测值之差的MVDY 47~53ref_idx 54~59用于更新片的量化参数mb_qb_delta 60~63表示亮度为Intra4×4预测时色度块的预测方式的intra_chroma_pred_mode 64~67表示当前宏块的预测方式的prev_intra4×4_mode 68表示当前宏块的左方宏块和上方宏块的预测方式的rem_intra4×4_mode 69表示当前宏块是帧还是场模式的mb_field_decoding_flag 70~72CBP 73~84CBF    Cat=0 85~88CBF    Cat=1 89~92CBF    Cat=2 93~96CBF    Cat=3 97~100CBF    Cat=4 101~104SCF(Frame)    Cat=0 105~119SCF(Frame)    Cat=1 120~133SCF(Frame)    Cat=2 134~148SCF(Frame)    Cat=3 149~151SCF(Frame)    Cat=4 152~165LSCF(Frame)    Cat=0 166~180LSCF(Frame)    Cat=1 181~194LSCF(Frame)    Cat=2 195~209LSCF(Frame)    Cat=3 210~212
    LSCF(Frame)    Cat=4 213~226    CALM    Cat=0 227~236    CALM    Cat=1 237~246    CALM    Cat=2 247~256    CALM    Cat=3 257~265    CALM    Cat=4 266~275    片结束标志(End_of_slice_flag)  276    SCF(Field)    Cat=0 277~291    SCF(Field)    Cat=1 292~305    SCF(Field)    Cat=2 306~320    SCF(Field)    Cat=3 321~323    SCF(Field)    Cat=4 324~337    LSCF(Field)    Cat=0 338~352    LSCF(Field)    Cat=1 353~366    LSCF(Field)    Cat=2 367~381    LSCF(Field)    Cat=3 382~384    LSCF(Field)    Cat=4 385~398

                    表1

表1中,“(Frame)”表示帧模式,“(Field)”表示场模式。

现有技术中,所有概率模型是无序地存储在一个或多个存储单元中,即不同的概率模型与存储位置的映射关系是随意设定的。然而,在算术编码过程中,通常需要连续读取多个概率模型,这样,每次调用概率模型均需要在存储单元中查找,使得算术编码过程中访问存储单元的次数较多。

例如,由于残差SE通常表示为4×4的各种系数矩阵,因此对于残差SE的算术编码过程,一般需要针对矩阵中每个系数的CBF、CALM、SCF和LSCF对应的概率模型连续多次访问并查找存储单元。以算术编码采用帧模式、存储单元为一个RAM、Cat=0为例,需要连续访问44次RAM,并根据不同序号的概率模型与RAM存储地址的映射关系,获取CBF对应的序号为85~88的4个概率模型、CALM对应的序号为227~236的10个概率模型、SCF(Frame)对应的序号为105~119的15个概率模型、LSCF(Frame)对应的序号为166~180的15个概率模型。

而且,随意为不同概率模型分配存储位置,造成了存储单元的资源利用混乱和资源浪费。

可见,现有技术中没有依据算术编码的过程有序地存储概率模型,从而使得算术编码的效率不高,且造成了存储资源的浪费。

发明内容

有鉴于此,本发明的一个主要目的在于,提供一种算术编码中的概率模型存储方法,能够提高算术编码的效率。

根据上述的一个主要目的,本发明提供了一种算术编码中的概率模型存储方法,包括:

根据概率模型所对应的语法元素SE类别,设置所有概率模型与存储位置的映射关系;

根据所述设置的映射关系,将相同SE类别对应的所有概率模型分别集中存储到对应的存储位置。

所述存储位置包括:随机存储器RAM的行地址。

所述RAM为一个或多个。

所述RAM的存储空间大小为56×56。

所述将所有概率模型分别存储到对应的存储位置为:

将同一SE类别对应的概率模型存储在同一个行地址;

和/或将多个SE类别分别对应的概率模型存储在同一个行地址。

所述将同一SE类别对应的概率模型存储在同一个行地址包括:

分别将表示当前块是否有非零系数的CBF对应的每个子类别Cat的概率模型集中存储在一行内;

分别将表示当前位置上的非0系数的绝对值减1的CALM对应的每个Cat的概率模型集中存储在两行内;

分别将场模式式下的表示当前位置上的系数是否为0的SCF与表示当前位置上的系数是否为最后一个非0系数的LSCF对应的每个Cat的概率模型集中存储在两行内;

分别将帧模式下的SCF与LSCF对应的每个Cat的概率模型集中存储在两行内。

所述将同一SE类别对应的概率模型存储在同一个行地址包括:

将表示当前P帧中的宏块是否是skip模式的mb_skip_flag_P对应的所有概率模型集中存储于一行内;

将表示当前I帧中的宏块类型的mb_type_I对应的所有概率模型集中存储于两行内。

所述将多个SE类别分别对应的概率模型存储在同一个行地址包括:

分别将mb_skip_flag_P、表示当前P帧中的宏块类型的mb_type_P、表示当前P帧中的子宏块类型的sub_mb_type_P、表示当前B帧中的宏块是否是skip模式的mb_skip_flag_B、表示当前B帧中的宏块类型的sub_mb_type_B、用于更新片的量化参数mb_qb_delta、表示当前宏块的预测方式的prev_intra4×4_mode、表示当前宏块的左方宏块和上方宏块的预测方式的rem_intra4×4_mode、表示当前宏块是帧还是场模式的mb_field_decoding_flag、表示亮度为Intra4×4预测时色度块的预测方式的intra_chroma_pred_mode中的一个或多个SE类别对应的概率模型,与其他SE类别对应的概率模型集中存储。

所述存储位置进一步包括:寄存器。

所述将所有概率模型分别存储到对应的存储位置进一步包括:

将片结束标识End_of_slice_flag对应的概率模型存储在寄存器中。

由上述技术方案可见,本发明依据概率模型所对应的SE类别,设置不同概率模型与存储位置的映射关系,并根据设置的映射关系,将算术编码过程中连续读取的概率模型集中存储到对应的存储位置,使得算术编码过程中能够以行为单位同时读取多个所需的概率模型,从而减少了访问存储单元的次数,提高了算术编码的效率。而且,每一行尽可能多的存储概率模型,提高了存储资源的利用率,减少了资源浪费。

附图说明

图1为本发明中的概率模型存储方法的示例性流程图。

图2为本发明实施例中的概率模型存储示意图。

具体实施方式

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

图1为本发明中的概率模型存储方法的示例性流程图。如图1所示,本实施例中的概率模型存储方法包括以下步骤:

步骤101,依据概率模型所对应的SE类别,设置不同概率模型与存储位置的映射关系,使得算术编码过程中连续读取的概率模型集中存储;

步骤102,根据设置的映射关系,将所有概率模型分别存储到对应的存储位置。

这样,即可降低算术编码过程中对存储单元的访问次数。

具体来说,本实施例中的集中存储至少满足以下两个条件或其中任意一个:

a、同一SE类别对应的概率模型尽可能存储在同一行,即同一SE类别对应的概率模型对应同一个行地址,这样,算术编码过程中即可以行为单位,一次读取同一SE类别对应的所有概率模型;

b、每一行尽可能多的存储概率模型,即多个SE类别对应的所有概率模型对应同一个行地址,这样,算术编码过程中即可以行为单位,一次读取一个或多个SE类别对应的所有概率模型,同时还提高了存储单元的资源利用率。

下面,以存储单元包括一个56×56的RAM和一个专用寄存器为例,对本实施例中的概率模型存储方法进行详细说明。

由于通常的算术编码过程中,对End_of_slice_flag对应的序号为276的概率模型访问较频繁,因此,将该SE类别对应的概率模型存储于专用寄存器中。其余的概率模型则存储于56×56的RAM中。

本实施例中不同概率模型与存储地址的映射关系可以如表2所示。

    SE类别--序号  存储地址    mb_type_I--0~2  RAM第1行    mb_type_I--3~10  RAM第2行    mb_skip_flag_P--11~13  RAM第3行    mb_type_P--14~20  RAM第4行    sub_mb_type_P--21~23  RAM第5行    mb_skip_flag_B--24~26  RAM第3行    mb_type_B--27~34  RAM第6行    mb_type_B--35  RAM第5行    sub_mb_type_B--36~39  RAM第5行    MVDX--40~46  RAM第7行    MVDY--47~53  RAM第8行    ref_idx--54~59  RAM第9行    mb_qb_delta--60~63  RAM第1行    intra_chroma_pred_mode--64~67  RAM第10行    prev_intra4×4_mode--68  RAM第9行    rem_intra4×4_mode--69  RAM第9行    mb_field_decoding_flag--70~72  RAM第10行    CBP--73~76  RAM第11行    CBP--77~84  RAM第12行    CBF/Cat=0--85~88  RAM第13行    CBF/Cat=1--89~92  RAM第14行    CBF/Cat=2--93~96  RAM第15行    CBF/Cat=3--97~100  RAM第16行    CBF/Cat=4--101~104  RAM第17行    SCF(Frame)/Cat=0--105~112  RAM第23行    SCF(Frame)/Cat=0--113~119  RAM第24行    SCF(Frame)/Cat=1--120~127  RAM第25行    SCF(Frame)/Cat=1--128~133  RAM第26行    SCF(Frame)/Cat=2--134~141  RAM第27行    SCF(Frame)/Cat=2--142~148  RAM第28行    SCF(Frame)/Cat=3--149~151  RAM第29行    SCF(Frame)/Cat=4--152~159  RAM第30行    SCF(Frame)/Cat=4--160~165  RAM第31行    LSCF(Frame)/Cat=0--166~173  RAM第32行
    LSCF(Frame)/Cat=0--174~180  RAM第33行    LSCF(Frame)/Cat=1--181~188  RAM第34行    LSCF(Frame)/Cat=1--189~194  RAM第35行    LSCF(Frame)/Cat=2--195~202  RAM第36行    LSCF(Frame)/Cat=2--203~209  RAM第37行    LSCF(Frame)/Cat=3--210~212  RAM第29行    LSCF(Frame)/Cat=4--213~220  RAM第38行    LSCF(Frame)/Cat=4--221~226  RAM第39行    CALM/Cat=0--227~230  RAM第13行    CALM/Cat=0--231~236  RAM第18行    CALM/Cat=1--237~240  RAM第14行    CALM/Cat=1--241~246  RAM第19行    CALM/Cat=2--247~250  RAM第15行    CALM/Cat=2--251~256  RAM第20行    CALM/Cat=3--257~260  RAM第16行    CALM/Cat=3--261~265  RAM第21行    CALM/Cat=4--266~269  RAM第17行    CALM/Cat=4--270~275  RAM第22行    End_of_slice_flag--276  专用寄存器    SCF(Field)/Cat=0--277~284  RAM第40行    SCF(Field)/Cat=0--285~291  RAM第41行    SCF(Field)/Cat=1--292~299  RAM第42行    SCF(Field)/Cat=1--300~305  RAM第43行    SCF(Field)/Cat=2--306~313  RAM第44行    SCF(Field)/Cat=2--314~320  RAM第45行    SCF(Field)/Cat=3--321~323  RAM第46行    SCF(Field)/Cat=4--324~331  RAM第47行    SCF(Field)/Cat=4--332~337  RAM第48行    LSCF(Field)/Cat=0--338~345  RAM第49行    LSCF(Field)/Cat=0--346~352  RAM第50行    LSCF(Field)/Cat=1--353~360  RAM第51行    LSCF(Field)/Cat=1--361~366  RAM第52行    LSCF(Field)/Cat=2--367~374  RAM第53行    LSCF(Field)/Cat=2--375~381  RAM第54行    LSCF(Field)/Cat=3--382~384  RAM第46行    LSCF(Field)/Cat=4--385~392  RAM第55行    LSCF(Field)/Cat=4--393~398  RAM第56行

                        表2

图2为本发明实施例中的概率模型存储示意图。如图2所示,设置如表2所示的不同概率模型与存储地址的映射关系,根据该映射关系将所有概率模型分别存储到对应的存储地址中,使得除序号为276的概率模型之外的其余概率模型,按照同一SE类别对应的概率模型尽可能存储在同一行和每一行尽可能多的方式存储于56×56的RAM中。

这样,对于除非残差SE的算术编码过程,mb_type_I、mb_type_B或CBP对应的所有概率模型,需要访问两次RAM才能够全部获取,而其他的每个SE类别对应的所有概率模型均只需通过一次访问RAM的一行而获得。

例如,对于mb_skip_flag_P对应的所有概率模型均存储于RAM的第3行,因此,只需读取RAM的第3行的所有数据即可获得mb_skip_flag_P对应的所有概率模型,同时,还获得了mb_skip_flag_B对应的所有概率模型;而对于mb_type_I对应的所有概率模型,也只需对RAM的第1行和第2行各读取一次即可获得。

如果RAM为38×84的RAM,即每行能够存储12个概率模型,则对于所有非残差SE来说,每个SE类别对应的所有概率模型均可通过一次访问RAM的一行而获得。

而且,如表1所示,mb_skip_flag_P、mb_skip_flag_B、sub_mb_type_P、等SE类别对应的概率模型数量较少,因而可以将所有这些SE类别或其中的一部分SE类别对应的概率模型存储于RAM中的任何位置,分别与其他SE类别对应的概率模型共处一行,节省了RAM的资源。

对于残差SE的算术编码过程,以算术编码在采用帧模式、Cat=0或1为例,只需要连续访问6次RAM:

第1次,读取4个CBF对应的概率模型和4个CALM对应的概率模型,例如读取RAM的第13行或第14行;

第2次,读取8个SCF(Frame)对应的概率模型,即读取RAM的第23行或第25行;

第3次,读取8个LSCF(Frame)对应的概率模型,即读取RAM的第32行或第34行;

第4次,读取剩余的相同Cat的SCF(Frame)对应的概率模型,即读取RAM的第24行或第26行;

第5次,读取剩余的相同Cat的LSCF(Frame)对应的概率模型,即读取RAM的第33行或第35行;

第6次,读取剩余的相同Cat的CALM对应的概率模型,即读取RAM的第18行或第19行。

而对于Cat=3的残差SE来说,只需要连续访问3次RAM:

第1次,读取4个CBF对应的概率模型和4个CALM对应的概率模型,即读取RAM的第16行;

第2次,读取所有4个SCF和4个LSCF对应的概率模型,即读取RAM的第29行;

第3次,读取剩余的CALM对应的概率模型,即读取RAM的第21行。

这样,将相同SE类别的概率模型集中存储,即可使得上述两个访问过程中的访问次数分别限制为6次和3次,提高了算术编码的效率。

而且,由于算术编码在采用帧模式和场模式的情况下,分别对应SCF(frame)和LSCF(frame)、SCF(field)和LSCF(field),因此,依据不同的Cat,将SCF(frame)与LSCF(frame)对应的概率模型集中存储、将SCF(field)与LSCF(field)对应的概率模型集中存储,可进一步提高算术编码的效率。

如果算术编码只采用帧模式或场模式中的一种,则不需要SCF(field)和LSCF(field)对应的概率模型、或者不需要SCF(frame)和LSCF(frame)对应的概率模型。此时,仅需要39×56的RAM即可。

实际应用中,也可以将所有概率模型分别存储于两个RAM中。例如,将算术编码过程中读写次数多的概率模型存储在一个RAM中,将读写次数相对较少的其他概率模型存储于另一个RAM中。这样,两个RAM的行地址数都较少,集中对一个RAM的访问就进一步提高了算术编码的效率。

由于对RAM同时读和写的情况较少,因此考虑到节省硬件资源,本实施例的RAM较佳地采用单端口RAM(single-port RAM,SRAM),相对于双端口RAM来说,在读写速度相同的情况下节省了一半的硬件资源。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号