ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:1.16MB ,
资源ID:4374621      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4374621.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(3140601044周俊鹏.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

3140601044周俊鹏.docx

1、3140601044周俊鹏 J I A N G S U U N I V E R S I T YDSP原理及应用课程设计报告 学院名称: 计算机科学与通信工程学院 专业班级: 通信工程 1402 学生姓名: 周俊鹏 学生学号: 3140601044 指导教师: 宋雪桦 2017年6月18日目录一、实验目的 1二、实验内容 1三、实验原理 11、DCT与IDCT的原理 12、图像压缩编码 33、遮罩量化压缩算法 34、量化的方法 45、图像压缩的评价 45、图像压缩编码性能指标 6五、实验流程图与主要代码分析 61、流程图 61.峰值信噪比function 72. Matlab灰色图片的压缩与分析

2、 73.CCS图像分析 9六、实验结果 131、MATLAB灰色图像压缩实验结果 132、MATLAB彩色图像压缩实验结果 162、CCS实验结果 18七、实验分析与问题解决 201、实验分析 202问题解决 20九、参考文献 22一、实验目的1、掌握DCT图像压缩算法。2、熟悉CCS开发模式。3、学会利用MATLAB算法仿真和CCS软件仿真。二、实验内容根据资料找出几种主流图像压缩算法,采用DCT算法实现对Lena图像的压缩和解压,分析算法的性能参数指标。三、实验原理1、DCT与IDCT的原理离散余弦变化(DCT)是与傅里叶变换变换相关的一种变换,它类似于离散傅里叶变换(DFT),但是只使用

3、变数,是对实信号定义的一种变换,变换后在频域中得到的也是一个实信号,相比较DFT而言,DCT可以减少一半以上的计算。离散余弦变换可以将图像描述为不同幅值和频率的正弦值之和的形式。DCT的一个重要性质就是,有关图像的许多重要可视信息都集中在变换后的一小部分系数当中,因此,在图像压缩处理中离散余弦变换是非常有用的,而且离散余弦变换已经是有损压缩国际标准JPEG算法的核心变换。1)一维DCT设空间域中的N点离散实序列f(x),x=0,1,N-1。其一维一维离散余弦变换(1D-DCT)和逆变换(1D-IDCT)的定义如下: (1) (2)其中, 。在MATLAB中,实现一维离散余弦变换和反变换的函数具

4、体介绍见表1。表1 一维离散余弦变换和反变换D=dct(X)dct函数计算向量X的一维离散余弦变换D=dct(X,n)dct函数计算向量X的n点离散余弦变换D=idct(X)idct函数计算向量X的一维离散余弦反变换D=idct(X,n)idct函数计算向量X的n点离散余弦反变换2)二维DCT静止图像是二维空间中的数据阵列,图像处理中常常使用二维的离散余弦变换(2D-DCT)。对二维空间域数据列f(x,y)的二维离散余弦对的定义如下: (3) (4)其中,。二维数据的2D-DCT可以通过两次1D-DCT的快速算法来实现。具体流程如下:对数据矩阵f(x,y)逐列进行1D-DCT,得到的中间矩阵F

5、(u,y),再对中间矩阵F(u,y)进行逐行1D-DCT,最后得到F(u,v)。JPEG采用的是88大小的子块的二维离散余弦变换。在编码器的输入端,把原始图像顺序地分割成一系列88的子块,子块的数值在-128到127之间。采用余弦变换获得64个变换系数。在MATLAB中,实现二维离散余弦变换和反变换的函数具体介绍见表2。表2 二维离散余弦变换和反变换D=dct2(X)dct2函数计算矩阵X的二维离散余弦变换D=dct2(X,m,n)dct2函数先对矩阵X截去获补充0元素成为mn阶数组,然后对其进行二维离散余弦变换D=idct2(X)idct2函数计算矩阵X的二维离散余弦反变换D=idct2(X

6、,m,n)idct2函数先对矩阵X截去获补充0元素成为mn阶数组,然后对其进行二维离散余弦反变换B=dctmtx(n)D=BXBdctmtx函数返回一个nn阶的DCT变换矩阵2、图像压缩编码1)图像压缩编码的定义和分类在满足一定保真度的而要求下,对图像数据进行变换、编码和压缩,去除多余数据,减少表示数字图像时所需要的数据量,以便于图像的存储和传输,即以较少的数据量有损或无损地表示原来的像素矩阵的技术,也称图像编码。2)图像压缩编码的必要性数字图像已经在人们日常生活中随处可见,并且成为生活中不可或缺的一部分,但是图像数字化以后,其数据量是非常庞大的。大数据量的图像信息会给存储器的存储容量、通信干

