CN1209925C - 基于信源高阶熵的数据压缩方法 - Google Patents

基于信源高阶熵的数据压缩方法 Download PDF

Info

Publication number
CN1209925C
CN1209925C CNB031144233A CN03114423A CN1209925C CN 1209925 C CN1209925 C CN 1209925C CN B031144233 A CNB031144233 A CN B031144233A CN 03114423 A CN03114423 A CN 03114423A CN 1209925 C CN1209925 C CN 1209925C
Authority
CN
China
Prior art keywords
information source
piece
sub
source
last
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.)
Expired - Fee Related
Application number
CNB031144233A
Other languages
English (en)
Other versions
CN1447603A (zh
Inventor
李春林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Tangheng Technology Development Co., Ltd.
Original Assignee
李春林
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 李春林 filed Critical 李春林
Priority to CNB031144233A priority Critical patent/CN1209925C/zh
Publication of CN1447603A publication Critical patent/CN1447603A/zh
Application granted granted Critical
Publication of CN1209925C publication Critical patent/CN1209925C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

本发明涉及信息技术领域中的数据无损压缩和解压缩技术。现有的基于信源熵编码的无损压缩和解压缩方法,都是基于信源的一阶熵来压缩数据;基于非前缀码的熵编码方法,都要先根据信源的出现频率建立一棵二叉树,然后通过从根到叶子的搜索来建立信源的编码。本发明是基于信源的高阶(2阶或3阶)熵,能较大地提高数据的压缩比;是自适应算法,不需要事先知道各信源的最终出现频率;是直接根据信源目前的出现频率建立非前缀编码,不需要建立二叉树。本发明适用于所有数字化文件的压缩和解压缩,也可作为图像、声音等信息有损压缩方法中的熵编码算法,还可用于各种实时流媒体信息的压缩和解压缩。

Description

基于信源高阶熵的数据压缩方法
技术领域
本发明涉及信息技术领域中数据的无损压缩和解压缩技术,具体地涉及基于信源熵编码的数据压缩和解压缩技术。
背景技术
现有的数据无损压缩方法,主要有三种类型:第一类是基于游程编码的压缩方法,第二类是基于字典编码的压缩方法,主要有LZ77、LZ78和LZW;第三类就是基于信源熵编码的压缩方法,主要有Huffman算法,Shannon-Fano算法和算术编码算法。
Huffman编码是可变字长编码的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造非前缀码的平均长度最短的码字,有时称之为最佳编码。产生Huffman编码需要对原始数据扫描两遍。第一遍扫描要精确地统计出原始数据中,每个待编码字符出现的频率,第二遍是建立Huffman树并进行编码。Huffman编码的前身,是由Claude·E·Shannon和R·M·Fano两人提出的Shannon-Fano编码。编码前要求编码字符的出现概率已经统计出来。Shannon-Fano编码的核心仍然是构造二叉树,构造的步骤如下:
1)将待编码字符按其出现频率从大到小排序。
2)将序列分成上下两部分,使得上部频率总和尽可能接近下部频率总和。
3)把第二步中划分出的上部作为二叉树的左子树,记0,下部作为二叉树的右子树,记1。
4)分别对左右子树重复2、3两步,直到所有的符号都成为二叉树的树叶为止。
Huffman算法和Shannon-Fano算法都是基于信源一阶熵的压缩算法。根据Shannon的信息熵理论,利用信源的高阶熵可以进一步提高压缩效率。举个典型的例子来说明。在英语文本文件中,字符‘u’的出现频率是很低的,在Huffman算法或Shannon-Fano算法中,要给‘u’分配一个较长的编码。而根据英语语言的特点,在字符‘q’之后,字符‘u’出现的概率是很高的。因此,在前一字符为‘q’的情况下,给字符‘u’分配的编码长度就可以很短,甚至只需一位(bit)即可。由此可见,基于信源的高阶熵可以有效提高压缩效率。
发明内容
本发明的目的是基于信源高阶熵的数据压缩方法,是自适应方法,不需要事先知道各信源的最终出现频率,是直接根据信源目前的出现频率建立非前缀编码,在产生非前缀编码和解码时,不需要建立二叉树,可以更大的提高压缩比,减少压缩时间。
关于信源熵阶的定义,按照Shannon的定义,信源的一阶熵为:
H = - Σ i = 1 m p i lo g 2 p i - - - bits / character - - - ( 1 )
其中m为信源的个数,pi为第i个信源的出现概率。
信源的二阶熵为
H = - Σ i = 1 m p i Σ j = 1 m P j | i lo g 2 P j | i - - - bits / character - - - ( 2 )
其中m为信源的个数,Pj|i为当前信源为j,前一信源为i的条件概率。
信源的三阶熵为:
H = - Σ i = 1 m p i Σ j = 1 m P j | i Σ k = 1 m P k | j , i lo g 2 P k | j , i - - - bits / character - - - ( 3 )
其中m为信源的个数,Pk|j,i为当前信源为k,前一信源为j,再前一信源为i的条件概率。
本发明是一种基于信源高阶熵的数据压缩方法,当基于二阶熵时,是根据前一信源相同的所有信源到目前为止的出现次数来进行数据压缩;当基于三阶熵时,是根据前一信源相同、再前一信源也相同的所有信源到目前为止的出现次数来进行数据压缩,其特征是数据压缩包括以下步骤:
第(1)步:将信源计数数组按信源到目前为止的出现次数进行降序排列,同时相应调整信源在信源符号数组中的位置,使这两个数组中同一下标的两个数据分别对应于某信源符号和该信源到目前为止的出现次数;
第(2)步:求出待编码信源在信源符号数组中的位置;
第(3)步:将信源计数数组分为左右两个子块,其中右子块中信源的个数总为2i个;
第(4)步:根据待编码信源所属的子块输出相应的编码,若待编码信源属于左子块,则输出编码“0”;若待编码信源属于右子块,则输出编码“1”;
第(5)步:若待编码信源所属子块的信源个数大于1,则继续划分待编码信源所属的子块,回到第(4)步继续输出编码;若待编码信源所属子块的信源个数只有1个,则待编码信源编码完毕;
第(6)步:将待编码信源的出现次数增加1次;
第(7)步:当基于二阶熵压缩时,更新前一信源代码,即以刚完成编码的信源为前一信源,读入新的信源为待编码信源,回到第(1)步,直到所有待编码信源都编码完毕;当基于三阶熵时,更新前一信源和再前一信源的代码,即以前一信源为再前一信源,刚完成编码的信源为前一信源,读入新的信源为待编码信源,回到第(1)步,直到所有待编码信源都编码完毕。
求出待编码信源在信源符号数组中的位置的方法是:通过将待编码信源与信源符号数组中的元素逐个比较,当两者相同时,该信源符号在数组中的序号即为待编码信源在信源符号数组中的位置。
一种基于信源高阶熵的数据解压缩方法,当基于二阶熵时,是根据前一信源相同的所有信源到目前为止的出现次数来进行解压缩;当基于三阶熵时,是根据前一信源相同、再前一信源也相同的所有信源到目前为止的出现次数来进行解压缩,其特征是数据解压缩包括以下步骤:
第(1)步:将信源计数数组按信源到目前为止的出现次数进行降序排列,同时相应调整信源在信源符号数组中的位置,使数组中同一下标的两个数据分别对应于某信源符号和该信源到目前为止的出现次数;
第(2)步:将信源计数数组分为左右两个子块;
第(3)步:取出1位压缩编码,若取出的是“1”,说明待解压信源位于右子块;若取出的是“0”,说明待解压信源位于左子块;
第(4)步:若待解压信源所属子块的信源个数大于1,则继续划分待解压信源所属的子块,回到第(3)步继续进行解压缩;若待解压信源所属子块的信源个数只有1个,则该信源即为解压得出的原信源;
第(5)步:将解压得出的信源的出现次数增加1次;
第(6)步:当基于二阶熵压缩时,更新前一信源代码,即以刚完成解压的信源为前一信源,回到第(1)步,直到所有待解压信源都解压完毕;当基于三阶熵时,更新前一信源和再前一信源的代码,即以前一信源为再前一信源,刚解压得出的信源为前一信源,回到第(1)步,直到所有待解压信源都解压完毕。
将信源计数数组划分为左右两个子块的方法是:将信源计数数组开头部分的2i个信源出现频率之和,与第2i+1个信源之后的所有信源出现频率之和进行比较,I的取值从0开始,若前者大于后者,则前者为右子块,后者为左子块,否则,将i值加1后再比较,直到满足前2i个信源出现频率之和大于第2j+1个信源之后的所有信源出现频率之和时为止。
继续划分待编码信源所属子块的方法是:若待编码信源属于左子块,则按所述的划分左右两个子块的方法将该左子块再划分为左右两个子块;若待编码信源属于右子块,则将右子块按子块中信源的个数,平均分为左右子块,信源出现频率大的部分为右子块,信源出现频率小的部分为左子块。
对于压缩编码进行解码的步骤中所涉及的划分左右子块的方法、继续划分待解压信源所属子块的方法与压缩编码时的方法相同,只有这样才能保证压缩的信源编码能被正确的还原回来。
附图说明
图1  压缩编码示例的第一步。
图2  压缩编码示例的第二步。
图3  压缩编码示例的第三步。
图4  压缩编码示例的第四步。
图5  压缩编码示例的第五步。
图6  压缩编码示例的第六步。
图7  数据编码解码器示意图。
具体实施方式
如图7所示,首先进行存储器的初始化,将各信源的初始出现次数都置为0,然后读入数据,根据选择开关的不同,可以进行数据压缩和解压缩操作。当选择压缩操作时,先求出读入信源在信源符号数组中的位置,根据说明书中所述的压缩方法将读入信源进行编码;输出压缩得出的编码;将当前信源(读入信源)的计数增加1次;再按信源计数进行降序排序;再更新前一信源,基于三阶熵压缩时还要更新再前一信源。继续读入数据,直到整个压缩过程完成。
当选择解压缩操作时,先根据各信源到目前为止的出现次数划分左右块;根据说明书中所述的解压缩方法,逐位读入数据进行解码;输出解压得出的信源编码;将当前信源(解压得出的信源)的计数增加1次;再按信源计数进行降序排序;再更新前一信源,基于三阶熵压缩时还要更新再前一信源。继续读入数据,直到整个解压缩过程完成。
下面结合附图以三阶熵为例对本发明作进一步描述
首先,设定信源是由一个字节的字符构成,其代码为从0到255,共有256个。定义两个256*256*256的数组,一个用来存放前一信源为j,再前一信源为i的当前各信源的出现次数,用Count[i][j][256]来表示,初始值全部置为0;另一个用来存放前一信源为j,再前一信源为i的当前各信源依出现次数排序后相对应的信源字符,用Char[i][j][256]来表示。举例说明:在前一信源为j,再前一信源为i的前提条件下,当前信源‘1’的出现次数为20,在256个信源字符中按降序排列后位于第五位,则Count[i][j][4]=20,Char[i][j][4]=1。Char[i][j][256]的初始值与该信源的值相等,即第0位为0,第1位为1,以此类推,最后一位为255。每次建立当前信源的编码时,依据的就是这Count[i][j][256],参与编码的信源个数为256个。对当前信源字符k来说,其出现概率为Pk|j,i,对应于该信源的三阶熵。压缩前,直接输出第一个信源的字符和第二个信源的字符。然后,每压缩一个字符后,就循环更新前一字符和再前一字符,即将前一字符作为再前一字符,当前字符变作前一字符,读入的新字符为当前字符。
其次,建立当前信源k的编码时,并不需要建立整棵二叉树。先根据数组Char[i][j][256]来确定当前信源k在数组中的位置,用Position表示。该位置也是当前信源k在Count[i][j][256]中按降序排列后的位置。然后根据数组Count[i][j][256],用下面的方法来将数组分为左右两块。总的分块原则,是使右子块信源的个数为2i(i=0~7)个,有利于快速分出左右子块。若第1位的出现频率大于第3到第256位的出现频率之和,则第1位为右子块,其余为左子块;否则,若第1和第2位出现频率之和大于第5位至第256位出现频率之和,则右子块为第1位和第2位,其余为左子块;否则,若第1至4位出现频率之和大于第9至256位出现频率之和,则右子块为第1至4位,其余为左子块;否则,若第1至8位出现频率之和大于第17至256位出现频率之和,则右子块为第1至8位,其余为左子块,如此比较下去,直到满足前2i个信源出现频率之和大于第2i+1个信源之后的所有信源出现频率之和时为止。右子块个数为2i(右子块最大个数为128个),其余为左子块。分出左右子块后,根据Position值的大小,确定当前信源k是属于右子块还是属于左子块。若属于左子块,则输出编码‘0’。若左子块的信源个数大于1,再将左子块按上述的方法分出左右子块,然后用Position的值进行判断,直到左子块只剩下一个信源。若属于右子块,则输出编码‘1’。若右子块信源的个数大于1,则将右子块按信源个数平分为二,出现频率大的为右子块,出现频率小的为左子块,再根据Position的值,确定信源k是属于左子块还是右子块,属于左子块则输出编码‘0’,属于右子块则输出编码‘1’。直到信源k所在子块只剩下一个信源时,即完成信源k的压缩编码。这样,不用建立整棵二叉树,也不用通过搜索二叉树来确定信源的编码,只需根据信源目前的出现频率就能直接得到信源的编码。
接下来,将信源k的出现次数增一,再将Count[i][j][256]排成降序,更新前一信源代码和再前一信源代码,读入新的信源代码为当前代码。回到上一步,直到所有输入的信源编码完成。
下面再说明编码的解码方法。首先,按压缩编码时的方法初始化数组Count[256][256][256]和Char[256][256][256],读入第一个字符FirstChar和第二个字符SecondChar。从第三个字符起,是信源压缩后的编码。然后,按照压缩过程的方法那样,将前一信源为SecondChar,再前一信源为FirstChar的256个信源,即Char[FirstChar][SecondChar][256],按出现的频数分成左右子块。取出1位(bit)压缩编码,若该位为1,则说明待解压信源位于右子块;若该位为0,则说明待解压信源位于左子块;只要待解压信源所在子块的信源个数大于1,则按编码时的分块方法,再分为左右子块。再取出1位压缩编码,按上述相同的方法判断待解压信源位于左子块还是右子块。就这样分解下去,直到待解压信源所在子块的信源个数为1时,则该信源即为解压缩得出的原始信源。
本方法可以基于信源的二阶熵或三阶熵进行数据压缩。基于信源高阶熵的压缩方法,不适宜采用静态的方法。一方面是因为采用静态编码的方法,要对待压缩数据扫描两遍,且不能用于实时数据的压缩;另一方面是因为要保留大量的头文件信息(各信源及其编码),降低了压缩编码效率。因此,只能采用自适应的压缩方法。
为了与已有的压缩方法进行比较,根据本方法分别基于信源的二阶熵和三阶熵编写出程序(LCL),与Huffman算法程序、LZW算法程序一起,对Windows 98第二版操作系统内的几种不同格式的文件进行压缩,试验结果如下表所示。用到的Huffman算法程序和LZW算法程序,均是从Internet上下载来的,作者分别是Fredrik Qvarfort和Mark R.Nelson
表1    压缩效果比较
文件名    原文件大小(Bytes)    Huffman压缩后(Bytes)     LZW压缩后(Bytes)     LCL  压缩后(基于二阶熵)(Bytes)     LCL压缩后(基于三阶熵)(Bytes)
    Clouds.bmp    307,514    193,732     134,856     89,996     84,738
    Forest.bmp    66,146    52,774     57,582     41,795     53,042
    Setup.bmp    173,718    83,265     72,067     39,103     39,850
    Imgedit.ocx    331,776    248,648     277,501     199,236     175,838
    Mci32.ocx    198,456    148,855     176,445     129,332     108,170
    Plugin.ocx    81,760    63,319     74,851     55,979     50,310
    Arialni.ttf    141,328    122,468     172,017     119,932     105,086
    Simfang.ttf    2,386,140    1,735,886     3,134,415     1,546,392     1,521,762
    Tahoma.ttf    249,012    215,642     298,951     202,757     182,058
    Connect.hlp    77,279    49,770     54,207     46,142     39,506
    Dao35.hlp    649,868    543,011     739,215     561,902     531,398
    Winabc.hlp    346,749    216,234     392,860     173,796     124,702
    Display.txt    14,030    12,178     8,886     8,263     7,866
    Network.txt    23,272    19,691     14,158     12,964     11,922
    Programs.txt    35,320    29,566     21,547     19,111     17,454
    Kodakimg.exe    528,384    404,057     525,039     300,525     280,550
    Regedit.exe    122,880    88,026     105,319     76,355     68,810
    Welcome.exe    278,528    173,615     241,728     102,141     89,742
    Asp.dll    328,512    256,368     345,429     216,623     191,914
    Mfc42.dll    995,383    796,656     871,719     652,956     578,510
    Msvbvm60.dll    1,409,024    1,157,614     1,364,005     987,042     861,662
    Publish.mdb    79,872    31,327     21,702     18,799     15,886
    Repostry.mdb    303,104    101,031     84,310     78,514     70,106
    Sampledb.mdb    75,776    28,576     17,149     18,986     16,078
    Desk.cpl    221,280    168,926     229,777     122,793     102,774
    Joy.cpl    374,032    267,484     356,761     231,572     188,138
    Modem.cpl    92,263    73,334     96,765     56,400     49,766
    Gameenum.sys    10,512    8,789     8,833     7,992     7,634
    Logos.sys    129,078    17,871     2,692     17,260     17,114
    Portcls.sys    165,424    130,949     132,049     105,752     92,518
