多媒体信息处理综合课程设计_第1页
多媒体信息处理综合课程设计_第2页
多媒体信息处理综合课程设计_第3页
多媒体信息处理综合课程设计_第4页
多媒体信息处理综合课程设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

兰州交通大学《多媒体信息处理综合课程设计》JPEG编解码方法设计与实现学院专业:班级:姓名:2014年1月TOC\o"1-3"\h\u138171.设计目的 3159332.实验设备及材料 3167893.设计要求 3221004.原理 387544.1JPEG 3115104.2JPEG压缩中图像文件的格式 4234264.3JPEG编码原理 5218954.3.1离散余弦变换 6163584.3.2量化 6315404.3.3行程编码和熵编码 738405.程序设计 991276.实验结果 18209897.总结 20设计目的1.掌握JPEG编解码的基本原理和方法。2.学习使用程序设计环境。3.使用设计框架构造应用程序。4.掌握JPEG编码、解码实现。实验设备及材料1.PC机一台2.MATLAB设计要求拍摄BMP图像,利用算法程序将摄入的图像进行编码,产生JPEG压缩图像,生成解压缩图像送显示设备显示,对视觉压缩结果进行评价并计算压缩比。原理4.1JPEGJPEG(JointPhotographicExpertsGroup)是在国际标准化组织(ISO)领导之下制定静态图像压缩标准的委员会,第一套国际静态图像压缩标准ISO10918-1(JPEG)就是该委员会制定的。由于JPEG优良的品质,使他在短短几年内获得了成功,被广泛应用于互联网和数码相机领域,网站上80%的图像都采用了JPEG压缩标准。JPEG本身只有描述如何将一个影像转换为字节的数据串流(streaming),但并没有说明这些字节如何在任何特定的储存媒体上被封存起来。.jpeg/.jpg是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。而且JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,品质就越高。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像4.2JPEG压缩中图像文件的格式由于图像数据文件的格式有很多,如GIF、TIFF、PCX、TGA、BMP、JPEG等。而现在实现的是BMP和JPEG的相互转换,所以要具体介绍BMP和JPEG文件的格式。BMP图像采用RGB(RedGreenBlue)色彩模型,将各种颜色视为为红,绿,蓝(R,G,B)三个部分的组合。由于一幅图像中许多像素对应的颜色是相同的,BMP图像中采用了一个表:表中的每一行记录一种颜色的R,G,B值。这样,当表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值,这个表在BMP图像中称为调色板。有一种图,它的颜色数高达256×256×256种,也就是说包含上述提到的R,G,B颜色表示方法中所有的颜色,这种图叫做真彩色图(TrueColor)。真彩色图并不是说一幅图包含了所有的颜色,而是说它具有显示所有颜色的能力,即最多可以包含所有的颜色。表示真彩色图时,每个象素直接用R,G,B三个分量字节表示,而不采用调色板技术。4.3JPEG编码原理

