一种基于ANS编码的封装方法、系统、存储介质及设备技术方案

技术编号:38083969 阅读:9 留言:0更新日期:2023-07-06 08:50
本发明专利技术提供了一种基于ANS编码的封装方法、系统、存储介质及设备,方法包括:从符号序列中依次提取符号,并对提取到的当前符号进行ANS编码,得到当前编码值;判断当前编码值是否大于第一阈值;响应于当前编码值大于第一阈值,判定当前编码值为大数;针对大数,确认其中符合预设要求的低位部分,并将低位部分封装后输出至码流。本发明专利技术避免了编码流程中出现大数字,提高了ANS编码流程中的封装效率,解决了目前主流计算机无法处理大数导致ANS编码应用场景受限的问题,同时有助于后续ANS解码时实现流式解码。流式解码。流式解码。

【技术实现步骤摘要】
一种基于ANS编码的封装方法、系统、存储介质及设备


[0001]本专利技术涉及编码
,尤其涉及一种基于ANS编码的封装方法、系统、存储介质及设备。

技术介绍

[0002]熵编码是一种无损数据压缩方案。熵编码的核心思想是通过用较少的位(bit)表示频繁出现的符号,用较多的位(bit)表示很少出现的元素。
[0003]哈夫曼编码和算术编码是两种最常见的熵编码方法,下面将对其进行简要描述。哈夫曼编码的算法原理简单,基于符号集的概率排序分配码长。哈夫曼编码总是使用整数位来表示一个符号,并且它分别对每个符号进行编码。因此哈夫曼码不能保证最佳的压缩效果。当所有符号的概率为2的负整数幂时,哈夫曼编码产生最佳结果。在哈夫曼码中,一个符号的每次出现总是被编码成相同的代码字。哈夫曼编码的优点为编码速率快。
[0004]由信息论可知,单个符号的理想码字长度仅仅由符号的出现概率决定:code

length(x)=

log
p(x)
,如果一个符号的出现概率为0.4,那么理想的码字长度为1.32(

log
0.4
)。但是不幸的是,哈夫曼编码分配的码码字长度只能为整数。这也是哈夫曼编码算法的痛点。
[0005]算术编码可以解决哈夫曼编码的这个痛点,算术编码是另一种熵编码技术。它将输入数据编码为0到1之间的实数区间。随着输入被编码并且指定它所需的位数增加,该区间变得更小,与哈夫曼编码不同,算术编码使用几乎精确的概率,因此它实现了接近理论极限的压缩率。然而算术编码的算法原理也更复杂。而且编码效率很低(大致是哈夫曼编码的1/10),在实时性要求较高的数据压缩领域,少有应用。
[0006]正是如此,近些年,好多学者都在寻找一个“压缩率接近算术编码,且编码效率接近哈夫曼编码”的新型算法。2009年,Jarek Duda提出一种Asymmetric Numeral Systems(ANS,非对称数字系统)。根据Jarek Duda的说法,非对称数字系统实现了与算术编码相当的压缩率,同时具有与霍夫曼编码相似的处理速率。下面介绍ANS的数学原理:
[0007]假设需要把一个由两种符号集S
i
∈A={0,1}构成的符号序列编码成一个数字num。首先考虑标准的二进制数字系统,可以将该符号序列编码为num=∑S
i
·2i
,此时,序列中每个符号(“0”或者“1”)占1位。数字num的位宽n。显然二进制数字系统忽略了两种符号(0,1)出现频率,即二进制数字系统适用于符合(0,1)均匀分布的情形。
[0008]由香农信息理论可知,假设一个符号序列中各个符号的概率分布为{P1,P2,P3,
……
,P
n
},那么符号集每个符号的平均信息量(amount of information)为:
[0009][0010]符号S所含的信息量与该符号的概率P
S
相关log(1/P
s
)。两个符号S1,S2合在一起的信息量为:
[0011]假设自然数那么x与S2结合在在一起的信息量为:
[0012][0013]Jarek Duda从上式的数学关系,进一步设想:将数字x与符号s合并在一块编码编码成一个自然数x

,那么x

