收藏 分享(赏)

图像边缘检测系统设计.doc

上传人:HR专家 文档编号:11569702 上传时间:2020-06-28 格式:DOC 页数:20 大小:448KB
下载 相关 举报
图像边缘检测系统设计.doc_第1页
第1页 / 共20页
图像边缘检测系统设计.doc_第2页
第2页 / 共20页
图像边缘检测系统设计.doc_第3页
第3页 / 共20页
图像边缘检测系统设计.doc_第4页
第4页 / 共20页
图像边缘检测系统设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、学 号 数字图像处理 课程设计说明书图像边缘检测系统设计起止日期: 2016 年 12 月 5 日 至 2016 年 12 月 9 日学生姓名班级13电信科1班成绩指导教师(签字)计算机与信息工程学院电子信息工程系2016年12月9日课程设计任务书20162017学年第一学期计算机与信息工程学院 电子信息与科学技术 专业 1 班级课程设计名称: 数字图像处理课程设计 设计题目: 图像边缘检测系统设计 完成期限:自 2016 年 12 月 5 日至 2016 年 12 月 9 日共 1 周一、课程设计依据在掌握数字图像处理基本算法的基础上,利用MATLAB、VC+、Java等编程语言设计具有指定

2、功能的图形用户界面。二、课程设计内容1、设计一个实现图像边缘检测功能的界面2、界面可以采用MATLAB、VC+、Java等编程语言设计3、要求界面能够读入并显示图片,通过各种控件选择并进行图像的边缘检测操作,操作结果在对比窗口中显示4、图像边缘检测功能至少包括单方向一阶微分检测(水平/垂直方向)、无方向微分检测(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子)等,每项功能可采用一个或多个算法实现三课程设计要求1、 要求每个同学独立完成设计任务。2、 课程设计说明书封面格式要求见课程设计说明书格式要求。3、 课程设计的说明书要求简洁、通顺,图像表达内容

3、完整、清楚、规范。4、 课程设计说明书要求:1) 说明题目的设计原理和思路、采用方法及设计流程。2) 可采用图表或文字对图形用户界面各子模块的功能以及各子模块之间的关系做较详细的描述。3) 详细说明代码的编写流程。4) 采用图像及文字详细说明各功能的演示结果。指导教师(签字): 系主任(签字): 批准日期:2016年 12月 1日目 录第1章 总体设计11.1 设计目的11.2 设计方案1第2章GUI界面设计22.1 启动GUI界面22.2 控件设计3第3章 运行结果及主要程序63.1 边缘检测的步骤及结果63.2 主要程序8总 结11参考文献12第1章 总体设计1.1 设计目的设计一个实现图

4、像边缘检测功能的界面,通过各种控件选择并进行图像的边缘检测操作,操作结果在对比窗口中显示,完成一个简单的图片处理。1.2 设计方案先通过GUI可视化界面窗口设计一个对用户使用起来相对方便的界面布局,然后针对界面上的每一个控件进行脚本函数的编写,以实现每一个控件的相应功能。需要实现的功能:图片的读取与显示,图片的对比显示和存储,彩色图片到灰度图像的转换,图片的各种算子边缘检测并显示(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子等),并增加了退出程序按钮,最终生成一个可执行软件。软件的总体设计界面布局如图1-1所示,主要分为2个部分:显示区域与操作区域

5、。 显示区域:显示载入原图,以及通过处理后的图像。 操作区域:通过功能键实现对图像的各种处理。在截图中可见,左部为一系列功能按键有“读取图片”、“二值化”、“灰度化”三个按钮。界面右部分为图片显示部分,下方有“存储图片”、“退出”功能键。界面中间方为系列功能切换选择组包括单方向一阶微分检测(水平/垂直方向)、无方向微分检测(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子)等。图1-1 设计界面图第2章GUI界面设计2.1 启动GUI界面 通过单击MATLAB菜单项“Home”-“New”-“Graphical User Interface”,显示GU

6、I开发环境的启动窗口,也可在命令窗口输入命令:guide打开GUIDE启动界面,如下图2-1所示。弹出GUIDE Quick Start对话框,如图2-2所示。选择Blank GUI,打开版图编程器如图2-3。图2-1 命令窗口图2-2 GUI启动窗口图2-3 版图编辑器2.2控件设计1. button按钮 利用版图编辑器在布局区添加按钮,双击控件调出属性编辑器,对其进行属性设计。String表示控件的显示信息,Tag表示控件的唯一标识符。图2-4按钮控件的设置 右击button选择“Callback”选项,定位该控件的回调函数。如下图所示。图2-5查看button回调函数回调函数初始代码:f

