第 7 章 无损压缩算法

45
第 7 第 第第第第第第

description

第 7 章 无损压缩算法. 内容. 基本概念 行程长度编码 变长度编码 字典编码 算术编码 无损图像压缩. 一、基本概念. 数据压缩的必要性. 中(低)等质量图像: 640 x480x16bits = 5Mb / 帧 中(高)等质量图像: 1024 x768x24bits = 18Mb / 帧 CCIR 601 数字电视: 720 x576x16bitsx25 = 158Mb /s 高清晰度数字电视: 1280 x720x24bitsx50= 1.05Gb /s. 数据压缩的必要性. 存储: 硬盘 传输 - PowerPoint PPT Presentation

Transcript of 第 7 章 无损压缩算法

Page 1: 第 7 章 无损压缩算法

第 7 章 无损压缩算法

Page 2: 第 7 章 无损压缩算法

Slide 2

内容

基本概念 行程长度编码 变长度编码 字典编码 算术编码 无损图像压缩

Page 3: 第 7 章 无损压缩算法

一、基本概念

Page 4: 第 7 章 无损压缩算法

Slide 4

数据压缩的必要性

中 ( 低 ) 等质量图像 :640x480x16bits = 5Mb / 帧

中 ( 高 ) 等质量图像 :1024x768x24bits = 18Mb / 帧

CCIR 601 数字电视 : 720x576x16bitsx25 = 158Mb /s

高清晰度数字电视 : 1280x720x24bitsx50= 1.05Gb/s

Page 5: 第 7 章 无损压缩算法

Slide 5

数据压缩的必要性

存储:硬盘传输PC 机系统总线: 5MB/s ( ISA ), 133MB/s ( PCI )

CD-ROM 读出速率: 40 x 150KB/s = 6MB/s

ETHERNET 传输速率: 10~100Mb~1Gb/s

普通电话接入速率: 28.8 , 33.3 , 56 Kb/s

ADSL 速率: 512kb~2Mb/s,

Page 6: 第 7 章 无损压缩算法

Slide 6

图像数据压缩的可能性

(1) 时间、空间冗余

(2) 信息熵冗余

(3) 视觉冗余– 眼睛空间综合能力的局限性(亮度等级,可区分弧度,高频

成分的非线性, ... )– 思维 (mind) 的时间综合能力的局限性

(4) 其他冗余,包括结构冗余、知识冗余等。

因此,在允许存在一定失真的前提下,可以对图象数据进行很大程度的压缩。

Page 7: 第 7 章 无损压缩算法

Slide 7

图像的信息熵

设一个信号源S={ s1, s2, … , sn },第 i 个符号的出现概率为 pi

,每个符号用 d 比特表示,则按信息论中信息熵的定义,该信号源的熵由下式定义:

n

iii pogpSH

