壓縮演算法原理
㈠ zip 的壓縮原理與實現
文件壓縮原理
我們使用計算機所做的事情大多都是對文件進行處理。每個文件都會佔用一定的磁碟空間,我們希望一些文件,尤其是暫時不用但又比較重要不能刪除的文件(如備份文件,有點像雞肋呀),盡可能少的佔用磁碟空間。但是,許多文件的存儲格式是比較鬆散的,這樣就浪費了一些寶貴的計算機存儲資源。這時,我們可以藉助壓縮工具解決這個問題,通過對原來的文件進行壓縮處理,使之用更少的磁碟空間保存起來,當需要使用時再進行解壓縮操作,這樣就大大節省了磁碟空間。當你要拷貝許多小文件時,通過壓縮處理可以提高執行效率。如果小文件很多,操作系統要執行頻繁的文件定位操作,需要花費很多的時間。如果先把這些小文件壓縮,變成一個壓縮文件後,再拷貝時就很方便了。由於計算機處理的信息是以二進制數的形式表示的,因此壓縮軟體就是把二進制信息中相同的字元串以特殊字元標記來達到壓縮的目的。為了有助於理解文件壓縮,請您在腦海里想像一幅藍天白雲的圖片。對於成千上萬單調重復的藍色像點而言,與其一個一個定義「藍、藍、藍……」長長的一串顏色,還不如告訴電腦:「從這個位置開始存儲1117個藍色像點」來得簡潔,而且還能大大節約存儲空間。這是一個非常簡單的圖像壓縮的例子。其實,所有的計算機文件歸根結底都是以「1」和「0」的形式存儲的,和藍色像點一樣,只要通過合理的數學計算公式,文件的體積都能夠被大大壓縮以達到「數據無損稠密」的效果。總的來說,壓縮可以分為有損和無損壓縮兩種。如果丟失個別的數據不會造成太大的影響,這時忽略它們是個好主意,這就是有損壓縮。有損壓縮廣泛應用於動畫、聲音和圖像文件中,典型的代表就是影碟文件格式mpeg、音樂文件格式mp3和圖像文件格式jpg。但是更多情況下壓縮數據必須准確無誤,人們便設計出了無損壓縮格式,比如常見的zip、rar等。壓縮軟體(compression software)自然就是利用壓縮原理壓縮數據的工具,壓縮後所生成的文件稱為壓縮包(archive),體積只有原來的幾分之一甚至更小。當然,壓縮包已經是另一種文件格式了,如果你想使用其中的數據,首先得用壓縮軟體把數據還原,這個過程稱作解壓縮。常見的壓縮軟體有winzip、winrar等
㈡ 壓縮的壓縮原理
利用演算法將文件有損或無損地處理,以達到保留最多文件信息,而令文件體積變小。壓縮文件的基本原理是查找文件內的重復位元組,並建立一個相同位元組的"詞典"文件,並用一個代碼表示,比如在文件里有幾處有一個相同的詞"中華人民共和國"用一個代碼表示並寫入"詞典"文件,這樣就可以達到縮小文件的目的軟體。由於計算機處理的信息是以二進制數的形式表示的,因此壓縮軟體就是把二進制信息中相同的字元串以特殊字元標記來達到壓縮的目的。為了有助於理解文件壓縮,請您在腦海里想像一幅藍天白雲的圖片。對於成千上萬單調重復的藍色像點而言,與其一個一個定義「藍、藍、藍……」長長的一串顏色,還不如告訴電腦:「從這個位置開始存儲1117個藍色像點」來得簡潔,而且還能大大節約存儲空間。這是一個非常簡單的圖像壓縮的例子。其實,所有的計算機文件歸根結底都是以「1」和「0」的形式存儲的,和藍色像點一樣,只要通過合理的數學計算公式,文件的體積都能夠被大大壓縮以達到「數據無損稠密」的效果。總的來說,壓縮可以分為有損和無損壓縮兩種。如果丟失個別的數據不會造成太大的影響,這時忽略它們是個好主意,這就是有損壓縮。有損壓縮廣泛應用於動畫、聲音和圖像文件中,典型的代表就是影碟文件格式mpeg、音樂文件格式mp3和圖像文件格式jpg。但是更多情況下壓縮數據必須准確無誤,人們便設計出了無損壓縮格式,比如常見的zip、rar等。壓縮軟體(compression software)自然就是利用壓縮原理壓縮數據的工具,壓縮後所生成的文件稱為壓縮包(archive),體積只有原來的幾分之一甚至更小。當然,壓縮包已經是另一種文件格式了,如果你想使用其中的數據,首先得用壓縮軟體把數據還原,這個過程稱作解壓縮。常見的壓縮軟體有winzip、winrar等。

