opencv论文.docx

上传人:b****6 文档编号:7584689 上传时间:2023-01-25 格式:DOCX 页数:23 大小:1.48MB
下载 相关 举报
opencv论文.docx_第1页
第1页 / 共23页
opencv论文.docx_第2页
第2页 / 共23页
opencv论文.docx_第3页
第3页 / 共23页
opencv论文.docx_第4页
第4页 / 共23页
opencv论文.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

opencv论文.docx

《opencv论文.docx》由会员分享,可在线阅读,更多相关《opencv论文.docx(23页珍藏版)》请在冰豆网上搜索。

opencv论文.docx

opencv论文

XI`ANTECHNOLOGICALUNIVERSITY

 

课程论文

 

课程名称基于opencv的轮廓检测

 

专业:

信息与计算科学

班级:

121002

姓名:

张亮、杨红啟

学号:

*********、*********

实验学时:

8

************:

刘建伟

成绩:

2015年12月4日

西安工业大学课程设计(论文)用纸

摘要

OpenCV是Intel公司开发的开源计算机视觉库,由一系列C函数和少量

C++类构成,实现了图像处理和计算机视觉方面的很多通用算法,具备强大的图像和矩阵运算能力,其中计算机视觉函数库包含图像处理、结构分析、运动分析、对象跟踪、模式识别、摄像机定标和三维重建等算法.OpenCV中摄像机标定模块为用户提供了良好的接口,同时支持Windows、Linux平台,极大地提高了开发效率,执行速度快,具有良好的移植性,可以很好地应用于工程实际中。

数字图像处理(DigitalImageProcessing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。

随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。

其中轮廓检测就是对图像外部特征进行提取分析,图像的外部特征包括的如方向,形状,基础性质等,随着科技的不断发展,人们对事物的内在和外在了解程度的不断加深,轮廓检测这门技术在图像处理的领域显得格外重要。

轮廓检测常用的方法是轮廓跟踪轮廓提取,以及边缘检测中的几种对轮廓进行处理的方法。

方法具体内容将在文章下面介绍。

通过了解方法和原理我们将在一个开源的函数库OpenCV,借助其强大的各种函数完成对图像的轮廓检测。

关键词:

OpenCv,轮廓检测,轮廓提取,轮廓跟踪基于opencv的轮廓检测

 

基于opencv的轮廓检测

第一章前言.......................................................3

1.1课题背景..................................................3

1.2图像处理..................................................3

1.2.1数字图像处理概述......................................3

1.2.2图像处理的现状和前景..................................3

1.2.3图像处理基础知识......................................4

1.3本文主要研究内容..........................................4

第二章轮廓检测技术...............................................5

2.1图像分割..................................................5

2.1.2概述....................................................5

2.1.3分割方法................................................7

2.2边缘检测..................................................8

2.2.1边缘检测概述.........................................8

2.2.2边缘检测基础算法.....................................9

2.3轮廓检测方法..............................................11

2.3.1轮廓跟踪法..........................................11

2.3.2轮廓提取.............................................12

2.3.3边缘检测技术对轮廓处理..............................13

第三章用OPENCV实现轮廓检测....................................16

3.1OPENCV初始化............................................16

3.2OPENCV库函数简介........................................18

3.3用OPENCV实现轮廓检测....................................18

第四章总结......................................................22

参考文献.........................................................22

 

基于opencv的轮廓检测

第一章前言

1.1课题背景

随着图像处理技术的逐步发展和成熟,人们在日程生活和工作中,对图像处理的要求逐渐提高,随着数字化和多媒体化时代的来临,数字图像处理技术已经成为必备的基础知识!

在日常生活中,图像处理已经得到广泛应用。

例如,电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的身份识别等。

轮廓检测技术更是广泛的应用与各个专业领域中。

在图像拍摄模糊或者照片不清晰,但又需要其中内容的时候,轮廓检测无疑是重要的手段之一.学习过轮廓检测后,他会帮助你对其他的图像处理技术中的检测方法理解起来更加简单。

1.2图像处理

1.2.1数字图像处理概述

数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

用计算机进行图像处理的前提是图像必须以数字格式存储,我们把以数字格式存放的图像称之为数字图像。

常见的各种照片、图片、海报、广告画等均属模拟图像,要将模拟图像数字化后生成数字图像,需要利用数字化设备。

目前,将模拟图像数字化的主要设备是扫描仪,将视频画面数字化的设备有图像采集卡。

当然,也可以利用数码照相机直接拍摄以数字格式存放的数字图像。

模拟图像经扫描仪进行数字化或由数码照相机拍摄的自然景物图像,在计算机中均是以数字格式存储的。

既然是数字,计算机当然可以方便地进行各种处理,以达到视觉效果和特殊效果。

1.2.2图像处理的现状和前景

数字图像处理最早出现于20世纪50年代,人们开始利用计算机来处理图形和图像信息。

数字图像处理作为一门学科大约形成于20世纪60年代初期。

早期的图像处理的目的是改善图像的质量。

输入的是质量低的图像,输出的是改善质量后的基于opencv的轮廓检测2图像。

首次获得实际成功应用的是美国喷气推进实验室。

他们对航天探测器在1964年发回的几千张月球照片使用了图像处理技术,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。

数字图像处理取得的另一个巨大成就是在医学上获得的成果。

1972年英国工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT。

CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像。

1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。

从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。

人们已开始研究图像理解或计算机视觉。

很多发达国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。

其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。

图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。

1.2.3图像处理基础知识

图像处理的方法有模拟式和数字式两种。

由于数字计算技术的迅猛发展,数字图像处理技术得到了广泛的应用。

我们日常生活中见到的图像一般是连续形式的模拟图像,所以数字图像处理的一个先决条件就是将连续图像离散化,转换为数字图像。

图像的数字化包括采样和量化两个过程。

1.3本文主要研究内容

本文主要研究数字图像处理中边缘检测和轮廓检测的原理和算法,通过对原理和算法学习,使读者尽快可以对需要的图片进行边缘/轮廓检测。

通过产生图像对比原来图像,找出轮廓检测几种方法在使用上的区别。

并且能够根据自己的需要使用适当的方法进行轮廓检测或者边缘检测处理。

学习和使用OpenCV对其常见的几种函数有初步了解。

使用OpenCV提供的各种函数进行轮廓检测或者边缘检测。

第二章轮廓检测技术

2.1图像分割

2.1.2概述

进行轮廓检测或者边缘检测首先必须了解图像分割。

图像分割是将图像划分成若干个互不相交的小区域的过程,是进行边缘轮廓检测的重要步骤。

小区域是某种意义下具有共同属性的像素的连通集合。

如不同目标物体所占的图像区域、前景所占的图像区域等。

连通是指集合中任意两个点之间都存在着完全属于该集合的连通路径。

对于离散图像而言,连通有4连通和8连通之分,如图2.1所示。

图2.14连通和8连通

4连通指的是从区域上一点出发,可通过4个方向,即上、下、左、右移动的组合,在不越出区域的前提下,到达区域内的任意像素;8连通方法指的是从区域上一点出发,可通过左、右、上、下、左上、右上、左下、右下这8个方向的移动组合来到达区域内的任意像素。

图像分割有三种不同的途径:

1)是将各像素划归到相应物体或区域的像素聚类方法,即区域法。

2)是通过直接确定区域间的边界来实现分割的边界方法。

3)是首先检测边缘像素,再将边缘像素连接起来构成边界形成分割。

在图像分割技术中,最常用的是利用阈值化处理进行的图像分割。

在图像的阈值化处理过程中,选用不同的阈值其处理结果差异很大。

如图2.2(a)所示,阈值过大,会提取多余的部分;而阈值过小,又会丢失所需的部分(注意:

当前背景为黑色,对象为白色时刚好相反)。

因此,阈值的选取非常重要。

图2.2(a)原始图像的直方图如图2.3所示。

分析该直方图可知,该直方图具有双峰特性,图像中的目标(细胞)分布在较暗的灰度级上形成一个波峰,图像中的背景分布在较亮的灰度级上形成另一个波峰。

此时,用其双峰之间的谷低处灰度值作为阈值T进行图像的阈值化处理,便可将目标和背景分割开来

(c)(d)

图2.2图像分割演示

图2.3直方图

2.1.3分割方法

常用的图像分割方法是把图像灰度分成不同的等级,然后用设置灰度门限(阈值)的方法确定有意义的区域或分割物体的边界。

常用的阈值化处理就是图像的二值化处理,即选择一阈值,将图像转换为黑白二值图像,用于图像分割及边缘跟踪等预处理。

1970年布莱斯和芬尼玛提出一种分割方法,如图2.4所示。

图2.4(a)是具有灰度级的3×3的G阵列,图2.4(b)是对G的分割结果。

其中,图像格子为G,它是大格子S的子格子。

G为n×m的格子,S是(2n+1)×(2m+1)的大格子。

在大格子中,G(i,j)点位于S的(2i+1,2j+1)点上。

G中的点与S中的点相对应,其中每一下标都是奇数,其余的点用来代表区域的边界。

以这种形式表现的区域,产生一种寻找最大连接区域的方法。

G中的点与它上边和右边的点相比较,灰度级相同就合并,灰度级不同就插入边界线。

把图像中的每个点都处理过之后,整个图像就被分割成区域。

在这个例子中,由于采用了4连通等价关系,因此,由图可见,在对角线方向上的等灰度级产生了隔开的区域。

图2.4布莱斯和芬尼玛提出分割方法

分割的目的是把一幅图像划分成一些区域,最直接的方法就是把一幅图像分成满足某种判据的区域,也就是说,把点组成区域。

为了实现分组,首先要确定区域的数目,其次要确定一个区域与其他区域相区别的特征,最后还要产生有意义分割的相似性判据。

分割区域的一种方法叫区域生长或区域生成。

假定区域的数目以及在每个区域中单个点的位置已知,则从一个已知点开始,加上与已知点相似的邻近点形成一个区域。

相似性准则可以是灰度级、彩色、组织、梯度或其他特性,相似性的测度可以由所确定的阈值来判定。

方法是从满足检测准则的点开始,在各个方向上生长区域,当其邻近点满足检测准则就并入小块区域中。

当新的点被合并后再用新的区域重复这一过程,直到没有可接受的邻近点时生成过程终止。

5

5

8

6

4

8

9

7

2

2

8

3

3

3

3

3

图2.5给出一个简单的例子。

此例的相似性准则是邻近点的灰度级与物体的平均灰度级的差小于2。

图中被接受的点和起始点均用下划线标出,其中(a)图是输入图像;(b)图是第一步接受的邻近点;(c)图是第二步接受的邻近点;(d)图是从6开始生成的结果。

5

5

8

6

4

8

9

7

2

2

8

3

2

2

2

2

(a)(b)

5

5

8

6

4

8

9

7

2

2

8

3

3

3

3

3

5

5

8

6

4

8

9

7

2

2

8

3

3

3

3

3

(c)(d)

图2.5区域生长示例

当生成任意物体时,接收准则可以结构为基础,而不是以灰度级或对比度为基础。

为了把候选的小群点包含在物体中,可以检测这些小群点,而不是检测单个点,如果它们的结构与物体的结构足够相似时就接受它们。

2.2边缘检测

2.2.1边缘检测概述

进行轮廓处理之前,首先要了边缘检测的原理以及基础算法,因为轮廓检测是建立在边缘检测的基础之上。

在Marr的视觉计算理论框架中,抽取二维图像上的边缘、角点、纹理等基本特征,是整个系统框架中的第一步。

这些特征所组成的图称为基元图。

在不同“尺度”意义下的边缘点,在一定条件下包含了原图像的全部信息。

图2.6画出了一幅图像中的边缘点,仅仅根据这些边缘点,就能识别出三维物体,可见边缘点确实包含了图像中的大量信息。

 

图2.6边缘检测原理图

(1)空间曲面上的不连续点。

如标为A的边缘线,这些边缘线为两个不同曲面的或平面的交线,该点处物体表面的法线方向不连续,在A类边缘线的两边,图像的灰度值有明显的不同。

(2)B类边缘线。

B类边缘线是由不同材料或相同材料不同颜色产生的。

图中桌面由两种不同材料组成,由于它们对光的反射系数不同,使B边缘线的两灰度有明显不同。

(3)C类边缘线。

C类边缘线是物体与背景的分界线。

如图中圆柱上有两条C类边缘线,这类边缘线一般称为外轮廓线。

在C类边缘点上,三维物体表面的法线方向是连续的,出现边缘点是由于从一定视角看物体时,C类边界点是物体与背景的交界处。

由于物体与背景在光照条件与材料反射系数等方面差异很大,因此在C类边缘两侧,图像的灰度也有很大差异。

图中标以C′的边缘,即是物体与背景的交界处,也是物体上表面法线的不连续处,但引起它两侧灰度跃变的原因是前者。

(4)D边缘。

D是阴影引起的边缘。

由于物体表面某一部分被另一物体遮挡,使它得不到光源的照射,从而引起边缘点两侧灰度值有较大的差异。

2.2.2边缘检测基础算法

综上所述,边缘检测在实现的过程中,图像中一定有剧烈的变化。

边缘点是信号“变化剧烈”的地方,但这么说并不准确,需要定义一个准确的边缘数学模型。

以一维信号为例,图2.7(a)是一种阶跃信号,我们当然认为A点处为边缘点。

在实际情况中,物理信号不可能有理想的突变,而是如图2.7(b)所示的逐渐增大的信号,对图2.6(b)中所示A、B、C三点,一般称B点为边缘点。

在图2.7(c)和图2.7(d)中,如果台阶比较窄,即可以认为B点为边缘点,也可以认为该信号有两个边缘点A与C。

图2.7边缘检测原理图

2.3轮廓检测方法

图象轮廓检测算法是图像处理中的经典技术难题之一,它的解决对于高层次的特征描述、识别和理解等有着重大的影响。

复杂背景下的轮廓检测研究从背景复杂的图像中提取边缘。

由于大多数有实际意义的边缘提取问题,本质上都是处在复杂背景之中,因此,研究复杂背景下的轮廓检测算法有着非常重要的实用价值。

以下将介绍轮廓检测的集中常用方法。

2.3.1轮廓跟踪法

在识别图像中的目标时,往往需要对目标边缘作跟踪处理,也叫轮廓跟踪。

顾名思义,轮廓跟踪就是通过顺序找出边缘点来跟踪边界的。

若图像是二值图像或图像中不同区域具有不同的像素值,但每个区域内的像素值是相同的,则如下算法可完成基于4连通或8连通区域的轮廓跟踪

步骤1:

首先按从上到下,从左到右的顺序扫描图像,寻找没有标记跟踪结束记号的第一个边界起始点A,A是具有最小行和列值的边界点。

定义一个扫描方向变量dir,该变量用于记录上一步中沿着前一个边界点到当前边界点的移动方向,其初始化取值为

(1)对4连通区域取dir=3,如图2.8(a)所示。

(2)对8连通区域取dir=7,如图2.8(b)所示。

1321

2040

3567

(a)(b)

图2.8轮廓跟踪法原理示意图

步骤2:

按逆时针方向搜索当前像素的3×3邻域,其起始搜索方向设下:

(1)对4连通区域取(dir+3)mod4,如图2.8(a)所示;

(2)对8连通区域,若dir为奇数取(dir+7)mod8,如图2.9(b)所示;

若dir为偶数取(dir+6)mod8如图2.9(c)所示。

(a)(b)(c)

图2.9轮廓跟踪法像素处理示意图

在3×3邻域中搜索到的第一个与当前像素值相同的像素便为新的边界点An,同时更新变量dir为新的方向值。

步骤3:

如果An等于第二个边界点A1且前一个边界点An-1等于第一个边界点

A0则停止搜索,结束跟踪,否则重复步骤2继续搜索。

步骤4:

由边界点A0、A1、A2、…、An-2构成的边界便为要跟踪的边界。

算法

中步骤1中所采用的准则称为“探测准则”,其作用是找出第一个边界点。

步骤3中所采用的准则称为“跟踪准则”,其作用是找出所有边界点。

图2.10(a)为原图,图2.11(b)为轮廓跟踪法处理结果。

2.3.2轮廓提取

二值图像轮廓提取的算法非常简单,就是掏空内部点:

如果原图像中有一点为黑,且它的8个邻点都是黑色时,说明该点是内部点,将该点删除(置为白色像素值255)。

对图像中所有像素点执行该操作便可完成图像轮廓的提取。

图2.11即位轮廓提取后的结果

图2.11即位轮廓提取结果

轮廓提取法中又包含了二值图象闭合边界的轮廓跟踪算法。

二值图象闭合边界的轮廓跟踪算法很简单:

首先按从上到下,从左到右的顺序搜,找到的第一个黑点一定是最左上方的边界点,记为A。

它的右,右下,下,左下四个邻点中至少有一个是边界点,记为B。

从开始B找起,按右,右下,下,左下,左,左上,上,右上的顺序找相邻点中的边界点C。

如果C就是A点,则表明已经转了一圈,程序结束;否则从C点继续找,直到找到A为止。

判断是不是边界点很容易:

如果它的上下左右四个邻居都是黑点则不是边界点,否则是边界点。

2.3.3边缘检测技术对轮廓处理

以下为边缘检测中对轮廓处理的介绍:

图2.12(b)普通Sobel算子处理后的结果图

 

我们给出一个模板[-101]和一幅图象

不难发现原图(图2.12)中左边暗,右边亮,中间存在着一条明显的边界。

进行模板操作后的结果如下:

可以看出,第3、4列比其他列的灰度值高很多,人眼观察时,就能发现一条很明显的亮边,其它区域都很暗,这样就起到了边沿检测的作用。

为什么会这样呢?

仔细看看那个模板就明白了,它的意思是将右邻点的灰度值减左邻点的灰度值作为该点的灰度值。

在灰度相近的区域内,这么做的结果使得该点的灰度值接近于0;而在边界附近,灰度值有明显的跳变,这么做的结果使得该点的灰度值很大,这样就出现了上面的结果。

这种模板就是一种边沿检测器,它在数学上的涵义是一种基于梯度的滤波器,又称边沿算子,你没有必要知道梯度的确切涵义,只要有这个概念就可以了。

梯度是有方向的,和边沿的方向总是正交(垂直)的,例如,对于上面那幅图象的转置图象,边是水平方向的,我们可以用梯度是垂直方向的模板

检测它的边沿。

例如,一个梯度为45度方向模板

,可以检测出135度方向的边沿。

Sobel算子:

在边沿检测中,常用的一种模板是Sobel算子。

Sobel算子有两个,一个是检测水平边沿的

;另一个是检测垂直平边沿的

相比,Sobel算子对于象素的位置的影响做了加权,因此效果更好。

Sobel算子另一种形式是各向同性Sobel(IsotropicSobel)算子,也有两个,一个是检测水平边沿的

,另一个是检测垂直平边沿的

各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。

图2-12(a)为原图;

图2-12(b)为普通Sobel算子处理后的结果图.

图2-12(c)为LOG算法处理后的结果,LOG的算法和普通模板操作的算法没什么不同,只不过把3×3改成了5×5,

第三章用OpenCV实现轮廓检测

3.1OpenCv初始化

OpenCv的初始化基本可分为4步:

(1)下载和安装

(2)配置环境变量

(3)配置VC++6.0全局设置

(4)配置VC++6.0项目设置

步骤1请参照OpenCv中国网站上的步骤进行下载和安装。

步骤2中,有关变量的设置网站介绍有些不详细。

可能导致出现一些小错误。

具体环境变量设置方法如下:

鼠标右键我的电脑→属性(出现如下对话框)→高级→选中环境变量

注意在图2中可更改的环境变量有

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

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1