JPEG的压缩编码过程大致分成三个步骤:1、使用正向离散余弦变换把空间域表示的图变换成频率域表示的图;2、使用加权函数对DCT系数进行量化,这个加权函数对于人的视觉系统是最佳的;3、使用霍夫曼可变字长编码器对量化系数进行编码。下面依次介绍压缩过程中应用到的技术。4.3.1离散余弦变换离散余弦变换是压缩编码的基础。在JPEG中,首先将图像分割成8x8像素的小块,然后进行余弦变换,其变换式为(M=N=8):对于每个8×8二维原图像采样数据块,64点阵的离散函数FDCT把它们作为输入信号,然后分解成64个正交基信号,每个正交基信号对应于64个二维空间频率中的一个,这些空间频率是由输入信号的频谱组成。FDCT的输出是64个基信号的幅值(即DCT系数),每个系数值由64点阵输入信号唯一地确定,即离散余弦变换的变换系数。在频域平面上变换系数是二维频域变量u和v的函数。因为在一幅图像中像素之间的灰度或色差信号变化缓慢,在8×8子块中像素之间的相关性很强,所以通过离散余弦正变换处理后,在空间频率低频范围内集中了数值大的系数,这就为数据压缩提供了可能。4.3.2量化为了达到压缩数据的目的,对经过FDCT变换后的频率系数进行量化处理。量化处理是一个多到一的映射,它是造成DCT编/解码信息损失的根源,是图像质量下降的最主要原因。在JPEG标准中采用线性均匀量化器。量化定义为,对64个DCT变换系数除以量化步长,然后四舍五入取整。量化步长是量化表的元素,量化表元素随DCT变换系数的位置而改变。不同频率的余弦函数对视觉的影响不同,量化处理是在一定的主观保真度图像质量的前提下,可据不同频率的视觉阈值来选择量化表中元素值的大小。4.3.3行程编码和熵编码JPEG压缩的最后一步是对量化后的系数进行熵编码。这一步采用通用的无损数据压缩技术,对图像质量没有影响。在熵编码之前,需要把64个DCT系数转换为一串中间符号。其中直流系数和交流系数的编码方式不同。坐标u=v=0的值是直流分量(即DC系数)。直流系数表示当前分块中64个象素的平均值,相邻分块的直流系数具有很强的相关性,因此在编码时只需记录与前一分块的直流系数的差值,即直流系数的“中间符号”采用差分脉冲编码(DPCM),它是64个图像的采样平均值。DC系数的编码方法:第1块图像的DC系数是“真值”,以后各块的DC是与前1块DC系数的“差值”:

