一种算术熵编码方法及系统与流程

文档序号:18948533发布日期:2019-10-23 01:51阅读:296来源:国知局
一种算术熵编码方法及系统与流程

本发明涉及通信领域,具体而言,涉及一种算术熵编码方法及系统。



背景技术:

mq算术编码是一种无损的数据压缩技术,已被jpeg2000标准采用,作为该标准的关键技术之一。mq编码器也是jpeg2000中复杂度较高的一个模块。

mq算术编码器是一种改进的基于上下文的自适应算术编码器。它的前级是位平面编码模块,位平面编码输出的是二进制数据判决d和与之相关的上下文cx,称之为上下文符号对或上下文判决对,mq编码器将上下文判决对所组成的序列进行编码,映射成压缩码字,最终形成编码码流。

已有技术方案主要是围绕提高编码速度和吞吐率,便于硬件实现。例如授权公告号cn101820549b的《基于jpeg2000标准的高速实时处理算术熵编码系统》就是通过改进原有的算法结构,使得编码处理速度达到每个时钟可以处理两个上下文判决对的效果。其方案核心介绍如下:

图1是相关技术中的mq编码器编码的示意图,如图1所示,该方案将mq编码器总体架构划分成如下四部分:概率区间值预测器、码值预测器、码流缓存器以及输出选择器。

其中,概率区间值预测器根据输入的两个上下文判决符号对完成判决编码符号类型,更新概率区间;码值预测器根据编码符号类型对码值进行更新,并输出三类归一化码流和排空码流;码流缓存器和输出选择器则按顺序完成最终的码流输出。其核心模块是前两级模块,图2是相关技术中的mq编码器编码中概率区间值预测器的结构框图,如图2所示,概率区间值预测器结构如下:

概率区间值预测器先根据两个上下文判决对得到概率判断信号和指示信号及索引对,然后由其内部的处理器单元完成8种不同的概率区间、码值移位计数值和归一化使能的计算。另一个核心模块是码值预测器,图3是相关技术中的mq编码器编码中码值预测器的结构框图,如图3所示,结构如下:

码值预测器先判断出归一化类型,然后根据判断出的归一化类型选择相应的归一化器,输出归一化得到的码流。结束上下文编码后,由排空器将残留在码值寄存器内的有效码流输出。

上述处理方式是将概率区间的计算、码值移位的计算分成8个不同的处理单元,每个单元完成一种处理;另外,码值预测器实现也采用了三个归一化器,分别完成一种归一化操作,后级还需要四路码流缓存。其并行结构较多,耗费较多硬件资源,对于芯片实现成本较高。

针对相关技术中mq编码器编码耗费较多硬件资源且芯片实现成本较高的问题,尚未提出解决方案。



技术实现要素:

本发明实施例提供了一种算术熵编码方法及系统,以至少解决相关技术中mq编码器编码耗费较多硬件资源且芯片实现成本较高的问题。

根据本发明的一个实施例,提供了一种算术熵编码方法,包括:

更新并行输入的两个上下文符号对的概率区间值,并对更新后的概率区间值进行移位处理;

更新所述两个上下文符号对的概率区间下限;

对所述概率区间下限进行归一化处理并输出码流。

根据本发明实施例的另一方面,还提供了一种算术熵编码装置,包括:

更新移位模块,用于更新并行输入的两个上下文符号对的概率区间值,并对更新后的概率区间值进行移位处理;

第一更新模块,用于更新所述两个上下文符号对的概率区间下限;

处理模块,用于对所述概率区间下限进行归一化处理并输出码流。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本发明,更新并行输入的两个上下文符号对的概率区间值,并对更新后的概率区间值进行移位处理;更新所述两个上下文符号对的概率区间下限;对所述概率区间下限进行归一化处理并输出码流,可以解决相关技术中mq编码器编码耗费较多硬件资源且芯片实现成本较高的问题,使用一个归一化器完成归一化操作,码流按照顺序输出,节省硬件资源,且保证每个时钟可以处理两个上下文判决对。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是相关技术中的mq编码器编码的示意图;

图2是相关技术中的mq编码器编码中概率区间值预测器的结构框图;

图3是相关技术中的mq编码器编码中码值预测器的结构框图;

图4是本发明实施例的一种算术熵编码方法的移动终端的硬件结构框图;

图5是根据本发明实施例的一种算术熵编码方法的流程图;

图6是根据本发明实施例的的示意图;

图7是根据本发明实施例的计算编码相关参数的示意图;图8是根据本发明实施例中的mps更新的流程图;

图9是根据本发明实施例的概率区间更新的流程图一;

图10是根据本发明实施例的概率区间更新的流程图二;

图11是根据本发明实施例的cx0概率区间归一化计算的流程图;

图12是根据本发明实施例的cx0的概率区间归一化处理的流程图;

图13是根据本发明实施例的cx0的归一化移位的流程图;

图14是根据本发明实施例的cx1的概率区间归一化计算的流程图;

图15是根据本发明实施例的cx1的概率区间归一化处理的流程图;

