專利名稱:一種整型數據無損壓縮方法、解壓縮方法及裝置的制作方法
技術領域:
本發明涉及數據壓縮技術領域,具體地,涉及一種整型數據無損壓縮、無損解壓縮方法及裝置。
背景技術:
數據壓縮是一種消除原始數據之間的冗余性,將原始數據文件轉化為另一個占用存儲空間更小的數據文件的技術。數據壓縮的目的是盡可能地減小數據文件的大小,以節省數據傳輸和存儲的成本。我們通常所說的數據壓縮實質上包括兩個部分第一部分是通過壓縮算法將原始數據文件轉化為壓縮數據文件,即壓縮部分;另一部分是通過解壓算法對壓縮數據文件進行解壓,以重構出原始數據文件,即解壓部分。根據不同壓縮方法對應的解壓方法,可由壓縮數據文件基本或完全準確地重構出原始數據文件。根據是否可以通過壓縮數據文件無失真地恢復原始數據文件,數據壓縮方法可分為兩大類無損壓縮(重構數據與原始數據完全一致)和有損壓縮(允許重構數據與原始數據存在偏差,因而一般可以取得比無損壓縮更好的壓縮效果)。數據壓縮技術在過去20年里得到了快速的發展。目前,它已廣泛應用于數字通信、數字廣播、數字電視、數字存儲、計算機、互聯網、數字攝影、數字出版、多媒體娛樂、玩具、家電、石油勘探以及智能控制等眾多領域。根據不同的應用需求,需要選擇不同類型的壓縮方法。對于可執行計算機程序、法律文本文檔、醫學X光映像和遺傳(基因)信息等數據文件,任何一位(或一個字)信息的改變或缺失將導致程序不能執行或不能按照正確的思路執行或將導致原始信息意義的改變,而這類文件是不允許出現這種情況的;因此,這類數據文件的壓縮需要采用無損壓縮方法。對于一般的圖像、視頻和音頻等數據文件,當其中部分數據發生較小的改變時,我們很難甚至完全不能發現其中信息的改變,不會影響這些數據文件的正常使用;因此,這類數據文件可以采用有損壓縮方法,以在不影響它們正常使用的情況下獲得更好的壓縮效果。目前已有的數據壓縮方法主要包括統計類編碼(Shannon-Fano編碼,Huffman編碼,Run-Length編碼,Arithmetic編碼等)方法、字典類編碼(LZ編碼,LZ77編碼,LZ78編碼,LZff編碼等)方法、變換類(K-L變換,W-H變換,離散余弦變換,Haar變換,小波變換等)壓縮方法、圖像壓縮方法(Image Transforms, JPEG, JBIG,矢量量化等)、視頻壓縮方法(MPEG,MPEG-4, H. 261, H. 264 等)、音頻壓縮方法(ADPCM 音頻壓縮,FLAC,Monkey’ s Audio,AAC 等)
坐寸o編碼是所有數據壓縮方法的關鍵組成部分,它直接影響著壓縮方法的壓縮效果,有些壓縮方法的壓縮效果甚至完全取決于所使用的編碼方式。所謂編碼就是將原始數據流或經過處理的數據流以某種特殊的方式記錄下來。不同的編碼方法對不同類型的數據序列有效。例如,Shannon-Fano編碼和Huffman編碼適用于文件中各符號出現的概率為2的負指數次方的文件壓縮;算術編碼適用于文件中少數符號出現的概率明顯大于其他符號出現的概率的文件壓縮;LZW編碼適用于文件中相同符號組合出現頻率較高的數據文件壓縮;專門為視頻或音頻數據文件設計的編碼方法適用于視頻或音頻數據文件壓縮等。如果我們用一種專門為圖像或音頻數據設計的壓縮程序(或編碼方式)對文本文件進行壓縮的話,那么壓縮后文件大小常常大于甚至遠大于原始數據文件。因此,針對不同類型的數據文件,選擇或設計合適的編碼方式是壓縮成功的關鍵。對經典的算術編碼方法和LZW編碼方法、通用的WinRAR軟件以及專業音頻數據壓縮軟件FLAC (Free Lossless Audio Codec)進行無損壓縮測試表明,這些編碼(或壓縮)方法的壓縮效果并不足夠理想(算術編碼、LZW、WinRAR和FLAC對經過去相關處理的聲波測井波形數據文件的平均壓縮比分別為1.32、1. 12,1.38和1. 01),壓縮比有進一步提升的空間。
發明內容
本發明實施例的主要目的在于提供一種整型數據無損壓縮方法、解壓縮方法及裝置,以提供一種相比現有技術能夠獲得更好壓縮效果的壓縮技術。為了實現上述目的,本發明實施例提供一種整型數據無損壓縮方法,包括讀取原始整型數據序列;確定原始比特位總數,所述原始比特位總數為所述原始整型數據的完整二進制碼對應的比特位數;針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;按照設定比特位順序對所述原始比特位總數中所有比特位對應的二進制碼串進行排列,得到位重組二進制碼序列;以第一設定數目的碼值為一組完整二進制碼,順序提取所述位重組二進制碼序列中的各組碼值并確定對應的整型數據,將確定的整型數據組成位重組整型數據序列;以第二設定數目個整型數據為一數據塊,將所述位重組整型數據序列順序劃分成至少一個數據塊;存儲壓縮文件基本信息,所述壓縮文件基本信息包括原始整型數據總數、所述原始比特位總數、所述設定比特位順序、所述第一設定數目、所述第二設定數目;針對所述每一數據塊執行以下編碼處理確定當前數據塊中出現概率最大的整型數據及對應的概率值,判斷所述概率值是否大于設定閾值,若是,則根據標記編碼方式對當前數據塊進行編碼,否則,根據常規編碼方式對當前數據塊進行編碼;對所有數據塊完成所述編碼處理后,將輸出的二進制碼組成二進制壓縮文件;其中,根據標記編碼方式對當前數據塊進行編碼,具體包括輸出標記編碼方式標記符;輸出當前數據塊中出現概率最大的整型數據的完整二進制碼;順序讀取當前數據塊中的每一整型數據,判斷該整型數據是否為所述出現概率最大的整型數據,若是,則輸出替代標記符,否則,依次輸出非替代標記符和該整型數據的完整二進制碼;根據常規編碼方式對當前數據塊進行編碼,具體包括輸出常規編碼方式標記符;順序讀取當前數據塊中的每一整型數據,并輸出該整型數據的完整二進制碼。優選的,所述整型數據無損壓縮方法中,所述設定閾值按照如下方式確定假設所述第二設定數目個整型數據滿足條件分別采用標記編碼方式和常規編碼方式進行編碼時,得到的編碼結果占用相同大小的存儲空間;
則將該第二設定數目個整型數據中各整型數據的出現概率的最大值確定為所述設定閾值。優選的,所述整型數據無損壓縮方法中,讀取原始整型數據序列之前,還包括對所述原始整型數據序列進行預處理獲得預處理整型數據序列,所述預處理整型數據序列的均方值小于所述原始整型數據序列的均方值;則針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串,具體為針對所述原始比特位總數中的每一比特位,依次提取所述預處理整型數據序列中所有預處理整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;所述壓縮文件基本信息還包括所述預處理的過程信息。優選的,所述整型數據無損壓縮方法中,對所述原始整型數據序列進行預處理,具體包括對所述原始整型數據進行線性預測處理/非線性預測處理/小波變換處理;和/或,將所述原始整型數據中的有符號整型數據轉換為無符號整型數據。一種整型數據解壓縮方法,包括對壓縮文件基本信息進行解析,獲取所述壓縮文件基本信息中存儲的原始整型數據總數、原始比特位總數、設定比特位順序、第一設定數目、第二設定數目;對二進制壓縮文件執行以下解碼處理過程順序讀取一個未讀碼值;確定所述未讀碼值為標記編碼方式標記符時,根據標記解碼方式對后續碼值進行解碼,直至得到所述第二設定數目的解碼整型數據;確定所述未讀碼值為常規編碼方式標記符時,根據常規解碼方式對后續碼值進行解碼,直至得到所述第二設定數目的解碼整型數據;重復執行上述解碼處理過程,直至得到數目為所述原始整型數據總數乘以原始比特位總數再除以第一設定數目個解碼整型數據;將所述解碼處理過程得到的所有解碼整型數據的完整二進制碼順序組合為位恢復二進制碼序列;定義多個整型數據,所述定義的多個整型數據總數等于所述原始整型數據總數,且所述定義的每一整型數據的完整二進制碼對應的比特位數等于所述原始比特位總數;以所述原始整型數據總數為一組,順序提取所述位恢復二進制碼序列中的各組碼值,按照所述設定比特位順序將每一組碼值包括的各碼值依次賦值給所述定義的各整型數據的相應比特位;將所述賦值后的整型數據順序組成解壓縮整型數據序列;其中,根據標記解碼方式對后續碼值進行解碼,具體包括讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為被替代整型數據,并循環執行以下步驟繼續讀取一個后續碼值;確定該后續碼值為替代標記符時,將所述被替代整型數據確定為解碼整型數據;確定該后續碼值為非替代標記符時,繼續讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為解碼整型數據;根據常規解碼方式對后續碼值進行解碼,具體包括循環執行以下步驟讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為解碼整型數據。
優選的,所述整型數據解壓縮方法還包括獲取所述壓縮文件基本信息中存儲的預處理過程信息;則將所述賦值后的整型數據順序組成解壓縮整型數據序列之前,還包括對所述賦值后的整型數據進行反預處理,所述反預處理的過程與所述預處理的過程互逆;將所述賦值后的整型數據順序組成解壓縮整型數據序列,具體為將所述反預處理后得到的整型數據順序組成解壓縮整型數據序列。一種整型數據無損壓縮裝置,包括位重組處理模塊,用于讀取原始整型數據序列;確定原始比特位總數,所述原始比特位總數為所述原始整型數據的完整二進制碼對應的比特位數;針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;按照設定比特位順序對所述原始比特位總數中所有比特位對應的二進制碼串進行排列,得到位重組二進制碼序列;以第一設定數目的碼值為一組完整二進制碼,順序提取所述位重組二進制碼序列中的各組碼值并確定對應的整型數據,將確定的整型數據組成位重組整型數據序列;數據塊劃分及基本信息存儲模塊,用于以第二設定數目個整型數據為一數據塊,將所述位重組整型數據序列順序劃分成至少一個數據塊;存儲壓縮文件基本信息,所述壓縮文件基本信息包括原始整型數據總數、所述原始比特位總數、所述設定比特位順序、所述第一設定數目、所述第二設定數目;編碼處理模塊,用于針對所述每一數據塊執行以下編碼處理確定當前數據塊中出現概率最大的整型數據及對應的概率值,判斷所述概率值是否大于設定閾值,若是,則根據標記編碼方式對當前數據塊進行編碼,否則,根據常規編碼方式對當前數據塊進行編碼;對所有數據塊完成所述編碼處理后,將輸出的二進制碼組成二進制壓縮文件;其中,編碼處理模塊根據標記編碼方式對當前數據塊進行編碼時,具體用于輸出標記編碼方式標記符;輸出當前數據塊中出現概率最大的整型數據的完整二進制碼;順序讀取當前數據塊中的每一整型數據,判斷該整型數據是否為所述出現概率最大的整型數據,若是,則輸出替代標記符,否則,依次輸出非替代標記符和該整型數據的完整二進制碼;編碼處理模塊根據常規編碼方式對當前數據塊進行編碼時,具體用于輸出常規編碼方式標記符;順序讀取當前數據塊中的每一整型數據,并輸出該整型數據的完整二進制碼。優選的,所述整型數據無損壓縮裝置還包括預處理模塊,用于對所述原始整型數據序列進行預處理獲得預處理整型數據序列,所述預處理整型數據序列的均方值小于所述原始整型數據序列的均方值;則所述位重組處理模塊針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串時,具體用于針對所述原始比特位總數中的每一比特位,依次提取所述預處理整型數據序列中所有預處理整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;所述數據塊劃分及基本信息存儲模塊還用于將所述預處理的過程信息存儲至壓縮文件基本信息中。一種整型數據解壓縮裝置,包括基本信息解析模塊,用于對壓縮文件基本信息進行解析,獲取所述壓縮文件基本信息中存儲的原始整型數據總數、原始比特位總數、設定比特位順序、第一設定數目、數據塊個數、第二設定數目;解碼處理模塊,用于對二進制壓縮文件執行以下解碼處理過程順序讀取一個未讀碼值;確定所述未讀碼值為標記編碼方式標記符時,根據標記解碼方式對后續碼值進行解碼,直至得到所述第二設定數目的解碼整型數據;確定所述未讀碼值為常規編碼方式標記符時,根據常規解碼方式對后續碼值進行解碼,直至得到所述第二設定數目的解碼整型數據;重復執行上述解碼處理過程,直至得到數目為所述原始整型數據總數乘以原始比特位總數再除以第一設定數目個解碼整型數據;位恢復處理模塊,用于將所述解碼處理過程得到的所有解碼整型數據的完整二進制碼順序組合為位恢復二進制碼序列;定義多個整型數據,所述定義的多個整型數據總數等于所述原始整型數據總數,且所述定義的每一整型數據的完整二進制碼對應的比特位數等于所述原始比特位總數;以所述原始整型數據總數為一組,順序提取所述位恢復二進制碼序列中的各組碼值,按照所述設定比特位順序將每一組碼值包括的各碼值依次賦值給所述定義的各整型數據的相應比特位;將所述賦值后的整型數據順序組成解壓縮整型數據序列;其中,解碼處理模塊根據標記解碼方式對后續碼值進行解碼時,具體用于讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為被替代整型數據,并循環執行以下步驟繼續讀取一個后續碼值;確定該后續碼值為替代標記符時,將所述被替代 整型數據確定為解碼整型數據;確定該后續碼值為非替代標記符時,繼續讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為解碼整型數據;解碼處理模塊根據常規解碼方式對后續碼值進行解碼時,具體用于循環執行以下步驟讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為解碼整型數據。優選的,所述整型數據解壓縮裝置中,所述基本信息解析模塊還用于獲取所述壓縮文件基本信息中存儲的預處理過程信息;所述整型數據解壓縮裝置還包括反預處理模塊,用于對所述賦值后的整型數據進行反預處理,所述反預處理的過程與所述預處理的過程互逆;則所述位恢復處理模塊將所述賦值后的整型數據順序組成解壓縮整型數據序列時,具體用于將所述反預處理后得到的整型數據順序組成解壓縮整型數據序列。借助于上述技術方案,本發明算法簡單、易于實現,編碼解碼效率高,壓縮效果好,可用于對音頻數據、地震勘探信號、地球物理測井波形數據和圖像數據等多種類型的整型數據進行無損壓縮和解壓縮;測試表明,本方法對經過去相關處理后的聲波測井波形數據無損壓縮的平均壓縮比比算術編碼、LZff, WinRAR軟件和FLAC軟件高14. 59^56. 4%,具有良好的應用前景。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1是本發明實施例一提供的整型數據無損壓縮方法流程圖;圖2是本發明實施例二提供的整型數據解壓縮方法流程圖;圖3是本發明實施例三提供的整型數據無損壓縮方法和解壓縮方法流程示意圖;圖4是本發明實施例三提供的位重組處理過程具體流程圖;圖5是本發明實施例三提供的編碼處理過程具體流程圖;圖6是本發明實施例三提供的標記編碼方式編碼過程具體流程圖;圖7是本發明實施例三提供的解碼處理過程具體流程圖;圖8是本發明實施例三提供的位恢復處理過程具體流程圖;圖9是本發明實施例四提供的整型數據無損壓縮裝置結構示意圖;圖10是本發明實施例五提供的整型數據解壓縮裝置結構示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。需要說明的是,本發明實施例中所說的“原始整型數據序列”為采用本發明提供的整型數據無損壓縮方法進行壓縮的原始文件;本發明實施例中所說的“二進制壓縮文件”為采用本發明提供的整型數據無損壓縮方法對“原始整型數據序列”進行壓縮后得到的文件;本發明實施例中所說的“解壓縮整型數據序列”為采用本發明提供的整型數據解壓縮方法對“二進制壓縮文件”進行解壓后得到的文件,該文件與壓縮前的原始文件一致,即與“原始整型數據序列” 一致本發明實施例中所說的“完整二進制碼”是指一個整型數據在計算機內存中以二進制形式存儲時對應的全部二進制碼。實施例一本實施例提供一種整型數據無損壓縮方法,如圖1所示,該方法包括位重組處理過程101 :讀取原始整型數據序列;確定原始比特位總數,所述原始比特位總數為所述原始整型數據的完整二進制碼對應的比特位數;針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;按照設定比特位順序對所述原始比特位總數中所有比特位對應的二進制碼串進行排列,得到位重組二進制碼序列;以第一設定數目的碼值為一組完整二進制碼,順序提取所述位重組二進制碼序列中的各組碼值并確定對應的整型數據,將確定的整型數據組成位重組整型數據序列;數據塊劃分及基本信息生成過程102 :以第二設定數目個整型數據為一數據塊,將所述位重組整型數據序列順序劃分成至少一個數據塊;存儲壓縮文件基本信息,所述壓縮文件基本信息包括原始整型數據總數、所述原始比特位總數、所述設定比特位順序、所述第一設定數目、所述第二設定數目;編碼處理過程103 :針對每一數據塊執行以下編碼處理確定當前數據塊中出現概率最大的整型數據及對應的概率值,判斷所述概率值是否大于設定閾值,若是,則根據標記編碼方式對當前數據塊進行編碼,否則,根據常規編碼方式對當前數據塊進行編碼;對所有數據塊完成所述編碼處理后,將輸出的二進制碼組成二進制壓縮文件;其中,編碼處理過程103中,根據標記編碼方式對當前數據塊進行編碼,具體包括輸出標記編碼方式標記符;輸出當前數據塊中出現概率最大的整型數據的完整二進制碼;順序讀取當前數據塊中的每一整型數據,判斷該整型數據是否為所述出現概率最大的整型數據,若是,則輸出替代標記符,否則,依次輸出非替代標記符和該整型數據的完整二進制碼;編碼處理過程103中,根據常規編碼方式對當前數據塊進行編碼,具體包括輸出常規編碼方式標記符;順序讀取當前數據塊中的每一整型數據,并輸出該整型數據的完整二進制碼。具體的,原始比特位總 數為原始整型數據在計算機內存中以二進制形式存儲所占用的比特位數,如8比特位、16比特位、32比特位等。位重組處理過程101中,針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串,具體如下確定原始比特位總數的最高比特位和最低比特位(一般最左邊的一位為最高比特位,最右邊一位是最低比特位),針對第k (k=l, 2,3....,最高比特位彡k彡最低比特位)比特位,依次提取所有原始整型數據的完整二進制碼中第k比特位的碼值,得到第k比特位對應的二進制碼串。位重組處理過程101中,按照設定比特位順序對所述原始比特位總數中所有比特位對應的二進制碼串進行排列,得到位重組二進制碼序列,具體可以如下設定比特位順序為從高比特位到低比特位,則按照從最高比特位至最低比特位的順序排列各比特位對應的二進制碼串,得到相應的位重組二進制碼序列;其中,本實施例對所述設定比特位順序不作限定,可以從高比特位到低比特位,也可以從低比特位到高比特位,還可以為任意比特位順序。位重組處理過程101中,以第一設定數目的碼值為一組完整二進制碼,順序提取所述位重組二進制碼序列中的各組碼值并確定對應的整型數據,將確定的整型數據組成位重組整型數據序列,具體可以為以16個碼值為一組完整二進制碼,順序提取所述位重組二進制碼序列中的碼值,并且每提取16個碼值作為一組完整二進制碼確定對應的整型數據,將依次確定的整型數據組合成位重組整型數據序列;需要說明的是,本實施例中第一設定數目可以等于或不等于原始比特位總數,例如,原始整型數據的完整二進制碼占用16比特位時,第一設定數目可以為8或32,即位重組整型數據序列中各整型數據的完整二進制碼占用8比特位或32比特位;對于某一類型的原始整型數據序列而言,其包含的原始整型數據的完整二進制碼往往具有高比特位(或低比特位)全部或大部分為碼值0 (或碼值I)的共性特征;位重組處理過程101就是利用這種共性特征,對所有原始整型數據的二進制碼進行重新排列組合,使得到的位重組二進制碼序列中連續出現碼值0 (或碼值I)的概率較高,相應的,根據位重組二進制碼序列得到的位重組整型數據序列中,某一整型數據出現的概率會明顯高于該序列中其他整型數據出現的概率,利用這個特點,就可以使編碼處理過程103取得較好的編碼處理效果,即獲得較好的無損壓縮效果;需要說明的是,當原始整型數據序列包含的原始整型數據不具有上述共性特征時,也可以采用本實施例提供的整型數據無損壓縮方法,但是獲得的壓縮效果不如壓縮具有上述共性特征的原始整型數據序列獲得的壓縮效果好。數據塊劃分及基本信息生成過程102中,第二設定數目表征了數據塊的大小,一般情況下,對于相同類型的原始整型數據序列(如相同類型的音樂文件、相同條件下采集得到的地球物理勘探信號等),其最佳數據塊的大小是相近的,因此可依據經驗確定數據塊的大小,即第二設定數目可依據經驗設置;若根據第二設定數目不能將位重組整型數據序列順序劃分成整數個數據塊,則將最后不足一個數據塊的若干整型數據作為一個特殊的數據塊。數據塊劃分及基本信息生成過程102中,存儲壓縮文件基本信息,主要包括存儲原始整型數據總數、所述原始比特位總數、所述設定比特位順序、所述第一設定數目、所述第二設定數目等信息,這些信息是解壓縮過程所必須的信息。編碼處理過程103中,標記編碼方式是利用了位重組整型數據序列或其局部子序列具有某一整型數據出現的概率會明顯高于該序列中其他整型數據出現的概率的特點,采用替代標記符代替數據塊中出現概率最大的整型數據的方式對位重組整型數據序列進行編碼,即輸出替代標記符以代替數據塊中出現概率最大的整型數據的二進制碼,同時原樣輸出數據塊中其他整型數據的二進制碼,使標記編碼方式的編碼結果占用的存儲空間小于位重組整型數據序列的二進制碼占用的存儲空間,以達到壓縮文件的目的;標記編碼方式中,利用替代標記符代替數據塊中出現概率最大的整型數據的完整二進制碼能夠起到節省存儲空間的作用,但是每原樣輸出數據塊中的一個其他整型數據(非數據塊中出現概率最大的整型數據)的完整二進制碼之前都要輸出一位非替代標記符,這在一定程度上增加了編碼結果占用的存儲空間,因此要想達到壓縮文件的目的,只能在數據塊中某一整型數據的出現概率大于設定閾值時才能使用標記編碼方式進行編碼,否貝U,就使用常規編碼方式進行編碼。編碼處理過程103中,標記編碼方式標記符標識了數據塊采用標記編碼方式進行編碼,常規編碼方式標記符標識了數據塊采用常規編碼方式進行編碼,以便于解壓縮過程中解碼處理的順利實現。需要說明的是,本實施例提供的整型數據無損壓縮方法,對原始整型數據序列進行壓縮后最終生成的的文件中包含兩部分壓縮文件基本信息和二進制壓縮文件;具體實施中,可以將壓縮文件基本信息與二進制壓縮文件順序存儲為一個文件,也可以將壓縮文件基本信息與二進制壓縮文件存儲至一個文件夾中,但無論怎樣存儲,在執行解壓縮過程時都需要先對壓縮文件基本信息進行解析,然后才能對二進制壓縮文件進行解壓縮。本實施例提供的整型數據無損壓縮方法的壓縮處理速度快,算法簡單、易于實現,編碼效率高,具有較好的壓縮效果,可適用于對音頻數據、地震勘探信號、地球物理測井波形數據和圖像數據等多種類型的整型數據進行壓縮,具有良好的應用前景。優選的,所述設定閾值按照如下方式確定
假設所述第二設定數目個整型數據滿足條件分別采用標記編碼方式和常規編碼方式進行編碼時,得到的編碼結果占用相同大小的存儲空間;則將該第二設定數目個整型數據中各整型數據的出現概率的最大值確定為所述設定閾值。具體的,以整型數據的完整二進制碼比特位數為16位(第一設定數目為16),每一數據塊包含100個(第二設定數目為100)整型數據為例,假設某一數據塊滿足上述條件,設該數據塊中各數據出現概率的最大值Pmax = Po,則采用標記編碼方式的編碼結果占用17+100XPJ17X 100X (1-P0)位比特位的存儲空間,采用常規編碼方式的編碼結果占用16X100+1位比特位的存儲空間,通過解方程17+100XP0+17X100X (1-P0) = 16X100+1,即可計算出Ptl的值,相應的就可確定出設定閾值的大小;一般情況下,計算得到的P。為小數,只需根據精度需求按照四舍五入的方法取有限精度的值作為閾值即可。優選的,本實施例提供的整型數據無損壓縮方法中,位重組處理過程101之前,還包括預處理過程對所述原始整型數據序列進行預處理獲得預處理整型數據序列,所述預處理整型數據序列的均方值小于所述原始整型數據序列的均方值;則位重組處理過程101中,針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串,具體為針對所述原始比特位總數中的每一比特位,依次提取所述預處理整型數據序列中所有預處理整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;數據塊劃分及基本信息生成過程102中形成的所述壓縮文件基本信息還包括所述預處理的過程信息。具體的,預處理過程是通過采用數據處理方法對原始整型數據序列進行處理,預處理后得到的整型數據序列的均方值減小,其目的是提高整型數據序列的二進制碼的共性特征,該過程的處理效果越好,則編碼處理過程103得到的編碼結果越好,壓縮效果越好;當對原始整型數據序列進行預處理后得到預處理整型數據序列,并且預處理整型數據序列的均方值較小(越小越好)或均值為零且具有小方差正態分布特征時,該預處理整型數據序列中各預處理整型數據的二進制碼具有較好的共性特征,例如該預處理整型數據序列中各預處理整型數據的高比特位(或低比特位)全部或大部分為碼值0 (或碼值I);當原始整型數據序列本身即滿足均方值較小或均值為零且具有小方差正態分布特征時,其中各原始整型數據的二進制碼就會具有較好的共性特征時,此時,不必再進行數據預處理,即省略預處理過程;壓縮文件基本信息中包含的預處理過程信息可以包括預處理狀態信息(例如為I時表不未做預處理)、預處理方法信息(例如為2時表不米用小波變換方法,為3時表不米用線性預測處理,為4時表示采用非線性預測處理)等。需要說明的是,預處理過程必須是可逆的,以便在解壓縮時通過采用與數據預處理過程互逆的反預處理過程進行恢復。優選的,對所述原始整型數據序列進行預處理,具體包括對所述原始整型數據進行線性預測處理/非線性預測處理/小波變換處理;和/或,將所述原始整型數據中的有符號整型數據轉換為無符號整型數據。具體的,可以采用線性預測處理/非線性預測處理/小波變換處理等數據處理方法對原始整型數據序列進行數據預處理,使其滿足均方值較小或均值為零且具有小方差正態分布特征;當經過上述處理之后的整型數據序列中既包括正整型數據,又包括負整型數據時,為了進一步提高二進制碼的共性特征,可將有符號整型數據轉換為無符號整型數據,例如可采用如下轉換公式實現該目的
權利要求
1.一種整型數據無損壓縮方法,其特征在于,包括 讀取原始整型數據序列;確定原始比特位總數,所述原始比特位總數為所述原始整型數據的完整二進制碼對應的比特位數;針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;按照設定比特位順序對所述原始比特位總數中所有比特位對應的二進制碼串進行排列,得到位重組二進制碼序列;以第一設定數目的碼值為一組完整二進制碼,順序提取所述位重組二進制碼序列中的各組碼值并確定對應的整型數據,將確定的整型數據組成位重組整型數據序列; 以第二設定數目個整型數據為一數據塊,將所述位重組整型數據序列順序劃分成至少一個數據塊;存儲壓縮文件基本信息,所述壓縮文件基本信息包括原始整型數據總數、所述原始比特位總數、所述設定比特位順序、所述第一設定數目、所述第二設定數目; 針對所述每一數據塊執行以下編碼處理確定當前數據塊中出現概率最大的整型數據及對應的概率值,判斷所述概率值是否大于設定閾值,若是,則根據標記編碼方式對當前數據塊進行編碼,否則,根據常規編碼方式對當前數據塊進行編碼;對所有數據塊完成所述編碼處理后,將輸出的二進制碼組成二進制壓縮文件; 其中,根據標記編碼方式對當前數據塊進行編碼,具體包括 輸出標記編碼方式標記符;輸出當前數據塊中出現概率最大的整型數據的完整二進制碼;順序讀取當前數據塊中的每一整型數據,判斷該整型數據是否為所述出現概率最大的整型數據,若是,則輸出替代標記符,否則,依次輸出非替代標記符和該整型數據的完整二進制碼; 根據常規編碼方式對當前數據塊進行編碼,具體包括 輸出常規編碼方式標記符;順序讀取當前數據塊中的每一整型數據,并輸出該整型數據的完整二進制碼。
2.根據權利要求1所述的整型數據無損壓縮方法,其特征在于,所述設定閾值按照如下方式確定 假設所述第二設定數目個整型數據滿足條件分別采用標記編碼方式和常規編碼方式進行編碼時,得到的編碼結果占用相同大小的存儲空間; 則將該第二設定數目個整型數據中各整型數據的出現概率的最大值確定為所述設定閾值。
3.根據權利要求1或2所述的整型數據無損壓縮方法,其特征在于,讀取原始整型數據序列之前,還包括對所述原始整型數據序列進行預處理獲得預處理整型數據序列,所述預處理整型數據序列的均方值小于所述原始整型數據序列的均方值; 則針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串,具體為針對所述原始比特位總數中的每一比特位,依次提取所述預處理整型數據序列中所有預處理整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串; 所述壓縮文件基本信息還包括所述預處理的過程信息。
4.根據權利要求3所述的整型數據無損壓縮方法,其特征在于,對所述原始整型數據序列進行預處理,具體包括對所述原始整型數據進行線性預測處理/非線性預測處理/小波變換處理;和/或, 將所述原始整型數據中的有符號整型數據轉換為無符號整型數據。
5.一種整型數據解壓縮方法,其特征在于,包括 對壓縮文件基本信息進行解析,獲取所述壓縮文件基本信息中存儲的原始整型數據總數、原始比特位總數、設定比特位順序、第一設定數目、第二設定數目; 對二進制壓縮文件執行以下解碼處理過程順序讀取一個未讀碼值;確定所述未讀碼值為標記編碼方式標記符時,根據標記解碼方式對后續碼值進行解碼,直至得到所述第二設定數目的解碼整型數據;確定所述未讀碼值為常規編碼方式標記符時,根據常規解碼方式對后續碼值進行解碼,直至得到所述第二設定數目的解碼整型數據;重復執行上述解碼處理過程,直至得到數目為所述原始整型數據總數乘以原始比特位總數再除以第一設定數目個解碼整型數據; 將所述解碼處理過程得到的所有解碼整型數據的完整二進制碼順序組合為位恢復二進制碼序列;定義多個整型數據,所述定義的多個整型數據總數等于所述原始整型數據總數,且所述定義的每一整型數據的完整二進制碼對應的比特位數等于所述原始比特位總數;以所述原始整型數據總數為一組,順序提取所述位恢復二進制碼序列中的各組碼值,按照所述設定比特位順序將每一組碼值包括的各碼值依次賦值給所述定義的各整型數據的相應比特位;將所述賦值后的整型數據順序組成解壓縮整型數據序列; 其中,根據標記解碼方式對后續碼值進行解碼,具體包括 讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為被替代整型數據,并循環執行以下步驟繼續讀取一個后續碼值;確定該后續碼值為替代標記符時,將所述被替代整型數據確定為解碼整型數據;確定該后續碼值為非替代標記符時,繼續讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為解碼整型數據; 根據常規解碼方式對后續碼值進行解碼,具體包括 循環執行以下步驟讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為解碼整型數據。
6.根據權利要求5所述的整型數據解壓縮方法,其特征在于,還包括獲取所述壓縮文件基本信息中存儲的預處理過程信息;則 將所述賦值后的整型數據順序組成解壓縮整型數據序列之前,還包括對所述賦值后的整型數據進行反預處理,所述反預處理的過程與所述預處理的過程互逆; 將所述賦值后的整型數據順序組成解壓縮整型數據序列,具體為將所述反預處理后得到的整型數據順序組成解壓縮整型數據序列。
7.—種整型數據無損壓縮裝置,其特征在于,包括 位重組處理模塊,用于讀取原始整型數據序列;確定原始比特位總數,所述原始比特位總數為所述原始整型數據的完整二進制碼對應的比特位數;針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;按照設定比特位順序對所述原始比特位總數中所有比特位對應的二進制碼串進行排列,得到位重組二進制碼序列;以第一設定數目的碼值為一組完整二進制碼,順序提取所述位重組二進制碼序列中的各組碼值并確定對應的整型數據,將確定的整型數據組成位重組整型數據序列; 數據塊劃分及基本信息存儲模塊,用于以第二設定數目個整型數據為一數據塊,將所述位重組整型數據序列順序劃分成至少一個數據塊;存儲壓縮文件基本信息,所述壓縮文件基本信息包括原始整型數據總數、所述原始比特位總數、所述設定比特位順序、所述第一設定數目、所述第二設定數目; 編碼處理模塊,用于針對所述每一數據塊執行以下編碼處理確定當前數據塊中出現概率最大的整型數據及對應的概率值,判斷所述概率值是否大于設定閾值,若是,則根據標記編碼方式對當前數據塊進行編碼,否則,根據常規編碼方式對當前數據塊進行編碼;對所有數據塊完成所述編碼處理后,將輸出的二進制碼組成二進制壓縮文件; 其中,編碼處理模塊根據標記編碼方式對當前數據塊進行編碼時,具體用于輸出標記編碼方式標記符;輸出當前數據塊中出現概率最大的整型數據的完整二進制碼;順序讀取當前數據塊中的每一整型數據,判斷該整型數據是否為所述出現概率最大的整型數據,若是,則輸出替代標記符,否則,依次輸出非替代標記符和該整型數據的完整二進制碼; 編碼處理模塊根據常規編碼方式對當前數據塊進行編碼時,具體用于輸出常規編碼方式標記符;順序讀取當前數據塊中的每一整型數據,并輸出該整型數據的完整二進制碼。
8.根據權利要求7所述的整型數據無損壓縮裝置,其特征在于,還包括 預處理模塊,用于對所述原始整型數據序列進行預處理獲得預處理整型數據序列,所述預處理整型數據序列的均方值小于所述原始整型數據序列的均方值; 則所述位重組處理模塊針對所述原始比特位總數中的每一比特位,依次提取所有原始整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串時,具體用于針對所述原始比特位總數中的每一比特位,依次提取所述預處理整型數據序列中所有預處理整型數據的完整二進制碼中該比特位的碼值,得到該比特位對應的二進制碼串;所述數據塊劃分及基本信息存儲模塊還用于將所述預處理的過程信息存儲至壓縮文件基本信息中。
9.一種整型數據解壓縮裝置,其特征在于,包括 基本信息解析模塊,用于對壓縮文件基本信息進行解析,獲取所述壓縮文件基本信息中存儲的原始整型數據總數、原始比特位總數、設定比特位順序、第一設定數目、第二設定數目; 解碼處理模塊,用于對二進制壓縮文件執行以下解碼處理過程順序讀取一個未讀碼值;確定所述未讀碼值為標記編碼方式標記符時,根據標記解碼方式對后續碼值進行解碼,直至得到所述第二設定數目的解碼整型數據;確定所述未讀碼值為常規編碼方式標記符時,根據常規解碼方式對后續碼值進行解碼,直至得到所述第二設定數目的解碼整型數據;重復執行上述解碼處理過程,直至得到數目為所述原始整型數據總數乘以原始比特位總數再除以第一設定數目個解碼整型數據; 位恢復處理模塊,用于將所述解碼處理過程得到的所有解碼整型數據的完整二進制碼順序組合為位恢復二進制碼序列;定義多個整型數據,所述定義的多個整型數據總數等于所述原始整型數據總數,且所述定義的每一整型數據的完整二進制碼對應的比特位數等于所述原始比特位總數;以所述原始整型數據總數為一組,順序提取所述位恢復二進制碼序列中的各組碼值,按照所述設定比特位順序將每一組碼值包括的各碼值依次賦值給所述定義的各整型數據的相應比特位;將所述賦值后的整型數據順序組成解壓縮整型數據序列; 其中,解碼處理模塊根據標記解碼方式對后續碼值進行解碼時,具體用于 讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為被替代整型數據,并循環執行以下步驟繼續讀取一個后續碼值;確定該后續碼值為替代標記符時,將所述被替代整型數據確定為解碼整型數據;確定該后續碼值為非替代標記符時,繼續讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為解碼整型數據; 解碼處理模塊根據常規解碼方式對后續碼值進行解碼時,具體用于 循環執行以下步驟讀取所述第一設定數目的后續碼值作為一組完整二進制碼,將其對應的整型數據確定為解碼整型數據。
10.根據權利要求9所述的整型數據解壓縮裝置,其特征在于, 所述基本信息解析模塊還用于獲取所述壓縮文件基本信息中存儲的預處理過程信息; 所述整型數據解壓縮裝置還包括反預處理模塊,用于對所述賦值后的整型數據進行反預處理,所述反預處理的過程與所述預處理的過程互逆; 則所述位恢復處理模塊將所述賦值后的整型數據順序組成解壓縮整型數據序列時,具體用于將所述反預處理后得到的整型數據順序組成解壓縮整型數據序列。
全文摘要
本發明提供一種整型數據無損壓縮方法、解壓縮方法及裝置,所述整型數據壓縮方法包括位重組處理過程、數據塊劃分及基本信息存儲過程和編碼處理過程;所述整型數據解壓縮方法包括基本信息解析過程、解碼處理過程和位恢復處理過程;所述整型數據壓縮裝置包括位重組處理模塊、數據塊劃分及基本信息存儲模塊和編碼處理模塊;所述整型數據解壓縮裝置包括基本信息解析模塊、解碼處理模塊和位恢復處理模塊。本發明算法簡單、易于實現,編碼解碼效率高,壓縮效果好,可用于對音頻數據、地震勘探信號、地球物理測井波形數據和圖像數據等多種類型的整型數據進行無損壓縮和解壓縮。
文檔編號H03M7/30GK103067022SQ20121055486
公開日2013年4月24日 申請日期2012年12月19日 優先權日2012年12月19日
發明者蔡明 , 喬文孝, 鞠曉東, 車小花, 盧俊強 申請人:中國石油天然氣集團公司, 中國石油大學(北京)