首页> 中国专利> 帧内模式决策中并行CABAC-R算法的实现方法

帧内模式决策中并行CABAC-R算法的实现方法

摘要

本发明实施例提供了一种帧内模式决策中并行CABAC-R算法的实现方法。该方法主要包括:确定帧内模式决策中CABAC-R运算过程中的语法元素coeff_abs_level_greater1_flag和/或sig_coeff_flag中的各个系数对应的上下文模型;对同一种上下文模型中包含的所有bin两两成对处理,对同一种上下文模型中的所有成对bin并行执行。本发明实施例提出的帧内模式决策中CABAC-R对其中两个关键语法元素coeff_abs_level_greater1_flag和sig_coeff_flag做了并行处理,将各个分组的上下文模型对应的bin进行并行运算。从而极大提高了计算并行度,减少了硬件执行时间。本发明实施例提出的CABAC-R高效硬件电路结构,可以达到概率模型的实时更新,码率计算更精确,从而编码性能得到提升。

著录项

  • 公开/公告号CN105120275A

    专利类型发明专利

  • 公开/公告日2015-12-02

    原文格式PDF

  • 申请/专利权人 北京大学;

    申请/专利号CN201510438860.8

  • 申请日2015-07-23

  • 分类号H04N19/13;H04N19/70;H04N19/103;H04N19/61;

  • 代理机构北京市商泰律师事务所;

  • 代理人毛燕生

  • 地址 100871 北京市海淀区中关村颐和园路5号

  • 入库时间 2023-12-18 12:45:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-18

    授权

    授权

  • 2015-12-30

    实质审查的生效 IPC(主分类):H04N19/13 申请日:20150723

    实质审查的生效

  • 2015-12-02

    公开

    公开

说明书

技术领域

本发明涉及视频码流传输技术领域,尤其涉及一种帧内模式决策中 CABAC-R(Context-basedAdaptiveBinaryArithmeticCodingRate estimation,基于上下文自适应二进制算术编码的码率预估)的实现方法。

背景技术

HEVC(HighEfficiencyVideoCoding,高效率视频码流)是一种新的视 频压缩标准,可以替代H.264/AVC编码标准。HEVC是JCT-VC(Joint CollaborativeTeamonVideoCoding,视频编码联合组)制定的新一代视 频编码压缩标准,其核心目标是在H.264的基础上,将压缩效率提高一倍。即 在保证相同视频图像质量的前提下,视频码率减少50%[1-2]。参考图1,图1 所示为HEVC帧内模式决策流程图。帧内模式决策可以分为2个阶段,分别为粗 略模式决策(RMD,RoughModeDecision)和率失真优化(RDO,Rate DecisionOptimization)模式决策。RMD模式决策是指从全部35种帧内预测 模式中选择N种最有可能候选模式,RDO模式决策获取最优帧内模式和 PU/TU/CU块分割结构[3]。

在RDO模式决策中,从RMD中预选的N种模式都需要经过帧内预测,变换和 量化,然后量化后的系数块会经过两条不同的路径进行处理以得到失真D (Distortion)和码率R(Rate):第一条路径会经过二值化,然后根据对应 的上下文模型进行码率预估得到R;另外一路则经过反量化和反变换得到重构 像素,进而根据原始像素和重构像素计算得到D。在最后的模式决策时,利用 公式(1)选择cost最小的模式为最优模式。

Cost=D+λ·R(1)

上一段中已经指出D是指失真(Distortion),R指码率(Rate)。由(1) 可知,在模式决策过程中,码率预估技术具有至关重要的作用。更加准确的 码率R,会确保计算得到的cost更加精确,从而得到更优的编码性能。模式决 策过程中采用基于CABAC的码率预估技术,其行为与熵编码CABAC的编码行为 一致。首先对待编码的语法元素进行二值化,然后根据二值化的bin值和对应 的上下文模型计算各个bin的码率r,然后将所有bin对应码率r进行累加得到 整个块的码率R。在CABAC-R中存在数据依赖性,这种数据依赖性的来源是处 于相同上下文模型下的bin需要串行依次更新状态,这样做带来了模式决策性 能的提高,但对高效的硬件设计带来挑战。

