基于字典編碼的數據壓縮算法的設計與實現課件_第1頁
基于字典編碼的數據壓縮算法的設計與實現課件_第2頁
基于字典編碼的數據壓縮算法的設計與實現課件_第3頁
基于字典編碼的數據壓縮算法的設計與實現課件_第4頁
基于字典編碼的數據壓縮算法的設計與實現課件_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2022/8/201數據壓縮的提出信息的時代解決方法提高硬件的制造工藝數據壓縮數據壓縮在一定的數據存儲空間要求下,將相對龐大的原始數據,重組為滿足前述空間要求的數據集合,使得從該數據集合中恢復出來的信息,能夠與原始數據相一致,或者能夠獲得與原始數據一樣的使用品質。 2022/8/202數據壓縮理論基礎信息論熵的提出一條信息中真正需要編碼的信息量用 0 和 1 組成的二進制數碼為含有 n 個符號的某條信息編碼,假設符號 Fn 在整條信息中重復出現的概率為 Pn,則該符號的熵也即表示該符號所需的二進制位數為:En = - log2( Pn )整條信息的熵也即表示整條信息所需的二進制位數為:E =

2、knEn信息壓縮的極限2022/8/203數據壓縮基本原理信息存在冗余用較少的位數表示較頻繁出現的符號技術構成模型得到字符或單詞在信息中出現的概率編碼精確地用模型計算出來的位數表示某個符號 壓縮 = 模型 + 編碼2022/8/204字典編碼基本思想數據本身包含有重復代碼 根據字典創建方式不同分為兩類:隱式字典查找正在壓縮的字符序列是否在以前輸入的數據中出現過,然后用已經出現過的字符串替代重復的部分,它的輸出僅僅是指向早期出現過的字符串的“指針”顯式字典從輸入的數據中創建一個“短語字典”,編碼數據過程中當遇到已經在字典中出現的“短語”時,編碼器就輸出這個字典中的短語的“索引號” 2022/8/

3、205基于字典壓縮算法簡介隱式字典顯示字典2022/8/206算法實現與改進借鑒LZW for GIF實現起來較容易實現方法的改進使用面向對象編程技術技術的“改進”零搜索動態編碼長度2022/8/207實現技術的選擇DelphiObject Pascal語言面向對象的開發工具,完全可視化方便快捷RAD工具2022/8/208實現簡介以類的形式實現編碼類解碼類使用生成對象主要流程GetBeginExecuteGetEnd2022/8/209類的定義TLZWEncode = class(TObject) private EncodeTable: array 0.LZWTABLESIZE - 1 o

4、f Word; / 編碼表 EncodePointer: array 0.LZWMAXCODES - 1 of LongWord; / 經過編碼的緩存 ExportBlock: Pointer; / 存放編碼后的數據指針(輸出緩存塊指針) ExportBlockPtr: array of Byte; / 該指針指向 ExportBlock ,用于訪問數組 InitBits: Integer; / 壓縮數據的起始位數 ClearCode: Integer; / 清除碼 EofCode: Integer; / 結束碼 PrefixCode: Integer; / 字頭碼 SuffixCode: I

5、nteger; / 字尾碼 Encode: Integer; / 壓縮編碼 RunBits: Integer; / 當前處理位 MaxCodeSize: Integer; / 當前處理最大編碼 FBegin: Boolean; / 開始處理標志 FExportSize: Integer; / 輸出數據塊大小 FExportIndex: Integer; / 輸出數據塊索引 FExportTotalSize: Integer; / 記錄輸出緩存塊大小 ShiftBits: Integer; / 用于位處理,作臨時位 ShiftCode: Integer; / 用于位處理,作臨時代碼 protec

6、ted procedure ExportData(AData: Integer); virtual; / 輸出數據(虛方法) public function GetExportPointer: Pointer; / 返回輸出指針 function GetExportSize: Integer; / 返回輸出大小 procedure GetBegin; / 置開始編碼標志 procedure GetEnd; / 置結束編碼標志 procedure Execute(Data: array of Byte; DataSize: Integer); virtual; / 執行編碼過程(虛方法) con

7、structor Create; destructor Destroy; override; end;2022/8/2010類的定義TLZWUnencode = class(TObject) private InitBits: Integer; / 壓縮數據的起始位數 ClearCode: Integer; / 清除碼 EofCode: Integer; / 結束碼 PrefixCode: Integer; / 字頭碼 SuffixCode: Integer; / 字尾碼 Encode: Integer; / 壓縮編碼 RunBits: Integer; / 當前處理位 MaxCodeSize

8、: Integer; / 當前處理最大編碼 ExportBlock: Pointer; / 存放編碼后的數據指針(輸出緩存塊指針) ExportBlockPtr: array of Byte; / 該指針指向 ExportBlock ,用于訪問數組 StackIndex: Integer; / 棧索引 StackTable: array 0.LZWSTACKBUFFERSIZE - 1 of Byte; / 棧表 PrefixTable: array 0.LZWMAXCODES - 1 of Word; / 字頭表 SuffixTable: array 0.LZWMAXCODES - 1 of

9、 Byte; / 字尾表 FExportSize: Integer; / 輸出數據塊大小 FExportIndex: Integer; / 輸出數據塊索引 FExportTotalSize: Integer; / 記錄輸出緩存塊大小 ShiftBits: Integer; / 用于位處理,作臨時位 ShiftCode: Integer; / 用于位處理,作臨時代碼 protected procedure ExportData(AData: Integer); virtual; / 輸出數據(虛方法) public function GetExportPointer: Pointer; / 返回

10、輸出指針 function GetExportSize: Integer; / 返回輸出大小 procedure GetBegin; / 開始解碼(分配輸出內存空間) procedure GetEnd; / 結束解碼(釋放輸出內存空間) procedure Execute(Data: array of Byte; DataSize: Integer); virtual; / 執行解碼過程(虛方法) constructor Create; destructor Destroy; override; end;2022/8/2011編碼流程變量初始化取出數據構造地址輸出字頭取編碼值重置字典加入字典增加處理位編碼結束字對未編碼數據未處理完達到最大編碼值未達到最大編碼值達到最大處理編碼值數據未處理完數據處理完畢數

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論