单击这里展开或折叠

  1.引言
  JPEG 标准定义了两种基本压缩算法:一是:基于DCT变换有失真的压缩算法。二是:基于空间预测编码DPCM的无失真压缩算法。
  JPEG 标准定义了两种基本压缩算法:
   (1). 基于DCT变换有失真的压缩算法。
  (2). 基于空间预测编码DPCM的无失真压缩算法。

单击这里展开或折叠

  2. 无失真的预测编码
  


图4.6—1 DPCM预测编码框图


单击这里展开或折叠

 (1). 预测器
  是预测值 是该点的实际值
   c b
   a X
  预测器有两类选择项(如表4.6-1 所示)
     
  选"1、2、3"是一维预测
  选"4、5、6、7"是二维预测
 (2). 熵编码器
  对 - 的差值进行无失真
  的熵编码或算术编码
  压缩比可达2:1倍。

单击这里展开或折叠

  3. 基于DCT 的有失真压缩编码
   (1)基于DCT的有失真编码处理过程图

  

   图4.6—2 基于DCT解码器处理步骤

单击这里展开或折叠

  (2)基于DCT的有失真编码处理总过程:   

   
单击这里展开或折叠

  (3)各步骤的具体实现
  ① 将图像分成8×8的块
单击这里展开或折叠

  分法: 从左到右,从上到下
  黑白图像:64个灰度值
  彩色图像:64个亮度分量,64个色差分量
  例如:分辨率为576行×720列的彩色图像
  有亮度子块:576/8×720/8=6480个
  有色差子块:576/8×360/8=3240

  
  ② 进行DCT变换
  JPEG在编码时用的是离散余弦正变换(FDCT)其数学表达式为:
  FDCT变换:
  (1)
  (1)式中:
  
   其输入数据是:把原始图像分成8×8的多个子块的同时将原始图像的采样数据从无符号整数变成有符号的整数。即若采样精度为P位,采样数据在范围 内,则变换成在范围内,以此作为DCT的输入。
  输出数据是:DCT变换系数--64个基信号的幅值。

单击这里展开或折叠

  ③ 根据量化表进行量化
   ·量化的方法:JPEG在JPEG标准中采用线性均匀量化器。
   均匀量化我们已经讲过了,在此稍提一下:就是"多到一"的映射,它的定义为:
   · 均匀量化定义为,对64个DCT变换系数 ,除以量化步长,四舍五入取整,如下:
      (2)
其中 是量化器步长。

单击这里展开或折叠

       
单击这里展开或折叠

  表4.6—1 亮度量化表
16
11
10
16
24
40
51
61
12
12
14
19
26
58
60
55
14
13
16
24
40
57
69
56
14
17
22
29
51
87
80
62
18
22
37
56
68
109
103
77
24
35
55
64
81
104
113
92
49
64
78
87
103
121
120
101
72
92
95
98
112
100
103
99

  
  4.6—2 色度量化表
17
18
24
47
99
99
99
99
18
21
26
66
99
99
99
99
24
26
56
99
99
99
99
99
47
66
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
单击这里展开或折叠

  ·具体做法:是用64个DCT系数除以(一一对应)量化表中的64个数。
单击这里展开或折叠

  ④根据熵编码表进行熵编码
单击这里展开或折叠

  · DC系数:对应于u=0,v=0的系数,称做直流分量,即DC系数。
  · AC系数:其余63个系数称做AC系数,即交流分量。

       
单击这里展开或折叠

  · 例如,图4.6-6是某一特定8×8图像块的量化后的DCT系数。
     48 12 0 0 0 0 0 0
    -10 8 0 0 0 0 0 0
     2 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0
     图4.6-6 8×8量化后的系数

单击这里展开或折叠

  · JPEG中对交流分量用了一个"Z"字型编码解决了这一问题。所谓"Z"字型编码就是(如图4.6-7所示)。
单击这里展开或折叠

     
单击这里展开或折叠

  · AC系数行程编码的码字
    
单击这里展开或折叠

  熵编码可分成两步进行,首先把DC和AC系数转换成一个中间格式的符号序列,
  第二步是给这些符号赋以变长码字。
  第一步:中间格式符号表示
  对交流系数AC的中间格式,由两个符号组成。
  符号1(行程,尺寸)
  符号2(幅 值)

单击这里展开或折叠

  符号1就是:第一个字节(NNNN--行程,SSSS--尺寸)
  符号2就是:第二个字节(幅值--下一个非零值的实际值。)

单击这里展开或折叠

  对于直流分量DC系数的差,符号1只代表尺寸信息,用以表示DC系数差值的幅值所需的比特数;符号2表示差值的幅值大小,
单击这里展开或折叠

  对DC系数和AC系数中的符号1,查"哈夫曼码表"进行编码。
  "哈夫曼变长码表"和"哈夫曼变长整数表"是JPEG标准制定的。必须作为JPEG编码器的一部分输入。

单击这里展开或折叠