壓縮

壓縮

計算機術語
壓縮的定義是如果您從互聯網上下載了許多程序和文件,可能會遇到很多ZIP文件。這種壓縮機制是一種很方便的發明,尤其是對網絡用戶,因為它可以減小文件中的比特和字節總數,使文件能夠通過較慢的互聯網連接實現更快傳輸,此外還可以減少文件的磁盤占用空間。在下載了文件後,計算機可使用WinZip或Stuffit這樣的程序來展開文件,将其複原到原始大小。如果一切正常,展開的文件與壓縮前的原始文件将完全相同。
    中文名:壓縮 外文名:compression 所屬學科:計算機課程 術語分類:計算機術語 目的:節省保存空間和傳輸時間 按文件分類:圖片壓縮、文本壓縮 按性質分類:有損壓縮、無損壓縮

簡介

壓縮(compression)是為了減少數據大小以節省保存空間和傳輸的事件。為了數據的傳輸,壓縮能夠作用于單獨的數據内容或者所有的傳輸單元(包括數據頭),這取決于一些特定的因素。

内容壓縮很簡單,它就是移除多餘的空白字符,插入單個的重複字符指出一個字符串中重複的字符,以及将小型的位串用頻繁使用的字符替代。這種類型的壓縮能夠将文本文件的大小減少50%。壓縮由使用特定公式和算法的程序來執行,它确定如何壓縮和解壓數據。

重複壓縮

有兩種形式的重複存在于計算機數據中,zip就是對這兩種重複進行了壓縮。

第一種

一種是短語形式的重複,即三個字節以上的重複,對于這種重複,zip用兩個數字:1.重複位置距當前壓縮位置的距離;2.重複的長度,來表示這個重複,假設這兩個數字各占一個字節,于是數據便得到了壓縮,這很容易理解。

一個字節有0-255共2560種可能的取值,三個字節有256*256*256共一千六百多萬種可能的情況,更長的短語取值的可能情況以指數方式增長,出現重複的概率似乎極低,實則不然,各種類型的數據都有出現重複的傾向,一篇論文中,為數不多的術語傾向于重複出現;一篇小說,人名和地名會重複出現;一張上下漸變的背景圖片,水平方向上的像素會重複出現;程序的源文件中,語法關鍵字會重複出現(我們寫程序時,多少次前後copy、paste?),以幾十K為單位的非壓縮格式的數據中,傾向于大量出現短語式的重複。經過上面提到的方式進行壓縮後,短語式重複的傾向被完全破壞,所以在壓縮的結果上進行第二次短語式壓縮一般是沒有效果的。

第二種

第二種重複為單字節的重複,一個字節隻有256種可能的取值,所以這種重複是必然的。其中,某些字節出現次數可能較多,另一些則較少,在統計上有分布不均勻的傾向,這是容易理解的,比如一個ASCII文本文件中,某些符号可能很少用到,而字母和數字則使用較多,各字母的使用頻率也是不一樣的,據說字母e的使用概率最高;許多圖片呈現深色調或淺色調,深色(或淺色)的像素使用較多(這裡順便提一下:png圖片格式是一種無損壓縮,其核心算法就是zip算法,它和zip格式的文件的主要區别在于:作為一種圖片格式,它在文件頭處存放了圖片的大小、使用的顔色數等信息);上面提到的短語式壓縮的結果也有這種傾向:重複傾向于出現在離當前壓縮位置較近的地方,重複長度傾向于比較短(20字節以内)。這樣,就有了壓縮的可能:給256種字節取值重新編碼,使出現較多的字節使用較短的編碼,出現較少的字節使用較長的編碼,這樣一來,變短的字節相對于變長的字節更多,文件的總長度就會減少,并且,字節使用比例越不均勻,壓縮比例就越大。

常用的壓縮軟件和壓縮格式

常用壓縮軟件

WinMount、WinRAR、WinZip、7-Zip、coolrar

常見壓縮文件格式

主要有:rar,zip,tar,cab,uue,jar,iso,z,7-zip,ace,lzh,arj,gzip,bz2等壓縮文件。

經過壓縮軟件壓縮的文件叫壓縮文件,壓縮的原理是把文件的二進制代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0的寫法60,來減少該文件的空間。

1.JAR:JAR文件就是Java.Archive.File,顧名思意,它的應用是與Java息息相關的,是Java的一種文檔格式。JAR文件非常類似ZIP文件——準确的說,它就是ZIP文件,所以叫它文件包。JAR文件與ZIP文件唯一的區别就是在JAR文件的内容中,包含了一個META-INF/MANIFEST.MF文件,這個文件是在生成JAR文件的時候自動創建的。