CABAC-R技术的数据依赖性,也会导致在硬件电路设计中存在关键路径的 问题。在码率预估模块中,当多个bin采用同一个上下文模型时,上一个bin 更新后的状态会为下一个bin使用,这样导致在硬件实现时很难做并行处理。 对RDO模式决策过程进行流水设计,关键路径会出现在码率估计模块中。直接 采用CABAC技术会导致预估模块执行时间过长,影响模式决策模块的吞吐率。

为了解决基于CABAC码率预估的数据依赖性问题,目前,提出了一种面向 硬件可实现的算法有bypassbit估计算法方案。该方案中的码率估计技术会 经过二值化和码率预估过程。基于bypass的码率预估技术直接将二值化后的 bin个数作为码率R,不需要经过如图1所示的码率估计过程,从而将在码率预 估过程中的数据依赖性去除。

上述现有技术中的bypassbit估计算法方案的缺点为:该算法带来了性 能的极大损失,不能满足HEVC标准编解码器对视频质量的要求。

针对CABAC中码率预估的数据依赖性问题,现有技术还提出了基于CFBAC 的码率预估方法。该方法的核心思想是:在CTU(CodingTreeUnit,编码树 单元)内部进行帧内模式决策的过程时,上下文模型的概率不更新。这样在 帧内模式决策过程中,基于CABAC的码率预估技术的数据依赖性完全去除。为 了补偿部分性能,在一个CTU的最优模式决策结束以后,基于最优模式在CTU 内部重新遍历全部块,将概率更新到最新状态并传到下一个CTU。

参考图2,图2所示为CFBAC硬件架构。由于状态固定,使用同一种上下文 类型的所有最大概率符号(MPS,MostProbableSymbol)和最小概率符号 (LPS,LeastProbableSymbol)编码分配一样的概率。在JCTVC-G763中,对 于同一个上下文模型中的bin‘1’和bin‘0’,生成的bit分别是定值B1和 B0。在bit预估时只需要计算bin‘1’和bin‘0’的数量。计算公式如下所 示:

R=∑B0(n)*C0(n)+B1(n)*C1(n)(n∈contexts)(2)

上述现有技术中的基于CFBAC的码率预估方法的缺点为:在最终模式确定 后,需要进行状态更新,会增加模式决策的处理时间;在模式决策过程中概 率模型不更新会导致性能较低。

发明内容

本发明的实施例提供了一种帧内模式决策中并行CABAC-R算法的实现方 法,以实现减少帧内模式决策中并行CABAC-R算法的硬件执行时间。

为了实现上述目的,本发明采取了如下技术方案。

一种帧内模式决策中并行CABAC-R算法的实现方法,包括:

确定帧内模式决策中CABAC-R运算过程中的语法元素 coeff_abs_level_greater1_flag和/或sig_coeff_flag中的各个bin对应的上 下文模型;

对同一种上下文模型中包含的所有bin两两成对处理,对同一种上下文模 型中的所有成对bin并行执行。

优选地,所述的确定帧内模式决策中CABAC-R运算过程中的语法元素 coeff_abs_level_greater1_flag中的8个bin对应的上下文模型,包括:

将语法元素coeff_abs_level_greater1_flag中的8个bin分成4组,其中 第1-2个bin构成第一组,第3-4个bin构成第二组,第5-6个bin构成第三组, 第7-8个bin构成第四组;将每一组中的两个bin分配相同的上下文模型,各个 组的bin分配的上下文模型互不相同。

优选地,所述的上下文模型包括上下文模型1、上下文模型3、上下文模 型2和上下文模型0,所述语法元素coeff_abs_level_greater1_flag中的8个 bin对应24个上下文模型分配方式。

优选地,所述的对同一种上下文模型中包含的所有bin两两成对处理,对 同一种上下文模型中的所有成对bin并行执行,包括:

将所述第一组、第二组、第三组和第四组分别对应的上下文模型中的bin 并行执行,并且1个cycles更新完成所有的上下文模型的所有的bin。

优选地,所述的对同一种上下文模型中包含的所有bin两两成对处理,对 同一种上下文模型中的所有成对bin并行执行,包括:

给所述语法元素sig_coeff_flag表示的每个系数分别分配一个bin,各种 上下文模型所对应的bin并行执行;

将同一上下文模型中的所有bin按照扫描方向两两成对,每一对bin中第 一个bin设置该种上下文模型的初始输入状态,同一上下文模型中所有成对 bin并行执行,将最后一对bin更新的状态传递下一个系数组,并计算码率R, 而其它成对bin只计算码率R,不更新状态。

优选地,所述的方法还包括:所有上下文模型中的bin并行执行,并且通 过1个cycles更新完成所有的上下文模型的所有的bin。

优选地,所述的方法还包括:

在CABACR电路架构中的码率估计和状态更新电路中设置多个三级流水结 构,每个三级流水结构处理同一上下文模型中的两个连续bins,所述两个连 续bins包括bin0和bin1,多个三级结构并行执行;

优选地,同一个三级结构中的第一级结构从输入状态或第二级结构的反 馈状态中选择当前bin0、bin1的相应状态;

优选地,同一个三级结构中的第二级结构更新所述bin0、bin1的状态, 并计算bin0的bits,向第一级结构反馈状态更新情况;

优选地,同一个三级结构中的第三级结构计算bin1的bits。

由上述本发明的实施例提供的技术方案可以看出,本发明实施例提出的 帧内模式决策中CABAC-R(Context-basedAdaptiveBinaryArithmetic CodingRateestimation,基于上下文自适应二进制算术编码的码率预估) 快速算法,对其中两个关键语法元素coeff_abs_level_greater1_flag和 sig_coeff_flag做了并行处理,从而减少了硬件执行时间。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的 描述中变得明显,或通过本发明的实践了解到。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的 前提下,还可以根据这些附图获得其他的附图。

图1为现有技术提供的一种HEVC帧内模式决策流程图;

图2为现有技术提供的一种CFBAC预估算法硬件架构图;

图3是本发明提供的一种并行CABAC-R算法中一个CG中sig_coeff_flag上 下文模式简化举例;

图4是本发明提供的一种本发明2/1/0BinsCABAC-R引擎硬件流水示意 图;