7、线的带宽以及计算的处理速度增加极大的压力。图片的压缩能够降低存储容量的压力,降低传输的时间。3)图像压缩编码的可能性由于图像数据本身固有的冗余性和相关性,使得将一个大的图像数据文件转换成较小的图像数据文件成为可能,图像数据压缩就是去掉信号数据的冗余性。一般来说,图像数据中存在着空间冗余、时间冗余、信息熵冗余、结构冗余、知识冗余、心理视觉冗余等。3、遮罩量化压缩算法由于本实验采用的是基于dct算法进行压缩的,也就是老师说的主流算法,经过DCT变换后许多有关图像的许多重要可视信息都集中在变换后的一小部分系数当中,比如本次实验是能量集中在左上角如图所示:图3-1由图可知信号能量和有效信息一般都存在于

8、直流分量(第一个点),和围绕直流分量周围的低频分量这些包含了图像的主要信息,而高频区域有很大一部分,能量都为0,即冗余信号,那么现在我们通过一个mask,类似滤波器的作用一样对齐滤除高频冗余分量,只留下有效分量,这样之后图片的信息量就会得到减少而起到压缩的效果。现在主流的算法还有还有其他的算法如小波变换算法,JPEG2000就是采用这种算法,还有很多对于彩色图片的方法我想到了两种算法1.由于RGB图片是三维数组,将5125123的三维数组变换成5121536的二维数组即有亮度和色度两种量,二维数组的前512列为R分量,中间512列为G分量,最后512列为B分量,编码后的数据再通过解码器解码,将

9、解码结果通过reshape()函数变成5125123的三维数组,再将三维数组显示,就实现了真彩图像的压缩编码。在理论上我觉得是可行的。这次实验我使用的是另一种更为简便的方法2.也是我本次实验所做的算法:提取图片的R、G、B分量,之后就像做灰度图像的方法一样对其进行dct变换还有mask遮罩量化,之后idct之后使用cat函数将三种分量再次叠加处理。这样实现的真彩图像的压缩,更为的简便,但是理论上的速度会比上述的方法慢。主要的时间用于Matlab提取R、G、B三个分量4、量化的方法DCT变换后低频分量多呈圆形辐射状向高频率衰减,因此可以看成按Z字形衰减。因此,量化系数按Z字形扫描读数,这样就把一

10、个88的矩阵变成一个164的矢量,频率较低的系数放在矢量的顶部。量化后的DCT系数的编排如图2-7所示。DC为其直流分量,AC部分为其交流分量。 图3-2 量化DCT系数的编排5、图像压缩的评价图像信息在压缩过程中会产生误差,尤其是在有损压缩中,产生的误差应在允许的范围之内,在这种情况下,保真度准则可以用来衡量压缩效果或系统质量的优劣。通常这种衡量的指标分为客观保真度准则和主观保真度准则。1)客观保真度准则当输入图像与压缩解码后的图像可用函数表示时,最常用的一个准则是输入图像和输出图像之间的均方误差或均方根误差。设为原始图像,压缩后的还原图像为。则和之间的均方误差(EMS)定义为 (5)如对上

11、式求平方根,就得到和之间的均方根误差(ERMS),即。最常用的是峰值信噪比(PSNR),设,k为图像中一个像素点所用的二进制位数,JPG标准中k取8来表示0-255的灰度值,则峰值信噪比定义为 (6)本实验主要采用的是峰值信噪比来进行客观的图片质量判定。2)主观保真度准则图像质量的好坏是否与图像本身的客观质量有关,也与人多视觉系统的特性有关。因此,在客观保真度之外又规定了主观保真度以此评价图像的主观质量。主观评价也可对照某种绝对尺寸进行。表3为对图像质量的主观评价标准。表3 对图像质量的主观评价标准得分第一种评价标准第二种平均评价标准5优秀没有失真感觉4良好感觉到失真,但没有不舒服的感觉3可用