2.ZIP:ZIP應該算是最常見的壓縮文件格式了,你甚至不需要單獨為它安裝一個壓縮或者解壓縮軟件,因為我們使用的Windows系統以及集成了對ZIP壓縮格式的支持。

3.RAR:雖然ZIP在壓縮文件格式中地位很高,但相當多的下載網站都選擇了用RAR格式來壓縮他們的文件,最根本的原因就在于RAR格式的文件壓縮率比ZIP更高。

4.7Z:7Z作為壓縮格式的後起新秀,7Z有着比RAR更高的壓縮率,能夠将文件壓縮的更加小巧。不過因為RAR格式已經高度普及,又沒有網絡普及的“天時”相助,7Z想要取代RAR的地位還是相當不容易的。

5.CAB:CAB是微軟的一種安裝文件壓縮格式,主要應用于軟件的安裝程序中。因為涉及到安裝程序,所以cab文件中包含的文件通常都不是簡單的直接壓縮,而是對文件名等都進行了處理,所以雖然可以對其直接解壓縮,但解壓後得到的文件通常都無法直接使用。

6.ISO:很多朋友都認為ISO是一種壓縮格式,這源于WinRAR添加了對ISO格式“解壓”的支持。而實際上,ISO并不是壓縮格式,它之中所包含的文件也并沒有經過壓縮。ISO隻是一種光盤的鏡像格式,完全複制并保存了光盤上的内容而已。所謂的對ISO“解壓”的過程,不過就是對ISO内文件的提取過程。

7.TAR:tar為後辍的文件能用WinZip或WinRar打開,是因為WinZip或WinRar對.tar文件進行了關聯,也就是指可以用相應的解壓軟件将其解壓.tar是linux下較為常用的壓縮文件的格式,并不是什麼數據庫文件。

6.UUE:uue是一種在遇到郵件編碼混合引起亂碼的情況下比較有用的壓縮格式,可以用winzip或者winrar打開。

上面我們主要隻介紹了常用的壓縮文件。

壓縮基本原理

概述

如果您從互聯網上下載了許多程序和文件,可能會遇到很多ZIP文件。這種壓縮機制是一種很方便的發明,尤其是對網絡用戶,因為它可以減小文件中的比特和字節總數,使文件能夠通過較慢的互聯網連接實現更快傳輸,此外還可以減少文件的磁盤占用空間。在下載了文件後,計算機可使用WinZip或Stuffit這樣的程序來展開文件,将其複原到原始大小。如果一切正常,展開的文件與壓縮前的原始文件将完全相同。乍一聽好像很神秘:您是怎樣減少比特和字節的數量并将它們原封不動地還原回去的呢?等一切水落石出之後,您會發現這個過程背後的基本理念其實非常簡單明了。在本文中,我們将讨論這種通過簡單壓縮來明顯減小文件的方法。

大多數計算機文件類型都包含相當多的冗餘内容——它們會反複列出一些相同的信息。文件壓縮程序就是要消除這種冗餘現象。與反複列出某一塊信息不同,文件壓縮程序隻列出該信息一次,然後當它在原始程序中出現時再重新引用它。

舉例

以我們熟悉的信息類型——單詞——為例子。

肯尼迪(JohnF.Kennedy)在1961年的就職演說中曾說過下面這段著名的話:

Asknotwhatyourcountrycandoforyou——askwhatyoucandoforyourcountry.(不要問國家能為你做些什麼,而應該問自己能為國家做些什麼。)

這段話有17個單詞,包含61個字母、16個空格、1個破折号和1個句點。如果每個字母、空格或标點都占用1個内存單元,那麼文件的總大小為79個單元。為了減小文件的大小,我們需要找出冗餘的部分。

我們立刻發現,如果忽略大小寫字母間的區别,這個句子幾乎有一半是冗餘的。九個單詞(ask、not、what、your、country、can、do、for、you)幾乎提供了組成整句話所需的所有東西。為了構造出另一半句子,我們隻需要拿出前半段句子中的單詞,然後加上空格和标點就行了。大多數壓縮程序使用基于自适應字典的LZ算法來縮小文件。“LZ”指的是此算法的發明者Lempel和Ziv,“字典”指的是對數據塊進行歸類的方法。

排列字典的機制有很多種,它也可以像編号列表那樣簡單。在我們檢查肯尼迪這句著名講話時,可以挑出重複的單詞,并将它們放到編号索引中。然後,我們直接寫入編号而不是寫入整個單詞。

結論

因此,如果我們的字典是:

ask

what

your

country

can

do

for

you

我們的句子就應該是這樣的:

