JPEG标准DCT算法

JPEG标准

 

<动画演示>     <声音演示>      <作业


JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写。其中“联合”的含意是指,国际电报电话咨询委员会(CCITI)和国际标准化协会(ISO)联合组成的一个图像专家小组。联合图像专家小组,多年来一直致力于标准化工作,他们开发研制出连续色调、多级灰度、静止图像的数字图像压缩编码方法。这个压缩编码方法称为JPEG算法。JPEG算法被确定为JPEG国际标准,它是国际上彩色、灰度、静止图像的第一个国际标准。JPEG标准是一个适用范围广泛的通用标准。它不仅适于静图像的压缩,电视图像序列的帧内图像的压缩编码也常采用JPEG压缩标准。

       JPEG的目的是为了给出一个适用于连续色调图像的压缩方法,使之满足以下要求:

       (1) 达到或接近当前压缩比与图像保真度的技术水平,能覆盖一个较宽的图像质量等级范围,能达到“很好”到“极好”的评估,与原始图像相比,人的视觉难以区分。

       (2) 能适用于任何种类的连续色调的图像,且长宽比都不受限制,同时也不受限于景物内容、图像的复杂程度和统计特性等。

       (3) 计算的复杂性是可控制的,其软件可在各种CPU上完成,算法也可用硬件实现。

       (4) JPEG算法,具有以下四种操作方式:

① 顺序编码

       每一个图像分量按从左到右,从上到下扫描,一次扫描完成编码。

       ② 累进编码

       图像编码在多次扫描中完成。累进编码传输时间长,接收端收到的图像是多次扫描由粗糙到清晰的累进过程。

       ③ 无失真编码

       无失真编码方法,保证解码后,完全精确地恢复源图像采样值,其压缩比低于有失真压缩编码方法。

       ④ 分层编码

       图像在多个空间分辨率进行编码。在信道传送速率慢,接收端显示器分辨率也不高的情况下,只需做低分辨率图像解码。

下面举一个基于离散余弦变换(DCT)的有失真JPEG编解码的示例,了解掌握JPEG编解码的全过程。这两个图表示的是一个单分量(如图像的灰度信号)图像的压缩编码和解码过程,表示出基于DCT顺序工作方式编解码的完整工作过程。对于彩色图像,可以近似看作多分量(亮度信号分量和色度信号分量等)进行压缩和解压缩处理。

 

 

基于DCT编码器处理步骤

 

 

基于DCT解码器处理步骤

 

1、离散余弦变化(DCT)

JPEG采用的是8×8大小的子块的二维离散余弦变换DCT(discrete cosine transform)。

在编码器的输入端,把原始图像顺序地分割成一系列8×8的子块,设原始图像的采样精度为P位,是无符号整数,输入时把[0,2P-1]范围的无符号整数变成[-2P-1,2P-1-1]范围的有符号整数,以此作为离散余弦正变换FDCT(forward DCT)的输入。在解码器的输出端经离散余弦逆变换(IDCT)(Inverse DCT)后,得到一系列8×8的图像数据块,需将其数值范围由[-2P-1,2P-1-1]再变回到[0,2P-1]范围的无符号整数,来获得重构图像。

下面的公式是8×8 FDCT和8×8 IDCT数学定义表达式。

正变换:

(4.2)

 

逆变换:

(4.3)

其中:

从二维DCT的计算公式看出,它们具有可分离的变换特征,所以二维DCT可分解成行向的一维DCT计算和列向的一维DCT计算的组合运算。二维快速余弦变换(2-FDCT)是把8×8块不断分成更小的无交迭子块,直接对数据块进行运算操作。

对基于DCT压缩算法的简单而直观的认识,可把FDCT看作一个谐波分析仪和把IDCT看作一个谐波合成器。8×8数据块输入分解成64个正交基信号,每个基信号对应于64个独立二维空间频率中的一个,这些空间频率是由输入信号的“频谱”组成。FDCT输出64个基信号的幅值称作“DCT系数”,即DCT变换系数值。64个变换系数中包括一个代表直流分量的“DC系数”和63个代表交流分量的“AC系数”。IDCT是FDCT的逆过程,它把64个DCT变换系数经逆变换运算,重建一个64点的输出图像。如果FDCT和IDCT变换计算所使用的设备的计算精度足够高,且系数未经过量化,那幺原始的64点信号就能精确地恢复。

2、量化

为了达到压缩数据的目的,对DCT系数F(u,v)需作量化处理。量化处理是一个多到一的映像,它是造成DCT编解码信息损失的根源。在JPEG标准中采用线性均匀量化器,量化定义为对64个DCT系数除以量化步长,四舍五入取整。

 

量化的作用是在一定的主观保真度图像质量的前提下,丢掉那些对视觉效果影响不大的信息。不同频率的余弦函数对视觉影响不同,所以可据不同频率的视觉阈值来选择量化表中的元素值的大小。这样通过心理视觉实验,可确定对应于不同频率的视觉阈值,以确定不同频率的量化器步长。

DCT变换系数除以量化表中对应位置的量化步长,其幅值下降,高频系数的零值数目增加。

亮度量化表

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

 

色度量化表

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

 

3、DC系数编码和AC系数的行程编码

64个变换系数经量化后,DC系数是直流分量,即为64个空域图像采样值的平均值。相邻8×8块之间的DC系数有强的相关性,JPEG中对DC系数采用DPCM编码,或差分编码。                  

其余63个交流系数采用行程编码。从左上方AC01开始, 沿对角线方向,以“Z”字形行程扫描,直到AC77扫描结束。量化后待编码的AC系数通常有许多零值,沿“Z”字形路径进行行程编码,可增加行程中连续零的个数。63个AC系数行程编码的码63个AC系数行程编码的码字,可用两个字节表示。

 

 “Z”字形排列

 

AC系数行程编码码字

 

4、熵编码

为了进一步达到压缩数据的目的,需要对量化后的DC码和AC行程编码的码字再作基于统计特性的熵编码。JPEG建议使用两种熵编码方法:哈夫曼(Huffman)编码和自适应二进制算术编码(adaptive binary arithmetic coding)。熵编码可分成两步进行,首先把DC码和行程码字转换成一个中间符号序列,然后给这些符号赋以变长码字。

JPEG静态图像压缩编码主要原理及实现技术概述为以下几点:

  ① 离散余弦变换(DCT)

   首先把一幅图像(单色图像的灰度值或彩色图像的亮度分量或色差分量信号)分成8×8的块按图中的框图进行离散余弦正变换(FDCT)和离散余弦逆变换(IDCT)。

  ② 量化

     为了达到压缩数据的目的,对DCT系数F(u,v)需作量化处理。量化处理是一个多到一的映射它是造成DCT编解码信息损失的根源。在JPEG标准中采用线性均匀量化器。量化定义为,对64个DCT变换系数F(u,v)除以量化步长Q(u,v)后四舍五入取整。

  ③ 熵编码

     为进一步达到压缩数据的目的,需对量化后的DC系数和行程编码后的AC系数进行基于统计特性的熵编码。63个AC系数行程编码和码字,可用两个字节表示。JPEG建议使用两种熵编码方法:Huffman编码和自适应二进制算术编码。熵编码可分成两步进行,首先把DC和AC系数转换成一个中间格式的符号序列,第二步是给这些符号赋以变长码字。


http://it.buu.com.cn/mmshen/data/4-3/1.htm


知识点   <JPEG>  <离散余弦变换> <量化> <熵编码>

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值