㈢ 壓縮演算法原理
哈夫曼
哈夫曼編碼是無損壓縮當中最好的方法。它使用預先二進制描述來替換每個符號,長度由特殊符號出現的頻率決定。常見的符號需要很少的位來表示,而不常見的符號需要很多為來表示。
哈夫曼演算法在改變任何符號二進制編碼引起少量密集表現方面是最佳的。然而,它並不處理符號的順序和重復或序號的序列。
2.1 原理
我不打算探究哈夫曼編碼的所有實際的細節,但基本的原理是為每個符號找到新的二進製表示,從而通常符號使用很少的位,不常見的符號使用較多的位。
簡短的說,這個問題的解決方案是為了查找每個符號的通用程度,我們建立一個未壓縮數據的柱狀圖;通過遞歸拆分這個柱狀圖為兩部分來創建一個二叉樹,每個遞歸的一半應該和另一半具有同樣的權(權是 ∑ N K =1 符號數 k , N 是分之中符號的數量,符號數 k 是符號 k出現的次數 )
這棵樹有兩個目的:
1. 編碼器使用這棵樹來找到每個符號最優的表示方法
2. 解碼器使用這棵樹唯一的標識在壓縮流中每個編碼的開始和結束,其通過在讀壓縮數據位的時候自頂向底的遍歷樹,選擇基於數據流中的每個獨立位的分支,一旦一個到達葉子節點,解碼器知道一個完整的編碼已經讀出來了。
壓縮後的數據流是 24 位(三個位元組),原來是 80 位( 10 個位元組)。當然,我應該存儲哈夫曼樹,這樣解碼器就能夠解碼出對應的壓縮流了,這就使得該例子中的真正數據流比輸入的流數據量大。這是相對較短的數據上的副作用。對於大數據量來說,上面的哈夫曼樹就不佔太多比例了。
解碼的時候,從上到下遍歷樹,為壓縮的流選擇從左 / 右分支,每次碰到一個葉子節點的時候,就可以將對應的位元組寫到解壓輸出流中,然後再從根開始遍歷。
2.2 實現
哈夫曼編碼器可以在基本壓縮庫中找到,其是非常直接的實現。
這個實現的基本缺陷是:
1. 慢位流實現
2. 相當慢的解碼(比編碼慢)
3. 最大的樹深度是 32 (編碼器在任何超過 32 位大小的時候退出)。如果我不是搞錯的話,這是不可能的,除非輸出的數據大於 2 32位元組。
另一方面,這個實現有幾個優點:
1. 哈夫曼樹以一個緊密的形式每個符號要求 12 位(對於 8 位的符號)的方式存儲,這意味著最大的頭為 384 。
2. 編碼相當容易理解
哈夫曼編碼在數據有噪音的情況(不是有規律的,例如 RLE )下非常好,這中情況下大多數基於字典方式的編碼器都有問題。
㈣ 軟體壓縮的原理是什麼
壓縮的原理是把文件的二進制代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該文件的空間。
由於計算機處理的信息是以二進制數的形式表示的,因此壓縮軟體就是把二進制信息中相同的字元串以特殊字元標記來達到壓縮的目的。
為了有助於理解文件壓縮,請在腦海里想像一幅藍天白雲的圖片。對於成千上萬單調重復的藍色像點而言,與其一個一個定義「藍、藍、藍……」長長的一串顏色,還不如告訴電腦:「從這個位置開始存儲1117個藍色像點」來得簡潔,而且還能大大節約存儲空間。
這是一個非常簡單的圖像壓縮的例子。其實,所有的計算機文件歸根結底都是以「1」和「0」的形式存儲的,和藍色像點一樣,只要通過合理的數學計算公式,文件的體積都能夠被大大壓縮以達到「數據無損稠密」的效果。

