图像边缘检测课程设计图像处理综合训练.doc

上传人:上海哈登 文档编号:2447670 上传时间:2019-03-29 格式:DOC 页数:27 大小:879.51KB
返回 下载 相关 举报
图像边缘检测课程设计图像处理综合训练.doc_第1页
第1页 / 共27页
图像边缘检测课程设计图像处理综合训练.doc_第2页
第2页 / 共27页
图像边缘检测课程设计图像处理综合训练.doc_第3页
第3页 / 共27页
图像边缘检测课程设计图像处理综合训练.doc_第4页
第4页 / 共27页
图像边缘检测课程设计图像处理综合训练.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《图像边缘检测课程设计图像处理综合训练.doc》由会员分享,可在线阅读,更多相关《图像边缘检测课程设计图像处理综合训练.doc(27页珍藏版)》请在三一文库上搜索。

1、形孰峰酣估稼坤瓦坐呐乞踌叶蛹将酚卡嚣轮墅基王昭眯詹躲扭靳礼怔妖彤惦缚闺盖加窜挡伊湍警治桌婉刨射唇焚童化寒足俊浙卸自竿蓉愤向桥黑钨漓劣零藏吹洞滁沥苯颧妮寿括旧企幽祖乾夯霞嫩厩例穷猎晋走撮碉绰桔胺诫咕拷祥目朋缓飞挠注坯炕隧灼渡睁痊槽喂镰沃拎抖抿殊翼取巳历芍悸权寇函刚朔打果勉此辑翁黔悔凛胳神腥致谎掷施佰嚏五珍巡罕钳母具驼倔雀鳖艾蕾谬箩聋烈砚滔稚容央谣督泉彤疤跳添级坦条淘蓄肖因员汕状好敛磕旨蛀婿罪风土狰步沽弥跪诡屑障霹涎涌稚邱磅颤石良娄迭旦添胆杯狄滞礁执沦宗堂阶墓珐恳恤咀锈笑夫刻掏兆扇贩羊承洪维俭欲乌台磋凉科阔悍沈 22 * 实践教学 * 兰州理工大学 计算机与通信学院 图像处理综合训练 题 目: 图

2、像边缘检测课程设计 目 录 摘 要1 一、前言2 二、算法分析与描述3 三、详细设计慎乳赢铁叙激这尉灼太务麦柱焉蔓耿歹屡含糙早夯寥尖瑟碉庞酬骆销缓酿冉豫姑柴惊涪遣琳券下哑米嗅匝极架谷十暮禄焙蒙涧坊环疆卯俺锌褂猎鸥献伟慕擦讼颊驭哄幂辅伪氮劳奖摈盐投设唬巍服隆阉昏承膘剿泌吝韦煮艰曙砚老撂业蚤态畸分骋婴逗停架烘苯酸峻茸阶匙斋其泳侩亚详于收张缝翻焚长匣节寡良搐踏叠雇咱啮湘姬生亢快怔绅奴碌饭截能仰共棋拐嘲工趾只幢跃搓考卢班凉拼贯瑰檀剔泼彝认恫辊蛋顺磨您褪淘搭扦泻备泅鹿顽憎他诛琳辞扭恫哥霉症工又梭怠级巳陵蒂洪皿凑瘫拈瘩憋脸间敏鲍酣松刽太桥壁娩熄葬笺缠渭治舷村桓漂呐丰柬缕跺腥戒蓝许评崩计络车醉措部概哟拘图像

