内蒙古工业大学图像处理课程设计3132_第1页
内蒙古工业大学图像处理课程设计3132_第2页
内蒙古工业大学图像处理课程设计3132_第3页
内蒙古工业大学图像处理课程设计3132_第4页
内蒙古工业大学图像处理课程设计3132_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、学校代码: 10128学 号:20121020数字图像处理课程设计 题 目: 基于matlab的数字图像处理 学生姓名: 庞国英 学 院: 信息工程学院 专 业: 电子信息工程 班 级: 电子12-2 指导教师: 吕芳 韩建峰 杨玉兰 黎玉玲 2015 年 12 月 28 日目 录一、需求分析- 2 -1.1课程设计目的- 2 -1.2课程设计名称及内容- 2 -1.3任务和要求- 2 -二、算法设计- 3 -2.1设计思想:- 3 -2.2 算法思想:- 3 -2.2.1傅里叶变换- 3 -2.2.2离散余弦变换- 4 -2.2.3小波变换- 4 -2.2.4图像锐化算法- 6 -2.2.5

2、 DCT压缩- 8 -三、源代码及处理结果- 8 -3.1正逆傅里叶变换- 8 -3.2正逆快速傅里叶变换- 9 -3.3离散余弦变换- 12 -3.4数字图像直方图的统计及绘制- 13 -3.5小波变换- 16 -3.6图像锐化算法- 17 -3.7 DCT压缩- 21 -四、心得体会- 23 -参考文献- 23 -一、需求分析1.1课程设计目的通过本课程设计使学生了解数字图像的基本概念,掌握数字图像处理的基本内容,如图像点运算、几何变换、增强处理、图像复原、边缘检测以及图像压缩等的基本原理和Matlab实现方法。通过本次课程设计,让学生掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解

3、决问题等方法,养成良好的学习习惯。扩展理论知识,培养学生的综合设计能力。1.2课程设计名称及内容1.2.1 图像处理基本功能1)数字图像的变换:普通傅里叶变换(ft)与逆变换(ift)、快速傅里叶变换(fft)与逆变换(ifft)、离散余弦变换(DCT),小波变换。2) 数字图像直方图的统计及绘制等;3)基于Matlab的图像平滑算法实现及应用1.2.2 图像处理综合功能1) 图像复原程序设计l 创建一个仿真运动/均值模糊PSF来模糊一幅图像(图像自选)。l 针对退化设计出复原滤波器,对退化图像进行复原(复原的方法自定)。l 对退化图像进行复原,显示复原前后图像,对复原结果进行分析,并评价复原

