數(shù)據(jù)壓縮方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例涉及數(shù)據(jù)處理技術(shù),尤其涉及一種數(shù)據(jù)壓縮方法及裝置。
【背景技術(shù)】
[0002] 隨著科學(xué)技術(shù)的快速發(fā)展,信息量迅猛增加。因此,對(duì)信息的儲(chǔ)存和挖掘也引起廣 泛關(guān)注,例如,信息技術(shù)(InformationTechnology,簡(jiǎn)稱:IT)廠商追捧的大數(shù)據(jù)。如果對(duì) 信息不加壓縮的進(jìn)行儲(chǔ)存,存儲(chǔ)成本開銷較大,因此,壓縮方法備受關(guān)注。
[0003] 若按信息是否有損來(lái)劃分,壓縮方法包括有損壓縮方法和無(wú)損壓縮方法。其中,無(wú) 損壓縮方法表示信息經(jīng)解壓縮后可以完整地還原;而采用有損壓縮方法壓縮后的數(shù)據(jù)不能 被完整還原,例如,音頻壓縮和視頻壓縮就不能被完整還原。常見的無(wú)損壓縮方法包括專用 壓縮算法,例如詞典壓縮算法、等值距離壓縮算法、差值壓縮算法和通用比特(bit)壓縮算 法j等等。
[0004] 專用壓縮算法通常解決某一類數(shù)據(jù)的壓縮,對(duì)有些數(shù)據(jù)的壓縮可能導(dǎo)致信息儲(chǔ)存 空間的增加。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)壓縮方法及裝置,以解決采用專用壓縮算法對(duì)數(shù)據(jù)進(jìn) 行壓縮所導(dǎo)致的信息儲(chǔ)存空間增加的問(wèn)題。
[0006] 第一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)壓縮裝置,包括:
[0007] 拆分模塊,用于根據(jù)預(yù)設(shè)拆分規(guī)則,拆分待壓縮數(shù)據(jù),獲得拆分后的數(shù)據(jù)并發(fā)送給 壓縮模塊,使得壓縮算法適用于所述拆分后的數(shù)據(jù),其中,所述預(yù)設(shè)拆分規(guī)則是根據(jù)所述待 壓縮數(shù)據(jù)的特點(diǎn)確定的;
[0008] 所述壓縮模塊,用于接收所述拆分模塊發(fā)送的所述拆分后的數(shù)據(jù),采用所述壓縮 算法對(duì)所述拆分后的數(shù)據(jù)進(jìn)行壓縮處理,輸出壓縮數(shù)據(jù),并發(fā)送給存儲(chǔ)模塊;
[0009]所述存儲(chǔ)模塊,用于接收所述壓縮模塊發(fā)送的所述壓縮數(shù)據(jù),并存儲(chǔ)所述壓縮數(shù) 據(jù)。
[0010] 結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述拆分模塊具體用 于:
[0011] 采用預(yù)設(shè)值整除法,拆分所述待壓縮數(shù)據(jù),其中,拆分的段數(shù)是根據(jù)對(duì)所述待壓縮 數(shù)據(jù)進(jìn)行采樣測(cè)試來(lái)確定的。
[0012] 結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的 實(shí)現(xiàn)方式中,所述壓縮模塊具體用于:
[0013] 接收所述拆分模塊發(fā)送的所述拆分后的數(shù)據(jù),采用所述壓縮算法對(duì)所述拆分后的 數(shù)據(jù)進(jìn)行至少一次壓縮處理,輸出所述壓縮數(shù)據(jù),其中,每次壓縮處理中所采用的壓縮算法 相同或不同。
[0014] 結(jié)合第一方面或第一方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第一方面的第三 種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)模塊具體用于:
[0015] 采用自描述壓縮編碼存儲(chǔ)所述壓縮數(shù)據(jù),獲得編碼數(shù)據(jù),所述自描述壓縮編碼包 括編碼長(zhǎng)度標(biāo)識(shí)部分和數(shù)據(jù)值編碼部分,所述編碼長(zhǎng)度標(biāo)識(shí)部分用于表征對(duì)所述壓縮數(shù)據(jù) 進(jìn)行編碼的字節(jié)個(gè)數(shù),所述數(shù)據(jù)值編碼部分用于表征對(duì)所述壓縮數(shù)據(jù)進(jìn)行編碼的部分,其 中,所述壓縮數(shù)據(jù)的編碼長(zhǎng)度由其自身的首N個(gè)比特進(jìn)行標(biāo)識(shí),其中,N的大小等于所述編 碼數(shù)據(jù)的二進(jìn)制表示中自最高位起第一個(gè)取值為零的位與最高位之間取值為非零的位的 個(gè)數(shù)再加1。
[0016] 結(jié)合第一方面或第一方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第一方面的第四 種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0017] 確定模塊,用于若確定所述壓縮處理中的預(yù)壓縮數(shù)據(jù)的規(guī)模適用變形比特壓縮算 法,則觸發(fā)所述壓縮模塊對(duì)所述預(yù)壓縮數(shù)據(jù)進(jìn)行壓縮處理;
[0018] 則所述壓縮模塊具體用于采用所述變形比特壓縮算法對(duì)所述預(yù)壓縮數(shù)據(jù)中進(jìn)行 壓縮處理,獲得所述壓縮數(shù)據(jù),其中,所述變形比特壓縮算法表示采用不同的比特位數(shù)對(duì)各 數(shù)據(jù)進(jìn)行壓縮處理。
[0019] 結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式 中,所述確定模塊具體用于:
[0020] 獲取對(duì)所述預(yù)壓縮數(shù)據(jù)中最大數(shù)據(jù)進(jìn)行編碼的最少字節(jié)數(shù);
[0021] 根據(jù)所述預(yù)壓縮數(shù)據(jù)的規(guī)模及所述最少字節(jié)數(shù),確定對(duì)所述預(yù)壓縮數(shù)據(jù)進(jìn)行字節(jié) 編碼的第一字節(jié)數(shù);
[0022] 若使用預(yù)設(shè)數(shù)值的比特位數(shù)對(duì)所述預(yù)壓縮數(shù)據(jù)進(jìn)行比特編碼,則確定對(duì)所述預(yù)壓 縮數(shù)據(jù)進(jìn)行比特編碼的第二字節(jié)數(shù);
[0023] 若確定所述第二字節(jié)數(shù)小于所述第一字節(jié)數(shù),則確定所述預(yù)壓縮數(shù)據(jù)的規(guī)模適用 變形比特壓縮算法,并觸發(fā)所述壓縮模塊對(duì)所述預(yù)壓縮數(shù)據(jù)進(jìn)行壓縮處理。
[0024] 結(jié)合第一方面的第四種或第五種可能的實(shí)現(xiàn)方式,在第一方面的第六種可能的實(shí) 現(xiàn)方式中,所述存儲(chǔ)模塊用于 :
[0025] 采用正數(shù)編碼和負(fù)數(shù)編碼中其一或其組合存儲(chǔ)所述壓縮數(shù)據(jù),獲得編碼數(shù)據(jù),其 中,所述正數(shù)編碼表示對(duì)所述壓縮數(shù)據(jù)中采用字節(jié)壓縮處理的部分進(jìn)行編碼,所述負(fù)數(shù)編 碼表示對(duì)所述壓縮數(shù)據(jù)中采用比特壓縮處理的部分進(jìn)行編碼。
[0026] 結(jié)合第一方面的第六種可能的實(shí)現(xiàn)方式,在第一方面的第七種可能的實(shí)現(xiàn)方式 中,所述編碼數(shù)據(jù)包括第一編碼數(shù)據(jù),當(dāng)采用正數(shù)編碼存儲(chǔ)所述壓縮數(shù)據(jù)時(shí),所述存儲(chǔ)模塊 具體用于:
[0027] 根據(jù)所述壓縮數(shù)據(jù)中的最大數(shù)據(jù),獲取對(duì)所述最大數(shù)據(jù)進(jìn)行編碼的最小字節(jié)數(shù);
[0028] 若所述最大數(shù)據(jù)的首字節(jié)的首比特值為零,則確定采用所述最小字節(jié)數(shù)對(duì)所述壓 縮數(shù)據(jù)中采用字節(jié)壓縮處理的部分進(jìn)行編碼,獲得所述第一編碼數(shù)據(jù);
[0029] 若所述最大數(shù)據(jù)的首字節(jié)的首比特值為非零,則確定采用所述最小字節(jié)數(shù)加1后 的字節(jié)數(shù)對(duì)所述壓縮數(shù)據(jù)中采用字節(jié)壓縮處理的部分進(jìn)行編碼,獲得所述第一編碼數(shù)據(jù)。
[0030] 結(jié)合第一方面的第六種或第七種可能的實(shí)現(xiàn)方式,在第一方面的第八種可能的實(shí) 現(xiàn)方式中,所述編碼數(shù)據(jù)包括第二編碼數(shù)據(jù),所述存儲(chǔ)模塊具體用于:
[0031] 根據(jù)負(fù)數(shù)編碼規(guī)則對(duì)所述壓縮數(shù)據(jù)中采用比特壓縮處理的部分進(jìn)行負(fù)數(shù)編碼,獲 得所述第二編碼數(shù)據(jù),所述負(fù)數(shù)編碼規(guī)則包括編碼長(zhǎng)度標(biāo)識(shí)部分和數(shù)據(jù)編碼部分,所述編 碼長(zhǎng)度標(biāo)識(shí)部分用于表征被編碼數(shù)據(jù)的個(gè)數(shù),所述數(shù)據(jù)編碼部分用于表征采用預(yù)設(shè)長(zhǎng)度的 比特位對(duì)被編碼數(shù)據(jù)進(jìn)行編碼后的編碼值,其中,所述編碼長(zhǎng)度標(biāo)識(shí)的長(zhǎng)度由所述第二編 碼數(shù)據(jù)中各數(shù)據(jù)的首M個(gè)比特進(jìn)行標(biāo)識(shí),其中,M的大小等于所述第二編碼中各數(shù)據(jù)的二進(jìn) 制表示中自最高位起第一個(gè)取值為零的位與最高位之間取值為非零的位的個(gè)數(shù)。
[0032] 第二方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)壓縮方法,包括:
[0033] 根據(jù)預(yù)設(shè)拆分規(guī)則,拆分待壓縮數(shù)據(jù),獲得拆分后的數(shù)據(jù),使得壓縮算法適用于所 述拆分后的數(shù)據(jù),其中,所述預(yù)設(shè)拆分規(guī)則是根據(jù)所述待壓縮數(shù)據(jù)的特點(diǎn)確定的;
[0034] 采用所述壓縮算法對(duì)所述拆分后的數(shù)據(jù)進(jìn)行壓縮處理,輸出壓縮數(shù)據(jù);
[0035]存儲(chǔ)所述壓縮數(shù)據(jù)。
[0036] 結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)預(yù)設(shè)拆分規(guī)則, 拆分待壓縮數(shù)據(jù),獲得拆分后的數(shù)據(jù),包括:
[0037] 采用預(yù)設(shè)值整除法,拆分所述待壓縮數(shù)據(jù),其中,拆分的段數(shù)是根據(jù)對(duì)所述待壓縮 數(shù)據(jù)進(jìn)行采樣測(cè)試來(lái)確定的。
[0038] 結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的 實(shí)現(xiàn)方式中,所述采用壓縮算法對(duì)所述拆分后的數(shù)據(jù)進(jìn)行壓縮處理,輸出壓縮數(shù)據(jù),包括:
[0039] 采用所述壓縮算法對(duì)所述拆分后的數(shù)據(jù)進(jìn)行至少一次壓縮處理,輸出壓縮數(shù)據(jù), 其中,每次壓縮處理中所采用的壓縮算法相同或不同。
[0040] 結(jié)合第二方面或第二方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第二方面的第三 種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)所述壓縮數(shù)據(jù),包括:
[0041] 采用自描述壓縮編碼存儲(chǔ)所述壓縮數(shù)據(jù),獲得編碼數(shù)據(jù),所述自描述壓縮編碼包 括編碼長(zhǎng)度標(biāo)識(shí)部分和數(shù)據(jù)值編碼部分,所述編碼長(zhǎng)度標(biāo)識(shí)部分用于表征對(duì)所述壓縮數(shù)據(jù) 進(jìn)行編碼的字節(jié)個(gè)數(shù),所述數(shù)據(jù)值編碼部分用于表征對(duì)所述壓縮數(shù)據(jù)進(jìn)行編碼的部分,其 中,所述壓縮數(shù)據(jù)的編碼長(zhǎng)度由其自身的首N個(gè)比特進(jìn)行標(biāo)識(shí),其中,N的大小等于所述編 碼數(shù)據(jù)的二進(jìn)制表示中自最高位起第一個(gè)取值為零的位與最高位之間取值為非零的位的 個(gè)數(shù)再加1。
[0042] 結(jié)合第二方面或第二方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第二方面的第 四種可能的實(shí)現(xiàn)方式中,所述采用所述壓縮算法對(duì)拆分后的數(shù)據(jù)進(jìn)行壓縮處理之前,還包 括:
[0043] 若確定所述壓縮處理中的預(yù)壓縮數(shù)據(jù)的規(guī)模適用變形比特壓縮算法,則采用所述 變形比特壓縮算法對(duì)所述預(yù)壓縮數(shù)據(jù)中進(jìn)行壓縮處理,獲得所述壓縮數(shù)據(jù),其中,所述變形 比特壓縮算法表示采用不同的比特位數(shù)對(duì)各數(shù)據(jù)進(jìn)行壓