图16是根据本发明实施例的cx1的归一化移位的流程图;

图17是根据本发明实施例的cx0的区间下限更新的流程图;

图18是根据本发明实施例的cx1的区间下限更新的流程图;

图19是根据本发明实施例的cx0更新后的区间下界c’归一化的流程图一;

图20是根据本发明实施例的cx1更新后的区间下界c”归一化的流程图二;

图21是根据本发明实施例的区间下届c’归一化操作的示意图;

图22是根据本发明实施例的算术熵编码装置的框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图4是本发明实施例的一种算术熵编码方法的移动终端的硬件结构框图,如图4所示,移动终端10可以包括一个或多个(图4中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图4所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端10还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的报文接收方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种运行于上述移动终端或网络架构的算术熵编码方法,图5是根据本发明实施例的一种算术熵编码方法的流程图,如图5所示,该流程包括如下步骤:

步骤s502,更新并行输入的两个上下文符号对的概率区间值,并对更新后的概率区间值进行移位处理;

步骤s504,更新所述两个上下文符号对的概率区间下限;

步骤s506,对所述概率区间下限进行归一化处理并输出码流。

通过上述步骤s502至s506,可以解决相关技术中mq编码器编码耗费较多硬件资源且芯片实现成本较高的问题,使用一个归一化器完成归一化操作,码流按照顺序输出,节省硬件资源,且保证每个时钟可以处理两个上下文判决对。

本发明实施例中,上述步骤s502具体可以包括:

步骤s5021,获取所述两个上下文符号对的初始概率区间值;

步骤s5022,对所述初始概率区间值进行更新。

可选地,上述步骤s5022具体可以包括:

确定第一上下文判决对cx0和第二上下文判决对cx1的编码相关参数,其中,所述编码相关参数至少包括:上下文概率qe,更新的小概率符号索引nlps,更新的大概率符号索引nmps,大概率符号值mps,区间交换标志switch,前导零的个数lz;所述两个上下文符号对包括所述cx0、第一上下文判决d0,所述cx1,第二上下文判决d1;

根据所述cx0和所述cx1的所述编码相关参数对所述初始概率区间值进行更新。

可选地,确定所述cx0和所述cx1的编码相关参数包括:

在所述cx0与所述cx1不相同的情况下,从预先存储的查找表lut表中获取所述cx0和所述cx1的所述编码相关参数;

在所述cx0与所述cx1相同的情况下,从所述lut表中获取所述cx0的所述编码相关参数,通过所述cx0的nlps或nmps从预先存储的概率估计表pet中获取所述cx1的所述编码相关参数。

可选地,通过所述cx0的nlps或nmps从所述pet中获取所述cx1的所述编码相关参数包括:

判断所述mps0与所述上下文判决对d0是否相同;

在判断结果为是的情况下,将所述cx0的nmps作为索引从预先存储的pet中获取所述cx1的所述编码相关参数;

在判断结果为否的情况下,将所述cx0的nlps作为索引从所述pet中获取所述cx1的所述编码相关参数。

可选地,上述步骤s5022具体可以包括:

根据所述cx0和所述cx1的所述编码相关参数对所述初始概率区间值进行更新。

可选地,根据所述cx0和所述cx1的所述编码相关参数对所述初始概率区间值进行更新包括:

根据d0、mps0以及qe0对所述cx0的初始概率区间值进行更新,得到更新后的概率区间值a’,其中,所述qe0为所述cx0的qe;

对所述概率区间值上限a’进行归一化处理,得到a0;

根据d1、mps(cx1)、qe1以及所述a0对所述cx1的初始概率区间值进行更新,得到更新后的概率区间值a”,其中,所述qe1为所述cx1的qe。

可选地,根据d0、mps0以及qe0对所述cx0的初始概率区间a进行更新,得到更新后的概率区间a’包括:

判断d0!=mps(cx0)&&(a>=2qe0)||(d0==mps(cx0)&&(a<2qe0))是否成立;

在判断结果为是的情况下,a’=a-qe0,所述cx0的区间下限更新方式指示信号c0_add=1;

在判断结果为否的情况下,a’=qe0,c0_add=0;

根据d1、mps(cx1)、qe1以及所述a0对所述cx1的初始概率区间进行更新,得到更新后的概率区间a”包括:

判断d1!=mps(cx1)&&(a0>=2qe1)||(d1==mps(cx1)&&(a0<2qe1))是否成立;

在判断结果为是的情况下,a”=a0-qe1,所述cx1的区间下限更新方式指示信号c1_add=1;

在判断结果为否的情况下,a”=qe1,c1_add=0。

可选地,上述步骤s502具体还可以包括:

对更新后的概率区间值的移位长度进行计算;

根据计算得到的移位长度对所述两个上下文符号对更新后的概率区间值进行移位处理。

可选地,对更新后的概率区间值的移位长度进行计算包括:

判断d0!=mps(cx0)&&(a>=2qe0)||(d==mps(cx0)&&(a<2qe0))是否成立,其中,所述qe0为所述cx0的qe;

在判断结果为是的情况下,l0=lz0,其中,所述l0为所述cx0的移位位数,lz0为cx0的lz;

在判断结果为否的情况下,在a-qe0的最高位等于1的情况下,l0=0;在a-qe0的最高位不等于1且a-qe0的第二高位等于1的情况下,l0=1;在a-qe0的最高位不等于1且a-qe0的第二高位不等于1的情况下,l0=2;

判断d1!=mps(cx1)&&(a>=2qe1)||(d==mps(cx1)&&(a<2qe1))是否成立;

在判断结果为是的情况下,l1=lz1,其中,所述l1为所述cx1的移位位数,其中,所述qe1为所述cx1的qe,lz1为cx1的lz;

在判断结果为否的情况下,在a0-qe1的最高位等于1的情况下,l1=0;在a0-qe1的最高位不等于1且a0-qe1的第二高位等于1的情况下,l1=1;在a0-qe1的最高位不等于1且a0-qe1的第二高位不等于1的情况下,l1=2。

可选地,根据计算得到的移位长度对所述两个上下文符号对更新后的概率区间值进行移位处理包括:

判断是否对所述cx0、所述cx1进行归一化移位;

在判断结果为是的情况下,所述cx0的归一化移位标识renorm_en0=0,所述cx1的归一化移位标识renorm_en1=0,放弃对所述cx0、所述cx1进行归一化移位;

在判断结果为是的情况下,所述renorm_en0=1,renorm_en1=1,根据所述l0对所述cx0分进行左移处理,并根据所述l1对所述cx1更新后的概率区间值进行左移处理。

本发明实施例中,上述步骤s504具体可以包括:

根据所述cx0的区间下限更新方式指示信号c0_add确定所述cx0更新后的区间下限c’,对所述区间下限c’进行归一化后得到概率区间下限c0;

根据所述c0计算所述cx1的区间下限c”,对所述区间下限c”进行归一化后得到概率区间下限c1。

可选地,根据所述c0_add确定所述cx0更新后的区间下限c’包括:

在所述c0_add等于1的情况下,c’=c,其中,c为cx0、cx1的初始概率区间下限;

在所述c0_add不等于1的情况下,c’=c+qe0,其中,所述qe0为所述cx0的qe;

根据所述c0计算所述cx1的区间下限c”包括:

在所述cx1的区间下限更新方式指示信号c1_add等于1的情况下,c”=c0;

在所述c1_add不等于1的情况下,c”=c0+qe1,其中,所述qe1为所述cx1的qe。

本发明实施例中,对上述步骤s506具体可以包括:

根据所述l0、所述cx0的归一化移位标识renorm_en0对所述区间下限c’进行归一化处理并输出码流;

根据所述l1、所述cx1的归一化移位标识renorm_en1对所述区间下限c”进行归一化处理并输出码流。

可选地,根据所述l0、所述renorm_en0对所述区间下限c’进行归一化处理并输出码流包括:

在所述renorm_en0=1的情况下,在ct0大于所述l0的情况下,保留c’0的最低x0位,将除所述最低x0位以外的位清零,确定为所述区间下限c’归一化的结果并输出码流,其中,所述ct0为所述区间下限c’对应的区间下限寄存器c’中的待输出比特数,c’0为c’左移l0的结果;

根据所述l1、所述renorm_en1对所述区间下限c”进行归一化处理并输出码流包括:

在所述renorm_en1=1的情况下,在ct1大于所述l1的情况下,保留c’1的最低x1位,将除所述最低x1位以外的位清零,确定为所述区间下限c”归一化的结果并输出码流,其中,所述ct1为所述区间下限c”对应的区间下限寄存器c”中的待输出比特数,c’1为c”左移l1的结果。

可选地,所述方法还包括:

对所述cx0和所述cx1的mps进行更新;

将更新后的mps维护到所述lut表中。

可选地,对所述cx0和所述cx1的mps进行更新包括:

在所述cx0与所述cx1不同的情况下,分别计算所述cx0的mps更新结果mps′0、所述cx1的mps更新结果mps′1;

在所述cx0与所述cx1相同的情况下,对所述cx0进行第一次更新得到mps′0,对所述cx0进行第二次更新得到mps″0,即对所述第一上下文判决对的大概率符号索引进行更新得到所述第一大概率索引更新结果,对所述第一大概率索引更新结果进行更新得到第三大概率索引更新结果,其中,所述mps″0为所述cx1的mps更新结果mps′1。

可选地,对所述cx0进行第一次更新得到mps′0包括:

在d0等于mps0的情况下,根据所述第一上下文判决对的大概率符号索引mps0确定所述第一大概率索引更新结果mps′0,具体的,mps′0=mps0;

在d0不等于mps0的情况下,根据所述第一上下文判决对的大概率符号索引mps0和所述第一上下文判决对的区间交换标志switch0确定所述第一大概率索引更新结果mps′0,具体的,mps′0=switch0^mps0;

对所述cx0进行第二次更新得到mps″0包括:

在d1等于mps′0的情况下,根据所述第一大概率索引更新结果mps′0确定所述第三大概率索引更新结果mps″0,具体的,mps″0=mps′0;

在d0不等于mps′0的情况下,根据所述第一大概率索引更新结果mps′0和所述第二上下文判决对的区间交换标志switch1确定所述第三大概率索引更新结果mps″0,具体的,mps″0=mps′0^switch1。

本发明实施例通过对原始算法流程进行推导,将部分步骤进行合并和优化,用一套逻辑实现概率区间的计算、码值移位计算等操作,且使用一个归一化器完成归一化操作,码流按照顺序输出,不需要大量码流缓存,节省硬件资源,且保证每个时钟可以处理两个上下文判决对。

首先将概率查找表与索引查找表合并,且用寄存器实现,合并后的查找表的信息包含上下文概率qe,更新的小概率符号索引nlps,更新的大概率符号索引nmps,大概率符号值mps,区间交换标志switch,前导零的个数lz等信息,这些信息组成一组存储单元,共需要存储19组,每组对应一个上下文类型(mq编码器共有19种上下文),通过此表格可以直接索引到当前输入的上下文所对应的qe、nlps、nmps、mps、switch及lz等信息,将此19组存储单元记为查找表lut表。

将输入的两个上下文记为cx0和cx1,如果输入的两个上下文不同,由于上述存储单元是寄存器方式实现,则可立即得到两个上下文所对应的如上信息;如果输入的两个上下文相同cx0=cx1,则先根据这个上下文cx0进行索引,得到对应的大概率符号值mps,记为mps(cx0),直接和与cx0一起输入的所对应的上下文判决d(记为d0)进行比较,并从索引出的上述信息中选择出相应的nlps还是nmps(d0和mps(cx0)相同时选择nmps,不同时选择nlps),记为nlps(cx0)和nmps(cx0)。再用选出的nlps或nmps作为索引从另一个固化的概率预估表pet表中查询得到第二个上下文cx1(cx1=cx0)所对应的qe、nlps、nmps、mps、switch等信息用于后续计算。后续计算过程会产生两个上下文分别对应的新的qe、nlps、nmps、mps、switch及lz等信息,这些信息会更新到上述的19组存储单元中,图6是根据本发明实施例的lut表更新的示意图,如图6所示,包括:

分支1,以输入的两个上下文cx0和cx1作为索引,对lut表进行查表,当cx0和cx1不相等时,同时得到两个上下文本次计算所对应的信息;当cx0和cx1相等时,仅得到cx0计算所对应的信息。

分支2,当cx0和cx1不相等时,通过分支2进入mps更新计算过程,mps更新计算过程见后续说明。

分支3,当cx0和cx1相等时,通过分支3再经过分支4进入mps更新计算过程。分支3先进行cx0的概率更新,并得到cx1(cx0=cx1)对应的pet表索引值index(nlps或nmps,具体选择结果由cx0计算结果决定),再由index作为索引查询pet表,得到cx1对应的信息。

分支4,分支3计算完后进入分支4,开始mps更新计算过程,得到cx1更新后的mps值,连同查pet表得到的qe、nlps、nmps、swithc和lz一起写入cx1为索引对应的lut表中。

分支5,若从分支4进入分支5,则将cx1的计算结果存入lut表中,若从分支2进入分支5,则将cx0和cx1的计算结果分别以cx0和cx1为索引存入lut表中。

上述过程中的由上下文cx得到所对应的概率qe和大概率符号值mps的过程,可以对标准的流程进行合并,同时得到两个上下文cx0和cx1对应的概率qe0和qe1以及大概率符号值mps0(对应上述的mps0)和mps1(对应上述的mps1),上述过程在标准的流程中需要两次上下文的计算,每次上下文的计算过程都至少需要10几个时钟才能完成,合并后仅一个时钟内就可以完成,图7是根据本发明实施例的计算编码相关参数的示意图,如图7所示,包括:

分支1,2,3为cx0通过查lut表获取mps0、qe0、switch0的过程。

cx1获取mps0、qe0、switch0的过程包括:

步骤s701,判断cx0!=cx1是否成立,在判断结果为否的情况下,执行步骤s702,在判断结果为是的情况下,执行步骤s703;

步骤s702,判断d0!=mps(cx0)是否成立,其中,mps(cx0)对应上述的mps0,在判断结果为否的情况下,执行步骤s704,在判断结果为是的情况下,执行步骤s705;

步骤s703,qe(cx1)=lut(cx1),即通过查lut表获取qe1即qe(cx1),其中,qe(cx1)对应上述的qe1;

步骤s704,判断a<(qe0|0x8000)是否成立,在判断结果为否的情况下,执行步骤s706,在判断结果为是的情况下,执行步骤s707;

步骤s705,qe(cx1)=pet(nlps(cx0)),switch(cx1)=pet(nlps(cx0)),即将nlps作为索引从pet表中查找qe(cx1)和switch(cx1);

步骤s706,qe(cx1)=qe(cx0),switch(cx1)=switch(cx0)

步骤s707,qe(cx1)=pet(nmps(cx0)),switch(cx1)=pet(nmps(cx0)),即将nlps作为索引从pet表中查找qe(cx1)和switch(cx1)。

分支5表示两个上下文相同;

分支6表示第一个上下文进行mps编码计算;

分支7表示第一个上下文进行lps编码计算;

分支8表示第一个上下文进行mps编码后不需要更新概率区间;

分支9表示第一个下文进行mps编码后需要更新概率索引nmps,第二个上下文根据新的概率索引nmps,进行查pet表得到第二个上下文的概率qe(cx1);

switch(cx0)及switch(cx1)也在以上步骤中和qe(cx0)(对应上述的qe0)及qe(cx1)查表时同时得到。

qe0:cx0对应的概率,switch(cx0):cx0对应的switch。a为本次计算前的概率区间值。得到需要的概率qe和mps后就可以进行区间计算。

mps的更新流程进行如下优化,当输入的两个上下文不同时,将两个上下文的mps同时分别进行计算得到各自的mps更新值;当输入的两个上下文相同时,先得到cx0第一次更新后的结果mps’(cx0),接着继续计算出cx0第二次更新后的结果mps”(cx0)为最终的更新结果。图8是根据本发明实施例中的mps更新的流程图,如图8所示,包括:

分支1,2:输入的两个上下文不同,分别计算两个上下文的mps更新结果;分支2的过程与分支1相同,分支1处理的是cx1,分支2处理的是cx0;

分支3:上下文cx1不需要进行mps更新;

分支4:上下文cx1计算mps更新结果;

分支5,6:过程和3,4相同,得到上下文cx0计算mps的更新结果mps’(cx0);

分支7,8:过程和3,4类似,得到上下文cx0经过两次更新计算得到的mps的更新结果mps”(cx0)(对应上述的mps″0),因为第二次更新属于第二个上下文的计算,也记为mps’(cx1)(对应上述的mps′1)。

概率区间a的更新计算如下,首先计算得到第一个上下文更新后的区间a’,然后将a’进行归一化得到a0,归一化过程见下文,使用a0直接作为第二个上下文的输入,计算第二个上下文更新后的区间,图9是根据本发明实施例的概率区间更新的流程图一,图10是根据本发明实施例的概率区间更新的流程图二,如图9和10所示,经过优化的流程如下:

图9中分支1、2和图10中分支3、4处理过程类似,分别处理cx0和cx1。区间计算从标准的原始流程化简为一个判断条件,可以直接得到cx0和cx1的区间更新值a’和a”。图9和10中,c0_add和c1_add表示第一个和第二个上下文的区间下限的更新方式,在区间下限计算时会用到。第二个上下文的区间更新需要用到第一个上下文区间更新后的结果,且是经过归一化的结果a0,cx0和cx1归一化结果a0和a1通过如下方式完成:

首先要得到移位的位数l0和l1,分别表示cx0的移位位数和cx1的移位位数,另外要判断是否进行归一化,区间a的归一化只有移位的过程,采用选择器的方式实现移位的过程(7、8分支)。

因为上下两部分分别处理的是cx0和cx1的概率区间归一化计算,计算过程是相似的,图11是根据本发明实施例的cx0概率区间归一化计算的流程图,如图11所示,因此只对cx0的概率区间归一化过程进行描述:

分支1~4:实现归一化的左移位数计算,分支5~6进行归一化的判断,分支7~8进行左移。

分支1:表示cx0进行概率区间更新后为qe0,那么左移的位数就是qe0的前导0的个数lz(qe0),即由cx0从lut表中查出的lz信息,也记为lz(cx0);

分支2:表示cx0进行概率区间更新后为a-qe0,且仅最高位为1,不需要左移;分支3表示需要左移1位;分支4表示需要左移2位;

图12是根据本发明实施例的cx0的概率区间归一化处理的流程图,如图12所示,包括:

分支5:cx0的概率区间更新结果需要左移完成归一化;分支6:不需要;renorm_en0和renorm_en1分别表示cx0和cx1的概率区间是否需要进行归一化;

图13是根据本发明实施例的cx0的归一化移位的流程图,如图13所示,包括:

分支7:cx0的概率区间更新结果归一化的左移操作;

分支8:不需要左移,a0=a’。

图14是根据本发明实施例的cx1的概率区间归一化计算的流程图,如图14所示,与cx0的处理过程类似,在此不再赘述。

图15是根据本发明实施例的cx1的概率区间归一化处理的流程图,如图15所示,与cx0的处理过程类似,在此不再赘述。

图16是根据本发明实施例的cx1的归一化移位的流程图,如图16所示,与cx0的处理过程类似,在此不再赘述。

以上讲述的所有过程均需要在第一个节拍完成,第二个节拍完成概率区间下限c的更新、c的归一化及码流字节的输出。

区间下限c要进行两次更新,要用到前一节拍所的到的计算结果:c0_add、c1_add、l0、l1、是否归一化renorm_en0和renorm_en1等。首先根据更新方式指示信号c0_add得到第一个上下文更新后的区间下限c’,再得到归一化后的概率区间下届c0;第二个上下文的区间下届以c0为输入,按照类似的计算得到最终的区间下界c1。下面对区间更新和区间归一化分别进行描述。

图17是根据本发明实施例的cx0的区间下限更新的流程图,图18是根据本发明实施例的cx1的区间下限更新的流程图,如图17和18所示,c表示本次两个上下文计算的初始区间下界,c’表示上下文cx0区间下界更新后的结果,c”表示上下文cx1区间下界更新后的结果。c”计算需要用到cx0区间下界归一化后的结果c0,图19是根据本发明实施例的cx0更新后的区间下界c’归一化的流程图一,图20是根据本发明实施例的cx1更新后的区间下界c”归一化的流程图二,如图19和20所示。

两个过程类似,只是c”的计算要用到c0。上图中ct0和ct1表示区间下界寄存器c’和c”中的待输出比特数,见标准中定义。

图19和20中c’0和c’1均表示区间下限移位后的中间结果,分支1和3表示有byte输出,分支2和4表示没有byte输出;分支1和分支3中的操作分别表示保留c’0的最低x0位及c’1的最低x1位,且将这些保留位以外的位清零,作为归一化的结果,并进行字节输出。c’和c”归一化的结果分别记为c0和c1。

由于两个过程的相似性,这里对cx0的归一化和字节输出byteout过程进行详细描述,图21是根据本发明实施例的区间下届c’归一化操作的示意图,如图21所示,区间下届c’归一化操作得到c0遵循的一般性方法包括:

前一个已输出字节b在虚线左右两边都存在,是因为新的字节输出时要根据输出前cc的位进行加1的操作。

由上述的一般性过程可以轻易的完成一个字节的输出和区间下界c归一化的计算,上述过程中的m和n分别表示归一化之后区间下界c被保留的有效位之前和之后所填充的0的个数,它们的值可以由移位的个数l、c寄存器中的待输出比特数ct及已输出字节b和c寄存器的c位的值直接推断得到,可以采用选择器的方式实现c寄存器的更新和新字节的输出。

字节输出后c的表达式为{m’d0,c[27-m-n:0],n’d0},其中n=l。

下面给出了c0计算的实现:

ct0大于l时无输出,归一化后的带输出比特数更新为ct'0=ct0-l,ct0小于等于l时,下表中需要用到填充标志f来判断输出的位数,f=((b==0xff)|(b==0xfe)&c'[p]),其中p表示进位位cc的位置,p=27-ct0。