12、感觉到优点不舒服2较差感觉较差1差感觉到非常不舒服设每种得分为Ci,每种得分的评分人数为ni,那么一个被称为感觉平均分的主观评价可以定义为 (7)MOS越高,表示解码后图像的主观评价越高。这个是人的客观评价,在本次实验我们展示给宋老师看了,让她做出来评价。5、图像压缩编码性能指标1)压缩比压缩比是衡量数据压缩程度的指标之一,目前常用的压缩比Pr定义有好几种版本本次实验我们选取为 (8)这个压缩比的物理意义是压缩后的数据占源数据的百分比,一般而言,这个压缩比越小,则说明被压缩掉的数据量越多,压缩的的越大;本实验中主要采用压缩比来衡量压缩性能。五、实验流程图与主要代码分析1、流程图图5-1程序流程

13、图灰度图像处理流程图5-2灰度图像处理流程图2.主要代码分析1.峰值信噪比function每个实验都要计算峰值信噪比,所以专门写了个functionfunction PSNR = psnr(im1, im2)%计算两幅图像的峰值信噪比 k=8; %k为图像是表示地个像素点所用的二进制位数,即位深。0-255 fmax=(2.k-1).2; m,n = size(im1); A = im2double(im1); B = im2double(im2); D = sum( sum( (A-B).2 ) ); MSE = D / (m * n); %我觉得也可以用MSE=mean(mean(a-b)

14、来实现这样就不用除M*N也不用计算图片的面积大小了if D = 0%如果输入的参数为两幅图一样 error(两幅图像完全一样); PSNR = 100;else PSNR = 10*log10( (fmax) / MSE ); endEnd2.Matlab灰色图片的压缩与分析I = imread(C:UsersjeepzDesktoplena.bmp);%打开获取图像gray = rgb2gray(image);%转换成灰度图像D = dctmtx(8);%得到一个88dct函数矩阵C = blkproc(I,8,8,P1*x*P2,D,D); %分块处理mask1=1 0 0 0 0 0 0

15、 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 0 0 0 0 0 0 0 0 0 0 0;%普通环境下的 X5 = blkproc(C,8 8,P1.*x,mask1);%低频0个(只保留直流分量)I5 = blkproc(X5,8,8,P1*x*P2,D,D); %解压图像之后可以用imshow来展示图片可以用imfinfo获取文件句柄f然后f.FileSize(I)获取原图像和新图像大小就可以按照上述压缩比公式计算压缩比;再调用最上面

16、的psnr函数就可以求出峰值信噪比;2.彩色图像分析关键%亮度量化表m=0.5* 16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103 99;%RGB图分层处理 得到3个分量图R = RGB(:,:,1);G = RGB(:,:,2);B

17、= RGB(:,:,3);%转换为双精度IR = double(R);IG = double(G);IB = double(B);%建立8*8的DCT变换矩阵T=dctmtx(8);%进行DCT变换RR = blkproc(IR,8,8,P1*x*P2,T,T);GG = blkproc(IG,8,8,P1*x*P2,T,T);BB = blkproc(IB,8,8,P1*x*P2,T,T);%量化LR = blkproc(RR,8 8, round(x./P1),m);LG = blkproc(GG,8 8, round(x./P1),m);LB = blkproc(BB,8 8, roun

18、d(x./P1),m);%对DCT系数进行遮罩处理mR=blkproc(LR,8 8,x.*P1.*P2,mask,m);mG=blkproc(LG,8 8,x.*P1.*P2,mask,m);mB=blkproc(LB,8 8,x.*P1.*P2,mask,m);%反DCT变化 IDCTYR =blkproc(mR,8 8,P1*x*P2,T,T);YG =blkproc(mG,8 8,P1*x*P2,T,T);YB =blkproc(mB,8 8,P1*x*P2,T,T);%转换为uint8 YR = uint8(YR); YG = uint8(YG); YB = uint8(YB);%组

19、合三个分量得到重构图像RGB_rec =cat(3,YR,YG,YB);3.CCS图像分析1.用matlab生成一个CCS可读取的.dat文件I = imread(C:UsersjeepzDesktoplena.bmp);%打开图像,这里改成自己的图像名及路径 %将图像缩小一点,将512512 不然数据量太大 I = imresize(I,8,8,bicubic);%缩小成8*8,二维FFT时需要图像为2的n次方 Figure(1);imshow(I);%显示图像 N,M = size(I);%获取图像的高与宽 DCT=dct2(I);%dct变换双击在边上workspace查看矩阵;可用来与

20、CCS出来的数据做比较IDCT=idct2(DCT);%同上一句操作fid = fopen(img2dat4_8.dat,w);%保存.dat图像数据文件 fprintf(fid,%d %d %s %d %dn,1651,2,8cc0,0,N*M);%写入二进制文件的第一行 for n = 1:N %将图片数据写入Dat文件中 for m = 1:M fprintf(fid,%dn,I(n,m); end end fclose(fid); %关闭disp(Run OK) %显示所有操作已经做完可以关闭程序做下一步操作了2.在CCS里面load Data加载matlab生成的.dat文件,之后运

21、行dct和idct算法并输出。Dct和idct算法:void DCT(double *f,double *F) /DCT变换 int x,m,n; double dTempNN=0.0; double tempNN=0.0; double coffN=0.0; /变换系数 coff0=1/sqrt(N); for(m=1;mN;m+) coffm=sqrt(2)/sqrt(N); /一维变换,对列进行一维DCT变换 for(n=0;nN;n+) /每一列遍历 for(m=0;mN;m+) /每一行遍历 for(x=0;xN;x+) /每个cos系数遍历(*(double*)temp+m*N+n

22、)+=(double)(*(double*)f+x*N+n)*coffm*cos(2*x+1)*PI*m/(2*N);/二维变换,对行进行DCT变换for(m=0;mN;m+) /每一行遍历for(n=0;nN;n+) /每一列遍历 for(x=0;xN;x+) /每个cos系数遍历(*(double*)F+m*N+n)+=(*(double*)temp+m*N+x)*coffn*cos(2*x+1)*PI*n/(2*N);void IDCT(double *f,double *F) /逆变换 int y,m,x; double dTempNN=0.0; /中间矩阵 double tempNN

23、=0.0; double coffN=0.0; /变换系数 coff0=1.0/sqrt(N); for(m=1;mN;m+) coffm=sqrt(2)/sqrt(N); /一维变换 for(x=0;xN;x+) for(y=0;yN;y+) for(m=0;mN;m+)(*(double*)temp+x*N+y)+=(*(double*)f+x*N+m)*coffm*cos(2*y+1)*PI*m/(2*N);/二维变换for(y=0;yN;y+) for(x=0;xN;x+) for(m=0;mN;m+)(*(double*)dTemp+x*N+y)+=(*(double*)temp+m

24、*N+y)*coffm*cos(2*x+1)*PI*m/(2*N);if(*(double*)dTemp+x*N+y)0)(*(double*)F+x*N+y)=(int)(*(double*)dTemp+x*N+y)-0.5);/-0.5为四舍五入取整else(*(double*)F+x*N+y)=(int)(*(double*)dTemp+x*N+y)+0.5);/+0.5为四舍五入取整输出之后的结果在后面实现结果中;六、实验结果1、MATLAB灰色图像压缩实验结果Mask的量化矩阵的选取情况灰度原图压缩比Pr峰值信噪比PSNR(dB)1 1 1 1 1 1 1 1 1 1 1 1 1 1

25、 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0保留理想低频35个 97.87%83.851 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 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保留理想低频27个94.45%83.231 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0

26、1 1 1 0 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保留理想低频14个 73.31%80.611 1 1 1 0 0 0 0 1 1 1 0 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保留理想低频9个 58.98%79.091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

27、 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只保留理想直流分量15.09%72.621 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1保留理想高频36个15.12%72.621 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

28、 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1保留理想高频28个15.38%72.62 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 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1保留理想高频15个0.157172.621 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

29、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1保留理想高频10个20.59%72.651 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 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1保留理想高频3个28.22%72.700 1 1 1 0 0 0 0 1 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1