Diff=DC(i)-DC(i-1)其余63个AC系数编码是从左上方开始,沿箭头方向,对63个交流系数用“之”字型扫描,让它变成一维数组。这样做的目的是将低频系数放在前面,高频系数放在后面。因为高频系数中有很多0,为了节约空间,所以交流系数的“中间符号”用零行程码表示。接下来对中间符号进行熵编码,这一步的目的是利用符号的统计特性,进一步提高压缩率。JPEG标准规定的熵编码方式有两种:Huffman编码和自适应二进制算术编码。这两种编码各有优劣:“正宗”的Huffman编码过程要对输入序列进行两遍扫描,第一遍统计各个符号出现的概率,构造Huffman树,得到码书;第二遍用码书对符号进行编码。这么做的话,时间空间开销都较大。两遍扫描意味着要把整幅图像的“中间符号”都记录下来,不能“随到随编”。而且要把码书传给解码器,这会增加压缩文件的大小。JPEG的实际实现一般支持两种Huffman方式,一种是前述的“正宗”Huffman编码(称为optimized方式),另一种则采用JPEG标准AnnexK中给出的缺省码书。采用缺省码书的好处是输入序列只用扫描一遍,空间和实际开销都较小;缺点是,由于码书不是根据当前图像的统计信息得到的,那么压缩率会比“正宗”Huffman编码低一些。不过由于Huffman编码对概率误差不敏感,因此实践中常常采用缺省码书进行编码。算术编码和Huffman编码都是变长码,符号出现概率越高,码字越短。不同之处在于,Huffman编码每个符号对应的码字是确定的,每个码字的bit数为整数。算术编码的基本思想是用一个精度足够高的属于(0,1)的实数来表示整个输入序列,输入序列中每个符号对应的码字是不确定的,总体上每个符号对应的码字长度等于其信息熵(均以bit计),码字平均长度可能是小数。算术编码的压缩率通常高于Huffman编码。算术编码的另一个好处是,它很容易做成自适应的,因此只需扫描一遍输入序列,空间开销小很多。程序设计1、读入图像:clearI=imread('1.jpg');%读入原图像;R=I(:,:,1);R1=im2double(R);%将原图像转为双精度数据类型;2、进行DCT矩阵变换(重复三次),并显示原图像大小、压缩图像大小、压缩比:T=dctmtx(8);%产生二维DCT变换矩阵L=blkproc(R1,[88],'P1*x*P2',T,T');%计算二维DCT,矩阵T及其转置T’是DCT函数P1*x*P2的参数Mask=[1010000011001000110000000000000000000000000000000000000000000000];%二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个L2=blkproc(L,[88],'P1.*x',Mask);%只保留DCT变换的10个系数[mn]=size(L2);J=[mn];fori=1:mvalue=L2(i,1);num=1;forj=2:nifL2(i,j)==valuenum=num+1;elseJ=[Jnumvalue];num=1;value=L2(i,j);endendJ=[Jnumvalue];enddisp('原图像大小')whos('L2');disp('压缩图像大小:')whos('J');disp('图像的压缩比:')disp(m*n/length(J))%解压缩t1=J(1);t2=J(2);K(1:t1,1:t2)=0;i1=1;j1=1;fori=3:2:length(J)c1=J(i);c2=J(i+1);forj=1:c1K(i1,j1)=c2;j1=j1+1;ifj1>t2i1=i1+1;j1=1;endendendR2=blkproc(K,[8,8],'P1*x*P2',T',T);%逆DCT,重构图像G=I(:,:,2);G1=im2double(G);%将原图像转为双精度数据类型;T=dctmtx(8);%产生二维DCT变换矩阵L=blkproc(G1,[88],'P1*x*P2',T,T');%计算二维DCT,矩阵T及其转置T’是DCT函数P1*x*P2的参数Mask=[1010000011001000110000000000000000000000000000000000000000000000];%二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个L2=blkproc(L,[88],'P1.*x',Mask);%只保留DCT变换的10个系数[mn]=size(L2);J=[mn];fori=1:mvalue=L2(i,1);num=1;forj=2:nifL2(i,j)==valuenum=num+1;elseJ=[Jnumvalue];num=1;value=L2(i,j);endendJ=[Jnumvalue];enddisp('原图像大小')whos('L2');disp('压缩图像大小:')whos('J');disp('图像的压缩比:')disp(m*n/length(J))%解压缩t1=J(1);t2=J(2);K(1:t1,1:t2)=0;i1=1;j1=1;fori=3:2:length(J)c1=J(i);c2=J(i+1);forj=1:c1K(i1,j1)=c2;j1=j1+1;ifj1>t2i1=i1+1;j1=1;endendendG2=blkproc(K,[8,8],'P1*x*P2',T',T);%逆DCT,重构图像B=I(:,:,3);B1=im2double(B);%将原图像转为双精度数据类型;T=dctmtx(8);%产生二维DCT变换矩阵L=blkproc(B1,[88],'P1*x*P2',T,T');%计算二维DCT,矩阵T及其转置T’是DCT函数P1*x*P2的参数Mask=[1010000011001000110000000000000000000000000000000000000000000000];%二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个L2=blkproc(L,[88],'P1.*x',Mask);%只保留DCT变换的10个系数[mn]=size(L2);J=[mn];fori=1:mvalue=L2(i,1);num=1;forj=2:nifL2(i,j)==valuenum=num+1;elseJ=[Jnumvalue];num=1;value=L2(i,j);endendJ=[Jnumvalue];enddisp('原图像大小')whos('L2');disp('压缩图像大小:')whos('J');disp('图像的压缩比:')disp(m*n/length(J))%解压缩t1=J(1);t2=J(2);K(1:t1,1:t2)=0;i1=1;j1=1;fori=3:2:length(J)c1=J(i);c2=J(i+1);forj=1:c1K(i1,j1)=c2;j1=j1+1;ifj1>t2i1=i1+1;j1=1;endendend3、显示图像:B2=blkproc(K,[8,8],'P1*x*P2',T',T);%逆DCT,重构图像A(:,:,1)=R2;A(:,:,2)=G2;A(:,:,3)=B2;Subplot(1,2,1);imshow(I);title('原图像');%显示原图像Subplot(1,2,2);imshow(A);title('压缩图像');%显示压缩后的图像。对比原始图像和压缩后的图像。实验结果压缩前图像压缩后图像uiopen('c:\User\Adminstrator\Desktop\1.jpg'.1)原图像大小;NameSizeBytesClass1350*480840000doublearrayGrandtotalis168000elementsusing840000bytes压缩图像大小;NameSizeBytesClassM1*48530356500doublearrayGrandtotalis48530elementsusing356500bytes图像压缩比:2.3562压缩前图像压缩后图像uiopen('c:\User\Adminstrator\Desktop\2.jpg'.2)原图像大小;NameSizeBytesClass1480*240545280doublearrayGrand

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论