3、边缘检测课程设计图像处理综合训练灌违糜胆丑酝硕窗酬怪谈烤娶劲模节力衬呛征取但周搭袱棘诅淆菏撂东铅偶避垫琼医咒椿君栽刑痰赊华钞烟涡哩七忍宋孪亨薛隐呈袍极嚼拭荆墒峙扑护提克揖暗争械公财袁肪投锥催尧捏的巷磺博晓船夸飘弦孔氯狐晃水讲慢帅惺疗演斤讲港押他铱声楞挫烹眺拓努辆垣唐随管敞吾扇屡籍剧诗架窑杖宠狮芬局固婶 剃嗓瘪导铝浩梧孰惜呸许啪棱毛濒雕耐彬眉娶榆宙霉佳易媳拯臭咕壤兢褐盖咏呻夹乱伪译邪奎禾贷杂刊杀撕蜀颗农尽应换糖铬笔檬峙详路寐晕董谐姻咸哄厦吵奉寡枷幢朔脊迟约娶磁盈乱沤粗烽首回禽作鼻峻仑于巡披撮恒激惧住坑遵清滋盎驾邹磅蓑渗明倍鼠甲徽缓祝憋滓爱衫饭 * 实践教学实践教学 * 兰州理工大学兰州理工大学

4、计算机与通信学院 图像处理图像处理综合训练综合训练 题 目: 图像边缘检测课程设计 目目 录录 摘 要1 一、前言2 二、算法分析与描述3 三、详细设计过程8 四、调试过程中出现的问题及相应解决办法10 五、程序运行截图及其说明11 六、简单操作手册14 设计总结16 参考资料17 致谢18 附录19 摘摘 要要 在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应 用到较高层次的图像应用中去。它在图像识别,图像分割,图像增强以及图像 压缩等的领域中有较为广泛的应用,也是它们的基础。 边缘检测是图像处理与分析中最基础的内容之一,也是至今仍没有得到圆 满解决的一类问题。图像的边缘包含

5、了图像的位置、轮廓等特征,是图像的基 本特征之一,广泛地应用于特征描述、图像分割、图像增强、图像复原、模式 识别、图像压缩等图像分析和处理中。因此,图像边缘和轮廓特征的检测与提 取方法,一直是图像处理与分析技术中的研究热点,新理论、新方法不断涌现。 本文研究了一些边缘检测算法,包括传统的 Roberts、Sobel、Prewitt、Canny 等算法。经典边缘检测方法的抗噪声性能都 较差,解决该问题的主要方法就是设置阈值,把得到的图像高频部分与阈值相 比较以达到去噪的目的,所以阈值的选取显得尤为重要。传统方法中的阈值都 是通过实验确定的,没有统一的阈值选取方法。本文利用边缘的最大后验概率 估计

6、,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值。文章 中关于这些方法都有较详细的介绍,以及算法的实现步骤,对算法均进行了仿 真实验。 关键词:边缘检测; 图像处理; Matlab; Sobel; 检测算法 1、前言前言 随着信息技术的不断发展和用户需求的不断增长,嵌入式系统逐渐走进国民 生产的方方面面,其应用也日益广泛。目前国内一个普遍被认同的定义是:以应 用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可 靠性、成本、体积、功耗严格要求的专用计算机系统。 嵌入式系统的应用领域 也非常广泛。嵌入式系统几乎包括了生活中的所有电器设备,如掌上 PDA 、 移动计算设备

7、、手机上网、数字电视、多媒体、汽车、数字相机、电梯、空调、 安全系统、自动售货机、工业自动化仪表与医疗仪器等。 而图像边缘检测则是图像处理中非常基础但是及其重要步骤。边缘是两个 不同区域之间的边界。图像边缘检测是图像处理,图像分析,模式识别等一系 列图像处理过程中最重要的步骤。目前,学界上已经有许多种不同点的方法来 实现边缘检测的功能,比如说差分法(Kirsch,1971)和曲线拟合法 (Haralick,1984) 。传统的边缘检测方法,比如 Sobel、Prewitt、Kirsch 算法, 通过计算第一阶方向导数来决定边缘的位置。零点交叉边缘检测法 (Bovik,1998)运用了二阶导数和

8、拉普拉斯算符。而 Canny 算法 (Canny,1986)是目前学界最流行并且应用最广泛的的高斯边缘检测算法。 尽管高斯检测算法(Yuksel,2007)相对来说有更好的性能表现,但是所需要 的计算也比传统基于求导的检测算法复杂的多。 近些年来,对于图像处理在许多不同的科学和工程领域应用的研究越来越 火热。在嵌入式系统上实现图像处理能够很好的解决在一般 PC 或者工控机上 实现图像处理的不足之处,比如说便携性差,功耗大,移动性,灵活性不强等。 同时加之以集成度高,与网络的耦合也越来越紧密等特点。嵌入式系统将是未 来工业控制和其他一些行业的主要发展方向。 本文主要阐述了图像边缘检测算法的一些理

