【教学课件】第8章DCT与JPEG编码.ppt

上传人:牧羊曲112 文档编号:5659471 上传时间:2023-08-06 格式:PPT 页数:55 大小:287KB
返回 下载 相关 举报
【教学课件】第8章DCT与JPEG编码.ppt_第1页
第1页 / 共55页
【教学课件】第8章DCT与JPEG编码.ppt_第2页
第2页 / 共55页
【教学课件】第8章DCT与JPEG编码.ppt_第3页
第3页 / 共55页
【教学课件】第8章DCT与JPEG编码.ppt_第4页
第4页 / 共55页
【教学课件】第8章DCT与JPEG编码.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《【教学课件】第8章DCT与JPEG编码.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第8章DCT与JPEG编码.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标准的压缩率更高、性能更优越的JPEG

2、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=离散余弦变换,Fou

3、rier级数与余弦变换,若函数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的反余弦变换,一维离散余弦变换,将只在N个整数采样点上取值得离散函数f(x),x=0,1,2,.,N-1偶延拓到2N个点:则f(-1

4、)=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,则上式变为:,8.2 JPEG编码,1986年国际电话与电报咨询委员会CCITT与国际标准化组织ISO成立联合图象专家组(JPEG=Joint Photographic Experts Group)1992年9月1

5、8日通过了适用于灰度图与真彩图的静态图像压缩标准:Digital compression and coding of continuous-tone still images(连续色调静态图像的数字压缩与编码)(CCITT T.81,ISO/IEC 10918),简称为JPEG标准(参见网站),JPEG标准的组成部分,ISO/IEC 10918-1:1994:Requirements and guidelines(需求与指导方针)ISO/IEC 10918-2:1995:Compliance testing(一致测试)ISO/IEC 10918-3:1997:Extensions(扩展)ISO

6、/IEC 10918-3:1997/Amd 1:1999: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 Authorit

7、ies(REGAUT)(注册JPEG简表、SPIFF简表、SPIFF标签、SPIFF颜色空间、APPn标记、SPIFF压缩类型和注册权限),JPEG采用的压缩算法与编码模式,JPEG专家组开发了两种基本的压缩算法:采用以DCT为基础的有损压缩算法采用以预测技术为基础的无损压缩算法在JPEG标准中定义了四种编码模式:无损模式:基于DPCM基准模式:基于DCT,一遍扫描递进模式:基于DCT,从粗到细多遍扫描层次模式:含多种分辨率的图(2n倍),JPEG四种编码模式的关系图,本节只介绍基于DCT有损压缩算法的基准(baseline)模式中的顺序(sequential)处理所对应的算法和格式,其熵编码

8、只使用Huffman编码而在扩展的基于DCT或无损压缩算法中,既可以使用Huffman编码,又可以使用算术编码,JPEG图像的压缩比与质量,JPEG在使用DCT进行有损压缩时,压缩比可调整在压缩1030倍后,图像效果仍然不错,因此得到了广泛的应用,一、JPEG压缩的算法概要,JPEG压缩是有损压缩,它利用了人的视觉系统的特性,使用量化和无损压缩编码相结合来去掉视角的冗余信息和数据本身的冗余信息。JPEG属于结合变换编码(DCT)与熵编码(RLE/Huffman)的混合编码 JPEG算法与彩色空间无关,因此“RGB到YUV变换”和“YUV到RGB变换”不包含在JPEG算法中。JPEG算法处理的彩

9、色图像是单独的彩色分量图像,因此它可以压缩来自不同彩色空间的数据,如RGB,YCbCr和CMYK,JPEG编码步骤,压缩编码大致分成三个步骤:(1)使用正向DCT(FDCT=forward DCT)把空间域表示的图变换成频率域表示的图。(2)使用加权函数对DCT系数进行量化,这个加权函数对于人的视觉系统是最佳的。(3)使用Huffman可变字长编码器对量化系数进行编码译码/解压缩的过程与压缩编码过程正好相反,JPEG压缩编码-解压缩算法框图,二、JPEG压缩编码算法的主要计算步骤,(0)8*8分块(1)正向离散余弦变换(FDCT)(2)量化(quantization)(3)Z字形编码(zigz

10、ag scan)(4)使用差分脉冲编码调制DPCM对直流系数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,逆变换IDCT使用下式计算:(3)在计

11、算两维的DCT变换时,可使用下面的计算式把两维的DCT变换变成两次一维的DCT变换,两维DCT变换方法,2.量化,量化指对经过FDCT变换后的频率系数进行量化量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目量化是图像质量下降的最主要原因对于有损压缩算法,JPEG算法使用如下图所示的线性(均匀)量化器进行量化量化步距是按照系数所在的位置和每种颜色分量的色调值来确定,量化表,因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化表和色差量化表此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小这两个表中的数值对CCIR

