一种新型ANS编解码方法、计算机设备及存储介质与流程


一种新型ans编解码方法、计算机设备及存储介质
技术领域
1.本发明涉及计算机技术领域,具体涉及一种新型ans编解码方法、计算机设备及存储介质。


背景技术:



2.熵编码(或熵编码)是一种无损数据压缩方式,熵编码的核心思想是通过用较少的位(bit)表示频繁出现的符号,用较多的位(bit)表示很少出现的元素来实现压缩。
3.哈夫曼编码和算术编码是两种最常见的熵编码方法。哈夫曼编码是david a.huffman开发的一种熵编码技术。哈夫曼编码的算法原理简单,基于符号集的概率排序分配码长。哈夫曼编码总是使用整数位来表示一个符号,并且它分别对每个符号进行编码。因此哈夫曼码不能保证最佳的压缩效果。当所有符号的概率为2的负整数幂时,哈夫曼编码产生最佳结果。在哈夫曼码中,一个符号的每次出现总是被编码成相同的代码字。哈夫曼编码的优点为编码速率快。
4.由信息论可知,单个符号的理想码字长度仅仅由符号的出现概率决定:code-length(x)=-log
p(x)
,如果一个符号的出现概率为0.4,那么理想的码字长度为1.32(-log
0.4
).但是不幸的是,huffman编码分配的码码字长度只能为整数。这也是huffman编码算法的痛点。
5.算术编码可以解决huffman编码的这个痛点,算术编码是另一种熵编码技术。它将输入数据编码为0到1之间的实数区间。随着输入被编码并且指定它所需的位数增加,该区间变得更小,与哈夫曼编码不同,算术编码使用几乎精确的概率,因此它实现了接近理论极限的压缩率。然而算术编码的算法原理也更复杂。而且编码效率很低(大致是huffman编码的1/10),在实时性要求较高的数据压缩领域,少有应用。
6.正是如此,近些年,好多学者都在寻一个“压缩率接近算术编码,且编码效率接近huffman编码”的新型算法.2009年,jarekduda提出一种asymmetric numeral systems(ans,非对称数字系统).根据jarekduda的说法,非对称数字系统实现了与算术编码相当的压缩率,同时具有与霍夫曼编码相似的处理速率。但是,ans无法将这种数学关系直接用于ans编码,因为无法解码,解码端无法解析出原始符号序列


技术实现要素:



7.有鉴于此,本发明的目的在于提出一种新型ans编解码方法、计算机设备及存储介质,通过给出一个可行的ans编解码方案,以解决背景技术中的技术问题。
8.基于上述目的,一方面,本发明提供了一种新型ans编解码方法,包括ans编码方法和ans解码方法,其中,所述ans编码方法包括以下步骤:
9.符号的概率统计,概率归一化,得到概率分布{f1,f2,f3……fn
},编码概率分布;
10.构建符号分配列表symbol[];
[0011]
构建累积频率表count[],记录累积频率,count[x+1]=count[x]+fx,,构建符号
位置列表pos[],用快速查每个符号在symbol[]中索引;
[0012]
按照自然顺序依次对符号序列编码;
[0013]
其中,所述ans解码方法包括以下步骤:
[0014]
解码每个符号集的概率分布,{f1,f2,f3……fn
};
[0015]
利用构建符号分配列表symbol[],symbol[]在编/解码两端一致;
[0016]
构建一个符号顺序表sort[],设s=symbol[i],sort[i]的表示符号列表symbol中s的出现次数;
[0017]
解码符号序列,对解码符号序列进行顺序翻转。
[0018]
作为本发明的进一步方案,所述新型ans编解码方法执行编解码满足以下条件:
[0019]
符号序列经ans编码后生成一个数字,解码端反向解析所述数字,得到整个序列;
[0020]
编解码过程中间数字x只能对应一个符号;
[0021]
c(x,s1)≠c(x,s2),即便s1,s2的概率相等(p1=p2),依然成立,其中,c()表示编码的算法;
[0022]
c(x1,s)≠c(x2,s),c(x1,sm)≠c(x2,sn);
[0023]
对于任一x及s,x≠c(x,s)。
[0024]
作为本发明的进一步方案,基于ans的数学原理构建ans解码的数据公式,其中,所述ans的数学原理为:将数字x与符号s合并在一块编码成一个自然数x