1  压缩编码示例    假设当前信源为字符A,在FirstChar和SecondChar为某一确定值的情况下,出现的次数为12次,在按出现次数排列的数组中位于第17位。其它信源出现的次数分别为55,51,47,45,41,38,37,35,34,31,29,27,24,22,18,16,12,11,9,7,6,6,4,3,3,2,2,1,1,1。
第1步:分左右子块。因为(55)不大于 Σ i = 3 30 C i = 512 , 其中Ci为各信源的出现次数,(55+51)也不大于 Σ i = 5 30 C i = 420 , (55+51+47+45)=198也不大于 Σ i = 9 30 C i = 269 , 而(55+51+47+45+41+38+37+35)=319,大于 Σ i = 17 30 C i = 68 , 故右子块由前8个信源组成,左子块由后面的22个信源组成。当前信源属于左子块,输出编码‘0’。如图1所示。
第二步:由于当前信源位于第17位,属于左子块,下一步只需再分左子块即可。
由于(34)不大于 Σ i = 11 30 C i = 204 , (34+31)也不大于 Σ i = 13 30 C i = 148 , 而(34+31+29+27)=121,大于 Σ i = 17 30 C i = 68 , 故再将左子块分为新的左子块和右子块。右子块
由第9,10,11,12信源组成,左子块由第13至30信源组成。如图2所示。
第三步:当前信源属于新的左子块,输出编码‘0’,再分左子块。由于(24)不大于 Σ i = 15 30 C i = 102 , (24+22)=46也不大于 Σ i = 17 30 C i = 68 , 而(24+22+18+16)=80,大于 Σ i = 21 30 C i = 29 , 故新的右子块由第13至16信源组成,新的左子块由第17至30信源组成。如图3所示。
第四步:当前信源属于新的左子块,输出编码‘0’,再分左子块。由于(12)不大于 Σ i = 19 30 C i = 45 , (12+11)也不大于 Σ i = 21 30 C i = 29 , 而(12+11+9+7)=39,大于 Σ i = 25 30 C i = 10 , 故新的右子块由第17至20信源组成,新的左子块由第21至30信源组成。如图4所示。
第五步:当前信源属于新的右子块,输出编码‘1’,再分右子块。对于右子块,只需要将右子块按信源的个数平分即可。故新的右子块由第17,18信源组成,左子块由第19,20信源组成。如图5所示。
第六步:当前信源属于新的右子块,输出编码‘1’,再分右子块。新的右子块由第17信源组成,左子块由第18信源组成。当前信源属于新的右子块,输出编码‘1’。由于右子块的信源个数只有1个,故编码过程至此结束。如图6所示。
然后根据输出编码的顺序,可得当前信源最后的压缩编码为000111。2编码解压缩示例    以上例来说明编码的解码过程。同上例的第一步,先求出左右子块,右子块由第1至8信源组成,其余信源为左子块。先取出1位编码,是‘0’,说明待解压缩信源位于左子块;再按上例第二步,将左子块再分为新的左子块和右子块。再取出1位编码,又是‘0’,说明待解压缩信源仍位于左子块。再按上例第三步,将左子块再分为新的左子块和右子块。再取出1位编码,又是‘0’,说明待解压缩信源仍位于左子块。再按上例第四步,将左子块再分为新的左子块和右子块。再取出1位编码,是‘1’,说明待解压缩信源位于右子块,此时右子块只有第17至20信源。再按上例第五步,将右子块再分为新的左子块和右子块。再取出1位编码,是‘1’,说明待解压缩信源仍位于右子块,此时右子块只有第17和18信源。再按上例第六步,将右子块再分为新的左子块和右子块。再取出1位编码,是‘1’,说明待解压缩信源位于右子块,此时右子块只有第17信源,故解压缩得到的编码为第17信源,输出该信源,这样,就完成了一个信源的解码。

