一种hevc变换系数的熵编码上下文模型偏移值快速计算方法

文档序号:7802136阅读:246来源:国知局
一种hevc变换系数的熵编码上下文模型偏移值快速计算方法
【专利摘要】本发明涉及一种HEVC变换系数的熵编码上下文模型偏移值快速计算方法,该方法首先通过增加子系数块邻块类型矩阵并提出一种子系数块邻块类型矩阵快速更新方法,提高了子系数块间信息获取的速度;其次,构造了系数类型值与子系数块邻块类型和系数坐标之间的关系表,并通过预先计算及查表的方法快速获得系数编码所需上下文模型偏移值,提高了上下文模型选择速度。本发明所提出的针对高效视频编码HEVC变换系数的熵编码上下文模型偏移值快速计算方法能够在保证编码质量的前提下,有效提高HEVC变换系数熵编码的速度。
【专利说明】—种HEVC变换系数的熵编码上下文模型偏移值快速计算方法
【技术领域】
[0001]本发明属于多媒体编码领域,具体涉及一种HEVC变换系数的熵编码上下文模型偏移值快速计算方法,是一种通过修改编码数据结构及过程提高HEVC熵编码上下文模型选择效率的方法。
【背景技术】
[0002]HEVC是新一代视频编码标准,在预测编码、变换量化编码获得相应参数之后,需要进行熵编码以减少写入码流的熵冗余。HEVC采用了基于上下文的自适应二元算术编码(CABAC), CABAC主要包括几个步骤:(I) 二元化:对于非二元的参数需要首先进行二元化,以更方便在算术编码阶段进行概率划分;(2)上下文建模:在参数编码过程中,需要依据不同参数场景选择不同的上下文模型;(3)算术编码:获得参数及其上下文模型后,进行算术编码写入码流。
[0003]HEVC中的CABAC熵编码算法能够获得较高的编码性能,但由于以下两方面的原因,导致其计算复杂度显著较高= (I)HEVC熵编码相比H.264/AVC编码逻辑更加复杂,
H.264/AVC在系数编码过程中,编码系数非零标志位后,直接编码非零系数的余值及符号位,HEVC在编码系数非零标志位后,还需对部分非零系数编码是否大于I或是否大于2的标志位;(2)为了更好地减少统计冗余,提高对较大变换单元系数熵编码的效率,算术编码中系数非零标志位上下文模型选择依赖参数较多,对每个参数算术编码前均需要获取其上下文模型,而在选择上下文模型前又需要计算或读取多个编码特征参数,计算复杂度高的同时,在获取相邻子系数块信息及类型时访存也较多,导致熵编码上下文模型选择的计算复杂度显著提高。综合两方面原因,HEVC熵编码特别是系数编码上下文选择算法复杂度显著高于 H.264/AVC。
[0004]本发明主要针对HEVC熵编码上下文模型选择计算复杂度高的问题进行优化。已有一些方法对上下文模型选择计算复杂度进行优化,采用合并多个参数上下文模型方法,减少变换系数编码时上下文模型选择依赖的参数数量,降低熵编码计算复杂度,但这种简单的通过减少上下文模型和参数数量来降低熵编码计算复杂度的方法,不可避免会影响熵编码的性能。
[0005]本发明通过修改变换系数熵编码中子系数块间系数信息的存储结构,提高了子系数块间信息获取的效率;构造子系数块的相邻块类型值和系数坐标确定的系数类型值关系表,并通过预先计算及查表的方法快速获得系数非零标志位编码所需模型参数,降低复杂模型参数计算导致的高计算复杂度。从而在不影响编码性能的前提下,有效减少熵编码时间見杂度。

【发明内容】