,x

的计算公式为
[0025]
基于计算公式推导出ans解码的数据公式:x=x
′×
p。
[0026]
作为本发明的进一步方案,编码算法c(x,s)的计算公式为:
[0027][0028]
作为本发明的进一步方案,解码符号序列的解码的计算公式为:
[0029]
s=symbol[mod(x,t)]
[0030][0031]
d(x)=(x,s)。
[0032]
作为本发明的进一步方案,顺序翻转时,解码后的符号序列与编码端的符号序列相反:编码端最先编码第一个符号,解码端最先解码最后一个符号。
[0033]
作为本发明的进一步方案,利用构建符号分配列表时,构建方法采用顺序循环分配方案,所述顺序循环分配方案,包括:
[0034]
按照符号值的从小到大顺序,依次给列表赋值;
[0035]
每赋值依次,列表索引的赋值位置加一,符号的频率减一;
[0036]
当前符号为最后一个时,下一个符号从最小开始。
[0037]
作为本发明的进一步方案,所述顺序循环分配方案中,只对频率为正值的符号赋值,即跳过频率为零的符号。
[0038]
本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述任一项根据本发明的新型ans编解码方法。
[0039]
本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被执行时实现上述任一项根据本发明的新型ans编解码方法。
[0040]
相比于传统的实现方式,本发明的主要优势有:
[0041]
本发明的新型ans编解码方法、计算机设备及存储介质,提出基于count[],pos[]两个列表的快速ans编码方案,且包括pos[]的生成及使用方法,也提出了基于symbol[],sort[]快速ans解码方案,包括sort[]数学形式,的生成及使用方法,以及基于有限域的“顺序循环”的符号生成函数,解码端能够解析出原始符号序列,可以提高数据压缩效果。
[0042]
本技术的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
[0043]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0044]
在图中:
[0045]
图1为本发明的新型ans编解码方法中ans编解的流程图;
[0046]
图2为本发明的新型ans编解码方法中ans解解的流程图;
[0047]
图3为本发明的实现新型ans编解码方法的计算机可读存储介质的实施例的示意图;
[0048]
图4为本发明的实现新型ans编解码方法的计算机设备的实施例的硬件结构示意图;
具体实施方式
[0049]
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
[0050]
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
[0051]
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0052]
由于熵编码(或熵编码)是一种无损数据压缩方案。熵编码的核心思想是通过用较少的位(bit)表示频繁出现的符号,用较多的位(bit)表示很少出现的元素来实现压缩.可
以用如下两个公式描述:
[0053][0054]
上式中,p(x)指的是符号x的统计频率,l(x)的是熵编码算法符号x分配的码长。
[0055]
哈夫曼编码和算术编码是两种最常见的熵编码方法,下面将对其进行简要描述。哈夫曼编码是david a.huffman开发的一种熵编码技术。哈夫曼编码的算法原理简单,基于符号集的概率排序分配码长。哈夫曼编码总是使用整数位来表示一个符号,并且它分别对每个符号进行编码。因此哈夫曼码不能保证最佳的压缩效果。当所有符号的概率为2的负整数幂时,哈夫曼编码产生最佳结果。在哈夫曼码中,一个符号的每次出现总是被编码成相同的代码字。哈夫曼编码的优点为编码速率快。
[0056]
由信息论可知,单个符号的理想码字长度仅仅由符号的出现概率决定:code-length(x)=-log
p(x)
,如果一个符号的出现概率为0.4,那么理想的码字长度为1.32(-log
0.4
).但是不幸的是,huffman编码分配的码码字长度只能为整数。这也是huffman编码算法的痛点。
[0057]
算术编码可以解决huffman编码的这个痛点,算术编码是另一种熵编码技术。它将输入数据编码为0到1之间的实数区间。随着输入被编码并且指定它所需的位数增加,该区间变得更小,与哈夫曼编码不同,算术编码使用几乎精确的概率,因此它实现了接近理论极限的压缩率。然而算术编码的算法原理也更复杂。而且编码效率很低(大致是huffman编码的1/10),在实时性要求较高的数据压缩领域,少有应用。
[0058]
正是如此,近些年,好多学者都在寻一个“压缩率接近算术编码,且编码效率接近huffman编码”的新型算法.2009年,jarekduda提出一种asymmetric numeral systems(ans,非对称数字系统).根据jarekduda的说法,非对称数字系统实现了与算术编码相当的压缩率,同时具有与霍夫曼编码相似的处理速率。但是,ans无法将这种数学关系直接用于ans编码,因为无法解码,解码端无法解析出原始符号序列。
[0059]
其中,ans的数学原理为:
[0060]
假设需要把一个由两种符号集si∈α={0,1}构成的符号序列编码成一个数字num,首先考虑标准的二进制数字系统,可以将该符号序列编码为num=∑si·2i
,此时,序列中每个符号(“0”或者“1”)占1位。数字num的位宽n。显然二进制数字系统忽略了两种符号(0,1)出现频率,即二进制数字系统适用于符合(0,1)均匀分布的的情形。
[0061]
由香农信息理论可知,假设一个符号序列中各个符号的概率分布为{p1,p2,p3,
……
,pn},那么符号集每个符号的平均信息量(amount of information)为:
[0062][0063]
符号s所含的信息量与该符号的概率ps相关log(1/ps)。两个符号s
1 s2合在一起的信息量为
[0064]
假设自然数那么x与s2结合在在一起的信息量为:
[0065][0066]
jarekduda从上式的数学关系,进一步设想:将数字x与符号s合并在一块编码成一个自然数x

