武汉理工大学专业课程设计(图像变换编码程序设计)_第1页
武汉理工大学专业课程设计(图像变换编码程序设计)_第2页
武汉理工大学专业课程设计(图像变换编码程序设计)_第3页
武汉理工大学专业课程设计(图像变换编码程序设计)_第4页
武汉理工大学专业课程设计(图像变换编码程序设计)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学专业综合课程设计专业综合课程设计任务书学生姓名:_专业班级: 电信 班 指导教师: 工作单位: 信息工程学院 题 目10:图像变换编码程序设计初始条件:(1) 提供实验室机房及其matlab软件; (2) 信息论和数字图像编码的基本理论学习。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):(1)学习图像压缩和JPEG压缩的原理和方法;(2)选择一幅256级的灰度图像,利用matlab设计程序完成以下功能;(3)计算该图像的信息熵;(4)利用JPEG的压缩原理,将图像分成8´8的图像块,计算每个块的DCT系数;(5)只保留DCT系数矩阵最左

2、上角的10个系数,然后对每个图像块利用这10个系数进行DCT反变换来重构图像,显示重构后的图像; (5)计算该图像经过离散余弦变换编码及重构后图像的信噪比;(6)要求阅读相关参考文献不少于5篇;(7)根据课程设计有关规范,按时、独立完成课程设计说明书。时间安排: (1) 布置课程设计任务,查阅资料,确定方案 四天; (2) 进行编程设计 一周; (3) 完成课程设计报告书 三天;指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目 录摘 要I1 设计目的与意义11.1设计目的11.2设计意义12 理论知识32.1信息熵32.2图像熵32.3基于DCT的JPEG图像压缩42.3.1

3、 DCT变换42.3.2 DCT系数量化52.4图像的信噪比52.4.1信噪比定义52.4.2峰值信噪比63 程序设计与实现83.1图像信息熵程序设计83.2 DCT图像压缩程序设计93.3图像信噪比程序设计114 MATLAB程序仿真134.1图像熵程序仿真134.2 DCT图像压缩程序仿真134.3图像信噪比程序仿真145心得体会15参考文献17摘 要本设计是基于MATLAB的图像变换编码程序设计,介绍了图像压缩和JPEG压缩的原理和方法,简单介绍了信息熵、信噪比概念,并对离散余弦变换进行了详细的阐述。然后通过MATLAB软件和离散余弦变换原理实现了对JPEG图像的压缩和重构,同时利用程序

4、计算原图像信息熵,以及重构前后图像的信噪比。关键词:图像压缩,JPEG压缩,离散余弦变换,信息熵,信噪比1 设计目的与意义1.1设计目的数字图像处理技术从出现到现在的几十多年时间里,经过初创期、发展期、普及期及广泛应用几个阶段,如今已是各个学科竞相研究并在各个领域广泛应用的一门学科,并迅速发展成一门独立的具有强大生命力的学科,随着计算机技术和半导体的发展,数字图像处理技术将更加迅速地向广度和深度发展。本课程设计其目的是理解有损压缩的概念,特别是通过DCT变换,掌握压缩编码的基本原理、算法,并通过编程给予实现,对原始图像数据和解压后的图像数据进行失真估计,了解压缩性能及其重建效果的影响、作用,给

5、出适当的理论分析。1.2设计意义数字图像处理是利用计算机或数字技术对图像信息进行加工处理以改善图像质量、压缩图像数据或从图像数据中获取更多信息。数字图像处理的主要方法可分为两大类:空域法和变换域法。图像压缩即去除多余数据。以数学的观点来看图像压缩过程实际上就是将二维像素阵列变换为一个在统计上无关联的数据集合。因此图像压缩是指以较少的比特有损或无损地表示原来的像素矩阵的技术,也称图像编码。图像压缩编码的必要性和可能性:图像压缩编码的目的是以尽量少的比特数表征图像同时保持复原图像的质量使它符合预定应用场合的要求。压缩数据量、提高有效性是图像压缩编码的首要目的。图像数据可以进行压缩有以下几方面的原因