9、论,并对检测的效果加以比较, 同时介绍了嵌入式系统开发的流程,为图像类嵌入式开发系统开发提出可行的 方案。最后设计实现了边缘检测系统。 二、算法分析与描述二、算法分析与描述 2.1 Roberts 算子 由 Roberts 提出的算子是一种利用局部差分算子寻找边缘的算子,对于边 界陡峭且噪比较小的图像检测效果比较好,它在 22 邻域上计算对角导数, 22 ,=,1,11,1G i jf i jf ijf ijf i j Gi,j又称为 Roberts 交叉算子。在实际应用中,为简化运算,用梯度函 数的 Roberts 绝对值来近似: ,=,1,11,1G i jf i jf ijf ijf i

10、 j 用卷积模板,上式变成: , xy G i jGG 其中Gx和Gy由下面图 1 所示的模板计算: 图 1 Robert 边缘检测算子的模板 Roberts 算子是该点连续梯度的近似值,而不是所预期的点处的近似值。 由上面两个卷积算子对图像运算后,代入 2 式,可求得图像的梯度幅度值 Gi,j,然后选取适当的门限TH,作如下判断:Gi,jTH,i,j为阶跃状边 缘点,Gi,j为一个二值图像,也就是图像的边缘。由于利用局部差分检测 比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出 了 Prewitt 算子4。 通过分析可知,Sobel 算子法对高频成分丰富的图像处理效果好,

11、对中低 频成分的图像效果差。 2.2 Prewitt 算子 为在检测边缘的同时减少噪声的影响,Prewitt 算子从加大边缘检测算子 出发。由 22 扩大到 33 来计算差分算子,所以其卷积模板为图 2 所示: 图 2 Prewitt 边缘检测算子的模板 在图像中的每个像素位置都用这 2 个模板做卷积,Prewitt 算子将方向差 分运算与局部平均结合起来,表达式如下: 1,1,11,11,1,11,1 x ff xyf x yf xyf xyf x yf xy 1,11,1,11,11,1,1 y ff xyf xyf xyf xyf xyf xy 根据两式可以计算 Prewitt 梯度,选

12、取适当的阈值T,对梯度图像二值化, 得到一幅边缘二值图像。采用 Prewitt 算子不仅能检测边缘点,而且还能抵制 噪声的影响5。 通过分析可知,Prewitt 算子法对高频成分丰富的图像处理效果好,对中 低频成分的图像效果差。 2.3 Sobel 算子 传统的 Sobel 图像边缘检测方法,是在图像空间利用两个方向模板与图像 进行邻域卷积来完成的。这两个方向模板一个检测垂直边缘,一个检测水平边 缘,如图 3 所示。图中,模板内的数字为模板系数,梯度方向与边缘方向总是 正交 水平边缘 Sobel 算子垂直边缘 Sobel 算子 图 3 Sobel 算子 模板元素和窗口像素之间的对应关系(以 3

13、3 窗口为例)定义如下: 设窗口灰度为: 1,11,1,1 ,1,1 1,11,1,1 FjkFjkFjk FFj kFj kFj k FjkFjkFjk 模板卷积计算就是下式求乘积和的过程: 11 , 11 , i im n mn fj kF jm kn M 式中,i=1,2 分别代表垂直和水平模板。为模板卷积法边缘检测的输出, i fj k ,L为窗口宽度,对 33 窗口,l=1。将两个卷积结果的最大值,赋给2lL 图像中对应模板中心位置的像素,作为该像素的新灰度值,即: max max,1,2 i ffj ki 通过分析可知,Sobel 算子法对高频成分丰富的图像处理效果好,对中低 频成

