有损压缩编码-哈夫曼(可变字长)
定义
哈夫曼编码,又称为霍夫曼编码,是一种字符编码。
在计算机数据压缩处理中,霍夫曼编码使用变长编码表()对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现几率的方法得到的,出现几率高的字母使用较短的编码,反之出现几率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
定长长和变长编码比较
定长编码:fixed length coding (FLC),如定长一字节或者定长二字节
变长编码: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 |
总结 根据最后编码长度,VLC2 的长度最短,符合出现概率高的字母使用较短的编码,因此是哈夫曼码。
信息熵:反映图像中的平均信息量