MATLAB程序大全

所需积分/C币:50 2014-12-19 10:36:11 7.88MB PDF
收藏 收藏 3
举报

包含各种MATLAB程序,对于初学者是很好的教程,对于编程工作者是很好的借鉴工具
xlabel(\theta(degrees)) %显示x坐标 f(degrees IⅪ pRime”); %显示y巫标 sel(gca, LIck, 0: 20: 180) %设置x坐标刻度 colormap(hot) 设置调色板 barbar 显示当前图像的调色板 第4章图像增强 4.2.1直接灰度变换 Matlab程序实现图像求反: I=imrad cameraman. tif) ishow) able I=256-1- 1=uint8(I) i ashow(① 例4 用 Matlab程序实现线性灰度变换的图像增强: 读入并显示原始图像 I=imread(pout. tif); Ashow SI7C %进行线性灰度变换 for i=l: M fc orJ= ifi(i)<-30 I(1j=l(1j elseif (i,j<=150 I〔=(200-30)/(150-30)°(I(j)-30)+30 else I(ij)=(255-200/(25-150)°(1j-150)+200; end 例4 d(lena. bmp); figure; imshow(: =doubler 2-414log(1+D; 22=uint8(12 figurc imshow (12) 例43 灰度切割变换的 Matlab的程序如下: I= spread〔007.bmp); figure; imshow(n) I= double(① M N=sizef) for i=l: m forj=1: N if I(lj<=50 I〔iJj=40; elseif r(i,j<=180 I〔1J)=220 I(i小j)=40; end d I=uint8 D); figure; imshow 例44 具体 Matlab程序如下: I-imread(lena. bmp) ishow IM, N=Size(D) for k=l: 8 J=zeros(M, N) for i=1: M or] temp=I〔1j) sl=0;s2=0 range=lk: -1: 1I for d=range sl=2^(8-d)+s1;s2=2^(8-d+1); if temp>=sl temp< 2, J(1,1=255: break en d J=uint80): figure imshow (); d 4.2.2直方图修正 例46直方图均衡化效果实例 用 Matlab中的 histeq函数实现直方图均衡化的程序如下: F=imread(circuit. tif); fi ure subplot(221); imshow D); subplot(222); imhist(n) II=hisley(); f ure subplot(221); imshow(Il) subplot(222);imhist(ll) 例48:直方图规定效果实例 用mtab中的 histeq函数实现直图均衡化的程厅如下: I=imread('circuit. tif) [M,Size ori=1:8:257 counts(i=1: end Q=imrcad(circuit. tif) Nhisley(Q, counts) g subplot(221); imshow(N) bplol(222);imnhISL(N); axis(0260050001); 4.2.3图像间运算 例:用图像平均减少随机噪声 I=imreadc'tire. tif ) IM,N=SizeD) Il=zeros(M,N; for i=l: 16 I( i=imnoise(l,gaussian, 0, 0.01) I= Il+double(I(∷;;1) ifor(or(i=1,==4),or(i==8==16 figure imshow(uint&(1/)); end end 4.3空域滤波增强 Mat lab实现的邻域平均法抑制噪声的程序 I=imread(eight. tif ); J=imnoise(l,salt &e pepper, 0.02) subplot231) imshow ( I, c title(原图像少); subplot(232) ashow(J); title(添加椒盐噪声图像) kl- filter2( (fspecial( average,3));%进行3×3模板平滑滤波 k2= Filter?( fspecial( average,5)J;%进行5×5模板平滑滤派 k3= filter2( (fspecial( average,7);%进行7×7模板平滑滤 k4= Filter2( (fspecial( average,y),J);%进行9×ψ模板平滑滤汲 subplot(233) ashow( uint&(kI); t titled(3×3模板平滑滤波); subplot(234 ashow(uin8(k2); title(5×5模板平滑滤波); subplot(235) inshow(uint8(k3);itle7×7模板平滑滤波); subplot(236), imshow(uint8(k4);te9×9模板平滑滤波) 例4.10:使用中值滤波降低图像噪声 Fimreadceight. tif); umno se(l,salt pepper, 0.02); subplot(231), imshow(D; title(原图像) subplot(232) imshow(J);itec添加椒盐噪声图像) kI=medfilt2(J) 炻进行3×3模板中值滤波 k2=medfilt2(,[5 5) 进行5×5模板中值滤波 k3=mcdfilt2(,77D; 进行7X7模板中值滤波 k4=medfilt2(J, [9 9D: ‰进行9×9模板中值滤波 subplot(233, ashow(k1;itle(3×3模板中值滤波) subplot(234) ashow(k2); title(5×5模板中值滤波) subplot(235); imshow( k3);ite(7×7模板中值滤波) subplot(236) imshow (k4);tdlc9×9模板中值滤波) 例4.11:梯度锐化实例 I=imreadrcameraman. tif) subplot(131) ishow) Il=fspecial( Sobel) H=H % Sobel垂直模板 TH=filter(H,I) subplot( 132),imshow(TH, H=H % Sobel水平模板 TH=filter(H I) subplot(133), imshow(TH, D) 4.4图像频域增强 例412:频域低通滤波所产生的模糊 %理想低通过滤波器所产生的模糊和振铃现象 J=imread(lena. bmp) subplot④33); ashow(①); J=double() %采用傅里叶变换 f=fft2) %数据矩阵平衡 g=fitshift() subplot(332), imshow(log(abs(g)), D), colordjet(64)) IM, N=Size(f nI=floor(M/2) n2=floor(N/2) %d0=5.15,45.65 d0=5: for i=l: M for j=1: N d=sqrt(i-n1)^2+(-n2)^2 if d<=do h=1; g(1j=h*g(〔j) end g=ifftshift(g: g=uint8(real(ifft(g))); subplot(333) ashow(g) 例412:用巴特沃期低通滤波器去除图像中的盐椒噪声 %实现 Butterworth低通过滤波器 I=imread(saturn. tif) J=imnoise(, salt pepper, 0.02); %给原图像加入椒盐噪声,如图 43a所示 subplot(121); imshow() tite(含有盐椒噪声的图像) J=double() %采用傅里叶变换 f=ft20); %数据矩阵平衡 g=fftshift(f) 二sZ h d0=20 nI=floor(M/2) n2=floor(N/2) for i =l: M for j=1: N d= sqrt(in1l)^2+〔j n h=1/(1+(dd0)^(2*n) i,)=h* g(i,j) g=ifftshift(g) g=uint8 (real(ifft(g))) t(122); imshow (g): %结果如图43b)所示 例413:频域高通滤波增强示例 J=imrcaddlcnabu. bmp); ashow(uint8(J);tde(模糊图像 J=double(J) f=ft2①;%采用傅里叶变换 g= fftshifti%数据矩阵平衡 IM, N=Size(f) nI=floor(M/2); n2=floor(N/2) d0=20; r %进行理想髙通滤波和理想高通加强滤波 forj=1: N d=sqrt((i-nl)2+(j-n2)2); if d>=do hl=l 12=10.5: h2=0.5; gl(,1=hl g(1, 1: 2(j)=h2*g(i) gl=ifftshift(gl) gl=uint8(real(ifft2(gl))) subplot(22); imshow(g1);%显示理想高通滤波结果 ile理想高通滤波结果); g2=ifftshift(g2) g2=int&(real(ifft2(g2))) subplot(2) ishow(g2);%显示理想高通加强滤波结果 tle想高通加强滤波结果) nE d0=20; for i=l: M 进行巴特沃斯高通滤波和巴特沃斯高通加 强滤波 for=l: N d=sqr(i-nl)^2+(j-n2)^2); if d==0 hl=c h2=0.5 hl=1/(1+(dO/d)^(2*n) h2=1/(1+(d0/d)^(2n)+0.5 2(1J=h2 g(ij) end ggl=ifftshift(gg 1); ggl=uints (real(ifft(ggD)); subplot(223); ishow(g1)‰显示巴特沃斯高通滤波结果 ile(巴特沃斯高通滤波结果) gg2=1Hftshitt(eg2); gg2=uints(real(ifft2(gg2))) subplot(224; ashow(gg2);%显示巴特沃斯高通加强滤波结果 itle巴特沃斯高通加强滤波结果); 例414:同态滤波的增强效果 J= imread( 'eight. tif);%读入原图 subplot(121); imshow(J) J=double(): f-fit2() %采用傅里叶变换 g=fitshift(f); 数据矩阵平衡 M, N=size(f) rl=0.5; th n1=floor(M/2); n2=floor(N/2) for i=l:m = d=sqrt(i-n)^2+(j-n2)^2) h-(rh-rl)*(1-exp(c数(d42/d0.42))+r g(1)=hg(i,j) end g-ifftshitt(g) g=uint8(real(ifft(g))); subplot(122); imshow(g); 第5章图像复原 例5.1 C=imreadcimage3jPg); %装入清晰图像 subplot(1, 2, 1); %将图形窗口分成两个矩形平面 imshow(C); %在一个矩形平面中显示装入的图像 LEN=30 ‰设置运动位移为30个象素 THETA=45 设置运动角度为450 PSF= special( motin,LEN, THETA);%建立二维仿真线性运动滤波器PSF M=infilter(C,PSH;' circular;conv);5用PSH产生退化图像 subplot(1,2,2) imshow( MFUZZY;%在第二个矩形平面中显示模糊后的图像 imwrite(MF, image3-MEjPg) 将运动模糊后的图象保存起来备用 例52消除图54(b)的运动模糊,只 MATLAB程序如下: MF,map]=imreadcimage3-MEjpg) %装入运动模硼图像 figure(1): imshow (MF) %显示模糊图像 LEN=30 THETA=45 INITPSF= fspecial( motion',LEN, THETA);%建立复原点扩散函数 J Pdeconvblind(MF, INITPSF, 30 %士卷积 figure(2): imshow(); %显示结果图像如图56a) figure(3): imshow(P, [l, notruesize') 显示复原点扩散函数如图56(b) 例53逆滤波与维纳滤波的比较 F=checkerboard(8) 生成原始图像F f how(F, D; PSF=fspeciall'motion, 7, 45) 生成运动模糊图像MF MF=infilter, PSF, circular) noise= impose( zeros(size( F)) gaussian:0,0.001)%生成高斯噪声 MFN=MF +noise, 生成运动模糊+高斯噪声图像MFN figure(2 imshow(MEN, D) NSR= suminoise(: ) A2)sum(MFN(). 2); 计算噪信比 figure(3) imshow(deconvwnr(MFN, PSF)); %逆滤波复原 figure(4): imshow(deconvwnr(MFN, PSF, NSR), D); %维纳滤波复原 例5.7顺序统计滤液器比较 f=imreadcimage 4g ipg) figure(D: imshow(f) te原始图像); g=imnoise(f, salt pepper, 0.2) figure(2); imshow(g); tile盐噪声污染的图像); gI=double(g)/255 l=medfilt2(gl, symmetric) figure(3); imshowGj1); itde(“中值滤波图像; j2=ordfilt2(gl, median(1: 33),ones(3, 3),'symmetric); figure(4); imshow(j2); ite“点滤波图像); 3=ordfilt2(gl, 1, ones(3, 3) figure(5); imshow(j3 ) itde('最小值滤波图像); j4=ordfilt2(gl, ,, ones (3, 3) figure(6): imshow(j4); il最大值滤波图像"; 例58简单图像的 attine变换 MATLAB程序如下: f=checkerboard(24) %建立原始图像,如图516a) figure( 1); imshow(D: s=0.7 theta=pi/6 T=s cos(theta)s sin(theta 0 %建立变换矩阵:旋转与尺度变换 s" sin(theta )s* cos( theta)O 001l; tform=maketformc'affineT) gl- imtransforr(f; tform, nearest);%最近邻插值变换,如图5.16(b) figure(2); imshow(g1); g2=imtransform(t, tform) %双线性插值变换,如图516(c) figure(3); inshow(g2); g3= Eimtransforn( f torn, Fillvalue',0.5);%修改双线性插值变换的背景色为灰色 figure(4): imshow(g3); 例59利用“连接点”实施图像配准复原 MATLAB程序如下: f=imreadctext. jpg) %读入256×256原始图,如图5.17(a) figure( 1); imshow(f) g=imreadctextg.jpg): %卖入几何失真图,,如图5.17b) figure(2); imshow(g)

...展开详情
试读 55P MATLAB程序大全
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
MATLAB程序大全 50积分/C币 立即下载
1/55
MATLAB程序大全第1页
MATLAB程序大全第2页
MATLAB程序大全第3页
MATLAB程序大全第4页
MATLAB程序大全第5页
MATLAB程序大全第6页
MATLAB程序大全第7页
MATLAB程序大全第8页
MATLAB程序大全第9页
MATLAB程序大全第10页
MATLAB程序大全第11页

试读结束, 可继续读6页

50积分/C币 立即下载 >