,那么x

的计算公式如下:
[0067][0068]
以上就是ans的基本数学原理。ans会将一串符号序列编码为自然数,这一点与ac(算术编码)算法原理相似。
[0069]
上述(2)(3)式描述了ans的数学原理,但是无法将这种数学关系直接用于ans编码,因为无法解码:
[0070]
假设存在两个序列[x,s1,s2]及[x,s2,s1],如果采用(3)式进行编码,得到的数字分别为x
′1和x
′2:
[0071][0072]
由于x
′1=x
′2,两个序列的编码后的数字相同,因此,解码端无法解析出原始符号序列。
[0073]
为此,本发明为了方便描述ans的编解码流程,引入两个表达式如下:
[0074][0075]
s为当前符号,x为当前数字,x'编码后的数字,c()表示编码的算法,d()表示解码算法.(x,s)解码后的结果。
[0076]
一个可行的ans编解码方案,需要满足以下条件:
[0077]
1.符号序列经ans编码后生成一个数字,解码端反向解析这个数字,可以得到整个序列。
[0078]
2.编解码过程中间数字x(状态)只能对应一个符号。
[0079]
3.c(x,s1)≠c(x,s2),即便s1,s2的概率相等(p1=p2),依然成立。
[0080]
4.c(x1,s)≠c(x2,s),c(x1,sm)≠c(x2,sn)。
[0081]
5.对于任一x及s,x≠c(x,s)。
[0082]
因此,本发明实施例中,提供了一种新型ans编解码方法,包括ans编码方法和ans解码方法,其中,参见图1所示,所述ans编码方法包括以下步骤:
[0083]
步骤s1、符号的概率统计,概率归一化,得到概率分布{f1,f2,f3……fn
},编码概率分布;
[0084]
步骤s2、构建符号分配列表symbol[];
[0085]
步骤s3、构建累积频率表count[],记录累积频率,count[x+1]=count[x]+fx,,构建符号位置列表pos[],用快速查每个符号在symbol[]中索引;
[0086]
步骤s4、按照自然顺序依次对符号序列编码;
[0087]
其中,参见图2所示,所述ans解码方法包括以下步骤:
[0088]
步骤s10、解码每个符号集的概率分布,{f1,f2,f3……fn
};
[0089]
步骤s20、利用构建符号分配列表symbol[],symbol[]在编/解码两端一致;
[0090]
步骤s30、构建一个符号顺序表sort[],设s=symbol[i],sort[i]的表示符号列表symbol中s的出现次数(从0到i);
[0091]
步骤s40、解码符号序列,对解码符号序列进行顺序翻转。
[0092]
作为本发明的进一步方案,所述新型ans编解码方法执行编解码满足以下条件:
[0093]
符号序列经ans编码后生成一个数字,解码端反向解析所述数字,得到整个序列;
[0094]
编解码过程中间数字x只能对应一个符号;
[0095]
c(x,s1)≠c(x,s2),即便s1,s2的概率相等(p1=p2),依然成立,其中,c()表示编码的算法;
[0096]
c(x1,s)≠c(x2,s),c(x1,sm)≠c(x2,sn);
[0097]
对于任一x及s,x≠c(x,s)。
[0098]
在本发明的实施例中,基于ans的数学原理构建ans解码的数据公式,其中,所述ans的数学原理为:将数字x与符号s合并在一块编码成一个自然数x