的计算公式如下:
[0014][0015]以上就是ANS的基本数学原理。ANS会将一串符号序列编码为自然数,这一点与AC(算术编码)算法原理相似。
[0016]事实上公式(3)无法直接用于ANS编码,为了方便描述ANS的编解码流程,引入两个表达式如下:
[0017][0018]s为当前符号,x为当前数字,x'编码后的数字,C(~)表示编码的算法,D(~)表示解码算法。(x,s)表示解码后的结果。
[0019]公式(3)描述,自然数与(概率)符号编码原理,属于局部层面。将自然数与符号序列,编码原理如下:假设将自然数x与符号序列[S1,S2,S3,
……
S
n
,]合成编码,每个符号的概率为分别为[P1,P2,P3,
……
Pn]。
[0020]x与S1合成编码生成自然数x1:
[0021]x2与S2合成编码生成自然数x2:
[0022]x2与S3合成编码生成自然数x3:
[0023]x n
‑1与S
n
合成编码生成自然数x3:
[0024]从宏观角度看,符号序列经ANS算法编码,最终的生成的数字y为:
[0025][0026]显然由公式(5)计算得到的自然数是一个非常大的数字。受制于计算机数据处理的位宽,软硬件难以处理如此大的数字。可以说,几乎不可能实现这种“整体打包”的ANS编解码。
[0027]ANS会将符号序列转换一个非常大数字,因此我们不可能构造一个无限长的列表。一个最可行的方案是将在有限域中构建固定长度的列表,并且该列表扩展至无限长,即符号分布函数为一个周期函数S(x+n
×
T)=S(x)。
[0028]假设符号s在一个周期内出现的次数为f
s
,那么显然第x个s会出现的周期数为
并且在该周期内是第m次出现,m=mod(x,f
s
)。
[0029]假设S(x)周期长度为T,对于一个特定的数字y,显然y位置上的符号与第1周期内的y

=mod(y,T)位置上的符号一致,即S(y)=S(mod(y,T))。设S(y

)是该周内第m次出现,同时假设y是第x次出现,则:
[0030][0031]符号序列经过ANS编码后会得到非常大的自然数,当前的主流计算机无法处理如此大的数字,这就限制了ANS的应用场景。为了解决这个难题,需要改进ANS的编码模式。

技术实现思路

[0032]有鉴于此,本专利技术的目的在于提出一种基于ANS编码的封装方法、系统、存储介质及设备,用以解决目前在进行ANS编码时,由于主流计算机无法处理大数,导致ANS编码的应用场景受限的问题。
[0033]基于上述目的,本专利技术提供了一种基于ANS编码的封装方法,包括以下步骤:
[0034]从符号序列中依次提取符号,并对提取到的当前符号进行ANS编码,得到当前编码值;
[0035]判断当前编码值是否大于第一阈值;
[0036]响应于当前编码值大于第一阈值,判定当前编码值为大数;
[0037]针对大数,确认其中符合预设要求的低位部分,并将低位部分封装后输出至码流。
[0038]在一些实施例中,第一阈值为周期值,周期值为符号序列中所有符号的概率之和的倒数。
[0039]在一些实施例中,符合预设要求的低位部分满足如下关系式:
[0040][0041]其中,n表示低位部分的位宽,y本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于ANS编码的封装方法,其特征在于,包括以下步骤:从符号序列中依次提取符号,并对提取到的当前符号进行ANS编码,得到当前编码值;判断所述当前编码值是否大于第一阈值;响应于所述当前编码值大于所述第一阈值,判定所述当前编码值为大数;针对所述大数,确认其中符合预设要求的低位部分,并将所述低位部分封装后输出至码流。2.根据权利要求1所述的方法,其特征在于,所述第一阈值为周期值,所述周期值为所述符号序列中所有符号的概率之和的倒数。3.根据权利要求1所述的方法,其特征在于,所述符合预设要求的低位部分满足如下关系式:其中,n表示所述低位部分的位宽,y表示所述大数,f
next
表示下一个符号的概率。4.根据权利要求1所述的方法,其特征在于,还包括:响应于所述当前编码值小于所述第一阈值,判断所述当前编码值是否小于第二阈值;响应于小于所述第二阈值,判定所述当前编码值为小数,并将所述小数直接输出至所述码流。5.根据权利要求1所述的方法,其特征在于,还包括:针对所述当前编码值,基于所述低位部分相应得到高位部分;将所述高位部分作为下一个符号的合...

【专利技术属性】
技术研发人员:张永兴孙华锦
申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1