多媒体信息处理综合课程设计JPEG编解码方法设计与实现.doc

上传人:奥沙丽水 文档编号:57660 上传时间:2025-07-09 格式:DOC 页数:20 大小:2.14MB
下载 相关 举报
多媒体信息处理综合课程设计JPEG编解码方法设计与实现.doc_第1页
第1页 / 共20页
多媒体信息处理综合课程设计JPEG编解码方法设计与实现.doc_第2页
第2页 / 共20页
多媒体信息处理综合课程设计JPEG编解码方法设计与实现.doc_第3页
第3页 / 共20页
多媒体信息处理综合课程设计JPEG编解码方法设计与实现.doc_第4页
第4页 / 共20页
多媒体信息处理综合课程设计JPEG编解码方法设计与实现.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、 多媒体信息处理综合课程设计 JPEG编解码方法设计与实现学院专业:班级:姓名:2014年1月1. 设计目的32. 实验设备及材料33. 设计要求34. 原理34.1 JPEG34.2 JPEG压缩中图像文件的格式44.3JPEG编码原理54.3.1离散余弦变换64.3.2量化64.3.3行程编码和熵编码75. 程序设计96. 实验结果187. 总结201. 设计目的1掌握JPEG编解码的基本原理和方法。2学习使用程序设计环境。3使用设计框架构造应用程序。4掌握JPEG编码、解码实现。2. 实验设备及材料1.PC机一台2. MATLAB 3. 设计要求拍摄BMP图像,利用算法程序将摄入的图像进

2、行编码,产生JPEG 压缩图像,生成解压缩图像送显示设备显示,对视觉压缩结果进行评价并计算压缩比。4. 原理4.1 JPEGJPEG(Joint Photographic Experts Group)是在国际标准化组织(ISO)领导之下制定静态图像压缩标准的委员会,第一套国际静态图像压缩标准ISO 10918-1(JPEG)就是该委员会制定的。由于JPEG优良的品质,使他在短短几年内获得了成功,被广泛应用于互联网和数码相机领域,网站上80%的图像都采用了JPEG压缩标准。JPEG本身只有描述如何将一个影像转换为字节的数据串流(streaming),但并没有说明这些字节如何在任何特定的储存媒体上

3、被封存起来。.jpeg/.jpg是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通

4、常在10:1到40:1之间,压缩比越大,品质就越低;相反地,品质就越高。比如可以把137Mb的BMP位图文件压缩至203KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像4.2 JPEG压缩中图像文件的格式由于图像数据文件的格式有很多,如GIF、TIFF、PCX、TGA、BMP、JPEG等。而现在实现的是BMP和JPEG的相互转换,所以要具体介绍BMP和JPEG文件的格式。BMP图像采用RGB(Red Green Blue)色彩模型,将各种颜

5、色视为为红,绿,蓝(R,G,B)三个部分的组合。由于一幅图像中许多像素对应的颜色是相同的,BMP图像中采用了一个表:表中的每一行记录一种颜色的R,G,B值。这样,当表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值,这个表在BMP图像中称为调色板。有一种图,它的颜色数高达256256256种,也就是说包含上述提到的R,G,B颜色表示方法中所有的颜色,这种图叫做真彩色图(True Color)。真彩色图并不是说一幅图包含了所有的颜色,而是说它具有显示所有颜色的能力,即最多可以包含所有的颜色。表示真彩色图时,每个象素直接用R,G,B三个分量字节表示,而不采用调色板技术。4.3

6、JPEG编码原理 JPEG的压缩编码过程大致分成三个步骤:1、使用正向离散余弦变换把空间域表示的图变换成频率域表示的图;2、使用加权函数对DCT系数进行量化,这个加权函数对于人的视觉系统是最佳的;3、使用霍夫曼可变字长编码器对量化系数进行编码。下面依次介绍压缩过程中应用到的技术。4.3.1离散余弦变换离散余弦变换是压缩编码的基础。在JPEG中,首先将图像分割成8x8像素的小块,然后进行余弦变换,其变换式为(M=N=8):对于每个88二维原图像采样数据块, 64点阵的离散函数FDCT把它们作为输入信号,然后分解成64个正交基信号,每个正交基信号对应于64个二维空间频率中的一个,这些空间频率是由输

