




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学实践教学*兰州理工大学兰州理工大学计算机与通信学院图像处理图像处理综合训练综合训练题 目: 图像边缘检测课程设计 目目 录录摘 要.1一、前言.2二、算法分析与描述.3三、详细设计过程.8四、调试过程中出现的问题及相应解决办法.10五、程序运行截图及其说明.11六、简单操作手册.14设计总结.16参考资料.17致谢.18附录.191摘摘 要要 在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础。边缘检测是图像处理与分析中最基础的内容之一,也是至今仍没有得到圆
2、满解决的一类问题。图像的边缘包含了图像的位置、轮廓等特征,是图像的基本特征之一,广泛地应用于特征描述、图像分割、图像增强、图像复原、模式识别、图像压缩等图像分析和处理中。因此,图像边缘和轮廓特征的检测与提取方法,一直是图像处理与分析技术中的研究热点,新理论、新方法不断涌现。本文研究了一些边缘检测算法,包括传统的roberts、sobel、prewitt、canny 等算法。经典边缘检测方法的抗噪声性能都较差,解决该问题的主要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的目的,所以阈值的选取显得尤为重要。传统方法中的阈值都是通过实验确定的,没有统一的阈值选取方法。本文利用边缘的最
3、大后验概率估计,介绍一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值。文章中关于这些方法都有较详细的介绍,以及算法的实现步骤,对算法均进行了仿真实验。关键词:边缘检测; 图像处理; matlab; sobel; 检测算法21、前言前言 随着信息技术的不断发展和用户需求的不断增长,嵌入式系统逐渐走进国民生产的方方面面,其应用也日益广泛。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 嵌入式系统的应用领域也非常广泛。嵌入式系统几乎包括了生活中的所有电器设备,如掌上 pda 、移动计算设备、
4、手机上网、数字电视、多媒体、汽车、数字相机、电梯、空调、安全系统、自动售货机、工业自动化仪表与医疗仪器等。 而图像边缘检测则是图像处理中非常基础但是及其重要步骤。边缘是两个不同区域之间的边界。图像边缘检测是图像处理,图像分析,模式识别等一系列图像处理过程中最重要的步骤。目前,学界上已经有许多种不同点的方法来实现边缘检测的功能,比如说差分法(kirsch,1971)和曲线拟合法(haralick,1984) 。传统的边缘检测方法,比如 sobel、prewitt、kirsch 算法,通过计算第一阶方向导数来决定边缘的位置。零点交叉边缘检测法(bovik,1998)运用了二阶导数和拉普拉斯算符。而
5、 canny 算法(canny,1986)是目前学界最流行并且应用最广泛的的高斯边缘检测算法。尽管高斯检测算法(yuksel,2007)相对来说有更好的性能表现,但是所需要的计算也比传统基于求导的检测算法复杂的多。 近些年来,对于图像处理在许多不同的科学和工程领域应用的研究越来越火热。在嵌入式系统上实现图像处理能够很好的解决在一般 pc 或者工控机上实现图像处理的不足之处,比如说便携性差,功耗大,移动性,灵活性不强等。同时加之以集成度高,与网络的耦合也越来越紧密等特点。嵌入式系统将是未来工业控制和其他一些行业的主要发展方向。 3 本文主要阐述了图像边缘检测算法的一些理论,并对检测的效果加以比较
6、,同时介绍了嵌入式系统开发的流程,为图像类嵌入式开发系统开发提出可行的方案。最后设计实现了边缘检测系统。 二、算法分析与描述二、算法分析与描述2.1 roberts 算子由 roberts 提出的算子是一种利用局部差分算子寻找边缘的算子,对于边界陡峭且噪比较小的图像检测效果比较好,它在 22 邻域上计算对角导数,22,=,1,11,1g i jf i jf ijf ijf i jgi,j又称为 roberts 交叉算子。在实际应用中,为简化运算,用梯度函数的 roberts 绝对值来近似:,=,1,11,1g i jf i jf ijf ijf i j用卷积模板,上式变成:,xyg i jgg
7、其中gx和gy由下面图 1 所示的模板计算:图 1 robert 边缘检测算子的模板roberts 算子是该点连续梯度的近似值,而不是所预期的点处的近似值。由上面两个卷积算子对图像运算后,代入 2 式,可求得图像的梯度幅度值gi,j,然后选取适当的门限th,作如下判断:gi,jth,i,j为阶跃状边缘点,gi,j为一个二值图像,也就是图像的边缘。由于利用局部差分检测比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出了 prewitt 算子4。4通过分析可知,sobel 算子法对高频成分丰富的图像处理效果好,对中低频成分的图像效果差。2.2 prewitt 算子为在检测边缘的同
8、时减少噪声的影响,prewitt 算子从加大边缘检测算子出发。由 22 扩大到 33 来计算差分算子,所以其卷积模板为图 2 所示:图 2 prewitt 边缘检测算子的模板在图像中的每个像素位置都用这 2 个模板做卷积,prewitt 算子将方向差分运算与局部平均结合起来,表达式如下:1,1,11,11,1,11,1xff xyf x yf xyf xyf x yf xy 1,11,1,11,11,1,1yff xyf xyf xyf xyf xyf xy 根据两式可以计算 prewitt 梯度,选取适当的阈值t,对梯度图像二值化,得到一幅边缘二值图像。采用 prewitt 算子不仅能检测边
9、缘点,而且还能抵制噪声的影响5。通过分析可知,prewitt 算子法对高频成分丰富的图像处理效果好,对中低频成分的图像效果差。2.3 sobel 算子传统的 sobel 图像边缘检测方法,是在图像空间利用两个方向模板与图像进行邻域卷积来完成的。这两个方向模板一个检测垂直边缘,一个检测水平边缘,如图 3 所示。图中,模板内的数字为模板系数,梯度方向与边缘方向总是正交5水平边缘 sobel 算子垂直边缘 sobel 算子图 3 sobel 算子模板元素和窗口像素之间的对应关系(以 33 窗口为例)定义如下:设窗口灰度为: 1,11,1,1,1,11,11,1,1fjkfjkfjkffj kfj k
10、fj kfjkfjkfjk模板卷积计算就是下式求乘积和的过程:11,11,iim nmnfj kf jm kn m 式中,i=1,2 分别代表垂直和水平模板。为模板卷积法边缘检测的输出,ifj k,l为窗口宽度,对 33 窗口,l=1。将两个卷积结果的最大值,赋给2ll图像中对应模板中心位置的像素,作为该像素的新灰度值,即:maxmax,1,2iffj ki 通过分析可知,sobel 算子法对高频成分丰富的图像处理效果好,对中低频成分的图像效果差。2.4 laplacian 算子拉普拉斯算子是二阶导数的二维等效式。函数f(x,y)的拉普拉斯算子公式为:22222fffxy使用差分方程对x和y方
11、向上的二阶偏导数近似如下:22,1,1,22,1,xgfxxf i jf i jxf i jf i jxxf i jf i jf i j6这一近似式是以点fi,j+1为中心的,用j-1替换j得到22,12,1ff i jf i jf i jx它是以点i,j为中心的二阶偏导数的理想近似式,类似地,221,2,1,ff ijf i jf ijx把式(2-3)和式(2-4)合并为一个算子,就成为式(2-5)能用来近似拉普拉斯算子的模板:2010141010 有时候希望邻域中心点具有更大的权值,比如下面式(2-6)的模板就是一种基于这种思想的近似拉普拉斯算子: 21414204141 当拉普拉斯算子输
12、出出现过零点时就表明有边缘存在,其中忽略无意义的过零点(均匀零区)。原则上,过零点的位置精度可以通过线性内插方法精确到子像素分辨率。通过分析可知,它不过由于噪声,以及由噪声引起的边缘两端的不对称性,结果可能不会很精确。2.5 canny 算子canny 检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。检测阶跃边缘的大部分工作集中在寻找能够用于实际图像的梯度数字逼近。由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有的低通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立。图像也受到摄像机噪声和场景中不希望的细节的干扰。图像梯度逼近必须满足两个要求:首先逼近必须能够抑制
13、噪声效应;其次必须尽量精确地确定边缘的位置。抑制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑算子去除了噪声,但却增加了边缘定位的不确定性;反过来,若提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感性。有一种线性算子可以在7抗噪声干扰和精确定位之间提供最佳折衷方案,它就是高斯函数的一阶导数。通过分析可知,采用高斯函数对图像进行平滑处理,因此具有较强的噪声抑制能力;同样该算子也将一些高频边缘平滑掉,造成边缘丢失,采用了双阈值算法检测和连接边缘,边缘的连续性较好。83、详细设计过程详细设计过程roberts 算子、sobel 算子、prewitt 算子的检测效果
14、相差不大,三种算子的检测效果较之 canny 和 log 算子还是存在一定的差距。这三种检测算子的阈值选择范围与 log 和 canny 算子相比要小些。边缘点不够锐利和明确,线边缘检测要好于点边缘检测。总体而言由于 prewitt 算子受噪声影响较小,故检测效果要略好于另外两种。由于 roberts 算子是利用图像的两个对角线的相邻像素之差进行梯度幅值的检测,所以求得的是在差分点处梯度幅值的近似值,并且检测水平和垂直方向边缘的性能好于斜线方向的边缘,检测精度比较高,但容易丢失一部分边缘,同时由于没经过图像平滑计算,因此不能抑制噪声,但该算子对具有陡峭的低噪声图像响应最好。prewitt 算子
15、和 sobel 算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异,因此两者均对噪声具有一定的抑制能力,但这种抗噪能力是通过像素平均来实现的,所以图像产生了一定的模糊,而且还会检测出一些伪边缘,所以检测精度比较低,该算子比较适合用于图像边缘灰度值比较尖锐且图像噪声比较小的情况。canny 算子采用高斯函数对图像进行平滑处理具有较强的去噪能力,容易平滑掉一些边缘信息,边缘定位精度较高。该算子与其它边缘检测算子的不同之处在于,它使用 2 种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘相连时才将弱边缘包含在输出图像中,因此这种方法较其它方法而言不容易被噪声“填充”更容易检测出真正
16、的弱边缘。通过对 lena 图的仿真实验结果可以看出,该算子在上述几种边缘检测算子当中效果最好。边缘定位准确,连续性较好,虚假边缘少且边缘均具有单像素宽度。log 算子首先通过高斯函数对图像进行平滑处理,因此对噪声的抑制作用比较明显,但同时也可能将原有的边缘也平滑了,造成某些边缘无法检测到,比外高斯分布因子的选择对图像边缘检测效果有较大的影响,越大,检测到的图像细节越丰富,但抗噪能力下降,从而出现伪边缘,反之则抗噪能力提9高,但边缘精度下降,易丢失许多真边缘,因此,对于不同图像应选择不同参数。roberts 算子:采用对角线方向相邻两像素之差表示信号的突变,检测水平和垂直方向边缘的性能好于斜线
17、方向,定位精度比较高,但对噪声敏感,检测出的边缘较细。prewitt 算子:对噪声有平滑作用,检测出的边缘比较粗,定位精度低,容易损失角点。sobel 算子:产生的边缘效果较好,对噪声具有平滑作用。但存在伪边缘,边缘比较粗且定位精度低。laplacian 算子:是二阶微分算子,对图像中的阶跃性边缘点定位准确,对噪声非常敏感,丢失一部分边缘的方向信息,造成一些不连续的检测边缘。canny 算子:采用高斯函数对图像进行平滑处理,因此具有较强的噪声抑制能力;同样该算子也将一些高频边缘平滑掉,造成边缘丢失,采用了双阈值算法检测和连接边缘,边缘的连续性较好。104、调试过程中出现的问题及相应解决办法调试
18、过程中出现的问题及相应解决办法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 图像运行过程中出现的错
19、误:应该将代码中的i=rgb2gray();改为i=rgb2gray(i);11 五、程序运行截图及其说明五、程序运行截图及其说明5.1 roberts 算子图像边缘检测截图如图(4)所示 图(4)5.2 prewitt 算子图像边缘检测截图如图(5)所示 图(5)125.3 sobel 算子图像边缘检测如图(6)所示 图(6)5.4 laplacian 算子图像边缘检测如图(7)所示 图(7)135.5 canny 算子图像边缘检测如图(8)所示 图(8)146、简单操作手册简单操作手册 本系统主要是对图像边缘检测中一阶微分算子,二阶微分算子等的实现,以sobel 为例,在程序实现的过程中主
20、要步骤有以下几点:6.1 程序执行的初始界面如图(9)所示 图(9)6.2 打开图象进行 sobel 算子边缘检测界面如图(10)所示 图(10)6.3 经 sobel 算子处理后的图象如图(11)所示15 图(11)6.4 退出程序16设计总结设计总结虽然这次课程设计只有二个星期的时间,但是我们对图像处理的各种方法及应用有了更深的理解,学会了应用 matlab 软件及 gui 来实现界面的操作和编程处理。matlab 是我们在以前和以后的学习工作中都会经常应用到的软件,但是在以前还是对其了解不足,操作不是很了解,在实习之初便因为这个问题而无从下手。于是我们寻找了许多这方面的书籍以及应用网络教
21、程来对其进行学习,逐渐的增强了对 matlab 及 gui 的了解,能够摸索着开始进行编写。实习中也遇到了很多问题,但通过查阅书籍、同学间讨论、请教老师以及网上查找最终能够得以解决,完成这次实习。 通过这次课程设计,对其的一些常见函数以及与图像处理相关的函数都比较了解,并能够应用这些函数来解决图像处理的问题。gui 对于我们是一个新的知识,通过各方面的学习,我们最终对 gui 也有了比较深的了解,能够很顺利的应用 gui 来设计出适合并且美观的界面。图像处理是我们这学期的一门很重要的课程,在课上虽然学习了很多知识,但是不经过自己动手操作而只看到书上的一些概念和处理的图片并不能很清楚的了解到各种
22、操作的效果,并且不动手操作,知识就只能局限于书本上。经过这次课程设计,不但能够让我们再次复习了本学期所学的图像处理的知识,加深了对这些知识的记忆,并且让我们对图像处理的各种处理方法如 sobel 算子、robert 算子、priwitt 算子、拉普拉斯算子、canny 等对图像产生的效果有了更加直观的了解,不但加深了记忆也能因此更加了解各种处理方法的应用,可以用 matlab 软件来对这些处理来实现。 这次课程设计要实现的内容比较多,其中有一些易操作的也有一些比较复杂的,在实习过程中也会遇到一些难以突破的问题,但是在这个过程中需要我们耐心的学习,一步一步通过各种途经学习到解决的方法,也培养了我
23、们的耐心和学习的能力。这次是两人一组的实习,因此合理的分工合作也是很重要的,通过实习也培养了我们之间分工协作互帮互助的精神。 总体来说,我们的这次课程设计还是比较成功的,较为成功的完成了我们的边缘图像检测,并且达到到了我们这次课程设计的目的。17 参考资料参考资料1 朱虹. 数字图像处理基础m. 科学出版社, 20052 r c.gonzalez, r e.woods 著,阮秋琦,阮宇智等译.数字图像处理(第 2 版).北京:电子工业出版社,20033 k.r.castleman. 数字图像处理.北京:电子工业出版社,20024 章毓晋.图像处理与分析-图像工程(上册),清华大学,20015
24、何斌等编著.visual c+数字图像处理.人民邮电出版社,2002 6 张宏林编著.visual c+数字图像模式识别技术及工程实践.人民邮电出版社,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.
25、北京: 冶金工业出版社, 2004: 25-44.11 王文新.大象征收过路费. 2006.5.2118致谢致谢 在这次课程设计的设计过程中,我得到了许多人的帮助。 首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。 其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的代码难题,在一个个小问题上给了我很大的帮助。 最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。19附录附录func
26、tion varargout = mywork(varargin) 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 & ischar(varargin1) gui_state.gui_callback = str2func(var
27、argin1);end if nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);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 =
28、 mywork_outputfcn(hobject, eventdata, handles) varargout1 = handles.output;function m_file_callback(hobject, eventdata, handles)function m_file_open_callback(hobject, eventdata, handles) filename, pathname = uigetfile( . 20 *.bmp;*.jpg;*.png;*.jpeg, image files (*.bmp, *.jpg, *.png, *.jpeg); . *.*,
29、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);function m_file_save_callback(hobject, e
30、ventdata, 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_s
31、rc=getappdata(handles.figure_mywork,img_src);function m_file_exit_callback(hobject, 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=g
32、etappdata(handles.figure_mywork,img_src);a=img_src;axes(handles.axes_src);imshow(a);title(原图);21y_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);
33、 % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值axes(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(hand
34、les.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)22 function m_priwitt_callback(hobject, eventdata, handles
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农村住宅购买合同
- 2025农业科技租赁合同范本
- 2025年乡镇药房考试题及答案
- 物体压强题目及答案高中
- 2025餐厅转让合同样本
- 营销渠道专业知识培训课件
- 营销案例知识培训
- 2025年甾体药物项目建议书
- 物料仓库培训试题及答案
- 2024人教版七年级生物上册期末复习知识点提纲(填空版+答案版)
- 马兰士CD6004 使用说明书
- GB/T 33636-2023气动用于塑料管的插入式管接头
- 中国哲学经典著作导读知到章节答案智慧树2023年西安交通大学
- 人类基因组计划
- 2018年黑龙江成人高考专升本艺术概论真题(含答案)
- 2023年泰州市高级教师职称考试试题
- 现代设计理论与方法(上)
- 业余足球比赛技术统计表
- GB/T 5907.4-2015消防词汇第4部分:火灾调查
- GB 31701-2015婴幼儿及儿童纺织产品安全技术规范
- 社情民意写作基本知识要点课件
评论
0/150
提交评论