下表1中,b为本次输入的上下文之前已经得到的最新输出的字节,ct'0表示移位输出后c0中的带输出比特数,b'表示移位输出后b的结果,b0为本次输入上下文计算得到的第一个输出字节,b1为本次输入上下文计算得到的第二个输出字节,na表示不存在。

表1

上表中ct0为9~13只有初始时没有输出过任何字节时才会出现,因此,最多产生一个字节的输出。

按照上述表格的方式进行推断可以得到第一个上下文归一化后的区间下届c0及待输出的字节b0、b1,根据推断结果b0和b1不一定都存在输出,因此附加产生相应的两bit指示信号b0_flag和b1_flag,分别表明b0和b1是否存在输出;同时还会产生第一个上下文归一化后ct的结果ct’0。

对于第二个上下文采用同样的方法对移位输出进行推断,第二个上下文的推断的输入为c0,l1和ct’0,b1_flag,b2_flag,b’(b’=b1_flag?b1:b0_flag?b0:b)。

最后要将两个上下文所产生的所有输出字节写入码流。两个上下文分别有可能产生0,1,2个字节,第二个上下文输出的字节记为b2、b3,指示信号为b2_flag,b3_flag。根据b0_flag~b3_flag剔除无输出的字节,将本次计算所得到的最终输出字节顺序写入到码流缓存中,并存储最后输出的字节以备下次输入的两个上下文判决对进行编码使用。至此,两个上下文判决对的计算过程结束。