6、:首先原始图像数据是高度相关的存在很大的冗余度,如空间冗余度,时间冗余度,频率域冗余度。数据冗余造成比特数浪费消除这些冗余就可以节约码字也就达到了数据压缩的目的,其次基用相同码长表示不同出现概率的符号也会造成符号冗余度;允许图像编码有一定的失真也是图像可以压缩的一个重要原因。JPEG的目的是给出一个适合于各种连续色调图像的压缩办法,其中原图像类型可以不受尺寸、内容、统计特性、像素形状以及颜色空间等的限制,压缩性可达到目前技术所能实现的最好效果。162 理论知识2.1信息熵所谓信息熵,是一个数学上颇为抽象的概念,在这里不妨把信息熵理解成某种特定信息的出现概率。而信息熵和热力学熵是紧密相关的。根据

7、Charles H. Bennett对Maxwell's Demon的重新解释,对信息的销毁是一个不可逆过程,所以销毁信息是符合热力学第二定律的。而产生信息,则是为系统引入负(热力学)熵的过程。所以信息熵的符号与热力学熵应该是相反的。一般而言,当一种信息出现概率更高的时候,表明它被传播得更广泛,或者说,被引用的程度更高。我们可以认为,从信息传播的角度来看,信息熵可以表示信息的价值。这样子我们就有一个衡量信息价值高低的标准,可以做出关于知识流通问题的更多推论。信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。它是从平均意义上来表征信源的总体特性的。对于某特定的信源,其信息熵只有

8、一个。不同的信源因统计特性不同,其熵也不同。2.2图像熵图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi 表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为: (2.1)图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。选择图像的邻域灰度均值作为灰度分布的空间特征量,与图像的像素灰度组成特征二元组,记为( i, j ),其中i 表示像素的灰度值(0 <= i <= 25

9、5),j 表示邻域灰度(0 <= j <= 255), (2.2)上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i, j)为特征二元组(i, j)出现的频数,N 为图像的尺度,定义离散的图像二维熵为: (2.3)构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。2.3基于DCT的JPEG图像压缩2.3.1 DCT变换DCT(Discrete Cosine Transform,离散余弦变换),是码率压缩中常用的一种变换编码方法。任何连续的实对称函数的傅里叶变换中只含有余弦项,因此,余弦变换同傅里叶变

10、换一样具有明确的物理意义。DCT是先将整体图像分成N*N的像素块,然后针对N*N的像素块逐一进行DCT操作。需要提醒的是,JPEG的编码过程需要进行正向离散余弦变换,而解码过程则需要反向离散余弦变换。因为图像处理运用二维离散余弦变换,所以直接介绍二维DCT变换。一个矩阵的二维DCT定义如下: , (2.4)其中,x,y=0,1,2,N-1,式中表示的阵列为N*N。逆DCT变换定义如下:(2.5)2.3.2 DCT系数量化在DCT处理中得到的64个系数中,低频分量包含了图像亮度等主要信息。在从空间域到频域的变换中,图像中的缓慢变化比快速变化更易引起人眼的注意, 所以在重建图像时,低频分量的重要性

11、高于高频分量。因而在编码时可以忽略高频分量, 从而达到压缩的目的,这也是量化的根据和目的。在JPEG标准中,用具有64个独立元素的量化表来规定DCT域中相应的64个系数的量化精度,使得对某个系数的具体量化阶取决于人眼对该频率分量的视觉敏感程度。理论上,对不同的空间分辨率、数据精度等情况,应该有不同的量化表。不过,一般采用下图所示的量化表,可取得较好的视觉效果。之所以用两张量化表,是因为Y分量比Cb和Cr更重要些,因而对Y采用细量化,而对Cb和Cr采用粗量化。量化就是用DCT变换后的系数除以量化表中相对应的量化阶后四舍五入取整。由于量化表中左上角的值较小,而右下角的值较大, 因而起到了保持低频分

