1、多媒体技术教程多媒体技术教程第第5章章 JPEG图像压缩与编码图像压缩与编码 2/25 第第5章章 JPEG图像压缩与编码目录图像压缩与编码目录 第第5章章 JPEG图像压缩与编码图像压缩与编码5.1 JPEG算法概要算法概要5.1.1 JPEG是什么5.1.2 JPEG算法概要5.2 JPEG算法的主要计算步骤算法的主要计算步骤5.2.1 离散余弦变换5.2.2 量化5.2.3 Z字形编排5.2.4 熵编码5.3 JPEG压缩和编码举例压缩和编码举例5.4 JPEG文件格式文件格式5.4.1 颜色空间5.4.2 文件结构5.5 JPEG 2000简介简介5.5.1 JPEG 2000是什么5
2、.5.2 JPEG 2000的基本结构5.5.3 JPEG 2000的主要功能参考文献和站点参考文献和站点 3/25 5.1 JPEG算法概要算法概要 n5.1.1 JPEG是什么是什么Joint Photographic Experts Group的缩写,联合图像专家联合图像专家组组n由ISO和IEC两个组织机构联合组成的专家组,负责制定静态的数字图像数据压缩编码标准JPEG标准n静态图像数据压缩标准,用于压缩灰度图像和彩色图像。两种基本压缩算法:1、有损压缩算法:、有损压缩算法:以离散余弦变换(DCT)为基础,在压缩比为25 1的情况下,压缩后还原得到的图像与原始图像相比,非图像专家难于找
3、出它们之间的区别2、采用以预测技术为基础的无损压缩算法、采用以预测技术为基础的无损压缩算法4/25 5.1 JPEG算法概要算法概要(续续1)n5.1.2 JPEG算法概要算法概要利用视觉系统特性,使用变换、量化和熵编码相结合的方法,以去掉或减少视觉的冗余信息和数据本身的冗余信息JPEG标准的压缩算法大致分成三个步骤:n使用正向离散余弦变换(FDCT)把空间域表示的图变换成频率域表示的图n使用加权函数对DCT系数进行量化,加权函数对人的视觉系统是最佳的n使用霍夫曼编码器对量化系数进行编码5/25 5.1 JPEG算法概要算法概要(续续2)图5-1 JPEG压缩-解压缩算法框图FDCT量化器熵编
4、码器压缩图像数据量化表熵编码表基于DCT的编码器88 图像块源图像数据(a)JPEG压缩算法框图压缩图像数据熵解码器逆量化器IDCT88图像块重构图像数据量化表熵编码表基于DCT的解码器(b)JPEG解压缩算法框图6/25 5.1 JPEG算法概要算法概要(续续3)JPEG算法与颜色空间无关nRGB和YUV之间的变换不包含在JPEG算法中nJPEG算法处理单独的图像彩色分量,因此可压缩来自不同颜色空间的数据,如RGB,YCbCr,CMYKn5.1.3.JPEG标准文档标准文档n标准名:Information technology Digital compression and coding o
5、f continuous-tone still images(信息技术 连续色调静态图像的数字压缩和编码)7/25 5.1 JPEG算法概要算法概要(续续4)ISO/IECITU-T各部分的功能10918-1(1994)Part 1T.81编码静态图像的基本标准10918-2(1995)Part 2T.82软件性能符合Part 1的测试10918-3(1997)Part 3T.83添加包括SPIFF*格式在内的扩展10918-4(1999)Part 4T.84定义注册扩展JPEG功能的参数的方法14495-1(1998)T.87数据无损压缩的标准(JPEG-LS)表5-1 JPEG标准文档8/
6、25 5.2 JPEG算法的主要计算步骤算法的主要计算步骤 nJPEG压缩编码算法的主要计算步骤压缩编码算法的主要计算步骤(1)正向离散余弦变换(FDCT)(2)量化(quantization)(3)Z字形编码(zigzag scan)。(4)使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码(5)使用行程长度编码(RLE)对交流系数(AC)进行编码(6)熵编码(entropy coding)9/25 5.2 JPEG算法的主要计算步骤算法的主要计算步骤(续续1)n5.2.1 离散余弦变换离散余弦变换(DCT)用余弦函数的离散值构成的变换矩阵对信号的一系列样本值进行运算的数学变换可将能
7、量集中到频率较低的系数上将分量图像分成分量图像分成88的图块的图块,如图5-2 所示(,)f i j(,)F u vDCT图5-2 离散余弦变换 10/25 在编码器色输入端,在编码器色输入端,8*8的图像数据块,原始图像的的图像数据块,原始图像的采样精度为采样精度为p位,是无符号整数,输入时把位,是无符号整数,输入时把【0,2p-1】范围的无符号整数变成范围的无符号整数变成【-2p-1,2p-1-1】范围的有符号范围的有符号整数,以此作为整数,以此作为离散余弦正变换离散余弦正变换FDCT(forward DCT)的输入。的输入。在解码端经过在解码端经过离散余弦逆变换离散余弦逆变换IDCT(i
8、nverse DCT)后,得到一系列的后,得到一系列的8*8的图像数据块,需要将数值范围的图像数据块,需要将数值范围从从【-2p-1,2p-1-1】变回到变回到【0,2p-1】,来获得重构来获得重构图像。图像。注:如果注:如果FDCT和和 IDCT变换计算精度足够高,且系数未经过量化,变换计算精度足够高,且系数未经过量化,那么原始的那么原始的64点信号能精确的恢复点信号能精确的恢复11/25 5.2 JPEG算法的主要计算步骤算法的主要计算步骤(续续2)77001(21)(21)(,)()()(,)coscos41616ijiujvF u vC u C vf i j77001(21)(21)(
9、,)()()(,)coscos41616uviujvF i jC u C vf u v8*8像素点的DCT变换使用下式计算逆变换使用下式计算(),()=1/2C uC v(),()1C uC v当u,v=0;其他其中,12/25 M*N的矩阵的矩阵FDCT变换公式变换公式11*00(21)(21)(,)*cos*cos22MNpqmnmnmpnqF p qaaAMN01,01pMqN1,0papM2,11papMM2,11qaqNN1,0qaqN逆变换逆变换11*00(21)(21)*(,)*cos*cos22MNmnpqmnmpnqAaaF p qMN13/25 DCT示例:示例:矩阵矩阵A
10、=1 2 3 4求求DCT变换变换 5 -1-2 014/25 15/25 lena.bmp原图矩阵lena.bmpDCT矩阵16/25 17/25 能量集中在第一个数值,矩阵的第一个为低频系数能量集中在第一个数值,矩阵的第一个为低频系数-主要值,后面的为高频分量主要值,后面的为高频分量-细节值细节值18/25 5.2 JPEG算法的主要计算步骤算法的主要计算步骤(续续3)二维DCT的计算n将二维DCT变成一维DCT,如图5-3所示n实际的快速计算方法可参看参考文献C.Loeffler当计算精度足够高时,DCT变换不会损失图像质量(,)f i j(,)F u v(,)G i v垂直方向81 D
11、CT水平方向81 DCT图5-3 二维DCT变换方法19/25 5.2 JPEG算法的主要计算步骤算法的主要计算步骤(续续4)n 5.2.2 量化量化-有损的有损的对FDCT变换后的(频率的)系数进行量化量化目的是降低非是降低非“0”系数的幅度以及系数的幅度以及增加增加“0”值系数的数目值系数的数目量化是造成图像质量下降的最主要原因量化用下式计算 DCT系数输入量化DCT系数输出图5-4 均匀量化器(,)(,)()(,)F u vF u vroundQ u v四舍五入DCT系数系数量化矩阵注:通过心理视觉实验,来确定不同频率的视觉阈值,得到量化器的步长20/25 5.2 JPEG算法的主要计算
12、步骤算法的主要计算步骤(续续5)量化步距量化步距161110162440516112121419265860551413162440576956141722295187806218223756681091037724355564811041139249647887103121120101729295981121001039917182447999999991821266699999999242656999999999947669999999999999999999999999999999999999999999999999999999999999999999999999999表5-2 亮度量化
13、表表5-3 色差量化表n按照系数所在的位置和每种颜色分量的色调值来确定的n人眼对亮度信号亮度信号比对色差信号色差信号更敏感,亮度的区分比较细致n人眼对低频分量低频分量的图像比对高频分量高频分量的图像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小21/25 5.2 JPEG算法的主要计算步骤算法的主要计算步骤(续续6)n 5.2.3 Z字形编排字形编排为增加连续的“0”值系数的个数,即“0”的游程长度,如图5-5所示DCT系数的序号如图5-6所示,序号小的位置表示频率较低,把一个8 8的矩阵变成一个1 64的矢量DC系数AC系数开始图5-5 量化DCT系数的编排 图5-6 DCT系数序
14、号 22/25 DC系数系数(直流分量)(直流分量)-能量一般较大,相邻的能量一般较大,相邻的8*8块之间块之间的的DC系数有强的相关性,系数有强的相关性,JPEG中对其采用中对其采用差分编码,差分编码,记录差值记录差值DIFF=DCj-DCj-1 AC系数系数(交流分量)(交流分量)-63个交流分量采用个交流分量采用Z字形行程编码字形行程编码 23/25 5.2 JPEG算法的主要计算步骤算法的主要计算步骤(续续7)n5.2.4 熵编码熵编码用于进一步压缩采用DPCM编码后的DC系数差值和RLE编码后的AC系数将DC、AC系数用中间符号表示,中间符号由两个符号组成n由于由于DC系数和系数和A
15、C系数的统计特性不同,因此在熵编码时需要对系数的统计特性不同,因此在熵编码时需要对DC系系数和数和AC系数分别处理系数分别处理 用霍夫曼编码器n可用简单的查表可用简单的查表(lookup table)方法进行编码方法进行编码n霍夫曼编码器对出现频度比较高的符号分配比较短的代码,而对出现霍夫曼编码器对出现频度比较高的符号分配比较短的代码,而对出现频度较低的符号分配比较长的代码频度较低的符号分配比较长的代码n这种可变长度的霍夫曼码表可事先定义这种可变长度的霍夫曼码表可事先定义24/25(1)DC系数(书本系数(书本P67)1、DIFF=DCj-DCj-1,得到差分的系数值得到差分的系数值 2、生成
16、中间符号、生成中间符号 (SSSS,DIFF)位数位数 s 可以表示的范围可以表示的范围 【-2s+1,-2s-1】,】,【2s-1,2s-1】0位和位和1位单独位单独 3、符号编码、符号编码 位数位数SSSS的霍夫曼编码查表,(书的霍夫曼编码查表,(书p68页)页)幅度幅度DIFF用补码表示,正数时最高有效位为用补码表示,正数时最高有效位为1,负,负数时最高有效位为数时最高有效位为0 表示差值所需要的位数起始值或差值25/25(2)AC系数(书本系数(书本P69)1、生成中间符号、生成中间符号(RRRRSSSS,AC幅度值)幅度值)RRRRSSSS用用 R/S 表示表示 用用4位表示位表示R
17、RRR的最大值为的最大值为24-1=15,如果出现连续的超过,如果出现连续的超过15个个0时,时,用增加扩展符号表示用增加扩展符号表示 分别有分别有 R/S=0/0-EOB R/S=15/0=F/0-ZRL(表示有(表示有16个个0)2、符号编码、符号编码 R/S的霍夫曼编码查表,(书的霍夫曼编码查表,(书P70页)页)幅度幅度用补码表示,正数时最高有效位为用补码表示,正数时最高有效位为1,负数时最高,负数时最高有效位为有效位为0表示AC值所需要的位数表示0的行程长度26/25 幅度值如果是负数采用其补码来表示,也可以使用另幅度值如果是负数采用其补码来表示,也可以使用另一种方法,编码规则如下:
18、一种方法,编码规则如下:假设假设 幅度值幅度值DIFF用用S位来表示,位来表示,如果如果DIFF0,附加位用其最低的,附加位用其最低的S位表示位表示 如果如果DIFF0,附加位用,附加位用DIFF-1的补码的最低的的补码的最低的S位表示(位表示(或者也可以扣除符号位取反码或者也可以扣除符号位取反码)27/25 5.3 JPEG压缩和编码举例压缩和编码举例n假设有一个88亮度图像块,在它之前的一个88图像块计算得到的DC系数值为20,整个编码过程如图5-8所示。说明如下(1)在这个例子中,计算正向离散余弦变换(FDCT)之前对源图像中的每个样本数据减去了128,在逆向离散余弦变换之后对重构图像中
19、的每个样本数据加了128。(2)经过DCT变换和量化之后的系数如图5-8(f)所示(3)经过Z字形排列后的系数为15,0,-2,-1,-1,-1,0,0,-1,0,0。(4)DC系数和AC系数的中间符号以及经过编码后的代码如下所示 28/25 DC系数AC系数开始系数的Z字形编码:15,0,-2,-1,-1,-1,0,0,-1,0029/25 5.3 JPEG压缩和编码举例压缩和编码举例(续续)图5-8 JPEG压缩编码举例 235.6-1.0-12.1-5.20 2.1-1.7-2.7 1.3-22.6-18.5-6.2-3.2-2.9-0.1 0.4-1.2-10.9-9.3-1.6 1.
20、5 0.2-0.9-0.6-0.1-7.1-1.9 0.2 1.5 0.9-0.1 0.0 0.3-0.6-0.8 1.5 1.6-0.1-0.7 0.6 1.3 1.8-0.2-1.6-0.3-0.8 1.5 1.0-1.0-1.3-0.4-0.3-1.5-0.5 1.7 1.1-0.8-2.6 1.6-3.8-1.8 1.9 1.2-0.6-0.4 240 0-10 0 0 0 0 0-24-12 0 0 0 0 0 0-14-13 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
21、 0 0 0 0 0 0 15 0-1 0 0 0 0 0-2-1 0 0 0 0 0 0-1-1 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 144 146 149 152 154 156 156 156 148 150 152 154 156 156 156 156 155 156 157 158 158 157 156 155 160 161 161 162 161 159 157 155 163 163 164 163 162 160 158 15
22、6 163 164 164 164 162 160 158 157 160 161 162 162 162 161 159 158 158 159 161 161 162 161 159 158 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
23、 (a)源图像样本(b)重构图像样本(c)FDCT系数(d)逆量化后的系数亮度量化值表(e)规格化量化系数 15 0-1 0 0 0 0 0-2-1 0 0 0 0 0 0-1-1 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 (f)规格化量化系数熵编码存储或传输IDCT加128(,)Fuv(,)fij(,)(,)()(,)FuvFuvroundQuv(,)Fuv(,)Fuv(,)(,)*(,)FuvFuvQuv对应矩阵元素相乘对应矩阵元素相除(,)Fuv(
24、,)fij中间符号:(3,-5)(1/2,-2)(0/1,-1)(0/1,-1)(0/1,-1)(2/1,-1)(0/0)编码输出:100 010 1101 1 0100 000 00 0 011100 01010 139 144 149 153 155 155 155 155 144 151 153 156 159 156 156 156 150 155 160 163 158 156 156 156 159 161 162 160 160 159 159 159 159 160 161 162 162 155 155 155 161 161 161 161 160 157 157 157
25、162 162 161 163 162 157 157 157 162 162 161 161 163 158 158 158 熵解码FDCT减12830/25 5.4 JPEG文件格式文件格式 nJPEG格式格式 广泛使用的JPEG文件格式是JPEG文件交换格式(JPEG File Interchange Format,JFIF),由于JFIF文件格式直接使用JPEG标准为应用程序定义的许多标记,因此JFIF格式就成了事实上的JPEG文件交换格式标准颜色空间颜色空间ITU-R BT.601 YCbCr每个用8位表示,一个亮度,2个色度31/25 5.5 JPEG 2000简介简介 n5.5.
26、1 JPEG 2000是什么是什么开发工作始于1996年1月,其目标是增强对连续色调图像的压缩效率、管理和传输,而又不使图像质量有明显的损失使用小波技术提高压缩比,用户可控制图像的分辨用户可控制图像的分辨率,率,用在网络上传输时可按照用户要求下载各种分辨率的图像。此外,该标准可提供无损压缩可提供无损压缩的图像,在文档中可提供更多的颜色信息32/25 5.5 JPEG 2000简介简介(续续1)n5.5.2 JPEG 2000的基本结构的基本结构JPEG 2000编码器的方框图如图5-9(a)所示。首先对源图像数据进行变换,再对变换的系数进行量化,然后在形成代码流(codestream)或称位流
27、(bitstream)之前进行熵(entropy)编码。解码器与编码器正好相反,如图5-9(b)所示。首先对码流进行熵解码,然后进行逆量化和逆向变换,最后重构图像 33/25 5.5 JPEG 2000简介简介(续续2)源图像数据(SourceImage Data)正变换(Forward Transform)量化(Quantisation)熵编码(Entropy Encoding)压缩图像数据(Compressed Image Data)存储或者传输(Store or Transmit)压缩图像数据(Compressed Image Data)熵解码(Entropy Decoding)逆量化(
28、De-quantisation)逆变换(Inverse Transform)重构像数据(ReconstructedImage Data)(a)编码器(b)译码器图5-9 JPEG 2000的基本结构34/25 5.5 JPEG 2000简介简介(续续3)n5.5.3 JPEG 2000的主要功能的主要功能与过去的图像压缩标准相比,JPEG 2000标准既提提高了性能又增加了功能高了性能又增加了功能。在相同质量的前提下与JPEG标准相比,JPEG 2000标准的压缩比可提高20%以上JPEG 2000能实现渐进传输能实现渐进传输,可先传输低分辨率的图像或图像的轮廓,然后逐步传输其他数据,不断提高
29、图像质量,以满足用户的需要支持兴趣区支持兴趣区(region of interest,ROI)的编码的编码n可指定感兴趣的图像区域,在压缩时对这些图像区指定特定的压缩质量,这给用户带来了极大的方便。例如,在有些情况下图像中只有一小块区域对用户是有用的,对这些区域采用低压缩比,而其他区域采用高压缩比,在保证不丢失重要信息的同时能有效地压缩数据量 35/25 课堂作业课堂作业 假设有一个假设有一个8*8的亮度图像块,其前的亮度图像块,其前2个个8*8图像块的图像块的DC系数为系数为 27,32,该图块规格化后的量化系数表为,该图块规格化后的量化系数表为,求其中间符号输出求其中间符号输出26 04000006-5-2000000000000000000000000000000000000000-10000000000000