Lossless Compression Algorithms¶
约 543 个字 20 张图片 预计阅读时间 3 分钟
Introduction and Basics of Information Theory¶
Data Compression Scheme¶
- Data Compression = B0 / B1
- B0: Original Data
- B1: Compressed Data
一般情况下,压缩比>1。
Basics of Information Theory¶
编码的平均码长一定会大于等于信息的熵。
Lossless Coding Algorithms¶
Run-Length Encoding (RLE)¶
另一种编码,第一位为0的个数
Variable-Length Coding¶
熵揭示了信源的信息含量。变长编码(VLC)作为最经典的熵编码方法之一,涵盖香农-范诺算法、霍夫曼编码及自适应霍夫曼编码等。
字典编码、游程编码、算术编码不属于熵编码。
Shannon-Fano Algorithm¶
自上而下的编码方法。平衡树
Huffman Coding¶
自下而上的编码方法。
-
哈夫曼编码是前缀码(Prefix Code),任意有效编码都不是其他编码的前缀。
-
对于给定概率分布,哈夫曼编码是平均码长最短的前缀码,满足最小冗余特性。
证明
进一步提升编码效率:对符号串进行编码。
Extended Huffman Coding¶
Example
Adaptive Huffman Coding¶
编解码过程中,随着符号的出现频率发生变化,哈夫曼树也随之动态调整。
Dictionary-Based Coding¶
具体是指LZW算法。我们的GIF格式就是使用LZW算法进行压缩的。
对可能的符号串进行编码。s相当于栈,如果s+c在字典中,就继续往后读,直到找不到为止;如果找不到,就将s+c加入字典,并编码。
Arithmetic Coding¶
编码¶
对CAEE$进行编码。
最后从0.33184-0.3322之间的数中任意取一个数作为编码。
解码¶
先看处于哪个区间,然后找到对应的符号。处理完一个符号后,将Value=(Value-Range_low)/Range
,然后继续。
Lossless Image Compression¶
Differential Coding of Images¶
差分编码(Differential Coding)是一种简单的无损压缩方法,通过对图像的相邻像素值进行差分编码,以减少图像中的冗余信息。
换一种表达方式后,熵会减小
Lossless JPEG¶
预测编码->差分编码
比如预测下面的X
有很多种预测方式,比如左边、上边、左上角等。
然后计算残差,再进行编码。