数字图像处理上机实验报告(基于Matlab)_第1页
数字图像处理上机实验报告(基于Matlab)_第2页
数字图像处理上机实验报告(基于Matlab)_第3页
数字图像处理上机实验报告(基于Matlab)_第4页
数字图像处理上机实验报告(基于Matlab)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、华北水利水电大学数字图像处理上机实验报告学曉:数学与信息科学专业:信息与计算科学姓名:孙志攀学号:201216511滞导老师:黄赛艳2015年5月4日第一次实验1.图像的运算实验目的:图像的算术运算在图像处理中有着广泛的应用,它除了町以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。例如,图像减法就町以用来检测同一场景或物体生成的两幅或多幅图像的误差。我们可以使用MATLAB基本算术符(+、一、X、令等)来执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。图像处理工具箱包含了一个能实现所有数值数据的算术操作的函数集合。列举如卜:函数名功能描述Imabsdn

2、f两幅图像的绝对差值Imadd两个图像的加法lmcomplment补足一幅图像lmdivide两个图像的除法lmlincomb计算两幅图像的线形组合lmmultiply两个图像的乘法Imsubtract两个图像的减法使用图像工具箱中的图像代数运算函数无需再进行数据类型间的转换,这些函数能够接受uintS和uintl6数据,并返回相同格式的图像结果。图像的算术运算函数使用以卜截取规则使运算结果符合数据范由的要求:超出数据范闱的整型数据将被截取为数据范闱的极值,分数结果将被四舍五入。例如,如果数据类型是uintS,那么人于255的结果(包括无穷人inf)将被设置为255。无论进行哪一种代数运算都要

3、保证两幅输入图像的人小相等,且类型相同。实验内容:图像的加法MATLAB中调用unadd函数实现图像相加,格式如卜:Z=imadd(X,Y):其中Z=X+Y。图像的减法图像减法也称为差分方法,MATLAB中调用imsubtract函数实现图像相减。调用格式如下:Z=imsubtract(XY):其中Z=X-Yo图像的乘法两幅图像进行乘法运算町以实现掩模操作,即屏蔽掉图像的某些部分。一幅图像乘以一个常数通常被称为缩放。如果使用的缩放因数人于1,那么将增强图像的亮度,如果因数小于1则会使图像变暗。MATLAB中调用nnmultiply函数实现两幅图像相乘。调用格式如卜:Z=immultiply(X

4、,Y);其中Z=XxY图像的除法除法运算可用于校正成像设备的非线性影响。MATLAB中调用undivide函数进行两幅图像相除。调用格式如下:Z=imdivide(X,Y),其中Z=XmY。图像四则运算因对uint8、uintl6数据,每步运算都要进行数据截取,将会减少输出图像的信息量。图像四则运算较好的办法是使用函数imlincomb.该函数按双精度执行所有代数运算操作,仅对最后的输出结果进行截取,该函数的调用格式如卞:Z=imlincomb(AXBY,C),其中,Z=AxX+BxY+CZ=imlincomb(AXC),其中:Z=AxX+CZ=imlincomb(AXB,Y)其中:Z=AxX

5、+BxY1.图像的加法基于Matlab的代码如下:clear,I=imread(CUsersAdmmistratorDesktop人海jpg)J=imread(CUsersAdmmistratorDesktop恋人png1)K=imaddQQsubplot(2乙1),imshow,subp101(2,2,2),imshow(J),subplot(2,23)inishow(K),图片素材:运行结果窗口截图:CommandWindow000000000000000000000000000000000000000000000000fx2.图像的减法基于Matlab的代码如下:sea=imread(C

6、:UsersAdnnnistiatorDesktoprA.png1)backgioundmopenCseaelCdiskZO),sea2=u*nsubtiact(sea,background),subplot(l乙l),imshow(sea)subplot(l,2,2),unshovz(sea2),素材图片运行结果窗口截图:CommandWindow0EjTigurel*3图像的乘法基于Matlab的代码如下:I=imread(CUsersAdmimstratorDesktop恋人png)J=immultiply(I,l.2),K=immultiplyQ,06),subplot(l,3,l),

7、imshov7(I),subplot(l,3-)uTishovz(J)subplot(l,33),UTishovz(K),运行结果窗口截图:rQFigure1EditViewInsertToolsDesktopWindowHelpu&Jd4%、脅退謠1氓1口匡11口4.图像的除法基于Matlab的代码如下:Love=imiead(lC:UseisAdministiatorDesktop恋人png1)I=double(Love),J=073*1+100,Ip=imdivideQQsubplot(2乙1)jmshow(uint8(I),subplot(2乙3),imshow(uint8(J),su

8、bplot(2,2,4),imshow(uint8Qp)J),运行结果窗口截图:CommandWindow000000000000000000000000fx5图像的逻辑运算(与、或.非、异或等运算)基于Matlab的代码如下:clearallA=zeros(128),A(4070,60:100)=1,%生成128*128的零矩阵A,将宽40-70,高60-100的值设为1B=zeros(l28),B(50:80,40:70)=1,%生成128*128的零矩阵B,将宽50-80,高40-70的值设为1C=A(:,:1)%取单色D=B(:,:,1),figureCName,1图像逻辑运算)res

9、l=C&D,%C&D%res2=C|D,%C|D%resSorCC),%xorCD%res3_2=xor(D,C)%xorDC%res4=not(C)¬(D),%C%res4_2=iot(C)|not(D),%D%subplotO)subplot(2,3l)nnshowCresOitleCC&D1),%&运算subplotCS?)nnshow(res2),title(,C|D,),%|运算subplot(2,33)imshowaesBJtitleCxorCD1),%or运算subplot(2,34)nnshowCresSitleCorDC1),subplot(2,35)imshow(re

10、s4),title(-C&-D*),%运算subplot(2,36)imshow(res4_2)titleCCHD1),运行结果窗口截图:CommandWindowJDFigure2:圏像逻筠运箕|()2.图像的滤波(空间、频域)实验目的堂握matlab程序设计语言,掌握matlab基本数据类型、核心函数及辅助函数的使用。掌握理想和线性平滑滤波器的设计方法。实验内容利用理想和线性平滑滤波器实现图像的滤波;三、实验原理二维理想低通滤波器的传递函数为:DO是指定非负数值,D(u,V)是(u,v)点距频率中心的距离。如果要研究的图像尺寸为MXN,则它的变换也有相同的尺寸。在半径为DO的圆内,所有频率

11、无衰减地通过滤波器,而在此半径之外的所有频率完全被衰减掉。高斯高通滤波器传递函数为:H(u,v)二朋D(u,v)是距傅立叶变换中心原点的距离。DO是截止频率。高斯低通滤波器的傅立叶变换也是高斯的。二维理想高通滤波器的传递函数为:DO是从频率矩形中点测得的截止频率长度,它将以DO为半径的圆周内的所有频率置零,而毫不衰减地通过圆周外的任何频率。但其物理上是不可实现的。高斯高通滤波器传递函数为:H(U,V)=l-尹畑”瑚高通滤波器能够用高斯型低通滤波器的差构成。这些不同的滤波器有更多的参数,因此能够对滤波器的形状进行更多的控制。四.实验设备和仪器1计算机2.matlab开发平台空间域滤波(举例:线性

12、平滑滤波器)基于Matlab的代码如下:I=imread(CUsersAdministratorDesktop撑着油纸伞的姑娘jpg1),subplot(231)imshowQ)title(原始图像I=rgb2gray,Il=imnoiseQ,salt&pepperO02),subplot(232)imshowQ)%进行3*3模板平滑滤波%进行5*5模板平滑滤波%进行7*7模板平滑滤波%进行9*9模板平滑滤波titleC添加椒盐噪声的图像)kl=filtei2(fspecial(laveiagel,3)Il)/255,k2=filter2(fspecial(laverage,5),11)/25

