欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

資料壓縮、解壓縮方法及其裝置的制作方法

文檔序號:6768494閱讀:180來源:國知局

專利名稱::資料壓縮、解壓縮方法及其裝置的制作方法
技術(shù)領(lǐng)域
:本發(fā)明是有關(guān)于一種資料壓縮與解壓縮方法,且特別是有關(guān)于一種分塊壓縮與解壓縮資料的方法及其裝置。
背景技術(shù)
:電子產(chǎn)品通常需要將資料(包含程序、圖表與字形檔等)存儲于非易失性存儲器,例如閃存(flashmemory)中。為了節(jié)省閃存的儲存空間,一般而言會對所要儲存的資料進行壓縮。要對資料進行壓縮時,可以使用基于字典的壓縮方法,例如LZ77、LZ78或其變種配合熵編碼(entorpyencoding)的方式進行壓縮,其中熵編碼可以例如霍夫曼編碼(Huffmanencoding)、算術(shù)編石馬(arithmeticencoding)或香農(nóng)編石馬(Shanno-Fanoencoding)?;谧值涞膲嚎s方法的核心在于,如果資料中的某一段在一個滑動資料視窗或者字典中存在,就用那段資料在滑動資料視窗中的位置和長度或者字典中的代替碼字來代替那段資料本身。要使用被壓縮的資料時,則必需先對被壓縮的資料進行解壓縮后,才能將經(jīng)過解壓縮的資料裝入易失性存儲器中,例如同步動態(tài)存儲器(synchronoussynamicrandomaccessmemory,簡稱為SDRAM)。通常同步動態(tài)存儲器需要能容納解壓后的整個程序,如果整個程序很大,則意味著需要很大的儲存空間,并會導致成本居高不下。美國公開號US2007016693A1的專利申請案揭露了一種分塊壓縮資料的方法,當要使用被壓縮后的資料的某部份時,則只需要解壓縮要用到的部分所對應(yīng)的幾塊資料,而不需將整個資料進行解壓縮,由此便能夠節(jié)省同步動態(tài)存儲器的空間。但是,把整個資料分塊壓縮會造成壓縮效率下降。例如,把整個資料分成A、B與C三塊,并分別將A、B與C塊資料壓縮得到a、b與c三塊被壓縮的資料,則a、b與c三塊資料的大小總和通常會大于對整個資料進行壓縮所得到的資料的大小。前述壓縮率下降的原因在于,分塊后的每一塊資料不能在另一塊資料的滑動資料視窗或者字典中尋找匹配資料段。
發(fā)明內(nèi)容本發(fā)明的實施例提供一種資料壓縮方法。首先,對資料進行分塊,以產(chǎn)生至少一個非動態(tài)裝載資料塊與至少一個動態(tài)裝載資料塊。接著,對非動態(tài)裝載資料塊進行壓縮,以產(chǎn)生第一壓縮資料塊。之后,根據(jù)壓縮非動態(tài)裝載資料塊時所產(chǎn)生的信息,對動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。本發(fā)明的實施例提供一種資料解壓縮方法。首先,接收第一壓縮資料塊。接著,對第一壓縮資料塊進行解壓縮,以產(chǎn)生非動態(tài)裝載資料塊。之后,接收第二壓縮資料塊。然后,根據(jù)解壓縮第一壓縮資料塊時所產(chǎn)生的信息,對第二壓縮資料塊解壓縮,以產(chǎn)生動態(tài)裝載資料塊。本發(fā)明的實施例提供一種資料壓縮裝置,資料壓縮裝置包括資料分塊裝置、第一壓縮單元與第二壓縮單元。第一壓縮單元連接于資料分塊裝置,第二壓縮單元連接于資料分塊裝置。資料分塊裝置對資料進行分塊,以產(chǎn)生至少一個非動態(tài)裝載資料塊與至少一個動態(tài)裝載資料塊。第一壓縮單元對非動態(tài)裝載資料塊進行壓縮,以產(chǎn)生第一壓縮資料塊。第二壓縮單元根據(jù)壓縮非動態(tài)裝載資料塊時所產(chǎn)生的信息,對動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。本發(fā)明的實施例提供一種資料解壓縮裝置,資料解壓縮裝置包括第一解壓縮單元與第二解壓縮單元。第一解壓縮單元對第一壓縮資料塊進行解壓縮,以產(chǎn)生非動態(tài)裝載資料塊。第二解壓縮單元根據(jù)解壓縮第一壓縮資料塊時所產(chǎn)生的信息,對第二壓縮資料塊解壓縮,以產(chǎn)生動態(tài)裝載資料塊?;谏鲜?,本發(fā)明的實施例所提供的資料壓縮方法與資料壓縮裝置所壓縮后的資料的大小較傳統(tǒng)的資料分塊壓縮方法來得小,且所對應(yīng)的資料解壓縮方法與資料解壓縮裝置在解壓縮被壓縮的資料所花費的計算時間,又能夠較傳統(tǒng)一次解壓縮整份資料的計算時間來得少。為讓本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,以下結(jié)合附圖對本發(fā)明的具體實施方式作詳細說明,其中圖1是本發(fā)明的實施例所提供的資料壓縮方法的流程圖。圖2是本發(fā)明的另一個實施例所提供的資料壓縮方法的流程圖。圖3是本發(fā)明的另一個實施例所提供的資料壓縮方法的流程圖。圖4是本發(fā)明的實施例所提供的資料解壓縮方法的流程圖。圖5是本發(fā)明的另一個實施例所提供的資料解壓縮方法的流程圖。圖6是本發(fā)明的另一個實施例所提供的資料解壓縮方法的流程圖。圖7是本發(fā)明的實施例所提供的資料解壓縮裝置的方塊圖。圖8是本發(fā)明的實施例所提供的資料解壓縮裝置的方塊圖。主要元件符號說明SlOlS106步驟流程S201S206步驟流程S301S306步驟流程S401S406步驟流程S501S506步驟流程S601S606步驟流程700資料壓縮裝置701資料分塊裝置702第一壓縮單元703第二壓縮單元704非易失性存儲器800:資料解壓縮裝置801第一解壓縮單元802第二解壓縮單元803易失性存儲器具體實施例方式本發(fā)明的實施例提供了資料壓縮方法與資料壓縮裝置,且特別是有關(guān)于一種分塊壓縮資料的方法與裝置。除此之外,本發(fā)明的實施例更介紹對應(yīng)的資料解壓縮方法與資料解壓縮裝置。各實施例所提供的資料壓縮方法、資料壓縮裝置資料解壓縮方法與資料解壓縮裝置皆可以應(yīng)用于所有需要從非易失性存儲器解壓縮資料至易失性存儲器的電子產(chǎn)品,例如數(shù)字電視機頂盒(set-topbox,簡稱為STB)、攜帶式影音播放器(portablemediaplayer,簡稱為PMP)與手機等。以下將用文字輔以圖式來說明各種實施方式,圖式采用相同的圖式編號的裝置或流程為近似或相似的裝置或流程。首先,請參照圖1,圖1是本發(fā)明的實施例所提供的資料壓縮方法的流程圖。首先,在步驟S101中,接收一個欲壓縮的資料。接著,在步驟S102中,對資料進行分塊,以產(chǎn)生至少一個非動態(tài)裝載資料塊與至少一個動態(tài)裝載資料塊。在步驟S103中,對非動態(tài)裝載資料塊進行壓縮,以產(chǎn)生第一壓縮資料塊。在步驟S104中,儲存第一壓縮資料塊至非易失性存儲器。例如,所要被壓縮的資料為資料ABC在步驟SlOl中被接收,資料ABC在步驟S102中被分為一個非動態(tài)裝載資料塊A與兩個動態(tài)裝載資料塊B與C。接著,非動態(tài)裝載資料塊A在步驟S103中被壓縮為第一壓縮資料塊a。之后,第一壓縮資料塊a在步驟S104中被儲存在磁性硬盤或閃存中。在步驟S105中,根據(jù)基于字典壓縮方式壓縮非動態(tài)裝載資料塊時所產(chǎn)生的信息,對動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。在步驟S106,儲存第二壓縮資料塊至非易失性存儲器。例如,在步驟S105中,將動態(tài)裝載資料塊B置于非動態(tài)裝載資料塊A之后同時壓縮(亦即壓縮資料塊AB),產(chǎn)生壓縮資料塊ab*,取壓縮資料塊b*為第二壓縮資料塊,并在步驟S106中,將壓縮資料塊b*儲存至磁性硬盤或閃存中;以及在步驟S105中,將動態(tài)裝載資料塊C置于非動態(tài)裝載資料塊A之后同時壓縮(亦即壓縮資料塊AC),產(chǎn)生壓縮資料塊ac*,取壓縮資料塊c*為另一個第二壓縮資料塊,并在步驟S106中,將壓縮資料塊c*儲存至磁性硬盤或閃存中。實際上,上述所舉的例子在實現(xiàn)步驟S105時,因為在壓縮動態(tài)裝載資料塊B與C要參考壓縮非動態(tài)裝載資料塊A所產(chǎn)生的信息,因此才對資料塊AB與AC進行壓縮,其中前述信息是壓縮非動態(tài)裝載資料塊A時所產(chǎn)生的字典、滑動視窗的內(nèi)容與概率表等信息。但上述所舉的例子中,重復地壓縮了數(shù)次的非動態(tài)裝載資料塊A,而浪費了計算時間,且特別是當動態(tài)裝載資料塊的數(shù)目越多,則所浪費的計算時間越多。因此,為了不浪費計算時間,步驟S105的較佳實施方式應(yīng)該是,直接將步驟S103中壓縮非動態(tài)裝載資料塊時所產(chǎn)生的信息直接拿來使用。換言之,就是在完成步驟S105之前,不清空易失性存儲器中壓縮非動態(tài)裝載資料塊時所產(chǎn)生的信息。例如,在壓縮動態(tài)裝載資料塊B與C時,參考同步動態(tài)存儲器中有關(guān)產(chǎn)生第一壓縮資料塊a的字典、滑動視窗的內(nèi)容與概率表作為壓縮動態(tài)裝載資料塊B與C時的初始字典、初始滑動視窗的內(nèi)容與進行熵編碼的概率表。如此,動態(tài)裝載資料塊B與C可以根據(jù)壓縮非動態(tài)裝載資料塊A時所產(chǎn)生的信息進行壓縮,而產(chǎn)生第二壓縮資料塊b*與C*。要說明的是,步驟S104與S106并非必要步驟,第一壓縮資料塊與第二壓縮資料塊可能并非用以儲存至非易失性存儲器。例如,只是要資料傳送至遠端的用戶,但因受限于頻寬,因此必須壓縮資料,以產(chǎn)生第一壓縮資料塊與第二壓縮資料塊,并將第一壓縮資料塊與第二壓縮資料塊直接被送至傳輸通道中。除此之外,圖1中的步驟S104與S106的順序并非用以限定本發(fā)明,步驟S104只要在步驟S103之后即可,步驟S106只要在步驟S105之后即可。另外,值得一提的是,若于上述的壓縮方法中,所產(chǎn)生的非動態(tài)裝載資料塊包括了多個特性相同的非動態(tài)裝載資料塊,則可以將所述特性相同的多個非動態(tài)裝載資料塊(例如同為程序檔或圖像檔的非動態(tài)裝載資料塊)合并成一個非動態(tài)裝載資料塊。如此,在步驟S105中,將根據(jù)基于字典壓縮方式壓縮前述合并的非動態(tài)裝載資料塊時所產(chǎn)生的信息,對動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。然而,若于上述的壓縮方法中,所產(chǎn)生的非動態(tài)裝載資料塊包括了多個特性不相同的非動態(tài)裝載資料塊時,則在步驟S105中,動態(tài)裝載資料塊進行壓縮時,會選擇特性最相近的非動態(tài)裝載資料塊作為參考。也就是說,根據(jù)基于字典壓縮方式壓縮特性最相近的非動態(tài)裝載資料塊時所產(chǎn)生的信息,對動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。例如,有多個特性相同的非動態(tài)裝載資料塊A與D都屬于程序檔或圖像檔,則可以合并非動態(tài)裝載資料塊A與D成為一個新的非動態(tài)裝載資料塊(A+D)。此時,若有多個動態(tài)裝載資料塊B與C,則根據(jù)基于字典壓縮合并的非動態(tài)裝載資料塊(A+D)所產(chǎn)生的信息,對動態(tài)裝載資料塊B與C分別進行壓縮。再舉一例,有多個特性不同的非動態(tài)裝載資料塊A、D與E,其中非動態(tài)裝載資料塊A、D屬于程序檔,非動態(tài)裝載資料塊E屬于圖像檔,此時若有多個動態(tài)裝載資料塊B、C與F,且多個動態(tài)裝載資料塊B、C與F皆與非動態(tài)裝載資料塊A、D的特性較為相近,則可以合并非動態(tài)裝載資料塊A與D成為一個新的非動態(tài)裝載資料塊(A+D)。此時,根據(jù)基于字典壓縮合并的非動態(tài)裝載資料塊(A+D)所產(chǎn)生的信息,對動態(tài)裝載資料塊B、C與F分別進行壓縮。又舉一例,有多個特性不同的非動態(tài)裝載資料塊A、D與E,其中非動態(tài)裝載資料塊A、D屬于程序檔,非動態(tài)裝載資料塊E屬于圖像檔,此時若有多個動態(tài)裝載資料塊B、C、F、G與H,多個動態(tài)裝載資料塊B、C與F皆與非動態(tài)裝載資料塊A、D的特性較為相近,另外多個動態(tài)裝載資料塊G與H皆與非動態(tài)裝載資料塊E的特性較為相近,則可以合并非動態(tài)裝載資料塊A與D成為一個新的非動態(tài)裝載資料塊(A+D)。此時,根據(jù)基于字典壓縮合并的非動態(tài)裝載資料塊(A+D)所產(chǎn)生的信息,對動態(tài)裝載資料塊B、C與F分別進行壓縮,并且根據(jù)基于字典壓縮非動態(tài)裝載資料塊E所產(chǎn)生的信息,對動態(tài)裝載資料塊G與H分別進行壓縮。接著,請參照圖2,圖2是本發(fā)明的另一個實施例所提供的資料壓縮方法的流程圖。圖2與圖1的不同處在于,步驟S205是步驟S105的其中一種實施方式,其他的步驟S201、S202、S203、S204、S206與步驟S101、S102、S103、S104、S106相同。在步驟S205中,將壓縮非動態(tài)裝載資料塊時所產(chǎn)生的滑動視窗內(nèi)的內(nèi)容作壓縮動態(tài)裝載資料塊時的初始滑動視窗內(nèi)的內(nèi)容,并據(jù)此壓縮動態(tài)裝載資料塊,以產(chǎn)生第二壓縮資料塊。例如,在壓縮動態(tài)裝載資料塊B與C時,僅根據(jù)壓縮非動態(tài)裝載資料塊A時所產(chǎn)生的滑動視窗內(nèi)的內(nèi)容作為其壓縮時的初始滑動視窗內(nèi)的內(nèi)容。圖2的實施方式僅適用于基于字典的壓縮方式,且此種基于字典壓縮方式是采用滑動視窗內(nèi)的內(nèi)容來匹配當前編碼字串,若當前編碼字串已經(jīng)出現(xiàn)于滑動視窗內(nèi),則使用指標與長度信息來取代編碼字串,以達到壓縮的效果,其中使用滑動視窗的基于字典壓縮方式可以是LZ77與LZSS的壓縮方式。換言之,在步驟S205中,壓縮非動態(tài)裝載資料塊A的最后一個字串時所產(chǎn)生的滑動視窗的內(nèi)容會被當作壓縮動態(tài)裝載資料塊B與C的初始滑動視窗的內(nèi)容,而不像傳統(tǒng)使用滑動視窗的基于字典壓縮方式會將初始滑動視窗的內(nèi)容設(shè)為空集合。另外,需要說明的是,目前大部分的壓縮軟件或壓縮裝置多半在使用基于字典壓縮方式后,會再對其壓縮結(jié)果進行熵編碼,以更進一步提高其壓縮率,其中熵編碼包括霍夫曼編碼、算術(shù)編碼或香農(nóng)編碼。熵編碼使用的概率表可以是固定的也可以是在壓縮過程中自動更新的。在圖2的實施方式中,壓縮非動態(tài)裝載資料塊與動態(tài)裝載資料塊時,若有進行熵編碼,其使用的概率表是相互獨立的。接著,請參照圖3,圖3是本發(fā)明的另一個實施例所提供的資料壓縮方法的流程圖。圖3與圖1的不同處在于,步驟S305是步驟S105的其中一種實施方式,其他的步驟S301、S302、S303、S304、S306與步驟S101、S102、S103、S104、S106相同。在步驟S305中,將壓縮非動態(tài)裝載資料塊時所產(chǎn)生的字典或滑動視窗內(nèi)的內(nèi)容作為其壓縮時的初始字典或初始滑動視窗內(nèi)的內(nèi)容,且將壓縮非動態(tài)裝載資料塊時所產(chǎn)生的概率表作為其壓縮時進行熵編碼的初始概率表,并據(jù)此壓縮動態(tài)裝載資料塊,以產(chǎn)生第二壓縮資料塊。例如,在壓縮動態(tài)裝載資料塊B與C時,根據(jù)壓縮非動態(tài)裝載資料塊A時所產(chǎn)生的字典或滑動視窗內(nèi)的內(nèi)容作為其壓縮時的初始字典或初始滑動視窗內(nèi)的內(nèi)容。除此的外,在壓縮動態(tài)裝載資料塊B與C時,更利用壓縮非動態(tài)裝載資料塊A時所產(chǎn)生的概率表作為其壓縮時進行熵編碼的初始概率表。值得說明的是,目前先進的壓縮方法都是自動更新概率表的,如果把檔掃描一遍來產(chǎn)生一個概率表,將會得不償失,儲存或傳送概率表可能會過大,而導致實質(zhì)上的壓縮率下降。上述初始概率表是為了覆蓋自動更新概率表和傳送概率表兩種情況,也就是說初始化后的概率表可以再根據(jù)壓縮的方法而決定是否自動更新。圖3的實施方式適用于任何基于字典加上熵編碼的壓縮方式,且此種基于字典壓縮方式是采用字典或滑動視窗內(nèi)的內(nèi)容來匹配當前編碼字串,若當前編碼字串已經(jīng)出現(xiàn)于字典或滑動視窗內(nèi),則使用代替碼字、或指標與長度信息來取代編碼字串,以達到壓縮的效果,其中基于字典壓縮方式可以是LZ77、LZSS,LZ78與LZW的壓縮方式。需要說明的是,圖3的方法是適用于LZW壓縮方式的其中一種特別例子。在LZW的一些應(yīng)用中,字根(root)是以字節(jié)(8個位)所有的256個值來表示,即便在極端情況下非動態(tài)資料塊可能不包含全部這256個字根值,LZW的壓縮方式仍然可以使用256個值作為字根,只是有些值不被用到而已。換言之,在步驟S305中,壓縮非動態(tài)裝載資料塊A的最后一個字串時所產(chǎn)生的字典或滑動視窗的內(nèi)容會被當作壓縮動態(tài)裝載資料塊B與C的初始字典或初始滑動視窗的內(nèi)容,而不像傳統(tǒng)基于字典壓縮方式會將初始字典或初始滑動視窗的內(nèi)容設(shè)為空集合。另外,在圖3的實施方式中,壓縮非動態(tài)裝載資料塊與動態(tài)裝載資料塊時,若有進行熵編碼,復制壓縮非動態(tài)裝載資料塊時所產(chǎn)生的概率表作為壓縮動態(tài)裝載資料塊時進行熵編碼的初始概率表。另外,要說明的是,圖3所提供的資料壓縮方法的壓縮率會較圖2所提供的資料壓縮方法來得高,但圖2所提供的資料壓縮方法在進行壓縮所花費的易失性存儲器卻較圖3所提供的資料壓縮方法來得少,因為圖3所提供的資料壓縮方法需要一直保留壓縮非動態(tài)裝載資料塊時所產(chǎn)生的概率表以備拷貝作為壓縮各個動態(tài)裝載資料塊的初始概率表。同樣地,對應(yīng)于圖2所提供的資料壓縮方法的資料解壓縮方法而言,其解壓縮所花費的易失性存儲器也會較對應(yīng)于圖3所提供的資料壓縮方法的資料解壓縮方法來得少。換言之,在易失性存儲器空間較少時,可以采用圖2所提供的資料壓縮方法,而在需要更高的壓縮率時,可以采用圖3所提供的資料壓縮方法。在介紹完本發(fā)明的實施例所提供的資料壓縮方法后,本發(fā)明的實施例亦提出一種對應(yīng)上述資料壓縮方法的資料解壓縮方法。請參照圖4,圖4是本發(fā)明的實施例所提供的資料解壓縮方法的流程圖。首先,在步驟S401中,接收第一壓縮資料塊。接著,在步驟S402中,對第一壓縮資料塊進行解壓縮,以產(chǎn)生非動態(tài)裝載資料塊。在步驟S403中,儲存非動態(tài)裝載資料塊至易失性存儲器。例如,所要被解壓縮的壓縮資料為壓縮資料abVi,則在步驟S401中,第一壓縮資料塊a會被接收。接著,第一壓縮資料塊a在步驟S402中會被解壓縮成非動態(tài)裝載資料塊A,且第一壓縮資料塊a會在步驟S403中被存入同步動態(tài)存儲器。接著,在步驟S404中,接收第二壓縮資料塊。之后,在步驟S405中,根據(jù)基于字典解壓縮方式解壓縮第一壓縮資料塊時所產(chǎn)生的信息,對第二壓縮資料塊解壓縮,以產(chǎn)生動態(tài)裝載資料塊。在步驟S406中,儲存動態(tài)裝載資料塊至易失性存儲器。例如,壓縮資料塊b*與c*在步驟S404中被接收。接著,在步驟S405中,將第二壓縮資料塊b*置于第一壓縮資料塊a之后同時解壓縮(亦即解壓縮資料塊ab*),以得到解壓縮資料塊AB,取解壓縮資料塊B為非動態(tài)裝載資料塊,并在步驟S406中,將非動態(tài)裝載資料塊B儲存至同步動態(tài)存儲器中;以及在步驟S405中,將第二壓縮資料塊c*置于第一壓縮資料塊a之后同時解壓縮(亦即解壓縮資料塊ac*),以得到解壓縮資料塊AC,取解壓縮資料塊C為非動態(tài)裝載資料塊,并在步驟S406中,將非動態(tài)裝載資料塊C儲存至同步動態(tài)存儲器中。實際上,上述所舉的例子在實現(xiàn)步驟S405時,因為在壓縮第二壓縮資料塊b*與c*要參考解壓縮第一壓縮資料塊a所產(chǎn)生的信息,因此才對壓縮資料塊ab*與ac*進行解壓縮,其中前述信息是解壓縮第一壓縮資料塊a時所產(chǎn)生的字典、滑動視窗的內(nèi)容與概率表等信息。但上述所舉的例子中,重復地解壓縮了數(shù)次的第一壓縮資料塊a,而浪費了計算時間,且特別是當?shù)诙嚎s資料塊的數(shù)目越多,則所浪費的計算時間越多。因此,為了不浪費計算時間,步驟S405的較佳實施方式應(yīng)該是,直接將步驟S402中解壓縮第一壓縮資料塊時所產(chǎn)生的信息直接拿來使用。換言之,就是在完成步驟S405之前,不清空易失性存儲器中解壓縮第一壓縮資料塊時所產(chǎn)生的信息。例如,在解壓縮第二壓縮資料塊b*與c*時,參考同步動態(tài)存儲器中有關(guān)產(chǎn)生非動態(tài)裝載資料塊A的字典、滑動視窗的內(nèi)容與概率表作為解壓縮第二壓縮資料塊b*與c*時的初始字典、初始滑動視窗的內(nèi)容與進行熵編碼的概率表。如此,第二壓縮資料塊b*與c*可以根據(jù)解壓縮第一壓縮資料塊a時所產(chǎn)生的信息進行壓縮,而產(chǎn)生非動態(tài)裝載資料塊B與C。要說明的是,步驟S403與S406并非必要步驟,非動態(tài)裝載資料塊與動態(tài)裝載資料塊可能并非用以儲存至易失性存儲器。例如,資料庫儲存壓縮資料以供遠端用戶存取,資料庫具有較強大的計算能力,而能夠快速地解壓縮遠端用戶所要求的資料,此時資料庫會解壓縮第一壓縮資料塊與第二壓縮資料塊,以產(chǎn)生非動態(tài)裝載資料塊與動態(tài)裝載資料塊,并將非動態(tài)裝載資料塊與動態(tài)裝載資料塊透過傳輸通道送給遠端用戶。除此之外,圖4中的步驟S403與S406的順序并非用以限定本發(fā)明,步驟S403只要在步驟S402之后即可,步驟S406只要在步驟S405之后即可。接著,請參照圖5,圖5是本發(fā)明的另一個實施例所提供的資料解壓縮方法的流程圖。圖5與圖4的不同處在于,步驟S505是步驟S405的其中一種實施方式,其他的步驟S501、S502、S503、S504、S506與步驟S401、S402、S403、S504、S506相同。在步驟S505中,將解壓縮第一壓縮資料塊時所產(chǎn)生的滑動視窗內(nèi)的內(nèi)容作解壓縮第二壓縮資料塊時的初始滑動視窗內(nèi)的內(nèi)容,并據(jù)此解壓縮第二壓縮資料塊,以產(chǎn)生動態(tài)裝載資料塊。例如,在解壓縮第二壓縮資料塊b*與c*時,僅根據(jù)解壓縮第一壓縮資料塊a時所產(chǎn)生的滑動視窗內(nèi)的內(nèi)容作為其解壓縮時的初始滑動視窗內(nèi)的內(nèi)容。圖5的實施方式僅適用于基于字典的解壓縮方式,且此種基于字典解壓縮方式是采用滑動視窗內(nèi)的內(nèi)容來解碼當前解碼字串,若當前解碼字串為指標與長度,則根據(jù)指標與長度尋找滑動視窗內(nèi)的內(nèi)容的字串當作解碼結(jié)果,其中使用滑動視窗的基于字典解壓縮方式可以是LZ77與LZSS的解壓縮方式。換言之,在步驟S505中,解壓縮第一壓縮資料塊a的最后一個字串時所產(chǎn)生的滑動視窗的內(nèi)容會被當作解第二壓縮資料塊b*與c*的初始滑動視窗的內(nèi)容,而不像傳統(tǒng)使用滑動視窗的基于字典解壓縮方式會將初始滑動視窗的內(nèi)容設(shè)為空集合。另外,需要說明的是,目前大部分的壓縮軟件或壓縮裝置多半在使用基于字典壓縮方式后,會再對其壓縮結(jié)果進行熵編碼,以更進一步提高其壓縮率。因此,在使用滑動視窗的基于字典解壓縮方式對第一壓縮資料塊與第二壓縮資料塊進行解壓縮前,可能會將第一壓縮資料塊與第二壓縮資料塊進行熵解碼,其中所述熵解碼包括霍夫曼解碼、算術(shù)解碼與香農(nóng)解碼。熵解碼使用的概率表可以是固定的也可以是在壓縮過程中自動更新的。在圖5的實施方式中,解壓縮第一壓縮資料塊與第二壓縮資料塊時,若有進行熵解碼,則其使用的概率表是相互獨立的。接著,請參照圖6,圖6是本發(fā)明的另一個實施例所提供的資料解壓縮方法的流程圖。圖6與圖4的不同處在于,步驟S605是步驟S405的其中一種實施方式,其他的步驟S601、S602、S603、S604、S606與步驟S401、S402、S403、S404、S406相同。在步驟S605中,將解壓縮第一壓縮資料塊時所產(chǎn)生的字典或滑動視窗內(nèi)的內(nèi)容作解壓縮第二壓縮資料塊時的初始字典或初始滑動視窗內(nèi)的內(nèi)容,且復制解壓縮第一壓縮資料塊時所產(chǎn)生的概率表作為解壓縮第二壓縮資料塊時進行熵解碼的初始概率表,并據(jù)此解壓縮第二壓縮資料塊,以產(chǎn)生動態(tài)裝載資料塊。例如,在解壓縮第二壓縮資料塊b*與c*時,根據(jù)解壓縮第一壓縮資料塊a時所產(chǎn)生的字典或滑動視窗內(nèi)的內(nèi)容作為其解壓縮時的初始字典或初始滑動視窗內(nèi)的內(nèi)容。除此之外,在解壓縮第二壓縮資料塊b*與c*時,更利用解壓縮第一壓縮資料塊a時所產(chǎn)生的概率表作為其解壓縮時進行熵解碼的初始概率表。圖6的實施方式適用于任何基于字典加上熵解碼的解壓縮方式,且此種基于字典解壓縮方式是采用字典或滑動視窗內(nèi)的內(nèi)容來解碼當前解碼字串,若當前解碼字串為代替碼字,或者為指標與長度,則根據(jù)代替碼字或指標與長度尋找字典或滑動視窗內(nèi)的內(nèi)容的字串當作解碼結(jié)果,其中基于字典解壓縮方式可以是LZ77、LZSS,LZ78與LZW的解壓縮方式。換言之,在步驟S605中,解壓縮第一壓縮資料塊a的最后一個字串時所產(chǎn)生的字典或滑動視窗的內(nèi)容會被當作解壓縮第二壓縮資料塊b*與c*的初始字典或初始滑動視窗的內(nèi)容,而不像傳統(tǒng)基于字典壓縮方式會將初始字典或初始滑動視窗的內(nèi)容設(shè)為空集合。另外,在圖6的實施方式中,解壓縮第一壓縮資料塊與第二壓縮資料塊時,若有進行熵解碼,其使用的概率表皆相同,換言之,復制解壓縮第一壓縮資料塊所產(chǎn)生的概率表被作為第二壓縮資料塊解壓縮時的初始概率表。另外,要說明的是,圖4至圖6的資料解壓縮方法分別對應(yīng)于圖1至圖3的資料壓縮方法。因此根據(jù)前面所述,圖6的資料解壓縮方法于解壓縮時所花費的易失性存儲器會較圖5的資料解壓縮方法來得多,因為圖6所提供的資料解壓縮方法需要一直保留解壓縮非動態(tài)裝載資料塊時所產(chǎn)生的概率表以被復制作為解壓縮各個動態(tài)裝載資料塊的初始概率表。換言之,若在易失性存儲器空間較少時,可以采用圖2所提供的資料壓縮方法與圖5所提供的資料解壓縮方法。相反地,若在需要更高的壓縮率時,則可以采用圖3所提供的資料壓縮方法與圖6所提供的資料解壓縮方法。在介紹完本發(fā)明的實施例所提供的資料壓縮方法與資料解壓縮方法后,本發(fā)明的實施例還提供了對應(yīng)上述的資料壓縮方法與資料解壓縮方法的資料壓縮裝置與資料解壓縮裝置。所述的資料壓縮裝置與資料解壓縮裝置中的各模塊可以是硬件電路,或者是借由電腦執(zhí)行軟件程序所實現(xiàn)的功能模塊。另外,由于前述的資料壓縮方法與資料解壓縮方法亦可以電腦執(zhí)行軟件程序產(chǎn)生,因此實施前述的資料壓縮方法與資料解壓縮方法所對應(yīng)的程序碼可以記錄于各種不同的儲存媒介,例如磁性硬盤、磁帶、非易失性存儲器與光儲存媒介。請參照圖7,圖7是本發(fā)明的實施例所提供的資料壓縮裝置的方塊圖。資料壓縮裝置700包括資料分塊裝置701、第一壓縮單元702、第二壓縮單元703與非易失性存儲器704。第一壓縮單702元連接于資料分塊裝置701,第二壓縮單元703連接于資料分塊裝置701,非易失性存儲器704連接于第一壓縮單元702與第二壓縮單元703。值得一提的是,資料壓縮裝置700本身可以是用硬件電路實現(xiàn)出來的硬件裝置,或者本身可以是電腦。當資料壓縮裝置700本身為電腦時,則資料分塊裝置701、第一壓縮單元702與第二壓縮單元703是根據(jù)執(zhí)行軟件程序所實現(xiàn)的功能模塊。資料分塊701裝置對資料進行分塊,以產(chǎn)生至少一個非動態(tài)裝載資料塊與至少一個動態(tài)裝載資料塊。第一壓縮單元702對非動態(tài)裝載資料塊進行壓縮,以產(chǎn)生第一壓縮資料塊。第二壓縮單元703根據(jù)壓縮非動態(tài)裝載資料塊時所產(chǎn)生的信息,對動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。非易失性存儲器704則用來儲存第一壓縮資料塊與第二壓縮資料塊。另外,有關(guān)于第二壓縮單元703如何對動態(tài)裝載資料塊進行壓縮的方式則已經(jīng)于前面的資料壓縮方法中詳細介紹,故在此便不再贅述。介紹完所述資料壓縮裝置后,接著介紹本發(fā)明實施例所提供的資料壓縮裝置。請參照圖8,圖8是本發(fā)明的實施例所提供的資料解壓縮裝置的方塊圖。資料解壓縮裝置800包括第一解壓縮單元801、第二解壓縮單元802與易失性存儲器803。易失性存儲器803連接于第一解壓縮單元801與第二解壓縮單元802。值得一提的是,資料解壓縮裝置800本身可以是用硬件電路實現(xiàn)出來的硬件裝置,或者本身可以是電腦。當資料解壓縮裝置800本身為電腦時,則第一解壓縮單元801與第二解壓縮單元802是根據(jù)執(zhí)行軟件程序所實現(xiàn)的功能模塊。第一解壓縮單元801對第一壓縮資料塊進行解壓縮,以產(chǎn)生非動態(tài)裝載資料塊。第二解壓縮單元802根據(jù)解壓縮第一壓縮資料塊時所產(chǎn)生的信息,對第二壓縮資料塊解壓縮,以產(chǎn)生動態(tài)裝載資料塊。易失性存儲器803用以儲存非動態(tài)裝載資料塊與動態(tài)裝載資料塊。另外,有關(guān)于第二解壓縮單元702如何對第二壓縮資料塊解壓縮的方式則已經(jīng)于前面的資料解壓縮方法中詳細介紹,故在此便不再贅述。綜上所述,本發(fā)明的實施例所提供的資料壓縮方法與資料壓縮裝置將資料分成一個以上的非動態(tài)裝載資料塊與X個動態(tài)裝載資料塊(X為大于等于1的整數(shù)),其中非動態(tài)裝載資料塊獨自被壓縮,而動態(tài)裝載資料塊則可以根據(jù)壓縮非動態(tài)裝載資料塊時所產(chǎn)生的信息進行壓縮,因此其壓縮率較傳統(tǒng)的資料分塊壓縮方法來得高,且能夠較節(jié)省儲存空間。除此之外,本發(fā)明的實施例還提供對應(yīng)的資料解壓縮方法與資料解壓縮裝置,當需要解壓縮某個動態(tài)裝載資料塊時,其解壓縮所花費的計算時間較傳統(tǒng)一次對整份資料解壓縮然后抽取需要的動態(tài)裝載資料塊的方法來得少。雖然本發(fā)明已以較佳實施例揭示如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當可作些許的修改和完善,因此本發(fā)明的保護范圍當以權(quán)利要求書所界定的為準。權(quán)利要求1.一種資料壓縮方法,包括對資料進行分塊,以產(chǎn)生至少一個非動態(tài)裝載資料塊與至少一個動態(tài)裝載資料塊;對所述非動態(tài)裝載資料塊進行壓縮,以產(chǎn)生第一壓縮資料塊;以及根據(jù)基于字典壓縮方式壓縮所述非動態(tài)裝載資料塊時所產(chǎn)生的信息,對所述動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。2.如權(quán)利要求1所述的資料壓縮方法,其特征在于,更包括儲存所述第一壓縮資料塊至非易失性存儲器;以及儲存所述第二壓縮資料塊至所述非易失性存儲器。3.如權(quán)利要求1所述的資料壓縮方法,其特征在于,所述動態(tài)裝載資料塊利用壓縮所述非動態(tài)裝載資料塊時所產(chǎn)生的滑動視窗內(nèi)的內(nèi)容作其壓縮時的初始滑動視窗內(nèi)的內(nèi)容。4.如權(quán)利要求3所述的資料壓縮方法,其特征在于,對所述非動態(tài)裝載資料塊與動態(tài)裝置資料塊進行壓縮的方式是采用基于字典的壓縮方式。5.如權(quán)利要求4所述的資料壓縮方法,其特征在于,所述基于字典的壓縮方式為LZ77或LZSS的壓縮方式。6.如權(quán)利要求1所述的資料壓縮方法,其特征在于,所述動態(tài)裝載資料塊利用壓縮所述非動態(tài)裝載資料塊時所產(chǎn)生的字典或滑動視窗內(nèi)的內(nèi)容作為其壓縮時的初始字典或初始滑動視窗內(nèi)的內(nèi)容,且所述動態(tài)裝載資料塊更利用壓縮所述非動態(tài)裝載資料塊時所產(chǎn)生的概率表作為其壓縮時進行熵編碼的初始概率表。7.如權(quán)利要求6所述的資料壓縮方法,其特征在于,對所述非動態(tài)裝載資料塊與動態(tài)裝置資料塊進行壓縮的方式是采用基于字典與結(jié)合熵編碼的壓縮方式。8.如權(quán)利要求7所述的資料壓縮方法,其特征在于,所述基于字典的壓縮方式為LZ77、LZ78、LZSS或LZW的壓縮方式,所述熵編碼為霍夫曼編碼、算術(shù)編碼或香農(nóng)編碼。9.一種資料解壓縮方法,包括接收第一壓縮資料塊;對所述第一壓縮資料塊進行解壓縮,以產(chǎn)生非動態(tài)裝載資料塊;接收第二壓縮資料塊;以及根據(jù)基于字典解壓縮方式解壓縮所述第一壓縮資料塊時所產(chǎn)生的信息,對所述第二壓縮資料塊解壓縮,以產(chǎn)生動態(tài)裝載資料塊。10.如權(quán)利要求9所述的資料解壓縮方法,其特征在于,更包括儲存所述非動態(tài)裝載資料塊至易失性存儲器;以及儲存所述動態(tài)裝載資料塊至所述易失性存儲器。11.如權(quán)利要求9所述的資料解壓縮方法,其特征在于,所述第二壓縮資料塊利用解壓縮所述第一資料塊時所產(chǎn)生的滑動視窗內(nèi)的內(nèi)容作其壓縮時的初始滑動視窗內(nèi)的內(nèi)容。12.如權(quán)利要求11所述的資料解壓縮方法,其特征在于,對所述第一壓縮資料塊與第二壓縮資料塊進行解壓縮的方式是采用基于字典的解壓縮方式。13.如權(quán)利要求12所述的資料解壓縮方法,其特征在于,所述基于字典的解壓縮方式為LZ77或LZSS的解壓縮方式。14.如權(quán)利要求9所述的資料解壓縮方法,其特征在于,所述第二壓縮資料塊利用解壓縮所述第一壓縮資料塊時所產(chǎn)生的字典或滑動視窗內(nèi)的內(nèi)容作為其解壓縮時的初始字典或初始滑動視窗內(nèi)的內(nèi)容,且所述第二資料塊更利用解壓縮所述第一壓縮資料塊時所產(chǎn)生的概率表作為其壓縮時進行熵解碼的初始概率表。15.如權(quán)利要求14所述的資料解壓縮方法,其特征在于,對所述第一壓縮資料塊與第二壓縮資料塊進行解壓縮的方式是采用基于字典與結(jié)合熵解碼的解壓縮方式。16.如權(quán)利要求15所述的資料解壓縮方法,其特征在于,所述基于字典的解壓縮方式為LZ77、LZ78、LZSS或LZW的解壓縮方式,所述熵解碼為霍夫曼解碼、算術(shù)解碼或香農(nóng)解碼。17.一種資料壓縮裝置,包括資料分塊裝置,對資料進行分塊,以產(chǎn)生至少一個非動態(tài)裝載資料塊與至少一個動態(tài)裝載資料塊;第一壓縮單元,連接于所述資料分塊裝置,對所述非動態(tài)裝載資料塊進行壓縮,以產(chǎn)生第一壓縮資料塊;以及第二壓縮單元,連接于所述資料分塊裝置,根據(jù)基于字典壓縮方式壓縮所述非動態(tài)裝載資料塊時所產(chǎn)生的信息,對所述動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。18.如權(quán)利要求17所述的資料壓縮裝置,其特征在于,更包括非易失性存儲器,連接于所述第一壓縮單元與第二壓縮單元,用以儲存所述第一壓縮資料塊與第二壓縮資料塊。19.如權(quán)利要求17所述的資料壓縮裝置,其特征在于,所述動態(tài)裝載資料塊利用壓縮所述非動態(tài)裝載資料塊時所產(chǎn)生的滑動視窗內(nèi)的內(nèi)容作其壓縮時的初始滑動視窗內(nèi)的內(nèi)容。20.如權(quán)利要求19所述的資料壓縮裝置,其特征在于,對所述非動態(tài)裝載資料塊與動態(tài)裝置資料塊進行壓縮的方式是采用基于字典的壓縮方式。21.如權(quán)利要求20所述的資料壓縮裝置,其特征在于,所述基于字典的壓縮方式為LZ77或LZSS的壓縮方式。22.如權(quán)利要求17所述的資料壓縮裝置,其特征在于,所述動態(tài)裝載資料塊利用壓縮所述非動態(tài)裝載資料塊時所產(chǎn)生的字典或滑動視窗內(nèi)的內(nèi)容作為其壓縮時的初始字典或初始滑動視窗內(nèi)的內(nèi)容,且所述動態(tài)裝載資料塊更利用壓縮所述非動態(tài)裝載資料塊時所產(chǎn)生的概率表作為其壓縮時進行熵編碼的初始概率表。23.如權(quán)利要求22所述的資料壓縮裝置,其特征在于,對所述非動態(tài)裝載資料塊與動態(tài)裝置資料塊進行壓縮的方式是采用基于字典與結(jié)合熵編碼的壓縮方式。24.如權(quán)利要求23所述的資料壓縮裝置,其特征在于,所述基于字典的壓縮方式為LZ77、LZ78、LZSS或LZW的壓縮方式,所述熵編碼為霍夫曼編碼、算術(shù)編碼或香農(nóng)編碼。25.一種資料解壓縮裝置,包括第一解壓縮單元,對第一壓縮資料塊進行解壓縮,以產(chǎn)生非動態(tài)裝載資料塊;以及第二解壓縮單元,根據(jù)基于字典解壓縮方式解壓縮所述第一壓縮資料塊時所產(chǎn)生的信息,對第二壓縮資料塊解壓縮,以產(chǎn)生動態(tài)裝載資料塊。26.如權(quán)利要求25所述的資料解壓縮裝置,其特征在于,更包括易失性存儲器,連接于所述第一解壓縮單元與第二解壓縮單元,儲存所述非動態(tài)裝載資料塊與動態(tài)裝載資料塊。27.如權(quán)利要求25所述的資料解壓縮裝置,其特征在于,所述第二壓縮資料塊利用解壓縮所述第一資料塊時所產(chǎn)生的滑動視窗內(nèi)的內(nèi)容作其壓縮時的初始滑動視窗內(nèi)的內(nèi)容。28.如權(quán)利要求27所述的資料解壓縮裝置,其特征在于,對所述第一壓縮資料塊與第二壓縮資料塊進行解壓縮的方式是采用基于字典的解壓縮方式。29.如權(quán)利要求觀所述的資料解壓縮裝置,其特征在于,所述基于字典的解壓縮方式為LZ77或LZSS的解壓縮方式。30.如權(quán)利要求25所述的資料解壓縮裝置,其特征在于,所述第二壓縮資料塊利用解壓縮所述第一壓縮資料塊時所產(chǎn)生的字典或滑動視窗內(nèi)的內(nèi)容作為其解壓縮時的初始字典或初始滑動視窗內(nèi)的內(nèi)容,且所述第二資料塊更利用解壓縮所述第一壓縮資料塊時所產(chǎn)生的概率表作為其解壓縮時進行熵解碼的初始概率表。31.如權(quán)利要求30所述的資料解壓縮裝置,其特征在于,對所述第一壓縮資料塊與第二壓縮資料塊進行解壓縮的方式是采用基于字典與結(jié)合熵解碼的解壓縮方式。32.如權(quán)利要求31所述的資料解壓縮裝置,其特征在于,所述基于字典的解壓縮方式為LZ77、LZ78、LZSS或LZW的解壓縮方式,所述熵解碼為霍夫曼解碼、算術(shù)解碼或香農(nóng)解碼。全文摘要本發(fā)明的實施例提供一種資料壓縮方法。首先,對資料進行分塊,以產(chǎn)生至少一個非動態(tài)裝載資料塊與至少一個動態(tài)裝載資料塊。接著,對非動態(tài)裝載資料塊進行壓縮,以產(chǎn)生第一壓縮資料塊。之后,根據(jù)壓縮非動態(tài)裝載資料塊時所產(chǎn)生的信息,對動態(tài)裝載資料塊所組成的資料塊進行壓縮,以產(chǎn)生第二壓縮資料塊。本發(fā)明還提供資料解壓縮的方法,以及進行壓縮和解壓縮的裝置。文檔編號G11B20/10GK102129872SQ201010002899公開日2011年7月20日申請日期2010年1月14日優(yōu)先權(quán)日2010年1月14日發(fā)明者陳岳勇申請人:珠海揚智電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
赤水市| 尼勒克县| 白河县| 文山县| 绵竹市| 洛扎县| 大理市| 泉州市| 赤壁市| 那坡县| 周口市| 松原市| 孟村| 阿拉尔市| 泸水县| 盖州市| 绵阳市| 闸北区| 彩票| 梁平县| 延边| 栾城县| 台州市| 濮阳县| 临沂市| 昌邑市| 滁州市| 朔州市| 溆浦县| 雅江县| 白玉县| 余江县| 四子王旗| 文昌市| 衡阳市| 高阳县| 遂川县| 启东市| 辉南县| 武清区| 桐梓县|