有損壓縮
概念
按照壓縮方法是否丟失信息分為有損壓縮和無損壓縮,有損壓縮解壓縮后的數(shù)據(jù)與原始數(shù)據(jù)完全相同。 解壓縮后獲得的數(shù)據(jù)是原始數(shù)據(jù)的副本,是一種不可逆壓縮。
主要算法
消除編碼冗余: 哈夫曼編碼和算術(shù)編碼。
消除像素間冗余:LZW編碼,位平面編碼,行程編碼和無損預(yù)測編碼。
哈夫曼編碼
定義
哈夫曼編碼,又稱為霍夫曼編碼,是一種字符編碼。
在計算機數(shù)據(jù)壓縮處理中,霍夫曼編碼使用變長編碼表()對源符號(如文件中的一個字母)進行編碼,其中變長編碼表是通過一種評估來源符號出現(xiàn)幾率的方法得到的,出現(xiàn)幾率高的字母使用較短的編碼,反之出現(xiàn)幾率低的則使用較長的編碼,這便使編碼之后的字符串的平均長度、期望值降低,從而達到無損壓縮數(shù)據(jù)的目的。
性質(zhì)
- 可變字長編碼(VLC)
- 源符號出現(xiàn)的頻率越高,使用的代碼字長越少。
- 一致的編碼方法(也稱為“熵編碼方法”),用于數(shù)據(jù)的無損壓縮。
信息熵
英文entoropy,反映圖像中的平均信息量。
定長和變長編碼比較
定長編碼:fixed length coding (FLC),如定長一字節(jié)或者定長二字節(jié)
變長編碼:virable length coding(VLC)
示例
| Symbol | Probability | FLC | VLC1 | VLC2 | VLC3 |
|---|---|---|---|---|---|
| K | 1/2 | 00 | 0 | 111 | 0 |
| L | 1/4 | 01 | 10 | 110 | 1 |
| P | 1/8 | 10 | 110 | 10 | 01 |
| C | 1/8 | 11 | 111 | 0 | 10 |
對 KLKPLCKK 用上述四個方式編碼
| 方式 | 表示 | 編碼長度length |
|---|---|---|
| FLC | 00 01 00 10 11 00 00 | 2*8 =16 bits |
| VLC1 | 0 10 0 110 10 111 0 0 | 1+2+1+3+2+3+2 = 14 bits |
| VLC2 | 111 110 111 10 110 0 111 111 | 3+3+3+2+3+1+3+3 = 21 bits |
| VLC3 | 0 1 0 01 1 10 0 0 | 1+1+1+2+1+2+1+1 = 10 bits |
總結(jié) 根據(jù)最后編碼長度,VLC2 的長度最短,符合出現(xiàn)概率高的字母使用較短的編碼,因此是哈夫曼碼。
信息熵:反映圖像中的平均信息量,用H(entoropy)表示,小于等于Lavg(average length)
示例
在這里插入圖片描述
生成哈夫曼編碼
在這里插入圖片描述