[0006]针对HEVC变换系数熵编码复杂度高的问题,本发明公开了一种HEVC变换系数的熵编码上下文模型偏移值快速计算方法。该方法首先通过增加子系数块的相邻块类型矩阵,提高了子系数块间信息获取的速度;其次,构造子系数块的相邻块类型值和系数坐标确定的系数类型值关系表,通过预先计算及查表的方法快速获得系数非零标志编码所需模型参数,提高上下文模型选择速度。实验表明本方法能够在保证编码性能的前提下,有效地减少熵编码时间。
[0007]为实现上述目的,本发明采用下述技术方案:
[0008]步骤(I)、在当前变换系数块熵编码开始前,通过子系数块的相邻块类型和系数一维坐标建立系数类型值的查询表,建立子系数块的相邻块类型矩阵uiSigCoeffGroupPat,并预先计算并存储变换矩阵类型值iOffset,所述变换矩阵类型值iOffset是由变换系数矩阵的大小,扫描方向和编码分量三个值计算得到的编码参数;所述子系数块的相邻块类型包括4类,O号类-3号类;
[0009]步骤(2)、从最后一个非零子系数块开始对当前变换系数块扫描,对每一个扫描的子系数块执行步骤(3)至步骤(5),直至扫描完整个变换系数块;
[0010]步骤(3)、对于当前子系数块,预先计算子系数块类型值iType并存储,若由子系数块非零标志矩阵获知当前子系数块存在非零系数则在子系数块相邻块类型矩阵中传播类型信息,并根据当前子系数块的相邻块类型信息选择子系数块非零标志位编码的上下文模型;
[0011]步骤(4)、对当前子系数块,若其为变换系数块最后一个非零子系数块,则从该非零子系数块最后一个非零系数开始逆序依次扫描每一个系数,否则从最后一个系数开始逆序依次扫描每一个系数;并重复执行步骤(5),直至扫描完当前子系数块所有系数;
[0012]步骤(5)、对于每个系数,由子系数块的相邻块类型和系数坐标查询系数类型值cnt,并与预先计算的变换矩阵类型值iOffset值和子系数块类型值iType值加和得到系数非零标志位上下文模型偏移uiCtxSig。
[0013]所述步骤(I)具体包括如下步骤:
[0014]步骤(11)、将子系数块的相邻块类型和系数坐标确定的系数非零类型关系转化为一维关系表格;
[0015]步骤(12)、建立存储子系数块的相邻块类型值的uiSigCoeffGroupPat矩阵,用于在后续步骤中,采用较少访问内存的方式传播非零子系数块信息以获得每个子系数块的相邻块类型值,uiSigCoeffGroupPat矩阵中每个单元与子系数块——对应,变换矩阵最大为32 X 32,子系数块大小为4X 4,因此uiSigCoeffGroupPat矩阵大小为8 X 8,系数矩阵熵编码开始前初始化为全零矩阵;
[0016]步骤(13)、由当前变换系数矩阵的大小,扫描方向和编码分量计算变换矩阵类型值 iOffset。
[0017]所述步骤(3)具体包括如下步骤:
[0018]步骤(31)、由编码分量和当前子系数块位置计算子系数块类型值iType ;
[0019]步骤(32)、由子系数块非零标志矩阵uiSigCoeffGroupFlag获取当前子系数块是否存在非零系数信息,若当前子系数块存在非零系数,则当前子系数块的上侧子系数块对应的uiSigCoeffGroupPat矩阵中单元值加2,当前子系数块的左侧子系数块对应的uiSigCoeffGroupPat矩阵中单兀值加I ;[0020]步骤(33)、获取uiSigCoeffGroupPat矩阵中当前子系数块的相邻块类型值,可由判断当前子系数块的相邻块类型值是否非零求出子系数块的相邻块非零信息,得到子系数块非零标志位编码上下文模型偏移GroupSig,即可依此选择子系数块非零标志位编码上下文模型。
[0021]所述步骤(5)具体包括如下步骤:
[0022]步骤(51)、由子系数块编码前获取的当前子系数块的相邻块类型值,以及当前系数在子系数块中的坐标,通过查表获得当前系数类型值cnt ;
[0023]步骤(52)、由变换矩阵类型值iOffset、子系数块类型值iType和系数类型值cnt加和,得到系数非零标志位编码上下文模型偏移uiCtxSig,即可依此选择系数非零标志位编码上下文模型。
[0024]本发明与现有技术相比的优点在于:
[0025]1.本发明建立了子系数块的相邻块类型矩阵,并提出了一种系数块的相邻块类型矩阵快速更新方法,降低了子系数块的相邻块类型及非零信息获取的访存复杂度;
[0026]2.预先计算系数非零标志位编码上下文模型偏移所需参数值,避免在每个系数非零标志位编码时进行重复计算;
[0027]3.建立了系数类型值与子系数块邻块类型和系数一维坐标之间的关系表,在已知子系数块邻块类型和系数一维坐标后,可直接查表快速获得系数类型值,避免坐标转换和如图5所示的二维查表;
[0028]4.本发明能够在不影响变换系数熵编码性能的同时,有效降低变换系数熵编码上下文模型选择的计算复杂度。
【专利附图】