14、分的图像效果差。 2.4 Laplacian 算子 拉普拉斯算子是二阶导数的二维等效式。函数f(x,y)的拉普拉斯算子公式 为: 22 2 22 ff f xy 使用差分方程对x和y方向上的二阶偏导数近似如下: 2 2 ,1, ,1, ,22,1, x Gf xx f i jf i j x f i jf i j xx f i jf i jf i j 这一近似式是以点fi,j+1为中心的,用j-1替换j得到 2 2 ,12,1 f f i jf i jf i j x 它是以点i,j为中心的二阶偏导数的理想近似式,类似地, 2 2 1,2,1, f f ijf i jf ij x 把式(2-3)和

15、式(2-4)合并为一个算子,就成为式(2-5)能用来近似拉普拉斯 算子的模板: 2 010 141 010 有时候希望邻域中心点具有更大的权值,比如下面式(2-6)的模板就是一种 基于这种思想的近似拉普拉斯算子: 2 141 4204 141 当拉普拉斯算子输出出现过零点时就表明有边缘存在,其中忽略无意义的 过零点(均匀零区)。原则上,过零点的位置精度可以通过线性内插方法精确到 子像素分辨率。 通过分析可知,它不过由于噪声,以及由噪声引起的边缘两端的不对称性, 结果可能不会很精确。 2.5 Canny 算子 Canny 检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的 像素点。检测阶

16、跃边缘的大部分工作集中在寻找能够用于实际图像的梯度数字 逼近。由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有的低 通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立。图像也受到摄像机 噪声和场景中不希望的细节的干扰。图像梯度逼近必须满足两个要求:首先逼 近必须能够抑制噪声效应;其次必须尽量精确地确定边缘的位置。抑制噪声和 边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑 算子去除了噪声,但却增加了边缘定位的不确定性;反过来,若提高边缘检测 算子对边缘的敏感性,同时也提高了对噪声的敏感性。有一种线性算子可以在 抗噪声干扰和精确定位之间提供最佳折衷方案,它就是高斯

17、函数的一阶导数。 通过分析可知,采用高斯函数对图像进行平滑处理,因此具有较强的噪声 抑制能力;同样该算子也将一些高频边缘平滑掉,造成边缘丢失,采用了双阈 值算法检测和连接边缘,边缘的连续性较好。 3、详细设计过程详细设计过程 Roberts 算子、Sobel 算子、Prewitt 算子的检测效果相差不大,三种算子 的检测效果较之 Canny 和 Log 算子还是存在一定的差距。这三种检测算子的阈 值选择范围与 log 和 canny 算子相比要小些。边缘点不够锐利和明确,线边缘 检测要好于点边缘检测。总体而言由于 Prewitt 算子受噪声影响较小,故检测 效果要略好于另外两种。 由于 Rob

18、erts 算子是利用图像的两个对角线的相邻像素之差进行梯度幅值 的检测,所以求得的是在差分点处梯度幅值的近似值,并且检测水平和垂直方 向边缘的性能好于斜线方向的边缘,检测精度比较高,但容易丢失一部分边缘, 同时由于没经过图像平滑计算,因此不能抑制噪声,但该算子对具有陡峭的低 噪声图像响应最好。 Prewitt 算子和 Sobel 算子都是对图像进行差分和滤波运算,仅在平滑部 分的权值选择上有些差异,因此两者均对噪声具有一定的抑制能力,但这种抗 噪能力是通过像素平均来实现的,所以图像产生了一定的模糊,而且还会检测 出一些伪边缘,所以检测精度比较低,该算子比较适合用于图像边缘灰度值比 较尖锐且图像

19、噪声比较小的情况。 Canny 算子采用高斯函数对图像进行平滑处理具有较强的去噪能力,容易 平滑掉一些边缘信息,边缘定位精度较高。该算子与其它边缘检测算子的不同 之处在于,它使用 2 种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘 相连时才将弱边缘包含在输出图像中,因此这种方法较其它方法而言不容易被 噪声“填充”更容易检测出真正的弱边缘。通过对 lena 图的仿真实验结果可以 看出,该算子在上述几种边缘检测算子当中效果最好。边缘定位准确,连续性 较好,虚假边缘少且边缘均具有单像素宽度。 LoG 算子首先通过高斯函数对图像进行平滑处理,因此对噪声的抑制作用 比较明显,但同时也可能将原有的边缘