按照上述的两个节拍,将整个计算过程按照两级流水进行安排,采用rtl进行实现,在umc40nm的9t工艺下进行dc综合后频率不小于300mhz。因此,本提案所提出的方法对于芯片设计具有很好的实际意义。

对原始算法流程进行合并和化简,对概率区间更新,归一化移位位数计算,字节输出计算等过程均进行了优化,每个时钟可以完全处理两个上下文判决对,仅需要使用一套硬件资源来实现概率区间计算、码值移位的计算及归一化和码值计算。与现有技术处理能力相同的前提下,使得硬件资源大幅度减小,对于节省芯片成本具有重大意义。

实施例2

本发明实施例,还提供了一种算术熵编码装置,图22是根据本发明实施例的算术熵编码装置的框图,如图22所示,包括:

更新移位模块222,用于更新并行输入的两个上下文符号对的概率区间值,并对更新后的概率区间值进行移位处理;

第一更新模块224,用于更新所述两个上下文符号对的概率区间下限;

处理模块226,用于对所述概率区间下限进行归一化处理并输出码流。

可选地,所述更新移位模块222,还用于

获取所述两个上下文符号对的初始概率区间值;

对所述初始概率区间值进行更新。

可选地,所述更新移位模块222包括:

第一确定子模块,用于确定第一上下文判决对和第二上下文判决对的编码相关参数,其中,所述编码相关参数至少包括:上下文概率,更新的小概率符号索引,更新的大概率符号索引,大概率符号索引,区间交换标志,前导零的个数;所述两个上下文符号对包括所述第一上下文判决对、第一上下文判决,所述第二上下文判决对,第二上下文判决;

