《第8章DCT与JPEG编码名师编辑PPT课件.ppt》由会员分享,可在线阅读,更多相关《第8章DCT与JPEG编码名师编辑PPT课件.ppt(55页珍藏版)》请在第壹文秘上搜索。
1、第第8章章 DCT与与JPEG编码编码 JPEG(Joint Photographic Experts Group联合图象专家组)是(ITU的前身)国际电话与电报咨询委员会CCITT与ISO于1986年联合成立的一个小组,负责制定静态图像的编码标准 1992年9月JPEG推出了ISO/IEC 10918标准(CCITT T.81)连续色调静态图像的数字压缩与编码,简称为JPEG标准,适用于灰度图与真彩图的静态图像的压缩 2000年12月JPEG在JBIG(Joint Bi-level Image experts Group联合二值图像专家组)的帮助下又推出了比JPEG标准的压缩率更高、性能更优
2、越的JPEG 2000标准ISO/IEC 15444(ITU T.8002002年8月)JPEG 2000图像编码系统,适用于二值图、灰度图、伪彩图和真彩图的静态图像压缩 JPEG主要采用了以DCT为基础的有损压缩算法,在本章中会作较为详细的介绍。而JPEG 2000则采用的是性能更优秀的小波变换,将在下一章介绍 由于视频的帧内编码就是静态图像的编码,所以JPEG和JPEG 2000的算法也用于MPEG的视频编码标准中8.1 DCT 与上一章所讲的几种熵编码不同,DCT是一种变换编码,使用十分广泛,也是JPEG编码中的一种基础算法 DCT=Discrete Cosine Transform=离
3、散余弦变换Fourier级数与余弦变换 若函数f(x)以2 l为周期,在-l,l 上绝对可积,则f(x)可展开成Fourier级数:其中余弦级数 若f(x)为奇或偶函数,有 an0或bn0,则f(x)可展开为正弦或余弦级数:任给f(x),x0,l,总可以将其偶延拓到-l,l,然后再以2l为周期进行周期延拓,使其成为以2l为周期的偶函数,从而可以展成余弦级数连续余弦变换 f(x)展成余弦级数:其中展开式系数的计算式:称为f(x)的正(连续)余弦变换 展开式(余弦级数)本身称为an的反余弦变换 10cos2)(nnlxnaaxfllndxlxnxflacos)(1一维离散余弦变换 将只在N个整数采
4、样点上取值得离散函数f(x),x=0,1,2,.,N-1偶延拓到2N个点:则f(-1)=f(0),函数对称于点x=-1/2 将f(x)平移-1/2,区间的半径 l=N:再以2N为周期进行周期延拓,可得:为了使IDCT中的a0能写入和式,引入函数 为了使正反变换对称,将拆开后分别乘在正反变换中,并改记an 为F(n)、n为u、x为i,则前式变为:二维离散余弦变换 设二维离散函数f(i,j),i,j=0,1,2,.,N-1,与一维类似地延拓,可得二维DCT:若N=8,则上式变为:101010102)12(cos2)12(cos),()()(2),(:IDCT2)12(cos2)12(cos),()
5、()(2,:FDCTNuNvNiNjNvjNuivuFvCuCNjifNvjNuijifvCuCNv)F(u7070707016)12(cos16)12(cos),()()(41),(:IDCT16)12(cos16)12(cos),()()(41,:FDCTuvijvjuivuFvCuCjifvjuijifvCuCv)F(u8.2 JPEG编码 1986年国际电话与电报咨询委员会CCITT与国际标准化组织ISO成立联合图象专家组(JPEG=Joint Photographic Experts Group)1992年9月18日通过了适用于灰度图与真彩图的静态图像压缩标准:Digital com
6、pression and coding of continuous-tone still images(连续色调静态图像的数字压缩与编码)(CCITT T.81,ISO/IEC 10918),简称为JPEG标准(参见网站www.jpeg.org)JPEG标准的组成部分 ISO/IEC 10918-1:1994:Requirements and guidelines(需求与指导方针)ISO/IEC 10918-2:1995:Compliance testing(一致测试)ISO/IEC 10918-3:1997:Extensions(扩展)ISO/IEC 10918-3:1997/Amd 1:1
7、999:Provisions to allow registration of new compression types and versions in the SPIFF header(可供在SPIFF头中注册新压缩类型和版本)ISO/IEC 10918-4:1999:Registration of JPEG profiles,SPIFF profiles,SPIFF tags,SPIFF colour spaces,APPn markers,SPIFF compression types and Registration Authorities(REGAUT)(注册JPEG简表、SPIF
8、F简表、SPIFF标签、SPIFF颜色空间、APPn标记、SPIFF压缩类型和注册权限)JPEG采用的压缩算法与编码模式 JPEG专家组开发了两种基本的压缩算法:采用以DCT为基础的有损压缩算法 采用以预测技术为基础的无损压缩算法 在JPEG标准中定义了四种编码模式:无损模式:基于DPCM 基准模式:基于DCT,一遍扫描 递进模式:基于DCT,从粗到细多遍扫描 层次模式:含多种分辨率的图(2n倍)JPEG四种编码模式的关系图 本节只介绍基于DCT有损压缩算法的基准(baseline)模式中的顺序(sequential)处理所对应的算法和格式,其熵编码只使用Huffman编码 而在扩展的基于DC
9、T或无损压缩算法中,既可以使用Huffman编码,又可以使用算术编码JPEG图像的压缩比与质量 JPEG在使用DCT进行有损压缩时,压缩比可调整 在压缩1030倍后,图像效果仍然不错,因此得到了广泛的应用一、JPEG压缩的算法概要 JPEG压缩是有损压缩,它利用了人的视觉系统的特性,使用量化和无损压缩编码相结合来去掉视角的冗余信息和数据本身的冗余信息。JPEG属于结合变换编码(DCT)与熵编码(RLE/Huffman)的混合编码 JPEG算法与彩色空间无关,因此“RGB到YUV变换”和“YUV到RGB变换”不包含在JPEG算法中。JPEG算法处理的彩色图像是单独的彩色分量图像,因此它可以压缩来
10、自不同彩色空间的数据,如RGB,YCbCr和CMYK JPEG编码步骤 压缩编码大致分成三个步骤:(1)使用正向DCT(FDCT=forward DCT)把空间域表示的图变换成频率域表示的图。(2)使用加权函数对DCT系数进行量化,这个加权函数对于人的视觉系统是最佳的。(3)使用Huffman可变字长编码器对量化系数进行编码 译码/解压缩的过程与压缩编码过程正好相反JPEG压缩编码-解压缩算法框图二、JPEG压缩编码算法的主要计算步骤(0)8*8分块(1)正向离散余弦变换(FDCT)(2)量化(quantization)(3)Z字形编码(zigzag scan)(4)使用差分脉冲编码调制DPC
11、M对直流系数DC(direct current)进行编码(5)使用行程长度编码RLE对交流系数AC(alternating current)进行编码(6)熵编码(Huffman/算术)1.FDCT 下面对正向离散余弦变换(FDCT)变换作几点说明。(1)对每个单独的彩色图像分量,把整个分量图像分成若干88的图像块,并作为两维离散余弦变换的输入。通过DCT变换,把能量集中在少数几个系数上 (2)DCT变换使用下式计算,其中 ,f(i,j)=v(i,j)128 并称 为直流系数DC,其他F(u,v)为交流系数AC 707016)12(cos16)12(cos),()()(41),(ijvjuiji
12、fvCuCvuF0 ,10,21)(wwwCfjifFij8),(81)0,0(7070 逆变换IDCT使用下式计算:(3)在计算两维的DCT变换时,可使用下面的计算式把两维的DCT变换变成两次一维的DCT变换 707016)12(cos16)12(cos),()()(41),(uvvjuivuFvCuCjif7016)12(cos),()(21),(iuiviGuCvuF7016)12(cos),()(21),(jvjjifvCviG两维DCT变换方法2.量化 量化指对经过FDCT变换后的频率系数进行量化 量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目 量化是图像质量下降的最主
13、要原因 对于有损压缩算法,JPEG算法使用如下图所示的线性(均匀)量化器进行量化 量化步距是按照系数所在的位置和每种颜色分量的色调值来确定 量化表 因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化表和色差量化表 此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小 这两个表中的数值对CCIR 601标准电视图像已经是最佳的。如果不使用这两种表,你也可以用自己的量化表替换它们 色度量化值亮度量化值16111016244051611718244799999999121214192658605518212666999999991
14、4131624405769562426569999999999141722295187806247669999999999991822375668109103779999999999999999243555648110411392999999999999999949647887103121120101999999999999999972929598112100103999999999999999999量化结果的计算 可以用下式计算量化值:其中,Sq(u,v)为量化后的结果、F(u,v)为DCT系数、Q(u,v)为量化表中的数值),(),(),(vuQvuFroundvuSq3.Z字形编排 量化
15、后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排 量化DCT系数的序号 经Z字形排列后,DCT系数的序号如下图所示,这样就把一个二维的88矩阵变成了一个一维的1 64矢量,频率较低的系数放在矢量的顶部 01561415272824713162629423812172530414391118243140445310192332394552542022333846515560213437475056596135364849575862634.直流系数的编码 88图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系数的数值比较大,二是
16、相邻88图像块的DC系数值变化不大 根据这些特点,JPEG算法使用了差分脉冲编码调制(DPCM)技术,对相邻图像块之间的DC系数的差值(Delta)进行编码:Delta DC(0,0)k-DC(0,0)k-15.交流系数的编码 量化AC系数的特点是163矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码 JPEG使用了1个字节的高4位来表示连续“0”的个数,而使用它的低4位来表示编码下一个非“0”系数所需要的位数,跟在它后面的是非0量化AC系数的数值6.熵编码 JPEG对DPCM编码后的直流DC系数和RLE编码后的交流AC系数使用熵编码作进一步的压缩 在JPEG有损压缩算法中,使用Huffman编码器来减少熵。使用Huffman编码器的理由是可以使用很简单的查表(lookup table)方法进行编码 压缩数据符号时,Huffman编码器对出现频度比较高的符号分配比较短的代码,而对出现频度较低的符号分配比较长的代码。这种可变长度的Huffman码表可以事先进行定义 DC码表符号举例 若DC的值(Value)为4,符号SSS用