7、unction pushbutton3_Callback(hObject, eventdata, handles)pushbutton3_Callback是按钮的回调函数,Callback函数是当用户每次触发GUI对象时执行的回调函数;hObject为当前回调函数对应的GUI对象的句柄; eventdata表示事件代码;handles为当前GUI所有数据的结构体,包含所有GUI对象的句柄和用户定义的数据。2. 按钮组 为方便编程,采用按钮组进行算法实现,利用版图编辑器的按钮组,添加单选按钮到按钮组。如图2-6所示。图2-6按钮组 右击按钮组选择SelectionChangeFcn选项,定位该控

8、件的回调函数,如图2-7所示。图2-7查看按钮组回调 回调函数初始代码:function uipanel1_SelectionChangeFcn(hObject, eventdata, handles),程序代码见附录。 搭建结果界面截图如2-6所示。图2-8 设计界面图 设计完成后运行的软件界面如图2-9所示,点击按钮组里算法选项可看到程序运行结果,程序见附录。图2-9 运行界面图第3章 运行结果及主要程序3.1边缘检测的步骤及结果 一般来说,边缘检测的算法有如下四个步骤: 1)滤波:边缘检测算法主要是基于图像增强的一阶和二阶导数,但导数的 计算对噪声很敏感,因此必须使用滤波器来改善与噪声有

9、关的边缘检测器的性能。 2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度之有显著变化的点突显出来。边缘增强一般都是通过计算梯度幅值来完成的。 3)检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些是边缘点。最简单的边缘检测判据是梯度幅值阈值判据。4)定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。图3-1 算子运行结果(1)图3-2 算子运行结果(2)1.一阶微分作为坐标点(x,y)处的灰度倾斜度的一阶微分值,可以用具有大小和方向的向量表示

10、如下:其中,为x方向的微分,为y方向的微分。和在数字图像中是用下式计算的:微分值和被求出后,由以下的公式就能算出边缘的强度与方向。强度:或者 ,方向:向量的朝向。2. Roberts算子,边缘定位精度较高,但容易丢失一部分边缘,同时图像没经过平滑处理,所以不具备抑制噪声的能力。该算子适用于具有陡峭边缘且含噪声少的图像。3. Sobel算子和Prewitt算子,对噪声具有一定抑制能力,但不能完全排除虚假边缘。定位效果不错但容易产生多像素边缘。4.LOG算子,抑制噪声会将尖锐的边缘平滑掉而无法被检测到。当高斯滤波器宽度参数取值较小时,边缘定位精度高,但图像平滑作用较弱;增大取值时,又导致模板增大,

11、使边缘位置偏移严重,且运动量增加。5.Canny算子,当弱边缘和强边缘相连时,才输出弱边缘,检测效果要比LOG算子好。6.拉普拉斯算子,不依赖于边缘方向的二阶微分算子,定位准确,对噪声非常敏感,使噪声加强,从而使部分信息丢失,造成一些不连续的边缘。 由上可知,算子不同,结果存在明显差异,但是在原始图像上边缘明显的部分都被有效的提取出来了。Roberts算子检测出的边缘线比较清晰,但噪声大多也同时提取出来了。对于模糊部分取差分间隔宽的Sobel算子和Prewitt算子似乎有效。Canny算子可以检测到弱边缘,但受阴影的影响较大。LoG算子易于强化噪声,更适用于点状物的检测和图像锐化。3.2主要程

12、序 1.读取图片程序,定义可读取“.jpg.bmp.gif.png”属性的图片,读取图片到axes1坐标轴中显示。function pushbutton1_Callback(hObject, eventdata, handles)global imfilename,pathname = . uigetfile(*.jpg;*.bmp;*.gif;*.png;,选择图片);str=pathname filename;im=imread(str);axes(handles.axes1);imshow(im); 2.存储图片程序,存储axes2坐标轴的结果图像到自定义路径,可选择存储属性为“.bmp