(4)壓縮演算法原理擴展閱讀
WinRAR能備份數據,減少 E-mail附件的大小,解壓縮從Internet上下載的 RAR、ZIP 和其他格式的壓縮文件,並能創建 RAR 和 ZIP 格式的壓縮文件。在購買之前,你可以下載試用版本。
WINRAR在壓縮率和速度方面都有很好的表現。其壓縮率比高,3.x 採用了更先進的壓縮演算法,是現在壓縮率較大、壓縮速度較快的格式之一。 3.3 增加了掃描壓縮文件內病毒、解壓縮「增強壓縮」 ZIP 壓縮文件的功能, 升級了分卷壓縮的功能等。
參考資料來源:網路-壓縮文件
㈤ 壓縮文件是什麼原理
壓縮原理需要專業人士來解釋,我只了解一點:
(1)多媒體文件(視頻文件、音頻文件、MP3等),絕大多數已是經過壓縮或高度壓縮處理過的,無法再作進一步的壓縮或者根本無法壓縮,就目前的壓縮技術來看,即使可以再進一步壓縮,必定會以犧牲視頻文件、音頻文件的畫質、音質為代價;
(2)壓縮比大的文件,多半是指那些文本文件或一些數據表格文件,這些文件中重復的數據、文字信息比較多,壓縮軟體可以通過其演算法,把重復的信息全部歸納一個信息處理,盡可能縮小文件的大小,解壓時再將重復的信息通過處理回歸原位。對於這些文本文件,你不可能為縮小大小,而事先刪除那些重復的數據或文字,如果這樣,你恐怕根本就無法使用了。所以,只要文件內部重復的數據、文字信息越多,其壓縮比就會越高
㈥ 數據壓縮的基本原理
數據壓縮的基本原理
--------------------------------------------------------------------------------
數據壓縮技術就是對原始數據進行數據編碼或壓縮編碼。
目前常用的壓縮編碼有:冗餘壓縮法(無損壓縮法、熵編碼)和熵壓縮法(有損壓縮法)兩類。
無損壓縮是可逆的;有損壓縮是不可逆的。
--------------------------------------------------------------------------------
變長編碼
使用長度可變的代碼來對以不同頻率出現的樣本進行編碼。
1·Huffman編碼
Huffman編碼又稱最佳編碼。
Huffman編碼過程是:
*將信源符號按概率遞減順序排列;
*把兩個最小的概率加起來,作為新符號的概率;
*重復上述兩步驟,直到概率的和達到1為止;
*在每次合並消息時,將被合並的消息賦予1和0或賦予0和1;
*尋找從每一信源符號到概率為1的路經,記錄下路經上的1和0;
*對每一符號寫出從碼樹的根到終結點1、0序列。
例:對信源
[X1,X2,X3,X4,X5,X6]=[0.25,0.25,0.20,0.15,0.10,0.05]
進行Huffman編碼。
其中:X1=01;X2=10;X3=11;X4=000;X5=0010;X6=0011。
2·算術編碼
算術編碼是一種二元編碼。
這種編碼方法是在不考慮信源統計的情況下,只要監視一小段時間內碼字出現的頻率,不管統計是平穩的或非平穩的,編碼的碼率總能趨近於信源熵值,每次迭代的編碼演算法只處理一個數據符號,並且只有算術運算。
對二進制編碼來說,信源符號只有兩個。在算術編碼的初級階段,可設一個大概率Pe和小概率Qe,然後對被編碼比特流符號進行判斷。
其步驟:
*設編碼初始化子區間為[0,1],Qe從0算起,則Pe=1-Qe。
*確定子區間起始位置:子區間起始位置=前子區間的長度+ 當前符號的區間左端X前子區間長度
*確定新子區間長度:新子區間長度=前子區間的長度X當前符號的概率
*隨著被編碼數據流符號的輸入,子區間逐漸縮小,
*最後得到的子區間長度決定了表示該區域內的某一個數所需的位數。
例:P42
--------------------------------------------------------------------------------
預測編碼
(自習)
--------------------------------------------------------------------------------
變換編碼
變換編碼是指對信號進行變換後在編碼。
例如:
典型的編碼結構是:
--------------------------------------------------------------------------------
模型編碼
模型編碼是指採用模型的方法對傳輸的圖像進行參數估測。
模型編碼有:隨機馬爾可夫場和分形圖像編碼。
1·分形的概念
分形的含義是其組成部分以某種方式與整體相似的形(一類無規則、混亂而復雜),其局部與整體有相似性的體系,即:自相似性體系。
2·分形編碼
*基本原理:分形的方法是把一幅數字圖像,通過一些圖像處理技術將原始圖像分成一些子圖像,然後在分形集中查找這樣的子圖像。分形集存儲許多迭代函數,通過迭代函數的反復迭代,可以恢復原來的子圖像。
分形編碼壓縮的步驟:
第一步:把圖像劃分為互不重疊的、任意大小的的D分區;
第二步:劃定一些可以相互重疊的、比D分區大的R分區;
第三步:為每個D分區選定仿射變換表。
分形編碼解壓步驟:
首先從文件中讀取D分區劃分方式的信息和仿射變換系數等數據;
然後劃定兩個同樣大小的緩沖區給D圖像和R圖像,並把R初始化到任一初始階段;
根據仿射變換系數把其相應的R分區做仿射變換,並用變換後的數據取代該D分區的原有數據;
對D中所有的D分區都進行上述操作,全部完成後就形成一個新的D圖像;
再把新D圖像的內容拷貝到R中,把新R當作D,D當作R,重復操作(迭代)。
。分形編碼的特點:
壓縮比高,壓縮後的文件容量與圖像像素數無關,在壓縮時時間長但解壓縮速度快。
--------------------------------------------------------------------------------
㈦ 什麼是壓縮演算法
LZW壓縮演算法的基本概念:LZW壓縮有三個重要的對象:數據流(CharStream)、編碼流(CodeStream)和編譯表(String Table)。在編碼時,數據流是輸入對象(文本文件的據序列),編碼流就是輸出對象(經過壓縮運算的編碼數據);在解碼時,編碼流則是輸入對象,數據流是輸出對象;而編譯表是在編碼和解碼時都須要用藉助的對象。字元(Character):最基礎的數據元素,在文本文件中就是一個位元組,在光柵數據中就是一個像素的顏色在指定的顏色列表中的索引值;字元串(String):由幾個連續的字元組成; 前綴(Prefix):也是一個字元串,不過通常用在另一個字元的前面,而且它的長度可以為0;根(Root):一個長度的字元串;編碼(Code):一個數字,按照固定長度(編碼長度)從編碼流中取出,編譯表的映射值;圖案:一個字元串,按不定長度從數據流中讀出,映射到編譯表條目. LZW壓縮演算法的基本原理:提取原始文本文件數據中的不同字元,基於這些字元創建一個編譯表,然後用編譯表中的字元的索引來替代原始文本文件數據中的相應字元,減少原始數據大小。看起來和調色板圖象的實現原理差不多,但是應該注意到的是,我們這里的編譯表不是事先創建好的,而是根據原始文件數據動態創建的,解碼時還要從已編碼的數據中還原出原來的編譯表.
