
數據壓縮是指在不損失有用信息的情況下,通過縮小數據量來減少存儲空間,提高其傳輸、存儲和處理效率,或者通過某種算法對數據進行重組,減少數據的冗余和存儲空間的技術方法。資料壓縮包括有損與無損壓縮。
在計算機科學和信息論中,數據壓縮或源編碼是一種根據特定編碼機制將信息表示為少于未編碼的數據位(或其他與信息有關的單元)的過程。舉例來說,如果我們將"compression"編碼為"comp",則本文可以使用更少的數據位來表示。一個流行的壓縮實例是ZIP文件格式,這種格式被很多計算機所使用,它不僅提供了壓縮功能,而且還可以作為一個存檔工具(Archiver)將多個文件存儲到同一個文件中。 對任何通信形式而言,壓縮數據通信只能在信息的發送方和接收方都能理解編碼機制時才能起作用。舉例來說,只有在接受方知道該文章需要用英語字符進行解釋時,該文章才有意義。類似地,只有接收者知道編碼方法時,才能理解壓縮數據。有些壓縮算法利用這一特點,在壓縮過程中對數據進行加密,如使用密碼加密,以確保只有獲得授權的一方才能正確獲取數據。 由于大多數真實世界中的數據具有統計冗余,數據壓縮得以實現。舉例來說,在英語中,字母“e”比字母“z”更常用,而在字母“q”后面加上“z”的可能性很小。非破壞壓縮算法通常使用統計冗余,因此可以更加簡潔,但是仍然能夠完整地表示發送者的數據。 若容許一定程度的保真度損失,進一步的壓縮仍可實現。舉例來說,人們在觀看圖片或電視圖像時,可能沒有注意到某些不完美的細節。類似地,兩個錄音采樣序列聽起來可能是一樣的,但實際上并不完全相同。有損壓縮算法使用更少的數字來表示圖像、視頻或音頻,但會產生很小的差異。 壓縮很重要,因為它有助于減少對諸如硬盤空間和連接帶寬等昂貴資源的消耗,但是壓縮也需要消耗信息處理資源,而這同樣會很昂貴。因此,設計一種數據壓縮機制需要兼顧壓縮能力、失真程度、所需計算資源和其他需要考慮的各種因素。 有些機制是可逆的,因此能夠恢復原始數據,這一機制被稱為無損數據壓縮;而另一些機制則是為了提高壓縮率而允許一定程度的數據損失,這一機制被稱為有損數據壓縮。 但是,通常有些文件是非破壞數據壓縮算法無法壓縮的,事實上,對于不包含可識別樣式的數據,壓縮算法是無法壓縮的。嘗試壓縮已經被壓縮的數據通常會產生實際的擴展數據,嘗試壓縮加密的數據通常也會產生同樣的結果。 事實上,損壞了的數據壓縮也可能最終無法正常工作。舉個特別的例子,壓縮算法每次刪除文件的最后一個字節,然后經過此算法持續壓縮直到文件變空,壓縮算法就無法繼續工作了。