13、5;k3=filter2(fspecial(laverage,7),11)/255;k4=filtei2(fspecial(laveiagel,9)Il)/255,subplot(233),imshow(k1),titl*3模板平滑滤波欣subplot(234),imshow(k2),title(l5*5模板平滑滤波欣subplot(235),imshow(k3),title(*7*7模板平滑滤波,subplot(236),imshow(k4),title(!9*9模板平滑滤波乞运行结果窗口截图:频域滤波(举例:理想低通滤波器)基于Matlab的代码如下:RGB=unreadCCUsersAd

14、mmistratoiADesktoplovepng1),=rgb2giay(RGB),subplot(2,31),imshow(JO);titlef原图*),=unnoiseCIO/gaussian1),%对原图像加噪声subplot(2,3,2),imshowQl),title(加入噪声后)%将灰度图像的二维不连续Founer变换的零频率成分移到频谱的中心subplot(233)inishow(log(l+abs(s)title(lfftshiftl);M,N=size(s),%分别返回s的行数到M中,列数到N中nl=floor(M/2),%对M/2进行取整n2=floor(N/2),%对“

15、/2进行取整%ILPF滤波(程序中以dO=l5为例)d0=50,%初始化dOfori=lMforj=lNd=sqrt(i-n1产2+0-n2)A2),%点(1,J)到傅立叶变换中心的距离ifdJ=0,%阻带变换函数ends(】j)=haj)*saj),%ILPF滤波后的频域表示endends=ifftshift(s)%对$进行反FFT移动%对s进行二维反离散的Founer变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s),%显示GHPF滤波器的传递函数subplot(2,3,4),imshov7(h),title(,传递函数为subplot(2,35)imsho

16、v/(s),titleCILPF滤波(d0=50)吹显示ILPF滤波后的图像运行结果窗口截图:CommandWindcsubplot3%将灰度图傢s=fftshift(subplot(2,3jM,N=sizenl=floor(M/n2=floor(N/%ILPF滤波(;*d0=50;fori=l:Mforj=ld=selsencs(i,j)=h(i,ends=ifftshift%对$进行二纟*s=uint8(rcaQFigure1I口回Ifad第二次实验1图像复原算法图像在形成、传输和记录过程中,由于受到多种原因的影响,图像的质量就会有所下降,典型的表现为图像模糊、失真、有噪声等,这一过程称为

17、图像的退化。图像复原是试图利用退化过程的先验知识使已退化的图像恢复本来面目,即根据退化的原因,分析引起退化的坏境因素,建立相应的数学模型,并沿着使图像降质的逆过程恢复图像。目的在于消除或减轻在图像获取以及传输的过程中造成的图像品质卜降,恢复图像的本来面目。因此,复原技术就是把退化模型化,并采用相反的过程进行处理,以便尽可能复原被退化图像的本来面目。广义上讲,图像复原是一个求逆问题,逆问题经常存在非唯一解,甚至无解。要想恢复全真的景物图像比较困难。为了得到逆问题的有用解,图像复原本身往往需要一个质量标准,即衡量接近全真景物图像的程度,或者说,对图像的估计是否达到最佳的程度。需要有先验知识以及对解

18、的附加约束条件。典型的图像复原是根据图像退化的先验知识建立一个退化模型,以此模型为基础,采用各种逆退化处理的方法进行恢复,使图像质量得到改善。图像退化的数学模型一般来说,图像的生成可以简单地被描述为如下数学模型:g(x,y)=Hf(x,y)f(x,y)是成像景物,H是综合退化因子,g(x,y)是退化图像。图像f(x,y)可以表示为:COCOf(x,y)=JJf(a,0)5(x-cz,y-coco用卷枳符号*表示为:f(x,y)=f(x,y)*5(x,y)因此还有:f(x-Q,y-/0=f(x,y)7(xa,y-0)式中,f(a,0)是像素点的特性函数,力(x-a,y-0)为冲击响应。假定成像系

19、统是线性移不变系统:退化模型如图所示f(x,y)g(x,y)不考虑加性噪声:g(x,y)=f(x,y)*h(x,y)考虑加性噪声:g(x,y)=f(x,y)*h(x,y)+n(x,y)卷枳等同于频域内乘积:G(u,v)=F(u,v)H(u,v)+N(u,v)逆滤波复原逆滤波复原法也叫做反向滤波法,其主要过程是首先将要处理的数字图像从空间域转换到傅里叶频域中,进行反向滤波后再由频率域转回到空间域,从而得到复原的图像信号。在不考虑噪声的情况下:Ko-Kog(x,y)=JJf(a,0)h(x-a,y-0)dad0-co-co上式两边进行傅里叶变换得G(u,v)=F(u,v)H(u,v)则原始图像F(

20、u,v)=G(u,v)H(u,v)然后进行傅里叶逆变换,就町以得到原始图像。由此町看出,如杲已知退化图像的傅里叶变换和“滤波”传递函数,则可以求得原始图像的傅里叶变换,经反傅里叶变换就可以求得原始图像f(x,y),这就是逆滤波法的基本原理。但在实际中用逆滤波法存在病态的情况:当H(u,v)=O时,或非常小的数值点上,F(u,v)将变成无穷大或非常大的数。在有噪声的情况下:逆滤波原理可以写成:G(u,v)=F(u,v)H(u,v)+N(u,v)写成逆滤波的方式:F(u,v)=F(u,v)+N(u,v)H(u,v)但实际用逆滤波存在病态的情况:噪声存在,当H(u,v)很小或为零时,则噪声被放人。这

21、意味着退化图像中小噪声的干扰在H(u,v)较小时,会对逆滤波恢复的图像产生很大的影响,有可能使恢复的图像和f(x,y)相差很大,甚至面目全非。实验证明,当退化图像的噪声较小,即轻度降质时,采用逆滤波复原的方法可以获得较好的结呆。通常,在离频率平面原点较远的地方数值较小或为零,因此图像复原在原点周圉的有限区域内进行,即将退化图像的傅里叶频谱限制在没出零点而且数值又不是太小的有限范闱内。维纳滤波复原逆滤波比较简单,但没有清楚地说明如何处理噪声,而维纳滤波综合了退化函数和噪声统计特性两个方面进行复原处理。维纳滤波是维纳在1949年提岀的,并应用于一维平稳时间序列,获得了满意的结果。这是最早也是最著名

22、的线性滤波技术。采用维纳滤波是假设图像信号可以近似看成平稳随机过程的前提下,按照使f(x.y)和(x,y)之间的均方误差达到最小的准则函数来实现图像复原的,即e2=niinEf(x,y)-f(x,y)2式中,E()代表求期望值。因此维纳滤波又称为最小均方误差滤波器。维纳滤波需要假定下述条件成立:1、系统为线性空间移不变系统。2、退化图像、原始图像、噪声都是均匀随机场,噪声的均值为零,且与图像不相关。维纳滤波的复原滤波函数,即滤波器的传递函数为:F(u,v)=P(u,v)G(u,v)=G(u,v)H(u,v)|H(u,v)+S”(u,v)/Sf(u,v)没有噪声时,维纳滤波退化为逆滤波。有噪声时

23、,维纳滤波利用信噪功率比对恢复过程进行修正,在信噪功率比很小的区域内,P(u,v)的值也很小,这使恢复图像较小地依赖于退化图像。在H(u,v)很小或等于零时,P(u,v)的分母不为零,维纳滤波没有病态问题。在实际系统中,维纳滤波经常用卞式近似:F(u,v)=1|H(u,v)|2H(u,v)|H(u,v)|2+KG(u,v),K为特殊常数。的维纳滤波要求未退化图像和噪声的功率必须是已知的。虽然用近似的方法能得到好的结果,但功率谱比常数K的估计一般没有合适的解。基于Matlab的代码如下:clear;l=imread(C:UsersAdministratorDesktop明晓妹妹原始图jpg)im

24、show(l);I=rgb2gray(l);%将原图像转化为黑白图figure;subplot(2,2zl);imshow(l);titled转成黑白图像);m,n=size(l);F=fftshift(fft2(l);k=0.0025;foru=l:mforv=l:nH(uzv)=exp(-k)*(u-m/2)A2+(v-n/2)A2)A(5/6);endendG=F.*H;IO=real(ifft2(fftshift(G);I2=imnoise(uint8(l0),gaussian00001)subplot(2,2z2);imshow(uint8(11);title。模糊退化且添加高斯噪声

25、的图像J;F0=fftshift(fft2(ll);F1=FO./H;l2=ifft2(fftshift(Fl);subplot(2,2z3);imshow(uint8(l2);titled全逆滤波复原图*K=0.1;foru=l:mforv=l:nH(u,v)=exp(-k*(u-m/2)A2+(v-n/2)A2)A(5/6);H0(u/v)=(abs(H(u,v)A2;Hl(u/v)=HO(u/v)/(H(uzv)*(HO(u,v)+K);endendF2=H1.*FO;B=ifft2(fftshift(F2);subplot(2,2,4);imshow(uint8(13);窗口截图如下:

26、经过仿真,如上图所示,可以看出逆滤波复原与维纳滤波复原的区别和联系。维纳滤波后虽然仍有一些噪声存在,但已经和原图很接近了。因为原图像和噪声函数都是已知的,可以正确的估算参量。使用Lucy-Richardson算法的迭代非线性复原L-R算法是一种迭代非线性复原算法,它是从最人似然公式印出来的,图像用泊松分布加以模型化的。当下面这个迭代收敛时模型的最人似然函数就可以得到一个令人满意的方程:(x,Y)=fk(x,y)h(-x,-y)*里孚h(x,y)*fk(x,y)*代表卷积,?代表未退化图像的估计,g和h和以前定义一样。这个算法的本质是显而易见的。它的非线性本质是在方程右边用?来除产生的。在IPT

27、中,L-R算法是由名为deconvlucy的函数完成的,此函数的语法为fr二deconvlucy(g,PSF,NUMIT,DAMPAR,V/EIGHT)其中,fr代表复原的图像,g代表退化的图像,PSF是点扩散函数,NUMIT为迭代次数(默认为10次),DAMPAR是一个标量,它指定了结果图像与原图像g之间的偏离阈值。WEIGHT是一个与g同样大小的数组,它为每一个像素分配一个权重来反映其重量。基于Matlab的代码如下:clear;I=imreadCC:UsersAdministratorDesktop孙志攀帅比原始图.jpg)PSF=fspecial(gaussian,5,5);Blurr

28、ed二imfilter(I,PSF,symmetrie,conv,);V二.003;BN=iinnoise(Blurred,*gaussian,0,V);luc=deconvlucy(BN,PSF,5);figuresubplot(2,2,1);imshow(I);titleC原始图像);subplot(2,2,2);imshow(Blurred);titleC模糊后的图像);subplot(2,2,3);imshow(BN);titleC加噪后的图像);subplot(2,2,4);imshow(luc);titleC恢复后的图像);窗口截图如下:CommandWind135terEditV

29、iewInsertToolsDesktopWindowHelp$曰日R|凰|目回模糊后的圈像原绘图像加疇后的團像恢箕后的團像133142136136138U2139135135139132129139135130135125125132135131129136U22读入一幅彩色图像,显示各层图像。(方法一)基于Matlab的代码如下:l=imread(C:DocumentsandSettingsAdministrator桌面l.jpg1);%如果是win7系统则读取路径为l=imread(,C:UsersAdministratorDesktopl.jpg,);Ir=I;IG=|;IB=I;IR

30、(:,:7)=0;IR(:,:3)=0;IG(:z:,l)=0;IG(:,:,3)=0;IB(:,:,l)=0;IB(:,:7)=0;figure;subplot(2,2,l);imshow(l/);title(T);subplot(2,2/2);imshow(IR,);title(,IR,);subplot(2,2/3);imshow(IG/);title(,IG,);subplot(2,2,4);imshow(IB/);title(,IB,);CommandWindowI=imreadCC:UsersAdministratorDesktopx1.jpg):IR=I:IG=I:IB=I:IR

31、C宀2)=0:IR(:,:,3)=0:IG(:,:,l)=0:IG(:,:,3)=0;IB(:,:,l)=0:figure;subplot(2,2,1);msho(I,)ititleCI*):subplot2,2);inshovUR,);titleCIRZ):subplot2,3):inshovdG,):title(IG5):subplot2,4);inshow(IB,);titleCIB7);AIRFileEditViewInsertToolsDesktopWindowHelp恰丨皱q裁溟x凰s0IGIB(方法二)基于Matlab的代码如下:l=imread(C:DocumentsandSe

32、ttingsAdministrator桌面l.jpg1);R=l(:/4);G=l(:,:,2);B=l(:,;figure;subplot(2,2/l);imshow(l,);title(T);subplot(2,2/2);imshow(R/);title(,R,);subplot(2,2/3);imshow(G/);title(,G,);subplot(2,2,4);imshow(B,);title(,B,);3图像的变换(小波或FT变换)clearallcloseallA=imread(,C:DocumentsandSettingsAdministrator桌面l.jpgf)56读入并且

33、显示出一个图像文件subplot(l,2zl);imshow(A);titleC原始的图像显示原始图像作为对照iflength(size(A)=3A=rgb2gray(A);endsubplot(l,2z2);imshow(A);title。灰度图像);对灰度图像进行傅里叶变换并输出频谱A2=fft2(A);A2=fftshift(A2),%将图像进行二维傅里叶变换figure,imshow(log(abs(A2)+l)40,12);%显示傅里叶变换后的图像mieC傅里叶变换后的图像);VARIABLECommandWindowB=1(:,:,3):figuresubplot(2,2,1);insubplot(2,2,2):ijsubplot(2,2,3);msubplot(2,2、4);inclearallcloseallA=imreadCC:Jseisubplot(1,21);inshow(A):titleC原始的飜iflength(size(A)A=rgb2gray(A):endsubplot(1,2、

温馨提示

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

评论

0/150

提交评论