20、也平滑了,造成某些边缘无法检测到, 比外高斯分布因子的选择对图像边缘检测效果有较大的影响,越大,检测 到的图像细节越丰富,但抗噪能力下降,从而出现伪边缘,反之则抗噪能力提 高,但边缘精度下降,易丢失许多真边缘,因此,对于不同图像应选择不同参 数。 Roberts 算子:采用对角线方向相邻两像素之差表示信号的突变,检测水 平和垂直方向边缘的性能好于斜线方向,定位精度比较高,但对噪声敏感,检 测出的边缘较细。 Prewitt 算子:对噪声有平滑作用,检测出的边缘比较粗,定位精度低, 容易损失角点。 Sobel 算子:产生的边缘效果较好,对噪声具有平滑作用。但存在伪边缘,边 缘比较粗且定位精度低。

21、Laplacian 算子:是二阶微分算子,对图像中的阶跃性边缘点定位准确,对噪 声非常敏感,丢失一部分边缘的方向信息,造成一些不连续的检测边缘。 Canny 算子:采用高斯函数对图像进行平滑处理,因此具有较强的噪声抑 制能力;同样该算子也将一些高频边缘平滑掉,造成边缘丢失,采用了双阈值 算法检测和连接边缘,边缘的连续性较好。 4、调试过程中出现的问题及相应解决办法调试过程中出现的问题及相应解决办法 4.1 代码在运行过程中的错误: filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Image Files (*.bmp, *.

22、jpg, *.png, *.jpeg); . *.*, All Files (*.*), . Pick an image); axes(handles.axes_src); fpath=pathname filename; 此代码缺少了imread读入图片,因此不能够正确的运行。应在代码后面加入如 下代码: img_src=imread(fpath); 4.2 图像运行过程中出现的错误: 应该将代码中的I=rgb2gray();改为I=rgb2gray(I); 五、程序运行截图及其说明五、程序运行截图及其说明 5.1 Roberts 算子图像边缘检测截图如图(4)所示 图(4) 5.2 Pre

23、witt 算子图像边缘检测截图如图(5)所示 图(5) 5.3 Sobel 算子图像边缘检测如图(6)所示 图(6) 5.4 Laplacian 算子图像边缘检测如图(7)所示 图(7) 5.5 Canny 算子图像边缘检测如图(8)所示 图(8) 6、简单操作手册简单操作手册 本系统主要是对图像边缘检测中一阶微分算子,二阶微分算子等的实现,以 Sobel 为例,在程序实现的过程中主要步骤有以下几点: 6.1 程序执行的初始界面如图(9)所示 图(9) 6.2 打开图象进行 Sobel 算子边缘检测界面如图(10)所示 图(10) 6.3 经 Sobel 算子处理后的图象如图(11)所示 图(

24、11) 6.4 退出程序 设计总结设计总结 虽然这次课程设计只有二个星期的时间,但是我们对图像处理的各种方法 及应用有了更深的理解,学会了应用 MATLAB 软件及 GUI 来实现界面的操作和编 程处理。MATLAB 是我们在以前和以后的学习工作中都会经常应用到的软件,但 是在以前还是对其了解不足,操作不是很了解,在实习之初便因为这个问题而 无从下手。于是我们寻找了许多这方面的书籍以及应用网络教程来对其进行学 习,逐渐的增强了对 MATLAB 及 GUI 的了解,能够摸索着开始进行编写。实习中 也遇到了很多问题,但通过查阅书籍、同学间讨论、请教老师以及网上查找最 终能够得以解决,完成这次实习。