13、.tif.png”。function pushbutton4_Callback(hObject, eventdata, handles)global im %定义全局变量filename,pathname,filterindex=. uiputfile(*.bmp;*.tif;*.png,save?picture);%存储图片路径if isequal(filename,0)|isequal(pathname,0) return%如果取消操作,返回else str=pathname filename;%合成路径+文件名 axes(handles.axes2);%使用第二个axes im=geti

14、mage(handles.axes2);imwrite(im,str);%写入图片信息,即保存图片end 3.关闭窗口程序。function pushbutton5_Callback(hObject, eventdata, handles)close(gcf)%关闭当前Figure窗口句柄 4.按钮组功能 ,当选择按钮组中不同算法变换时,用switch语句进行算法的选择进行图像变换,显示结果在axes2坐标轴中。function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)global imm,n,o=size(im);if

15、o1 im=rgb2gray(im); R=double(im)/255;else R=double(im)/255;endstr=get(hObject,string);axes(handles.axes2);switch str case Initial imshow(im) case directionX a=-1 -2 -1;0 0 0;1 2 1/256;b=-1 0 1; -2 0 2; -1 0 1/256; BW=conv2(im,a,same);BW=abs(BW);%处理水平方向算子的结果 imshow(BW); case directionY a=-1 -2 -1;0 0

16、 0;1 2 1/256;b=-1 0 1; -2 0 2; -1 0 1/256; BW=conv2(im,b,same);BW=abs(BW);%处理垂直方向算子的结果 imshow(BW); case directionXY a=-1 -2 -1;0 0 0;1 2 1/256;b=-1 0 1; -2 0 2; -1 0 1/256; BW1=conv2(im,a,same);BW1=abs(BW1);%处理水平方向算子的结果? BW2=conv2(im,b,same);BW2=abs(BW2);%处理垂直方向算子的结果? BW=max(BW1,BW2);%取水平及垂直方向上的大值 i

17、mshow(BW); case Roberts BW = edge(im,Roberts); imshow(BW); case Sobel BW = edge(im,Sobel); imshow(BW); case Prewitt BW = edge(im,Prewitt); imshow(BW); case LoG BW = edge(im,LoG); imshow(BW); case Canny BW = edge(im,Canny); imshow(BW); case Laplacian a=0 1 0;1 -4 1;0 1 0/56; BW=conv2(im,a,same); BW=a

18、bs(BW); imshow(BW);end 5.图像二值化,利用2bw进行图像二值化转化,并将转换结果在axes2 坐标轴中显示。function pushbutton2_Callback(hObject, eventdata, handles)global imaxes(handles.axes2);BW=im2bw(im,0.4);imshow(BW); 6.灰度图像转化,判断所读取图像是否为彩色图像,如果是则转化为灰度图像,并在axes2 坐标轴中显示转换结果图像。function pushbutton3_Callback(hObject, eventdata, handles)glo

19、bal imm,n,o=size(im);if o1 BW=rgb2gray(im); R=double(im)/255;else BW=im;endaxes(handles.axes2);imshow(BW);总 结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,软件方面的应用已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为大学来说掌握各种软件的应用是十分重要的。数字图像处理是我们这个学期的重点课程。在没有做课程设计以前觉得课程设计只是对我所学知识的单

20、纯总结,但是通过这次做课程设计发现自己的看法有点太片面。课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课程设计使我明白了自己原来知识还比较欠缺,明白了学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。此次课程设计使我重新又学习了MATLAB的有关知识,对该软件掌握的更加熟练。总之,最后终于做完了有种如释重负的感觉。此外,还得出一个结论:实践是检验知识的唯一标准。有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。在此要感谢我们指导老师对我们悉心的指导与帮助。在设计过程中,我通

21、过与同学交流经验和自学,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力。 参考文献1罗华飞.MATLAB GUI 设计学习手记M.北京:北京航空航天大学出版社,20092秦襄培.MATLAB图像处理与界面编程宝典M.电子工业出版社,20093张强,王正林.精通MATLAB图像处理M.电子工业出版社,20094杨娜,葛广英.基于MATLAB的灰度图像边缘检测技术M.中国科技教育,2008年02 期5张秀兰.基于MATLAB的数字图像的边缘检测M.吉林化工学院学报,2002年02 期6贾永红.数字图像处理M .武汉:武汉大学版社,2002:25-79.7求是科技.MATLAB7.0 从入门到精通M.北京:人民邮电出版社,2006:407-428.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报