图5是本发明提供的一种CABAC-R架构框图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出, 其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功 能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发 明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式 “一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解 的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步 骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、 整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被 “连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或 者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无 线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项 的任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语 (包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一 般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该 被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一 样定义,不会用理想化或过于正式的含义来解释。

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例 做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。

实施例一

本发明实施例在HM软件参考代码中采用CABAC-R预估能提高编码效率,但 是在CABAC-R中存在的上下文模型更新会产生硬件吞吐率降低的问题。为解决 此问题,本发明实施例在原有的CABAC-R技术基础上,在算法和架构上进行了 优化:

1.CABACR快速算法

与其他语法元素相比,语法元素coeff_abs_level_greater1_flag和 sig_coeff_flag在CABACR预估设计时存在瓶颈。本发明实施例提出了一种快 速算法来解决这两个语法元素上下文模型依赖性的问题。

在HEVC编码中,一个系数组(CG,CoefficientGroup)至多有8个 coeff_abs_level_greater1_flags在常规模式会编码[6]。如表1所示,语法 元素coeff_abs_level_greater1_flag的上下文模型选择取决于拖尾系数和 CG中比1大的系数位置。如表2所示为coeff_abs_level_greater1_flag8种不 同的上下文模型分布。在现有技术中,每种上下文模型分布下,处于相同上 下文模型下的bin必须串行依次更新状态,这便阻碍了硬件可实现性。如表2 中倒数第二行,有5个bin共用上下文模型3。如果一个循环(cycle)处理2个 bin,需要3个cycle。

表1coeff_abs_level_greater1_flags上下文模型选择

本发明实施例为解决这个问题,在表1中提出一个基于系数位置固定不变 的上下文模型。

将语法元素coeff_abs_level_greater1_flag中的8个bin分成4组,其中 第1-2个bin构成第一组,第3-4个bin构成第二组,第5-6个bin构成第三组, 第7-8个bin构成第四组。然后,将第一组中的两个bin分配相同的上下文模 型,各个组的bin分配的上下文模型互不相同。

所述的上下文模型包括上下文模型1、上下文模型3、上下文模型2和上下文 模型0,所述语法元素coeff_abs_level_greater1_flag中的8个bin对应如24 个上下文模型分配方式。

当将第一组中的两个bin分配上下文模型1,可以得到如下的6个上下文模型 分配方式:

将第一组中的两个bin分配上下文模型1,将每二组中的两个bin分配上下文 模型2,将每三组中的两个bin分配上下文模型3,将每四组中的两个bin分配 上下文模型0;

或者,

将第一组中的两个bin分配上下文模型1,将每二组中的两个bin分配上下文 模型2,将每三组中的两个bin分配上下文模型0,将每四组中的两个bin分配 上下文模型3;

或者;

将第一组中的两个bin分配上下文模型1,将每二组中的两个bin分配上下文 模型3,将每三组中的两个bin分配上下文模型2,将每四组中的两个bin分配 上下文模型0;

或者;

将第一组中的两个bin分配上下文模型1,将每二组中的两个bin分配上下文 模型3,将每三组中的两个bin分配上下文模型0,将每四组中的两个bin分配 上下文模型2;

或者;

将第一组中的两个bin分配上下文模型1,将每二组中的两个bin分配上下文 模型0,将每三组中的两个bin分配上下文模型2,将每四组中的两个bin分配 上下文模型3;

或者;

将第一组中的两个bin分配上下文模型1,将每二组中的两个bin分配上下文 模型0,将每三组中的两个bin分配上下文模型3,将每四组中的两个bin分配 上下文模型2;

同理,当将第一组中的两个bin分配上下文模型2、3和0时,也可以分别得 到6个上下文模型分配方式。

给语法元素coeff_abs_level_greater1_flag的每个bin对应的上下文模型 分别分配一个bin,4个组的上下文模型所对应的bin并行执行。

在本发明实施例中,示例性的,将模式1分配到前两个bins,模型2,3,0分 别被分配给其余的bins。在这个理论中,一个上下文模型最多分配2个bins。 该设计下,上下文模型分布如表2最后一行所示,上下文模型的选取只与bin 位置有关。

表2coeff_abs_level_greater1_flags上下文模型分布

模式1、2、3和0分别对应的两个bins由于互相没有依赖关系,可以分别 并行执行。由于,1个cycle可以处理2个bin,因此,应用本发明实施例的方 法,1个cycle可以将语法元素coeff_abs_level_greater1_flag的上下文模型 中的8个bin全部处理完成,大大节约了处理时间。

语法元素sig_coeff_flag表示一个CG中第一个系数的值是否为0。sig _coeff_flag等于0表示系数值为0,sig_coeff_flag等于1表示系数值不为0。 上下文模型的选择取决于当前CG的系数位置和相邻右边、下边的CG的特征。 一个CG中有16个系数位置,分别对应16个bin,这16个bin可以用相同或者不 同的上下文模型。在现有技术中,16个bin串行执行,如果CABAC的吞吐率是 2bins/cycle,总共最多需要8个cycle。

在本发明实施例中,给语法元素sig_coeff_flag表示的每个系数分别分 配一个bin,各种上下文模型所对应的bin并行执行。将同一上下文模型中的 所有bin按照扫描方向两两成对,每一对bin中第一个bin设置该种上下文模型 的初始输入状态,同一上下文模型中所有成对bin并行执行,将最后一对bin 更新的状态传递下一个系数组,并计算码率R,而其它成对bin只计算码率R, 不更新状态。

所有上下文模型中的bin并行执行,并且通过1个cycles更新完成所有的 上下文模型的所有的bin。

为了提高吞吐率,提出了快速上下文自适应算法。在快速算法中,同一 种上下文模型仅仅是通过当前CG处于该模型下的最后两个sig_coeff_flag系 数对应的bins更新上下文模型状态,并传递到下一个CG。该模型下前面剩余 的bins则只采用当前CG的输入状态成对处理来预估码率,并不更新上下文模 型状态。

参考图3,图3所示是一个sig_coeff_flag上下文模型简化的一个例子。扫 描模式是垂直扫描。上下文模式0,1,2分配给相应的系数位置。将第0列的上 下文模型2作为一个分组,将第1列的上下文模型1作为一个分组,将第2、3列 的上下文模型0作为一个分组,按照从下到上、从右到左的扫描顺序,将每个 分组中的上下文模型两两分成小小组,将第一个小小组中的第一个上下文模 型的输入状态设置为该分组的上下文模型的初始输入状态。比如,将黑色区 域中的(3,1),(2,3),(2,1)系数位置中的上下文模型的输入状态设置 为(3,3)系数位置中的上下文模型的输入状态;将黑色区域中的(1,1)系 数位置中的上下文模型的输入状态设置为(1,3)系数位置中的上下文模型的 输入状态;将黑色区域中的(0,1)系数位置中的上下文模型的输入状态设置 为(0,3)系数位置中的上下文模型的输入状态。在各个上下文模型对应的 bin的运行过程中,(2,0),(1,0)上下文模型位置对应的bin的执行结果 传输给下一个系数组,(0,0)上下文模型位置对应的bin的执行结果传输给 下一个系数组。在其它上下文模型位置,上下文状态不会更新。CG中所有的 bin能够完全并行执行,吞吐率可以达到16bins/cycle。

2.CABAC-R硬件电路设计

本发明实施例在CABACR电路架构中的码率估计和状态更新电路中设置多 个三级流水结构,每个三级流水结构处理同一上下文模型中的两个连续 bins,所述两个连续bins包括bin0和bin1,多个三级结构并行执行;

同一个三级结构中的第一级结构从输入状态或第二级结构的反馈状态中 选择当前bin0、bin1的相应状态;

同一个三级结构中的第二级结构更新所述bin0、bin1的状态,并计算 bin0的bits,向第一级结构反馈状态更新情况;

同一个三级结构中的第三级结构计算bin1的bits。

针对CABACR电路架构做了进一步的优化和流水级的划分。参考图4,如图4 所示,本发明实施例支持2/1/0BinsCABAC码率估计。码率估计和状态更新 是一个三级流水。{bin0,bin1}是同一个上下文模型的两个bins,{vld0, vld1}是两个bins的使能信号。{R0,R1}是bin0,bin1各自的输出码率。第一 级是从输入状态或第二级反馈状态中选择当前bin的相应状态。第二级更新两 个bin的状态并计算bin0的bits。在第三级计算bin1的bits。其中,模块M是 一个多路选择器。模块S实现状态转换,模块D完成两个连续bin的状态更新, 模块S和D的实现如表3所示。模块R实现基于查表得到码率R。图中蓝色模块支 持1个bin的码率估计和上下文状态更新。

表3

模块S状态转换表

模块D状态转换表

参考图5,图5为模块CABACR架构框图。R是所有bins码率之和。更新的上 下文状态会输出到TU(CU)模式决策中。在模式决策之后,最佳状态将会输 出到上下文模型(CM,ContextModule)buffer中,为下一个块使用。在该 架构中,状态可以达到实时更新。

针对上面提出的CABACR优化算法编码性能进行了评估。算法的实现在参考 工具HM13.0上执行。配置基于普遍测试条件之一的“AllIntraMain”,其 中RDOQ,RQT不支持。QP分别为22,27,32,37。序列是JCT-VC推荐使用的测试 序列。

在表4中,与已有算法做了对比。在快速CABAC码率预估算法中,本发明实 施例提出的算法会有平均0.4%的性能损失的增加。CFBAC预估算法植入HM13.0 会有1.1%的性能损失的增加。基于bypassbit估计算法时,帧级内部状态不 更新,平均会有8.9%的性能损失。

表4快速算法性能比较

综上所述,本发明实施例提出的帧内模式决策中CABAC-R(Context- basedAdaptiveBinaryArithmeticCodingRateestimation,基于上下文 自适应二进制算术编码的码率预估)快速算法,对其中两个关键语法元素 coeff_abs_level_greater1_flag和sig_coeff_flag做了并行处理,对 oeff_abs_level_greater1_flag、sig_coeff_flag中的系数对应的上下文模 型,将各个分组的上下文模型对应的bin进行并行运算。从而极大提高了计算 并行度,减少了硬件执行时间。

同时,本发明实施例提出的CABAC-R高效硬件电路结构,可以达到概率模 型的实时更新,码率计算更精确,从而编码性能得到提升。并且该硬件电路 可处理2bins/cycle,满足模式决策的处理性能需求。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中 的模块或流程并不一定是实施本发明所必须的。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到 本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解, 本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品 的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁 碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所 述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同 相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同 之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例, 所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描 述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元 可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可 以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元 上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案 的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并 实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号