第五讲 无损数据压缩
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
H ( S ) = E { I ( x j )} = − ∑ P ( x j ) ⋅ log 2 P ( x j )
j =1 n
• H(X)称为信源X的“熵”,即信源X发出任意一个随机变 量的平均信息量。 • 其中:等概率事件的熵最大,为:H ( S ) = −∑
j =1 N
1 1 log2 = log2 N N N
以色列人
Jacob Ziv 和 Abraham Lempel
1977 年 发表论文:“顺序数据压缩的一个通用算法” A Universal Algorithm for Sequential Data Compression 1978 年 发表论文:“通过可变比率编码的独立序列的压缩” Compression of Individual Sequences via Variable-Rate Coding
I ( x j ) = log 2 1 / N = − log 2 N = − log 2 p ( x j ) = I [ p ( x j )]
式中,P(xj)是信源X发出xj的概率。I(xj)的含义是,信源X发出 xj这个消息(随机事件)后,接收端收到信息量的量度。
信息熵
• 熵——来源于40年代由Claude Shannon创立的信息论中的 一条定理,这一定理借用了热力学中的名词 “熵”( Entropy )来表示一条信息中真正需要编码的信息量。 • 信源S发出的xj(j=1,2,…,n)共n个随机事件的自信息统计 平均,即
压缩技术分类
通用数据压缩(均为无损压缩) 多媒体数据压缩(无损和有损压缩)
基于统计模型 的压缩技术
基于字典模型 的压缩技术
图像压缩
音频和视频压缩 MPEG等 MPEG等
Huffman 编码
算术编码
LZ77
LZ78
二值图像 CCITT JBIG等 JBIG等 LZW 灰度图像 FELICS JPEG等 JPEG等
如采用等长编码,则每个字符需要2位; 总的码长: L=5*2+3* 2+2*2 =20 位
对比一下,我们用A百度文库CII编码表示该信息需要80位
H(S)= 0.5Ia +0. 3Ib +0. 2Ic =1.4855
统计编码(熵)
• 统计编码是根据消息出现概率的分布特 性而进行的压缩编码 • 在消息和码字间找到明确的一一对应关 系,以便恢复时能准确无误再现出来
Shannon-Fano编码例1
• 有一幅40个象素组成的灰度图像,灰度共有5级,分别用 符号A、B、C、D和E表示,40个象素中出现灰度A的象素 数有15个,出现灰度B的象素数有7个,出现灰度C的象素 数有7个等等。如果用3个位表示5个等级的灰度值,也就 是每个象素用3位表示,编码这幅图像总共需要120位。 符 号 A 出现的次数 15 H(S) = (15/40)* + (5/40) ∗ B 7 C 7 D 6 E 5
1110010101110110111100010 D A B B D C E A A B
技术准备:压缩=模型+编码
符号
概率
代码
输入
模型
编码
输出
Shannon-Fano编码
• 采用从上到下的方法进行编码。 • 仙农-范诺(Shannon- Fano)算法:
– 首先按照符号出现的频度或概率排序, – 使用递归方法分成两个部分,每一部分具有 近似相同的次数(概率) – 当概率和为1,进行编码
压缩技术起源
信息压缩技术的起源…… 比计算机的发明早几千年……
信息论
信息存在冗余 通过采用一定 的模型和编码方法, 的模型和编码方法, 可以降低这种冗余度
贝尔实验室的 Claude Shannon 和 MIT 的 R.M.Fano 几乎同时提出了最早的对符号进行有效编码 从而实现数据压缩的 Shannon-Fano 编码方法。
如用后3位进行编码 只需要3*24=72bit
压缩比为: 压缩比为:
等长与不等长编码
• 不等长编码方法
– – – – – – – 字符 次数 概率 码字 E 8 1/3 0 D 4 1/6 100 C 4 1/6 101 空 4 1/6 110 A 2 1/12 1110 B 2 1/12 1111 字长 1 3 3 3 4 4
无损压缩模型
使用模型:得到字符或单词在信息中出现的概率 静态/半静态模型 统计模型 自适应模型 静态字典模型 字典模型 自适应字典模型
信息熵及基本概念
• 1.信息量 • 信息量 信息量是指从N个相等的可能事件中选出一个事件所需要的 信息度量或含量,也就是在辨识N个事件中特定的一个事件 的过程中所需要提问“是或否”的最少次数。 • 设从N个数中选定任一个数xj的概率为p(xj),假定选定任 意一个数的概率都相等,即p( xj )=1/N,因此定义其信 息量为:
• 有损压缩
– 指使用压缩后的数据进行重构,重构后的数据与原来 的数据有所不同,但不影响人对原始资料表达的信息 造成误解。 – 图像和声音的压缩就可以采用有损压缩,因为其中包 含的数据往往多于我们的视觉系统和听觉系统所能接 收的信息,丢掉一些数据而不至于对声音或者图像所 表达的意思产生误解,但可大大提高压缩比。
需要空间: 1*8+3*4+3*4 +3*4+2*4+2* 4=60 平均码长=总 平均码长 位数/字符出 现次数 =60/24=2.5
不等长码唯一性问题
– – – – – 字符 A B C D 码1 0 10 110 1110 码2 0 10 11 01 码3 0 01 011 111
对序列010110译码 码1 abc 码2 daca或ddb或abca
技术准备:编码
通过模型,我们可以确定对某一个符号该用多少位二进制数进行编码。 现在的问题是,如何设计一种编码方案,使其尽量精确地用模型计算出 来的位数表示某个符号。
前缀编码规则:任何一个符号的编码都不是另一个符号编码的前缀。 最简单的前缀编码
字符 A B C D E 0 10 110 1110 11110 编码
通用数据压缩
80年代中期以后,对LZ77算法进行改进
Haruyasu Yoshizaki(Yoshi) 的 LHarc Robert Jung 的 ARJ
从PKZip到WinZip: 通用数据压缩格式标准 —— ZIP
LZ77、LZ78、LZW 一起垄断当今的通用数据压缩领域
多媒体数据压缩
国际电报电话咨询委员会( CCITT ) :针对二值图像的一系列压缩标 准,如 CCITT Group3、CCITT Group4 等 (此外还包括CCITT与ISO共 同制订的JBIG标准) 。 70 年代末 80 年代初:数学家们提出了损失压缩精度以换取压缩 ( ) 率的崭新思路。国际标准化组织( ISO )和 CCITT 联合组成了两个 委员会:静态图像联合专家小组( JPEG )和动态图像联合专家小组 ( MPEG )。诞生了 JPEG、MPEG-1、MPEG-2、MPEG-4、MPEG-7 等 系列标准。 PostScript矢量图形格式:起源于 1976 年的 Evans & Sutherland 计算机 公司,当时的名字是 Design System。1978 年,John Warnock 和 Martin Newel 将其演变为 JAM 语言。1982 年,John Warnock 和 Chuck Geschke 创建了著名的 Adobe System 公司,第三次设计和实现 了这个语言,并称其为 PostScript。
D.A.Huffman
1952 年 发表论文:“最小冗余度代码的构造方法” A Method for the Construction of Minimum Redundancy Codes UNIX 系统上一个不太为现代人熟知的压缩程序 COMPACT 就是 Huffman 0 阶自适应编码的具体实现 80 年代初,Huffman 编码又在 CP/M 和 DOS 系统 中实现,其代表程序叫 SQ Huffman时代:60 年代、70 年代乃至 80 年代的早期 时代: 年代、
接近极限——熵
80年代早期,数学家们设计出算术编码方法(Arithmetic Coding) 算术编码是部分匹配预测(Predication by Partial matching, PPM)技术的变体 可以证明,算术编码得到的压缩效果可以最大地减小 信息的冗余度,用最少量的符号精确表达原始信息内容 但是,在同样的计算机系统上,算术编码虽然可以得到 最好的压缩效果,却要消耗也许几十倍的计算时间
Lc = ∑ P( x j ) L( x j )
j =1
n
(j=1,2,…,n)
其中:P(xj) 是信源X发出xj的概率,L(xj)为xj的编码长。
熵的计算范例
例:对信息aabbaccbaa,字符串长度为 10,字符a、 b、c分别出现了5、3、2次,则
Ia=-log2(0.5)=1 Ib=-log2(0.3)=1.737 Ic=-log2(0.2)=2.322
当P(x1)=1时,P(x2)=P(x3)=…=P(xj)=0,由(4-6)式得此时熵为
H ( S ) = − P( x1 ) log2 P( x1 ) = 0
由上可得熵的范围为: 由上可得熵的范围为:
0 ≤ H ( S ) ≤ log2 N
平均码长与熵关系
• 在编码中用熵值来衡量是否为最佳编码。若以Lc表示编 码器输出码字的平均码长,则当 Lc≥H(S) 有冗余,不是最佳。 Lc<H(S) 不可能。 Lc H(S) Lc=H(S) 最佳编码(Lc稍大于H(S))。 Lc H(S) 熵值为平均码长Lc的下限。 平均码长Lc的计算公式为:
彩色图像 RLE编码 RLE编码 JPEG等 JPEG等
矢量图像 PostScript WMF CAD等 CAD等
压缩技术的应用
编译(JAVA)
人工智能(专家系统/知识树) 程序设计(算法/空间和时间效率)
全文索引(倒排索引表) 密码学(消除数据的原始特征) 文件系统(压缩扇区) 音频(MP3) 数据库(B+树) 归档(TAR/ZIP) 图像(GIF/TIFF/JPEG) 存储(压缩池) 电报、传真(CCITT) 通讯(Modem/网络协议) 视频(MPEG/RM)
等长与不等长编码
• 例如:符号序列x=“aa bb cccc dddd eeeeeeee • 采用ASCII编码: 等长编码:24*8=192bit
– – – – – – a=01100001 b=01100010 c=01100011 d=01100100 e=01100101 空=00100000
压缩编码分类(原理)
• 预测编码:PCM,DPCM,DM,LPC • 统计编码:huffman,shannon,REL,词 典编码 • 模型编码 • 变换编码 • 子带编码
压缩编码分类(长度)
• 等长编码
– ASCII编码 编码
• 不等长编码
– 编码长度是不等长的 – 常见编码如Huffman编码 常见编码如 编码
(40/15) + (7/40)* (40/5) =2.196
(40/7) + …
这就是说每个符号用2.196位表示,40个象素需用87.84位
第四章 数据压缩技术
压缩技术简史 压缩技术基础 Huffman编码 编码 算术编码 LZ77和LZW算法 和 算法 JPEG算法 算法 通用压缩工具比较
压缩编码分类(信息)
• 无损压缩
– 指使用压缩后的数据进行重构(或者叫做还原,解压缩), 重构后的数据与原来的数据完全相同。 – 无损压缩算法一般压缩比2~4。 – 常用的无损压缩算法有霍夫曼(Huffman)算法和 LZW(Lenpel-Ziv & Welch)压缩算法。
字典编码时代:LZ77和LZ78压缩算法 字典编码时代:
LZW算法
Terry Welch
1984 年 发表论文:“高性能数据压缩技术” A Technique for High-Performance Data Compression Welch 实现了 LZ78 算法的一个变种 —— LZW算法 LZW算法 UNIX:使用 LZW 算法的 Compress 程序 MS-DOS:ARC 程序,以及PKWare、PKARC 等仿制品。
j =1 n
• H(X)称为信源X的“熵”,即信源X发出任意一个随机变 量的平均信息量。 • 其中:等概率事件的熵最大,为:H ( S ) = −∑
j =1 N
1 1 log2 = log2 N N N
以色列人
Jacob Ziv 和 Abraham Lempel
1977 年 发表论文:“顺序数据压缩的一个通用算法” A Universal Algorithm for Sequential Data Compression 1978 年 发表论文:“通过可变比率编码的独立序列的压缩” Compression of Individual Sequences via Variable-Rate Coding
I ( x j ) = log 2 1 / N = − log 2 N = − log 2 p ( x j ) = I [ p ( x j )]
式中,P(xj)是信源X发出xj的概率。I(xj)的含义是,信源X发出 xj这个消息(随机事件)后,接收端收到信息量的量度。
信息熵
• 熵——来源于40年代由Claude Shannon创立的信息论中的 一条定理,这一定理借用了热力学中的名词 “熵”( Entropy )来表示一条信息中真正需要编码的信息量。 • 信源S发出的xj(j=1,2,…,n)共n个随机事件的自信息统计 平均,即
压缩技术分类
通用数据压缩(均为无损压缩) 多媒体数据压缩(无损和有损压缩)
基于统计模型 的压缩技术
基于字典模型 的压缩技术
图像压缩
音频和视频压缩 MPEG等 MPEG等
Huffman 编码
算术编码
LZ77
LZ78
二值图像 CCITT JBIG等 JBIG等 LZW 灰度图像 FELICS JPEG等 JPEG等
如采用等长编码,则每个字符需要2位; 总的码长: L=5*2+3* 2+2*2 =20 位
对比一下,我们用A百度文库CII编码表示该信息需要80位
H(S)= 0.5Ia +0. 3Ib +0. 2Ic =1.4855
统计编码(熵)
• 统计编码是根据消息出现概率的分布特 性而进行的压缩编码 • 在消息和码字间找到明确的一一对应关 系,以便恢复时能准确无误再现出来
Shannon-Fano编码例1
• 有一幅40个象素组成的灰度图像,灰度共有5级,分别用 符号A、B、C、D和E表示,40个象素中出现灰度A的象素 数有15个,出现灰度B的象素数有7个,出现灰度C的象素 数有7个等等。如果用3个位表示5个等级的灰度值,也就 是每个象素用3位表示,编码这幅图像总共需要120位。 符 号 A 出现的次数 15 H(S) = (15/40)* + (5/40) ∗ B 7 C 7 D 6 E 5
1110010101110110111100010 D A B B D C E A A B
技术准备:压缩=模型+编码
符号
概率
代码
输入
模型
编码
输出
Shannon-Fano编码
• 采用从上到下的方法进行编码。 • 仙农-范诺(Shannon- Fano)算法:
– 首先按照符号出现的频度或概率排序, – 使用递归方法分成两个部分,每一部分具有 近似相同的次数(概率) – 当概率和为1,进行编码
压缩技术起源
信息压缩技术的起源…… 比计算机的发明早几千年……
信息论
信息存在冗余 通过采用一定 的模型和编码方法, 的模型和编码方法, 可以降低这种冗余度
贝尔实验室的 Claude Shannon 和 MIT 的 R.M.Fano 几乎同时提出了最早的对符号进行有效编码 从而实现数据压缩的 Shannon-Fano 编码方法。
如用后3位进行编码 只需要3*24=72bit
压缩比为: 压缩比为:
等长与不等长编码
• 不等长编码方法
– – – – – – – 字符 次数 概率 码字 E 8 1/3 0 D 4 1/6 100 C 4 1/6 101 空 4 1/6 110 A 2 1/12 1110 B 2 1/12 1111 字长 1 3 3 3 4 4
无损压缩模型
使用模型:得到字符或单词在信息中出现的概率 静态/半静态模型 统计模型 自适应模型 静态字典模型 字典模型 自适应字典模型
信息熵及基本概念
• 1.信息量 • 信息量 信息量是指从N个相等的可能事件中选出一个事件所需要的 信息度量或含量,也就是在辨识N个事件中特定的一个事件 的过程中所需要提问“是或否”的最少次数。 • 设从N个数中选定任一个数xj的概率为p(xj),假定选定任 意一个数的概率都相等,即p( xj )=1/N,因此定义其信 息量为:
• 有损压缩
– 指使用压缩后的数据进行重构,重构后的数据与原来 的数据有所不同,但不影响人对原始资料表达的信息 造成误解。 – 图像和声音的压缩就可以采用有损压缩,因为其中包 含的数据往往多于我们的视觉系统和听觉系统所能接 收的信息,丢掉一些数据而不至于对声音或者图像所 表达的意思产生误解,但可大大提高压缩比。
需要空间: 1*8+3*4+3*4 +3*4+2*4+2* 4=60 平均码长=总 平均码长 位数/字符出 现次数 =60/24=2.5
不等长码唯一性问题
– – – – – 字符 A B C D 码1 0 10 110 1110 码2 0 10 11 01 码3 0 01 011 111
对序列010110译码 码1 abc 码2 daca或ddb或abca
技术准备:编码
通过模型,我们可以确定对某一个符号该用多少位二进制数进行编码。 现在的问题是,如何设计一种编码方案,使其尽量精确地用模型计算出 来的位数表示某个符号。
前缀编码规则:任何一个符号的编码都不是另一个符号编码的前缀。 最简单的前缀编码
字符 A B C D E 0 10 110 1110 11110 编码
通用数据压缩
80年代中期以后,对LZ77算法进行改进
Haruyasu Yoshizaki(Yoshi) 的 LHarc Robert Jung 的 ARJ
从PKZip到WinZip: 通用数据压缩格式标准 —— ZIP
LZ77、LZ78、LZW 一起垄断当今的通用数据压缩领域
多媒体数据压缩
国际电报电话咨询委员会( CCITT ) :针对二值图像的一系列压缩标 准,如 CCITT Group3、CCITT Group4 等 (此外还包括CCITT与ISO共 同制订的JBIG标准) 。 70 年代末 80 年代初:数学家们提出了损失压缩精度以换取压缩 ( ) 率的崭新思路。国际标准化组织( ISO )和 CCITT 联合组成了两个 委员会:静态图像联合专家小组( JPEG )和动态图像联合专家小组 ( MPEG )。诞生了 JPEG、MPEG-1、MPEG-2、MPEG-4、MPEG-7 等 系列标准。 PostScript矢量图形格式:起源于 1976 年的 Evans & Sutherland 计算机 公司,当时的名字是 Design System。1978 年,John Warnock 和 Martin Newel 将其演变为 JAM 语言。1982 年,John Warnock 和 Chuck Geschke 创建了著名的 Adobe System 公司,第三次设计和实现 了这个语言,并称其为 PostScript。
D.A.Huffman
1952 年 发表论文:“最小冗余度代码的构造方法” A Method for the Construction of Minimum Redundancy Codes UNIX 系统上一个不太为现代人熟知的压缩程序 COMPACT 就是 Huffman 0 阶自适应编码的具体实现 80 年代初,Huffman 编码又在 CP/M 和 DOS 系统 中实现,其代表程序叫 SQ Huffman时代:60 年代、70 年代乃至 80 年代的早期 时代: 年代、
接近极限——熵
80年代早期,数学家们设计出算术编码方法(Arithmetic Coding) 算术编码是部分匹配预测(Predication by Partial matching, PPM)技术的变体 可以证明,算术编码得到的压缩效果可以最大地减小 信息的冗余度,用最少量的符号精确表达原始信息内容 但是,在同样的计算机系统上,算术编码虽然可以得到 最好的压缩效果,却要消耗也许几十倍的计算时间
Lc = ∑ P( x j ) L( x j )
j =1
n
(j=1,2,…,n)
其中:P(xj) 是信源X发出xj的概率,L(xj)为xj的编码长。
熵的计算范例
例:对信息aabbaccbaa,字符串长度为 10,字符a、 b、c分别出现了5、3、2次,则
Ia=-log2(0.5)=1 Ib=-log2(0.3)=1.737 Ic=-log2(0.2)=2.322
当P(x1)=1时,P(x2)=P(x3)=…=P(xj)=0,由(4-6)式得此时熵为
H ( S ) = − P( x1 ) log2 P( x1 ) = 0
由上可得熵的范围为: 由上可得熵的范围为:
0 ≤ H ( S ) ≤ log2 N
平均码长与熵关系
• 在编码中用熵值来衡量是否为最佳编码。若以Lc表示编 码器输出码字的平均码长,则当 Lc≥H(S) 有冗余,不是最佳。 Lc<H(S) 不可能。 Lc H(S) Lc=H(S) 最佳编码(Lc稍大于H(S))。 Lc H(S) 熵值为平均码长Lc的下限。 平均码长Lc的计算公式为:
彩色图像 RLE编码 RLE编码 JPEG等 JPEG等
矢量图像 PostScript WMF CAD等 CAD等
压缩技术的应用
编译(JAVA)
人工智能(专家系统/知识树) 程序设计(算法/空间和时间效率)
全文索引(倒排索引表) 密码学(消除数据的原始特征) 文件系统(压缩扇区) 音频(MP3) 数据库(B+树) 归档(TAR/ZIP) 图像(GIF/TIFF/JPEG) 存储(压缩池) 电报、传真(CCITT) 通讯(Modem/网络协议) 视频(MPEG/RM)
等长与不等长编码
• 例如:符号序列x=“aa bb cccc dddd eeeeeeee • 采用ASCII编码: 等长编码:24*8=192bit
– – – – – – a=01100001 b=01100010 c=01100011 d=01100100 e=01100101 空=00100000
压缩编码分类(原理)
• 预测编码:PCM,DPCM,DM,LPC • 统计编码:huffman,shannon,REL,词 典编码 • 模型编码 • 变换编码 • 子带编码
压缩编码分类(长度)
• 等长编码
– ASCII编码 编码
• 不等长编码
– 编码长度是不等长的 – 常见编码如Huffman编码 常见编码如 编码
(40/15) + (7/40)* (40/5) =2.196
(40/7) + …
这就是说每个符号用2.196位表示,40个象素需用87.84位
第四章 数据压缩技术
压缩技术简史 压缩技术基础 Huffman编码 编码 算术编码 LZ77和LZW算法 和 算法 JPEG算法 算法 通用压缩工具比较
压缩编码分类(信息)
• 无损压缩
– 指使用压缩后的数据进行重构(或者叫做还原,解压缩), 重构后的数据与原来的数据完全相同。 – 无损压缩算法一般压缩比2~4。 – 常用的无损压缩算法有霍夫曼(Huffman)算法和 LZW(Lenpel-Ziv & Welch)压缩算法。
字典编码时代:LZ77和LZ78压缩算法 字典编码时代:
LZW算法
Terry Welch
1984 年 发表论文:“高性能数据压缩技术” A Technique for High-Performance Data Compression Welch 实现了 LZ78 算法的一个变种 —— LZW算法 LZW算法 UNIX:使用 LZW 算法的 Compress 程序 MS-DOS:ARC 程序,以及PKWare、PKARC 等仿制品。