实验四 图像的滤波处理与图像空间变换
一、 实验目的:
1、了解MATLAB 工具箱中滤波器 2、掌握用滤波方式去除图像噪声算法 3、学会对图像的空间变换 二、 实验内容
1、生成含有噪声的图像
分别用imnoise(),imnoise2(),imnoise3()函数生成含有噪声的图像,改变相应参数,观察图像变化,理解各参数的作用。
Imnoise2()的使用:在图像‘Fig0704(Vase).tif.tif’中加入均值为0,标准差为0.1 的高斯噪声。 程序:
i=imread('Fig0704(Vase).tif.tif'); g1=imnoise(i,'gaussian',0,0.01); [M,N]=size(i);
n2=imnoise2('gaussian',M,N,0,0.1); g2=im2double(i)+n2; figure;imshow(g2);
2、噪声估计
用roipoly()、histroi()、statmoments()等函数进行图像噪声参数估计。显示图如下。 程序:
f=imread('Fig0704(Vase).tif.tif'); [M,N]=size(f);
n2=imnoise2('gaussian',M,N,0,0.1); g2=im2double(f)+n2;
r=[152 200 400 503 159]; c=[106 370 370 106 106]; B=roipoly(g2, c, r); [p,npix]=histroi(g2,c,r); figure;bar(p,1);
25002000150010005000050100150200250300
3、设计陷波滤波器(Notch filter) 利用以下公式编程实现陷波滤波器。
程序: u=-50:50; v=-50:50 U=length(u); V=length(v); u0=20;u1=40; v0=40;v1=20;
H0=notch_filter(u,v,u0,v0); H1=notch_filter(u,v,u1,v1); for(x=1:U) for(y=1:V)
H(x,y)=H0(x,y)*H1(x,y); end end
figure;mesh(H); 子函数:
function [ H ] = notch_filter(u,v ,u0,v0 ) U=length(u); V=length(v); D0=20; n=2; M=0; N=0; for(x=1:U) for(y=1:V)
D1(x,y)=[(u(x)-M/2-u0)^2+(v(y)-N/2-v0)^2]^(1/2); end end for(x=1:U) for(y=1:V)
D2(x,y)=[(u(x)-M/2+u0)^2+(v(y)-N/2+v0)^2]^(1/2); end end for(x=1:U)