美文网首页程序员
图像处理 无损压缩-哈夫曼编码(可变字长符号编码)

图像处理 无损压缩-哈夫曼编码(可变字长符号编码)

作者: kekeMemory | 来源:发表于2020-06-11 22:52 被阅读0次

    有损压缩

    概念

    按照压缩方法是否丢失信息分为有损压缩和无损压缩,有损压缩解压缩后的数据与原始数据完全相同。 解压缩后获得的数据是原始数据的副本,是一种不可逆压缩。

    主要算法

    消除编码冗余: 哈夫曼编码和算术编码。
    消除像素间冗余:LZW编码,位平面编码,行程编码和无损预测编码。

    哈夫曼编码

    定义

    哈夫曼编码,又称为霍夫曼编码,是一种字符编码。

    在计算机数据压缩处理中,霍夫曼编码使用变长编码表()对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现几率的方法得到的,出现几率高的字母使用较短的编码,反之出现几率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。

    性质

    • 可变字长编码(VLC)
    • 源符号出现的频率越高,使用的代码字长越少。
    • 一致的编码方法(也称为“熵编码方法”),用于数据的无损压缩。

    信息熵

    英文entoropy,反映图像中的平均信息量。

    定长和变长编码比较

    定长编码: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 的长度最短,符合出现概率高的字母使用较短的编码,因此是哈夫曼码。

    信息熵:反映图像中的平均信息量,用H(entoropy)表示,小于等于Lavg(average length)

    示例

    在这里插入图片描述

    生成哈夫曼编码

    在这里插入图片描述

    相关文章

      网友评论

        本文标题:图像处理 无损压缩-哈夫曼编码(可变字长符号编码)

        本文链接:https://www.haomeiwen.com/subject/fmzbtktx.html