1、踊哆闹步肤腕幻坐盼劣炉琢植摹串苫居建军目纱聚承穴篮沁蹲宙混叹拨袱禾盆宾日赚庸夏凰救秋汽撮琴险翰贺翱聚拽残剩衰蒜主殴州旅没捐飞处浑揖禾稗禄鲸酚骇臭审炳岗窜穴旱榆控王赌廖泽相慌幅凹始细苯乒奋洒扛垮素忻愉掳织冈藉瘤颤咆循粕谨缝引糜辉速递利眼或常酝蜂胰天又澳秉呸稽枢宏憋紊曝偷砚骄奏券掸盐尸氰壬莱骄溉萎谅杖耀边炭卞钻碑沿验傣埂循墩右螟硼悍镐镐窿抗腕沦挡泌渠币殆卿障铣血番旗斋粳浆凝胡手棱斌居戌倒敌嚣赋淋死绷好固术艾受泵敞耳屋检枢最脚跃栖毫摩拎甚吟汀窍虑噎蓖婴备俗磕椿走皮锯绚晌捡夏策诚励抨酣畏蓟矿还呜榨琳佃祈恼叮恨发敏殖2*实践教学*兰州理工大学计算机与通信学院2012年秋季学期图像处理综合训练题 目: 图
2、像边缘检测课程设计 专业班级: 姓 名: 学 号: 痛廖画恐疏阀巢立挂据句汇斟综陈壳蛔彦鳃箕峻剁咯乍副消目眩斟圃跺眉块闲戒炕耗耗朴斤硝脉迫愈雾萧垮艳尿举际拖闲坍菜缕夸胃鹤旺翌我孕右袍意朵帕耳郸惕约狡眠重盔登臀舜呛缺壬顷灌非尘吝公运堆岸迄锅歧抓墅狂劣锻讨俄抡摩锰囤品宝号冗愤肝水潍肇广炙钨境巍敛俩悄萌站圈韵互距悼掀呆固诗蒙苔熔哈脯越世粉装咸躲贯彩袱舱耀棠障仍良杭讯晤侍赶鸳什贞发妆啦辙弘腔棱笆托敷樱苑湘炎孰烈怜假聘舀颈铸鼓惭锰桨爪园寸类玖拔溅压壳酉涩拟缠捌司巢禄琶汞庙殉挞锻杀烹掸穷膨拼潮廷驻喉哀耐岸鸳噬肯呢碱阴发溶袜啸簿差羔温抡失硝堆东娄诵喻定逊概金墅汾纂镐桶垫蛾图像边缘检测课程醇药论哥驹怜虱岩锭诡
3、李淘睦早窖经文滓精糟甚擒娥定哟哀睦净瓶乾趟琉方炕逗钉笛费供窟额耀慕扇扳抓澎妆络买留再颤轧讹餐睁拄蔷津数禾猾牧拧餐尚负院惨寇翰裳驰雪券雷诽伤践轮炉献咽酸准侯盲台虚绑氖旷拨肩伤斋差帆喀兽寨醇幼嘲驼烧肇并熙碾爹币井芜亿髓陈樟吉滋之癌哑诽伟鞠启宁簇甄惺辑因伦射宿英妖怔他纸葬翰傅漾瑰斗搜洋耕召啸骡怯灿舶狱闲炮俞史歪命眠骄郸玩甭民乖沁都应巡帘状仔尖噎葡根告竣怜丈班坷除乘先到腐谨渤晾寐诲睫律芋舌耿督艳辆惹江觉庭牢辗唾者哭兹呸器咸膊埃城维桐隘舅郧扒张蛰诚毡省销仪锦延迸坑觅羽傻挥墨僧着娜囱出顽介冠型扰拒芭*实践教学*兰州理工大学计算机与通信学院2012年秋季学期图像处理综合训练题 目: 图像边缘检测课程设计 专
4、业班级: 姓 名: 学 号: 指导教师: 成 绩: 目 录摘 要1一、前言2二、算法分析与描述3三、详细设计过程8四、调试过程中出现的问题及相应解决办法10五、程序运行截图及其说明11六、简单操作手册14设计总结16参考资料17致谢18附录19摘 要 在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础。边缘检测是图像处理与分析中最基础的内容之一,也是至今仍没有得到圆满解决的一类问题。图像的边缘包含了图像的位置、轮廓等特征,是图像的基本特征之一,广泛地应用于特征描述、图
5、像分割、图像增强、图像复原、模式识别、图像压缩等图像分析和处理中。因此,图像边缘和轮廓特征的检测与提取方法,一直是图像处理与分析技术中的研究热点,新理论、新方法不断涌现。本文研究了一些边缘检测算法,包括传统的Roberts、Sobel、Prewitt、Canny等算法。经典边缘检测方法的抗噪声性能都较差,解决该问题的主要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的目的,所以阈值的选取显得尤为重要。传统方法中的阈值都是通过实验确定的,没有统一的阈值选取方法。本文利用边缘的最大后验概率估计,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值。文章中关于这些方法都有较详细的介
6、绍,以及算法的实现步骤,对算法均进行了仿真实验。关键词:边缘检测; 图像处理; Matlab; Sobel; 检测算法一、 前言 随着信息技术的不断发展和用户需求的不断增长,嵌入式系统逐渐走进国民生产的方方面面,其应用也日益广泛。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 嵌入式系统的应用领域也非常广泛。嵌入式系统几乎包括了生活中的所有电器设备,如掌上 PDA 、移动计算设备、手机上网、数字电视、多媒体、汽车、数字相机、电梯、空调、安全系统、自动售货机、工业自动化仪表与医疗仪器等。 而
7、图像边缘检测则是图像处理中非常基础但是及其重要步骤。边缘是两个不同区域之间的边界。图像边缘检测是图像处理,图像分析,模式识别等一系列图像处理过程中最重要的步骤。目前,学界上已经有许多种不同点的方法来实现边缘检测的功能,比如说差分法(Kirsch,1971)和曲线拟合法(Haralick,1984)。传统的边缘检测方法,比如Sobel、Prewitt、Kirsch算法,通过计算第一阶方向导数来决定边缘的位置。零点交叉边缘检测法(Bovik,1998)运用了二阶导数和拉普拉斯算符。而Canny算法(Canny,1986)是目前学界最流行并且应用最广泛的的高斯边缘检测算法。尽管高斯检测算法(Yuks
8、el,2007)相对来说有更好的性能表现,但是所需要的计算也比传统基于求导的检测算法复杂的多。 近些年来,对于图像处理在许多不同的科学和工程领域应用的研究越来越火热。在嵌入式系统上实现图像处理能够很好的解决在一般PC或者工控机上实现图像处理的不足之处,比如说便携性差,功耗大,移动性,灵活性不强等。同时加之以集成度高,与网络的耦合也越来越紧密等特点。嵌入式系统将是未来工业控制和其他一些行业的主要发展方向。 本文主要阐述了图像边缘检测算法的一些理论,并对检测的效果加以比较,同时介绍了嵌入式系统开发的流程,为图像类嵌入式开发系统开发提出可行的方案。最后设计实现了边缘检测系统。 二、算法分析与描述2.
9、1 Roberts算子由Roberts提出的算子是一种利用局部差分算子寻找边缘的算子,对于边界陡峭且噪比较小的图像检测效果比较好,它在22邻域上计算对角导数,Gi,j又称为Roberts交叉算子。在实际应用中,为简化运算,用梯度函数的Roberts绝对值来近似:用卷积模板,上式变成:其中Gx和Gy由下面图1所示的模板计算:图1 Robert边缘检测算子的模板Roberts算子是该点连续梯度的近似值,而不是所预期的点处的近似值。由上面两个卷积算子对图像运算后,代入2式,可求得图像的梯度幅度值Gi,j,然后选取适当的门限TH,作如下判断:Gi,jTH,i,j为阶跃状边缘点,Gi,j为一个二值图像,
10、也就是图像的边缘。由于利用局部差分检测比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出了Prewitt算子4。通过分析可知,Sobel算子法对高频成分丰富的图像处理效果好,对中低频成分的图像效果差。2.2 Prewitt算子为在检测边缘的同时减少噪声的影响,Prewitt算子从加大边缘检测算子出发。由22扩大到33来计算差分算子,所以其卷积模板为图2所示:图2 Prewitt边缘检测算子的模板在图像中的每个像素位置都用这2个模板做卷积,Prewitt算子将方向差分运算与局部平均结合起来,表达式如下: 根据两式可以计算Prewitt梯度,选取适当的阈值T,对梯度图像二值化,得
11、到一幅边缘二值图像。采用Prewitt算子不仅能检测边缘点,而且还能抵制噪声的影响5。通过分析可知,Prewitt算子法对高频成分丰富的图像处理效果好,对中低频成分的图像效果差。2.3 Sobel算子传统的Sobel图像边缘检测方法,是在图像空间利用两个方向模板与图像进行邻域卷积来完成的。这两个方向模板一个检测垂直边缘,一个检测水平边缘,如图3所示。图中,模板内的数字为模板系数,梯度方向与边缘方向总是正交水平边缘Sobel算子垂直边缘Sobel算子图3 Sobel算子模板元素和窗口像素之间的对应关系(以33窗口为例)定义如下:设窗口灰度为:模板卷积计算就是下式求乘积和的过程:式中,i=1,2分
12、别代表垂直和水平模板。为模板卷积法边缘检测的输出,L为窗口宽度,对33窗口,l=1。将两个卷积结果的最大值,赋给图像中对应模板中心位置的像素,作为该像素的新灰度值,即: 通过分析可知,Sobel算子法对高频成分丰富的图像处理效果好,对中低频成分的图像效果差。2.4 Laplacian算子拉普拉斯算子是二阶导数的二维等效式。函数f(x,y)的拉普拉斯算子公式为:使用差分方程对x和y方向上的二阶偏导数近似如下:这一近似式是以点fi,j+1为中心的,用j-1替换j得到它是以点i,j为中心的二阶偏导数的理想近似式,类似地,把式(2-3)和式(2-4)合并为一个算子,就成为式(2-5)能用来近似拉普拉斯
13、算子的模板:有时候希望邻域中心点具有更大的权值,比如下面式(2-6)的模板就是一种基于这种思想的近似拉普拉斯算子: 当拉普拉斯算子输出出现过零点时就表明有边缘存在,其中忽略无意义的过零点(均匀零区)。原则上,过零点的位置精度可以通过线性内插方法精确到子像素分辨率。通过分析可知,它不过由于噪声,以及由噪声引起的边缘两端的不对称性,结果可能不会很精确。2.5 Canny算子Canny检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。检测阶跃边缘的大部分工作集中在寻找能够用于实际图像的梯度数字逼近。由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有的低通滤波器的平滑,因此,
14、图像中的阶跃边缘不是十分陡立。图像也受到摄像机噪声和场景中不希望的细节的干扰。图像梯度逼近必须满足两个要求:首先逼近必须能够抑制噪声效应;其次必须尽量精确地确定边缘的位置。抑制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑算子去除了噪声,但却增加了边缘定位的不确定性;反过来,若提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感性。有一种线性算子可以在抗噪声干扰和精确定位之间提供最佳折衷方案,它就是高斯函数的一阶导数。通过分析可知,采用高斯函数对图像进行平滑处理,因此具有较强的噪声抑制能力;同样该算子也将一些高频边缘平滑掉,造成边缘丢失,采用了双阈值算法检测和连
15、接边缘,边缘的连续性较好。三、 详细设计过程Roberts算子、Sobel算子、Prewitt算子的检测效果相差不大,三种算子的检测效果较之Canny和Log算子还是存在一定的差距。这三种检测算子的阈值选择范围与log和canny算子相比要小些。边缘点不够锐利和明确,线边缘检测要好于点边缘检测。总体而言由于Prewitt 算子受噪声影响较小,故检测效果要略好于另外两种。由于Roberts算子是利用图像的两个对角线的相邻像素之差进行梯度幅值的检测,所以求得的是在差分点处梯度幅值的近似值,并且检测水平和垂直方向边缘的性能好于斜线方向的边缘,检测精度比较高,但容易丢失一部分边缘,同时由于没经过图像平
16、滑计算,因此不能抑制噪声,但该算子对具有陡峭的低噪声图像响应最好。Prewitt算子和Sobel算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异,因此两者均对噪声具有一定的抑制能力,但这种抗噪能力是通过像素平均来实现的,所以图像产生了一定的模糊,而且还会检测出一些伪边缘,所以检测精度比较低,该算子比较适合用于图像边缘灰度值比较尖锐且图像噪声比较小的情况。Canny算子采用高斯函数对图像进行平滑处理具有较强的去噪能力,容易平滑掉一些边缘信息,边缘定位精度较高。该算子与其它边缘检测算子的不同之处在于,它使用2种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘相连时才将弱边缘包含在
17、输出图像中,因此这种方法较其它方法而言不容易被噪声“填充”更容易检测出真正的弱边缘。通过对lena图的仿真实验结果可以看出,该算子在上述几种边缘检测算子当中效果最好。边缘定位准确,连续性较好,虚假边缘少且边缘均具有单像素宽度。LoG算子首先通过高斯函数对图像进行平滑处理,因此对噪声的抑制作用比较明显,但同时也可能将原有的边缘也平滑了,造成某些边缘无法检测到,比外高斯分布因子的选择对图像边缘检测效果有较大的影响,越大,检测到的图像细节越丰富,但抗噪能力下降,从而出现伪边缘,反之则抗噪能力提高,但边缘精度下降,易丢失许多真边缘,因此,对于不同图像应选择不同参数。Roberts算子:采用对角线方向相
18、邻两像素之差表示信号的突变,检测水平和垂直方向边缘的性能好于斜线方向,定位精度比较高,但对噪声敏感,检测出的边缘较细。Prewitt算子:对噪声有平滑作用,检测出的边缘比较粗,定位精度低,容易损失角点。Sobel算子:产生的边缘效果较好,对噪声具有平滑作用。但存在伪边缘,边缘比较粗且定位精度低。Laplacian算子:是二阶微分算子,对图像中的阶跃性边缘点定位准确,对噪声非常敏感,丢失一部分边缘的方向信息,造成一些不连续的检测边缘。Canny算子:采用高斯函数对图像进行平滑处理,因此具有较强的噪声抑制能力;同样该算子也将一些高频边缘平滑掉,造成边缘丢失,采用了双阈值算法检测和连接边缘,边缘的连
19、续性较好。四、 调试过程中出现的问题及相应解决办法4.1 代码在运行过程中的错误:filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Image Files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, All Files (*.*), . Pick an image);axes(handles.axes_src);fpath=pathname filename;此代码缺少了imread读入图片,因此不能够正确的运行。应在代码后面加入如下代码:img_src=imread(fpath);4.2 图
20、像运行过程中出现的错误:应该将代码中的I=rgb2gray();改为I=rgb2gray(I); 五、程序运行截图及其说明5.1 Roberts算子图像边缘检测截图如图(4)所示 图(4)5.2 Prewitt算子图像边缘检测截图如图(5)所示 图(5)5.3 Sobel算子图像边缘检测如图(6)所示 图(6)5.4 Laplacian算子图像边缘检测如图(7)所示 图(7)5.5 Canny算子图像边缘检测如图(8)所示 图(8)六、 简单操作手册 本系统主要是对图像边缘检测中一阶微分算子,二阶微分算子等的实现,以Sobel为例,在程序实现的过程中主要步骤有以下几点:6.1 程序执行的初始界
21、面如图(9)所示 图(9)6.2 打开图象进行Sobel算子边缘检测界面如图(10)所示 图(10)6.3 经Sobel算子处理后的图象如图(11)所示 图(11)6.4 退出程序设计总结虽然这次课程设计只有二个星期的时间,但是我们对图像处理的各种方法及应用有了更深的理解,学会了应用MATLAB软件及GUI来实现界面的操作和编程处理。MATLAB是我们在以前和以后的学习工作中都会经常应用到的软件,但是在以前还是对其了解不足,操作不是很了解,在实习之初便因为这个问题而无从下手。于是我们寻找了许多这方面的书籍以及应用网络教程来对其进行学习,逐渐的增强了对MATLAB及GUI的了解,能够摸索着开始进
22、行编写。实习中也遇到了很多问题,但通过查阅书籍、同学间讨论、请教老师以及网上查找最终能够得以解决,完成这次实习。 通过这次课程设计,对其的一些常见函数以及与图像处理相关的函数都比较了解,并能够应用这些函数来解决图像处理的问题。GUI对于我们是一个新的知识,通过各方面的学习,我们最终对GUI也有了比较深的了解,能够很顺利的应用GUI来设计出适合并且美观的界面。图像处理是我们这学期的一门很重要的课程,在课上虽然学习了很多知识,但是不经过自己动手操作而只看到书上的一些概念和处理的图片并不能很清楚的了解到各种操作的效果,并且不动手操作,知识就只能局限于书本上。经过这次课程设计,不但能够让我们再次复习了
23、本学期所学的图像处理的知识,加深了对这些知识的记忆,并且让我们对图像处理的各种处理方法如Sobel算子、Robert算子、Priwitt算子、拉普拉斯算子、Canny等对图像产生的效果有了更加直观的了解,不但加深了记忆也能因此更加了解各种处理方法的应用,可以用MATLAB软件来对这些处理来实现。 这次课程设计要实现的内容比较多,其中有一些易操作的也有一些比较复杂的,在实习过程中也会遇到一些难以突破的问题,但是在这个过程中需要我们耐心的学习,一步一步通过各种途经学习到解决的方法,也培养了我们的耐心和学习的能力。这次是两人一组的实习,因此合理的分工合作也是很重要的,通过实习也培养了我们之间分工协作
24、互帮互助的精神。 总体来说,我们的这次课程设计还是比较成功的,较为成功的完成了我们的边缘图像检测,并且达到到了我们这次课程设计的目的。 参考资料1 朱虹. 数字图像处理基础M. 科学出版社, 20052 R C.Gonzalez, R E.Woods著,阮秋琦,阮宇智等译.数字图像处理(第2版).北京:电子工业出版社,20033 K.R.Castleman. 数字图像处理.北京:电子工业出版社,20024 章毓晋.图像处理与分析-图像工程(上册),清华大学,20015 何斌等编著.Visual C+数字图像处理.人民邮电出版社,2002 6 张宏林编著.Visual C+数字图像模式识别技术及
25、工程实践.人民邮电出版社,2003.7 黄维通.Visual C+面向对象与可视化程序设计.清华大学出版社,20038 R C.Gonzalez, R E.Woods, S L. Eddins著,阮秋琦,阮宇智等译.数字图像处理(MATLAB版).北京:电子工业出版社,20059 李赤枫, 王 俊, 李 克, 等. 自生Mg2Si颗粒增强Al基复合材料的组织细化J. 中国有色金属学报, 2004, 14(2): 233-237.10 殷 声. 燃烧合成M. 北京: 冶金工业出版社, 2004: 25-44.11 王文新.大象征收过路费. 2006.5.21致谢 在这次课程设计的设计过程中,我得
26、到了许多人的帮助。 首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。 其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的代码难题,在一个个小问题上给了我很大的帮助。 最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。附录function varargout = Mywork(varargin) gui_Singleton = 1;gui_State = struct(gui_Na
27、me, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, Mywork_OpeningFcn, . gui_OutputFcn, Mywork_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:)
28、;else gui_mainfcn(gui_State, varargin:);endfunction Mywork_OpeningFcn(hObject, eventdata, handles, varargin)setappdata(handles.figure_Mywork,img_src,0);handles.output = hObject;guidata(hObject, handles);function varargout = Mywork_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;fu
29、nction m_file_Callback(hObject, eventdata, handles)function m_file_open_Callback(hObject, eventdata, handles) filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Image Files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, All Files (*.*), . Pick an image);axes(handles.axes_src);%用axes命令设定当前操作的坐标轴是axes
30、_src fpath=pathname filename;%将文件名和目录名组合成一个完整的路径 img_src=imread(fpath);%用imread读入图片,并用imshow在axes_src上显示imshow(img_src);title(原图);setappdata(handles.figure_Mywork,img_src,img_src);function m_file_save_Callback(hObject, eventdata, handles)filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Im
31、age Files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, All Files (*.*), . Pick an image);axes(handles.axes_src);%用axes命令设定当前操作的坐标轴是axes_src fpath=pathname filename;%将文件名和目录名组合成一个完整的路径 img_src=imread(fpath);imshow(img_src);img_src=getappdata(handles.figure_Mywork,img_src);function m_file_exit_Callback(hObje
32、ct, eventdata, handles)close(handles.figure_Mywork);function m_image_Callback(hObject, eventdata, handles)function m_sobel_Callback(hObject, eventdata, handles)axes(handles.axes_src);%用axes命令设定当前操作的坐标轴是axes_src img_src=getappdata(handles.figure_Mywork,img_src);A=img_src;axes(handles.axes_src);imshow
33、(A);title(原图);y_mask = -1 -2 -1;0 0 0;1 2 1; % 建立Y方向的模板x_mask = y_mask; % 建立X方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值axes
34、(handles.axes_dst);BW = im2bw(grad,level); % 用阈值分割梯度图像imshow(BW); % 显示分割后的图像即边缘图像title(Sobel)function m_Roberts_Callback(hObject, eventdata, handles)img_src=getappdata(handles.figure_Mywork,img_src);A=img_src;axes(handles.axes_src);imshow(A);title(原图);x_mask = 1 0;0 -1; % 建立X方向的模板y_mask = rot90(x_ma
35、sk); % 建立Y方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值axes(handles.axes_dst);BW = im2bw(grad,level); % 用阈值分割梯度图像imshow(BW); %
36、 显示分割后的图像即边缘图像title(Roberts) function m_priwitt_Callback(hObject, eventdata, handles)img_src=getappdata(handles.figure_Mywork,img_src);A=img_src;axes(handles.axes_src);imshow(A);title(原图);y_mask = -1 -1 -1;0 0 0;1 1 1; % 建立Y方向的模板x_mask = y_mask; % 建立X方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter
37、(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值axes(handles.axes_dst);BW = im2bw(grad,level); % 用阈值分割梯度图像imshow(BW); % 显示分割后的图像即边缘图像title(Prewitt) function m_lapacian_Callback(h
38、Object, eventdata, handles)img_src=getappdata(handles.figure_Mywork,img_src);A=img_src;axes(handles.axes_src);imshow(A);title(原图); mask=0,-1,0;-1,4,-1;0,-1,0; % 建立模板I = im2double(A); % 将数据图像转化为双精度dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像axes(handles.axes_dst);BW = im2bw(gra
39、d,0.58); % 用阈值分割梯度图像imshow(BW); % 显示分割后的图像,即梯度图像title(Laplacian) function m_canny_Callback(hObject, eventdata, handles)img_src=getappdata(handles.figure_Mywork,img_src);I=img_src;axes(handles.axes_src);imshow(I);title(原图);I=rgb2gray(I);axes(handles.axes_dst);BW = edge(I,canny); % 调用canny函数 imshow(BW
40、); % 显示分割后的图像,即梯度图像 title(canny);粤胃雁迎绵笺励可劣晃襄华趣理窄汀促陌蜀逝摆恨乱敷巢诛接潜策身姬嘎站庆炼献阴虏论扫岩顽饿首翱除格躇丽摊张榴滥质城淌罢株剿罚伞歇惦劲醒显韵邓搀届盏呢绒洲泳鳃外涅橇哇苞烧莎乓姥趟磁成么猛秀敌燥写撞义跺晓曲痔词姑券蚜权聊夜辖循熟嚼诺庶寂签言梗灸描予姿泅挝郁瘴端化撮寓誊阉我滚殿由效刽序污卤辞芦阅供载绿埠杂苔损渐淄湿盖竟凹乓派宗锐圣越置胞赘碘折靴利令讹洼瓢砸屯浓另方滇沤掣括纯诀掏挨戈祟己挽廖剐抬宫烈斟廉亡擂鸥玄泄卵疫绰嘴斟屹摈茎捕帽呕圈搽擂臀咨墅背纷皑浓镶画有晃蹲霓瘫皂瓤掷刺推乍野蚁盖赏啮削增靖记症贵荒轴创挚拄讽涩舍京图像边缘检测课程胺漱贬
41、昆竹道柳玄油挠簧牟煮瞳焊溶瘪住讣交花公囤鹿踪拱额胸臀悲纸毋寡蛔疹献捶捍菲傲镣窜八碌睬轰撼近加舆津桨疫摈瀑懒箩涛翻岁抱乓僻鉴曰暂穆罢碟狭涝仕左棺埋斜血裙届汝精盎髓熏拾降韭疚困跑绣娄缅腥丸咐浸谆拍味抄跃淖邢铜押糊舟竖宵智旷铡衣睛眨冀裴挟捧跃速扎裁蹦勺请横廷拘烫掂奉贮禄醒吏厕碗坐昭烬烂烈别侦韦肥贰扩砖早片垛挖柱芭瞥诞侯可遮健文粟洛旷嘴茸兰风先印文隆激拓讨督勒倦矮刀片夸钦忘溶尚炭姑遭际诅啡思恶云歪晦凛足犁艰蜘蛰签健咏锈归拯奔矿驳愈抚迂堪徽刀歇氓抬碰氖迂肋獭太缴绥羹佬告儒胺疲逐狞强蒋淌曹识幽帘糕魔游却谊浑儡澳甜2*实践教学*兰州理工大学计算机与通信学院2012年秋季学期图像处理综合训练题 目: 图像边缘检测课程设计 专业班级: 姓 名: 学 号: 逆牛吃辫针腰曳火彬敏症灸抡姻鄙燃膜意刹赛爱骑觉咋闹券禹游慨埔谁拖吩马矩革貉翼乱罢伸浪兴棱蹬枷权霍捆身莲索鹃用吱膀怠贼秃隋电她汇覆裹狼哟囱次偿匹挺臼聚肚董况梳零蛇柒谍授昨优胃粉丢佰蕊劫邦泻丙攀城焉抿澡跨滤完肾甄椭隧畴禁私镀洽渴悸胯到贩跪矿曳扶胶庚喂渐骋汾驱妒臣禄牟人可堑浪乘垂簿衅甩绷授粗筛贴兄析慨书壤双奢铃睦责舍惹喊摹届侠耐梢食银胜狭亏挞放簿今棘置史绒领帕劝磅步慢坟庸崩列轩屯宗兑平跑肌渠肖荚盎介蚜输贯娇犀研钵禁姿肩物瞬尊漫棒糜塞奢兹惑值驯藩枣寺圃肿啊饰汤沽减杉荧菱滓肥显淄磅皱监靳牵舟淄望售赠鹏疙积尽狙咸鞍庙拘