7、入信号的频谱组成。FDCT的输出是64个基信号的幅值(即DCT系数),每个系数值由64点阵输入信号唯一地确定,即离散余弦变换的变换系数。在频域平面上变换系数是二维频域变量u和v的函数。因为在一幅图像中像素之间的灰度或色差信号变化缓慢,在88子块中像素之间的相关性很强,所以通过离散余弦正变换处理后,在空间频率低频范围内集中了数值大的系数,这就为数据压缩提供了可能。4.3.2量化为了达到压缩数据的目的,对经过FDCT变换后的频率系数进行量化处理。量化处理是一个多到一的映射,它是造成DCT编/解码信息损失的根源,是图像质量下降的最主要原因。在JPEG标准中采用线性均匀量化器。量化定义为,对64个DC

8、T变换系数除以量化步长,然后四舍五入取整。量化步长是量化表的元素,量化表元素随DCT变换系数的位置而改变。不同频率的余弦函数对视觉的影响不同,量化处理是在一定的主观保真度图像质量的前提下,可据不同频率的视觉阈值来选择量化表中元素值的大小。4.3.3行程编码和熵编码JPEG 压缩的最后一步是对量化后的系数进行熵编码。这一步采用通用的无损数据压缩技术,对图像质量没有影响。在熵编码之前,需要把64 个DCT 系数转换为一串中间符号。其中直流系数和交流系数的编码方式不同。坐标u=v=0的值是直流分量(即DC系数)。直流系数表示当前分块中64 个象素的平均值,相邻分块的直流系数具有很强的相关性,因此在编

9、码时只需记录与前一分块的直流系数的差值,即直流系数的“中间符号”采用差分脉冲编码(DPCM),它是64个图像的采样平均值。DC系数的编码方法:第1块图像的DC系数是“真值”,以后各块的DC是与前1块DC系数的“差值”: Diff = DC(i) - DC(i-1)其余63个AC系数编码是从左上方开始,沿箭头方向,对63 个交流系数用“之” 字型扫描,让它变成一维数组。这样做的目的是将低频系数放在前面,高频系数放在后面。因为高频系数中有很多0,为了节约空间,所以交流系数的“中间符号”用零行程码表示。接下来对中间符号进行熵编码,这一步的目的是利用符号的统计特性,进一步提高压缩率。JPEG 标准规定

10、的熵编码方式有两种:Huffman 编码和自适应二进制算术编码。这两种编码各有优劣:“正宗”的Huffman 编码过程要对输入序列进行两遍扫描,第一遍统计各个符号出现的概率,构造Huffman 树,得到码书;第二遍用码书对符号进行编码。这么做的话,时间空间开销都较大。两遍扫描意味着要把整幅图像的“中间符号”都记录下来,不能“随到随编”。而且要把码书传给解码器,这会增加压缩文件的大小。JPEG 的实际实现一般支持两种Huffman方式,一种是前述的“正宗”Huffman编码(称为optimized 方式),另一种则采用JPEG 标准Annex K 中给出的缺省码书。采用缺省码书的好处是输入序列只

11、用扫描一遍,空间和实际开销都较小;缺点是,由于码书不是根据当前图像的统计信息得到的,那么压缩率会比“正宗”Huffman 编码低一些。不过由于Huffman 编码对概率误差不敏感,因此实践中常常采用缺省码书进行编码。算术编码和Huffman 编码都是变长码,符号出现概率越高,码字越短。不同之处在于,Huffman 编码每个符号对应的码字是确定的,每个码字的bit 数为整数。算术编码的基本思想是用一个精度足够高的属于(0,1) 的实数来表示整个输入序列,输入序列中每个符号对应的码字是不确定的,总体上每个符号对应的码字长度等于其信息熵(均以bit 计),码字平均长度可能是小数。算术编码的压缩率通常

12、高于Huffman 编码。算术编码的另一个好处是,它很容易做成自适应的,因此只需扫描一遍输入序列,空间开销小很多。5. 程序设计1、读入图像:clearI=imread(1.jpg); %读入原图像;R=I(:,:,1);R1=im2double(R); %将原图像转为双精度数据类型;2、进行DCT矩阵变换(重复三次),并显示原图像大小、压缩图像大小、压缩比:T=dctmtx(8); %产生二维DCT变换矩阵L=blkproc(R1,8 8,P1*x*P2,T,T); %计算二维DCT,矩阵T及其转置T是DCT函数P1*x*P2的参数Mask= 1 0 1 0 0 0 0 0 1 1 0 0

13、1 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; %二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个 L2=blkproc(L,8 8,P1.*x,Mask); %只保留DCT变换的10个系数 m n=size(L2); J=m n; for i=1:m value=L2(i,1); num=1; for j=2:n if L2(i,j)=value num=num+1; else J=J num value; num=1