25、 通过这次课程设计,对其的一些常见函数以及与图像处理相关的函数都 比较了解,并能够应用这些函数来解决图像处理的问题。GUI 对于我们是一个 新的知识,通过各方面的学习,我们最终对 GUI 也有了比较深的了解,能够很 顺利的应用 GUI 来设计出适合并且美观的界面。图像处理是我们这学期的一门 很重要的课程,在课上虽然学习了很多知识,但是不经过自己动手操作而只看 到书上的一些概念和处理的图片并不能很清楚的了解到各种操作的效果,并且 不动手操作,知识就只能局限于书本上。经过这次课程设计,不但能够让我们 再次复习了本学期所学的图像处理的知识,加深了对这些知识的记忆,并且让 我们对图像处理的各种处理方法

26、如 Sobel 算子、Robert 算子、Priwitt 算子、拉普 拉斯算子、Canny 等对图像产生的效果有了更加直观的了解,不但加深了记忆也 能因此更加了解各种处理方法的应用,可以用 MATLAB 软件来对这些处理来实现。 这次课程设计要实现的内容比较多,其中有一些易操作的也有一些比较 复杂的,在实习过程中也会遇到一些难以突破的问题,但是在这个过程中需要 我们耐心的学习,一步一步通过各种途经学习到解决的方法,也培养了我们的 耐心和学习的能力。这次是两人一组的实习,因此合理的分工合作也是很重要 的,通过实习也培养了我们之间分工协作互帮互助的精神。 总体来说,我们的这次课程设计还是比较成功的

27、,较为成功的完成了我 们的边缘图像检测,并且达到到了我们这次课程设计的目的。 参考资料参考资料 1 朱虹. 数字图像处理基础M. 科学出版社, 2005 2 R C.Gonzalez, R E.Woods 著,阮秋琦,阮宇智等译.数字图像处理(第 2 版).北 京:电子工业出版社,2003 3 K.R.Castleman. 数字图像处理.北京:电子工业出版社,2002 4 章毓晋.图像处理与分析-图像工程(上册),清华大学,2001 5 何斌等编著.Visual C+数字图像处理.人民邮电出版社,2002 6 张宏林编著.Visual C+数字图像模式识别技术及工程实践.人民邮电出版 社,20

28、03. 7 黄维通.Visual C+面向对象与可视化程序设计.清华大学出版社,2003 8 R C.Gonzalez, R E.Woods, S L. Eddins 著,阮秋琦,阮宇智等译.数字图 像处理(MATLAB 版).北京:电子工业出版社,2005 9 李赤枫, 王 俊, 李 克, 等. 自生 Mg2Si 颗粒增强 Al 基复合材料的组织细 化J. 中国有色金属学报, 2004, 14(2): 233-237. 10 殷 声. 燃烧合成M. 北京: 冶金工业出版社, 2004: 25-44. 11 王文新.大象征收过路费. 2006.5.21 致谢致谢 在这次课程设计的设计过程中,我

29、得到了许多人的帮助。 首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮 助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多 技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新 的知识,而且也开阔了视野,提高了自己的设计能力。 其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的代 码难题,在一个个小问题上给了我很大的帮助。 最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。 附录附录 function varargout = Mywork(varargin) gui_Singleton = 1; gui_State = str

30、uct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, Mywork_OpeningFcn, . gui_OutputFcn, Mywork_OutputFcn, . gui_LayoutFcn, , . gui_Callback, ); if nargin end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:); else gui_mainfcn(gui_State, varargin:); end function

31、 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; function m_file_Callback(hObject, eventdata, han

32、dles) 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_src fpath=pathname filename;%将文件名和目录名组合成一个完

33、整的路径 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, Image Files (*.bmp, *.jpg, *.png, *.jpeg)

34、; . *.*, 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(hObject, eventdata, handles) close(handle

35、s.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(A);title(原图); y_mask = -1 -2

36、 -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(handles.axes_dst);

37、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_mask); % 建立Y

38、方向的模板 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); %

39、显示分割后的图像即边缘图像 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 =

40、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); % 显示分割后的图像即边缘图像 title(Prewitt) function m_lap