1not2345678--12856734

如果您了解這種機制,那麼隻需使用該字典和編号模式即可輕松重新構造出原始句子。這就是在展開某個下載文件時,計算機中的解壓縮程序所做的工作。你可能還遇到過能夠自行解壓縮的壓縮文件。若要創建這種文件,編程人員需要在被壓縮的文件中設置一個簡單的解壓縮程序。在下載完畢後,它可以自動重新構造出原始文件。

但是使用這種機制究竟能夠節省多少空間呢?“1not2345678——12856734”當然短于“Asknotwhatyourcountrycandoforyou--askwhatyoucandoforyourcountry.”,但應注意的是,我們需要随文件一起保存這個字典。

在實際壓縮方案中,計算出各種文件需求是一個相當複雜的過程。讓我們回過頭考慮一下上面的例子。每個字符和空格都占用1個内存單元,整個原句要占用79個單元。壓縮後的句子(包括空格)占用了37個單元,而字典(單詞和編号)也占用了37個單元。也就是說,文件的大小為74個單元,因此我們并沒有把文件大小減少很多。

但這隻是一個句子的情況!可以想象的是,如果用該壓縮程序處理完肯尼迪講話的其餘部分,我們會發現這些單詞以及其他單詞重複了更多次。而且,正如下一節所言,為了得到盡可能高的組織效率,可以對字典進行重寫。

在上一個的例子中,我們挑出了所有重複的單詞并将它們放在一個字典中。對于我們來說,這是最顯而易見的字典編寫方法。但是壓縮程序卻不這樣認為:它對單詞沒有概念——它隻會尋找各個模式。為了盡可能減小文件的大小,它會仔細挑選出最優模式。

如果從這個角度處理該句子,我們最終會得到一個完全不同的字典。

如果壓縮程序掃描肯尼迪的這句話,它遇到的第一個冗餘部分隻有幾個字母長。在asknotwhatyour中,出現了一個重複的模式,即字母t後面跟一個空格——在not和what中。如果壓縮程序将此模式寫入字典,則每次出現“t”後面跟一個空格的情況時,它會寫入一個“1”。但是在這個短句中,此模式的出現次數不夠多,不足以将其保留為字典中的一個條目,因此程序最終會複蓋它。

程序接下來注意到的内容是ou,在your和country中都出現了它。如果這是一篇較長的文檔,将此模式寫入字典會節省大量空間——在英語中ou是一個十分常見的字母組合。但是在壓縮程序看完整個句子後,它立即發現了一個更好的字典條目選擇:不僅ou發生了重複,而且your和country整個單詞都發生了重複,并且它們實際上是作為一個短語yourcountry一起發生重複的。在本例中,程序會用yourcountry條目複蓋掉字典中的ou條目。

短語candofor也發生了重複,一次後面跟着your,另一次跟着you,因此我們又發現candoforyou也是一種重複模式。這樣,我們可以用一個數字來代替15個字符(包含空格),而yourcountry隻允許我們用一個數字代替13個字符(包含空格),所以程序會用rcountry條目複蓋yourcountry條目,然後再寫入一個單獨的candoforyou條目。程序通過這種方式繼續工作,挑出所有重複的信息,然後計算應該将哪一種模式寫入字典。基于自适應字典的LZ算法中的“自适應”部分指的就是這種重寫字典的能力。程序執行此工作的過程實際上非常複雜。

無論使用什麼方法,這種深入搜索機制都能比僅僅挑出單詞這種方法更有效率地對文件進行壓縮。如果使用我們上面提取出的模式,然後用“__”代替空格,最終将得到下面這個更大的字典:

ask__

what__­

you

r__country

__can__do__for__you

而句子則較短:

“1not__2345__--__12354”

句子占用18個内存單元,字典占用41個單元。所以,我們将文件總大小從79個單元壓縮到了59個單元!這僅僅是壓縮句子的一種方法,而且不一定是最高效的方法。

圖像壓縮技術

介紹

圖像壓縮技術是在傳遞圖像時壓縮信息量,經過還原仍能看到原來的圖像的一種技術。未經壓縮的圖形、圖像和音頻數據需要非常客觀的存儲空間,即便使用光盤存儲技術,末壓縮過的視頻也常常是不實用的。在數字圖像監控系統中,需要處理大量的視頻數據,因而圖像的壓縮編碼和解碼顯得十分重要。現在已有多種壓縮方法用于數字監控系統,目前比較普遍使用的有:JPEG(對單幅圖像)、H.261(P×64)、MPEG(用于視頻用于視頻和音頻)。

技術分類

