图像滤波软件的GUI设计.docx
- 文档编号:7140226
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:12
- 大小:928.13KB
图像滤波软件的GUI设计.docx
《图像滤波软件的GUI设计.docx》由会员分享,可在线阅读,更多相关《图像滤波软件的GUI设计.docx(12页珍藏版)》请在冰豆网上搜索。
图像滤波软件的GUI设计
第一章设计环境及任务
1.1设计环境
MATLAB是当前适用比较广泛的数学软件,在MATLAB中GUI[1]是一个包含多种对象的图形窗口,并为GUI开发提供一个方便高效的集成开发环境GUIDE。
GUIDE主要是一个界面设计工具集,MATLAB将所有GUI支持的控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。
GUIDE将设计好的GUI保存在一个FIG文件中,同时还生成M文件框架。
其中FIG文件包括GUI图形窗口及其所有FIG文件包含序列化的图形窗口对象;M文件包括GUI设计、控制函数以及定义为子函数的用户控件回调函数。
GUI创建包括界面设计和控件编程两部分,主要步骤如下:
通过设置GUIDE应用程序的选项来运行GUIDE;使用界面设计编辑器进行界面设计;编写控件行为响应控制(即回调函数)代码。
在MATLAB中,GUIDE提供多个模板来定制GUI。
这些模板均已包括相关的回调函数,可以通过修改相应的M文件函数实现指定功能。
1.2设计任务
这次课程设计涉及到MATLAB中GUIDE工具的使用,通过创建菜单型界面,来实现图像的处理。
该设计打算通过编写不同的按钮代码,实现读取原图像然后对图像进行处理达到对比的效果,图像处理包括不同参数加噪(高斯噪声、椒盐噪声、乘性噪声)以及滤波(高通滤波、低通滤波)等。
第二章设计过程
2.1界面设计
在命令窗口中直接输入guide命令,弹出如图1所示的窗口,在弹出的guidequickstart窗口中,在CreateNewGUI选项卡中选择BlankGUI(default),并点击确定按钮,进入图形用户界面来设计系统静态界面,图2就是Guide提供的图形界面设计工具集【3】,在此界面下就可以利用控件组件、文本菜单、排列工具等对系统的界面进行设计。
图1图2
各控件的放置如图3所示,并通过属性检查器等对各控件进行相应的设置。
因为需要对读入图像分别加高斯噪声,椒盐噪声,乘性噪声后进行高通滤波或者低通滤波,所以可以建立三个类似的界面以便后面的回调函数关系见处理,然后通过对PushButton的回调函数使它们三个间建立关系。
图3
2.2各控件程序设计及功能实现
2.2.1原图读取
为了读入原图时操作方便,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,然后可以根据自己需求选择不同图片。
为了实现读入图片功能需要在设计界面中右击“读入原图”按钮,选择“callback”跳转到回调函数的编写。
在Matlab中,创建文件打开对话框的函数是uigetfile。
其主要代码如下:
[fname,panme,index]=uigetfile({'*'},'选择图片');
globala;
ifindex
str=[panmefname];
a=imread(str);
set(handles.axes1,'HandleVisibility','ON');
axes(handles.axes1);
imshow(a);
为了两个坐标都能读入原图,并且第一个坐标读入图像后不再发生变化,需要加如下代码:
set(handles.axes1,'HandleVisibility','OFF');
axes(handles.axes2);
imshow(a);
End
2.2.2退出
当我们操作结束时需要退出当前界面退出,要实现此功能程序比较简单,如下所示;
clc;
closeall;
close(gcf);
Clear;
2.3加噪
2.3.1高斯噪声
高斯噪声,顾名思义就是噪声服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少,且这个规律服从高斯分布。
高斯分布也称正态分布,又称常态分布,记为N(μ,σ^2),其中μ,σ^2为分布的参数,分别为高斯分布的期望和方差。
当有确定值时,p(x)也就确定了,特别当μ=0,σ^2=1时,X的分布为标准正态分布。
在MATLAB中,用函数imnoice()实现对图像的加入噪声操作,产生高斯噪声的函数是“gaussian”,调用的格式为J=imnoise(I,'gaussian',p1,p2);其中p1为高斯噪声的均值,p2为方差。
由于影响高斯噪声的主要参数有均值和方差为了方便对参数的改变,所以这里设计一个输入对话框,可以通过对话框来设置这两个参数,如下一组命令建立了图4所示的输入对话框:
prompt={'参数1:
','参数2:
'};
defans={'0','0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
图4
为了实现加噪是对第二个坐标图像处理,需要加入代码axes(handles.axes2);
通过对高斯噪声均值和方差的设置就可以得到加噪后的图像。
原图加入高斯噪声后效果如图图5所示:
图5
2.3.2椒盐噪声
椒盐噪声类似把椒盐撒在图像上,因此得名,是一种在图像上出现很多白点或黑点的噪声,如电视里的雪花噪声等。
椒盐噪声是指两种噪声,一种是盐噪声(saltnoise),另一种是胡椒噪声(peppernoise)。
盐=白色,椒=黑色。
前者是高灰度噪声,后者属于低灰度噪声。
一般两种噪声同时出现,呈现在图像上就是黑白杂点,椒盐噪声往往是由图像切割引起的。
椒盐噪声的产生函数是“salt&pepper”,调用格式为f=imnoise(a,’salt&pepper’,p1),影响椒盐噪声的参数有一个,所以也需要加入参数输入对话框代码以便参数调整。
加入参数为0.1的椒盐噪声的效果图如图6所示:
图6
2.3.3乘性噪声
乘性噪声时信道特性随机变化引起的噪声,它主要表现在无线电通信传输信道中,例如,电离层和对流层的随机变化引起信号不反应任何消息含义的随机变化,而构成对信号的干扰。
这类噪声只有在信号出现在上述信道中才表现出来,它不会主动对信号形成干扰,因此称之为乘性噪声。
乘性噪声的产生函数是“speckle”,调用格式为f=imnoise(a,’speckle’,p1),p1的参数(方差)也可以通过对话框得到。
加入参数为0.02的乘性噪声效果图如图7所示:
图7
2.4滤波
2.4.1高通滤波器
高通滤波器让高频分量畅通无阻,而对低频分量则充分限制。
去掉信号中不必要的低频成分,去掉低频干扰的滤波器。
高通滤波器是指车载功放中能够让中、高频信号通过而不让低频信号通过的电路,其作用是滤去音频信号中的低音成分,增强中音和高音成分以驱动扬声器的中音和高音单元。
巴特沃斯滤波器是电子滤波器的一种。
巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。
巴特沃斯滤波器的特性巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。
在振幅的对数对角频率的波得图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。
利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理。
二维理想高通滤波器的传递函数为:
D0是从频率矩形中点测得的截止频率长度,它将以D0为半径的圆周内的所有频率置零,而毫不衰减地通过圆周外的任何频率。
但其物理上是不可实现的。
巴特沃斯高通滤波器的传递函数为:
式中D0为截止频率距远点距离。
与低通滤波器的情况一样,可认为巴特沃斯高通型滤波器比IHPF更平滑。
设计中为二阶巴特沃斯高通滤波器,所以代码nn=2;选取截止频率为25即d0=25;为了实现图像先加噪需要加入代码v=imnoise(a,'speckle');h=rgb2gray(v);设计效果如图图8所示:
图8
2.4.2低通滤波
低通滤波器就是利用电容通高频阻低频,电感通低频阻高频,对于需要截止的高频,利用电容吸收电感、阻碍的方法不使它通过,对于需要的低频,利用电容高祖、电感低阻的特点使它通过。
巴特沃斯低通滤波器的传递函数为:
设计中为二阶巴特沃斯低通滤波器,所以代码nn=2;选取截止频率为50;设计效果图如图9所示:
图9
第三章结果及问题分析
本次课设通过运用MATLABGUI设计,基本能够实现对图像的加噪后滤波处理,课设中的要求也能够较好实现,但是代码如果进一步改进完善会更加完美。
虽然本学期数字图像处理课程实验部分我们使用过MATLAB,但是GUI设计部分却很少接触,所以本次课设遇到颇多的问题。
比如在加噪设置参数时虽然代码中加入了参数对话框,但是通过对不同参数输入发现加噪后图像并没有多大变化,最后经过对这段代码仔细检查发现原来显示图像函数imshow()放在了参数输入代码前,导致最后显示出来的加噪图像为参数为代码中设置的默认值的加噪,在将显示图像函数调到参数设置后此功能终于得到实现。
在对图像滤波时起初不能确定是对其加噪后在进行的滤波处理,通过慢慢研究在滤波代码前加入了加噪函数,这样就可以实现是对其加噪后在滤波。
最多的问题就是设计中对代码的理解和变量关系在运行时总是出错,但是通过慢慢检查改进,最终使代码功能得以实现。
在对加噪后图像高通滤波后因为滤除了噪声之外还滤除了图像原来比较多的低频信息,所以结果比较模糊,多为模糊的轮廓图。
对加噪后图像低通滤波时滤除噪声以外滤除了图像中比较少的高频成分,所以图像变化相比高通不是太大,能够辨认出。
第四章总结
通过本次课程设计,使自己对MATLABGUI设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。
由最初安装MATLAB遇到的问题到代码问题最终到完全能够实现到图像的滤波可以说是困难重重,但是经过慢慢的看书理解和同学以及老师的帮助最终还是顺利完成综合设计。
在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高,同时我也认识到平时不是我们学不会,而是根本没有花时间去学,只要踏踏实实的学习过,最终所有的问题都不是问题。
虽然这次综合设计比较简单,但是,它为我的毕业设计提供了很好的基础,对于MATLAB中基本的代码也有了了解认识,在后面的时间里我会通过资料认真学习MALAB在图形处理方面的问题,为我的毕设做好准备。
参考文献
[1]罗华飞.MATLABGUI设计学习手记,北京航空航天大学出版社,2009.8:
224—265
[2]赵小川.MATLAB数字图像处理实战,机械工业出版社,2013.6:
20—42
[3]杨杰.数字图像处理及MATLAB实现,电子工业出版社,2010:
155—212
[4]姚敏.数字图象处理:
机械工业出版,2011:
98—123
[5]施晓红.MATLAB精通GUI图形界面编程,北京大学出版社,2003:
122—156
[6](美)冈萨雷斯等.数字图像处理(第二版,英文版).电子工业出版社,2003:
50—64
[7]贺兴华等.MATLAB7.x图像处理人民邮电出版社,2006:
112—154
[8]罗军辉等.MATLAB7.0在图像处理中的应用.机械工业出版社,2005:
64—98
[9]楼顺天等.MATLAB程序设计语言.西安电子科技大学出版社,2000:
86—120
[10]郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:
电子工业出版社2000:
23—44
附录(主要程序):
%读入原图片
[fname,panme,index]=uigetfile({'*'},'选择图片');
globala;
ifindex
str=[panmefname];
a=imread(str);
set(handles.axes1,'HandleVisibility','ON');
axes(handles.axes1);
imshow(a);
set(handles.axes1,'HandleVisibility','OFF');
axes(handles.axes2);
imshow(a);
end
%高斯噪声
globala;
prompt={'参数1:
','参数2:
'};
defans={'0','0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
f=imnoise(a,'gaussian',p1,p2);
imshow(f);
axes(handles.axes2);
%椒盐噪声
globala;
prompt=('输入参数:
');
defans={'0'};
p=inputdlg(prompt,'input',1,defans);%创建数据输入窗口
p1=str2num(p{1});
f=imnoise(a,'salt&pepper',p1);
axes(handles.axes1);
imshow(f);
axes(handles.axes2);
%乘性噪声
globala;
prompt=('输入参数:
');
defans={'0.02'};
p=inputdlg(prompt,'input',1,defans);%创建数据输入窗口
p1=str2num(p{1});
f=imnoise(a,'speckle',p1);
imshow(f);
axes(handles.axes2);
%高通滤波
globala;
t=imnoise(a,'gaussian');
h=rgb2gray(t);
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:
N
d=sqrt((i-m)^2+(j-n)^2);
ifd<=d0
h=0;
elseh=1;
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3);
axes(handles.axes2);
%低通滤波
globala;
m=imnoise(a,'gaussian');
h=rgb2gray(m);
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)^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);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3);
axes(handles.axes2);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 滤波 软件 GUI 设计