12、量、 抑制高频分量的作用。对DCT变换来说,图像的主要能量是集中在其DCT系数的一小部分。这所谓的“一小部分”就是指的低频部分。随着u,v阶数的不断增大,图像信号在两组正交函数上的投影值出现了大量的正负相抵消的情景,从而导致了得到的频率系数在数值(绝对值)上的不断减小。中、低频系数所含有的原始信号的成份较多,所以由其反变换重构图像就能得到图像的近似部分。高频系数是在众多正交的余弦函数上投影的加权,是这些不同频率的余弦信号一起来刻画原始信号的结果,图像近似的部分在这些函数上被相互抵消了,剩下的就是图像的细节部分了。2.4图像的信噪比2.4.1信噪比定义信噪比,英文名称叫做SNR或S/N(SIGN

13、AL-NOISE RATIO),又称为讯噪比。是指一个电子设备或者电子系统中信号与噪声的比例。这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。图像的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算,有一种方法可以近似估计图像信噪比,即信号与噪声的方差之比。首先计算图像所有象素的局部方差,将局部方差的最大值认为是信号方差,最小值是噪声方差,求出它们的比值,再转成dB数,最后用经验公式修正,具体参数请参看“反卷积与信号复原(邹谋炎)”。s/n叫做信噪比。由于在实

14、际使用中S与N的比值太大,故常取其分贝数(db)。2.4.2峰值信噪比峰值信噪比(经常缩写为PSNR)是一个表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值的工程术语。由于许多信号都有非常宽的动态范围,峰值信噪比常用对数分贝单位来表示。PSNR是“Peak Signal to Noise Ratio”的缩写。peak的中文意思是顶点。而ratio的意思是比率或比列的。整个意思就是到达噪音比率的顶点信号,psnr是一般是用于最大值信号和背景噪音之间的一个工程项目。通常在经过影像压缩之后,输出的影像通常都会有某种程度与原始影像不一样。为了衡量经过处理后的影像品质,我们通常会参考PSNR

15、 值来认定某个处理程序够不够令人满意。 峰值信噪比定义为: (2.6)Peak就是指8 bits表示法的最大值255。MSE指 Mean Square Error(均方误差各值相差的n次方和的平均值的n次平方根(这几个字应该没有)),I(角标n)指原始影像第n个pixel值,P(角标n)指经处理后的影像第n个pixel值。PSNR 的单位为dB。所以PSNR值越大,就代表失真越少。PSNR 是最普遍,最广泛使用的评鉴画质的客观量测法,不过许多实验结果都显示,PSNR的分数无法和人眼看到的视觉品质完全一致,有可能PSNR较高者看起来反而比PSNR较低者差,这是因为人眼的视觉对于误差的敏感度并不是

16、绝对的,其感知结果会受到许多因素的影响而产生变化例如人眼对空间频率较低的对比差异敏感度较高人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响。3 程序设计与实现3.1图像信息熵程序设计1求解信息熵过程: 1) 输入一个离散信源,并检查该信源是否是完备集。 2) 去除信源中符号分布概率为零的元素。 3) 根据平均信息量公式,求出离散信源的熵。 2图像熵计算过程: 1) 输入一幅图像,并将其转换成灰度图像。 2) 统计出图像中每个灰度阶象素概率。