,x

的计算公式为
[0099]
基于计算公式推导出ans解码的数据公式:x=x
′×
p。
[0100]
其中,编码算法c(x,s)的计算公式为:
[0101][0102]
解码符号序列的解码的计算公式为:
[0103]
s=symbol[mod(x,t)]
[0104][0105]
d(x)=(x,s)。
[0106]
顺序翻转时,解码后的符号序列与编码端的符号序列相反:编码端最先编码第一个符号,解码端最先解码最后一个符号。
[0107]
在本技术的实施例中,利用构建符号分配列表时,构建方法采用顺序循环分配方案,所述顺序循环分配方案,包括:
[0108]
按照符号值的从小到大顺序,依次给列表赋值;
[0109]
每赋值依次,列表索引的赋值位置加一,符号的频率减一;
[0110]
当前符号为最后一个时,下一个符号从最小开始。
[0111]
在本技术的实施例中,ans的数学原理如公式(3)所示公式(3)所蕴含的数学关系是构建设想ans方案的理论基础。由(3)式,容易推导出下式:
[0112]
x=x
′×
p
ꢀꢀꢀ
(6)
[0113]
假设符号集的α={s|0≤s《max}的概率分布为p={p1,p2,p3

},再设想存在一
个长度为x

的列表list[],列表中的每个元素都来自a(list[i]∈α),而且服从a的概率分布,显然对于特定的符号s,整个列表中s的出现频率近似为:
[0114]fs
=x
′×
psꢀꢀꢀ
(7)
[0115]
(6)与(7)形式完全一致,于是我们可以认为在区间(0,x

]之间存在x个符号,即list[x

]是s在列表list[]中第x次出现。
[0116]
ans会将符号序列转换为一个数字,显然这个数会非常大,因此我们不可能构造一个无限长的列表。一个最可行的方案是将在有限域中构建固定长度的列表,并且该列表扩展至无限长,即符号分布函数为一个周期函数s(x+n
×
t)=s(x)。
[0117]
假设符号s在一个周期内出现的次数为fs,那么显然第x个s会出现的周期数为并且在该周期内是第m次出现,m=mod(x,fs)。
[0118]
假设s(x)周期长度为t,对于一个特定的数字y,显然y位置上的符号与第1周期内的y

