基于MATLAB的图形滤波器程序设计_第1页
基于MATLAB的图形滤波器程序设计_第2页
基于MATLAB的图形滤波器程序设计_第3页
基于MATLAB的图形滤波器程序设计_第4页
基于MATLAB的图形滤波器程序设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华侨大学厦门工学院 MATLAB 课程设计报告题 目:专业、班级:学生姓名:学 号:指导教师: 2014 年月日MATLAB课程设计任务书系电子信息工程专业电子信息工程学生姓名陈嘉贤学号1102201005设计题目基于MATLAB的图形滤波器程序设计基本要求: 1、 掌握MATLAB编程的原理和方法。  2、 熟悉语音信号的基本特征和分析处理方法。 3、 掌握数字信号处理的基本概念、理论和方法。 4、 熟练运用MATLAB设计合适的IIR数字滤波器。主要内容:学习掌握数字图像处理中的图像滤波特点,并了解MATLAB语言中的相关函数,设计程序实现

2、各种图像滤波功能以及一些图片处理。设计要求:  自行编写算法,并进行调试,最终实现图像滤波的数字图像处理功能。学有余力的情况下,可以考虑采用图形用户界面(GUI)的方法实现。 目录内容4一、设计内容 4二、设计要求 4三、方案论证与设计原理描述4四、设计结果 51.GUI程序的设计: 6(1)调整亮度的程序设计:6(2)完成彩图到灰度图的转换 :6(3)在开始菜单下的打开按钮的程序:6(4)保存按钮的程序:7(5)退出程序:7(6)添加噪声程序:7(7)还原按键的程序:8(8)翻转程序:82.结果8总结 

3、12参考文献12附录 12内容一、设计内容   学习掌握数字图像处理中的图像滤波特点,并了解MATLAB语言中的相关函数,设计程序实现各种图像滤波功能。 二、设计要求   自行编写算法,并进行调试,最终实现图像滤波的数字图像处理功能。学有余力的情况下,可以考虑采用图形用户界面(GUI)的方法实现。 三、方案论证与设计原理描述 图像滤波是改变图像质量,去除图像噪声的一种方法。主要包括空间域滤波和频域滤波。空间域滤波主要包括线性滤波、中值滤波、维纳滤波。 滤波运算matlab函数imfilter(A,H)(或

4、filter2(B,X)),其中A/B为原始图像,H/X为滤波掩膜。fspecial(type,para):主要的三种类型: 1、average:均值滤波,参数为hsize代表模板尺寸,默认值为【3,3】 2、gaussian:高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为【3 3】,sigma为滤波器的标准值,单位为像素,默认值为0.5. 3、laplacian :拉普拉斯算子,参数alpha用于控制算子形状,取值范围为【0,1】,默认值为0.2. 基本函数 1. imread imread函数用于读入各种图像文件,如:a=imread('e:w01.jpg')

5、注:计算机E盘上要有w01相应的.jpg文件。 2. imfinfo imfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:w01.jpg') 3. rgb2gray rgb2gray()函数用于把真彩图转换为灰度图 4. 4. imshow imshow函数用于灰度图像文件的显示,如: i=imread('e:w01.jpg'); imshow(i); 1. imnoise imnoise函数用于对图像生成模拟噪声,如: i=imread('e:w01.jpg'); j=imnoise(i,'gaussian'

6、,0,0.02);%模拟高斯噪声 5. 5. fspecial fspecial函数用于产生预定义滤波器,如: h=fspecial('sobel');%sobel水平边缘增强滤波器 h=fspecial('gaussian');%高斯低通滤波器 h=fspecial('laplacian');%拉普拉斯滤波器 h=fspecial('log');%高斯拉普拉斯(LoG)滤波器 h=fspecial('average');%均值滤波器 6. 中值滤波 medfilt2函数用于图像的中值滤波,如: i=imread(

7、'e:w01.jpg'); j=medfilt2(i); 加入高斯噪声比的方式 高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。 MATLAB中为图片加高斯噪声的语句是 (1) J = imnoise(I, 'gaussian'); (式3-1) (2) J = imnoise(I, 'gaussian',parameters); (式3-2) (3) J=imnoise(I, 'gaussian',m,v); (式3-3) 其中I为原图象的灰度矩阵,J为加噪声后图象的灰度矩阵一般情况下用 (式3-1)表示即可,

