




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
* 实践教学实践教学 * 兰州理工大学兰州理工大学 计算机与通信学院 2012 年秋季学期 图像处理图像处理 综合训练综合训练 题 目: 图像边缘检测程序设计 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目目 录录 摘 要1 一、前言2 二、算法分析与描述3 三、详细设计过程7 四、调试过程中出现的问题及相应解决办法11 五、程序运行截图及其说明12 六、简单操作手册15 设计总结18 参考资料19 致谢20 附录21 0 摘摘 要要 图像处理就是对图像信息加工以满足人的视觉心理或应用需求的方法。图像 处理方法有光学方法和电子学方法。数字图像处理是利用数字计算机或其它的 硬件设备对图像信息转换而得到的电信号进行某些数学处理以提高图像的实用 性。 边缘检测是目前图像分析领域中的基础技术,也是数字图像处理中的一项重要 内容。它利用图像一阶倒数的极值或二阶倒数的过零点信息来提取边缘。本文 对图像边缘检测的几种经典算法包括一阶微分的 sobel 算子、robert 算子、 priwitt 算子,二阶微分 laplacian 算子及 canny 算子。通过实例图像对不同 边缘检测算法的效果进行分析,比较了不同算法的特点和适用范围。 关键词:图像处理;边缘检测;一阶微分;二阶微分 1 一、前言一、前言 在实际图像边缘检测问题中图像的边缘作为图像的一种基本特征经常被应用 到较高层次的图像应用中去。它在图像识别图像分割图像增强以及图像压缩等 的领域中有较为广泛的应用也是它们的基础。 图像边缘是图像最基本的特征之一往往携带着一幅图像的大部分信息。而边 缘存在于图像的不规则结构和不平稳现象中也即存在于信号的突变点处这些点 给出了图像轮廓的位置。这些轮廓常常是我们在图像边缘检测时所需要的非常 重要的一些特征条件这就需要我们对一幅图像检测并提取出它的边缘。边缘是 以图像的局部特征不连续的形式出现的,也就是指图像局部亮度变化最显著的 部分,同时边缘也是不同区域的分界处。 边缘检测是图像特征提取的重要技术之一, 边缘常常意味着一个区域的终结 和另一个区域的开始。 图像的边缘包含了物体形状的重要信息,它不仅在分析 图像时大幅度地减少了要处理的信息量,而且还保护了目标的边界结构,它对于 我们进行高层次的特征描述、识别和理解等有着重大的影响。又由于边缘检测 是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的基础, 是图像识别中提取图像特征的一个重要属性。图像理解和分析的第一步往往就 是边缘检测。在工程应用中占有十分重要的地位,所以人们一直在致力于研究 和解决如何构造出具有良好性质及好的效果的边缘检测算子的问题。 本次的目的是从理论上对几种经典的边缘检测算法(sobel 算子、robert 算 子、priwitt 算子、laplacian 算子及 canny 算子)进行分析,并用实现这些算 法。最后,通过实例图像对不同边缘检测算法的效果进行分析,找出各种算法 的适用范围。 2 二、算法分析与描述二、算法分析与描述 2.12.1 基于一阶微分的边缘的检测 1、sobel 算子 sobel 算子和p rew it t 算子都是一阶的微分算子,都是先对图像进行 平滑处理, 虽然两者都是加权平均滤波, 但是前者邻域的像素对当前像素产生 的影响不是等价的, 距离不同的像素具有不同的权值, 对算子结果产生的影响 也不同。这两种算子对噪声都有一定的抑制作用, 但不能完全排除检测结果中 出现虚假边缘的情况。这两者对灰度渐变低噪声的图像有较好的检测效果, 但 是对于混合多复杂噪声的图像处理效果就不理想了。 正如前面所讲,采用邻域可以避免在像素之间内插点上计算梯度考33 虑一下上图中所示的点周围点的排列sobel 算子也是一种梯度幅值, , i j (11)mss xy 22 其中的偏导数用下式计算: (12) )()( )()( 456210 670432 acaaacaas acaaacaas y x 其中常数2c 和其他的梯度算子一样,和可用卷积模板来实现,如图 1.1 所示:sxsy 101 202 101 x s 121 000 121 y s 图 11 请注意这一算子把重点放在接近于模板中心的像素点sobel 算子是边缘检测 器中最常用的算子之一 (图 12) 456 37 210 , aaa ajia aaa 3 图 12 用于说明 sobel 算子和 prewitt 算子的邻域像素点标记 prewitt 算子与 sobel 算子的方程完全一样,只是常量 c=1所以 (13) 101 101 101 x s 111 000 111 y s 请注意,与 sobel 算子不同,这一算子没有把重点放在接近模板中心的像素点 如图 1.3 所示 2、robert 算子 robert 算子边缘检测算子也叫交叉差分算子,是一种利用局部差分寻找 边缘的算子,用领域的处理。22 边缘,是指周围像素灰度有阶跃变化或屋顶等变化的那些像素的集合。图像 的边缘对应着图像灰度的不连续性。显然图像的边缘很少是从一个灰度跳到另 一个灰度这样的理想状况。真实图像的边缘通常都具有有限的宽度呈现出陡峭 的斜坡状。 边缘的锐利程度由图像灰度的梯度决定。梯度是一个向量,f 指 出灰度变化最快的方向和变化量。 (1.5),(f y f x f (1.6) 2 2 y f x f f (1.7) x f y f 梯度大小由确定。而梯度方向则由确定,因此最简单的边缘检测算子是用图像 的垂直和水平差分来逼近梯度算子: (1.8)1,(),(, 1,(yxfyxfyxfyxff 因此当我们寻找边缘的时候,最简单的方法是对每一个像素计算出 (1.8)的向量,然后求出它的绝对值。利用这种思想就得到了roberts算子: (1.9) 2 1 22 ), 1() 1,()1, 1(),(),(yxfyxfyxfyxfyxg 4 其中f(x,y)是具有整数像素坐标的输入图像。 其中 g(x,y)由下面的模板计算: (13) gx 10 01 gy 01 10 同前面的梯度算子一样,差分值将在内插点x+1/2;y+1/2处计22 算roberts 算子是该点连续梯度的近似值,而不是所预期的点x,y处的近似 值。 3、laplacian 算子 平滑过的阶跃边缘二阶导数是一个在边缘点处过零的函数。拉普拉斯算子是 二阶导数边缘算子。函数的拉普拉斯算子公式为),(yxf (17) 2 2 2 2 2 f f x f y 使用差分方程对 和方向上的二阶偏导数近似如下:xy 5 (18) 这一近似式是以点x,y+1为中心的。用 y-1 替换 y,得到 (19) 2 2 x f 1,),2 1,(jifjifjif 它是以点为中心的二阶偏导数的理想近似式,类似地, , i j (110) 2 2 y f , 1),2, 1(jifjifjif 把这两个式子合并为一个算子,就成为下面能用来近似拉普拉斯算子的模板: (111) 010 141 010 2 当拉普拉斯算子输出出现过零点时就表明有边缘存在,其中忽略无意义的过 零点(均匀零区)。原则上,过零点的位置精度可以通过线性内插方法精确到子 像素分辨率,不过由于噪声,结果可能不会很精确。 5 4canny 算子 检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。 检测阶跃边缘的大部分工作集中在寻找。 canny边缘检测器是高斯函数的一阶导数,是对信噪比与定位之乘积的最优 化逼近算子canny 1986。我们将通过下面的符号对canny边缘检测器算法作一 概括说明。用表示图像,使用可分离滤波方法求图像与高斯平滑滤波器卷 ,jii 积,得到的结果是一个已平滑数据阵列 , ,;,jiijigjis 其中是高斯函数的散布参数,它控制着平滑程度。 已平滑数据阵列的梯度可以使用一阶有限差分近似来计算 与 s i j , 22x 偏导数的两个阵列与: y,jip,jiq (112) 2/)1, 1 1, 1,(, 2/), 1 1, 1, 1,(, jisjisjisjisjiq jisjisjisjisjip 在这个正方形内求有限差分的均值,以便在图像中的同一点计算 x 和 y 的22 偏导数梯度。幅值和方位角可用直角坐标到极坐标的坐标转化公式来计算: (113) 22 ,jiqjipjim (114) ,/ ,(arctan,jipjiqji 其中,反正切函数包含了两个参量,它表示一个角度,其取值范围是整个 圆周范围内。为高效率地计算这些函数,尽量不用浮点运算梯度的幅度和方 向也可以通过查找表由偏导数计算。 6 3、详细设计过程详细设计过程 1、分析 图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特征 的不连续性,是图像中灰度变化比较剧烈的地方,即通常所说的信号发生奇异 变化的地方。奇异信号沿边缘走向的灰度变化剧烈,通常将边缘划分为阶跃状 和屋顶状两种类型如图 3.1 所示。阶跃边缘中两边的灰度值有明显的变化;而 屋顶状边缘位于灰度增加与减少的交界处。在数学上可利用灰度的导数来刻画 边缘点的变化,对阶跃边缘、屋顶状边缘分别求其一阶、二阶导数。 图 3.1 阶跃边缘和屋顶状边缘处一阶和二阶导数变化规律 (其中第一排为理想信号,第二排对应实际信号) 2、工作流程分析 系统工作流程较为简单,功能用于对图像进行边缘检测,工作流程并不复 杂。 双击 ch1_1.exe 文件,系统界面就出现了,点击文件,然后选择打开,打 7 开 bmp 格式的图片文件,此时图片就会显示在工作区域;主要模块的系统过程 如图 3.2 所示 图 3.2 4、一阶微分算法的实验结果与分析 (1)sobel 算子公式的定义为: (2)实验结果分析 以 cameraman 图片为例,用 sobel 算法,分别给检测结果。 理论上 sobel 算子可以轻易在空间上实现,sobel 边缘检测器不但可以产生 较好的边缘检测效果由 5.2 图可以看出 sobel 算子虽然检测到的边缘信息很丰 富,也较为连续,但是边缘很模糊,严重的影响了视觉效果。 开始 读取待测图 片 边缘检测 sobel 算子robert 算子priwitt 算 子 laplacian 算子 保存 退出 canny 算子 ) 1, 1() 1,(2) 1, 1(|),(yxfyxfyxfyxgx | ) 1, 1() 1,(2) 1, 1(yxfyxfyxf ) 1, 1(), 1(2) 1, 1(|),(yxfyxfyxfyxgy | ) 1, 1(), 1(2) 1, 1(yxfyxfyxf 8 (4)robert 算子的公式定义为: 2 1 22 ), 1() 1,()1, 1(),(),(yxfyxfyxfyxfyxg (5)prewitt 算子: prewitt 算子与 soble 算子不同的地方在于没有把重点放在接近模板中心的 像素点。prewitt 算子首先进行邻域平均或加权平均,然后进行微分。 (6)实验结果分析 以 cameraman 图片为例,分别用 roberts、prewitt 两种算法,分别给检测结 果。 通过图 5.3 和图 5.4 知, roberts 算子、prewitt 算子,都能够比较准确的 检测出图像的边缘。 基于一阶微分的边缘检测算子具有实现简单、运算速度快等特点,检测结果 不可靠,不能准确判定边缘的存在及边缘的准确位置,造成这种情况的原因: (1)实际边缘灰度与理想边缘灰度值间存在差异,这类算子可能检测出多个边缘; (2)边缘存在的尺度范围各不相同,这类算子固定的大小不利于检测出不同尺度 上的所有边缘;(3)对噪声都比较敏感。 5、二阶微分算法的实验结果与分析 (1)laplacian 算子的公式为: 2 2 2 2 2 f f x f y (2)canny 算子的公式为: ,;,jiijigjis (3)实验结果分析 以 cameraman 图片为例,分别用 laplacian、canny 两种算法,分别给检测结 果。 由图 5.5 可以看出 laplacian 算子:对图像中的阶跃性边缘点定位准确。 canny:采用高斯函数对图像进行平滑处理,该算子也将一些高频边缘平滑掉, 造成边缘丢失,采用了双阈值算法检测和连接边缘,边缘的连续性较好。 laplacian 算子是对二维函数进行运算的二阶导数算子,与方向无关,对取向 不敏感,因而计算量要小。根据边缘的特性,laplacian 算子可以作为边缘提 9 取算子,计算数字图像的 laplacian 值可以借助模板实现,它相当于高通滤波, 常会出现一些虚假边缘。canny 算子是一个具有滤波、增强和检测的多阶段的 优化算子。 在进行处理前,canny 算子增强边缘是将邻域(或局部)强度值有显著变化 的点突出来,一般通过计算梯度幅值来完成。canny 分割算法采用一阶偏导的 有限差分来计算梯度的幅值和方向。对一个边缘来说,其一阶导数在边界处存 在一个向上的阶跃,或者其二阶导数过零点。在处理过程中,canny 算法还将 经过一个非极大值抑制的过程。最后 canny 算法将采用两个阈值来连接边缘。 但也有不足之处,canny 算法对整幅图像采用同一高斯函数进行滤波,无法顾 及图像局部特征信息,边缘检测的阈值需要预先设定。先确定一个阈值系数, 该系数定义为梯度小于阈值的像素数所占边缘像素总数的比例,以此来确定阈 值。这种方法没有利用图像自身的信息,不具有自适应能力。 10 四、调试过程中出现的问题及相应解决办法四、调试过程中出现的问题及相应解决办法 matlab 语言是一种解释执行的语言,它灵活、方便,其调试程序手段丰富, 调试速度快。 。matlab 语言与其它语言相比,把编辑、编译、连接和执行融为 一体。它能在同一画面上进行灵活操作快速排除输入程序中的书写错误、语法 错误以至语意错误,从而加快了用户编写、修改和调试程序的速度,可以说在 编程和调试过程中它是一种非常简单的语言。 但之前并没有熟悉 matlab 的编译,出现直接把程序复制粘贴的错误,后来才 学习正确的编译运行过程。 代码在运行过程中的错误: 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); 11 五、程序运行截图及其说明五、程序运行截图及其说明 1、图 5.1:是原图,做为参考图片 图 5. 2、图 5.2:是 sobel 算子运行出来后的图片,能检测到的边缘信息较为连续, 但边缘很模糊。 图 5.2 12 3、图 5.3:是 roberts 算子运行出来后所得的图片,但边缘较细。 图 5.3 4、图 5.4:是 prewitt 算子运行后的图片,所得的图片精度不高,边缘较粗。 图 5.4 13 5、图 5.5:是 laplacian 算子所得,对图像中的阶跃性边缘点定位准确,有信 息丢失,边缘不够连续。 图 5.5 6、图 5.6:是 canny 算子所得,边缘较联系,但还是有丢失边缘信息。 图 5.6 14 六、简单操作手六、简单操作手 1、matlab 运行环境简介 1)启动 matlab 可由下列方法之一进入 matlab 命令行窗口: (1)开始 程序 matlab。 (2)双击桌面 matlab 图标。 2)编制、运行 matlab 程序可用下列方法之一编制和运行 matlab 程序 选择菜单条中的“file open (或 new)进入 matlab 程序编辑器,在编辑 器中编辑程序。 a. 命令行以“, ”或“;”结尾。以“, ” 结尾运行时显示该 命令运行结果,以“;” 结尾不显示该命令运行结果。 b. 注释前加“%” 。 c. 运行操作可使用命令快捷键。 2、图像文件的读、写和显示 图像文件的读取 读图像文件的函数格式: a=imread(路径、文件名及文件后缀 ) ,如 i=imread(e:image.bmp ) 其含义:将 e 盘中的 bmp 文件 image 赋给变量 i,bmp(windows bitmap)为 位图文件。 3、得到的窗口如图 6.1,文件菜单里包括:打开,保存,退出按钮;图像处理 菜单里包括:sobel 算子、robert 算子、priwitt 算子、laplacian 算子、 canny 算子功能相应的按钮,分别为 sobel、robert、priwitt、laplacian、canny。 15 图 6.1 4、打开图片信息:点击文件菜单里的打开选择所要打开文件夹里的图片,则有 如图 6.2 所示。 图 6.2 16 5、图像边缘检测:点击图像处理菜单,选择里面的算子所对应的按钮进行操作, 然后选择文件菜单里的保存按钮保存图片,保存到相应的文件夹,则得到的图 如图 6.3 所示。 图 6.3 6、退出:若要退出,点击文件菜单里的退出按钮,则可退出图像处理界面。 17 设计总结设计总结 通过分析几种应用于数字图像处理中的边缘检测算子,根据它们在实践中 的应用结果进行研究,主要包括: sobel 边缘算子、robert 边缘算子、prewitt 边缘算子、laplacian 算子、canny 边缘算子对图像的边缘检测。 sobel 算子:根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这 一现象检测边缘。提供较为精确的边缘方向信息,边缘定位精度不够高。当对 精度要求不是很高时,是一种较为常用的边缘检测方法。 robert 算子:采用对角线方向相邻两像素之差表示信号的突变,检测水平和 垂直方向边缘的性能好于斜线方向,定位精度比较高,检测出的边缘较细。 prewitt 算子:凡灰度新值大于或等于阈值的像素点都是边缘点。即选择 适当的阈值 t,若 p(i,j)t,则(i,j)为边缘点,p(i,j)为边缘图像。这种判 定是欠合理的,会造成边缘点的误判。检测出的边缘比较粗,定位精度低,容 易损失角点。 laplacian 算子:是二阶微分算子,对图像中的阶跃性边缘点定位准确,但 会丢失一部分边缘的方向信息,造成一些不连续的检测边缘。 canny 算子:采用高斯函数对图像进行平滑处理,该算子也将一些高频边缘 平滑掉,造成边缘丢失,采用了双阈值算法检测和连接边缘,边缘的连续性较 好。 通过这次数字图像课程设计,让我可以熟悉 matlab 这个软件。matlab 在工 业方面的应用很广泛,我希望能有机会更深刻的学习理解它。 在指导教师的指导下,我顺利的完成了这次数字图像的课程设计,课设题目 有点难度,但对我们的课程学习,和知识的运用有着很好的作用。总之,我认 为这次课程设计是不错的,收获也是丰富的。 18 参考资料参考资料 1 朱虹. 数字图像处理基础m. 北京: 科学出版社. 2005.4:217-220 2余成波. 数字图像处理及 matlab 实现m. 重庆: 重庆大学出版 社. 2003.7:356-359 3深洁,杜宇人,高浩军.图像边缘检测技术研究j.信息技术,2005(12). 4尹建媛. 图像处理中边缘检测算法的研究j. 科技信息. 2008,(4):30-32 5崔屹数字图像处理技术与应用m北京:电子工业出版社,1997:35- 39 6 王予生,卜佳俊,陈纯.一种基于积分变换的边缘检测算法j. 中国图象图 形学报. 2002,7(2):145149 19 20 致谢致谢 通过两周的的努力,我的课程设计终于完成了。在整个课程设计中,我在学 习上和思想上都受益非浅,这除了自身的努力外,与指导的老师、同学和朋友 的关心、支持和鼓励是分不开的。 在课程设计的编写过程中, 指导老师倾注了大量的心血,一遍又一遍地指 出每次编程里的具体问题,详细讲解课题,你的细心指导,严格把关,循循善 诱,在此我表示衷心感谢。同时我还要感谢在我做课设期间给予我帮助的同学 们,没有你们的帮助,我的课设不会那么顺利。 做课程设计是一次再系统的学习,让我们巩固了我们所学的知识,让我们以 后能更好的运用于实践打下了一定基础。同时课程设计的的完成,让我在其中 学到了许多,尤其是学会了帮助合作,懂得了帮助合作造就的效益和成果。在 这里再次感谢帮助我的的同学,还有对我们精心指导的老师! 21 附录附录 源程序: function varargout = mywork(varargin) % mywork matlab code for mywork.fig % mywork, by itself, creates a new mywork or raises the existing % singleton*. % % h = mywork returns the handle to a new mywork or the handle to % the existing singleton*. % % mywork(callback,hobject,eventdata,handles,.) calls the local % function named callback in mywork.m with the given input arguments. % % mywork(property,value,.) creates a new mywork or raises the % existing singleton*. starting from the left, property value pairs are % applied to the gui before mywork_openingfcn gets called. an % unrecognized property name or invalid value makes property application % stop. all inputs are passed to mywork_openingfcn via varargin. % % *see gui options on guides tools menu. choose “gui allows only one 22 % instance to run (singleton)“. % % see also: guide, guidata, guihandles % edit the above text to modify the response to help mywork % last modified by guide v2.5 08-jan-2013 20:09:06 % begin initialization code - do not edit gui_singleton = 1; gui_state = struct(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 % end initialization code - do not edit % - executes just before mywork is made visible. 23 function mywork_openingfcn(hobject, eventdata, handles, varargin) setappdata(handles.figure_mywork,img_src,0); % this function has no output args, see outputfcn. % hobject handle to figure % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) % varargin command line arguments to mywork (see varargin) % choose default command line output for mywork handles.output = hobject; % update handles structure guidata(hobject, handles); % uiwait makes mywork wait for user response (see uiresume) % uiwait(handles.figure_mywork); % - outputs from this function are returned to the command line. function varargout = mywork_outputfcn(hobject, eventdata, handles) % varargout cell array for returning output args (see varargout); % hobject handle to figure % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) % get default command line output from handles structure varargout1 = handles.output; 24 % - - function m_file_callback(hobject, eventdata, handles) % hobject handle to m_file (see gcbo) % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) % - - 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;%将文件名和目录名组合成一个完整的路径 img_src=imread(fpath);%用imread读入图片,并用imshow在axes_src上显示 imshow(img_src); title(原图); setappdata(handles.figure_mywork,img_src,img_src); % hobject handle to m_file_open (see gcbo) % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) % - 25 - function m_file_save_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;%将文件名和目录名组合成一个完整的路径 img_src=imread(fpath);imshow(img_src); img_src=getappdata(handles.figure_mywork,img_src); % hobject handle to m_file_save (see gcbo) % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) % - - function m_file_exit_callback(hobject, eventdata, handles) close(handles.figure_mywork); % hobject handle to m_file_exit (see gcbo) % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) % - - function m_image_callback(hobject, eventdata, handles) % hobject handle to m_image (see gcbo) 26 % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) % - - 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 -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); bw = im2bw(grad,level); % 用阈值分割梯度图像 imshow(bw); % 显示分割后的图像即边缘图像 title(sobel) % hobject handle to m_sobel (see gcbo) % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) 27 % - - 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方向的模板 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); % 显示分割后的图像即边缘图像 title(roberts) % hobject handle to m_roberts (see gcbo) % eventdata reserved - to be defined in a future version of matlab % handles structure with handles and user data (see guidata) % - - function m_priwitt_callback(hobject, eventdata, handles) img_src=getappdata(handles.figure_mywork,img_src); a=img_src; 28 axes(handles
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 十不干考试题及答案
- 2025版高三政治一轮复习每课一测八财政与税收
- 衛生管理倫理與法律試題
- 文化建设2024年西医临床试题及答案
- 考前必看临床试题及答案
- 心理咨询师考试的案例研究方法试题及答案
- 激光技术的概念及其发展历程试题及答案
- 药物过敏反应的识别与处理试题及答案
- 卫生管理职业素养考核试题及答案
- 2025年-吉林建筑安全员-A证考试题库及答案
- 第四章 经典营销知识框架
- 江西省南昌市2023-2024学年八年级下学期期中英语试题(含听力)【含答案解析】
- 震雄注塑机Ai操作说明书
- 【正版授权】 IEC 60335-2-40:2022 EN-FR Household and similar electrical appliances - Safety - Part 2-40: Particular requirements for electrical heat pumps,air-conditioners and dehumidifiers
- 2024年郑州轨道工程职业学院单招职业适应性测试题库参考答案
- 2024年四川省成都市龙泉驿区中考数学二诊试卷(含答案)
- (2024版)机动车查验员理论知识考试题库及答案
- 铁路机务知识培训课件
- 2024智能AI中台白皮书
- 《万以内数的认识》大单元整体设计
- 铝加工(深井铸造)企业重点事项解读(米)
评论
0/150
提交评论