=mod(y,t)位置上的符号一致,即s(y)=s(mod(y,t)).设s(y

)是该周内第m次出现,同时假设y是第x次出现
[0119]
构建一个符号分布函数,本发明中,使用一种“顺序循环”的符号分配方案,“顺序循环”分配方案为:
[0120]
按照符号值的从小到大顺序,依次给列表赋值:symbol[x]=n,symbol[x+1]=n+1;
[0121]
每赋值依次,列表索引(赋值位置)加一(+1),符号的频率减一(-1);
[0122]
当前符号为最后一个时,下一个符号从最小(0)开始;
[0123]
只对频率为正值的符号赋值,即跳过频率为零的符号。
[0124]
本发明的新型ans编解码方法,可以提高数据压缩效果。
[0125]
应该理解的是,上述虽然是按照某一顺序描述的,但是这些步骤并不是必然按照上述顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,本实施例的一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0126]
需要说明的是,“顺序循环”分配方案的伪代码如下:
[0127][0128][0129]
需要说明的是,编码流程伪代码为:
[0130]
[0131][0132]
需要说明的是,ans解码伪代码为:
[0133]
[0134]
[0135][0136]
本发明实施例的第三个方面,还提供了一种计算机设备400,包括存储器420和处理器410,该存储器中存储有计算机程序,该计算机程序被该处理器执行时实现上述任意一项实施例的方法,包括ans编码方法和ans解码方法,其中,所述ans编码方法包括以下步骤:
[0137]
符号的概率统计,概率归一化,得到概率分布{f1,f2,f3……fn
},编码概率分布;
[0138]
构建符号分配列表symbol[];
[0139]
构建累积频率表count[],记录累积频率,count[x+1]=count[x]+fx,,构建符号位置列表pos[],用快速查每个符号在symbol[]中索引;
[0140]
按照自然顺序依次对符号序列编码;
[0141]
其中,所述ans解码方法包括以下步骤:
[0142]
解码每个符号集的概率分布,{f1,f2,f3……fn
};
[0143]
利用构建符号分配列表symbol[],symbol[]在编/解码两端一致;
[0144]
构建一个符号顺序表sort[],设s=symbol[i],sort[i]的表示符号列表symbol中s的出现次数;
[0145]
解码符号序列,对解码符号序列进行顺序翻转。
[0146]
如图4所示,为本发明提供的执行新型ans编解码方法的计算机设备的一个实施例的硬件结构示意图。以如图4所示的计算机设备400为例,在该计算机设备中包括一个处理器410以及一个存储器420,并还可以包括:输入装置430和输出装置440。处理器410、存储器420、输入装置430和输出装置440可以通过总线或者其他方式连接,图4中以通过总线连接为例。输入装置430可接收输入的数字或字符信息,以及产生与新型ans编解码有关的信号输入。输出装置440可包括显示屏等显示设备。
[0147]
存储器420作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本技术实施例中的新型ans编解码方法对应的程序指令/模块。存储器420可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储新型ans编解码方法的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器420可选包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0148]
处理器410通过运行存储在存储器420中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的新型ans编解码方法,包括ans编码方法和ans解码方法,其中,所述ans编码方法包括以下步骤:
[0149]
符号的概率统计,概率归一化,得到概率分布{f1,f2,f3……fn
},编码概率分布;
[0150]
构建符号分配列表symbol[];
[0151]
构建累积频率表count[],记录累积频率,count[x+1]=count[x]+fx,,构建符号位置列表pos[],用快速查每个符号在symbol[]中索引;
[0152]
按照自然顺序依次对符号序列编码;
[0153]
其中,所述ans解码方法包括以下步骤:
[0154]
解码每个符号集的概率分布,{f1,f2,f3……fn
};
[0155]
利用构建符号分配列表symbol[],symbol[]在编/解码两端一致;
[0156]
构建一个符号顺序表sort[],设s=symbol[i],sort[i]的表示符号列表symbol中s的出现次数;
[0157]
解码符号序列,对解码符号序列进行顺序翻转。
[0158]
本发明实施例的第四个方面,还提供了一种计算机可读存储介质,图3为本发明实施例提供的新型ans编解码方法的计算机可读存储介质的示意图。如图3所示,计算机可读存储介质300存储有计算机程序指令310,该计算机程序指令310可以被处理器执行。该计算机程序指令310被执行时实现上述任意一项实施例的方法,包括ans编码方法和ans解码方法,其中,所述ans编码方法包括以下步骤:
[0159]
符号的概率统计,概率归一化,得到概率分布{f1,f2,f3……fn
},编码概率分布;
[0160]
构建符号分配列表symbol[];
[0161]
构建累积频率表count[],记录累积频率,count[x+1]=count[x]+fx,,构建符号位置列表pos[],用快速查每个符号在symbol[]中索引;
[0162]
按照自然顺序依次对符号序列编码;
[0163]
其中,所述ans解码方法包括以下步骤:
[0164]
解码每个符号集的概率分布,{f1,f2,f3……fn
};
[0165]
利用构建符号分配列表symbol[],symbol[]在编/解码两端一致;
[0166]
构建一个符号顺序表sort[],设s=symbol[i],sort[i]的表示符号列表symbol中s的出现次数;
[0167]
解码符号序列,对解码符号序列进行顺序翻转。
[0168]
应当理解,在相互不冲突的情况下,以上针对根据本发明的新型ans编解码方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的新型ans编解码系统和存储介质。
[0169]
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)或快闪存储器。易失性存储器可以包括随机存取存储器(ram),该ram可以充当外部高速缓存存储器。作为例子而非限制性的,ram可以以多种形式获得,比如同步ram(dram)、动态ram(dram)、同步dram(sdram)、双数据速率sdram(ddr sdram)、增强sdram(esdram)、同步链路dram(sldram)、以及直接rambus ram(drram)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
[0170]
本发明的新型ans编解码方法、计算机设备及存储介质,提出基于count[],pos[]两个列表的快速ans编码方案,且包括pos[]的生成及使用方法,也提出了基于symbol[],sort[]快速ans解码方案,包括sort[]数学形式,的生成及使用方法,以及基于有限域的“顺序循环”的符号生成函数,解码端能够解析出原始符号序列,可以提高数据压缩效果。
[0171]
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
[0172]
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0173]
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