【附图说明】
[0029]图1为相邻子系数块类型为O时子系数块中不同位置系数的系数类型值。
[0030]图2为相邻子系数块类型为I时子系数块中不同位置系数的系数类型值。
[0031]图3为相邻子系数块类型为3时子系数块中不同位置系数的系数类型值。
[0032]图4为相邻子系数块类型为4时子系数块中不同位置系数的系数类型值。
[0033]图5为不同情况下获得的子系数块相邻块类型值。
[0034]图6为本发明中非零子系数块信息传播方式。
【具体实施方式】
[0035]为了提高HEVC视频编码器的编码速度,本发明提出了一种HEVC变换系数的熵编码上下文模型偏移值快速计算方法,主要针对新一代高效视频编码标准HEVC中变换系数矩阵的子系数块非零标志位及系数非零标志位的上下文模型选择过程进行优化。经过分析可知,子系数块非零标志位熵编码需要获知相邻子系数块非零信息GroupSig,系数非零标志位熵编码的上下文模型需要获得三部分值:(I)由变换系数矩阵大小、扫描方向和编码分量共同确定的变换矩阵类型值iOffset ; (2)由子系数块位置和编码分量共同确定的子系数块类型值iType ; (3)与子系数块的相邻块类型和系数坐标相关的系数类型值cnt。
[0036]本发明描述的方法主要包括三部分:首先,在系数矩阵编码前,通过系数块邻块类型和系数坐标建立系数类型值的查询表,并预先计算变换矩阵类型值;第二,在子系数块编码开始前,预先计算子系数块类型值;若当前子系数块非零,则在子系数块的相邻块类型矩阵中传播其非零信息,子系数块相邻块类型矩阵获取子系数块的相邻块类型值并计算获得相邻子系数块信息;第三,由子系数块的相邻块类型值和系数坐标查询系数类型值,与预先计算的变换矩阵类型值和子系数块类型值加和,获得系数非零标志位编码上下文偏移值。下面展开具体说明。
[0037]在介绍【具体实施方式】前,首先对本发明用到的参数进行说明。
[0038]uiSigCoeffGroupFlag:用于存储子系数块是否存在非零系数的数组,在本发明涉及的变换系数编码前已得到;
[0039]uiSigCoeffGroupPat:用于存储子系数块的相邻块类型值的数组;
[0040]GroupSig:用于子系数块非零标志位编码的上下文模型偏移值,当相邻子系数块不存在非零系数时,其值为0,反之为I ;
[0041]patternSigCtx:相邻子系数块类型值,图1至图4表示了相邻子系数块类型与相邻子系数块是否存在非零系数的对应关系;
[0042]iOffset:变换矩阵类型值,可根据变换矩阵的大小、色彩分量及扫描方式求出;
[0043]iType:子系数块类型值,可根据子系数块位置和色彩分量求出;
[0044]cnt:系数类型值,可根据相邻子系数块类型和系数坐标求出;
[0045]UiCtxSig:系数非零标志位编码上下文模型偏移值,可根据变换矩阵类型值iOffset,子系数块类型值iType和系数类型值cnt求出。
[0046]下面对本发明的技术方案做进一步的描述。本发明提供的快速上下文模型选择方法,具体分为以下部分:
[0047]1.熵编码存储结构优化及变换矩阵类型值预先计算
[0048]该部分主要是在系数矩阵编码前,建立系数类型值与子系数块邻块类型和系数坐标之间的关系表,建立并初始化子系数块相邻块类型矩阵,并预先计算变换矩阵类型值,【具体实施方式】如下:
[0049](I)建立系数类型值快速查询表
[0050]在标准编码器中,子系数块的相邻块类型和系数在子系数块中的位置确定系数的类型值,如图1至图4所示。已知子系数块的相邻块类型和系数一维坐标后,需先计算系数在子系数块中的二维横纵坐标值,再依据二维横纵坐标值查询如图5所示的二维表格求得系数类型值。本专利在熵编码前预先建立如表I所示4X 16的系数类型值查询表,可在已知子系数块的相邻块类型和一维系数坐标后,直接对照该系数类型值查询表,快速获得系数类型值。
[0051]表I系数类型值查询表
[0052] 坐标
O I 2 3 4 5 6 7 8 9 10 11 12 13 14 15
02110111011100000
12222111100000000
22100210021002100 32222222222222222
[0053](2)建立并初始化子系数块邻块类型矩阵
[0054]在熵编码前,根据变换矩阵大小和子系数块大小建立子系数块邻块类型矩阵uiSigCoeffGroupPat,并将其初始化为全零矩阵;因在HEVC中,变换矩阵最大为32 X 32,子系数块大小为4X4,因此uiSigCoeffGroupPat矩阵大小为8X8。
[0055](3)预先计算变换矩阵类型值
[0056]由于变换矩阵类型值iOffset仅与变换系数矩阵大小、扫描方向和编码分量有关,而与下一层的子系数块信息及系数信息无关,因此可在系数矩阵编码前预先计算并存储,在系数非零标志位编码时直接使用,从而降低在每个系数编码时对变换矩阵类型值的重复计算而额外引入的计算复杂度。
[0057]2.子系数块非零信息快速传播与非零标志位编码上下文模型偏移的快速计算
[0058]该部分主要是在依次对每个子系数块编码前,预先计算变换子系数块类型值,更新子系数块邻块类型矩阵,并选择子系数块非零标志位编码快速上下文模型。【具体实施方式】如下:
[0059](I)预先计算变换子系数块类型值
[0060]由于子系数块类型值iType只与子系数块位置和编码分量有关,而与系数信息无关,因此可在子系数块和系数编码前预先计算并存储,在系数非零标志位编码时直接使用,从而避免在每个系数编码时的重复计算。
[0061](2)更新子系数块邻块类型矩阵
[0062]子系数块的相邻块类型patternSigCtx分为如图5所示的4类:
[0063]I) O号类:右侧及下侧子系数块均为零子系数块;
[0064]2) I号类:右侧子系数块为非零子系数块,下侧子系数块为零子系数块;
[0065]3) 2号类:右侧子系数块为零子系数块,下侧子系数块为非零子系数块;
[0066]4) 3号类:右侧及下侧子系数块均为非零子系数块。
[0067]在标准编码器中,编码子系数块非零标志位前,需访问子系数块非零标志矩阵uiSigCoeffGroupFlag,获取右侧及下侧子系数块非零信息,以求出当前子系数块的相邻块信息GroupSig,用于子系数块非零标志位编码的上下文模型选择。同时在系数非零标志位编码前,需再次由子系数块非零标志矩阵获取右侧及下侧子系数块非零信息,以求出当前子系数块的相邻块类型patternSigCtx,用于系数块非零标志位编码的上下文模型选择。
[0068]经过分析可知,子系数块的相邻块信息值及类型值与非零子系数块直接相关,因此在本发明中,由非零子系数块在子系数块的相邻块类型矩阵中传播其非零信息,即若当前子系数块存在非零系数,则当前子系数块的上侧子系数块对应的uiSigCoeffGroupPat矩阵中单元值加2,当前子系数块的左侧子系数块对应的uiSigCoeffGroupPat矩阵中单元值加I。传播过程及结果如图6所示,其中图6中每个方框表示I个子系数块,非括号内的数值表示当前子系数块是否存在非零系数,若为I则存在,反之不存在,括号内数值为当前子系数块的相邻块类型值。
[0069](3)子系数块非零标志位编码上下文模型偏移值快速计算
[0070]子系数块的相邻块信息GroupSig表示当前子系数块的右侧及下侧子系数块是否存在非零系数,其与子系数块的相邻块类型patternSigCtx存在关系:
[0071]GroupSig = (patternSigCtx 幸 O)(I)
[0072]因此,在子系数块编码前,即可访问上述步骤(2)中已更新的子系数块邻块类型矩阵uiSigCoeffGroupPat,获取子系数块相邻块类型值patternSigCtx,并依据公式(I)求出子系数块非零标志位编码的上下文模型偏移值GroupSig,并以此获取编码子系数块非零标志位编码所需的上下文模型。[0073]3.非零子系数块系数非零标志位编码上下文模型偏移值快速计算
[0074]计算编码变换系数非零标志位所需的上下文模型共需要三部分值,其中变换矩阵类型值iOffset已在变换量化矩阵熵编码开始前求出,子系数块类型值iType已在每个子系数块编码开始前求出,在系数非零标志位编码时可直接使用。同时子系数块的相邻类型值patternSigCtx也已在子系数块编码前获得,获知系数坐标后,可查询表1所示的系数类型值与子系数块的相邻块类型和系数坐标的关系表获得当前系数类型值cnt。由iOffset、iType和cnt加和,即得到系数非零标志位编码的上下文模型偏移值uiCtxSig。
[0075]以上公开的仅为本发明的具体实施例。根据本发明提供的技术思想,本领域的技术人员所能思及的变化,都应落入本发明的保护范围内。
【权利要求】
1.一种HEVC变换系数的熵编码上下文模型偏移值快速计算方法,其特征在于:该方法步骤如下: 步骤(1)、在当前变换系数块熵编码开始前,通过子系数块的相邻块类型和系数一维坐标建立系数类型值的查询表,建立子系数块的相邻块类型矩阵uiSigCoeffGroupPat,并预先计算并存储变换矩阵类型值iOffset,所述变换矩阵类型值iOffset是由变换系数矩阵的大小,扫描方向和编码分量三个值计算得到的编码参数;所述子系数块的相邻块类型包括4类,O号类-3号类; 步骤(2)、从最后一个非零子系数块开始对当前变换系数块扫描,对每一个扫描的子系数块执行步骤(3)至步骤(5),直至扫描完整个变换系数块; 步骤(3)、对于当前子系数块,预先计算子系数块类型值iType并存储,若由子系数块非零标志矩阵获知当前子系数块存在非零系数则在子系数块相邻块类型矩阵中传播类型信息,并根据当前子系数块的相邻块类型信息选择子系数块非零标志位编码的上下文模型; 步骤(4)、对当前子系数块,若其为变换系数块最后一个非零子系数块,则从该非零子系数块最后一个非零系数开始逆序依次扫描每一个系数,否则从最后一个系数开始逆序依次扫描每一个系数;并重复执行步骤(5),直至扫描完当前子系数块所有系数; 步骤(5)、对于 每个系数,由子系数块的相邻块类型和系数坐标查询系数类型值cnt,并与预先计算的变换矩阵类型值iOffset值和子系数块类型值iType值加和得到系数非零标志位上下文模型偏移uiCtxSig。
2.如权利要求1所述的一种HEVC变换系数的熵编码上下文模型偏移值快速计算方法,其特征在于:所述步骤(1)具体包括如下步骤: 步骤(11)、将子系数块的相邻块类型和系数坐标确定的系数非零类型关系转化为一维关系表格; 步骤(12)、建立存储子系数块的相邻块类型值的uiSigCoeffGroupPat矩阵,用于在后续步骤中,采用较少访问内存的方式传播非零子系数块信息以获得每个子系数块的相邻块类型值,uiSigCoeffGroupPat矩阵中每个单元与子系数块——对应,变换矩阵最大为32 X 32,子系数块大小为4X4,因此uiSigCoeffGroupPat矩阵大小为8 X 8,系数矩阵熵编码开始前初始化为全零矩阵; 步骤(13)、由当前变换系数矩阵的大小,扫描方向和编码分量计算变换矩阵类型值iOffset。
3.如权利要求1所述的一种HEVC变换系数的熵编码上下文模型偏移值快速计算方法,其特征在于:所述步骤(3)具体包括如下步骤: 步骤(31)、由编码分量和当前子系数块位置计算子系数块类型值iType ; 步骤(32)、由子系数块非零标志矩阵uiSigCoeffGroupFlag获取当前子系数块是否存在非零系数信息,若当前子系数块存在非零系数,则当前子系数块的上侧子系数块对应的UiSigCoeffGroupPat矩阵中单元值加2,当前子系数块的左侧子系数块对应的uiSigCoeffGroupPat矩阵中单兀值加I ; 步骤(33)、获取uiSigCoeffGroupPat矩阵中当前子系数块的相邻块类型值,可由判断当前子系数块的相邻块类型值是否非零求出子系数块的相邻块非零信息,得到子系数块非零标志位编码上下文模型偏移GroupSig,即可依此选择子系数块非零标志位编码上下文模型。
4.如权利要求1所述的一种HEVC变换系数的熵编码上下文模型偏移值快速计算方法,其特征在于:所述步骤(5)具体包括如下步骤: 步骤(51)、由子系数块编码前获取的当前子系数块的相邻块类型值,以及当前系数在子系数块中的坐标,通过查表获得当前系数类型值cnt ; 步骤(52)、由变换矩阵类型值iOffset、子系数块类型值iType和系数类型值cnt加和,得到系数非零标 志位编码上下文模型偏移uiCtxSig,即可依此选择系数非零标志位编码上下文模型。
【文档编号】H04N19/13GK103929642SQ201410169125
【公开日】2014年7月16日 申请日期:2014年4月24日 优先权日:2014年4月24日
【发明者】张永飞, 徐飞, 樊锐, 姜宏旭, 李波 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1