121)(

对于一种编码方法,设第 i 个符号的码字长度为 Li ,则该信号源的平均码字长度 L 为 :

i

n

ii pLL *

1

Page 8: 第 7 章 无损压缩算法

Slide 8

例例

• 假设一个文本由 7 个符号组成:

a1, a2, a3, a4, a5, a6, a7

它们出现的概率是 : 0.2, 0.19, 0.18, 0.17, 0.15, 0.1, 0.01

则: 信息熵= -0.2log2(0.2) -0.19log2(0.19) -0.18log2(0.18) -0.17log2(0.17)

-0.15log2(0.15) -0.1log2(0.1) -0.01log2(0.01)

= 2.61如果每一个符号使用 bi 个二进位表示,则:平均码长= ∑ ai*bi

平均码长= 0.2×2 + 0.19×2 + 0.18×3 + 0.17×3 +0.15×3 + 0.1×4 + 0.01×4 = 2.72

Page 9: 第 7 章 无损压缩算法

Slide 9

•压缩比 (compression ratio)

– 压缩倍数– 压缩效率– bits per pixel ( bpp )

•算法复杂度– 计算量 / 存储量– 时间延迟 ( 计算延迟、存储延迟 )

– 编码 / 解码算法的对称性

•重建图象的质量

数据压缩技术的性能指标

Page 10: 第 7 章 无损压缩算法

Slide 10

重建图象的质量评价

客观评价法

2))()((1

ixixn

Ei

n

原始图像的像素

重建图像的像素

均方误差:

2

2

d

e lg 10 SNR(dB)

)(1 22 ixn

ei )(

1 22 ixn

ei

22 )()(1

ixixn

di

原始图像信号均值

误差图像信号均值

信噪比: 其中

2

2max

d

x lg 10 PSNR(dB)

原始图像信号峰值

峰值信噪比:

Page 11: 第 7 章 无损压缩算法

Slide 11

重建图象的质量评价

•主观评价法 (MOS)

受评价者的经验、爱好、观察图像的内容、观察条件等影响

分值 重建图像(声音)的质量5 非常好,丝毫看(听)不出失真

4 好,虽能看(听)出失真,但没有什么影响

3 一般,清楚地看(听)出有失真,对视听稍有影响

2 差,失真明显,对视听有影响

1 非常差,失真严重,非常严重地妨碍视听

Page 12: 第 7 章 无损压缩算法

Slide 12

压缩方法的分类

•lossless( 无损压缩 )– run-length coding(RLC)– 预测编码– Huffman( 哈夫曼编码 )– Arithmetic coding( 算术编码 )– Lempel-Ziv & Welch ( LZW 编码 , 词典编码 )

•lossy ( 有损压缩 )– 亚取样– 变换编码– 矢量编码– 特征抽取 ( 分析 -- 合成法 ) ( 模型编码 )

Page 13: 第 7 章 无损压缩算法

Slide 13

第一代压缩编码技术

统计(熵)编码。统计编码的基本原理是给出现概率较大的符号赋予一个短码字,而给出现概率较小的符号赋予一个长码字, 从而使得最终的平均码长很小。

预测编码。预测编码是基于图像数据的空间或时间冗余特性,用相邻的已知像素(或像素块)来预测当前像素(或像素块)的取值,然后再对预测误差进行量化和编码。

变换编码。变换编码通常是将空间域上的图像经过正交变换映射到另一变换域上,使变换后的系数之间的相关性降低。图像变换本身并不能压缩数据,但变换后图像的大部分能量只集中到少数几个变换系数上,采用适当的量化和熵编码就可以有效地压缩图像。

Page 14: 第 7 章 无损压缩算法

Slide 14

第二代压缩编码技术

神经网络( Artificial Neural Network , ANN ) 分形编码( Fractal Coding ) 基于对象的压缩编码( Object Based Coding )

基于模型的压缩编码( Model Based Coding )

小波变化编码

Page 15: 第 7 章 无损压缩算法

行程长度编码

Page 16: 第 7 章 无损压缩算法

Slide 16

基本思想

检测符号序列中连续重复出现的符号,并使用其长度( run length )进行表示。

例:压缩前 28 位:

0 0 0 3 3 7 7 7 7 0 0 0 0 0 0 0 0 5 6 6 6 6 6 0 0 0 0 0

压缩后 14 位:

3 0 2 3 4 7 8 0 1 5 5 6 5 0

分析:仅仅在游程长度> 3 时才有效益

1 2 3 4 5 6 1 1 1 2 1 3 1 4 1 5 1 6

1 1 2 2 3 3 4 4 5 52 1 2 2 2 3 2 4 2 5

Page 17: 第 7 章 无损压缩算法

Slide 17

RLC 的应用

适用于:二值图像的编码,如0000110011111000111000004225335

黑白文稿工程图纸 传真机( FAX )

RLC + Huffman

Page 18: 第 7 章 无损压缩算法

Slide 18

RLC 的分析

方法直观,简单,速度快。是一种无损压缩技术。 压缩比取决于图像本身的特点:

– 如果图像中具有相同颜色的图像块越大,且图像块数目越少,获得的压缩比就越高。反之,压缩比就越小。

– 特别适合于扫描产生的黑白文稿和工程图纸,对颜色丰富的自然图像效果较差。

不仅用于图像数据的压缩,也可应用于其他数字媒体的压缩。

Page 19: 第 7 章 无损压缩算法

变长度编码

Page 20: 第 7 章 无损压缩算法

Slide 20

Shannon-Fano 算法

① 首先统计出每个符号出现的概率;

② 从左到右对上述概率从大到小排序;

③ 从这个概率集合中的某个位置将其分为两个子集合,并尽量使两个子集合的概率和近似相等,给前面一个子集合赋值为 0 , 后面一个子集合赋值为 1 ;

④ 重复步骤 3 ,直到各个子集合中只有一个元素为止;

⑤ 将每个元素所属的子集合的值依次串起来,即可得到各个元素的香农 -范诺编码。

Page 21: 第 7 章 无损压缩算法

Slide 21

Shannon-Fano 编码举例

Page 22: 第 7 章 无损压缩算法

Slide 22

3 Huffman 编码

  基本原理:将在图象中出现次数多的像素值给一个短的编码,将出现次数少的像数值给一个长的编码。哈夫曼编码的一般算法如下: ( 1 ) 首先统计信源中各符号出现的概率, 按符号出现的概率从大到小排序。 ( 2 ) 把最小的两个概率相加合并成新的概率, 与剩余的概率组成新的概率集合。  ( 3 )对新的概率集合重新排序, 再次把其中最小的两个概率相加, 组成新的概率集合。如此重复进行, 直到最后两个概率的和为 1 。 ( 4 ) 分配码字。码字分配从最后一步开始反向进行, 对于每次相加的两个概率,给大的赋“ 0” , 小的赋“ 1”

Page 23: 第 7 章 无损压缩算法

Slide 23

Huffman 编码举例

例:设有 7 个符号: a1, a2, a3, a4, a5, a6, a7

出现的概率是 : 0.2, 0.19, 0.18, 0.17, 0.15, 0.1, 0.01

a2 (0.19)

a1 (0.2)

a3 (0.18)

a4 (0.17)

a5 (0.15)

a6 (0.1)

a7 (0.01)

0.35

0.110.26

0.61

1.0

1

0

0

1

01

0

1

0

101

a1 10

a2 11

a3 000

a4 001a5 010a6 0110a7 0111

0.39

Page 24: 第 7 章 无损压缩算法

Slide 24

两种 Huffman 编码的比较例:设有 5 个符号: a1, a2, a3, a4, a5,

出现的概率是 : 0.4, 0.2, 0.2, 0.1, 0.1,

a2 (0.2)

a1 (0.4)

a3 (0.2)

a4 (0.1)

a5 (0.1) 0.20.60

1

10

1

0

a1 1a2 01a3 000a4 0010a5 00110.4

1.0

01

a2 (0.2)

a1 (0.4)

a3 (0.2)

a4 (0.1)

a5 (0.1) 0.21

0

10 1

0a1 00a2 10a3 11a4 010a5 011

0.60.4

01

1.0

Page 25: 第 7 章 无损压缩算法

Slide 25

Huffman 编码的分析每个编码均非其它码的前缀,因此唯一可译

( a1=10,a2= 11, a3= 000, a4= 001, a5= 010, a6= 0110, a7=0111 )

11 010 10 001 10 11 10 0111

a2 a5 a1 a4 a1 a2 a1 a7

编码方式不唯一,但平均码长相同编码效率受信源概率分布影响传输中误码影响较大必须先存储 / 传输码表必须预先知道信源的统计特性图像过大时,应划分成小块编码

Page 26: 第 7 章 无损压缩算法

Slide 26

Huffman 编码在不同概率分布下的编码效果对比

Page 27: 第 7 章 无损压缩算法

Slide 27

4. 自适应 Huffman 编码

很难获取符号概率

传送码表浪费资源

AADCCDD 的自适应 Huffman 编码过程:

Page 28: 第 7 章 无损压缩算法

字典编码

Page 29: 第 7 章 无损压缩算法

Slide 29

LZW 编码

•时间:– 1977年, LZ77 , LZ78

– 1984年, LZW

•应用: gif , tif

•压缩比: 1:1.5~ 1:1.3•原理:

– LZW 压缩算法的基本思想是建立一个编码表 (转换表 ) ,韦尔奇称之为串表,将输入字符串映射成定长的码字输出,通常码长设为 12bit 。

Page 30: 第 7 章 无损压缩算法

Slide 30

LZW 编码

试对一个最简单的三字符 A , B , C 组成的字符串“ ABABBABCABABBA” 进行 LZW 编码。

A

1

B

2

C

3

AB

4

BA

5

ABB

6

BAB

7

BC

8

CA

9

ABA

10

ABBA

11

码表

输出编码

A

1

B

2

AB

4

BA

5

B

2

C

3

AB

4

ABB

6

A

1

Page 31: 第 7 章 无损压缩算法

Slide 31

LZW 编码

Page 32: 第 7 章 无损压缩算法

Slide 32

LZW 解码

•1 2 4 5 2 3 4 6 1

A

1

B

2

C

3

AB

4

BA

5

ABB

6

BAB

7

BC

8

CA

9

ABA

10

ABBA

11

码表

输出编码

A

1

B

2

AB

4

BA

5

B

2

C

3

AB

4

ABB

6

A

1

Page 33: 第 7 章 无损压缩算法

Slide 33

LZW 解码

Page 34: 第 7 章 无损压缩算法

Slide 34

LZW简单法的失效

•ABABBABCABBABBAX

•1 2 4 5 2 3 6 10

Page 35: 第 7 章 无损压缩算法

算术编码

Page 36: 第 7 章 无损压缩算法

Slide 36

算法思想

•Huffman 编码中每个符号都用整数个 bits来表

示,影响编码效率。

•算术编码把一串符号(称为“符号串”)作为一个编码单位,使编码效率得到进一步提高。

•由m个符号组成的一个符号串为: S1 S2 ······ Sm

把它映射成为[ 0 , 1 )中的一个半开子区间:

Page 37: 第 7 章 无损压缩算法

Slide 37

Symbol Probability Range A 0.2 [0, 0.2) B 0.1 [0.2, 0.3) C 0.2 [0.3, 0.5) D 0.05 [0.5, 0.55) E 0.3 [0.55, 0.85) F 0.05 [0.85, 0.9) $ 0.1 [0.9, 1.0)

待编码符号串:CAEE$

1.00.9

0.85

0.550. 5

0.30.2

0.5

0.3

0.34

0.3

0.334

0.322

0.3322

0.3268

0.3322

0.33184

Page 38: 第 7 章 无损压缩算法

Slide 38

待编码符号串:CAEE$

0.3322

0.33184

编码结果: 0.01010101

Page 39: 第 7 章 无损压缩算法

Slide 39

算数编码解码

编码结果: 0.01010101十进制: 0.33203125

0.160156250.80078125

0.83593750.953125

C

A

1.00.9

0.85

0.550. 5

0.30.2

C

B

D

E

F$

A

E

E

$

Page 40: 第 7 章 无损压缩算法

Slide 40

算术编码的实现

•困难– 编码过程中区间的表示(小数)会越来越长,最终导致无法实现

– 区间再分时需进行乘法运算,影响速度•解决方法

– 区间长度 A用规格化形式表示,始终保持在 0.75~1.5之间– 使起点位置与区间长度保持同步变化– 使用近似公式,简化计算 , 避免乘法运算

Page 41: 第 7 章 无损压缩算法

Slide 41

算术编码与 Huffman 编码的比较

•压缩效率可提高 5~10%•硬件实现稍复杂•通信过程中差错会扩散•不必使用码表•自适应算术编码能够根据已经编码的信息串来调整当前符号的概率估计,从而更有效地进行编码

Page 42: 第 7 章 无损压缩算法

无损图像压缩

Page 43: 第 7 章 无损压缩算法

Slide 43

差分编码

•自然世界中的灰度变化是连续的•差分运算后的图像的直方图分布较窄,信息熵较低,有可

能达到较低的平均码长•常用的差分算子有:

),1(),1()1,()1,(),(4),(

),1(),(),(

yxIyxIyxIyxIyxIyxd

yxIyxIyxd

Page 44: 第 7 章 无损压缩算法

Slide 44

JPEG 无损编码

原理 : 1 利用相邻象素之间的相关性进行预测:

预测值 =a1*A+a2*B+a3*C

2 计算预测误差,预测误差=当前象素数值-预测值 3 对预测误差进行编码

Page 45: 第 7 章 无损压缩算法

Slide 45

预测公式

P1 A

P2 B

P3 C

P4 A+B-C

P5 A+(B-C)/2

P6 B+(A-C)/2

P7 (A+B)/2