技术特征:


1.一种新型ans编解码方法,其特征在于,包括ans编码方法和ans解码方法,其中,所述ans编码方法包括以下步骤:符号的概率统计,概率归一化,得到概率分布{f1,f2,f3……
f
n
},编码概率分布;构建符号分配列表symbol[];构建累积频率表count[],记录累积频率,count[x+1]=count[x]+fx,,构建符号位置列表pos[],用快速查每个符号在symbol[]中索引;按照自然顺序依次对符号序列编码;其中,所述ans解码方法包括以下步骤:解码每个符号集的概率分布,{f1,f2,f3……
f
n
};利用构建符号分配列表symbol[],symbol[]在编/解码两端一致;构建一个符号顺序表sort[],设s=symbol[i],sort[i]的表示符号列表symbol中s的出现次数;解码符号序列,对解码符号序列进行顺序翻转。2.根据权利要求1所述的新型ans编解码方法,其特征在于,还包括ans将符号序列转换为一个数字,在有限域中构建固定长度的列表,将所述列表扩展至无限长,即符号分布函数为一个周期函数s(x+n
×
t)=s(x),其中,假设符号s在一个周期内出现的次数为fs,则第x个s会出现的周期数为在所述周期内是第m次出现,m=mod(x,f
s
)。3.根据权利要求2所述的新型ans编解码方法,其特征在于,若s(x)周期长度为t,对于一个特定的数字y,y位置上的符号与第1周期内的y

=mod(y,t)位置上的符号一致,即s(y)=s(mod(y,t)),设s(y

)是该周内第m次出现,同时假设y是第x次出现4.根据权利要求1项所述的新型ans编解码方法,其特征在于,编码算法c(x,s)的计算公式为::5.根据权利要求4所述的新型ans编解码方法,其特征在于,解码符号序列的解码的计算公式为:算公式为:d(x)=(x,s)。6.根据权利要求1所述的新型ans编解码方法,其特征在于,顺序翻转时,解码后的符号序列与编码端的符号序列相反:编码端最先编码第一个符号,解码端最先解码最后一个符号。7.根据权利要求1所述的新型ans编解码方法,其特征在于,利用构建符号分配列表时,构建方法采用顺序循环分配方案,所述顺序循环分配方案,包括:
按照符号值的从小到大顺序,依次给列表赋值;每赋值依次,列表索引的赋值位置加一,符号的频率减一;当前符号为最后一个时,下一个符号从最小开始。8.根据权利要求7所述的新型ans编解码方法,其特征在于,所述顺序循环分配方案中,只对频率为正值的符号赋值,即跳过频率为零的符号。9.一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,其特征在于,该计算机程序被处理器执行时执行权利要求1-8任一项所述的新型ans编解码方法。10.一种计算机可读存储介质,存储有计算机程序指令,其特征在于,该计算机程序指令被执行时实现权利要求1-8任一项所述的新型ans编解码方法。

技术总结


本发明提供了一种新型ANS编解码方法、计算机设备及存储介质,该方法包括ANS编码方法和ANS解码方法;编码时,符号的概率统计,概率归一化,得到概率分布,编码概率分布;构建符号分配列表Symbol[];构建累积频率表count[],记录累积频率,count[x+1]=count[x]+fx,构建符号位置列表Pos[],用快速查每个符号在Symbol[]中索引;按照自然顺序依次对符号序列编码;解码时,解码每个符号集的概率分布;利用构建符号分配列表Symbol[],Symbol[]在编/解码两端一致;构建一个符号顺序表Sort[],设s=Symbol[i],Sort[i]的表示符号列表Symbol中s的出现次数;可以提高数据压缩效果。可以提高数据压缩效果。可以提高数据压缩效果。


技术研发人员:

张永兴 陈静静 吴睿振 孙华锦 王凛

受保护的技术使用者:

山东云海国创云计算装备产业创新中心有限公司

技术研发日:

2022.09.27

技术公布日:

2023/3/9

本文发布于:2024-09-22 19:21:34,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/70855.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:符号   方法   概率   序列
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议