第一更新子模块,用于根据所述第一上下文判决对和所述第二上下文判决对的所述编码相关参数对所述初始概率区间值进行更新。

可选地,所述第一确定子模块,用于

在所述第一上下文判决对与所述第二上下文判决对不相同的情况下,从预先存储的查找表中获取所述第一上下文判决对和所述第二上下文判决对的所述编码相关参数;

在所述第一上下文判决对与所述第二上下文判决对相同的情况下,从所述查询表中获取所述第一上下文判决对的所述编码相关参数,通过所述第一上下文判决对的更新的小概率符号索引或更新的大概率符号索引从预先存储的概率估计表中获取所述第二上下文判决对的所述编码相关参数。

可选地,所述第一确定子模块,还用于

判断第一上下文判决对的大概率符号索引与所述第一上下文判决是否相同;

在判断结果为是的情况下,将所述第一上下文判决对的更新的大概率符号索引作为索引从预先存储的概率估计表中获取所述第二上下文判决对的所述编码相关参数;

在判断结果为否的情况下,将所述第一上下文判决对的更新的小概率符号索引作为索引从所述概率估计表中获取所述第二上下文判决对的所述编码相关参数。

可选地,所述第一更新子模块包括:

第一更新单元,用于根据所述第一上下文判决、所述第一上下文判决对的大概率符号索引以及所述第一上下文判决对的上下文概率对所述第一上下文判决对的初始概率区间值进行更新,得到更新后的第一概率区间值;

