小科普:電腦圖像文件為什么要壓縮?
泡泡網顯卡頻道4月23日 圖像和視頻的壓縮技術應用廣泛,每天刷微博的圖片,盜版回來的小電影,無一不用壓縮技術。
壓縮的必要性
某天陳老師要錄動作大片,經過長期艱苦奮斗,他制成了這樣一段視頻:畫面大小1000×1000pixel,24位真彩色,每秒30幀,時長2小時。
如果不進行任何壓縮,存儲這段視頻需要1000*1000*24*30*60*120=5.184 ×1012 bit ≈ 648GB的空間。(2014年4月5日,500GB硬盤最低價格是299元~)
用4M寬帶下載這部大片,最少需要360小時 = 15天。
可見,要保障人民群眾的切身利益,壓縮技術非常有必要。
壓縮的可能性
就單幅圖像而言,壓縮的可能性是顯而易見的。
如上面三幅小圖,圖a每個形狀里面都填充著相同的顏色,圖b每一行的顏色是相同的,更過分的圖c整幅圖只填充了一種顏色。
壓縮前:第1個點灰色,第2個點灰色,第3個點灰色,第4個點灰色,第5個點灰色,第6個點灰色......第89個點灰色,第90個點黑色......
最簡單的壓縮后:第1到89個點灰色,第90個點黑色。
常見的壓縮標準
JPEG是廣泛使用的照片存儲格式,它適應人的視覺,用更多的數據來存儲人眼敏感的圖像低頻部分,用很少的數據存儲人眼不關心的高頻部分。維基百科有很詳盡的講解http://zh.wikipedia.org/wiki/JPEG
JPEG 2000是基于小波變換的圖像壓縮標準,可以獲得比JPEG更大的壓縮比,通常它被認為是未來取代JPEG的標準。
圖像壓縮的基本套路
圖像壓縮基本按照以下流程進行:
原圖像 -> 映射 -> 量化 -> 符號編碼 -> 存儲/傳輸 -> 符號解碼 -> 反映射 -> 圖像
映射(Mapper):對原圖像進行變換,使之更容易被壓縮。(比如傅里葉變換)
量化(Quantizer):量化是壓縮的主要圖像,主要也是它引入誤差的。比如有一個以2為單位的量化器,看到原圖像值是17,將它除2向下取整,量化得到8;圖像還原的時候,用8×2=16得到還原值,與真實值相差了1。
符號編碼(Symbol encoder):圖像已經變換量化完了,該為存儲和傳輸作準備了。符號編碼可以進一步地壓縮文件大小:
將重復出現次數多的數據,用簡短的符號進行編碼;出現次數少的數據,用較長的符號進行編碼;后面的哈夫曼(Huffman)編碼會詳細講到~
JPEG的壓縮套路
鑒于圖像壓縮的每個步驟都能有不同的方法,所以有必要制定統一的標準,使得圖像在每臺電腦每部手機中都能正常使用。
JPEG是其中一個標準,它的壓縮套路如下:
原圖像 -> 分解成一個個小圖像 -> 變換 -> 量化 -> 符號編碼 -> 壓縮后的圖像
分解圖像:JPEG會將一幅大圖像分解成8×8的小圖像。至于為什么是8×8呢,嗯,歡迎各位同學劇透;
變換:JPEG使用DCT變換(離散余弦變換),類似傅里葉變換,不過它是取實部。(不由感慨,學好“信號與系統”也是很有必要的...)
量化:JPEG通過各種除法來進行量化,不過對于不同重要程度的信息,它所除的數的大小會有所不同;
符號編碼:JPEG使用常見的哈夫曼(Huffman)編碼。
圖像還原,就是反過來進行這些步驟。
JPEG的實現方法比較簡單,小朋友們在家也能模仿。也因為簡單高效,所以JPEG的應用范圍相當廣泛。■
關注我們