17、0;3) 统计出图像中相邻两象素的灰度阶联合分布矩阵。 4) 根据图像熵和二阶熵公式,计算出一幅图像的熵。根据以上步奏设计MATLAB程序:A=imread('ena.jpg'); %读入图像n(1:256)=0;p(1:256)=0;S=0;H=0;for i=1:256 %统计像素值 for j=1:256 n(A(i,j)=n(A(i,j)+1; endend for i=1:256 %计算每个像素值的概率 p(i)=n(i)/(256*256);end for i=1:256 %概率和为1 S=S+p(i);end for i=1:256

18、%熵的计算 if p(i)=0 H=H+p(i)*log2(1/p(i); endendH 3.2 DCT图像压缩程序设计由于后面的DCT变换是是对8x8的子块进行处理的,因此,在进行DCT变换之前必须把源图象数据进行分块。源图象中每点的3个分量是交替出现的,先要把这3个分量分开,存放到3张表中去。然后由左及右,由上到下依次读取8x8的子块,存放在长度为64的表中,即可以进行DCT变换。注意,编码时,程序从源数据中读取一个8x8的数据块后,进行DCT变换,量化,编码,然后再读取、处理下一个8*8的数据块。 JPEG 编码是以每8x8个点为一个单位进行处理的. 所以如果原始图片的长宽不是 8 的

19、倍数, 都需要先补成8的倍数, 使其可以进行一块块的处理。将原始图像数据分为8*8的数据单元矩阵之后,还必须将每个数值减去128,然后一一带入DCT变换公式,即可达到DCT变换的目的。图像的数据值必须减去128,是因为DCT公式所接受的数字范围是-128到127之间。图像块处理的整个过程由函数blkproc自动实现。函数blkproc的格式为: B=blkproc(A,M,N,FUN,P1,P2) 函数blkproc的参量为一幅输入图像A将被处理的块的大小M,N,用于处理这些块的函数FUN,以及块处理函数FUN的一些可选输入参数P1,P2,并重新将结果组合到输出图像。对一幅图像进行DCT压缩编

20、码的MATLAB程序流程图如图3.2所示:图3.1 图像DCT压缩编码的程序流程图由此设计程序如下:I=imread('ena.jpg');I=im2double(I);T=dctmtx(8); %8*8的离散余弦变换矩阵B=blkproc(I,8,8,'P1*x*P2',T,T'); %对原图像进行DCT变换blkproc()函数是对f1矩阵中的%每个8,8模块,用公式P1*x*P2进行计 算。其中x=8,8,P1=T,P2=T'。用*表示的是%矩阵乘法,而.*表示的矩阵中相应数的乘积。mask=1 1 1 1 0 0 0 0; 1 1 1 0

21、 0 0 0 0; 1 1 0 0 0 0 0 0; 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; ;B2=blkproc(B,8 8,'P1.*x',mask); %数据压缩,只保留DCT系数矩阵最左上角的10个系数I2=blkproc(B2,8 8,'P1*x*P2',T',T);%进行DCT反变换,得到压缩后的图像subplot(2,2,1);imshow(I);title('原图像');subplot(2,2

22、,2);imshow(I2);title('重构后图像');subplot(2,2,3);imshow(abs(I-I2);title('原图象和复原后图象的差')subplot(2,2,4);imshow(B);title('DCT系数');3.3图像信噪比程序设计峰值信噪比定义为: (3.1)Peak就是指8 bits表示法的最大值255。MSE指 Mean Square Error(均方误差各值相差的n次方和的平均值的n次平方根(这几个字应该没有)),I(角标n)指原始影像第n个pixel值,P(角标n)指经处理后的影像第n个pixel值。

23、PSNR 的单位为dB。所以PSNR值越大,就代表失真越少。根据公式构建一个函数,程序如下:function PSNR = PSNR(A,B) %计算输入两图像A,B的峰值信噪比PSNR(dB) A = double(A); %图像数据类型转换 B = double(B); Row,Col = size(A); %输入图像的大小 Row,Col = size(B); MSE = sum(sum(A - B).2) / (Row * Col); %均方误差MSE PSNR = 10 * log10(2552/MSE); %峰值信噪比PSNR(dB) function MSE = MSE(A,B)

24、 A=double(A); B=double(B); Row,Col = size(A); %输入图像的大小 Row,Col = size(B); MSE = sum(sum(A - B).2) / (Row * Col); %均方误差MSE主程序调用该函数程序:disp('DCTJPEG压缩前后均方误差MSE:') mse0=mse(I,I2) disp('DCTJPEG压缩前后图像峰值信噪比(dB):') PSNR0=PSNR(I,I2)4 MATLAB程序仿真4.1图像熵程序仿真图4.1 图像熵4.2 DCT图像压缩程序仿真图4.2 图像压缩4.3图像信噪

25、比程序仿真图4.3 信噪比5心得体会经过这次课程设计的学习,我确实学习了很多知识,真正的感受到了理论联系实际的重要性,以及这之间莫大区别,到最后看着自己的结果心里还是感到很欣慰的。首先摆在我面前的是要先弄懂所要设计的基于DCT的JPEEG图像压缩与重构的原理,于是最开始我们在拿到题目之后就查找了大量的相关的资料,再加上平时理论课的学习以及充分利用了网络资源和在图书馆借了相关的书籍资料,在仔细分析了这个题目所要达到的目的之后,我初步确定了MATLAB程序的几个功能模块。接下来程序实现的设计,要分析几个功能模块实现哪些功能怎么互相作用,在此之间我们遇到以前没有见过的matlab程序语言,但最终我们还是通过查资料解决了。接下来的是实验的仿真,这阶段刚开始以为程序都设计好了,那

温馨提示

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

评论

0/150

提交评论