本科毕业设计--基于opencv的图像轮廓提取方法的实现.doc
《本科毕业设计--基于opencv的图像轮廓提取方法的实现.doc》由会员分享,可在线阅读,更多相关《本科毕业设计--基于opencv的图像轮廓提取方法的实现.doc(29页珍藏版)》请在咨信网上搜索。
1、四川大学锦江学院毕业论文(设计)基于OpenCV的图像轮廓提取的实现软件工程专业 学生:杨荣臻 指导教师:孔令寅【摘 要】 OpenCV是近几年来推出的一个开源的、免费的计算机视觉库.OpenCV的目标是构建一个简单易用的计算机视觉框架,利用它所包含的函数帮助开发人员方便快捷地实现图像处理和视频处理。而图像的轮廓是图像的一种基本特征,携带着一幅图像大部分的信息,经常被应用到较高层次的图像应用中。它在图像分离,图像识别和图像压缩等领域有很广泛的应用,也是图像处理的基础。本文首先阐述了OpenCV的特点和结构,然后采用一系列的可行性算法来获取图像特征参数并通过各种算子(Sobel算子,Laplac
2、e算子,Canny算子)对图像的灰度进行分析,调节,用实现对图像的边缘检测和轮廓提取。【关键词】 OpenCV 图像 轮廓提取IThe realization of the image contour extraction based on OpenCV【Abstract】OpenCV is launched an open source in recent years.Free computer vision library. OpenCVs goal is to build a simple and easy to use computer vision framework, functi
3、on to help developers use it contains quick and easy to realize image processing and video processing.And the outline of the image is a basic feature of image, carrying an image, most of the information is often applied to the higher level of the image application.It in image separation, image recog
4、nition and image compression, and other fields have a wide range of applications, is also the basis of image processing.At first, this paper expounds the characteristics and structure of OpenCV, then a series of the feasibility of the algorithm is used to obtain image feature parameters and through
5、a variety of operator (Sobel operator, Laplace operator, Canny operator) analysis of image gray level, adjustment, use of image edge detection and contour extraction.【Key words】 OpenCV Image Contour extraction目录1引言1 1.1 课题背景1 1.2 研究的目的及意义1 1.3 可行性分析22 开发工具及轮廓提取概述32.1 OpenCV3 2.1.1 OpenCV简介3 2.1.2 Op
6、enCV安装及环境搭建32.2 边缘检测4 2.2.1 边缘检测4 2.2.2 边缘检测原理5 2.2.3 边缘检测算子52.3 轮廓提取9 2.3.1轮廓提取目的9 2.3.2 轮廓提取内容93 需求分析103.1 系统功能分析103.2 系统流程图104 总体设计114.1 系统功能要求及说明和实现方法114.2 系统功能模块115 详细设计与实现125.1 图片提取125.2 图像边缘检测155.3 图像轮廓提取186 程序界面20总结与展望24参考文献25致 谢26II1引言1.1 课题背景图像处理在应用及科研方面已经是一个占据相当重要地位的方向,在人们的生活中也有很广泛的应用,图像表
7、示直观且信息丰富,是声音和文字所不能及的。在图像处理方面很多软件公司和科研机构都研究了关于图像处理的软件。而OpenCV在计算机视觉的开发和图像处理中扮演着重要的角色。它为计算机视觉应用开发提供了灵活、功能强大的开发接口,使其成为计算机视觉专业人员所依赖的重要开发工具。它就被广泛用在许多应用领域、产品和研究成果中。1.2 研究目的及意义图像处理,就是对图像信息进行加工来满足人的视觉心理或应用需求的行为。视觉是人类从大自然中获取信息的最主要的手段。据资料统计,人类获取信息时,视觉信息约占60,听觉信息约占20,其他的如味觉信息、触觉信息等约占20。可以知道视觉信息对人类的重要性,然后图像就是人类
8、获取视觉信息的主要造径。随着科学技术的发展和人民生活水平的提高,摄像机的出现和数字图像处理技术的发展,在如今的数字化时代中,越来越引起人们的广泛关注,数字图像处理已经成为必备的基础知识。近年来由于计算机技术的蓬勃发展,图像处理技术也得到了空前的发展和应用。目前,图像处理技术已经广泛应用于工业、军事、医学、交通、农业、天气预报、银行、超市、重要部门的监控报警系统、可视电话、网络传输等等领域,就连人们日常生活中的自拍和游戏也和图像处理有密切的关系。本文主要是对计算机视觉系统的应用,图像轮廓提取技术进行研究。实现表面缺陷的自动检测图像,灰度等级自动分选排序,提高图像的价值有一个非常重要的作用。而影响
9、检测整体水平的重要方面之一是缺陷图像的处理过程,而本文研究的重点图像轮廓提取技术是图像分割、目标区域识别区域实践提取等图像分析处理领域的基础是非常重要的。用非接触式,精度高,能够提供全面的分析识别方法来替代人工视觉,解决图像表面的模式识别和测量问题,是图像加工行业面临的一大难题,也是值得我们长期探讨的科研课题。1.3 可行性分析 技术上的可行性:系统开发采用C+语言进行程序设计,运用OpenCV强大的数字图像处理技术,在Windows平台上设计图像边缘检测和图像轮廓提取的图像处理系统,使用VS2012的开发环境,利用QT的界面管理,给系统提供了高性能的保障。保障了代码的质量,对代码模块有了清晰
10、的管,和对后期代码的修改和扩展提供了很好的支持。综上所述,本系统的设计与开发在技术上都是满足的。经济上的可行性:随着计算机的超速发展,计算机如今已是处于高配置,低价格的时代,而本系统的开发,其应用在游戏,教育,文艺,工业等多个领域有着重要的意义。本系统的运行可以代替人工进行很多繁琐重复的工作,节省物力人力和很多资源,大大提高了生产效率。所以在经济上是可行的1。 运行上的可行性:本系统作为一个小型的图像轮廓提取系统,所需资源无论是从硬件方面还是软件方面都能够满足条件,所以在运行上也是可行的。2开发工具及轮廓提取概述2.1 OpenCV2.1.1 程序流程图 OpenCV 全称 OpenSourc
11、eComputerVisionLibrary,是由Inter公司资助的开源计算机视觉库,它是用C/C+语言编写的,可以实现图像处理和计算机视觉中的很多算法,可以运行在Linux/Windows/Mac等操作系统上。由于OpenCV的源代码是完全开源的,并且编写高效又简洁,很多函数都已经汇编最优化。所以近些年来在国内外的图像处理和相关领域中被广泛的使用,成为了一种流行的图像处理软件。主要应用领域有:1.人机互动2.物体识别3.图象分割4.人脸识别5.动作识别6.运动跟踪7.机器人等。2.1.2 OpenCV安装及环境搭建首先把OpenCV正确的配置到VS开发环境中。设置预先编译的头文件的路径与动
12、态链接库的路径2。第一步:安装OpenCV和环境变量配置计算机- 属性- 高级系统设置-环境变量加入名为OPENCV的变量,值为F:opencvbuild(这里是自己OpenCV安装路径),在Path变量后追加;%OPENCV%x86vc11bin(X86是32位系统,X64是64位系统,vc11是vc2012,vc12是2013)。第二步:在VS2012中新建项目建好工程后,视图-属性管理器,右键Debug,添加新项目属性表,新建名为OpenCVx86.Debug.prop的项目属性表(区分Release的)。双击新建好的OpenCVx86.Debug.props属性表,找到 常规 - VC
13、+目录 - 包含目录 下拉后点开编辑,添加如下几项F:opencvbuildincludeF:opencvbuildincludeopencvF:opencvbuildincludeopencv2确定后,点开库目录,编辑,追加如下2项:F:opencvbuildx86vc11libF:opencvbuildx86vc11staticlib确定后,返回VC+目录,找到 链接器 - 输入 - 附加依赖项。第三步:测试是否配置成功将自己所要显示的图片放到工程下,新建源文件输入以下代码,运行,若看到显示图片就说明配置成功了!如果以后有其他新建项目用到OpenCV,只需要在属性管理器页面导入以上创建的项
14、目属性表即可!2.2 边缘检测2.2.1 边缘检测计算机处理图像有两个目的:第一个是产生更加能够让人观察和识别的图像,第二个是更加能够让计算机自动识别和理解图像3。总之,最终的目的先对大量的图像携带的信息进行分解,通过处理分解出来的最基本的基元从而来处理图像。而边缘检测是计算机视觉和图像处理中的基本问题,边缘检测的目的则是标识图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。图像的边缘是图像最基本的特征。图像边缘指
15、的是周围像素灰度有阶级跳跃的变化或者屋顶变换的像素的集合。边缘的种类有两种,我们通常把它们记作:阶跃性边缘(两边的灰度值有显著的不同)和屋顶状边缘(存在于灰度值从增加到减少的变化转折点),那么怎么分辨图像的边缘呢?图像的边缘其实就是存在在物体与物体,物体与图像背景之间,这些都是我们能用眼睛看见的,可以从宏观上这么说。其实基元与基元之间都存在着边缘,这些是微观方面的说话。所以这都是图像要分割,分离的最基本的特征,我们通过寻找边缘就能分离图像。边缘的种类有两种,我们通常把它们记作:阶跃性边缘(两边的灰度值有显著的不同)和屋顶状边缘(存在于灰度值从增加到减少的变化转折点)。下面是几种类型边缘的截面图
16、。 图2-1理想跃阶式 图2-2斜降式 图2-3斜升式 图2-4 脉冲式 图2-5屋顶式2.2.2 边缘检测原理通过前面的介绍我们也大概的了解到边缘检测的基本概念,我们把边缘定义为图像中灰度发生急剧变化的局域。那么边缘检测的原理就能很好的理解,就是用某些已存在的算法来解决我们所要表达的问题,更官方一点的话说就是用算法提取图像和背景之间的交界线,从而来实现边缘分离和提取4。边缘检测算子其实也就是解决问题的算法,这种算法自然有很多,早期的经典算法有边缘算子法,模拟匹配法,门限法等方法。近些年来随着人工智能的方法,越来越多的人开始关注,于是又涌现了很多新的边缘检测算法,其中最为人多议论的有小波变换和
17、小波包的边缘检测法、基于形态学和神经网络的边缘检测法。我们可以来初步了解一下计算机是怎样检测图像边缘的。就以灰度图像为例,它的理论基础是,如果有一个边缘,那么图像的灰度就肯定会发生变化(为了方便假设由黑渐变为白代表一个边界),这时我们可以对其灰度分析,边缘的灰度函数就是一个标准一次函数y=kx+b,我们对其求一阶导数后结果就是它斜率k,也就是说边缘的一阶导数是一个常数,而我们又知道由于非边缘的一阶导数为零,这样通过求一阶导数就能初步判断图像的边缘了5。下面先来介绍下经典的几种算法。(1)Roberts算子这里介绍一个名词梯度,我们把梯度定义为一个向量(f),f指出了灰度变化最快的方向和变化量。
18、用公式可以表示为 (2.1) 其中我们可以从以前学过的数学知道它的梯度大小为 (2.2) 梯度的角度为 (2.3) 而这个Roberts算子其实就是对图像的x(水平方向)和y(垂直方向)来趋近梯度算子。 (2.4) 我们就能得出Roberts算子的表达式为 (2.5)(2)Sobel算子 上面介绍了计算机通过y=kx+b求导数识别图像边缘的,但是在具体图像中我们会发现是求不了导数的,因为没有准确的函数公式让我们来求导数,所以厉害的研究人员就想到了用另一种方式来替换原来的方式求导数。用一个33的二维矩阵窗口对原来图像进行近似求导。这里拿对x方向求导为例,如下图2-6,我们定义b2的导数Ko为第三
19、列的元素(a3,b3,c3)之和减去第一列元素(a1,b1,c1)之和,这样就求得了b2的近似导数。我们知道导数其实就是代表一个变化率,从第一列到第三列,灰度值相减,当然就是一个变化率了。当然Y方向导数与X方向导数求法相似,就是用第三行元素之和减去第一行元素之和。这样一来X方向和Y方向导数有了,那么梯度我们也就知道了。 如果这个时候我们给每一列都加一个权重,分别为1,2,1。这就是Sobel算子了。再举一例,如图2-7中,求是不是边缘点,我们有公式得= (10*1+20*2+30*1)-(30*1+20*2+10*1)=0。由此可知不是边缘点。图2-8和图2-9中的Gx和Gy分别为Sobel算
20、子中水平方向和垂直方向的梯度。 图2-6 矩阵1 图2-7 矩阵x 图2-8水平方向梯度 图2-9 垂直方向梯度 (3)Laplace算子 上面介绍的两个算子都是一阶差分算子,而Laplace算子是二阶差分算子。我们可以想象为对一个函数的二次求导。我们可以想象一下,如果图像中有噪声(图像在传输过程中的通道传输误差等因素会造成图像上出现一些随机的、离散的、孤立的像素点,就是图像噪声),噪声在一阶导数处也会取得极大值从而被当作边缘。如果采用二阶导数,这是函数的极大值点就为0了,我们就可以认为这个点就是图像的边缘点了。如下图2-10为原函数,图2-11为一阶导数,图2-12为二阶导数。 F(x) F
21、(x) F(x) 图2-10 原函数 图2-11 一阶导数 图2-12 二阶导数 但是Laplace算子会放大噪声,所以我们要采用了LOG算子,就是Laplace算子,先对图像进行高斯模糊,抑制噪声,再求二阶导数,二阶导数为0的地方就是图像的边缘。 (4) canny算子 我从一些博客和资料中了解到了canny的原理。我们知道图像边缘检测要满足两个条件,一是能有效的抑制噪声;二是能精确的确定边缘的位置。然后根据对信噪比和定位的乘积来进行度量,得到优化的算子,这其实就是Canny边缘检测算子。类似于Laplace边缘检测方法,先平滑后求导数6。我们来了解一下canny的步骤。 1.消除噪声;在这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 毕业设计 基于 opencv 图像 轮廓 提取 方法 实现
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。