数字图像处理课程设计哈理工.doc_第1页
数字图像处理课程设计哈理工.doc_第2页
数字图像处理课程设计哈理工.doc_第3页
数字图像处理课程设计哈理工.doc_第4页
数字图像处理课程设计哈理工.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

数字图像处理课程设计学 院:自动化学院专 业:电子信息科学与技术班 级:姓 名:12级 B方向樊晓晨起讫日期:12月28日 1月1日指导教师:曹 宇摘要 基于数字信号处理原理,在数字滤波器设计理论和Matlab 编程技术及其GUI 图形用户界面设计的基础上,开发了具有交互式特点的数字图像处理GUI软件,界面操作简单方便。 MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。 MATLAB中集成了功能强大的图像处理工具箱。由于MATLAB语言的语法特征与C语言极为相似,而且更加简单、更加符合科技人员对数学表达式的书写格式,而且可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。关键词:Matlab GUI;数字图像处理;图形用户界I目 录第 1 章 于MATLAB 的图形用户界面(GUI)设计11.1 前言11.2 句柄图形及图形用户界面11.3 GUIDE11.3 .1 GUI设计工具简介21.3 .2 编制回调程序3第 2 章 课程设计的目的4第 3 章 课程设计的内容及要求5第 4 章 设计内容及结果分析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年推出的数学软件,早期以矩阵运算为主 , 但随着科学可视化的需求日增, MATLAB在第4版推出了句柄图形,自此之后, 所有的Demos都包含友好的图形用户界面,MATLAB的图形界面设计功能也日益完善。如今,MATLAB 已成为集数值计算功能、符号运算功能和图形处理功能为一身的超级科学计算语言, 满足了不同领域用户的需求。1.2 句柄图形及图形用户界面 句柄图形(Handle Graphics)就是将一个图形的每一个组件都视为一个对象 (Object),每一个对象都有一个独一无二的“句柄”(handle),根据这个句柄,就可以找到这个对象(即图形组件)的各项属性,并进而更改这些属性,以产生不同的图形呈 现效果。 图形用户界面GUI(Graphics User Interface)是由各种图形对象, 如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面, 是人机交流信息的工具和方法,在该界面内,用户可以根据界面提示完成整个程, 却不必去了解工程内部是如何工作的。GUI设计即可以基本的MATLAB程序设计为主,也可以鼠标为主利用GUIDE 工具进行设计。利用GUIDE 设计图形用户界面时, 可通过 GUI 应用属性设置编辑器来设置对句柄操作的响应 , findobj 命令可以获得所需对象的句柄。1.3 GUIDE GUIDE(Graphics User Interface Design Environ-ment)是一个专用于GUI程序设计的快速开发环境 , 使用者通过鼠标就能迅速地产生各种GUI 控件 , 并随心所欲地改变它们的外形、大小及颜色等, 从而帮助用户方便地设计出各种符合要求的图形用户界面。 1.3 .1 GUI设计工具简介 在GUIDE设计环境中,需要用到的工具有属性编辑器、控件布置编辑器、菜单编辑器、对象浏览器、网格标尺设置编辑器以及GUI应用属性设置编辑器等。(1)属性编辑器(Properties Inspector) 打开属性编辑器的方法有多种,最常用的,选中控件对象以后,点击工具条上的属性设置按钮,即可打开属性编辑器。通过该属性编辑器来对所选图形对象设置相关属性。(2)控件布置编辑器(Alignment Objects) 在编辑CUI过程中,通过控件布置编辑器可以方便地设置面板上GUI控件的布局。选中需要对齐的对象,然后选择工具条上的控件布置按钮,即可打开控件布置编辑器。在控件布置编辑器中可以设置GUI控件水平以及垂直布局,包括对齐方式以及控件间距等。(3)对象浏览器(Object Browser) 在GUI面板中点击对象浏览按钮可打开对象浏览器,在该浏览器中可以方便地显示出所有的图形对象,单击该对象则可以打开相应的属性编辑器。(4)菜单编辑器(Menu Editor) 在GUI面板中点击菜单编辑按钮可打开菜单编辑器,通过菜单编辑器可以为图形界面添加、设置和修改菜单项,以及为右键添加快捷菜单。(5)网格标尺设置编辑器(Grid and Rulers) 通过网格标尺设置编辑器,可以在GUI面板中添加网格以及标尺,来方便用户的界面设计。选择GUIDE 主菜单中的 Tools/Grid and Rulers 即可打开网标尺设置编辑器。 1.3 .2 编制回调程序 完成控件的布局之后,也就完成了整个图形界面的结构设计,接下来则是最为重要的功能设计, 即要编制菜单、控件的回调程序。若要编制某一控件的回调程序,用右键单击该控件,在弹出菜单中点击View Callbacks,然后从子菜单中选择一种激活回调程序的方式,就可以编制回调程序了,如 Callback指单击控件时激活回调程序完成一定的功能。菜单的回调程序在菜单编辑器的Callbacks 文本框中给出。第 2 章 课程设计的目的1、加强对数字图像处理的理解,了解和体会数字图像处理基本方法的运用;2、熟悉掌握Matlab GUI程序设计方法,学会运用Matlab图像处理工具箱对数字图像进行分析和处理。第 3 章 课程设计的内容及要求1、利用Matlab GUI设计一个图形用户界面,实现图像的读取、显示、保存和另存为等功能,并预留出处理后的显示区域,以便观察对比效果;2、在图形用户界面上添加图像的几何变换功能,要求至少可以实现图像的放大和缩小,并对比显示处理前后的图像效果;3、在图形用户界面上增加为图像添加噪声和相应的图像滤波功能,要求至少实现两种噪声的添加(例如椒盐噪声和高斯噪声)和相应的滤波功能,并对比显示处理前后的图像效果;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.2.1 灰度 由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为: y=(handles.img(:,:,1); %当然也可以选择(:,:,2) 或(:,:,3) imshow(y);但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。程序为: y=rgb2gray(handles.img); imshow(y);这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。所以在开始时应该要有一个RGB图像或是灰度图像的判断过程。完整的程序如下: if isrgb(handles.img) y=rgb2gray(handles.img); imshow(y); else msgbox(这已经是灰度图像,转换失败); end如果原图是RGB,执行该操作的结果如下图:图 2 灰度图像如果原图本身已经是灰度图像了,执行该操作弹出如下图所示的提示对话框图 3 对话框4.2.2 截图 在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。 Imcrop函数的调用格式如下: y=imcrop(handles.img); 不管handles.img是三维的还是二维数据,该函数都能进行操作。下图就是对三维图像的截图:图 4 截图图像4.2.3 缩放 在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。该函数的调用格式如下: Bimresize(A,m,method)其中: 参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“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图像进行降维处理, 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(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使用阈值(threshold)变换法把灰度图像(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,horizontal);%使用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 计算45度边缘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(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 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设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。在设

温馨提示

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

评论

0/150

提交评论