12、601标准电视图像已经是最佳的。如果不使用这两种表,你也可以用自己的量化表替换它们,色度量化值亮度量化值,量化结果的计算,可以用下式计算量化值:其中,Sq(u,v)为量化后的结果、F(u,v)为DCT系数、Q(u,v)为量化表中的数值,3.Z字形编排,量化后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排,量化DCT系数的序号,经Z字形排列后,DCT系数的序号如下图所示,这样就把一个二维的88矩阵变成了一个一维的1 64矢量,频率较低的系数放在矢量的顶部,4.直流系数的编码,88图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系

13、数的数值比较大,二是相邻88图像块的DC系数值变化不大根据这些特点,JPEG算法使用了差分脉冲编码调制(DPCM)技术,对相邻图像块之间的DC系数的差值(Delta)进行编码:Delta DC(0,0)k-DC(0,0)k-1,5.交流系数的编码,量化AC系数的特点是163矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码JPEG使用了1个字节的高4位来表示连续“0”的个数,而使用它的低4位来表示编码下一个非“0”系数所需要的位数,跟在它后面的是非0量化AC系数的数值,6.熵编码,JPEG对DPCM编码后的直流DC系数和RLE编码后

14、的交流AC系数使用熵编码作进一步的压缩在JPEG有损压缩算法中,使用Huffman编码器来减少熵。使用Huffman编码器的理由是可以使用很简单的查表(lookup table)方法进行编码压缩数据符号时,Huffman编码器对出现频度比较高的符号分配比较短的代码,而对出现频度较低的符号分配比较长的代码。这种可变长度的Huffman码表可以事先进行定义,DC码表符号举例,若DC的值(Value)为4,符号SSS用于表达实际值所需要的位数,实际位数就等于3,JPEG标准提供的亮度DC系数差的Huffman编码表,JPEG标准提供的色差DC系数差的Huffman编码表,JPEG标准提供的亮度AC系

15、数的Huffman编码表的开始部分,JPEG标准提供的色差AC系数的Huffman编码表的开始部分,7.组成位数据流,JPEG编码的最后一个步骤是把各种标记代码和编码后的图像数据组成一帧一帧的数据,这样做的目的是为了便于传输、存储和译码器进行译码这样的组织的数据通常称为JPEG位数据流(JPEG bitstream),三、应用JPEG算法举例,源图像数据 FDCT系数,量化表 标准量化系数,解标准量化系数 重构图像数据,8.3 JPEG文件格式,JPEG在制定JPEG标准时,虽然定义了许多标记(marker)用来区分和识别图像数据及其相关信息,但并没有具体定义明确的JPEG文件格式C-Cube

16、 Microsystems公司的Eric Hamilton于所定义的JFIF(JPEG File Interchange Format JPEG文件交换格式)1.02成为JPEG文件(*.JPG)的事实标准下面只介绍JPEG的基准模式(Baseline DCT)下的JFIF格式,一.图像准备,1.分组元灰度图:一个组元真彩图:三个组元RGB等分辨率YCrCb不等分辨率:4:2:2或4:1:1JPEG文件使用的颜色空间是1982年推荐的电视图像信号数字化标准CCIR 601(现改为ITU-R BT.601)。在这个彩色空间中,每个分量、每个像素的电平规定为256级,用8位代码表示可使用前面介绍过

17、的公式,在RGB空间与YCbCr空间之间相互转换 2.分块一般分成8*8的块,不足的部分补边缘像素,二.文件格式框架,JFIF格式的JPEG文件以开始后跟含JFIF标识与版本号及图像参数的接着是若干可选的存放商业公司信息或应用软件与扩展信息的也是可选的和可多个的;对Baseline,一幅图象只有一个帧,所以只有一个描写具体图像参数的,而一帧只有一个记录Huffman表序号与频率分量信息的一个可包含若干Huffman表说明的是可选的图像的压缩数据存放在一系列由若干8*8的数据块组成的MCU(Minimum Data Unit最小数据单元)中文件最后以结束,即:,三.文件格式内容,注:多字节无符号