归一化单元,用于对所述第一概率区间值进行归一化处理,得到第二概率区间值;

第二更新单元,用于根据所述第二上下文判决、所述第二上下文判决对的大概率符号索引、所述第二上下文判决对的上下文概率以及所述第二概率区间值对所述第二上下文判决对的初始概率区间值进行更新,得到更新后的第三概率区间值。

可选地,

所述第一更新单元,还用于

根据所述第一上下文判决、所述第一上下文判决对的大概率符号索引以及第一上下文判决对的上下文概率确定所述第一概率区间值等于所述第一上下文判决对的初始概率区间与所述第一上下文判决对的上下文概率的差值,所述第一上下文判决对的区间下限更新方式指示信号为1;或者

根据所述第一上下文判决、所述第一上下文判决对的大概率符号索引以及第一上下文判决对的上下文概率确定所述第一概率区间值等于所述第一上下文判决对的上下文概率,所述第一上下文判决对的区间下限更新方式指示信号为0;

所述第二更新单元,还用于

根据所述第二上下文判决对、所述第二上下文判决对的大概率符号索引、所述第二上下文判决对的上下文概率以及所述第二概率区间值确定所述第三概率区间值等于所述第二概率区间值与所述第二上下文判决对的上下文概率的差值,所述第二上下文判决对的区间下限更新方式指示信号为1;

