數據壓縮與解壓縮的方法及裝置的製作方法
2023-08-13 16:30:21 3
專利名稱:數據壓縮與解壓縮的方法及裝置的製作方法
技術領域:
本發明涉及數據壓縮與解壓縮領域,特別涉及數據壓縮與解壓縮的方法及裝置。
背景技術:
隨著計算機技術的快速發展,各種系統數據量越來越大,為了能夠節省數據存儲的時間與空間,必須對大量的數據進行壓縮,數據的壓縮率越高,數據的存儲空間就會越小。同時還要對壓縮數據進行解壓以得到原始數據。對於一些定長(每一數據行的長度是固定的)、行與行之間所存儲的數據相似度較大的文件,比如常見的日誌文件、清單類的文件等,如果充分利用其行與行之間的相關性,將會提高數據的壓縮率。
發明內容
有鑑於此,本發明的目的在於提供數據壓縮與解壓縮的方法及裝置,以實現對定長、行與行之間所存儲的數據相似度較大的文件的壓縮與解壓縮。為實現上述目的,本發明提供如下技術方案:一種數據壓縮方法,包括:對原始數據進行分塊處理,獲得分塊數據塊,所述分塊數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位,所述m、η和Q均為自然數;將所述分塊數據塊作為m*n或Q*n的第一目標矩陣;對所述第一目標矩陣進行轉置變換,獲得n*m或n*Q的第二目標矩陣;對所述第二目標矩陣進行壓縮,得到壓縮數據塊。 優選的,所述原始數據包括P個數據行,每一數據行的長度為η個數據單位,所述m、Q不大於所述P,並且,所述Q不大於所述m,所述P和η為自然數;所述分塊數據塊數量為X個,所述X為自然數;所述分塊處理具體包括:將所述原始數據劃分為X個分塊數據塊,在所述X個分塊數據塊中,其中一個分塊數據塊包括Q個數據行,另外X-1個分塊數據塊包括m個數據行,並且m* (X-1) +Q=P。優選的,所述對所述第二目標矩陣進行壓縮包括:採用LZ77、gz ip或bz ip2壓縮算法對所述第二目標矩陣進行壓縮。一種解壓縮方法,包括:對壓縮數據塊進行解壓縮,獲得解壓縮數據塊,所述解壓縮數據塊具有η個數據行,每一數據行包括m個或Q個數據單位,所述m、η和Q均為自然數;將所述解壓縮數據塊作為n*m或n*Q的第二目標矩陣;對所述第二目標矩陣進行轉置變換,獲得m*n或Q*n第一目標矩陣;將所述第一目標矩陣作為組合數據塊,所述組合數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位,所述m、η和Q均為自然數;
對所述組合數據塊進行組合,獲得原始數據。 優選的,所述對壓縮數據塊進行解壓縮包括:採用與LZ77、gz ip或bz ip2壓縮算法相對應的解壓縮算法,對所述壓縮數據塊進行解壓縮一種數據壓縮裝置,包括分塊處理模塊、第一目標矩陣生成模塊、第二目標矩陣生成模塊和數據壓縮模塊;所述分塊處理模塊用於對原始數據進行分塊處理,獲得分塊數據塊,所述分塊數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位,所述m、η和Q均為自然數;所述第一目標矩陣生成模塊用於將分塊數據塊作為m*n或Q*n的第一目標矩陣;所述第二目標矩陣生成模塊用於對所述第一目標矩陣進行轉置變換,獲得n*m或n*Q的第二目標矩陣;所述數據壓縮模塊用於對所述第二目標矩陣進行壓縮,得到壓縮數據塊。優選的,所述原始數據包括P個數據行,每一數據行的長度為η個數據單位,所述m、Q不大於所述P,並且,所述Q不大於所述m,所述P和η為自然數;所述分塊數據塊數量為X個,所述X為自然數;所述分塊處理模塊包括分塊單元,用於將所述原始數據劃分為X個分塊數據塊,在所述X個分塊數據塊中,其中一個分塊數據塊包括Q個數據行,另外X-1個分塊數據塊包括m個數據行,並且m* (X-1) +Q=P。優選的,所述數據壓縮模塊包括壓縮單元,用於採用LZ77、gzip或bzip2壓縮算法對所述第二目標矩陣進行壓縮。一種解壓縮裝置,包括數據解壓縮模塊、第二目標矩陣生成模塊、第一目標矩陣生成模塊、組合數據塊生成模塊和組合模塊;所述數據解壓縮模塊用於對壓縮數據塊進行解壓縮,獲得解壓縮數據塊,所述解壓縮數據塊具有η個數據行,每一數據行包括m個或Q個數據單位,所述m、n和Q均為自然數;所述第二目標矩陣生成模塊用於將所述解壓縮數據塊作為n*m或n*Q的第二目標矩陣;所述第一目標矩陣生成模塊用於對所述第二目標矩陣進行轉置變換,獲得m*n或Q*n第一目標矩陣;所述組合數據塊生成模塊用於將所述第一目標矩陣作為組合數據塊,所述組合數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位,所述m、η和Q均為自然數;所述組合模塊用於對所述組合數據塊進行組合,獲得原始數據。優選的,所述數據解壓縮模塊包括解壓縮單元,用於採用與LZ77、gzip或bzip2壓縮算法相對應的解壓縮算法,對所述壓縮數據塊進行解壓縮。由上述的技術方案可以看出,在本發明實施例中,首先對原始數據進行分塊處理,獲得分塊數據塊(每一分塊數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位)。再而,將分塊數據塊作為m*n或Q*n的第一目標矩陣,並對第一目標矩陣進行轉置變換,獲得n*m或n*Q的第二目標矩陣。最後,對第二目標矩陣進行壓縮,得到壓縮數據塊。由於原始數據為行與行之間所存儲的數據相似度較大的文件中的數據,所以第二目標矩陣中的每行中相似的字符很多,因此再對第二目標矩陣進行壓縮時將會大大提高數據的壓縮率。同時採用本發明實施例中的與上述壓縮方法相對應的解壓縮方法,可將壓縮後的數據還原為原始數據。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例, 對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1是本發明實施例提供的數據壓縮方法的流程圖;圖2是本發明實施例提供的解壓縮方法的流程圖;圖3是本發明實施例提供的數據壓縮裝置的模塊圖;圖4是本發明實施例提供的解壓縮裝置的模塊圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。本發明實施例公開了一種數據壓縮方法,如圖1所示,該方法至少包括以下步驟:步驟S1:對原始數據進行分塊處理,獲得分塊數據塊;上述原始數據可包括P個數據行,每一數據行的長度為η個數據單位;分塊數據塊可具有m個或Q個數據行(本文後續將進行詳細介紹),每一數據行的長度亦為η個數據單位,m、Q不大於P,Q不大於m,並且m、n、Q和P均為自然數;分塊數據塊數量可為X個,X為自然數;需要說明的是,上述數據單位可以是字節。I個漢字佔用2位元組,I字節(Byte) =8bit,而一個英文字符或一位數字字符可佔用I字節。例如某一數據行為AB132,則字符A、B各佔用一個數據單位,字符1、3和2同理也各佔用一個數據單位,因此,數據行AB132的長度為5個數據單位。當然,本領域技術人員也可自行設計漢字、字母、數字或其他字符所佔用的字節數,在此不作贅述。此外,上述數據單位也可以是比特。具體的,對原始數據進行分塊處理具體包括:將原始數據劃分為X個分塊數據塊;在X個分塊數據塊中,其中一個分塊數據塊可包括Q個數據行,另外X-1個分塊數據塊可包括m個數據行,並且m* (X-1)+Q=P ;X的取值可依據實際情況而定。
(;Z131(;Z131舉例來講,假設原始數據為GZ132 (定長數據),可將'GZ132劃分為2個分塊數據
(:;Z135(7ZI35
塊(X=2),其中一個分塊數據塊可為丨,包括2個數據行(m=2),另一個分塊數據塊可為
(/ZI 32GZ135,包括 I 個數據行(Q=I),並且 2* (2-1) +1=3 (即
權利要求
1.一種數據壓縮方法,其特徵在於,包括: 對原始數據進行分塊處理,獲得分塊數據塊,所述分塊數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位,所述m、η和Q均為自然數; 將所述分塊數據塊作為m*n或Q*n的第一目標矩陣; 對所述第一目標矩陣進行轉置變換,獲得n*m或n*Q的第二目標矩陣; 對所述第二目標矩陣進行壓縮,得到壓縮數據塊。
2.根據權利要求1所述的方法,其特徵在於: 所述原始數據包括P個數據行,每一數據行的長度為η個數據單位,所述m、Q不大於所述P,並且,所述Q不大於所述m,所述P和η為自然數; 所述分塊數據塊數量為X個,所述X為自然數; 所述分塊處理具體包括: 將所述原始數據劃分為X個分塊數據塊,在所述X個分塊數據塊中,其中一個分塊數據塊包括Q個數據行,另外X-1個分塊數據塊包括m個數據行,並且m* (X-1) +Q=P。
3.根據權利要求1所述的方法,其特徵在於,所述對所述第二目標矩陣進行壓縮包括:採用LZ77、gzip或bzip2壓縮算法對所述第二目標矩陣進行壓縮。
4.一種解壓縮方法,其特徵在於,包括: 對壓縮數據塊進行解壓 縮,獲得解壓縮數據塊,所述解壓縮數據塊具有η個數據行,每一數據行包括m個或Q個數據單位,所述m、η和Q均為自然數; 將所述解壓縮數據塊作為n*m或n*Q的第二目標矩陣; 對所述第二目標矩陣進行轉置變換,獲得m*n或Q*n第一目標矩陣; 將所述第一目標矩陣作為組合數據塊,所述組合數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位,所述m、η和Q均為自然數; 對所述組合數據塊進行組合,獲得原始數據。
5.根據權利要求4所述的方法,其特徵在於,所述對壓縮數據塊進行解壓縮包括:採用與LZ77、gzip或bzip2壓縮算法相對應的解壓縮算法,對所述壓縮數據塊進行解壓縮。
6.一種數據壓縮裝置,其特徵在於,包括分塊處理模塊、第一目標矩陣生成模塊、第二目標矩陣生成模塊和數據壓縮模塊; 所述分塊處理模塊用於對原始數據進行分塊處理,獲得分塊數據塊,所述分塊數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位,所述m、η和Q均為自然數; 所述第一目標矩陣生成模塊用於將分塊數據塊作為m*n或Q*n的第一目標矩陣;所述第二目標矩陣生成模塊用於對所述第一目標矩陣進行轉置變換,獲得n*m或n*Q的第二目標矩陣; 所述數據壓縮模塊用於對所述第二目標矩陣進行壓縮,得到壓縮數據塊。
7.根據權利要求6所述的裝置,其特徵在於,所述原始數據包括P個數據行,每一數據行的長度為η個數據單位,所述m、Q不大於所述P,並且,所述Q不大於所述m,所述P和η為自然數; 所述分塊數據塊數量為X個,所述X為自然數; 所述分塊處理模塊包括分塊單元,用於將所述原始數據劃分為X個分塊數據塊,在所述X個分塊數據塊中,其中一個分塊數據塊包括Q個數據行,另外X-1個分塊數據塊包括m個數據行,並且m* (X-1) +Q=P。
8.根據權利要求6所述的裝置,其特徵在於,所述數據壓縮模塊包括壓縮單元,用於採用LZ77、gzip或bzip2壓縮算法對所述第二目標矩陣進行壓縮。
9.一種解壓縮裝置,其特徵在於,包括數據解壓縮模塊、第二目標矩陣生成模塊、第一目標矩陣生成模塊、組合數據塊生成模塊和組合模塊;所述數據解壓縮模塊用於對壓縮數據塊進行解壓縮,獲得解壓縮數據塊,所述解壓縮數據塊具有η個數據行,每一數據行包括m個或Q個數據單位,所述m、η和Q均為自然數;所述第二目標矩陣 生成模塊用於將所述解壓縮數據塊作為n*m或n*Q的第二目標矩陣; 所述第一目標矩陣生成模塊用於對所述第二目標矩陣進行轉置變換,獲得m*n或Q*n第一目標矩陣; 所述組合數據塊生成模塊用於將所述第一目標矩陣作為組合數據塊,所述組合數據塊具有m個或Q個數據行,每一數據行的長度為η個數據單位,所述m、η和Q均為自然數;所述組合模塊用於對所述組合數據塊進行組合,獲得原始數據。
10.根據權利要求9所述的裝置,其特徵在於,所述數據解壓縮模塊包括解壓縮單元,用於採用與LZ77、gzip或bzip2壓縮算法相對應的解壓縮算法,對所述壓縮數據塊進行解壓縮。
全文摘要
本發明公開了一種數據壓縮方法,包括對原始數據進行分塊處理,獲得分塊數據塊,其中分塊數據塊具有m個或Q個數據行,每一數據行的長度為n個數據單位,m、n和Q均為自然數;將分塊數據塊作為m*n或Q*n的第一目標矩陣;對第一目標矩陣進行轉置變換,獲得n*m或n*Q的第二目標矩陣;對第二目標矩陣進行壓縮,得到壓縮數據塊。
文檔編號H04L1/00GK103138766SQ201310077150
公開日2013年6月5日 申請日期2013年3月11日 優先權日2013年3月11日
發明者陳百平, 袁曉鵬 申請人:廣州從興電子開發有限公司