一种编解码方法、装置、设备及存储介质与流程

文档序号:33949882发布日期:2023-04-26 10:28阅读:52来源:国知局
一种编解码方法、装置、设备及存储介质与流程

本发明涉及计算机,特别涉及一种编解码方法、装置、设备及存储介质。


背景技术:

1、熵编码(或熵编码)是一种无损数据压缩方案。熵编码的核心思想是通过用较少的位(bit)表示频繁出现的符号,用较多的位(bit)表示很少出现的元素。哈夫曼编码和算术编码是两种最常见的熵编码方法,哈夫曼编码算法原理简单,基于符号集的概率排序分配码长。哈夫曼编码总是使用整数位来表示一个符号,并且它分别对每个符号进行编码。因此哈夫曼码不能保证最佳的压缩效果。当所有符号的概率为2的负整数幂时,哈夫曼编码产生最佳结果。在哈夫曼码中,一个符号的每次出现总是被编码成相同的代码字。哈夫曼编码的优点为编码速率快。由信息论可知,单个符号的理想码字长度仅仅由符号的出现概率决定:code-length(x)=-logp(x),如果一个符号的出现概率为0.4,那么理想的码字长度为1.32(-log0.4)。但是不幸的是,哈夫曼编码分配的码码字长度只能为整数,这也是哈夫曼编码算法的痛点。算术编码可以解决哈夫曼编码的这个痛点,算术编码是另一种熵编码技术。它将输入数据编码为0到1之间的实数区间。随着输入被编码并且指定它所需的位数增加,该区间变得更小,与哈夫曼编码不同,算术编码使用几乎精确的概率,因此它实现了接近理论极限的压缩率。然而算术编码的算法原理也更复杂。而且编码效率很低(大致是huffman编码的1/10),在实时性要求较高的数据压缩领域,少有应用。

2、正是如此,一个“压缩率接近算术编码且编码效率接近huffman编码”的新型算法asymmetric numeral systems(ans,非对称数字系统)应运而生,非对称数字系统实现了与算术编码相当的压缩率,同时具有与霍夫曼编码相似的处理速率。然而,经ans算法编码,最终的生成的数字非常大,受制于计算机数据处理的位宽,软硬件难以处理如此大的数字。可以说,几乎不可能实现这种“整体打包”的ans编解码。

3、因此,上述技术问题亟待本领域技术人员解决。


技术实现思路

1、有鉴于此,本发明的目的在于提供一种编解码方法、装置、设备及存储介质,能够消除子序列编码的之间的空间冗余度,使得编码结果便于计算机处理。其具体方案如下:

2、本技术的第一方面提供了一种编解码方法,包括:

3、在编码阶段,获取按照非对称数字系统分组编码方式对前一个子序列进行编码后得到的编码数字和目标阈值;其中,目标阈值为按照非对称数字系统分组编码方式进行编码后的数字上限;

4、基于前一个子序列的编码数字和目标阈值按照非对称数字系统分组编码方式对当前子序列进行编码得到当前编码数字,并根据前一个子序列的编码数字和目标阈值对当前编码数字进行封装得到当前子序列的编码数字;

5、根据前一个子序列的目标阈值确定前一个子序列的编码数字的空间冗余,并根据所述空间冗余对前一个子序列的目标阈值进行扩大处理得到更新后目标阈值,以将更新后目标阈值确定为当前子序列的目标阈值。

6、可选的,所述编解码方法,还包括:

7、在编码之前,设置编码位宽并根据第一关系式确定目标阈值的初始值;所述第一关系式为:

8、thresh=2m;

9、其中,thresh为目标阈值的初始值,m为编码位宽。

10、可选的,所述根据前一个子序列的编码数字和目标阈值对当前编码数字进行封装得到当前子序列的编码数字,包括:

11、计算当前编码数字与前一个子序列的目标阈值的差值,并将差值计算结果与前一个子序列的编码数字进行求和计算;

12、将求和计算结果确定为当前子序列的编码数字。

13、可选的,所述根据前一个子序列的目标阈值确定前一个子序列的编码数字的空间冗余,包括:

14、计算前一个子序列的目标阈值确定前一个子序列的编码数字的差值,并将差值计算结果确定为前一个子序列的编码数字的所述空间冗余。

15、可选的,所述根据所述空间冗余对前一个子序列的目标阈值进行扩大处理得到更新后目标阈值,包括:

16、将前一个子序列的目标阈值与所述空间冗余进行求和计算,并将求和计算结果确定为更新后目标阈值;其中,更新后目标阈值为两个前一个子序列的目标阈值的和与前一个子序列的编码数字的差。

17、可选的,所述编解码方法,还包括:

18、在解码阶段,获取前一个子序列的编码数字的所述空间冗余;

19、根据所述空间冗余和当前子序列的编码数字确定与当前子序列对应的解码初值,并基于与当前子序列对应的解码初值按照非对称数字系统分组解码方式对当前子序列进行解码。

20、可选的,所述根据所述空间冗余和当前子序列的编码数字确定与当前子序列对应的解码初值,包括:

21、将所述空间冗余和当前子序列的编码数字进行求和计算,并将求和计算结果确定为与当前子序列对应的解码初值。

22、本技术的第二方面提供了一种编解码装置,包括:

23、获取模块,用于在编码阶段,获取按照非对称数字系统分组编码方式对前一个子序列进行编码后得到的编码数字和目标阈值;其中,目标阈值为按照非对称数字系统分组编码方式进行编码后的数字上限;

24、编码及封装模块,用于基于前一个子序列的编码数字和目标阈值按照非对称数字系统分组编码方式对当前子序列进行编码得到当前编码数字,并根据前一个子序列的编码数字和目标阈值对当前编码数字进行封装得到当前子序列的编码数字;

25、冗余消除模块,用于根据前一个子序列的目标阈值确定前一个子序列的编码数字的空间冗余,并根据所述空间冗余对前一个子序列的目标阈值进行扩大处理得到更新后目标阈值,以将更新后目标阈值确定为当前子序列的目标阈值。

26、本技术的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述编解码方法。

27、本技术的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述编解码方法。

28、本技术中,在编码阶段,先获取按照非对称数字系统分组编码方式对前一个子序列进行编码后得到的编码数字和目标阈值;其中,目标阈值为按照非对称数字系统分组编码方式进行编码后的数字上限;然后基于前一个子序列的编码数字和目标阈值按照非对称数字系统分组编码方式对当前子序列进行编码得到当前编码数字,并根据前一个子序列的编码数字和目标阈值对当前编码数字进行封装得到当前子序列的编码数字;最后根据前一个子序列的目标阈值确定前一个子序列的编码数字的空间冗余,并根据所述空间冗余对前一个子序列的目标阈值进行扩大处理得到更新后目标阈值,以将更新后目标阈值确定为当前子序列的目标阈值。本技术中的各个子序列是基于分组编码的原则得到的,在对当前子序列进行编码时,是基于前一个子序列的编码数字和目标阈值,编码后进一步对当前子序列的编码数字进行封装,同时根据前一个子序列被扩大处理后的目标阈值更新当前子序列的目标阈值。能够消除子序列编码的之间的空间冗余度,使得编码结果便于计算机处理。

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