基于MATLABGUI的图像滤波器的设计.docx
《基于MATLABGUI的图像滤波器的设计.docx》由会员分享,可在线阅读,更多相关《基于MATLABGUI的图像滤波器的设计.docx(12页珍藏版)》请在冰豆网上搜索。
基于MATLABGUI的图像滤波器的设计
推鳶聊紇爭院
课程设计报告
题目:
图像滤波器的设计
学生姓名:
刘瑞
学生学号:
1114030118
系另g:
电气信息工程学院
专业:
通信工程
届别:
15届
指导教师:
陈帅
电气信息工程学院制
2014年6月
图像滤波器的设计
学生:
刘瑞指导教师:
陈帅
电气信息工程学院通信工程专业
1目的与要求
1.1目的:
利用MATLA的GUI程序设计一个简单实用的图像处理程序。
该程序具
备1.2中所述的图像处理功能,以满足本次设计要求。
1.2要求:
设计一个MATLABB形界面,可以选择输入图像文件,对图形文件进行多种加噪声,设计滤波器进行滤波处理,并显示结果。
2方案制定
2.1设计原理:
本设计利用MATLA软件设计图像界面以实现相应功能,图像界面,简称GUI,是一种提供人机交互的工具和方法。
MATLA的GUI为开发者提供了一个不脱离MATLA的开发环境,有助于MATLA程序的GUI集成。
在MATLA中的GUIDE就是图像用户界面开发环境,它向用户提供了一系列的创建用户图像界面的工具。
这大大简化了GUI设计和生成的过程1。
2.2功能分析
设计要求该图形界面可以选择输入图像文件,可使用GUI中的“PushButton”
按键或是通过工具条中的“MenuEditor”设计相应功能。
本次设计采用后者实现。
在满足基本要求下,添加“保存图像”和“退出”两项菜单功能1。
通过三种噪声(椒盐、高斯、乘性)和两种滤波器(高通、低通)对图像进行加噪声和滤波处理。
噪声是不可预测的,只能用概率方法来认识的随机误差。
三种噪声特性见4.2
小节。
低通滤波器的功能是让低频率通过而滤掉高频,其作用是过滤包含在高频中的噪
声。
所以低通滤波器的效果是图像去噪声平滑增强,但同时也抑制图像的边界,造成
图像模糊。
对于大小M*N的图像,频率点为(u,v)与频域中心距离为D(u,v),则
D(u,v)[(uM)2(vN)2]0.52
(1)
22
高通滤波器是抑制低频,让高频分量通过,其作用是使图像得到锐化处理,突出图像边界。
高通滤波器的产生公式为
设计两个显示图像的窗口,一个用于显示原始图像,另一个用于显示处理后的图像。
3界面设计
3.1设计界面
设计界面分为显示区域与操作区域两部分。
显示区域用于显示载入的图像和处理后的图像,操作区域用于实现图像的选取和处理。
设计完成后运行的软件界面如图1所示。
…丨口丨
图1设计界面
3.2菜单界面
通过“MenuEditor”创建如下菜单,通过以下菜单来选择输入图形文件并做相应处理,如图2所示
4具体设计
4.1菜单
4.1.1载入图像
载入图像时,通过对话框的形式来选择文件,通过uigetfile函数来实现,调用
的格式为[filename,pathname]=uigetfile({'*.jpg';'*bmp';'*gif},'载入图
像').通过file=[pathnamefilename];x=imread(file)读取选中的图像,通过
imshow(x)在显示区域上显示图像。
如图3、图4所示。
其中图3为程序运行时弹出的选择图像对话框,图4为载入图像后的图形界面。
图3载入图像对话框
图4载入图像
4.1.2保存图像
保存图像时,通过“uiputfile”、“imwrite”函数实现。
[sfilename,sfilepath]=uiputfile({'*jpg';'*bmp';'*gif;'**'},'保存
图像','untitled.jpg')实现选择图像文件保存的路径与格式;然后,通过sfilefullname=[sfilepath,sfilename];imwrite(handles.img,sfilefullname);实
现对图像的保存。
4.1.3退出
退出程序,可通过clc;closeall;close(gcf);clear;实现
4.2加噪声
设计中,可以通过函数imnoise()给图像添加噪声,调用格式为f=imnoise(l,type,parameters);其中I指要添加噪声的图像,type为噪声类型,
2parameters为对应噪声的参数。
4.2.1椒盐噪声
椒盐噪声又称双极脉冲噪声,其概率密度函数为:
Pa,za
p(z)Pb,zb(3)
0,other
指图像中出现的噪声只有两种灰度值,分别为a和b,出现的概率为Pa和Pb2。
Matlab中产生椒盐噪声的函数为“salt&pepper”,调用格式
f=imnoise(handles.img,'salt&pepper',p1)通过imshow(f);axes(handles.axes2);
显示在axes2中。
如图5所示。
图5原始图像与添加椒盐噪声后图像
422高斯噪声
高斯噪声是一种源于电子电路噪声和由低照明度或高温带来的传感器噪声。
又称
正态噪声。
其概率密度函数为
2
p(z)——L(eih)(4)
厂
z表示灰度值,u表示噪声期望,为噪声的标准差2。
Matlab中产生高斯噪声
的函数为“gaussian”,调用的格式为f=imnoise(handles.img,'gaussian',p1,p2);
其中p1为高斯噪声的均值,p2为方差。
通过imshow(f);axes(handles.axes2);显示
在axes2中。
如图6所示
图6原始图像与添加高斯噪声后图像
4.2.3乘性噪声
与高斯噪声和椒盐噪声类似,利用函数“speckle”可为图像添加乘性噪声,调
用格式为f=imnoise(handles.img,'speckle',p1)。
由公式f=(handles.img)*n*p1,
降乘性噪声添加到handles.img(图像)中,其中n是均值为0,方差为p1的均匀分布的随机噪声。
如图7所示。
处理前处錘后
4.3滤波器
431低通滤波器(以巴特沃斯低通滤波器为例)
巴特沃斯低通滤波器产生公式为
图8原始图像与低通滤波后图像
其中Do为截至频率,n为阶数2。
设计中选择截至频率为50,阶数为2,程序运
行后图像如图8所示
处理前
业理后
4.3.2高通滤波器(以巴特沃斯高通滤波器为例)
H(u,v)=
1
1[Do/D(u,v)]2n
(6)
巴特沃斯高通滤波器的产生函数为:
图像如图9所示
图9原始图像与高通滤波后图像
Do为截至频率,n为阶数2。
设计中选择截至频率为25,阶数为2,程序运行后
5结果分析
软件测试基本成功,课题所要求的功能均能较好实现。
其中值得一提的是在滤波处理中的低通滤波与高通滤波的效果。
由于一般图像中含有较多的低频信息成分高频成分较少,通过低通滤波后,噪声以及高频成分被滤除,图像虽有少量失真,略显模糊,但尚可辨识。
但若是通过高通滤波后,大量的有效低频信息被滤除,图像严重失真,不可辨识。
6心得体会
刚看到题目时,感觉有点高深莫测,一时无从下手,在查阅资料和请教陈老师与同学后,逐步对课题和其所涉及的Matlab、图像处理等方面的知识有所了解,渐渐的找到了解决问题的途径。
由于本次设计题目需要利用MatlabGUI设计软件界面对图像进行处理,我利用课余时间,重新复习了matlab教材,专门借阅了利用matlab进行图像处理的相关教程,通过索引网络上的相关资料,为课设做了较为充分的准备。
在参考了相关材料及源程序,我对自己要做的课设内容有了进一步的了解,并对matlab的使用有了更深的体会。
设计滤波器对图像进行滤波处理时,处理后的图像变小,与原始图像大小不一样,通过修改源程序,将原始图像转化为灰度图后,再滤波处理,显示为正常大小图像。
设计时,对于程序的编写是整个课程的关键,参考相关程序,不能正常运行,经过反复检查和修改,最终时所有操作均可正常执行。
总的来说,此次的课程设计,不但鞭策着我去巩固matlab的基础理论知识,还提高了我对matlab的实际操作运用,使得理论与实践相结合,为进一步学习matlab打下坚实的基础;也为即将到来的大四毕业设计的完成奠定一定的基础。
7参考文献
[1]刘卫国.《MATLAB^序设计与应用》2006.7217-236
[2]杨丹,赵海滨,龙哲,等.《MATLABS像处理实例教程》2013.7186-200.
附录
载入图像
[filenamepathname]=...
uigetfile({'*.jpg';'*.bmp';'*.gif'},'载入图像');
file=[pathnamefilename];
globalS
S=file;
x=imread(file);set(handles.axes1,'HandleVisibility','ON');axes(handles.axes1);
imshow(x);set(handles.axes1,'HandleVisibility','OFF');axes(handles.axes2);
imshow(x);
handles.img=x;
guidata(hObject,handles);
保存图像
保存图
[sfilename,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.gif';'*.*'},'像','untitled.jpg');
stilefullname=[sfilepath,sfilename];
imwrite(handles.img,sfilefullname);
椒盐噪声
prompt={'input1:
'};
defans={'0.02'};
p=inputdlg(prompt,'input',1,defans);
p1=str2num(p{1});f=imnoise(handles.img,'salt&pepper',p1);
imshow(f);
axes(handles.axes2);
handles.noise_img=f;
guidata(hObject,handles);
高斯噪声prompt={'input1:
','input2'};defans={'0','0.02'};
p=inputdlg(prompt,'input',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});f=imnoise(handles.img,'gaussian',p1,p2);
imshow(f);
axes(handles.axes2);
handles.noise_img=f;guidata(hObject,handles);
乘性噪声
prompt={'input1:
'};defans={'0.02'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});
f=imnoise(handles.img,'speckle',p1);imshow(f);
axes(handles.axes2);handles.noise_img=f;guidata(hObject,handles);
低通滤波器
axes(handles.axes2);y1=handles.img;h=rgb2gray(y1);
f=double(h);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
nn=2;
d0=50;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)A2+(j-n)A2);h=1/(1+0.414*(d/d0)A(2*nn));result(i,j)=h*g(i,j);
result=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));imshow(y3);
高通滤波器
axes(handles.axes2);y1=(handles.img);h=rgb2gray(y1);f=double(h);
k=fft2(f);g=fftshift(k);
[M,N]=size(g);
nn=2;d0=25;m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
Nd=sqrt((i-m)A2+(j-n)A2);ifd<=d0
h=0;
elseh=1;
end
result(i,j)=h*g(i,j);
endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2));imshow(y3);
endend
指导教师评语
成绩(60%
指导教师签字:
年月日
答辩小组评语
成绩(40%
答辩小组签字:
年月日
教研室综合意见
综合成绩
教研室主任签字(盖章):
年月日