8、(式3-2)中表示是允许修改参数,而(式3-1)中使用缺省参数;(式3-3)中对图像I加高斯噪声,均值为m,方差为v。 高斯平滑滤波器的原理 高斯滤波器是根据高斯函数的形状来选择权值的线性平滑滤波器。高斯平滑滤波器对去除服从正态分布的噪声有很好的效果。一维零均值高斯函数决定了高斯滤波器的宽度。对图像来说,常用二维零均值离散高斯函数做平滑滤波器,在高斯滤波器的设计中,高斯函数的最佳逼近由二项式展开的系数决定。由高斯函数的可分离性得到,二维高斯滤波器能用2个一维高斯滤波器逐次卷积来实现,一个沿水平方向,一个沿垂直方向。实际上,这种运算可以通过使用单个一维高斯模板,对两次卷积之间的图像和最后卷积的结

9、果图像进行转置来完成。 对较大的滤波器,二项式系数对大多数计算机来说都太多,但是,任意大的高斯滤波器都能通过重复使用小的高斯滤波器来实现。高斯滤波器的二项式逼近的可用高斯函数拟合二项式系数的最小方差来计算设计高斯滤波器的另一种途径是直接从离散的高斯分布中计算模板值。为了计算方便,一般希望滤波器权值是整数。在模板的一个角点处取一个值,并选择一个K使该角点处值为1。通过这个系数可以使滤波器整数化,由于整数化后的模板权值之和不等于1,为了保证图像的均匀灰度区域不受影响,必须对滤波模板进行权值规范化。 -四、设计结果 i=imread('C:UsersAdministratorDes

10、ktops15.jpg'); g0 =i(:,:,2); figure,imshow(g0); g1 = imnoise(g0,'gaussian',0,0.01); figure,imshow(g1); h1=fspecial('gaussian',3,1); g2=imfilter(g1,h1,'same'); figure;imshow(g2);1.GUI程序的设计: (1)调整亮度的程序设计:function Untitled_6_Callback(hObject, eventdata, handles)global T

11、axes(handles.axes2);T=getimage;prompt='调整倍数'defans='1'p=inputdlg(prompt,'input',1,defans);p1=str2num(p1);y=imadjust(handles.img,p1);imshow(y);handles.img=y;guidata(hObject,handles);(2)完成彩图到灰度图的转换 :function Untitled_7_Callback(hObject, eventdata, handles)global Taxes(hand

12、les.axes2);T=getimage;x=rgb2gray(handles.img);imshow(x);handles.img=x;guidata(hObject,handles);(3)在开始菜单下的打开按钮的程序:function Untitled_2_Callback(hObject, eventdata, handles)filename,pathname=uigetfile('*.jpg''*.bmp''*.tif''*.*','载入图像');if isequal(filename,0)|iseq

13、ual(pathname,0)errordlg('没有选中文件','出错');return;elsefile=pathname,filename;global S 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);h

14、andles.img=x;guidata(hObject,handles);end(4)保存按钮的程序:function Untitled_3_Callback(hObject, eventdata, handles)sfilename,sfilepath=uiputfile('*.jpg''*.bmp''*.tif''*.*','保存图像文件','untitled.jpg');Ifisequal(sfilename,sfilepath,0,0)sfilefullname=sfilepath,sfi

15、lename;imwrite(handles.img,sfilefullname);else msgbox('你按了取消键','保存失败');end(5)退出程序:function Untitled_4_Callback(hObject, eventdata, handles)clc;close all;close(gcf);clear;clear;(6)添加噪声程序:function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)global Tstr=get(hObject,'stri

16、ng');axes(handles.axes2);switch strcase'高斯噪声'T=getimage;prompt='输入高斯噪声1:','输入高斯噪声2'defans='0','0.02'p=inputdlg(prompt,'input',1,defans);p1=str2num(p1);p2=str2num(p2);f=imnoise(handles.img,'gaussian',p1,p2);imshow(f);handles.img=f;guidata(hO

17、bject,handles);case'乘性噪声' T=getimage;prompt='输入乘性噪声1:'defans='0.02'p=inputdlg(prompt,'input',1,defans);p1=str2num(p1);f=imnoise(handles.img,'speckle',p1);imshow(f);handles.img=f;guidata(hObject,handles);end(7)还原按键的程序:function pushbutton1_Callback(hObject, even

18、tdata, handles)global S axes(handles.axes2); y=imread(S); f=imshow(y); handles.img=y; guidata(hObject,handles);(8)翻转程序:function pushbutton2_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;prompt='旋转角度:'defans='0' p=inputdlg(prompt,'input',1,defans)

