基于信息变换的数据压缩、解压缩方法及存储介质的制作方法

文档序号:7518032阅读:295来源:国知局
专利名称:基于信息变换的数据压缩、解压缩方法及存储介质的制作方法
技术领域
本发明涉及对数据的压缩、解压缩方法,以及应用该压缩解压缩方法的存储介质。
背景技术
自从20世纪50年代首次提出了实用的数据压缩方法(D. A. Huffman, A Method for the Construction of Minimum Redundancy Codes, 1952)至今,数据压缩的理论禾口应用在不断地发展,出现了针对图像、视频和音频等数据的各种压缩技术,例如,适用于二值图像和非连续的灰度、彩色图像的无损压缩算法LZW算法,适用于图像的有损压缩算法 JPEG、Rar, Zip标准,适用于视频图像和音频数据的MPEG-4标准等。数据压缩比率也不断提高,例如在保证图像质量的前提下,JPEG标准一般可以将图像压缩到原大小的十分之一到二十分之一。然而,随着数码相机、数码录音笔、数码随身听、数码摄像机等便携数码设备的普及,以及随着Internet的普及,们对数据压缩技术特别是专用于图像、音频、视频的数据压缩技术具有了更高的期望。

发明内容
根据本发明的一个方面,提供一种数据压缩方法,其中,定义一个M行X L列的矩阵,M、L为自然数,确定包含M个数的数列依次排列在该矩阵上的所有可能,其中矩阵的每一行只排列一个数,依次为每一种排列确定一个与其对应的标记号;将待压缩的数据划分为多个数据段,对每个数据段分别进行压缩,其中,对每个数据段的压缩包含以下步骤将要存储数据的存储介质等分为L个分区;将所述数据段中的数据分成M等份,根据每一等份的数据的数值依次将M个等份的数据分配到所述各个分区中,不同数值的等份分配到不同分区,同一分区中只分配相同数值的等份,从而得到了所述M个等份的一种排列方式;根据所述排列方式确定与其对应的标记号;依次存储每一个数据段的标记号。根据本发明的另一个方面,提供一种数据解压缩方法,对于根据上述方法压缩的数据,依次读取各数据段的标记号,确定各标记号所对应的数据,将各个数据段所对应的数据依次组合,从而恢复压缩前的数据。根据本发明的另一个方面,提供一种存储介质,其中存储有计算机程序,当向该存储介质中存储数据时,该程序被自动调用以执行数据压缩方法,从而将该数据压缩;当从该存储介质向外界拷贝数据时,该程序被自动调用以执行数据解压缩方法, 从而将该数据解压缩。


