壓縮文件是否一層層壓縮自身 原理是什麼

首先科普一下壓縮分爲兩種:無損壓縮和有損壓縮。ide

無損壓縮的一個類比是侯寶林的相聲:編碼

「這是誰啊?」「是我您哪。」「你幹嘛去?」「我撒泡尿。」 -(壓縮)->「誰?」「我!」「抓?」「尿!」視頻

把複雜的話用簡單的話說出來,但保持原有的意思,這就是無損壓縮的基本原理。圖片

關於什麼是「保持原有的意思」,對此在信息論叫作「信息量保持不變」,嚴格的定義在此就不展開討論了,大概類比一下就是「可以毫無困難地恢復成原有信息」,再舉個例子it

「我家的門是紅色的」->「我家門紅色」,你只看後一句就知道前一句所要說的所有內容,這個就是毫無困難地、惟一地恢復成原有信息,可是class

「我家的門是紅色的」->「我家門色」,這時候你只看到後一句就永遠沒有辦法知道門究竟是什麼顏色的,這個就不屬於「保持原有意思」。音頻

那麼「保持原有意思」的壓縮能不能無限壓縮呢?顯然不能,好比上面的例子,你還有更簡單的辦法說出「誰?」「我。」「抓?」「尿!」麼?漢字的範疇估計是沒有了,在計算機中你能夠用更高效的編碼(好比霍夫曼編碼)的辦法來壓縮到更少的字節,可是,這個也是有極限的,就好像漢字裏的「誰?」「我。」「抓?」「尿!」同樣。爲何呢?咱們來用反證法證實之:假定壓縮不存在極限,任意大小的文件均可以壓縮到n個比特,那麼咱們知道,n個比特的二進制數最多表示2^n個不一樣的數字,而「任意大小的文件」有多少種選擇呢?顯然是無窮種。將無窮種的「任意大小的文件」,壓縮爲2^n個不一樣的數字,那麼必然存在多個文件被壓縮成一個數字的狀況。也就是說,對於壓縮後的一個數字,能夠恢復成的原有信息是不少個的,而這和「毫無困難地、惟一地恢復成原有信息」是矛盾的。因此假設是錯誤的,無損壓縮必然是存在一個極限的,而不能無限縮小下去。原理

 

那麼壓縮是否是必定要保持原有的意思呢?顯然不是,再舉個例子,咱們知道名著有「縮寫本」,一部百萬字的名著能夠縮寫成幾十萬字,可是能讓你看了以後仍知道大概的故事更改,這就是有損壓縮。其原理和上面的「重寫」不一樣,是「刪去」,好比一首歌曲,錄製的時候除了有伴奏和演唱的聲音以外,還有歌手的呼吸聲、錄音設備的摩擦聲、空氣流動的聲音等等,有損壓縮的原理就是在錄音之中把這些「可有可無」的信息去掉。目前經常使用的音頻、圖像和視頻編碼方法絕大部分有損壓縮的。顯然,這個壓縮的程度取決於你怎樣定義「可有可無的信息」:若是你在看一場電影的時候,以爲整個電影都極度無聊,只有某一個三秒鐘的場景中閃過的一個美女是你以爲值得看的,那麼整個電影基本上就都是「可有可無的信息了」,用這個標準,一場電影能夠被壓縮爲幾百K(那個美女的圖片的大小)。可是這在大多數人看來,已經不是原來意義上的電影了。二進制

 

因此,從理論上說的確能夠一次又一次,越壓縮越小的可能,可是隻有一種狀況,就是不斷地提升壓縮是的損失率,最終,當你捨棄全部的信息的時候,你能夠把文件壓縮到0字節。可是這種「爲了壓縮而壓縮」的作法,是沒有任何實際意義的。方法

相關文章
相關標籤/搜索