19、;p1=str2num(p1);f=imrotate(handles.img,p1,'bilinear','crop');imshow(f);handles.img=f;guidata(hObject,handles);2.结果原图:原图的灰度图像:高斯加噪的图:高斯去噪后的图像:GUI界面的设计:GUI界面运行图:调整亮度: 形成灰度图:通过添加乘性噪声效果图:添加高斯噪声形成效果图:翻转效果:用户菜单设计:总结 此次课程设计,要求对MATLAB进行基础的运用和掌握,虽然只是对MATLAB一小部分进行运用。以前,对MATLAB并没有太多的接

20、触,仅仅是在第一次进行课程设计时利用MATLAB进行了图像的绘制和一些简单的处理函数。但经过这次我才发现,MATLAB软件功能真的很强大,它的图像工具箱几乎包括所有经典的图像处理方法,可以很方便的对图像进行处理。对于一款软件的应用还是应该自己动手实际操作才会有深刻理解。通过这次的课程设计,我意识到了想要做好一件事,要有耐心,细心,要脚踏实地,而不应该毛躁,而且要学会很好的利用网络资源,之前我并没有接触过图像信号处理系统,所以对这方面的知识是一点储备都没有,但是通过网络查询和利用MATLAB实际操作之后,我对图像信息的获得和处理有了一点基本的认识。其次,做这个东西真的很考验一个人的耐心,尤其在编

21、写程序的时候明明感觉是对的,但是运行出来却不是想要的结果,而且总是很难发现自己错在哪里,这时候就需要足够的耐心去检查程序,发现错误。     在今后的学习过程中,我还会继续深入学习MATLAB,让它更好的为我所用。参考文献1.百度:基于MATLAB的GUI滤波器设计专题论文2. 张志涌  精通MATLAB 6.5版教程.北京:北京航天航空大学出版社, 2003(56)-é=ë附录 系统原理图或完整程序 程序设计:i=imread('C:UsersA

22、dministratorDesktop截图12.jpg'); g0 =i(:,:,2); figure,imshow(g0); g1 = imnoise(g0,'gaussian',0,0.01); figure,imshow(g1); h1=fspecial('gaussian',3,1); g2=imfilter(g1,h1,'same'); figure;imshow(g2);GUI程序的完整设计:function varargout = chenjiaxian(varargin)gui_Singleton = 1;gui_Stat

23、e = struct('gui_Name', mfilename, .'gui_Singleton', gui_Singleton, .'gui_OpeningFcn', chenjiaxian_OpeningFcn, .'gui_OutputFcn', chenjiaxian_OutputFcn, .'gui_LayoutFcn', , .'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback

24、= str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction chenjiaxian_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = chenjiaxian_OutputFcn(hOb

25、ject, eventdata, handles) varargout1 = handles.output;function pushbutton1_Callback(hObject, eventdata, handles)global S axes(handles.axes2); y=imread(S); f=imshow(y); handles.img=y; guidata(hObject,handles);function pushbutton2_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=geti

26、mage;prompt='旋转角度:'defans='0' p=inputdlg(prompt,'input',1,defans);p1=str2num(p1);f=imrotate(handles.img,p1,'bilinear','crop');imshow(f);handles.img=f;guidata(hObject,handles);function Untitled_2_Callback(hObject, eventdata, handles)filename,pathname=uigetfile(

27、'*.jpg''*.bmp''*.tif''*.*','载入图片');if isequal(filename,0)|isequal(pathname,0)errordlg('没有选中文件','出错');return;elsefile=pathname,filename;global S S=file;x=imread(file);set(handles.axes1,'HandleVisibility','ON');axes(handles.axes1)

28、;imshow(x);set(handles.axes1,'HandleVisibility','OFF');axes(handles.axes2);imshow(x);handles.img=x;guidata(hObject,handles);endfunction Untitled_3_Callback(hObject, eventdata, handles)sfilename,sfilepath=uiputfile('*.jpg''*.bmp''*.tif''*.*','保存图像文件

29、','untitled.jpg');ifisequal(sfilename,sfilepath,0,0)sfilefullname=sfilepath,sfilename;imwrite(handles.img,sfilefullname);else msgbox('你按了取消键','保存失败');endfunction Untitled_4_Callback(hObject, eventdata, handles)clc;close all;close(gcf);clear;function Untitled_6_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;prompt='调整倍数'defans='1'p=inputdlg(prompt,'input',1,defans);p1=str2num(p1);y=imadjust(handles

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论