Claims (5)

1、一种基于信源高阶熵的数据压缩方法,当基于二阶熵时,是根据前一信源相同的所有信源到目前为止的出现次数来进行数据压缩;当基于三阶熵时,是根据前一信源相同、再前一信源也相同的所有信源到目前为止的出现次数来进行数据压缩,其特征是数据压缩包括以下步骤:
第(1)步:将信源计数数组按信源到目前为止的出现次数进行降序排列,同时相应调整信源在信源符号数组中的位置,使这两个数组中同一下标的两个数据分别对应于某信源符号和该信源到目前为止的出现次数;
第(2)步:求出待编码信源在信源符号数组中的位置;
第(3)步:将信源计数数组分为左右两个子块,其中右子块中信源的个数总为2i个;
第(4)步:根据待编码信源所属的子块输出相应的编码,若待编码信源属于左子块,则输出编码“0”;若待编码信源属于右子块,则输出编码“1”;
第(5)步:若待编码信源所属子块的信源个数大于1,则继续划分待编码信源所属的子块,回到第(4)步继续输出编码;若待编码信源所属子块的信源个数只有1个,则待编码信源编码完毕;
第(6)步:将待编码信源的出现次数增加1次;
第(7)步:当基于二阶熵压缩时,更新前一信源代码,即以刚完成编码的信源为前一信源,读入新的信源为待编码信源,回到第(1)步,直到所有待编码信源都编码完毕;当基于三阶熵时,更新前一信源和再前一信源的代码,即以前一信源为再前一信源,刚完成编码的信源为前一信源,读入新的信源为待编码信源,回到第(1)步,直到所有待编码信源都编码完毕。
2、如权利要求1所述的数据压缩方法,其特征是求出待编码信源在信源符号数组中的位置的方法是:通过将待编码信源与信源符号数组中的元素逐个比较,当两者相同时,该信源符号在数组中的序号即为待编码信源在信源符号数组中的位置。
3、如权利要求1所述的一种基于信源高阶熵的数据的解压缩方法,当基于二阶熵时,是根据前一信源相同的所有信源到目前为止的出现次数来进行解压缩;当基于三阶熵时,是根据前一信源相同、再前一信源也相同的所有信源到目前为止的出现次数来进行解压缩,其特征是数据解压缩包括以下步骤:
第(1)步:将信源计数数组按信源到目前为止的出现次数进行降序排列,同时相应调整信源在信源符号数组中的位置,使数组中同一下标的两个数据分别对应于某信源符号和该信源到目前为止的出现次数;
第(2)步:将信源计数数组分为左右两个子块;
第(3)步:取出1位压缩编码,若取出的是“1”,说明待解压信源位于右子块;若取出的是“0”,说明待解压信源位于左子块;
第(4)步:若待解压信源所属子块的信源个数大于1,则继续划分待解压信源所属的子块,回到第(3)步继续进行解压缩;若待解压信源所属子块的信源个数只有1个,则该信源即为解压得出的原信源;
第(5)步:将解压得出的信源的出现次数增加1次;
第(6)步:当基于二阶熵压缩时,更新前一信源代码,即以刚完成解压的信源为前一信源,回到第(1)步,直到所有待解压信源都解压完毕;当基于三阶熵时,更新前一信源和再前一信源的代码,即以前一信源为再前一信源,刚解压得出的信源为前一信源,回到第(1)步,直到所有待解压信源都解压完毕。
4、如权利要求1或3所述的数据压缩方法,其特征是将信源计数数组划分为左右两个子块的方法是:将信源计数数组开头部分的2i个信源出现频率之和,与第2i+1个信源之后的所有信源出现频率之和进行比较,I的取值从0开始;若前者大于后者,则前者为右子块,后者为左子块,否则,将i值加1后再比较,直到满足前2i个信源出现频率之和大于第2i+1个信源之后的所有信源出现频率之和时为止。
5、如权利要求1或3所述的数据压缩方法,其特征是继续划分待编码信源所属子块的方法是:若待编码信源属于左子块,则按所述的划分左右两个子块的方法将该左子块再划分为左右两个子块;若待编码信源属于右子块,则将右子块按子块中信源的个数,平均分为左右子块,信源出现频率大的部分为右子块,信源出现频率小的部分为左子块。
CNB031144233A 2003-01-10 2003-01-10 基于信源高阶熵的数据压缩方法 Expired - Fee Related CN1209925C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB031144233A CN1209925C (zh) 2003-01-10 2003-01-10 基于信源高阶熵的数据压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB031144233A CN1209925C (zh) 2003-01-10 2003-01-10 基于信源高阶熵的数据压缩方法

