專利名稱:基于信息變換的數(shù)據(jù)壓縮、解壓縮方法及存儲介質(zhì)的制作方法
技術領域:
本發(fā)明涉及對數(shù)據(jù)的壓縮、解壓縮方法,以及應用該壓縮解壓縮方法的存儲介質(zhì)。
背景技術:
自從20世紀50年代首次提出了實用的數(shù)據(jù)壓縮方法(D. A. Huffman, A Method for the Construction of Minimum Redundancy Codes, 1952)至今,數(shù)據(jù)壓縮的理論禾口應用在不斷地發(fā)展,出現(xiàn)了針對圖像、視頻和音頻等數(shù)據(jù)的各種壓縮技術,例如,適用于二值圖像和非連續(xù)的灰度、彩色圖像的無損壓縮算法LZW算法,適用于圖像的有損壓縮算法 JPEG、Rar, Zip標準,適用于視頻圖像和音頻數(shù)據(jù)的MPEG-4標準等。數(shù)據(jù)壓縮比率也不斷提高,例如在保證圖像質(zhì)量的前提下,JPEG標準一般可以將圖像壓縮到原大小的十分之一到二十分之一。然而,隨著數(shù)碼相機、數(shù)碼錄音筆、數(shù)碼隨身聽、數(shù)碼攝像機等便攜數(shù)碼設備的普及,以及隨著Internet的普及,們對數(shù)據(jù)壓縮技術特別是專用于圖像、音頻、視頻的數(shù)據(jù)壓縮技術具有了更高的期望。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供一種數(shù)據(jù)壓縮方法,其中,定義一個M行X L列的矩陣,M、L為自然數(shù),確定包含M個數(shù)的數(shù)列依次排列在該矩陣上的所有可能,其中矩陣的每一行只排列一個數(shù),依次為每一種排列確定一個與其對應的標記號;將待壓縮的數(shù)據(jù)劃分為多個數(shù)據(jù)段,對每個數(shù)據(jù)段分別進行壓縮,其中,對每個數(shù)據(jù)段的壓縮包含以下步驟將要存儲數(shù)據(jù)的存儲介質(zhì)等分為L個分區(qū);將所述數(shù)據(jù)段中的數(shù)據(jù)分成M等份,根據(jù)每一等份的數(shù)據(jù)的數(shù)值依次將M個等份的數(shù)據(jù)分配到所述各個分區(qū)中,不同數(shù)值的等份分配到不同分區(qū),同一分區(qū)中只分配相同數(shù)值的等份,從而得到了所述M個等份的一種排列方式;根據(jù)所述排列方式確定與其對應的標記號;依次存儲每一個數(shù)據(jù)段的標記號。根據(jù)本發(fā)明的另一個方面,提供一種數(shù)據(jù)解壓縮方法,對于根據(jù)上述方法壓縮的數(shù)據(jù),依次讀取各數(shù)據(jù)段的標記號,確定各標記號所對應的數(shù)據(jù),將各個數(shù)據(jù)段所對應的數(shù)據(jù)依次組合,從而恢復壓縮前的數(shù)據(jù)。根據(jù)本發(fā)明的另一個方面,提供一種存儲介質(zhì),其中存儲有計算機程序,當向該存儲介質(zhì)中存儲數(shù)據(jù)時,該程序被自動調(diào)用以執(zhí)行數(shù)據(jù)壓縮方法,從而將該數(shù)據(jù)壓縮;當從該存儲介質(zhì)向外界拷貝數(shù)據(jù)時,該程序被自動調(diào)用以執(zhí)行數(shù)據(jù)解壓縮方法, 從而將該數(shù)據(jù)解壓縮。
圖1用圖形表示了,按照本發(fā)明的設想,待壓縮的數(shù)據(jù)的各個字節(jié)在其對應的介質(zhì)分區(qū)上的分布。
具體實施例方式實施例1在8個比特(bit)為一字節(jié)的二進制數(shù)據(jù)中,一個字節(jié)的數(shù)據(jù)的數(shù)值范圍是0000 0000至1111 1111 (即,從0至255),共有256(2的8次方)種變化。由此,我們把一個存儲介質(zhì)劃分為256個相等大小的分區(qū)(該存儲介質(zhì)可以是磁性存儲介質(zhì)、U盤、光盤等), 每個區(qū)包含例如NO個字節(jié)(NO為自然數(shù))。產(chǎn)生介質(zhì)分區(qū)表,用于記錄每個分區(qū)中的扇區(qū)號。我們做這樣的設想,每個區(qū)按順序應該存儲(或分配)不同數(shù)值的數(shù)據(jù),第1分區(qū)只存儲(或分配)0000 0000,第2分區(qū)只存儲(或分配)0000 0001,……,第6分區(qū)只存儲(或分配)0000 0101(即十進制中的5),第12分區(qū)只存儲(或分配)0000 1011(即十進制中的 11)……。由于實際上只是假想地將要壓縮的數(shù)據(jù)的各個字節(jié)存儲到相應的分區(qū)中,因此, 這里所說的“存儲”只是一種“分配”,實質(zhì)上是將不同數(shù)值的字節(jié)與不同分區(qū)建立一一對應關系。作為一個例子,在對一個數(shù)據(jù)文件壓縮前,將一個數(shù)據(jù)文件劃分成若干個數(shù)據(jù)段, 假設一個數(shù)據(jù)段的大小為M個字節(jié)(或M個單位,一個單位為若干比特),其中M為自然數(shù)。 然后分別對每個數(shù)據(jù)段進行壓縮。按照本發(fā)明的上述方法,根據(jù)每個字節(jié)的數(shù)值,設想將一個數(shù)據(jù)段中的第1到第M 個字節(jié)依次存儲到(或分配到)相應的分區(qū)中(注意,這里只是設想將各個字節(jié)存儲到相應的分區(qū)中,實際上這一存儲步驟并沒有真正被執(zhí)行)。圖1示出了按照上述設想存儲的M個字節(jié)的數(shù)據(jù)段的各字節(jié)的分布圖(或排列圖)。其中,X軸的坐標0,1,……,255分別表示存儲介質(zhì)的256個分區(qū),Y軸表示字節(jié)的排列順序。一個白點代表一個字節(jié),每個白點的橫坐標表示該字節(jié)所應被存儲的分區(qū),縱坐標表示該字節(jié)的排序。這M個白點的縱坐標分別是Y= 1、2、3、……、M。由此,我們就得到了這M個字節(jié)的一種排列組合。M是有限大小的自然數(shù),例如,M可以是8、16、32等。M個字節(jié)在256個分區(qū)上的各種可能的排列組合的總的方式是256的M次方。我們將每一種排列按順序分配一個標記號,即,1、2、……、256m。這樣,這M個字節(jié)的每種排列方式對應于一個特定的標記號,每個標記號也對應于M個字節(jié)的一種特定排列方式。在存儲數(shù)據(jù)時,按照本發(fā)明,實際上并不將每個字節(jié)存儲的到相應的分區(qū)中,而是只存儲對應于M個字節(jié)的排列方式的標記號,S卩,存儲分別對應于每個數(shù)據(jù)段的一系列的標記號。這樣就能大大減小存儲空間,起到壓縮數(shù)據(jù)的效果。在解壓縮時,根據(jù)該標記號來得到這M個字節(jié)的排列從而得到壓縮前的數(shù)據(jù)。下面通過一個簡單的例子來說明一個數(shù)據(jù)段中各個字節(jié)的排序方式與標記號的對應關系。在上述實施例中,存儲介質(zhì)被分成了 256個分區(qū),一個數(shù)據(jù)段包含M個字節(jié),這形成了一個MX256的矩陣。為了便于說明,在下面的例子中假設存儲介質(zhì)被分成了 4個分區(qū), 并且M = 4,這樣就形成了一個4X4矩陣,我們對該矩陣的每個元素如下命名1 2 3 45 6 7 8
ab C d
ef g h
其中橫向表示存儲介質(zhì)的4個分區(qū),豎向由上到下表示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個字節(jié)存儲在4個分區(qū)中的全部256( = 44)種排列方式。對于例如排列方式“25ce”,按照正向順序確定其標記號,首先,由于首位字是 “2”,則其排序大于等于65小于等于128。其次,由于前兩位數(shù)字是“25”,則進一步確定其排序大于等于65小于等于80。第三,由于前三位數(shù)字是“25c”,其排序大于等于73小于等于76。最后,根據(jù)“25ce”中的第4位數(shù),確定其排序即標記號為73。反之,在解壓縮時,在讀到標記號73時,73大于4的3次方(64),又小于128,即肯定原數(shù)據(jù)是在“2”開頭的區(qū)間內(nèi),其中,只有頭兩位數(shù)是“25”的排列方式的標記號大于等于65小于等于80,因此可選范圍縮小到“25”開頭的排列方式中,而“25a”至“25b”區(qū)間按照排序原則對應的標記號小于 73,由此被排除。另外,按照4 X 4模塊組合編寫規(guī)律(8 X 8 X 4,即4個8 X 8組合),73除以 8得9余1,9為第九行,余1即為第10行第一個,即“25ce”。另外,上述對磁盤介質(zhì)的分區(qū),只是一種想象中的分區(qū),并沒有真正將各個字節(jié)寫入到對應的分區(qū)中,因此,對磁盤介質(zhì)的分區(qū)等效于將待壓縮的各個字節(jié)分組,例如,在實施例1中將磁盤分成256個分區(qū),等效于將各個字節(jié)按照數(shù)值分成256個組,第1組只包
含0000 0000,第2組只包含0000 0001,......,第6組只包含0000 0101,第12組只包含
00001011......。實施例2下面重點介紹和實施例1不同之處。如沒有明確指出,本實施例中的特征和實施例1相同。首先,自動偵測存儲介質(zhì)實際大小,將存儲介質(zhì)劃分為256個相等大小的分區(qū)。在某些情況下,某個分區(qū)被“寫滿”,即,分配給該分區(qū)的數(shù)據(jù)量等于該分區(qū)的容量,例如第η 個分區(qū)被“寫滿”(η為大于等于1小于等于NO的自然數(shù)),如果仍然有后續(xù)的數(shù)據(jù)要存儲到(分配到)該第η區(qū)中,則確定存儲數(shù)據(jù)最少的分區(qū),例如,所確定的該存儲數(shù)據(jù)最少的分區(qū)是第m個分區(qū)(m為大于等于1小于等于NO的自然數(shù),且m興η),將要存儲在已“寫滿” 的第η區(qū)的數(shù)據(jù)存儲在該存儲數(shù)據(jù)最少的第m個分區(qū),并將存儲該數(shù)據(jù)的第m個分區(qū)中的扇區(qū)被劃歸為第η個分區(qū),這只需在介質(zhì)分區(qū)表標明扇區(qū)號的變化即可。上述這種在某個扇區(qū)被“寫滿”時調(diào)整分區(qū)劃分的方法叫做“智能分區(qū)調(diào)整”。實施例3在上述實施例中,只描述了以包含8個比特的一個字節(jié)為單位進行數(shù)據(jù)存儲的情況。本發(fā)明不限于此??梢栽O想以nl個比特為單位將數(shù)據(jù)存儲到存儲介質(zhì)的各分區(qū)中,nl 為自然數(shù)。作為一個例子,nl = 4(即,半個字節(jié)),在這種情況中,將存儲介質(zhì)劃分為2nl = 16個分區(qū)。第1分區(qū)只存儲0000,第2分區(qū)只存儲0001,……,第6分區(qū)只存儲0101 (即十進制中的5),第12分區(qū)只存儲1011 (即十進制中的11)……,第16分區(qū)只存儲1111 (即十進制中的15)。例如,一個字節(jié)的數(shù)據(jù)是0101 1011,則前4個比特存儲在第6分區(qū),后4 個比特存儲在第12分區(qū)。nl還可以是例如,16 (即,2個字節(jié))、32 (即,4個字節(jié))等。實施例4一種存儲介質(zhì),例如,U盤、光盤或磁性存儲介質(zhì),其中存儲有計算機程序。該程序運行時執(zhí)行本發(fā)明的壓縮或解壓縮程序。在向該存儲介質(zhì)寫入數(shù)據(jù)時,該計算機程序被自動調(diào)用,以將數(shù)據(jù)壓縮后再寫入到所述存儲介質(zhì)中。在從該介質(zhì)拷貝數(shù)據(jù)時,該計算機程序可以被調(diào)用,從而對被拷貝的數(shù)據(jù)解壓縮。
其他情況數(shù)據(jù)寫入介質(zhì)時,可以按照分區(qū)標記以字節(jié)為單位,分別存入不同分區(qū)。此時可以定義一個文件索引表,該文件索引表負責數(shù)據(jù)實時存儲指針,不同的數(shù)據(jù)流可以實現(xiàn)數(shù)據(jù)按位置存儲。文件索引表構(gòu)造自定義文件索引表是本發(fā)明方法的關鍵部分,執(zhí)行本發(fā)明方法的主程序進行的所有數(shù)據(jù)讀寫,均依照索引表原則。索引表有以下幾部分分區(qū)信息;每一段字串首字節(jié)坐標,相對位置定義;數(shù)據(jù)標示表;智能調(diào)整分區(qū)信息;文件大小信息;文件名與文件大小關聯(lián);安全信息。工業(yè)實用性根據(jù)本發(fā)明的壓縮方法,實現(xiàn)對明文數(shù)據(jù)的固定壓縮比,對已壓縮數(shù)據(jù)(如rar、 zip.mpeg.rm……等)的最低不低于40%的壓縮比,并能高速壓縮、實時存儲。
權(quán)利要求
1.一種數(shù)據(jù)壓縮方法,包括定義一個M行XL列的矩陣,其中,M、L為自然數(shù),確定包含M個數(shù)的數(shù)列依次排列在該矩陣上的所有可能,其中矩陣的每一行只排列一個數(shù),依次為每一種排列確定一個與其對應的標記號;將待壓縮的數(shù)據(jù)劃分為多個數(shù)據(jù)段,對每個數(shù)據(jù)段分別進行壓縮,其中,對每個數(shù)據(jù)段的壓縮包含以下步驟將要存儲數(shù)據(jù)的存儲介質(zhì)等分為L個分區(qū);將所述數(shù)據(jù)段中的數(shù)據(jù)分成M等份,根據(jù)每一等份數(shù)據(jù)的數(shù)值依次將M個等份的數(shù)據(jù)分配到所述各個分區(qū)中,不同數(shù)值的等份分配到不同分區(qū),從而得到了所述M個等份的一種排列方式;根據(jù)所述排列方式確定與其對應的標記號;依次存儲每一個數(shù)據(jù)段的標記號。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)段的M等份的每一份包含8個比特,即一個字節(jié),并且L = 256。
3.根據(jù)權(quán)利要求2所述的方法,其中第1分區(qū)分配數(shù)值為0的數(shù)據(jù),S卩,字節(jié)0000 0000,第η個分區(qū)分配數(shù)值為η-1的數(shù)據(jù),第256分區(qū)分配數(shù)值為255的數(shù)據(jù),S卩,字節(jié)1111 1111,其中,η為大于0小于256的自然數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)段的M等份的每一等份包含4個比特, 并且L = 16。
5.根據(jù)權(quán)利要求1所述的方法,其中,M為8、16和32之一。
6.一種數(shù)據(jù)解壓縮方法,對于根據(jù)權(quán)利要求1所述的方法壓縮的數(shù)據(jù),依次讀取各數(shù)據(jù)段的標記號,確定各標記號所對應的數(shù)據(jù),將各個數(shù)據(jù)段所對應的數(shù)據(jù)依次組合,從而恢復壓縮前的數(shù)據(jù)。
7.一種存儲介質(zhì),其中存儲有計算機程序,當向該存儲介質(zhì)中存儲數(shù)據(jù)時,該程序被自動調(diào)用以執(zhí)行權(quán)利要求1至5之一所述的方法,從而將該數(shù)據(jù)壓縮;當從該存儲介質(zhì)向外界拷貝數(shù)據(jù)時,該程序被自動調(diào)用以執(zhí)行權(quán)利要求6所述的方法,從而將該數(shù)據(jù)解壓縮。
8.根據(jù)權(quán)利要求7所述的存儲介質(zhì),其中,該存儲介質(zhì)為U盤、光盤或磁性存儲介質(zhì)。
全文摘要
本發(fā)明涉及基于信息變換的數(shù)據(jù)壓縮、解壓縮方法及存儲介質(zhì)。將一定大小的數(shù)據(jù)中的各個字節(jié)按照其數(shù)值排列,確定這種排列在所有可能排列中的排序,從而賦予這種排列一個唯一的標記號。通過存儲標記號而不是存儲所述數(shù)據(jù)來達到減小存儲空間的效果。在解壓縮時,讀取所述標記號,來找到對應的數(shù)據(jù),從而恢復壓縮前的數(shù)據(jù)。在向本發(fā)明的存儲介質(zhì)中存儲數(shù)據(jù)時,壓縮程序被自動調(diào)用,從而對數(shù)據(jù)壓縮。
文檔編號H03M7/40GK102404009SQ20101028336
公開日2012年4月4日 申請日期2010年9月16日 優(yōu)先權(quán)日2010年9月16日
發(fā)明者崔軍 申請人:中盾天安科技(北京)有限公司