matlab-空域和频域进行滤波处理(2)

2018-12-04 16:56

subplot(2,3,1);% 分割2*3个窗口。取第一个窗口,下面在第一个窗口处显示图像 imshow (f);%显示灰度图 colormap(gray);

title('原始图')%给显示的图像命名为“原始图”

J=imnoise(f,'gaussian',0,0.09);%给原始图加入参数为0.09的高斯白噪声

subplot(2,3,2);% 分割2*3个窗口。取第二个窗口,如果下面有绘图语句,就表示要

%在第二个窗口中绘图 imshow(J);%显示加了高斯白噪声的图像J

title('噪声图')%命名为“噪声图”

[m n]=size(f); %获取灰度图的大小 f=double(f);%转换f为双精度型 c=1/9*[1 1 1;1 1 1;1 1 1]; %3*3模板 for i=1:m for j=1:n

L=f(i:i,j:j).*c; %求点积 G(i,j)=sum(sum(L));%求和 end end

subplot(2,3,3);image(G);%取第三个窗口 title('3*3模板')%命名为“3*3模板”

c=1/25*[1 1 1 1 1;1 1 1 1 1;1 1 1 1 1]; %5*5模板 for i=1:m for j=1:n

L=f(i:i,j:j).*c; %求点积 G(i,j)=sum(sum(L));%求和 end end

6

subplot(2,3,4);image(G);%在第四个窗口中显示图像 title('5*5模板')% 命名为“5*5模板”

c=1/49*[1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1]; %7*7模板 for i=1:m for j=1:n

L=f(i:i,j:j).*c; %求点积 G(i,j)=sum(sum(L));%求和 end end

subplot(2,3,5);image(G);%在第五个窗口中显示图像 title('7*7模板')% 命名为“7*7模板”

(2)低通滤波法源程序

clear; clc; close all;

I=imread('tu.jpg'); %读取图像 [m n p]=size(I);%获取图像矩阵大小

I=double(I);将原来的图像矩阵转换为双精度型的

I=I(1:m,1:n,1).*0.3+I(1:m,1:n,2).*0.51+I(1:m,1:n,1).*0.11;%将原图转换为灰度图 subplot(2,3,1);image(I);colormap(gray); %分割2*3个窗口。取第一个窗口,显示灰度图 title('原始图')%命名为“原始图”

Noise=wgn(m,n,25);%产生25dBm的高斯白噪声 New = Noise + I;%将高斯白噪声与原始信号叠加

subplot(2,3,2);image(New);%在第二个窗口中显示加了噪声的图像 title('噪声图')%命名为“噪声图”

7

g=fft2(New); % 傅立叶变换 g=fftshift(g); % 转换数据矩阵 [M,N]=size(g); %获取矩阵大小

nn=2; % 定义二阶巴特沃斯(Butterworth)低通滤波器 d0=20; %截止频率为20 m=fix(M/2); n=fix(N/2);圆整函数 for i=1:M for j=1:N

d=sqrt((i-m)^2+(j-n)^2);

h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j);%传递函数与信号傅立叶变换函数相乘 end end

result=ifftshift(result);

J2=ifft2(result); %逆傅立叶变换

J3=uint8(real(J2));%将输出图像转换为8位数据存储 subplot(2,3,3);image(J3); %在第三个窗口中显示滤波后的图像 title('截止频率20 ') %命名为“截止频率20”

nn=2; % 定义二阶巴特沃斯(Butterworth)低通滤波器 d0=100; %截止频率为100 m=fix(M/2); n=fix(N/2);圆整函数 for i=1:M for j=1:N

d=sqrt((i-m)^2+(j-n)^2);

h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j); %传递函数与信号傅立叶变换函数相乘 end

8

end

result=ifftshift(result);

J2=ifft2(result);%二维逆傅立叶变换

J3=uint8(real(J2)); %转换为8位存储的图像

subplot(2,3,4);image(J3); %在第四个窗口中显示绿波后的图像 title('截止频率100 ')%命名为“截止频率100”

5 调试过程及结论

在MatLab中输入邻域平均法程序代码后运行程序,得到输出结果如图3所示:

图3 邻域平均法输出图像

由噪声图与滤波后的图像对比可看出,邻域平均法对抑制噪声有明显的效果,但随着邻域的加大,就是随着模板的加大,图像的模糊程度也愈加严重。

在MatLab中输入低通滤波法程序代码后运行程序,得到输出结果如图4所示:

9

图4 低通滤波法输出图像

巴特沃斯低通滤波器的去噪效果与所选的截止频率有关,由于一幅图像的边缘、跳跃部分以及颗粒噪声代表图像信号的高频分量,而大面积的背景区则代表图像信号的低频分量所以,截频设的太低会使图像变得越模糊,因为图像的许多细节信息也被滤掉了。

6 心得体会

这次能力强化训练是《图像平滑处理的空预算法和频域分析》,需要有一定的对数字图像处理方面的知识,由于没有学习过《数字图像处理》这门课,已开始题目布置下来时感到无从下手,查阅了大量资料,对图像平滑处理有了一定的了解,对于MatLab刚开始接触,许多语法、函数都不会使用,于是和同学互相讨论,通过参考大量资源,站在巨人的肩膀上稍加整合创新,最终得出了自己的程序,程序调试运行后,发现最开始根本无法显示图像,检查原因,原来是对MatLab的符号规则不清楚,MatLab中的标点符号必须是在英文状态下输入,这在编写程序时必须小心!修改后得到了正确的显示,但是图像效果对比不明显,通过不断摸索试探,使用不同的图像显示函数,得到了对比鲜明的图像,对分析不同方法的优缺点提供了很大方便。

这次数字图像处理课程设计虽然时间短暂,但我在短时间内学到了许多以前没有接触过的数字图像处理方面的知识,并最终完成了程序设计,得到正确的结果,学到了许多

10

MatLab的知识。为了完成这次课程设计,我花费了很多精力学习MatLab,也查阅了很多关于MatLab的书籍,了解了许多MatLab语法和函数功能。在设计过程中,我也碰到了许多问题,走了很多弯路,主要是因为对数字图像处理的原理还弄得不透彻,对MatLab还不熟练,犯了一些常规错误,但最后通我查阅相关书籍和请教同学,问题都迎刃而解。在解决问题过程中,加深了对知识的理解,最重要的是学会了自己解决问题的能力,受益非浅。

7 参考文献

[1]何东健,耿楠,张义宽.数字图像处理.西安电子科技大学出版社.2003 [2]阮秋琦.数字图像处理学.电子工业出版社.2007

[3]罗军辉,冯平,哈立旦 ? A.MATLAB7.0在图像处理中的应用.机械工业出版社.2005

11


matlab-空域和频域进行滤波处理(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:山东省泰安市2018届高三上学期期末英语考试试题(附答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: