图像处理代码上课讲义.doc
Good is good, but better carries it.精益求精,善益求善。图像处理代码-第三章基于MATLABD的模拟噪声生成MATLAB图像处理工具箱提供的噪声添加函数imnoise,它可以对图添加一些典型的噪声。其语法是:J=imnoise(I,type)J=imnoise(I,type,parameters)其功能是:返回对原图像I添加典型噪声的图像J,参数type和parameters用于确定噪声的类型和相应的参数。三种典型的噪声:type=gaussian时,为高斯噪声;type=salt&pepper时,为椒盐噪声;type=speckle时,为乘法噪声;如下程序就实现了对名为king图像的3种噪声污染了的图像:i=imread('king.jpg');%读取图像I=rgb2gray(i);I1=imnoise(I,'gaussian');%加高斯噪声I2=imnoise(I,'salt&pepper',0.02);%加椒盐噪声I3=imnoise(I,'speckle');%加乘性噪声subplot(221),imshow(I);%显示图像Ititle('原图像');subplot(222),imshow(I1);title('受高斯噪声污染的图像');subplot(223),imshow(I2);title('受椒盐噪声污染的图像');subplot(224),imshow(I3);title('受乘性噪声污染的图像');处理结果如图3.1所示:图3.1图像添加噪声处理结果第四章均值滤波处理方法4.2均值滤波法对图像的处理在MATLAB图像处理工具箱中,提供了imfilter函数用于实现均值滤波,imfilter的语法格式为:B=imfilter(A,H)其功能是,用H模板对图像A进行均值滤波,模板为:取H1,程序如下:i=imread('king.jpg');%读取图像I=rgb2gray(i);I1=imnoise(I,'gaussian');I2=imnoise(I,'salt&pepper',0.02);I3=imnoise(I,'speckle');H1=ones(3,3)/9;%3×3领域模板J=imfilter(I,H1);%领域平均J1=imfilter(I1,H1);J2=imfilter(I2,H1);J3=imfilter(I3,H1);subplot(221),imshow(J);title('原图像滤波后');subplot(222),imshow(J1);title('高斯污染图像滤波后');subplot(223),imshow(J2);title('椒盐污染图像滤波后');subplot(224),imshow(J3);title('乘法污染图像滤波后');运行结果如图4.3图4.33×3领域模板处理结果取H2,程序如下:i=imread('king.jpg');%读取图像I=rgb2gray(i);I1=imnoise(I,'gaussian');I2=imnoise(I,'salt&pepper',0.02);I3=imnoise(I,'speckle');H2=ones(5,5)/25;%5×5领域模板J=imfilter(I,H2);%领域平均J1=imfilter(I1,H2);J2=imfilter(I2,H2);J3=imfilter(I3,H2);subplot(221),imshow(J);title('原图像滤波后');subplot(222),imshow(J1);title('高斯污染图像滤波后');subplot(223),imshow(J2);title('椒盐污染图像滤波后');subplot(224),imshow(J3);title('乘法污染图像滤波后');运行结果如图4.4:图4.45×5领域模板处理结果第五章中值滤波处理方法5.2中值滤波法对图像的处理MATLAB图像处理工具箱提供了medfilt2函数用于中值滤波。其语法格式为:B=medfilt2(A)其功能为:用3×3的滤波窗口对图像A进行中值滤波;B=medfilt2(A,m,n)其功能是:用大小为m×n的窗口对图像A进行中值滤波;B=medfilt2(A,'indexed',.)其功能为:对索引图像A进行中值滤波;用3×3中值滤波模板和5×5中值滤波模板对图像进行处理,程序如下:i=imread('king.jpg');I=rgb2gray(i);I1=imnoise(I,'gaussian');I2=imnoise(I,'salt&pepper',0.02);I3=imnoise(I,'speckle');J1=medfilt2(I1,3,3);%3×3中值滤波模板J2=medfilt2(I2,3,3);J3=medfilt2(I3,3,3);J4=medfilt2(I1,5,5);%5×5中值滤波模板J5=medfilt2(I2,5,5);J6=medfilt2(I3,5,5);figure,subplot(121),imshow(J1);title('高斯3*3中值滤波后');subplot(122),imshow(J2);title('椒盐3*3中值滤波后');figure,subplot(121),imshow(J3);title('乘法3*3中值滤波后');subplot(122),imshow(J4);title('高斯5*5中值滤波后');figure,subplot(121),imshow(J5);title('椒盐5*5中值滤波后');subplot(122),imshow(J6);title('乘法5*5中值滤波后');处理结果如图5.1图5.13×3中值滤波模板和5×5中值滤波模板对图像进行处理第六章频域低通滤波法用理想低通滤波器对图像处理,程序如下(以受高斯噪声污染图像为例):i=imread('king.jpg');I=rgb2gray(i);I1=imnoise(I,'gaussian');s=fftshift(fft2(I1);a,b=size(s);a0=round(a/2);b0=round(b/2);d0=10;%这里d取10和50作比较fori=1:aforj=1:bd=sqrt(i-a0)2+(j-b0)2);ifd<=d0,h=1;elseh=0;end;s(i,j)=h*s(i,j);end;end;s=uint8(real(ifft2(ifftshift(s);subplot(121),imshow(I1);title('受高斯噪声污染后的图像');subplot(122),imshow(s);title('高斯污染图像滤波后');处理结果如图6.3所示:图6.3理想低通滤波器处理结果6.2巴特沃思低通滤波器(BLPF)对图像的处理用巴特沃斯滤波器对图像处理,程序如下(以受高斯噪声污染图像为例):i=imread('king.jpg');I=rgb2gray(i);I1=imnoise(I,'gaussian');s=fftshift(fft2(I1);a,b=size(g);n=1;%这里阶次n取1和3做比较d0=50;%此处d0为截止频率n1=fix(a/2);n2=fix(b/2);fori=1:aforj=1:bd=sqrt(i-n1)2+(j-n2)2);h=1/(1+0.414*(d/d0)(2*n);s(i,j)=h*s(i,j);endends=uint8(real(ifft2(ifftshift(s);subplot(121),imshow(I1);title('受高斯噪声污染的图像');subplot(122),imshow(s);title('高斯污染图像处理后');处理后结果如图6.5所示:图6.5巴特沃斯低通滤波器处理结果6.3指数滤波器(ELPF)对图像的处理用指数低通滤波器对图像处理,程序如下(以受高斯噪声污染图像为例):i=imread('king.jpg');I=rgb2gray(i);I1=imnoise(I,'salt&pepper',0.02);s=fftshift(fft2(I1);a,b=size(g);n=1;%这里阶次n取1和3做比较d0=50;%此处d0为截止频率n1=fix(a/2);n2=fix(b/2);fori=1:aforj=1:bd=sqrt(i-n1)2+(j-n2)2);h=exp(-0.347*(d/d0)n);s(i,j)=h*s(i,j);end;end;s=uint8(real(ifft2(ifftshift(s);subplot(121),imshow(I1);title('受高斯噪声污染的图像');subplot(122),imshow(s);title('高斯污染图像处理后');处理结果如图6.7所示.图6.7指数低通滤波器处理结果6.4梯形滤波器(TLPF)对图像的处理用梯形低通滤波器对图像处理,程序如下(以受高斯噪声污染图像为例):i=imread('king.jpg');I=rgb2gray(i);I1=imnoise(I,'salt&pepper',0.02);s=fftshift(fft2(I1);a,b=size(s);a0=round(a/2);b0=round(b/2);d0=10,d1=50;%这里d取10和50作比较fori=1:aforj=1:bdistance=sqrt(i-a0)2+(j-b0)2);ifdistance<=d0,h=1;elseifdistance>=d1,h=0;elseh=1-(d-d0)/(d1-d0);end;end;s(i,j)=h*s(i,j);end;end;s=uint8(real(ifft2(ifftshift(s);subplot(121),imshow(I1);title('受高斯噪声污染的图像');subplot(122),imshow(s);title('高斯污染图像处理后');处理结果如图6.9所示图6.9梯形低通滤波器对图像的处理结果6.5构建二维滤波器对图像的处理首先构建二维滤波器d,传递函数如图6.10所示;f1,f2=freqspace(25,'meshgrid');Hd=zeros(25,25);d=sqrt(f1.2+f2.2)<0.5;%0.5为截止半径大小Hd(d)=1;h=fsamp2(Hd);figure,freqz2(h,64,64);然后用所构建的二维滤波器对以上图像进行滤波i=imread('king.jpg');I=rgb2gray(i);I1=imnoise(I,'gaussian');I2=imnoise(I,'salt&pepper',0.02);I3=imnoise(I,'speckle');J=imfilter(I,h,'replicate');J1=imfilter(I1,h,'replicate');J2=imfilter(I2,h,'replicate');J3=imfilter(I3,h,'replicate');subplot(221),imshow(J);title('原图像滤波后');subplot(222),imshow(J1);title('高斯污染图像滤波后');subplot(223),imshow(J2);title('椒盐污染图像污染后');subplot(224),imshow(J3);title('乘法污染图像滤波后');其运行结果如下图6.11所示:图6.10用频率采样法构建的二维滤波器参考文献1曹茂永,数字图像处理.北京大学出版社,20072唐向宏,MATLAB及在电子信息类课程中的应用.电子工业出版社,20103杨帆,等数字图像处理与分析北京航空航天大学出版社,2007.4-