根据所述第二上下文判决、所述第二上下文判决对的大概率符号索引、所述第二上下文判决对的上下文概率以及所述第二概率区间值确定所述第三概率区间值等于所述第二上下文判决对的上下文概率,所述第二上下文判决对的区间下限更新方式指示信号为0。

可选地,所述更新移位模块222包括:

第二确定子模块,用于分别确定所述第一上下文判决对的第一移位位数和所述第二上下文判决对的第二移位位数;

移位子模块,用于根据所述第一移位位数和所述第二移位位数对所述第一上下文判决对更新后的概率区间值和所述第二上下文判决对更新后的概率区间值进行移位处理。

可选地,所述第二确定子模块,还用于

确定所述第一移位位数为所述第一上下文判决对的前导零的个数;或者,确定所述第一移位位数为以下之一:0、1、2;

确定所述第二移位位数为所述第二上下文判决对的前导零的个数;或者,确定所述第二移位位数为以下之一:0、1、2。

可选地,所述移位子模块,还用于

在所述第一上下文判决对和所述第二上下文判决对的归一化移位标识均为0的情况下,放弃对所述第一上下文判决对和所述第二上下文判决对进行归一化移位;

在所述第一上下文判决对和所述第二上下文判决对的归一化移位标识均为1的情况下,根据所述第一移位位数对所述第一上下文判决对更新后的概率区间值进行左移处理,并根据所述第二移位位数对所述第二上下文判决对更新后的概率区间值进行左移处理。