图1用图形表示了,按照本发明的设想,待压缩的数据的各个字节在其对应的介质分区上的分布。
具体实施例方式实施例1在8个比特(bit)为一字节的二进制数据中,一个字节的数据的数值范围是0000 0000至1111 1111 (即,从0至255),共有256(2的8次方)种变化。由此,我们把一个存储介质划分为256个相等大小的分区(该存储介质可以是磁性存储介质、U盘、光盘等), 每个区包含例如NO个字节(NO为自然数)。产生介质分区表,用于记录每个分区中的扇区号。我们做这样的设想,每个区按顺序应该存储(或分配)不同数值的数据,第1分区只存储(或分配)0000 0000,第2分区只存储(或分配)0000 0001,……,第6分区只存储(或分配)0000 0101(即十进制中的5),第12分区只存储(或分配)0000 1011(即十进制中的 11)……。由于实际上只是假想地将要压缩的数据的各个字节存储到相应的分区中,因此, 这里所说的“存储”只是一种“分配”,实质上是将不同数值的字节与不同分区建立一一对应关系。作为一个例子,在对一个数据文件压缩前,将一个数据文件划分成若干个数据段, 假设一个数据段的大小为M个字节(或M个单位,一个单位为若干比特),其中M为自然数。 然后分别对每个数据段进行压缩。按照本发明的上述方法,根据每个字节的数值,设想将一个数据段中的第1到第M 个字节依次存储到(或分配到)相应的分区中(注意,这里只是设想将各个字节存储到相应的分区中,实际上这一存储步骤并没有真正被执行)。图1示出了按照上述设想存储的M个字节的数据段的各字节的分布图(或排列图)。其中,X轴的坐标0,1,……,255分别表示存储介质的256个分区,Y轴表示字节的排列顺序。一个白点代表一个字节,每个白点的横坐标表示该字节所应被存储的分区,纵坐标表示该字节的排序。这M个白点的纵坐标分别是Y= 1、2、3、……、M。由此,我们就得到了这M个字节的一种排列组合。M是有限大小的自然数,例如,M可以是8、16、32等。M个字节在256个分区上的各种可能的排列组合的总的方式是256的M次方。我们将每一种排列按顺序分配一个标记号,即,1、2、……、256m。这样,这M个字节的每种排列方式对应于一个特定的标记号,每个标记号也对应于M个字节的一种特定排列方式。在存储数据时,按照本发明,实际上并不将每个字节存储的到相应的分区中,而是只存储对应于M个字节的排列方式的标记号,S卩,存储分别对应于每个数据段的一系列的标记号。这样就能大大减小存储空间,起到压缩数据的效果。在解压缩时,根据该标记号来得到这M个字节的排列从而得到压缩前的数据。下面通过一个简单的例子来说明一个数据段中各个字节的排序方式与标记号的对应关系。在上述实施例中,存储介质被分成了 256个分区,一个数据段包含M个字节,这形成了一个MX256的矩阵。为了便于说明,在下面的例子中假设存储介质被分成了 4个分区, 并且M = 4,这样就形成了一个4X4矩阵,我们对该矩阵的每个元素如下命名1 2 3 45 6 7 8
ab C d
ef g h
其中横向表示存储介质的4个分区,竖向由上到下表示4个字
以1开头的排列方式共有以下8X8 = 64种(第1至64)
15ae15af15ag15ah15be15bf15bg15bh
15ce15cf15cg15ch15de15df15dg15dh
16ae16af16ag16ah16be16bf16bg16bh
16ce16cf16cg16ch16de16df16dg16dh
17ae17af17ag17ah17be17bf17bg17bh
17ce17cf17cg17ch17de17df17dg17dh
18ae18af18ag18ah18be18bf18bg18bh
18ce18cf18cg18ch18de18df18dg18dh
以2幵头的排列方式共有以下8X8 = 64种(第65至128)
25ae25af25ag25ah25be25bf25bg25bh
25ce25cf25cg25ch25de25df25dg25dh
26ae26af26ag26ah26be26bf26bg26bh
26ce26cf26cg26ch26de26df26dg26dh
27ae27af27ag27ah27be27bf27bg27bh
27ce27cf27cg27ch27de27df27dg27dh
28ae28af28ag28ah28be28bf28bg28bh
28ce28cf28cg28ch28de28df28dg28dh
以3开头的排列方式共有以下8X8 = 64种(第129至192)
35ae35af35ag35ah35be35bf35bg35bh
35ce35cf35cg35ch35de35df35dg35dh
36ae36af36ag36ah36be36bf36bg36bh
36ce36cf36cg36ch36de36df36dg36dh
37ae37af37ag37ah37be37bf37bg37bh
37ce37cf37cg37ch37de37df37dg37dh
38ae38af38ag38ah38be38bf38bg38bh
38ce38cf38cg38ch38de38df38dg38dh
以4开头的排列方式共有以下8X8 = 64种(第193至256)
45ae45af45ag45ah45be45bf45bg45bh
45ce45cf45cg45ch45de45df45dg45dh
46ae46af46ag46ah46be46bf46bg46bh
46ce46cf46cg46ch46de46df46dg46dh
47ae47af47ag47ah47be47bf47bg47bh
47ce47cf47cg47ch47de47df47dg47dh
48ae48af48ag48ah48be48bf48bg48bh
48ce48cf48cg48ch48de48df48dg48dh
以上是M = 4个字节存储在4个分区中的全部256( = 44)种排列方式。对于例如排列方式“25ce”,按照正向顺序确定其标记号,首先,由于首位字是 “2”,则其排序大于等于65小于等于128。其次,由于前两位数字是“25”,则进一步确定其排序大于等于65小于等于80。第三,由于前三位数字是“25c”,其排序大于等于73小于等于76。最后,根据“25ce”中的第4位数,确定其排序即标记号为73。反之,在解压缩时,在读到标记号73时,73大于4的3次方(64),又小于128,即肯定原数据是在“2”开头的区间内,其中,只有头两位数是“25”的排列方式的标记号大于等于65小于等于80,因此可选范围缩小到“25”开头的排列方式中,而“25a”至“25b”区间按照排序原则对应的标记号小于 73,由此被排除。另外,按照4 X 4模块组合编写规律(8 X 8 X 4,即4个8 X 8组合),73除以 8得9余1,9为第九行,余1即为第10行第一个,即“25ce”。另外,上述对磁盘介质的分区,只是一种想象中的分区,并没有真正将各个字节写入到对应的分区中,因此,对磁盘介质的分区等效于将待压缩的各个字节分组,例如,在实施例1中将磁盘分成256个分区,等效于将各个字节按照数值分成256个组,第1组只包
含0000 0000,第2组只包含0000 0001,......,第6组只包含0000 0101,第12组只包含
00001011......。实施例2下面重点介绍和实施例1不同之处。如没有明确指出,本实施例中的特征和实施例1相同。首先,自动侦测存储介质实际大小,将存储介质划分为256个相等大小的分区。在某些情况下,某个分区被“写满”,即,分配给该分区的数据量等于该分区的容量,例如第η 个分区被“写满”(η为大于等于1小于等于NO的自然数),如果仍然有后续的数据要存储到(分配到)该第η区中,则确定存储数据最少的分区,例如,所确定的该存储数据最少的分区是第m个分区(m为大于等于1小于等于NO的自然数,且m兴η),将要存储在已“写满” 的第η区的数据存储在该存储数据最少的第m个分区,并将存储该数据的第m个分区中的扇区被划归为第η个分区,这只需在介质分区表标明扇区号的变化即可。上述这种在某个扇区被“写满”时调整分区划分的方法叫做“智能分区调整”。实施例3在上述实施例中,只描述了以包含8个比特的一个字节为单位进行数据存储的情况。本发明不限于此。可以设想以nl个比特为单位将数据存储到存储介质的各分区中,nl 为自然数。作为一个例子,nl = 4(即,半个字节),在这种情况中,将存储介质划分为2nl = 16个分区。第1分区只存储0000,第2分区只存储0001,……,第6分区只存储0101 (即十进制中的5),第12分区只存储1011 (即十进制中的11)……,第16分区只存储1111 (即十进制中的15)。例如,一个字节的数据是0101 1011,则前4个比特存储在第6分区,后4 个比特存储在第12分区。nl还可以是例如,16 (即,2个字节)、32 (即,4个字节)等。实施例4一种存储介质,例如,U盘、光盘或磁性存储介质,其中存储有计算机程序。该程序运行时执行本发明的压缩或解压缩程序。在向该存储介质写入数据时,该计算机程序被自动调用,以将数据压缩后再写入到所述存储介质中。在从该介质拷贝数据时,该计算机程序可以被调用,从而对被拷贝的数据解压缩。
其他情况数据写入介质时,可以按照分区标记以字节为单位,分别存入不同分区。此时可以定义一个文件索引表,该文件索引表负责数据实时存储指针,不同的数据流可以实现数据按位置存储。文件索引表构造自定义文件索引表是本发明方法的关键部分,执行本发明方法的主程序进行的所有数据读写,均依照索引表原则。索引表有以下几部分分区信息;每一段字串首字节坐标,相对位置定义;数据标示表;智能调整分区信息;文件大小信息;文件名与文件大小关联;安全信息。工业实用性根据本发明的压缩方法,实现对明文数据的固定压缩比,对已压缩数据(如rar、 zip.mpeg.rm……等)的最低不低于40%的压缩比,并能高速压缩、实时存储。
权利要求
1.一种数据压缩方法,包括定义一个M行XL列的矩阵,其中,M、L为自然数,确定包含M个数的数列依次排列在该矩阵上的所有可能,其中矩阵的每一行只排列一个数,依次为每一种排列确定一个与其对应的标记号;将待压缩的数据划分为多个数据段,对每个数据段分别进行压缩,其中,对每个数据段的压缩包含以下步骤将要存储数据的存储介质等分为L个分区;将所述数据段中的数据分成M等份,根据每一等份数据的数值依次将M个等份的数据分配到所述各个分区中,不同数值的等份分配到不同分区,从而得到了所述M个等份的一种排列方式;根据所述排列方式确定与其对应的标记号;依次存储每一个数据段的标记号。
2.根据权利要求1所述的方法,其中,所述数据段的M等份的每一份包含8个比特,即一个字节,并且L = 256。
3.根据权利要求2所述的方法,其中第1分区分配数值为0的数据,S卩,字节0000 0000,第η个分区分配数值为η-1的数据,第256分区分配数值为255的数据,S卩,字节1111 1111,其中,η为大于0小于256的自然数。
4.根据权利要求1所述的方法,其中,所述数据段的M等份的每一等份包含4个比特, 并且L = 16。
5.根据权利要求1所述的方法,其中,M为8、16和32之一。
6.一种数据解压缩方法,对于根据权利要求1所述的方法压缩的数据,依次读取各数据段的标记号,确定各标记号所对应的数据,将各个数据段所对应的数据依次组合,从而恢复压缩前的数据。
7.一种存储介质,其中存储有计算机程序,当向该存储介质中存储数据时,该程序被自动调用以执行权利要求1至5之一所述的方法,从而将该数据压缩;当从该存储介质向外界拷贝数据时,该程序被自动调用以执行权利要求6所述的方法,从而将该数据解压缩。
8.根据权利要求7所述的存储介质,其中,该存储介质为U盘、光盘或磁性存储介质。
全文摘要
本发明涉及基于信息变换的数据压缩、解压缩方法及存储介质。将一定大小的数据中的各个字节按照其数值排列,确定这种排列在所有可能排列中的排序,从而赋予这种排列一个唯一的标记号。通过存储标记号而不是存储所述数据来达到减小存储空间的效果。在解压缩时,读取所述标记号,来找到对应的数据,从而恢复压缩前的数据。在向本发明的存储介质中存储数据时,压缩程序被自动调用,从而对数据压缩。
文档编号H03M7/40GK102404009SQ20101028336
公开日2012年4月4日 申请日期2010年9月16日 优先权日2010年9月16日
发明者崔军 申请人:中盾天安科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1