图像的处理代码.docx
《图像的处理代码.docx》由会员分享,可在线阅读,更多相关《图像的处理代码.docx(14页珍藏版)》请在冰豆网上搜索。
![图像的处理代码.docx](https://file1.bdocx.com/fileroot1/2022-10/13/e22bec20-4b8f-46c9-bfff-b98f75286eae/e22bec20-4b8f-46c9-bfff-b98f75286eae1.gif)
图像的处理代码
第三章基于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);%显示图像I
title('原图像');
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:
a
forj=1:
b
d=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:
a
forj=1:
b
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+0.414*(d/d0)^(2*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.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:
a
forj=1:
b
d=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:
a
forj=1:
b
distance=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