1、数字图像处理课程设计数字图像处理课程设计学 院:自动化学院专 业:电子信息科学与技术班 级:姓 名:12级 B方向 起讫日期:12月28日 1月1日指导教师: 摘要 基于数字信号处理原理,在数字滤波器设计理论和Matlab 编程技术及其GUI 图形用户界面设计的基础上,开发了具有交互式特点的数字图像处理GUI软件,界面操作简单方便。 MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。 MA
2、TLAB中集成了功能强大的图像处理工具箱。由于MATLAB语言的语法特征与C语言极为相似,而且更加简单、更加符合科技人员对数学表达式的书写格式,而且可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。关键词:Matlab GUI;数字图像处理;图形用户界目 录第 1 章 于MATLAB 的图形用户界面(GUI)设计 11.1 前言 11.2 句柄图形及图形用户界面 11.3 GUIDE 11.3 .1 GUI设计工具简介 21.3 .2 编制回调程序 3第 2 章 课程设计的目的 4第 3 章 课程设计的内容及要求 5第 4 章 设计内容及
3、结果分析 64.1 文件操作 64.1.1 保存 64.1.3 退出 64.2 编辑 74.2.1 灰度 74.2.2 截图 84.2.3 缩放 94.2.4 上下翻转 104.2.5 加入噪声 114.2.6 图片选择 134.2.7 二值图像 144.2.8 图像分割(计算45度边缘) 144.2.9 边缘检测 154.2.10 图像保存 16第 5 章 课程设计的目的 18第 6 章 参考文献 19第 1 章 基于MATLAB 的图形用户界面(GUI)设计1.1 前言 MATLAB是由Math Works公司于1984年推出的数学软件,早期以矩阵运算为主 , 但随着科学可视化的需求日增,
4、 MATLAB在第4版推出了句柄图形,自此之后, 所有的Demos都包含友好的图形用户界面,MATLAB的图形界面设计功能也日益完善。如今,MATLAB 已成为集数值计算功能、符号运算功能和图形处理功能为一身的超级科学计算语言, 满足了不同领域用户的需求。1.2 句柄图形及图形用户界面 句柄图形(Handle Graphics)就是将一个图形的每一个组件都视为一个对象 (Object),每一个对象都有一个独一无二的“句柄”(handle),根据这个句柄,就可以找到这个对象(即图形组件)的各项属性,并进而更改这些属性,以产生不同的图形呈 现效果。 图形用户界面GUI(Graphics User
5、Interface)是由各种图形对象, 如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面, 是人机交流信息的工具和方法,在该界面内,用户可以根据界面提示完成整个程, 却不必去了解工程内部是如何工作的。GUI设计即可以基本的MATLAB程序设计为主,也可以鼠标为主利用GUIDE 工具进行设计。利用GUIDE 设计图形用户界面时, 可通过 GUI 应用属性设置编辑器来设置对句柄操作的响应 , findobj 命令可以获得所需对象的句柄。1.3 GUIDE GUIDE(Graphics User Interface Design Environ-ment)是一个专用于GUI程序设计的快速开发环境
6、 , 使用者通过鼠标就能迅速地产生各种GUI 控件 , 并随心所欲地改变它们的外形、大小及颜色等, 从而帮助用户方便地设计出各种符合要求的图形用户界面。 1.3 .1 GUI设计工具简介 在GUIDE设计环境中,需要用到的工具有属性编辑器、控件布置编辑器、菜单编辑器、对象浏览器、网格标尺设置编辑器以及GUI应用属性设置编辑器等。(1)属性编辑器(Properties Inspector) 打开属性编辑器的方法有多种,最常用的,选中控件对象以后,点击工具条上的属性设置按钮,即可打开属性编辑器。通过该属性编辑器来对所选图形对象设置相关属性。(2)控件布置编辑器(Alignment Objects)
7、 在编辑CUI过程中,通过控件布置编辑器可以方便地设置面板上GUI控件的布局。选中需要对齐的对象,然后选择工具条上的控件布置按钮,即可打开控件布置编辑器。在控件布置编辑器中可以设置GUI控件水平以及垂直布局,包括对齐方式以及控件间距等。(3)对象浏览器(Object Browser) 在GUI面板中点击对象浏览按钮可打开对象浏览器,在该浏览器中可以方便地显示出所有的图形对象,单击该对象则可以打开相应的属性编辑器。(4)菜单编辑器(Menu Editor) 在GUI面板中点击菜单编辑按钮可打开菜单编辑器,通过菜单编辑器可以为图形界面添加、设置和修改菜单项,以及为右键添加快捷菜单。(5)网格标尺设
8、置编辑器(Grid and Rulers) 通过网格标尺设置编辑器,可以在GUI面板中添加网格以及标尺,来方便用户的界面设计。选择GUIDE 主菜单中的 Tools/Grid and Rulers 即可打开网标尺设置编辑器。 1.3 .2 编制回调程序 完成控件的布局之后,也就完成了整个图形界面的结构设计,接下来则是最为重要的功能设计, 即要编制菜单、控件的回调程序。若要编制某一控件的回调程序,用右键单击该控件,在弹出菜单中点击View Callbacks,然后从子菜单中选择一种激活回调程序的方式,就可以编制回调程序了,如 Callback指单击控件时激活回调程序完成一定的功能。菜单的回调程序
9、在菜单编辑器的Callbacks 文本框中给出。第 2 章 课程设计的目的1、加强对数字图像处理的理解,了解和体会数字图像处理基本方法的运用;2、熟悉掌握Matlab GUI程序设计方法,学会运用Matlab图像处理工具箱对数字图像进行分析和处理。 第 3 章 课程设计的内容及要求1、利用Matlab GUI设计一个图形用户界面,实现图像的读取、显示、保存和另存为等功能,并预留出处理后的显示区域,以便观察对比效果;2、在图形用户界面上添加图像的几何变换功能,要求至少可以实现图像的放大和缩小,并对比显示处理前后的图像效果;3、在图形用户界面上增加为图像添加噪声和相应的图像滤波功能,要求至少实现两
10、种噪声的添加(例如椒盐噪声和高斯噪声)和相应的滤波功能,并对比显示处理前后的图像效果;4、在图形用户界面上添加图像的边缘检测功能,并对比显示处理前后的图像效果。第 4 章 设计内容及结果分析设计完成后运行的软件界面如图1所示图1 运行的软件界面 4.1 文件操作4.1.1 保存 同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。4.1.3 退出 退出比较简单,程序如下所示: clc; close all; close(gcf); 4.2 编辑4.
11、2.1 灰度 由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为: y=(handles.img(:,:,1); %当然也可以选择(:,:,2) 或(:,:,3) imshow(y);但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。程序为: y=rgb2gray(handles.img); imshow(y);这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知
12、道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。所以在开始时应该要有一个RGB图像或是灰度图像的判断过程。完整的程序如下: if isrgb(handles.img) y=rgb2gray(handles.img); imshow(y); else msgbox(这已经是灰度图像,转换失败); end如果原图是RGB,执行该操作的结果如下图:图 2 灰度图像如果原图本身已经是灰度图像了,执行该操作弹出如下图所示的提示对话框图 3 对话框4.2.2 截图 在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图
13、,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。 Imcrop函数的调用格式如下: y=imcrop(handles.img); 不管handles.img是三维的还是二维数据,该函数都能进行操作。下图就是对三维图像的截图:图 4 截图图像4.2.3 缩放 在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。该函数的调用格式如下: Bimresize(A,m,method)其中: 参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)
14、、“bicubic”(双三次插值),缺省值为“nearest”。Bimresizee(Am,method)表示返回原图A的m倍放大图像(m小于1时实际上是缩小);下图就是采用邻近插值法的放大和缩小图像,参数值保持默认设置:图 5 图像放大4.2.4 上下翻转 函数flipud是实现一个二维矩阵的上下翻转,如a=1 2;3 4,经过该函数处理后,原矩阵变为3 4;1 2;所以利用该函数也可以对图像进行上下翻转处理,但由于该函数针对二维数据的处理,所以在写程序时,要对RGB图像和灰度图像分开处理,这就要用到isrgb函数来判断,如果是灰度图像,则可以直接用这个函数进行处理,否则就要对RGB图像进行
15、降维处理, for k=1:3 y(:,:,k)=flipud(x(:,:,k);end 处理结果如图:图 6 图像翻转4.2.5 加入噪声 经常用到的噪声有三种,高斯噪声,椒盐噪声,乘性噪声,可以通过以下三个函数来实现: y=imnoise(handles.img,gaussian,p1,p2); %高斯噪声 y=imnoise(x,salt & pepper,p1); %椒盐噪声p1,p2的参数也通过输入对话框的形式得到,原图加入高斯噪声和椒盐噪声结果分别如下所示:图 7 加入高斯噪声图 8 加入椒盐噪声4.2.6 图片选择 在MATLAB中,图片选择的操作代码如下: value=get(
16、handles.popupmenu4,Value)-1; ifvalue0 value_s=num2str(value); file_index=value_s,.jpg; Image_to_be_Matched=imread(file_index); axes(handles.axes1); imshow(Image_to_be_Matched); end handles.To_be_matched=value; guidata(hObject,handles); 结果如下图: 图 9 图片选择 图 10 图片显示4.2.7 二值图像MATLAB中DIP工具箱函数im2bw使用阈值(thre
17、shold)变换法把灰度图像(grayscale image)转换成二值图像。一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。当然,也可以是其他任意两种颜色的组合。函数调用为j=im2bw(J);%二值。图像如下:图 11 将图像转成二值图像4.2.8 图像分割(计算45度边缘) 在MATLAB中,使用sobel监测器对图像进行分割的MATLAB程序 f=imread(E:数字图像处理实验指导书misc5.1.13.tiff); gv,t1=edge(f,sobel,vertical);%使用edge函数对图像f提取垂直的边缘 gb,t2=edge(f,sobel,horizont
18、al);%使用edge函数对图像f提取垂直的边缘 w45=-2 -1 0;-1 0 1;0 1 2;%指定模版使用imfilter计算45度方向的边缘 g45=imfilter(double(f),w45,replicate); T=0.3*max(abs(g45(:); %设定阈值 g45=g45=T; %进行阈值处理 subplot(221), imshow(gv); subplot(222),imshow(gb); subplot(223),imshow(g45);在函数中使用prewitt和roberts的过程,类似于使用sobel边缘检测器的过程。处理结果如下图所示:图 12 计算4
19、5度边缘4.2.9 边缘检测在MATLAB中,边缘的提取代码如下: f=imread(C:UsersaaDesktoproom.tif); gv,t1=edge(f,sobel,vertical);%使用edge函数对图像f提取垂直的边缘 imshow(gv) gb,t2=edge(f,sobel,horizontal);%使用edge函数对图像f提取垂直的边缘 figure,imshow(gb) w45=-2 -1 0;-1 0 1;0 1 2;%指定模版使用imfilter计算45度方向的边缘 g45=imfilter(double(f),w45,replicate); T=0.3*max
20、(abs(g45(:); %设定阈值 g45=g45=T; %进行阈值处理 figure,imshow(g45)处理结果如下图:图 13 边缘检测4.2.10 图像保存 MATLAB的GUI中保存axes图片的方法如下:在按钮的回调函数中写下如下代码: function pushbutton5_Callback(hObject, eventdata,handles) % hObject handle to pushbutton5 (seeGCBO) % eventdata reserved to be defined in a futureversion of MATLAB % handles
21、 structure with handles and user data (see GUIDATA) f,p=uiputfile(*.jpg,保存文件); str=strcat(p,f); pix=getframe(handles.axes2); imwrite(pix.cdata,str,jpg)实验结果如下图所示:图 14 保存图片第 5 章 课程设计的目的 通过本次课程设计,使自己对MATLAB GUI设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。 在理工科的专业应用背景下,用ma
22、tlab 进行相关计算与仿真编程的优势非常突出。特定的问题处理算法,我们通常都以M文件的文本形式给定最终的解决方案,自己设计的程序是在MATLAB环境下,用MATLAB语言编写的,这对于有安装MATLAB软件的计算机上运行并不存在什么问题,关键是一般的计算机很少有去安装MATLAB软件的,那么要在这些机子上运行该程序要怎么办呢,难道要先安装MATLAB软件,这显然太麻烦了,对于一个通用的,比较成熟的解决方案,我们当然期望它能应用到更多的场合,而.exe (可执行)文件可运行于所有的通用WINDOWS操作系统,为此,将M文件转换成.exe文件倒是个不错的想法。第 6 章 参考文献1 郑阿奇,曹戈
23、,赵阳.MATLAB实用教程M.北京:电子工业出版社2 程卫国,冯峰,姚东,徐听.MATLAB5.3应用指南M.北京:人民邮电出版社3 陈杨.MATLAB 6.X图像编程与图像处理M.西安:西安电子科技大学出版社4 张德丰,数字图像处理MATLAB详解J.电子工业出版社2010.7(MATLAB仿真与应用系列丛书)5 朱来东,廉小亲,江远志.小波变换在信号降噪中的应用及MATLAB实现 J .北京工商大学学报(自然科学版),2009,27(2):46-49. 6 郑治真, 沈萍,杨选辉, 小波变换及其MATLAB工具的应用M 1北京: 地震出版社, 2001. 7 岚基于DSP的自适应线性滤波器的设计与实现J.甘肃科技2008, 16.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1