圖像壓縮技術可歸于不同類型。對于它們在多媒體系統中的應用,我們可用源、熵和混合編碼來分辨它們。熵編碼是無損編碼,而源編碼是有損壓縮,大部分多媒體系統使用混合技術,即将兩種技術混合在一起。使用熵編碼不考慮媒體的特殊性質。數據流的壓縮被考慮成簡單的數字序列,數據的相關性不予考慮。熵編碼是一個無損壓縮的例子,因為解壓縮過程完全恢複了原數據。行程編碼就是一個熵編碼的例子,常被用作文件系統的數據壓縮。源編碼考慮了數據的上下文的關系。源編碼的壓縮率取決于數據内容。對于有損壓縮技術,源數據流和編碼後的數據流之間存在着單向關系,數據流相似但不相同,不同的源編碼技術充分利用了特定媒體的特性。

目的

圖像數據壓縮的目的是消除圖像中的大量冗餘信息,用盡可能少的字節數來表示原始數據,以提高圖像傳輸的效率,減少圖像的存儲容量。

壓縮類别

有損壓縮

有損壓縮是利用了人類對圖像或聲波中的某些頻率成分不敏感的特性,允許壓縮過程中損失一定的信息;雖然不能完全恢複原始數據,但是所損失的部分對理解原始圖像的影響縮小,卻換來了大得多的壓縮比,即指使用壓縮後的數據進行重構,重構後的數據與原來的數據有所不同,但不影響人對原始資料表達的信息造成誤解。有損壓縮适用于重構信号不一定非要和原始信号完全相同的場合。圖像和聲音的壓縮(因為其中包含的數據往往多于我們的視覺系統和聽黨系統所能接收的信息,丢掉一些數據而不至于對聲音或者圖像所表達的意思産生誤解但可大大提高壓縮比)。有損壓縮廣泛應用于語音,圖像和視頻數據的壓縮。

無損壓縮

無損壓縮格式則是利用數據的統計冗餘進行壓縮,可完全恢複原始數據而不引起任何失真,但壓縮率是受到數據統計冗餘度的理論限制,一般為2:1到5:1。這類方法廣泛用于文本數據,程序和特殊應用場合的圖像數據(如指紋圖像,醫學圖像等)的壓縮。即指使用壓縮後的數據進行重構(或者叫做還原,解壓縮),重構後的數據與原來的數據完全相同;無損壓縮用于要求重構的信号與原始信号完全緻的場合。

區别

1.還原性上的區别:無損壓縮就是可以完全還原的;有損壓縮還原後不能和原來的文件一樣,有一定的損耗的。n

2.壓縮率上的區别:無損壓縮壓縮率是受到數據統計冗餘度的理論限制,一般為2:1到5:1;有損壓縮利用了人類對圖像或聲波中的某些頻率成分不敏感的特性,允許壓縮過程中損失一定的信息,雖然不能完全恢複原始數據,但是所損失的部分對理解原始圖像的影響縮小,卻換來了大得多的壓縮比最高可達200:1甚至更多。n

3.壓縮文件格式上的區别:mp3、divX、Xvid、jpeg、rm、rmvb、wma、wmv等格式都是有損壓縮;無損壓縮格式常用的有APE、FLAC、TAK、WavPack、TTA等。

4.壓縮原理上的區别:有損壓縮有兩種的基本機制,一種是有損變換編解碼,首先對圖像或者聲音進行采樣、切成小塊、變換到一個新的空間、量化,然後對量化值進行熵編碼。另外一種是預測編解碼,先前的數據以及随後解碼數據用來預測當前的聲音采樣或者圖像幀,預測數據與實際數據之間的誤差以及其它一些重現預測的信息進行量化與編碼。無損壓縮原理有行程編碼、霍夫曼編碼和算術編碼等。

5.應用領域上的區别:有損壓縮廣泛應用于語音,圖像和視頻數據的壓縮;無損壓縮受壓縮比的限制暫時隻用于文本數據,程序和特殊應用場合的圖像數據(如指紋圖像,醫學圖像等)的壓縮,但是無損壓縮格式的前景無疑是光明的,随着時間的推移,限制無損格式的種種因素将逐漸被消除,比如硬盤容量的不斷增加,機械硬盤1TB已成主流,固态硬盤200GB也将普及,無損格式占用空間大的問題将不再是問題,而速度更快的解碼芯片也将被開發出來,相信會有越來越多的硬盤随身聽支持無損格式,在不久的将來,連閃存随身聽的容量都要以TB來計算時,為了追求更高的音質,無損壓縮格式會越來越被人重視。

上一篇:推力軸承

下一篇:2688代購點

相關詞條

相關搜索

其它詞條