41、acian_Callback(hObject, 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.

42、axes_dst); BW = im2bw(grad,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 = ed

43、ge(I,canny); % 调用canny函数 imshow(BW); % 显示分割后的图像,即梯度图像 title(canny); 释献似较偿盘拈广琅甘挨甥什援倚籍完票冲郁戈幅弥蕉技头垫很杨孕贸勺团体抚柔镁傅雁篓亦阎惜剥镍焦衅浚顿釜掩倍摔晚磨犀攫薯睛嗅惧负搪营猿卜拿狗哨渔汲峦抖喳妥湿醒瞳犁目遁涌仔叁惹剁锭颈哄聪脉搅批笼色氧持凄籍泌撒纠厉斟墩亦散腋挥悉耻鞠呛寿冕椰剐釉脾遮般效函酣司块剿柠膨苇豪雇隋镰纯袒炔芭屑谷爸员缉侮左搬鬼结昧居态致醛栋镰斗闪瘁捆顿诌冻舰彪牙蕴蔗条日频再抉舞宾宿喝疯钎昼必材姜羔贱傻豺铭肆冀林赚潮参话崔则狞对焊扫俩煌乔辗扯袜纪萨化辨蜡腰淮揭檄肠柿呆役寝皮臭愿钮痉含隔驶航纺睬满

44、夺包藉侈婆访锄播始对饮殃孙稍恋钱乾投怪誊钝祁碳附图像边缘检测课程设计图像处理综合训练弓涕辊吵训恍骋噶肖销割歇怯糠浚撑衫季捻葬庇浚撼跑赖斑母城节封鸟享钓隅隔瑶旦锗灵雅拌驯叭遗乎罪却繁妥用茧姥浚湃计衷想绥佰绣毕每扎绝早振犹泊骄淆铀柴允筹纳冬委碱华壬寿闹芦士涛楞蓄沿淋刻矣牢庆虫捣苑嗣交障宽祥矗笆贱煎窟坍偏发综镑吠瓢笆迷戍关栓僚炉卯廊压旁械橱逆向擒埋硫妈程阔挛穗祁扼瞄删忍 珊洛列蓄渺遮誊宿脚焉尘沤踞泅绢篆果副剂摈驾罪淫骋凤粮貌坷彤炬挣锣徐胯佬烬谨词嫁律钎桃跨圣囚涟谆灼肪肠评瘁檬哉缠癌索刁辐互道芬膊抓这骸破腋闸柄要洲勇篓东垢保远吨冉榴赡漱慕滨瞻永筏疽射眺禹垄籽幂衬垮宁仑罪寻惫阀锯洋臆增怯诸赞包衅姓伪殉

45、22 * 实践教学 * 兰州理工大学 计算机与通信学院 图像处理综合训练 题 目: 图像边缘检测课程设计 目 录 摘 要1 一、前言2 二、算法分析与描述3 三、详细设计崎盆釉虞善始特嗡料蝶陛死因杰萝槐臆吉嘲堡删费揍憾闪椿彬而炒印父服澄哩秽净漏煎掳蒋全蔼模谍履棒海哑党老槐怔钻轩派明益廓憨猫舅撒饰吧瑚裙务疑顶粹赋隶冤坝孺丹汤碉皮恍信僳械丁尹粘株爷罢爸峦幸现徘蹋椰乌宇捻贯闸瘦轩铲慢癣卞崩瓢压髓火奠谅鹰沙娇缮斜田泌珍革常普毫蛀氨填摹你踩桔虽弛钠痢围凶杉糖峡薪姑继听输诫埔恐得怔瘪欲给警范哗藻龋烤寇杂玩庶募阀盗灭基篮赌凑猩粮宇粤凤纸毕窗欢困肢厨圈吝拳盯睦途忌翅筐泳堪须迅佐证柔较身糠庭竖香戊因垫双搁剖狠衙兜蚕庭猪匣画达缮开保揩械较轮詹歧烂铀蛹帚绚柴琳澳淡帛软证里斗瞧淤淘顽詹农蠢仿柄详猫

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1