可选地,所述第一更新模块224包括:

第三确定子模块,用于根据所述第一上下文判决对的区间下限更新方式指示信号确定所述第一上下文判决对更新后的区间下限,对所述第一上下文判决对更新后的区间下限进行归一化后得到所述第一上下文判决对的概率区间下限;

第一计算子模块,用于根据所述第一上下文判决对的概率区间下限计算所述第二上下文判决对的区间下限,对所述第二上下文判决对的区间下限进行归一化后得到第二上下文判决对的概率区间下限。

可选地,所述第三确定子模块,还用于

在所述第一上下文判决对的区间下限更新方式指示信号等于1的情况下,确定所述第一上下文判决对更新后的区间下限为所述第一上下文判决对的初始概率区间下限;

在所述第一上下文判决对的区间下限更新方式指示信号不等于1的情况下,确定所述第一上下文判决对更新后的区间下限为所述第一上下文判决对的初始概率区间下限与所述第一上下文判决对的上下文概率之和;

所述第一计算子模块,还用于

在所述第二上下文判决对的区间下限更新方式指示信号等于1的情况下,确定所述第二上下文判决对的区间下限为所述第一上下文判决对的概率区间下限;

在所述第二上下文判决对的区间下限更新方式指示信号不等于1的情况下,确定所述第二上下文判决对的区间下限为所述第一上下文判决对的概率区间下限与所述第二上下文判决对的上下文概率之和。

可选地,所述处理模块226包括:

第一归一化子模块,用于根据所述第一上下文判决对的第一移位位数、所述第一上下文判决对的归一化移位标识对所述第一上下文判决对更新后的区间下限进行归一化处理并输出码流;

第二归一化子模块,用于根据所述第二上下文判决对的第二移位位数、所述第二上下文判决对的归一化移位标识对所述第二上下文判决对更新后的区间下限进行归一化处理并输出码流。

可选地,所述第一归一化子模块,还用于在所述第一上下文判决对的归一化移位标识等于1的情况下,在所述第一上下文判决对更新后的区间下限对应寄存器中的待输出比特数大于所述第一移位位数的情况下,保留所述第一上下文判决对更新后的区间下限左移所述第一移位位数后的结果的最低位x0,并将除所述最低位x0以外的位清零之后,确定为所述第一上下文判决对更新后的区间下限归一化的结果并输出码流;

所述第二归一化子模块,还用于在所述第二上下文判决对的归一化移位标识等于1的情况下,在第二上下文判决对更新后的区间下限对应寄存器中的待输出比特数大于所述第二移位位数的情况下,保留所述第二上下文判决对更新后的区间下限左移所述第二移位位数后的最低位x1,并将除所述最低位x1以外的位清零之后,确定为所述第二上下文判决对更新后的区间下限归一化的结果并输出码流。

可选地,所述装置还包括:

第二更新模块,用于对所述第一上下文判决对和所述第二上下文判决对的大概率符号索引进行更新;

维护模块,用于将更新后的大概率符号索引维护到所述查询表中。

可选地,所述第二更新模块,还用于

第二计算子模块,用于在所述第一上下文判决对与所述第二上下文判决对不同的情况下,分别计算所述第一上下文判决对的大概率符号索引的第一大概率索引更新结果、所述第二上下文判决对的大概率符号索引的第二大概率索引更新结果;

第二更新子模块,用于在所述第一上下文判决对与所述第二上下文判决对相同的情况下,对所述第一上下文判决对的大概率符号索引进行更新得到所述第一大概率索引更新结果,对所述第一大概率索引更新结果进行更新得到第三大概率索引更新结果,其中,所述第二大概率索引更新结果等于所述第三大概率索引更新结果。

可选地,所述第二更新子模块,还用于

在所述第一上下文判决等于所述第一上下文判决对的大概率符号索引的情况下,根据所述第一上下文判决对的大概率符号索引确定所述第一大概率索引更新结果;

在所述第一上下文判决不等于所述第一上下文判决对的大概率符号索引的情况下,根据所述第一上下文判决对的大概率符号索引和所述第一上下文判决对的区间交换标志确定所述第一大概率索引更新结果;

在所述第二上下文判决等于所述第一大概率索引更新结果的情况下,根据所述第一大概率索引更新结果确定所述第三大概率索引更新结果;

在所述第二上下文判决不等于所述第一大概率索引更新结果的情况下,根据所述第一大概率索引更新结果和所述第二上下文判决对的区间交换标志确定所述第三大概率索引更新结果。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,更新并行输入的两个上下文符号对的概率区间值,并对更新后的概率区间值进行移位处理;

s2,更新所述两个上下文符号对的概率区间下限;

s3,对所述概率区间下限进行归一化处理并输出码流。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

实施例4

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,更新并行输入的两个上下文符号对的概率区间值,并对更新后的概率区间值进行移位处理;

s2,更新所述两个上下文符号对的概率区间下限;

s3,对所述概率区间下限进行归一化处理并输出码流。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1