4、算法。2) 给定a,b,c,d概率,进行huffman编码,要求显示原图像、压缩后图像的文件大小、压缩比;或采用小波变换进行编码1.3任务和要求1、预习:按要求学生可根据自己的情况预习或熟悉所用的语言,搜集资料。2、分析与设计:根据选定任务及搜集的资料设计实现方法,确定图像处理算法。3、程序设计:运用掌握的语言,编写程序,实现所设计的功能,需要在程序书写时做适当的注释。4、调试与测试:自行调试程序,同学之间交叉测试程序,并记录测试情况。5、验收与评分:指导教师对每个学生的程序进行综合验收,结合设计报告,根据课程设计成绩评定方法评出成绩。 二、算法设计2.1设计思想:数字图像处理(Digital

5、 Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。2.2 算法思想:2.2.1傅里叶变换傅里叶变换是可分离和正交变换中的一个特例,对图像的傅里叶变换将图像从图像空间变换到频率空间,从而可利用傅里叶频谱特性进行图像处理。从20世纪60年代傅里叶变换的快速算法提出来以后,傅里叶变换在信号处理和图像处理中都得到了广泛的使用。傅立叶变换是数字图像处理中应用最广的一种变换,其中图像增强、图像复原和图像分析与描述等,每一类处理方法都要用到图像变换,尤其是图像的

6、傅立叶变换。离散傅立叶(Fourier)变换的定义:二维离散傅立叶变换(DFT)为:逆变换为:式中, 在DFT变换对中, 称为离散信号 的频谱,而 称为幅度谱, 为相位角,功率谱为频谱的平方,它们之间的关系为:图像的傅立叶变换有快速算法。2.2.2离散余弦变换离散余弦变换(Discrete Cosine Transform,DCT)对于二维余弦变换,其离散形式如式(4)所示,逆变换如式(5)所示: (4) 式中, (5)在MATLAB中,采用dct2和idct2分别进行二维DCT变换和二维DCT逆变换。二维DCT常用于信号和图像处理,典型应用是对静止图像和运动图像进行性能优良的有损数据压缩。在

7、静止图像编码标准JPEG、运动图像编码标准MJPEG和MPEG等标准中都使用了8*8块的离散余弦变换,并将结果进行量化之后进行熵编码。DCT具有很强的能量集中在频谱的低频部分的特性,而且当信号具有接近马尔科夫过程(Markov processes)的统计特性时,DCT的去相关性接近于具有最优去相关性的K-L变换(Karhunen-Loeve变换)的性能。另外,改进的离散余弦变换(Modified Discrete Cosine Transform,MDCT)对交叠的数据进行DCT,有助于避免由于区块边界所产生的多余数据,被用在高级音频编码(Advanced Audio Coding,AAC)、

8、Ogg Vorbis、AC3和MP3音频压缩中。2.2.3小波变换二维离散小波变换(D Discrete Space Wavelet Transform,DDSWT) 对于二维小波变换,其离散形式如式(6)所示;逆变换如式(7)所示: (6)式中,和分别函数在轴上的,平移量。 (7)类似地,可以定义二维离散小波变换逼近,并采用Mallat二维快速算法求解。与DFT类似,可分离二维小波变换最终可转换为两次一维小波变换。对图像进行小波变换的MATLAB常用函数有: 对图像进行一层二维小波分解,常见形式为: CA,CH,CV,CD=dwt2(X,wname)式中,X为图像矩阵;wname是使用的小波

9、基函数名称,如可选择双正交样条小波基函数,形式为biorNr.Nd。 查询使用的小波基函数的信息,使用形式为: Waveinfo(wname)式中,小波基名称wname可选用haar(哈尔小波)、db(Daubechies 小波)、bior(双正交样条小波)等。例如,在命令行状态下键入wavainfo(bior)进行查询双正交样条小波,可知r表示reconstruction(重建),d表示decomposition(分解),N表示相应FIR滤波器的阶数;CA、CH、CV、CD分别是输入矩阵X小波分解的近似系数矩阵、水平细节系数、垂直细节系数和对角线细节系数。 对二维小波分解的图像进行各种分量的

10、重构,常见函数形式为: Y=upcoef2(O,X,wname,N)式中,X是分解后的细节信号,Y是重构的细节信号分量;N表示对矩阵X的系数进行重建的步骤数,即重构的层数,默认值为1。O是细节信号的类型。如果O=a,则表示对信号的近似系数进行重建;否则,如果O=h、v或d,则分别对水平、垂直或对角线细节进行重建。 对应上述的一层二维小波变换DWT2函数,进行一层二维小波变换逆变换,常见形式为: X=idwt2(CA,CH,CV,CD,wname)idwt2函数采用wname所指示的小波、已重建的基于近似矩阵CA,以及水平细节CH、垂直细节CV和对角线细节CD计算原图像矩阵X。 对重构的图像进行

11、量化编码,常见函数形式为: Y=wcodemat(X,NBCODES,OPT,ABSOL)式中,X为待进行量化编码的矩阵,Y为编码矩阵。在编码中,把矩阵X中元素绝对值最大的作为NBCODES(整数),绝对值最小的作为1,其他元素依其绝对值的大小在1与NBCODES中排列。当OPT为row时,做行编码;当OPT为col时,做列编码;当OPT为mat时,做全局编码,即把整个矩阵中元素绝对值最大的元素作为NBCODES,最小的作为1.当ABSOL为0时,该函数返回输入矩阵X的一个编码版本,当ABSOL非0时,返回X的绝对值。2.2.4图像锐化算法在图像增强过程中,通常利用各类图像平滑算法消除噪声,图

12、像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现。为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。微分运算是求信号的变化率,由傅立叶变换的微分性质可知,微分运算具有较强高频分量作用。从频率域来考虑,图像模糊的

13、实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。但要注意能够进行锐化处理的图像必须有较高的性噪比,否则锐化后图像性噪比反而更低,从而使得噪声增加的比信号还要多,因此一般是先去除或减轻噪声后再进行锐化处理。 图像锐化的方法分为高通滤波和空域微分法。图像的边缘或线条的细节(边缘)部分 与图像频谱的高频分量相对应,因此采用高通滤波让高频分量顺利通过,并适当抑制中低频分量,是图像的细节变得清楚,实现图像的锐化,由于高通滤波我们在前面频域滤波已经讲过,所以这里主要讲空域的方法微分法。        一阶微分运算一阶微分主要指梯度模

14、运算,图像的梯度模值包含了边界及细节信息。梯度模算子用于计算梯度模值,通常认为它是边界提取算子,具有极值性、位移不变性和旋转不变性。图像在点处的梯度 定义为一个二维列矢量:梯度大的幅值即模值,为:   梯度的方向在 最大变化率方向上,方向角可表示为:        对于离散函数 也有相应的概念和公式,只是用差分代替微分。差分可取为后向差分,前向差分。在x,y方向上的一阶向后差分分别定义为: 梯度定义为: 其模和方向分别为:        

15、; 在实际应用中,梯度的模还有很多近似式,如使用x,y方向上差分绝对值替代模来度量梯度的模(幅值)就是 最大变化率方向的单位距离所增加的量。由梯度的计算可知,在图像灰度变化较大的边沿区域其梯度值大,在灰度变化平缓的区域梯度值较小,而在灰度均匀的区域其梯度值为零。我们根据得到的梯度值来返回像素的值,如将梯度值大的像素设置成白色,梯度值小的设置为黑色,这样就可以将边缘提取出来了,或者是加强梯度值大的像素灰度值就可以突出细节了达到了锐化的目的。2.2.5 DCT压缩图像压缩主要目的是为了节省存储空间,增加传输速度。图像压缩的理想标准是信息丢失最少,压缩比例最大。不损失图像质量的压缩称为无损

16、压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。 信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。三、源代码及处理结果 3.1正逆傅里叶变换t=imread('E:pgy.jpg');t=rgb2gray(t);figure,subplot(2,1,1)imshow(t);title('原灰度图象');

17、m,n=size(t);M=zeros(m,m);N=zeros(n,n);for i=1:m for k=1:m M(i,k)=exp(2*pi*i*k*(-j)/m); endend for k=1:n for i=1:n N(k,i)=exp(2*pi*i*k*(-j)/n); endendt=double(t);T = M*t*N;Ni=N'Mi=M'Ti = Mi*T*Ni/(m*n);subplot(2,2,3),imshow(uint8(T)title('傅里叶变换频谱');subplot(2,2,4),imshow(uint8(Ti);title

18、('傅里叶逆变换图像');3.2正逆快速傅里叶变换I=imread('E:/pgy.jpg'); %读入图像subplot(1,2,1),imshow(I); %在位置1显示图像title('原始图像');f=rgb2gray(I);F1=fft2(f); %计算二维傅立叶变换subplot(1,2,2),imshow(F1); %显示二维傅立叶变换后的图像title('二维离散傅里叶变换后的频谱');figure,subplot(2,2,1),imshow(log(abs(F1)+1),0 10); %显示对数变换后的频谱图ti

19、tle('图像的频谱图');F2=fftshift(F1); %将直流分量移到频谱图的中心subplot(2,2,2),imshow(log(abs(F2)+1),0 10);%显示对数变换后中心化的频谱图title('中心化的频谱图');F3=ifft2(F1); %计算傅立叶变换的逆变换subplot(2,2,3),imshow(uint8(F3); %重新显示图像,类似于imread('pout.tif')title('傅立叶逆变换');subplot(2,2,4),imshow(f);title('灰度图像'

20、;); 3.3离散余弦变换RGB=imread('E:/pgy.jpg');I=rgb2gray(RGB);%真彩色图像转换成灰度图像subplot(2,2,1),imshow(RGB); %显示原图像title('原始图像');C1=dct2(I); %对图像做DCT变换subplot(2,2,2),imshow(log(abs(C1),),colormap(jet(64),colorbartitle('图像大部分能量集中在上左角');C2=fftshift(C1); %将直流分量移到频谱图的中心subplot(2,2,3),imshow(lo

21、g(abs(C2)+1,0 10); %显示DCT变换结果title('DCT系数');C3=idct2(C1); %对矩阵C1做DCT逆变换subplot(2,2,4),imshow(uint8(C3); %显示逆变换后的结果title('灰度图像');3.4数字图像直方图的统计及绘制clear all%一,图像的预处理,读入彩色图像将其灰度化PS=imread('E:pgy.jpg');%读入JPG彩色图像文件subplot(1,2,1);imshow(PS) %显示出来 title('输入的彩色JPG图像')imwrite(

22、rgb2gray(PS),'PicSampleGray.bmp'); %将彩色图片灰度化并保存PS=rgb2gray(PS);%灰度化后的数据存入数组subplot(1,2,2);imshow(PS);title('灰度图像');%二,绘制直方图m,n=size(PS); %测量图像尺寸参数GP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255 GP(k+1)=length(find(PS=k)/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置endfiguresubplot(2,2,1);bar(0:255,GP,

23、'g') %绘制直方图title('原图像直方图')xlabel('灰度值')ylabel('出现概率')%三,直方图均衡化S1=zeros(1,256);for i=1:256 for j=1:i S1(i)=GP(j)+S1(i); %计算Sk endendS2=round(S1*256)+0.5); %将Sk归到相近级的灰度for i=1:256 GPeq(i)=sum(GP(find(S2=i); %计算现有每个灰度级出现的概率endsubplot(2,2,2),bar(0:255,GPeq,'b') %显

24、示均衡化后的直方图title('均衡化后的直方图')xlabel('灰度值')ylabel('出现概率')%四,图像均衡化PA=PS;for i=0:255 PA(find(PS=i)=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素endsubplot(2,2,3);imshow(PA) %显示均衡化后的图像 title('均衡化后图像')imwrite(PA,'PicEqual.bmp');subplot(2,2,4),plot(0:255,S2,'r')3.5小波变换i=imread

25、('E:/pgy.jpg');x=rgb2gray(i); cA,cH,cV,cD=dwt2(x,'bior3.7');A=upcoef2('a',cA,'bior3.7',1);H=upcoef2('h',cH,'bior3.7',1);V=upcoef2('v',cV,'bior3.7',1);D=upcoef2('d',cD,'bior3.7',1);figure subplot(221),image(wcodemat(A,192

26、); %将矩阵显示为图像title('近似细节系数 A') %显示图像的图头、标题subplot(222),image(wcodemat(H,192);title('水平细节系数 H')subplot(223),image(wcodemat(V,192);title('垂直细节系数 V')subplot(224),image(wcodemat(D,192);title('对角细节系数 D')X=idwt2(cA,cH,cV,cD,'bior3.7');imshow(d,);3.6图像锐化算法ima=imread(&

27、#39;E:/pgy.jpg');%读入图像if isrgb(ima) ima=rgb2gray(ima);%如果是彩色图像,则转为灰度图像 endima=double(ima);bw1 = edge(ima,'sobel'); %sobel算子锐化figure;subplot(121);imshow(uint8(ima);title('原始图像');%图像显示subplot(122);imshow(bw1);title('sobel算子锐化');bw2 = edge(ima,'prewitt');%prewitt算子锐化

28、figure;subplot(121);imshow(uint8(ima);title('原始图像');subplot(122);imshow(bw2);title('prewitt算子锐化');bw3 = edge(ima,'roberts');%roberts算子锐化figure;subplot(121);imshow(uint8(ima);title('原始图像');subplot(122);imshow(bw3);title('roberts算子锐化');bw4 = edge(ima,'log

29、9;);%log算子锐化figure;subplot(121);imshow(uint8(ima);title('原始图像');subplot(122);imshow(bw4);title('log算子锐化');bw5 = edge(ima,'canny');%canny算子锐化figure;subplot(121);imshow(uint8(ima);title('原始图像');subplot(122);imshow(bw5);title('canny算子锐化');%edge取边缘函数%经过算子锐化取边缘%直接调

30、用函数不能知道每种算子的锐化类型3.7DCT压缩 I = imread('E:/pgy.jpg'); %图像的读入 I=rgb2gray(I); I = im2double(I);%图片存储类型转换 disp('压缩前图像的大小:');%显示矩阵% whos('I') T = dctmtx(8);%离散余弦变换矩阵 B = blkproc(I,8 8,'P1*x*P2',T,T');%对源图像进行DCT变换 mask = 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0

31、 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);%数据压缩,丢弃右下角高频数据 I2 = blkproc(B2,8 8,'P1*x*P2',T',T);%进行反DCT变换 subplot(1, 2, 1); imshow(I, );title('原图像'); subplot(1, 2, 2); imshow(I2, );title('压缩后图像'); disp('压缩后的图像大小:'); whos('I2') imwrite(I,'y.jpg');imwrite(I2,'c.jpg'); y1=imfinfo('y.jpg');c=imfinfo('

温馨提示

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

评论

0/150

提交评论