18、整数的高位字节在前(与Intel CPU不同)图象开始标记:0 xff,SOI(0 xd8)应用0标记段(APP0 marker segment):应用0标记:0 xff,APP0(0 xe0)段长度:2B(无符号整数,长度从本字段开始计算,下同)标识符:5B:JFIF0版本:2B:主版本号(1B,=1),次版本号(1B,2)密度单位:1B(=0:X与Y的密度表示X与Y的象素形状比,=1:点数/英寸,=2:点数/厘米)X方向象素密度:2B(无符号整数)Y方向象素密度:2B(无符号整数),略图水平象素数(Xthumbnail):1B略图垂直象素数(Ythumbnail):1B略图(thumbna

19、il):3*Xthumbnail*Ythumbnail B(若Xthumbnail=Ythumbnail=0 则无略图)应用n标记段:(可选,可若干段)应用n标记:0 xff,APPn(0 xen)(n=015)段长度:2B(无符号整数)段内容:(段长度-2)B量化表定义段:(可选,可若干段)定义量化表标记:0 xff,DQT(0 xdb)段长度:2B(无符号整数)量化表说明:(可若干个,一般只一个)量化表精度与序号:1B 精度Pm:高4位,=0(8b),1(16b),Baseline=0序号Nm:低4位,=0,1,2,3量化表:64*(Pm+1)B(Z字形排序),帧参数段:(对Baselin

20、e,一幅图象只有一个帧)帧开始标记:0 xff,SOF0(0 xc0)(Baseline DCT帧)段长度:2B(无符号整数)数据精度:1B(位数/象素/颜色分量,为输入数据的位数,Baseline=8)图象高:2B(无符号整数,光栅行数,不包含为得整数个MCU而对底边的复制行,若=0则行数由第一个扫描(scan)末尾的DNL标记(0 xff,0 xdc)确定)图象宽:2B(无符号整数,光栅行内的象素数,不包含为得整数个MCU而对最右列的复制列)颜色分量说明:分量数NC:1B第k个分量:(k=1NC,共NC个)标识:1B相对亚采样率:1B(高4位=水平采样率Hk;低4位=垂直采样率Vk;都可=

21、0,1,2,3)量化表序号Qk:1B(DCT=0,1,2,3;DPCM=0)(如对缺省YCbCr:NC=3,Y:ID1=0,(H1,V1)=0 x22,Q1=0;Cb:ID2=1,(H2,V2)=0 x11,Q2=1;Cr:ID3=2,(H3,V3)=0 x11,Q3=1),Huffman表定义段:(可选)定义Huffman表标记:0 xff,DHT(0 xc4)段长度:2B(无符号整数)Huffman表说明:(可若干个)表类型与序号:1B(类型:高4位,=0(DC),1(AC);序号:低4位,=0,1,2,3,Baseline只允许取0,1)位表:16B(L1L16,Lk=长度为k位的Huf

22、fman码字的个数)值表:Lk B(Vk,i=第i个长度为k位的码值)扫描参数段:(对Baseline,一帧只有一个扫描段)扫描开始标记:0 xff,SOS(0 xda)段长度:2B(无符号整数)扫描分量说明:分量数NS:1B(NC)第k个分量:(k=1NS,共NS个)标识:1B(帧参数段的IDk)Huffman表序号:1B(DC:高4位,=0,1,2,3;AC:低4位,=0,1,2,3;Baseline都只允许取0,1)频率选择起点:1B(对顺序编码如Baseline为0),频率选择终点:1B(对顺序编码如Baseline可为0只含DCT系数或630 x3f)逐渐逼近位位置:1B(对顺序编码

23、如Baseline为0)压缩数据:由若干MCU(Minimum Data Unit,最小数据单元)组成图象被从上到下、从左到右划分成若干MCU,若图象的高和宽不是MCU的整数倍,则对图象的底边和最右列进行复制对只有一个颜色分量的灰度图,一个MCU为一个8*8的数据块,对应于图象中的一个8*8象素阵列对有三个颜色分量的彩色图,一个MCU由若干8*8的数据块组成,块的顺序和数目由扫描内的亚抽样比率决定应忽略编码中0 xff后的0 x00图象结束标记:0 xff,EOI(0 xd9),四.文件一般顺序,JITF格式的JPEG文件(*.jpg)的一般顺序为:0 xFF SOI(0 xD8)0 xFF

24、APP0(0 xE0)段长 图象参数若干应用段:0 xFF APPn(0 xEn)段长 应用说明0 xFF DQT(0 xDB)段长 量化表说明0 xFF SOF0(0 xC0)段长 帧参数0 xFF DHT(0 xC4)段长 Huffman表说明0 xFF SOS(0 xDA)段长 扫描参数压缩数据0 xFF EOI(0 xD9),作业,1.(必做)编写一段程序实现JPEG算法中的8*8的二维DCT变换、量化、逆量化和逆二维DCT变换。具体要求:逐个读入下页的4个8*8的十六进制整数串(为灰度图lena.bmp中的一个16*16像素块),量化采用标准亮度量化表,输出内容(ASCII码)同前例

25、(原始数据、变换后的数据、量化后的数据、逆量化的数据和反变换的数据),2.(大作业4)实现JPEG算法的编解码,读写并显示JPG文件及BMP和GIF文件,实现这几种文件格式的相互转换。,复习思考题,DCT的英文原文与中文译文各是什么?它与三角级数有什么关系?讲稿中它被用在什么地方?JPEG采用了哪些压缩算法与编码模式?我们所讲的是其中的哪一种?给出JPEG压缩编码算法的主要计算步骤。其中使图像质量下降的是哪一步?DC系数和AC系数的含义是什么?它们各有什么特点?在JPEG中为什么要进行Z字形编码和RLE编码?在JPEG中使用了哪些熵编码?在JPEG中给出了哪几种标准表?,JPEG定义了标准文件格式吗?*.JPG文件使用的是什么格式?JPG文件使用的是什么颜色空间?对其不同分量又是如何采样的?JPG文件中有哪些段?它们是按什么顺序排列的?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号