14、 value=L2(i,j); endendJ=J num value ; 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;for i=3:2:length(J) c1=J(i); c2=J(i+1); for j=1:c1 K(i1,j1)=c2; j1=j1+1; if j1t2 i1=i1+1; j1=1; end endendR2= blkproc(K,8,8,P1*x*P2,T,T); %逆

15、DCT,重构图像 G=I(:,:,2);G1=im2double(G); %将原图像转为双精度数据类型;T=dctmtx(8); %产生二维DCT变换矩阵L=blkproc(G1,8 8,P1*x*P2,T,T); %计算二维DCT,矩阵T及其转置T是DCT函数P1*x*P2的参数Mask= 1 0 1 0 0 0 0 0 1 1 0 0 1 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; %二值掩膜,用来压缩DCT系数,只留下DCT系数

16、中左上角的10个 L2=blkproc(L,8 8,P1.*x,Mask); %只保留DCT变换的10个系数 m n=size(L2); J=m n; for i=1:m value=L2(i,1); num=1; for j=2:n if L2(i,j)=value num=num+1; else J=J num value; num=1; value=L2(i,j); endendJ=J num value ; enddisp(原图像大小)whos(L2);disp(压缩图像大小:)whos(J);disp(图像的压缩比:)disp(m*n/length(J)% 解压缩t1=J(1);t2

17、J(2);K(1:t1,1:t2)=0;i1=1;j1=1;for i=3:2:length(J) c1=J(i); c2=J(i+1); for j=1:c1 K(i1,j1)=c2; j1=j1+1; if j1t2 i1=i1+1; j1=1; end endendG2= blkproc(K,8,8,P1*x*P2,T,T); %逆DCT,重构图像B=I(:,:,3);B1=im2double(B); %将原图像转为双精度数据类型;T=dctmtx(8); %产生二维DCT变换矩阵L=blkproc(B1,8 8,P1*x*P2,T,T); %计算二维DCT,矩阵T及其转置T是DCT函

18、数P1*x*P2的参数Mask= 1 0 1 0 0 0 0 0 1 1 0 0 1 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; %二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个 L2=blkproc(L,8 8,P1.*x,Mask); %只保留DCT变换的10个系数 m n=size(L2); J=m n; for i=1:m value=L2(i,1); num=1; for j=2:n if L2(i,j)=v

19、alue num=num+1; else J=J num value; num=1; value=L2(i,j); endendJ=J num value ; 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;for i=3:2:length(J) c1=J(i); c2=J(i+1); for j=1:c1 K(i1,j1)=c2; j1=j1+1; if j1t2 i1=i1+1; j1=1; end

20、 endend3、显示图像: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(压缩图像);%显示压缩后的图像。对比原始图像和压缩后的图像。6. 实验结果 压缩前图像 压缩后图像uiopen( c:UserAdminstratorDesktop1.jpg .1)原图像大小; Name Size Bytes Class 1 350*480 840

21、000 double arrayGrand total is 168000 elements using 840000 bytes压缩图像大小; Name Size Bytes Class M 1*48530 356500 double arrayGrand total is 48530 elements using 356500 bytes图像压缩比:2.3562 压缩前图像 压缩后图像uiopen( c:UserAdminstratorDesktop2.jpg .2)原图像大小; Name Size Bytes Class 1 480*240 545280 double arrayGran

22、d total is 115200 elements using 545280 bytes压缩图像大小; Name Size Bytes Class M 1*26500 205200 double arrayGrand total is 26500 elements using 205200 bytes图像压缩比:2.6573 压缩前图像 压缩后图像uiopen( c:UserAdminstratorDesktop3.jpg .3)原图像大小; Name Size Bytes Class 1 450*260 604500 double arrayGrand total is 117000 el

23、ements using 604500 bytes压缩图像大小; Name Size Bytes Class M 1*29920 226040 double arrayGrand total is 29920 elements using 226040 bytes图像压缩比:2.67437. 总结当图像的压缩比增大时,也即压缩率减小时,图像的质量也将降低。基于DCT变换的JPEG图像压缩方法简单,方便,是一种非常有用的图像压缩方法,随着科学技术的发展,图像压缩技术越来越引起人们的关注。因此基于DCT变换的JPEG图像压缩方法有着广阔的前景。优点:摄影作品或写实作品支持高级压缩。利用可变的压缩比可以控制文件大小。支持交错(对于渐近式JPEG文件)。广泛支持Internet标准。缺点:有损耗压缩会使原始图片数据质量下降。当您编辑和重新保存JPEG文件时,JPEG会混合原始图片数据的质量下降。这种下降是累积性的。JPEG不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片

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

当前位置:首页 > 论文 > 毕业论文

宁ICP备18001539号-1