Publications (2)

Publication Number Publication Date
CN1447603A CN1447603A (zh) 2003-10-08
CN1209925C true CN1209925C (zh) 2005-07-06

Family

ID=28050351

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031144233A Expired - Fee Related CN1209925C (zh) 2003-01-10 2003-01-10 基于信源高阶熵的数据压缩方法

Country Status (1)

Country Link
CN (1) CN1209925C (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8000547B2 (en) * 2005-09-23 2011-08-16 Slipstream Data Inc. Method, system and computer program product for providing entropy constrained color splitting for palette images with color-wise splitting
KR101955142B1 (ko) 2011-01-14 2019-03-06 지이 비디오 컴프레션, 엘엘씨 엔트로피 인코딩 및 디코딩 방식
CN104156990B (zh) * 2014-07-03 2018-02-27 华南理工大学 一种支持特大型数据窗口的无损压缩编码方法及系统
US10097833B2 (en) * 2014-12-26 2018-10-09 Intel Corporation Method and system of entropy coding using look-up table based probability updating for video coding
CN106253910A (zh) * 2016-09-22 2016-12-21 山东华旗新能源科技有限公司 一种压缩编码方法
CN106603081B (zh) * 2016-11-02 2020-02-18 深圳市大语科技有限公司 一种通用算术编码方法及其解码方法
CN106791267A (zh) * 2016-12-21 2017-05-31 济南浪潮高新科技投资发展有限公司 一种基于位图压缩的物理信息系统数据压缩传输方法
EP3408786B1 (en) 2017-01-23 2019-11-20 Istanbul Teknik Universitesi A method of privacy preserving document similarity detection

Also Published As

Publication number Publication date
CN1447603A (zh) 2003-10-08

Similar Documents

Publication Publication Date Title
US5532694A (en) Data compression apparatus and method using matching string searching and Huffman encoding
US7492290B1 (en) Alternative encoding for LZSS output
CN1183683C (zh) 使用前缀预测的位自适应编码方法
EP0438955B1 (en) Data compression method
US7764202B2 (en) Lossless data compression with separated index values and literal values in output stream
US20060087460A1 (en) Method of generating Huffman code length information
CN1547805A (zh) 执行霍夫曼解码的方法
EP0582907A2 (en) Data compression apparatus and method using matching string searching and Huffman encoding
CN1209925C (zh) 基于信源高阶熵的数据压缩方法
US6518895B1 (en) Approximate prefix coding for data compression
EP1941617A1 (en) Method and system for compressing data
US5010344A (en) Method of decoding compressed data
Bhadade et al. Lossless text compression using dictionaries
EP0435802B1 (en) Method of decompressing compressed data
Rathore et al. A brief study of data compression algorithms
KR20160100496A (ko) 바이너리 클러스터를 이용한 허프만 부호화 효율화 방법 및 그 장치
US7750826B2 (en) Data structure management for lossless data compression
Kwong et al. A statistical Lempel-Ziv compression algorithm for personal digital assistant (PDA)
CN111384963A (zh) 数据压缩解压装置和数据解压方法
CN111384962A (zh) 数据压缩解压装置和数据压缩方法
Doshi et al. “Quad-Byte Transformation as a Pre-processing to Arithmetic Coding
CN111384968B (zh) 数据压缩解压装置和数据解压方法
CN113708773A (zh) 一种电厂数据的无损压缩、传输方法和系统
CN117465471A (zh) 一种针对文本文件的无损压缩系统及其压缩方法
Sastry et al. CS787: Reading Project A look at some Lossless Data Compression techniques

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING TANGHENG TECHNOLOGY DEVELOPMENT CO., LTD.

Free format text: FORMER OWNER: LI CHUNLIN

Effective date: 20080104

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20080104

Address after: Room 2, building 537, building 18, Anning East Road, Qinghe, Beijing, Haidian District

Patentee after: Beijing Tangheng Technology Development Co., Ltd.

Address before: Unit 1, building 368, building No. 4, South Second Ring Road, Xi'an, Shaanxi

Patentee before: Li Chunlin

PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Data compress method based on higher order entropy of message source

Effective date of registration: 20131129

Granted publication date: 20050706

Pledgee: Bank of China Limited by Share Ltd Beijing Century Fortune Central Branch

Pledgor: Beijing Tangheng Technology Development Co., Ltd.

Registration number: 2013990000916

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20141224

Granted publication date: 20050706

Pledgee: Bank of China Limited by Share Ltd Beijing Century Fortune Central Branch

Pledgor: Beijing Tangheng Technology Development Co., Ltd.

Registration number: 2013990000916

PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Data compress method based on higher order entropy of message source

Effective date of registration: 20141225

Granted publication date: 20050706

Pledgee: Bank of China Limited by Share Ltd Beijing Century Fortune Central Branch

Pledgor: Beijing Tangheng Technology Development Co., Ltd.

Registration number: 2014110000006

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20160314

Granted publication date: 20050706

Pledgee: Bank of China Limited by Share Ltd Beijing Century Fortune Central Branch

Pledgor: Beijing Tangheng Technology Development Co., Ltd.

Registration number: 2014110000006

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050706

Termination date: 20170110