CN109474281A - 数据编码、解码方法及装置 - Google Patents
数据编码、解码方法及装置 Download PDFInfo
- Publication number
- CN109474281A CN109474281A CN201811153932.4A CN201811153932A CN109474281A CN 109474281 A CN109474281 A CN 109474281A CN 201811153932 A CN201811153932 A CN 201811153932A CN 109474281 A CN109474281 A CN 109474281A
- Authority
- CN
- China
- Prior art keywords
- character
- value
- code
- decoded
- coefficient
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
- H03M7/4012—Binary arithmetic codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种数据编码、解码方法及装置,该数据编码方法,包括:获取待编码字符串,并在待编码的字符串中每连续N个字符1的后面添加一个字符0;以相邻字符1和0之间的节点进行划分,将所述待编码字符串划分为多个子字符串;根据每个所述待编码字符串的出现连续字符1的数量确对应的编码系数,并根据对应的编码系数对每个符串中的每个字符进行编码,以得到所述待编码字符串的编码区间下限值。本发明实施例通过多编码系数进行编码和解码,提高数据压缩效率的同时,实现数据的无损压缩和还原。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种数据编码、解码方法及装置。
背景技术
算术编码,就是用一个数编码一串字符串,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为字符,然后对每个字符进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0≤n<1.0)的小数n。算数编码广泛应用于图像处理、云计算的海量数据处理的编码技术。
目前的算数编码大多采用单比特编码和解码,即一个时钟周期只能编码1bit数据,并且,现有的编码和解码方法,无法实现无损编码和无损解码,在还原数据时常常出现数据错误的现象,导致数据处理效率低。
发明内容
鉴于上述状况,有必要针对现有技术中速算编码和解码方法其数据还原容易出错的问题,提供一种数据编码、解码方法及装置。
一种数据编码方法,包括:
获取待编码字符串,并在待编码的字符串中每连续N个字符1的后面添加一个字符0;
以相邻字符1和0之间的节点进行划分,将所述待编码字符串划分为多个子字符串;
根据每个所述待编码字符串的出现连续字符1的数量确对应的编码系数,并根据对应的编码系数对每个符串中的每个字符进行编码,以得到所述待编码字符串的编码区间下限值。
进一步的,上述数据编码方法,其中,所述根据每个所述子字符串的出现连续字符1的数量确对应的编码系数的步骤包括:
统计每个所述子字符串出现连续字符1的数量;
判断统计的当前子字符串出现连续字符1的当前数量M是否大于或等于N;
若是,计算出现N个连续字符为1的一阶静态系数极限值,并将其作为所述当前子字符串的编码系数;
若否,计算出现L个连续字符1的一阶静态系数极限值,并将其作为所述当前子字符串的编码系数,其中,L为大于或等于M且小于N的正整数。
进一步的,上述数据编码方法,其中,所述L等于N-1
本发明实施例还提供了一种数据解码方法,包括:
分别根据多个编码系数计算第i个待解码字符分别为0和1时的概率区间,其中i∈[1,Len],Len为待解码字符串的总长度;
根据第i个待解码字符的编码区间下限值的所属概率区间解码出每个编码系数解码得到的初始解码值;
当所述初始解码值均相同时,根据标记值确定正确的编码系数,并根据所述正确的编码系数重新解码所述第i个待解码字符,以得到目标解码值,所述标记值为已出现初始解码值不同时的情形的次数;
统计所述第i个待解码字符前连续出现字符1的数量k;
当所述初始解码值不相同时,根据所述数量k确定第i个待解码字符的目标解码值;
当所述目标解码值为字符0时,判断所述目标解码值是否为新增字符,若否,输出所述目标解码值。
进一步的,上述数据解码方法,其中,所述编码系数包括第一编码系数和第二编码系数,所述第一编码系数为出现N个连续字符为1的一阶静态系数极限值,所述第二编码系数为出现N-1个连续字符为1的一阶静态系数极限值,所述根据所述数量k确定第i个待解码字符的目标解码值的步骤包括:
当所述数量k小于N-1时,则采用第一编码系数重新解析第i-1至i-k-1之间的待解码字符,并根据所述第二编码系数重新解析第i个待解码字符,以得到第i个待解码字符的目标解码值。
进一步的,上述数据解码方法,其中,所述根据所述数量k确定第i个待解码字符的目标解码值的步骤还包括:
当所述数量k等于N-1时,采用平均编码区下限值解码得到新的子字符串,所述平均编码区下限值为根据所述第一编码系数和所述第二编码系数计算得到的编码区下限值的平均值;
判断所述新的子字符串与预设的子字符串是否相同;
若是,确定第i个待解码字符的目标解码值为0;
若否,确定第i个待解码字符的目标解码值为1。
进一步的,上述数据解码方法,其中,所述根据所述标记值确定第i个待解码字符的目标解码值的步骤包括:
当所述标记值为偶数时,所述目标解码值为0;
当所述标记值为奇数时,所述目标解码值为1。
进一步的,上述数据解码方法,其中,所述当所述目标解码值为字符0时,判断所述目标解码值是否为新增字符的步骤包括:
当所述目标解码值等于0,且k等于N时,所述目标解码值为新增字符;
当所述目标解码值等于0,k小于N,且大于1时,所述目标解码值并非为新增字符。
本发明实施例还提供了一种数据编码装置,包括:
获取模块,用于获取待编码字符串,并在待编码的字符串中每连续N个字符1的后面添加一个字符0;
划分模块,用于以相邻字符1和0之间的节点进行划分,将所述待编码字符串划分为多个子字符串;
编码模块,用于根据每个所述待编码字符串的出现连续字符1的数量确对应的编码系数,并根据对应的编码系数对每个符串中的每个字符进行编码,以得到所述待编码字符串的编码区间下限值。
本发明实施例还提供了一种数据解码装置,包括:
计算模块,用于分别根据多个编码系数计算第i个待解码字符分别为0和1时的概率区间,其中i∈[1,Len],Len为待解码字符串的总长度;
第一解码模块,用于根据第i个待解码字符的编码区间下限值的所属概率区间解码出每个编码系数解码得到的初始解码值;
第二解码模块,用于当所述初始解码值均相同时,根据标记值确定正确的编码系数,并根据所述正确的编码系数重新解码所述第i个待解码字符,以得到目标解码值,所述标记值为已出现初始解码值不同时的情形的次数;
统计模块,用于统计所述第i个待解码字符前连续出现字符1的数量k;
第三解码模块,用于当所述初始解码值不相同时,根据所述数量k确定第i个待解码字符的目标解码值;
输出模块,用于当所述目标解码值为字符0时,判断所述目标解码值是否为新增字符,若否,输出所述目标解码值。
本发明实施例通过多编码系数进行编码和解码,根据待编码字符串值出现连续字符1的数量确定其编码系数,可得到合适的压缩率,在提高数据压缩效率的同时,实现数据的无损压缩,同时,根据多编码系数进行无损解码,有效有还原数据,获得非常好的数据编码和解码效果。
附图说明
图1为本发明第一实施例中的数据编码方法的流程图;
图2为本发明第二实施例中的数据编码方法的流程图;
图3为本发明第三实施例中的数据解码方法的流程图;
图4为本发明第四实施例中的数据解码方法的流程图;
图5为本发明第五实施例中的数据编码装置的结构框图;
图6为本发明第六实施例中的数据解码装置的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
本发明实施例中的方法基于泛过程理论得到的一阶静态系数划分待编码字符串的区间。待编码字符串为字符0和1组成的随机序列,根据泛过程理论,序列中字符0和字符1有固定概率p(0)和p(1),若p(0)≥1/2,且连续字符1的个数k=1。若扩张模型的一阶静态系数r满足不等式:
则扩张模型的分布函数可保持随机序列数理性质,可完整还原随机序列。基于泛过程理论,设p(0)=p(1)=1/2,则一阶静态系数极限值ρ1(保留小数点后6位)与连续字符1的个数k的关系如表1。
表1.连续字符1的个数与一阶静态系数极限值的对应关系表
k | ρ<sup>1</sup> | k | ρ<sup>1</sup> |
1 | 1.236067 | 5 | 1.008276 |
2 | 1.087378 | 6 | 1.004034 |
3 | 1.037580 | 7 | 1.001988 |
4 | 1.017320 | 8 | 1.000986 |
根据随机过程的概率分析,二进制序列中连续2个1的概率为:
上式的极限为1/6。同理连续3个1的概率为1/14,类推得出连续k个1的概率为:
由泛过程理论,随机序列x1,x2,…,xn有分布函数为:
即Hn(x1,x2,...,xn)=Ln(x1,x2,...,xn)+pn(x1,x2,...,xn),其中,wi为第i个字符的编码系数,Ln和Hn分别为待编码字符串的编码区间下限值和上限值。
请参阅图1,为本发明第一实施例中的数据编码方法,包括步骤S11~S13。
步骤S11,获取待编码字符串,并在待编码的字符串中每连续N个字符1的后面添加一个字符0。
步骤S12,以相邻字符1和0之间的节点进行划分,将所述待编码字符串划分为多个子字符串。
步骤S13,根据每个所述待编码字符串的出现连续字符1的数量确对应的编码系数,并根据对应的编码系数对每个符串中的每个字符进行编码,以得到所述待编码字符串的编码区间下限值。
待编码字符串为字符0和1组成的随机序列,例如1100101000111101011111110,一般默认在二进制串的前面加上一个字符0,所以二进制字符串变成:01100101000111101011111110。
本实施例中采用一个或多个编码系数对待编码字符串进行编码,得到对应的编码区间。字符串中连续出现字符1的个数不同,其压缩比也不同。根据扩张模型,出现连续字符1的数量不同计算出的一阶静态系数极限值不同。为了保证概率扩张会达到最大效果,待编码字符串的编码系数采用与对应的一阶静态系数极限值相同或相近的值。例如,针对双系数而言,将出现连续字符1的个数为N的一阶静态系数极限值定义为rmin,连续1的个数为N-1的一阶静态系数极限值定义为rmax。其中N为正整数,其具体取值根据实际情况进行设置,例如当N为6时,rmin和rmax分别为1.004034和1.008276。由于一个字符串中可能出现连续字符1的个数可能远远不止N个的情形,为此需要对随机序列进行预处理,最简单的预处理方法为:在连续N个字符1的后面加上1个字符0。
当N=6时,就意味着需要增加1/126比例的字符0,直接用编码系数1.004034对待编码字符串进行编码压缩,根据泛过程理论可得整个过程是可编可解的。但是没有压缩比,根据熵的计算公式有:
也就是说,熵变大了,压缩后的结果会大于原串大小。所以需要采用多个编码系数进行编码。以双系数为例,当k=6,仅当待编码字符串中的子串“0111111”采用rmin进行编码;其他的字符用rmax编码。根据熵公式有:
很明显,熵的值小于1,所以压缩后的结果会比原字符串小。且连出现连续字符1的数量越小,压缩比越高。
根据待编码字符串中出现连续字符1的数量的不同采用不同的编码系数。具体实施时,以相邻字符1和0之间的节点进行划分,将待编码字符串划分为多个子字符串,例如将待编码字符串01100101000111101011111110划分为011、001、01、0001111、01、01111111、0。每个子字符串根据连续字符1的数量确定对应的编码系数,并根据确定的编码系数编码各个子字符串的每个字符,最终输出待编码字符串的编码区间下限值。
进一步的,根据每个所述子字符串的出现连续字符1的数量确对应的编码系数的步骤包括:
步骤S131,统计每个所述子字符串出现连续字符1的数量;
步骤S132,判断统计的当前子字符串出现连续字符1的当前数量M是否大于或等于N,若是,执行步骤S133,否则执行步骤S134;
步骤S133,计算出现N个连续字符为1的一阶静态系数极限值,并将其作为所述当前子字符串的编码系数;
步骤S134,计算出现L个连续字符1的一阶静态系数极限值,并将其作为所述当前子字符串的编码系数,L为大于或等于M且小于N的正整数。
对于M大于N的子字符串,其编码系数为出现N个连续字符为1的一阶静态系数极限值。其他子字符串的编码系数,则为出现连续字符1的数量为L时的一阶静态系数极限值,其中L可采用大于或等于M且小于N的正整数,例如,设置的N为6,统计的当前子字符串的M为4时,当前子字符串可采用表中k为5或4所对应的一阶静态极限值。
具体实施时,各个子字符串的编码系数根据预先设置的编码系数的数量进行确定。例如设置两个编码系数时(N设置为6),连续字符等于6的子字符串的编码系数为1.004034(参照表1中),而其他子字符串的编码系数为1.008276,即L等于5时的一阶静态系数极限值。例如,设置三个编码系数时,连续字符等于6的子字符串的编码系数为1.004034;连续字符等于5的子字符串的编码系数为1.008276;M小于5的子字符串的编码系数为1.017320。
本实施例通过多系数进行编码,根据待编码字符串值出现连续字符1的数量确定其编码系数,可得到合适的压缩率,在提高数据压缩效率的同时,实现数据的无损压缩,获得非常好的数据编码效果。
请参阅图2,以双编码系数为例说明本发明中的数据编码方法,本实施例中,设置N等于6,则采用的两个编码系数分别为rmin=1.004034和rmax=1.008276。该方法包括步骤S21~S28。
步骤S21,初始化参数,并在待编码字符串中每连续N个字符1的后面添加一个字符0。初始化参数,即H0=p0=1,L0=1,i=1,k=0,c=0,V=0,其中,i为当前编码的第i个字符,k为从第i个字符开始统计得到连续字符1的个数,c为当前子字符串中应当有多少个字符使用同一个编码系数,V为待编码字符串的编码区间下限值。
步骤S22,统计第i个字符后出现连续字符1的个数k,并设置c=k+1。
步骤S23,判断k是否大于或等于6,若是执行步骤S24,否则执行步骤S25。
步骤S24,ωi=rmin。
步骤S25,ωi=rmax。
步骤S26,计算pi和V。其中,当第i个字符为0时,V=V+0;当第i个字符为1时,V=V+pi。
步骤S27,c=c-1,i=i+1,并判断c是否大于0,若是返回执行步骤S26,否则执行步骤S28。
步骤S28,判断i是否小于Len,若是返回执行步骤S22,否则输出V。其中,Len为待压缩字符串的长度。
基于上述实施例中的编码方法,本发明实施例还提供了一种数据解码方法,针对多编码系数进行编码的文件,其在解码时,并不知道各个字符所使用的编码系数,因此无法知道用那个编码系数进行解码。所以,在用概率区间的从属关系来解码时会产生歧义。根据泛过程理论,无损解码的从属关系为:
[Ln(x1,x2,...,xn),Hn(x1,x2,...,xn))∈[Ln-1(x1x2,...,xn-1),Hn-1(x1,x2,...,xn-1))∈...
∈[L1(x1),H1(x1))
在多编码系数的情况下,就不能确定应当是选择哪个系数作用后的概率区间,如果单一的使用其中一个编码系数进行解码,就会出错。所以需要通过多个系数来相互映射解码,然后通过分析解码出来的情形再返回修正为正确系数后再往后解码。
例如,以两个编码系数为例,即采用rmin和rmax进行映射解码进行说明。其中该两个编码系数分别为出现连续6个1的一阶静态系数极限值和出现出现连续5个1的一阶静态系数极限值。根据公式二,全部采用rmin进行解码,其编码区间下限值为:
全部采用rmax进行解码,则编码区间下限值为:
根据输出的V值所属概率区间确认各个待解码字符的解码指。采用两个编码系数进行字符串解码时,得到的待解码值会出现三种情形,即:
情形一:rmin和rmax,解码时得出的是同样的一个字符0;
情形二:rmin和rmax,解码时得出的是同样的一个字符1;
情形三:rmin得出的是字符1,rmax得出的是字符0。
公式二是单调递增函数,因此在正常情况下不可能存在情形三。因为rmax比rmin对概率区间扩张的要大,以第一个字符为例,所以若用rmax解码出字符0时,用rmin解码出的必然为字符0。很明显,情形一和情形二得出的是准确的字符,不存在二义性,通过解码出的子字符串特征修正公式四和公式五为正确的编码系数。
基于公式二和公式三,设第i(i=1,2,3…,n)个字符解码时,出现了情形三,统计在第i个字符之前有k个连续字符1,则有:
当k<5时,如字符串0111101111110,011101111110,01101111110,0101111110,001111110,可采用rmin来解码第i个至第i+7个字符;从第i-k-1个字符到第i-1个字符用rmax进行解码。出现情形三的字符必定在子字符串0111111中的第1字符0和第7字符1上,且必定成对出现。
当k=5时,如字符串01111101111110中第7个字符0会出现情形三;或者字符串01111110中第7个字符1会出现情形三,这种情况存在解码歧义。有如下分析:
首先,需要假设子串011111出现前的所有字符都正确解码,且所使用的编码系数均被修复,所以Li-6(x1,x2,...,xi-6)是已知且正确的。基于这一假设,可以得出第i-6个字符以前的字符和编码系数均是正确的。所以由公式二得:
通过公式六得,若x1,x2,…,xi-6已知,则开始于时刻ti-6的子串通过公式六换算到从t1开始的子串;若x1,x2,…,xi-6未知,则可认为随机序列的片段开始于时刻t1。于是由公式二得子字符串011111用rmax计算得到的L'6和rmin计算得到的L6为:
将rmin=1.004034,rmax=1.008276,p(0)=p(1)=0.5代入上式中得:
L'6=1.983444,L6=1.959788
于是在完全未知V是用的哪一个编码系数时,默认V用的rmax编码系数,有:
很明显,公式七中V’为从t1开始子串011111用两个编码系数作用后的平均值,即L6=V’。然后用V’进行解码将存在两种确定的情形:
A.得到的串为011111,则在第i-6个字符到第个字符确定用的是编码系数rmax;
B.得到的串不是011111,则在第i-6个字符到第个字符确定用的是编码系数rmin。
通过上述推理得出,双系数在解码是会产生歧义。但是歧义可以被准确判断,所以解码过程是完全无损的。
如图3所示,基于上述说明,本发明第三实施例中的数据解码方法包括步骤S31~S36。
步骤S31,分别根据多个编码系数计算第i个待解码字符分别为0和1的概率区间,其中i∈[1,len],len为待解码字符串的总长度。
由于不确定每个字符采用哪个的编码系数进行编码,因此初步尝试采用每个编码系数分别计算字符为0和1的概率区间。其概率区间的上限值和下限值的计算公式可分别参考公式二和公式三。
步骤S32,根据第i个待解码字符的编码区间下限值的所属概率区间解码出每个编码系数解码得到的初始解码值。
在编码过程输出待编码字符串的编码区间下限值,即可知道各个字符的编码区间下限值。解码时从左至右的顺序依序解析各个待解码字符,具体实施时,确定步骤S31中的各个编码区间中,当前第i个待解码字符的编码区间下限值Vi的所属的概率区间确定对应的初始解码值。采用的编码系数有多少个,其解码得到的初始解码值就有多少个。例如,采用两个系数的编码系数,得到字符0的概率区间和字符1的概率区间分别为两个,解码得到的第i个待解码字符的初始解码值也为两个。
步骤S33,当所述初始解码值均相同时,根据标记值确定正确的编码系数,并根据所述正确的编码系数重新解码所述第i个待解码字符,以得到目标解码值,所述标记值为已出现初始解码值不同时的情形的次数。
当得到的各个初始解码值均相同时,则说明解码正常(情形一或情形二),此时需要根据标记值对应的编码系数重新解析第i个待解码字符,以得到目标解码值。当标记值为偶数时,采用数值大的编码系数重新解析第i个待解码字符;当标记值为奇数时,采用数值小的编码系数解析所述第i个待解码字符。
步骤S34,统计所述第i个待解码字符前连续出现字符1的数量k。
步骤S35,当所述初始解码值不相同时,根据所述数量k确定第i个待解码字符的目标解码值。
当得到的各个初始解码值均不相同,则说明解码异常(即出现情形三),此时,根据i个待解码字符前连续出现字符1的数量k确定第i个待解码字符的正确解码值。具体的,以两个编码系数为例进行说明,该编码系数包括第一编码系数和第二编码系数,第一编码系数为出现N个连续字符为1的一阶静态系数极限值,第二编码系数为出现N-1个连续字符为1的一阶静态系数极限值。其具体步骤包括:
步骤S351,当所述数量k小于N-1时,则采用第一编码系数重新解析第i-1至i-k-1之间的待解码字符,并根据所述第二编码系数重新解析第i个待解码字符,以得到第i个待解码字符的目标解码值。
步骤S352,当所述数量k等于N-1时,采用平均编码区下限值解码得到新的子字符串,所述平均编码区下限值为根据所述第一编码系数和所述第二编码系数计算得到的编码区下限值的平均值;
步骤S353,判断所述新的子字符串与预设的子字符串是否相同;
若是,确定第i个待解码字符的目标解码值为0;
若否,确定第i个待解码字符的目标解码值为1。
步骤S36,当所述目标解码值为字符0时,判断所述目标解码值是否为新增字符,若否,输出所述目标解码值。
由于在编码的过程中,在每连续N个字符1的后面添加一个字符0,所以解码时,需要判断目标解码值为0时,是否为新增的字符0。其根据数量k与阈值N的关系进行判断,即当k等于N时,确定第i个待解码字符为新增字符0,则不输出该目标解码值;当k小于N时,输出该目标解码值。
请参阅图4,为本发明第四实施例中的数据解码方法,其以双编码系数为例说明数据解码具体过程,本实施例中,设置N等于6,采用的两个编码系数分别为rmin=1.004034和rmax=1.008276。该方法包括步骤S41~S52。
步骤S41,初始化参数。即H0=p0=1,L0=1,循环变量i=1,标记值Sign=0,k=0。其中,Sign为出现情形三的次数,如解码时,出现一次情形三时设置Sign=1,再出现情形三时设置Sign=0,k为出现连续字符1的个数。
步骤S42,根据编码系数rmin和rmax分别计算第i个待解码字符分别为0和1的概率区间。
具体的,rmax作用下字符0的概率区间为:
rmax作用下字符1的概率区间为:
同理rmin系数作用下字符0的概率区间为:
rmin系数作用下字符1的概率区间为:
步骤S43,根据第i个待解码字符的编码区间下限值V的所属概率区间确定出每个编码系数解码得到的初始解码值。
具体的,当时,则用rmax解码出xi=0;
当时,则用rmax解码出xi=1;
当时,则用rmin解码出yi=0;
当时,则用rmin解码出yi=1。
步骤S44,判断xi是否等于yi,若是,执行步骤S45,否则执行步骤S46。
步骤S45,当Sign=0,用ωi=rmax代入Hi(x1,x2,…,xi),Li(x1,x2,…,xi)和pi(x1,x2,…,xi)中;当Sign=1,用ωi=rmin代入Hi(x1,x2,…,xi),Li(x1,x2,…,xi)和pi(x1,x2,…,xi)中,以调整第i个待编码字符的概率区间,并根据调整后的概率区间解码得到正确的字符串,并执行步骤S51。
步骤S46,统计第i个字符之前连续字符1的个数k,并判断k是否小于5,若是执行步骤S47,否则执行步骤S49。
步骤S47,用ωi-1=ωi-2=...=ωi-k-1=rmax代入Hi(x1,x2,…,xi),Li(x1,x2,…,xi)和pi(x1,x2,…,xi)中,以调整第i个待编码字符的概率区间,并根据调整后的概率区间解码得到正确的字符串,并执行步骤S48。
步骤S48,判断Sign的值是否为0,若Sign=0,则xi=0,且设置Sign=1;若Sign=1,则xi=1,且设置Sign=0;这两种情况都用ωi=rmin代入Hi(x1,x2,…,xi),Li(x1,x2,…,xi)和pi(x1,x2,…,xi)修正概率区间,并执行步骤S51。
步骤S49,当k=5时,由于Li-6(x1,x2,...,xi-6)已知,用,重新解码出字符串为S’,并判断S’是否等于原字符串S。其中,S=011111。步骤S50,若S’=S,则xi=0,且用ωi-1=ωi-2=...=ωi-k-1=rmax代入Hi(x1,x2,…,xi),Li(x1,x2,…,xi)和pi(x1,x2,…,xi)中重新进行解码;若S’≠S,则xi=1,且用ωi-1=ωi-2=...=ωi-k-1=rmin代入Hi(x1,x2,…,xi),Li(x1,x2,…,xi)和pi(x1,x2,…,xi)中重新进行解码,并执行步骤S51。
步骤S51,若i=1不输出;若xi=0且k=6,则这个字符0是连续6个符号1后面增加的0,不输出;若xi=0且k<6,输出符号0;若xi=1且oldi-1=1,输出符号1。其中,oldi-1=1为第i-1个字符。
步骤S52:i=i+1,并判断i≤Len是否成立,若是返回到步骤S42,若是则结束解码。
请参阅图5,为本发明第五实施例中的数据编码装置,包括:
获取模块51,用于获取待编码字符串,并在待编码的字符串中每连续N个字符1的后面添加一个字符0;
划分模块52,用于以相邻字符1和0之间的节点进行划分,将所述待编码字符串划分为多个子字符串;
编码模块53,用于根据每个所述待编码字符串的出现连续字符1的数量确对应的编码系数,并根据对应的编码系数对每个符串中的每个字符进行编码,以得到所述待编码字符串的编码区间下限值。
本发明实施例所提供的数据编码装置,其实现原理及产生的技术效果和前述数据编码方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
请参阅图6,为本发明第六实施例中的数据解码装置,包括:
计算模块61,用于分别根据多个编码系数计算第i个待解码字符分别为0和1时的概率区间,其中i∈[1,Len],Len为待解码字符串的总长度;
第一解码模块62,用于根据第i个待解码字符的编码区间下限值的所属概率区间解码出每个编码系数解码得到的初始解码值;
第二解码模块63,用于当所述初始解码值均相同时,根据标记值确定正确的编码系数,并根据所述正确的编码系数重新解码所述第i个待解码字符,以得到目标解码值,所述标记值为已出现初始解码值不同时的情形的次数;
统计模块64,用于统计所述第i个待解码字符前连续出现字符1的数量k;
第三解码模块65,用于当所述初始解码值不相同时,根据所述数量k确定第i个待解码字符的目标解码值;
输出模块66,用于当所述目标解码值为字符0时,判断所述目标解码值是否为新增字符,若否,输出所述目标解码值。
本发明实施例所提供的数据解码装置,其实现原理及产生的技术效果和前述数据解码方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据编码方法,其特征在于,包括:
获取待编码字符串,并在待编码的字符串中每连续N个字符1的后面添加一个字符0;
以相邻字符1和0之间的节点进行划分,将所述待编码字符串划分为多个子字符串;
根据每个所述待编码字符串的出现连续字符1的数量确对应的编码系数,并根据对应的编码系数对每个符串中的每个字符进行编码,以得到所述待编码字符串的编码区间下限值。
2.如权利要求1所述的数据编码方法,其特征在于,所述根据每个所述子字符串的出现连续字符1的数量确对应的编码系数的步骤包括:
统计每个所述子字符串出现连续字符1的数量;
判断统计的当前子字符串出现连续字符1的当前数量M是否大于或等于N;
若是,计算出现N个连续字符为1的一阶静态系数极限值,并将其作为所述当前子字符串的编码系数;
若否,计算出现L个连续字符1的一阶静态系数极限值,并将其作为所述当前子字符串的编码系数,其中,L为大于或等于M且小于N的正整数。
3.如权利要求2所述的数据编码方法,其特征在于,所述L等于N-1。
4.一种数据解码方法,其特征在于,包括:
分别根据多个编码系数计算第i个待解码字符分别为0和1时的概率区间,其中i∈[1,Len],Len为待解码字符串的总长度;
根据第i个待解码字符的编码区间下限值的所属概率区间解码出每个编码系数解码得到的初始解码值;
当所述初始解码值均相同时,根据标记值确定正确的编码系数,并根据所述正确的编码系数重新解码所述第i个待解码字符,以得到目标解码值,所述标记值为已出现初始解码值不同时的情形的次数;
统计所述第i个待解码字符前连续出现字符1的数量k;
当所述初始解码值不相同时,根据所述数量k确定第i个待解码字符的目标解码值;
当所述目标解码值为字符0时,判断所述目标解码值是否为新增字符,若否,输出所述目标解码值。
5.如权利要求4所述的数据解码方法,其特征在于,所述编码系数包括第一编码系数和第二编码系数,所述第一编码系数为出现N个连续字符为1的一阶静态系数极限值,所述第二编码系数为出现N-1个连续字符为1的一阶静态系数极限值,所述根据所述数量k确定第i个待解码字符的目标解码值的步骤包括:
当所述数量k小于N-1时,则采用第一编码系数重新解析第i-1至i-k-1之间的待解码字符,并根据所述第二编码系数重新解析第i个待解码字符,以得到第i个待解码字符的目标解码值。
6.如权利要求5所述的数据解码方法,其特征在于,所述根据所述数量k确定第i个待解码字符的目标解码值的步骤还包括:
当所述数量k等于N-1时,采用平均编码区下限值解码得到新的子字符串,所述平均编码区下限值为根据所述第一编码系数和所述第二编码系数计算得到的编码区下限值的平均值;
判断所述新的子字符串与预设的子字符串是否相同;
若是,确定第i个待解码字符的目标解码值为0;
若否,确定第i个待解码字符的目标解码值为1。
7.如权利要求5所述的数据解码方法,其特征在于,所述根据所述标记值确定第i个待解码字符的目标解码值的步骤包括:
当所述标记值为偶数时,所述目标解码值为0;
当所述标记值为奇数时,所述目标解码值为1。
8.如权利要求4所述的数据解码方法,其特征在于,所述当所述目标解码值为字符0时,判断所述目标解码值是否为新增字符的步骤包括:
当所述目标解码值等于0,且k等于N时,所述目标解码值为新增字符;
当所述目标解码值等于0,k小于N,且大于1时,所述目标解码值并非为新增字符。
9.一种数据编码装置,其特征在于,包括:
获取模块,用于获取待编码字符串,并在待编码的字符串中每连续N个字符1的后面添加一个字符0;
划分模块,用于以相邻字符1和0之间的节点进行划分,将所述待编码字符串划分为多个子字符串;
编码模块,用于根据每个所述待编码字符串的出现连续字符1的数量确对应的编码系数,并根据对应的编码系数对每个符串中的每个字符进行编码,以得到所述待编码字符串的编码区间下限值。
10.一种数据解码装置,其特征在于,包括:
计算模块,用于分别根据多个编码系数计算第i个待解码字符分别为0和1时的概率区间,其中i∈[1,Len],Len为待解码字符串的总长度;
第一解码模块,用于根据第i个待解码字符的编码区间下限值的所属概率区间解码出每个编码系数解码得到的初始解码值;
第二解码模块,用于当所述初始解码值均相同时,根据标记值确定正确的编码系数,并根据所述正确的编码系数重新解码所述第i个待解码字符,以得到目标解码值,所述标记值为已出现初始解码值不同时的情形的次数;
统计模块,用于统计所述第i个待解码字符前连续出现字符1的数量k;
第三解码模块,用于当所述初始解码值不相同时,根据所述数量k确定第i个待解码字符的目标解码值;
输出模块,用于当所述目标解码值为字符0时,判断所述目标解码值是否为新增字符,若否,输出所述目标解码值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811153932.4A CN109474281B (zh) | 2018-09-30 | 2018-09-30 | 数据编码、解码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811153932.4A CN109474281B (zh) | 2018-09-30 | 2018-09-30 | 数据编码、解码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109474281A true CN109474281A (zh) | 2019-03-15 |
CN109474281B CN109474281B (zh) | 2022-07-08 |
Family
ID=65663297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811153932.4A Active CN109474281B (zh) | 2018-09-30 | 2018-09-30 | 数据编码、解码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109474281B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110474876A (zh) * | 2019-07-15 | 2019-11-19 | 湖南遥昇通信技术有限公司 | 一种数据编码解码方法、装置、设备以及存储介质 |
CN112100169A (zh) * | 2020-08-05 | 2020-12-18 | 中科驭数(北京)科技有限公司 | 数据库交互数据编码方法及装置 |
WO2021120067A1 (zh) * | 2019-12-18 | 2021-06-24 | 深圳市大疆创新科技有限公司 | 数据编码方法、数据解码方法、数据处理方法、编码器、解码器、系统、可移动平台与计算机可读介质 |
CN113746599A (zh) * | 2021-08-24 | 2021-12-03 | 湖南遥昇通信技术有限公司 | 编码方法、译码方法、终端、电子设备和存储介质 |
CN113765621A (zh) * | 2021-08-24 | 2021-12-07 | 湖南遥昇通信技术有限公司 | 基于云字符概率表的数据编码系统以及方法 |
CN116610265A (zh) * | 2023-07-14 | 2023-08-18 | 济南玖通志恒信息技术有限公司 | 一种商务信息咨询系统的数据存储方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4286256A (en) * | 1979-11-28 | 1981-08-25 | International Business Machines Corporation | Method and means for arithmetic coding utilizing a reduced number of operations |
CN1230054A (zh) * | 1998-03-25 | 1999-09-29 | 三菱电机株式会社 | 自适应概率估计方法、自适应编码方法及自适应解码方法 |
CN1946187A (zh) * | 2001-11-22 | 2007-04-11 | 松下电器产业株式会社 | 可变长度编码方法以及可变长度解码方法 |
JP2012209755A (ja) * | 2011-03-29 | 2012-10-25 | Fujitsu Ltd | 演算回路及び2進数の変換方法 |
CN103119849A (zh) * | 2010-04-13 | 2013-05-22 | 弗兰霍菲尔运输应用研究公司 | 概率区间分割编码器和译码器 |
CN106452451A (zh) * | 2016-08-22 | 2017-02-22 | 湖南千年华光软件开发有限公司 | 数据处理方法及装置 |
-
2018
- 2018-09-30 CN CN201811153932.4A patent/CN109474281B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4286256A (en) * | 1979-11-28 | 1981-08-25 | International Business Machines Corporation | Method and means for arithmetic coding utilizing a reduced number of operations |
CN1230054A (zh) * | 1998-03-25 | 1999-09-29 | 三菱电机株式会社 | 自适应概率估计方法、自适应编码方法及自适应解码方法 |
CN1946187A (zh) * | 2001-11-22 | 2007-04-11 | 松下电器产业株式会社 | 可变长度编码方法以及可变长度解码方法 |
CN103119849A (zh) * | 2010-04-13 | 2013-05-22 | 弗兰霍菲尔运输应用研究公司 | 概率区间分割编码器和译码器 |
JP2012209755A (ja) * | 2011-03-29 | 2012-10-25 | Fujitsu Ltd | 演算回路及び2進数の変換方法 |
CN106452451A (zh) * | 2016-08-22 | 2017-02-22 | 湖南千年华光软件开发有限公司 | 数据处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
S. ANNADURAI 等: "Efficient Secured Lossless Compression of Medical Images - Using Modified Runlength Coding for Character Representation", 《2008 THIRD INTERNATIONAL CONFERENCE ON COMMUNICATIONS AND NETWORKING IN CHINA》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110474876A (zh) * | 2019-07-15 | 2019-11-19 | 湖南遥昇通信技术有限公司 | 一种数据编码解码方法、装置、设备以及存储介质 |
CN110474876B (zh) * | 2019-07-15 | 2020-10-16 | 湖南遥昇通信技术有限公司 | 一种数据编码解码方法、装置、设备以及存储介质 |
WO2021120067A1 (zh) * | 2019-12-18 | 2021-06-24 | 深圳市大疆创新科技有限公司 | 数据编码方法、数据解码方法、数据处理方法、编码器、解码器、系统、可移动平台与计算机可读介质 |
CN112100169A (zh) * | 2020-08-05 | 2020-12-18 | 中科驭数(北京)科技有限公司 | 数据库交互数据编码方法及装置 |
CN113746599A (zh) * | 2021-08-24 | 2021-12-03 | 湖南遥昇通信技术有限公司 | 编码方法、译码方法、终端、电子设备和存储介质 |
CN113765621A (zh) * | 2021-08-24 | 2021-12-07 | 湖南遥昇通信技术有限公司 | 基于云字符概率表的数据编码系统以及方法 |
CN113765621B (zh) * | 2021-08-24 | 2023-10-20 | 湖南遥昇通信技术有限公司 | 基于云字符概率表的数据编码系统以及方法 |
CN113746599B (zh) * | 2021-08-24 | 2024-03-22 | 湖南遥昇通信技术有限公司 | 编码方法、译码方法、终端、电子设备和存储介质 |
CN116610265A (zh) * | 2023-07-14 | 2023-08-18 | 济南玖通志恒信息技术有限公司 | 一种商务信息咨询系统的数据存储方法 |
CN116610265B (zh) * | 2023-07-14 | 2023-09-29 | 济南玖通志恒信息技术有限公司 | 一种商务信息咨询系统的数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109474281B (zh) | 2022-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109474281A (zh) | 数据编码、解码方法及装置 | |
CN109450596B (zh) | 编码方法、解码方法、编码设备、解码设备、存储介质及终端 | |
CN100553152C (zh) | 基于cabac的编码方法和设备及解码方法和设备 | |
EP0695040B1 (en) | Data compressing method and data decompressing method | |
CN104168085B (zh) | 一种基于冗余熵变换的数据压缩方法 | |
JPH04223717A (ja) | データ圧縮モデル選択方法及びシステム | |
CN107332570B (zh) | 分段级联Hash序列的极化码编码方法 | |
US11265561B2 (en) | Method and apparatus for range derivation in context adaptive binary arithmetic coding | |
CN107565970B (zh) | 一种基于特征识别的混合无损压缩方法及装置 | |
KR20190038747A (ko) | 데이터 인코딩 방법, 장치 및 저장매체 | |
US6252992B1 (en) | Variable length coding | |
JPH07193720A (ja) | 画像符号化復号装置 | |
CN109525249A (zh) | 编码解码方法、系统、可读存储介质及计算机设备 | |
CN102831020A (zh) | 日志检测方法及系统 | |
CN1426629A (zh) | 使用多个编码器的优化无损压缩的方法和装置 | |
Jiang et al. | Parallel design of arithmetic coding | |
CN103973310A (zh) | 一种基于异或逻辑运算折半划分的测试数据压缩方法 | |
CN110798224A (zh) | 一种压缩编码、检错及解码方法 | |
KR100281321B1 (ko) | 적응적인 산술 부호화 및 그 복호화 방법 | |
CN103401650A (zh) | 一种(n,1,m)有误码卷积码的盲识别方法 | |
CN106484753A (zh) | 数据处理方法 | |
CN102651795B (zh) | 游长缩减的二元序列压缩编码方法 | |
Goto et al. | Speeding up q-gram mining on grammar-based compressed texts | |
US9722631B2 (en) | Method and apparatus for calculating estimated data compression ratio | |
JP3350385B2 (ja) | 符号生成方法および符号化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |