图像边缘检测系统的设计与实现.docx
- 文档编号:6931858
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:30
- 大小:955.52KB
图像边缘检测系统的设计与实现.docx
《图像边缘检测系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《图像边缘检测系统的设计与实现.docx(30页珍藏版)》请在冰点文库上搜索。
图像边缘检测系统的设计与实现
大学
本科生毕业设计(论文)
题目:
图像边缘检测系统的设计与实现
姓名:
林汉龙
学号:
210791431
系别:
计算机工程系
专业:
计算机科学与技术
年级:
2007级
指导教师:
明志
2011年4月20日
独创性声明
本毕业设计(论文)是我个人在导师指导下完成的。
文中引用他人研究成果的部分已在标注中说明;其他同志对本设计(论文)的启发和贡献均已在辞中体现;其它容与成果为本人独立完成。
特此声明。
论文作者签名:
日期:
关于论文使用授权的说明
本人完全了解大学有关保留、使用学位论文的规定,即:
学院有权保留送交论文的印刷本、复印件和电子版本,允许论文被查阅和借阅;学院可以公布论文的全部或部分容,可以采用影印、缩印、数字化或其他复制手段保存论文。
的论文在解密后应遵守此规定。
论文作者签名:
指导教师签名:
日期:
图像边缘检测系统的设计与实现
摘要
在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。
它在图像识别、图像分割、图像增强以与图像压缩等的领域中都有较为广泛的应用,这也是它们的基础。
图像边缘检测的手段多种多样。
但是,其框架不外乎两种,即传统的基于图像亮度特征的算法和基于小波的多尺度边缘检测算法。
对于基于亮度的算法,是研究时间最久,理论发展最成熟的方法,它主要是通过一些差分算子,由图像的亮度计算其梯度的变化,从而检测出边缘,主要有Robert、Laplace、Sobel、Canny等算子。
这些算法现在已经发展的比较成熟了。
再有一类就是随这小波理论的发展和成熟而兴起的基于小波变换的多尺度的图像边缘检测算法。
它利用小波变换,检测出图像的在行方向上和列方向上的跃变边缘,并在一定的规则下形成图像的边缘。
本文主要是基于前一种的经典边缘检测进行研究,并通过编程实现。
本文第一章引言对全文进行叙述;第二章对图像的边缘系统进行了一个一般的描述;接着,在第三章中先介绍了比较经典的检测算子;在第四章中,对第三章的经典边缘检测算法进行编程实现,通过原图像在加入噪声和没有加入噪声的情况下进行边缘检测对比,然后得出结论;第五章对全文进行总结。
相信本文的论述对图像处理中的边缘检测方法研究以与应用具有一定的参考价值。
关键字:
图像处理,边缘检测,算法对比
Thedesignandimplementationofimageedgedetectionsystem
Abstract
Inimageprocessing,theedgeoftheimageisageneralcharacteristic,whichiswidelyusedintherecognition,segmentation,intensificationandcompressoftheimage,isoftenappliedtohigh-leveldomain.
Therearemanykindsofwaystodetecttheedge.However,therearetwomainapproachs:
oneisclassicmethodbasedonthegraygradeofeverypixel;theotheroneisbasedonwaveletanditsmulti-scalecharacteristic.Thefirstmethod,whichisgotthelongestresearch,gettheedgeaccordingtothevarietyofthepixelgray.ThemaintechniquesareRobert,Laplace,Sobel,Cannyandalgorithm.Thesecondmethod,whichisbasedonwavelettransform,utilizestheLipschitzexponentcharacterizationofthenoiseandsingularsignalandthenachievethegoalofremovingnoiseanddistillingtherealedgelines.
Thispaperfirstchapterisaprefacetoallcontent.Thesecondchaptertoimageedgesmadeageneraloverview,Then,inthethirdchapterfirstintroducedmoreclassicdetectionoperators,Inthefourthchapter,forthethirdchapterofclassicedgedetectionalgorithmtotheprogramming.Throughtheoriginalimagenoiseanddidnotjoinintojointhenoiseundertheconditionofedgedetectioncontrast,thendrawtheconclusion,Thefifthchapteroffull-textweresummarizedinthispaper.
I’msurethefollowingpresentationisbenefitforresearchandapplicationsofimageedgedetection.
Keywords:
imageprocessing,edgedetection,Algorithmcontrast
第1章绪论
1.1课题研究背景与意义
在很早以前,为了进行消息的交流,人类就开始了对图像的研究,对图像的传输,并利用计算机进行图像处理,改善图像质量。
图像技术的发展真正开始于上世纪60年代末,到现在图像处理技术已经得到很大程度的提高,并有效的在军事和医疗卫生技术方面发挥着重要的作用。
可见,图像的技术的重要性。
另外它也在其他领域中发挥着不可或缺的重要作用。
边缘是到处存在的,可以说生活中随处可见,房屋的边缘,路边树木的边缘等。
图像同样有边缘。
而且边缘是一图像中一个很重要的特征。
人可以通过肉眼来识别一图片的边缘,这是一件很简单的事情。
但如果用计算机来识别图像边缘,这就不是一件容易的事。
虽然目前计算机得到空前的发展,有先进的硬件支持,但是直接拿一图片让计算机来识别图片的边缘还是不大可能实现的。
这里给出边缘的定义。
所谓边缘,是指图像中灰度发生急剧变化的区域,或者说是指周围像素灰度有阶跃变化或屋顶变化的那些像素的集合[1]。
边缘广泛存在于图像中的物体与背景之间、物体与物体之间。
因此,它是图像分割所依赖的重要特征[2]。
根据灰度变化的激烈程度,常将边缘划分为屋顶状与阶跃状两种类型。
阶跃状两边像素的灰度值明显的不同,而屋顶状是位于灰度值从增加到减小的变化的转折点[3]。
边缘检测技术是图像处理和计算机视觉等领域最基本的技术,如何快速、准确的提取图像边缘信息一直是一个研究的热点,边缘检测是图像分割的核心容。
目前已经研究出有了多种算法对图像进行图像检测,这些算法都有其各自的特点,既有有各自的优点也有各自的局限与不足之处,特别是受噪声的影响,所以图像边缘检测还有很大的研究与发展空间。
1.2边缘检测应用价值
在对图像处理研究中,大量工作是对图像、图形的处理,包括数字图像的处理、储存、传输等。
多媒体技术、计算机视觉和计算机模式识别更是已经越来越普遍地应用于人们的生活当中[4]。
在整个研究过程中,图像边缘具有的信息可以说是一图片的精华,图像边缘含有无法用肉眼来获取的信息,对于图像分析处理过程中图像边缘的确定与提取就显得非常重要。
如果能完整准确得到图像边缘,那么对于图像分析的步骤就可以简化。
只有精确的图像边缘检测才能真正实现机器人视觉与图像测量、卫星遥感技术、精确制导等技术。
图像边缘边缘检测在图像处理中主要应用是图像分割、图象识别和纹理分析。
不管是图像识别还是处理图像,无论是为了何种目的,第一步都是对含有大量信息的图像进行分解,分解成更容易处理的成分。
图像分割是将图像中有意义的特征提取出来,其在数字识别系统中,图像边缘提取占据着重要地位,这项技术位于系统的最底层,为其他模块的运行提供重要信息。
图像边缘的提取依然作为计算机视觉领域最经典的的研究课题而倍受重视。
1.3噪声的影响
噪声对于人的影响,可以理解为“妨碍人们感觉器官对所接收的信源信息理解的因素”。
噪声对图像处理同样具有影响。
如一灰度图片,其平面亮度分布假定为f(x,y),那么对其接收起干扰作用的亮度分布R(x,y)即可称为图像噪声。
如以前的黑白电视受干扰出现的片花。
由于各种原因,图像总是受到随机噪声的干扰,可以说噪声无处不在。
经典的边缘检测方法由于引入了各种形式的微分运算,从而必然引起对噪声的极度敏感,执行边缘检测的结果常常是把噪声当作边缘点检测出来,而真正的边缘也由于受到噪声干扰而没有检测出来。
因而对于有噪声图像来说,一种好的边缘检测方法应该具有良好的噪声抑制能力,同时又有完备的边缘保持特性。
1.4论文结构安排
第1章绪论:
介绍选题背景和意义、边缘检测的应用、噪声的影响以与论文的结构安排。
在本章中主要介绍边缘检测背景以与作用。
第2章系统分析:
对系统需求以与功能进行描述,还对系统的工作流程做了一些介绍。
第3章系统设计:
对边缘检测的概要设计以与详细设计的介绍,简单介绍五种边缘检测算法。
在算法的基础上设计边缘检测系统并给出系统的界面效果图。
第4章系统的实现:
对系统实现过程讲解以与对系统的效果进行展示,同时给出实验数据,并对实验数据比对分析,比较不同算法的优缺点以与着重讲解加入随机噪声下的抗噪声功能。
第2章系统分析
2.1系统的需求分析
在目前,图片处理的技术越来越普与,图像处理技术就越显重要。
人类传递信息的主要媒介主要是语音和图像。
现在对图像处理技术的需求越来越大,相对语音技术成熟的时候,人们开始研究图像处理的技术,如车牌识别、指纹识别以与医学上的识别技术。
这些技术的基础归根结底是图像识别,由于这些技术主要是用到图象的边缘信息,所以图像的边缘检测尤为重要。
数字图像处理技术包括图像信息的获取、图像信息的存储、图像信息的传送、数字图像处理、图像的输出和显示。
现在这些技术不仅仅只是用电脑进行些娱乐操作如看图片、视频等,它们已经应用于各行各业了。
例如:
物理化学中的结晶分析、光谱分析;生物和医学中的细胞分析、X光片、CT片等;还有地质中地图绘制、资源探测;以与气象的云图分析等等。
而对这些图像进行研究处理的第一步都是边缘检测,因此边缘检测的研究变得很重要。
尤其是选择一种好的边缘检测方法更是重要。
而越好的边缘检测算法对于抗噪声的要求就越高。
所以本文主要介绍边缘检测系统实现过程,本系统主要就是边缘检测算法的实现,另外加入噪声经行各种算法的对比。
在系统中主要功能有24位图转化成256位图、重新加载图片以与最重要的边缘检测算法实现模块,另外加入两种噪声对边缘检测算法进行验证。
主要实现算法包括Sobel算子、Prewitt算子、Roberts算子、Krisch算子以与拉普拉斯算子等,加入随机噪声与椒盐噪声。
通过以上实现系统的具体设计,同时对系统进行加强。
2.2系统功能模块分析
系统主要包括以下模块:
读取读片模块、保存图片模块、另存为模块、重新加载模块、边缘检测算法实现模块、24真彩色位图转化模块、加入噪声模块。
(1)读取读片模块
边缘检测系统可以读取BMP格式图片并显示在系统的工作区域,读取的BMP包括24位真彩色、256位图和8位图,目前格式仅支持BMP。
(2)保存模块(另存为模块):
可以保存对图片进行边缘检测后的图片,保存的图片格式是BMP,包括BMP格式的多种方式,24位真彩色与256位图。
(3)重新加载模块
当图片进行操作改动后(错误的操作以与是对某图像进行边缘检测),可以恢复到刚刚读取图片到工作区域的状态或者最近保存后的状态。
(4)24位图转化模块
24位图转换成256位图的,在某些算法仅支持256位图情况下可以将24位真彩色转换成256位图,再进行边缘检测。
(5)边缘检测模块
边缘检测模块是系统中最重要模块,包括了5种方法的边缘检测。
包括:
Sobel、Krisch、Laplace、Prewitt、Roberts。
此模块就是用于对图像的边缘检测所需的,在进行边缘检测后可以进行其他的图像处理。
(6)噪声模块
边缘检测受多种因素影响,但是噪声因素则比较普遍,此版块加入随机噪声与椒盐噪声用于检测上述五种算子的抗噪性。
(7)帮助模块
帮助模块,只是一个子程序,无任何功能在其中。
可以在里面更改版本号以与加入作者信息等。
2.3系统工作流程分析
系统工作流程较为简单,功能用于对图像进行边缘检测并加入噪声,工作流程并不复杂。
双击ch1_1.exe文件,系统界面就出现了,点击文件,然后选择打开,打开BMP格式的图片文件,此时图片就会显示在工作区域;先在没有加入噪声的情况下进行边缘检测,再在加入噪声的情况经行边缘检测。
可以保存系统处理过的图像,在经过一次图像边缘检测处理完后,可以运用重新加载功能让图像返回到初始化的状态,再进行其他操作。
在进行边缘检测时某些算法无法识别24真彩色图片,所以在检测前可先进行24真彩色转化成位图的操作(即24→灰度图),系统可以开多个窗口用不同算法进行操作,这样可以方便进行算法对比,也方便观察加入噪声后的影响。
还可以选择查看栏中的,把状态栏或者工具栏打勾去掉,这样就可以显示/隐藏状态栏或者工具栏。
在帮助子程序中可以查看本系统的版本号。
主要模块的系统过程如图2-1所
图2-1主要模块系统工作流程
第3章系统设计
3.1系统概要设计
3.1.1总体描述
系统可以选择5种边缘检测算法对没有加入噪声的图像经行边缘检测,以与对加入2种不同噪声的图像进行边缘检测,并可以保存处理后的效果图;还可以重新加载图像重新进行操作。
边缘检测系统可在在WindowsXP与XP版本以下的系统进行运行。
由于系统借助MFC来设计界面故在许多没有安装MFC插件的电脑上运行会出错。
编程方面借助面向对象C++来实现系统的编程。
系统只是简单的实现其检测功能与加入噪声功能,所以较为简单。
3.1.2功能叙述
本系统的功能包括文件、编辑、边缘与轮廓、加噪声、查看、窗口、帮助子程序,在这里先介绍下本系统的总体功能,如图3-1所示。
图3-1总体功能
文件中包含了打开、关闭、保存、另存为、重新加载、24→灰度图、打印、打印预览、打印设置、退出功能;编辑中包含了撤销、剪切、复制、粘贴功能;边缘与轮廓含有算子Roberts算子、Sobel算子、Prewitt算子、Kirsch算子、laplace算子;加噪声含有随机噪声、椒盐噪声;查看包含了工具栏、状态栏;窗口包含了新建窗口、层叠、平铺、排列图标;帮助含关于ch1_1。
每个模块的文件又有子模块,则现在对每个子模块经行分别介绍。
文件子程序如图3-2所示。
打开、关闭、保存、另存为、重新加载等均为公用程序。
打开、保存、另存为格式是BMP格式。
打印、打印预览、打印设置是用来打印图像或者查看打印出来效果图。
在文件中可以保存最近打开文件的记录,方便重复操作。
图3-2文件子程序
编辑子程序,如图3-3所示;其中剪切、复制为公用程序。
撤销:
是只撤销一个步骤,不撤销到初始状态。
剪切、复制也是为了方便图像的复制操作功能。
粘贴:
粘贴图像到新的子窗口。
该功能都是为了方便操作,提高效率。
图3-3编辑子程序
查看子程序,如图3-4所示。
可以选择开关显示工具栏、状态栏。
图3-4查看子程序
边缘与轮廓子程序,如图3-5所示。
包含有5种不同的边缘检测算子,边缘检测包含的算子有Roberts算子、Sobel算子、Prewitt算子、Kirsch算子、laplace算子。
边缘检测算法还有许多,因为时间与能力并为全部体现。
图3-5边缘与轮廓子程序
帮助子程序,如图3-6,帮助子程序只是显示版本号。
这里只是显示了版本的更新,在后期的加入其它功能或者更新功能,将在这里显示版本号的更新。
图3-6帮助子程序
加噪声子程序,如图3-7,噪声包含随机噪声与椒盐噪声。
这里加入这两种噪声是为了观察上述算子在噪声影响下的表现。
图3-7加噪声子程序
窗口子程序,如图3-8,窗口提供新建窗口功能,还加入层叠、平铺、排列图标的功能,这些功能可以用于排列窗口,使界面更美观与整洁。
图3-8窗口子程序
3.1.3系统界面设计
系统实现的工具:
MicrosoftVisualStudio2005,以与使用到的相关技术。
MFC,(微软基础类MicrosoftFoundationClasses)实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。
VC++是WinDOS下开发人员使用的专业C++SDK(StandardSoftwareDevelopKit,专业软件开发平台)。
MFC就是挂在它之上的一个辅助软件开发包。
MFC作为与VC++血肉相连的部分MFC是WinAPI与C++的结合[5]。
MFC是微软封装了的API,Windows作为一个提供功能强大的应用程序接口编程的操作系统,这些措施的确方便了许多程序员。
传统的Win32开发(直接使用windows的接口函数API)对于程序员来说非常的困难,因为API函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。
MFC是面向对象程序设计与Applicationframework的完美结合,他将传统的API进行了分类封装,并且为你创建了程序的一般框架[5]。
面向对象的基本概念:
(1)对象:
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为:
对象具有状态同时对象还有操作,对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。
(3)类:
具有一样或相似性质的对象的抽象就是类。
因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
(4)类的结构:
通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
(5)消息和方法:
对象之间进行通信的结构叫做消息。
在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息[6]。
面向对象的特征有如下特征:
(1)对象唯一性:
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象;
(2)抽象性:
指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类;
(3)继承性:
子类自动共享父类数据结构和方法的机制,这是类之间的一种关系;
(4)多态性(多形性):
是指一样的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。
不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性[6]。
系统借助MFC来设计系统的基本界面,算法的实现则借助面向对象编程技术C++来编写。
最后具体系统的功能界面图如图3-9所示。
图3-9未加载图片界面
图3-10系统界面设计效果图
3.2系统详细设计
3.2.1主要算法分析
目前,边缘检测方法包括边缘算子法、曲面拟合法、模板匹配法和门限化法等[7],其中Sobel、Roberts、Prewitt、Kirsch与LOG等边缘检测算子最为经典。
近年来,随着数学理论和人工智能的发展,又出现了许多新的边缘检测方法,如基于灰度关联分析的边缘检测法以与基于小波变换、数学形态学和模糊理论的边缘检测法等[8]。
上述方法中没有一种具有通用性和广泛的适应性,因此研究边缘检测具有一定的现实意义。
下面介绍几种经典的边缘检测算法。
(1)Roberts算子:
由Roberts提出是一种利用局部差分算子寻找边缘的算子。
公式
(1)是Roberts的定义[9]
公式(3-1)
同时Roberts的模板是2×2的,Roberts是一种平方根运算。
(2)Prewitt算子:
Prewitt是模板运算,不过由2×2扩大到3×3来计算差分算子。
公式
(2)Prewitt算子定义为[9]
公式(3-2)
Prewitt算子与Soble算子不同的地方在于没有把重点放在接近模板中心的像素点。
Prewitt算子首先进行邻域平均或加权平均,然后进行微分,就抑制了噪声,但容易出现边缘模糊现象。
(3)Soble算子:
Sobel是在Prewitt算子的基础上,对4-领域采用了带权的方法计算,同时Sobel也是3×3的模板运算。
公式(3)Sobel算子定义如下[9]
公式(3-3)
公式(3-4)
理论上Sobel算子可以轻易在空间上实现,Sobel边缘检测器不但可以产生较好的边缘检测效果,而且,因为Sobel算子引入了局部平均,可使其受噪声的影响减小。
当使用大的邻域时,抗噪声特性会更好,但是这样做会增加计算量,并且得到的边缘也较粗。
Sobel算子利用像素点上下、左右相邻点的灰度加权算法,根据在边缘点处达到极值这一现象进行边缘检测。
因此Sobel算子对噪声具有平滑作用,提供较为精确的边缘方向信息,但是,正是由于局部平均的影响,它同时也会检测出许多伪边缘,且边缘定位精度不够高。
所以,当对精度要求不是很高时,这是一种较为常用的边缘检测方法。
(4)拉普拉斯算子(Laplace)
拉普拉斯定义为:
公式(3-5)
拉普拉斯也是采用模板计算,它有两种算子,还有一种常用的5×5的模板[10]。
(5)Krisch、算子
Krisch是方向算子。
Krisch边缘检测算子采用八个卷积核,共有八个3×3卷积核[11]。
取其中的最大值输出,它可以检测各个方向上的边缘,减少了由于平均而造成的细节丢失但同时增加了计算量。
边缘检测的基本思想是首先利用边缘增强算子,突出图像中的局部边缘,然后定义像素中的“边缘强度”,通过设置门限的方法提取边缘点集。
由于边缘、轮廓在一幅图像中常常具有任意的方向,所以需要找到一些各项同性的检测算子,它们任意方向的边缘、轮廓都具有一样的检测能力[12]。
3.2.2图像读写功能实现
首先要进行图像的读取,主要是通过文档类的成员函数OnOpenDocument进行实现,其主要代码如下:
BOOLCCh1_1Doc:
:
OnOpenDocument(LPCTSTRlpszPathName)
{
CFilefile;
CFileExceptionfe;
//打开文件
if(!
file.Open(lpszPathName,CFile:
:
modeRead|CFile:
:
shareDenyWrite,&fe))
{//失败
ReportSaveLoadException(lpszPathName,&fe,FALSE,AFX_IDP_FAILED_TO_OPEN_DOC);
//返回FALSE
(继12页)
returnFALSE;
}
DeleteContents();
//更改光标形状
BeginWaitCursor();
//尝试调用ReadDIBFile()读取图像
TRY
{
m_hD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 边缘 检测 系统 设计 实现