数字图像视频处理技术ppt课件_第1页
数字图像视频处理技术ppt课件_第2页
数字图像视频处理技术ppt课件_第3页
数字图像视频处理技术ppt课件_第4页
数字图像视频处理技术ppt课件_第5页
已阅读5页,还剩151页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 图像/视频处理技术注:本讲内容参考了五邑大学李鹤喜注:本讲内容参考了五邑大学李鹤喜讲义和北京大学数字媒体研究所讲义和北京大学数字媒体研究所课件课件 数字媒体技术基础数字媒体技术基础第三讲第三讲8课时)课时)教学目标教学目标了解数字图像/视频处理的基本概念和基本方法掌握目前最常用的数字图像/视频处理开发包-OpenCV,了解如何用OpenCV开发基本的数字图像/视频处理程序2教学内容教学内容第一部分:基本概念和操作第一部分:基本概念和操作图像像素间联系图像像素间联系图像的基本统计特性图像的基本统计特性直方图直方图基本图像处理技术基本图像处理技术点运算、二值图像形态学操作点运算、二值图像形态学操

2、作、连通分量分析、连通分量分析第二部分:第二部分: OpenCVOpenCV概述概述基础结构与操作基础结构与操作基本基本OpenCV程序与示例程序与示例3 第一部分:基本概念和操作第一部分:基本概念和操作4像素的邻域像素的邻域(1p的的4邻域邻域坐标为坐标为(x,y)的像素的像素p有有4个水平和垂直的相邻像个水平和垂直的相邻像素,坐标分别为素,坐标分别为: (x+1, y), (x-1, y), (x, y+1), (x, y-1),这个像素集称为,这个像素集称为p的的4邻域,用邻域,用N4(p)表示。表示。5像素的邻域像素的邻域(2p的的4个对角邻像素个对角邻像素坐标分别为坐标分别为: (x

3、+1, y+1), (x-1, y-1), (x-1, y+1), (x-1, y-1),用,用N D(p)表示。表示。(3p的的8邻域邻域 N4(p)+ N D(p) 。61、像素的邻接、像素的邻接如果接触则邻接。邻接仅考虑了像素间的空间关系。如果接触则邻接。邻接仅考虑了像素间的空间关系。如一个像素和在它邻域中的像素是接触的,所以是邻接的如一个像素和在它邻域中的像素是接触的,所以是邻接的2、像素的连接、像素的连接两个像素的连接,则需满足:两个像素的连接,则需满足:它们在空间上是接触的即它们是邻接的)它们在空间上是接触的即它们是邻接的)它们的灰度值或者其他属性值满足某个特定的相似准则如它它们的

4、灰度值或者其他属性值满足某个特定的相似准则如它们的灰度值相等)们的灰度值相等)7设设V表示定义连接的灰度值的集合表示定义连接的灰度值的集合4衔接:衔接:2个像素个像素p和和r在在V中取值,且中取值,且r在在N4p中中8衔接:衔接:2个像素个像素p和和r在在V中取值,且中取值,且r在在N8p中中m衔接衔接(混合连接混合连接):2个像素个像素p和和r在在V中取值,且满足下列条件之一:中取值,且满足下列条件之一: r在在N4p中中 r在在NDp中中 且且 N4p) N4r不包含不包含V中取值的像素中取值的像素8abpcdref1110010111110101r不在不在N4(p)中,中,r在在ND(p

5、)中,中, N4(p)中包括标有中包括标有 a,b,c,d四个像素,四个像素, N4(r)中包括标有中包括标有 c,d,e,f 四个像素,四个像素,且且 N4p) N4r包括标有包括标有c,d的两个像素的两个像素9混合连接是混合连接是8连接的变型,引进它是为了消除使用连接的变型,引进它是为了消除使用8连接时出现连接时出现的多路问题。的多路问题。01101000101101000101101000110两像素间的通路:两像素间的通路:通路路,如不同,可定义不同的通根据所采用的邻接定义为通路长度,邻接,其中)与(且()(这里的独立像素组成由一系列具有坐标的一条通路的像素到具有坐标的像素从具有坐标4

6、1,),(),( ,),(),(),.,(),(),(),(11001100nniyxyxtsyxyxyxyxyxyxqtspyxjijinnnn如果这条通路上的所有像素的灰度值均满足某个特定的相似准则,如果这条通路上的所有像素的灰度值均满足某个特定的相似准则,则说明两个像素则说明两个像素p和和q是连通的。根据所采用的邻接定义的不同得到是连通的。根据所采用的邻接定义的不同得到不同的连通。如不同的连通。如4连通,连通,8连通连通像素的连接是像素连通的一种特例。像素的连接是像素连通的一种特例。n=1时,两个连通的像素也是连接的。时,两个连通的像素也是连接的。像素的连通像素的连通11随堂练习: 以下

7、p-q通路各是什么通路?12图像的子集合:图像中的一部分,根据像素间的联系,可将图像中图像的子集合:图像中的一部分,根据像素间的联系,可将图像中某些像素结合组成图像的子集合。某些像素结合组成图像的子集合。图像子集的连接:如果图像子集的连接:如果S中的一个或一些像素与中的一个或一些像素与T中的一个中的一个或一些像素连接,则两个图像子集或一些像素连接,则两个图像子集S和和T是连接的是连接的要考虑:是否是邻接子集,它们中邻接像素的灰度值是否要考虑:是否是邻接子集,它们中邻接像素的灰度值是否满足某个特定的相似准则满足某个特定的相似准则图像子集的邻接:图像子集的邻接:如果图像子集如果图像子集S中的一个或

8、一些像素与图像子集中的一个或一些像素与图像子集T中的一个中的一个或一些像素邻接,则两个图像子集或一些像素邻接,则两个图像子集S和和T是邻接的。根据所是邻接的。根据所采用的像素邻接定义,可得到图像子集采用的像素邻接定义,可得到图像子集4邻接或邻接或8邻接邻接像素集合的邻接和连通像素集合的邻接和连通13设设p和和q是一个图像子集是一个图像子集S中的两个像素,如果存在一条完全由在中的两个像素,如果存在一条完全由在S中中的像素组成的从的像素组成的从p到到q的通路,那么就称的通路,那么就称p在在S中与中与q相连通相连通对对S中任一像素中任一像素p,所有与,所有与p相连通且又在相连通且又在S 中的像素的集

9、合包括中的像素的集合包括p合起来称为合起来称为S中的一个连通分量。中的一个连通分量。如果如果S中只有一个连通组元,即中只有一个连通组元,即S中所有像素都互相连通,则称中所有像素都互相连通,则称S是是一个连通集。一个连通集。两个互不邻接但与同一图像子集都邻接在同一个两个互不邻接但与同一图像子集都邻接在同一个V下的图像子下的图像子集是互相连通的。集是互相连通的。图像中同一个连通集中的任两个像素互相连通,而不同连通集中的图像中同一个连通集中的任两个像素互相连通,而不同连通集中的像素互不连通。像素互不连通。14连通区域分析连通区域分析Connected Component Analysis)CVPR和

10、图像分析处理的众多应用领域中较为常用和基本的方法。例如:OCR识别中字符分割提取车牌识别、文本识别、字幕识别等)、视觉跟踪中的运动前景目标分割与提取行人入侵检测、遗留物体检测、基于视觉的车辆检测与跟踪等)、医学图像处理感兴趣目标区域提取)、等等。也就是说,在需要将前景目标提取出来以便后续进行处理的应用场景中都能够用到连通区域分析方法,通常连通区域分析处理的对象是一张二值化后的图像。15像素之间的联系与像素在空间的接近程度有关。像素在空间的接近像素之间的联系与像素在空间的接近程度有关。像素在空间的接近程度可用像素之间的距离来测量。程度可用像素之间的距离来测量。距离量度函数:用来测量距离距离量度函

11、数:用来测量距离三个条件,(三个条件,(1表明两像素之间的距离总是正的两像素空间位置相同时,其表明两像素之间的距离总是正的两像素空间位置相同时,其间的距离为间的距离为0)()(2表明两像素之间的距离与起终点的选择无关。或者说距离是表明两像素之间的距离与起终点的选择无关。或者说距离是相对的。(相对的。(3表明两像素之间的最短距离是沿直线的。表明两像素之间的最短距离是沿直线的。),(),(),()3(),(),()2()0),(,(0),(1D),(),(),(,rqDqpDrpDpqDqpDqpDqpqpDvutsyxrqp当且仅当)(它要满足:为一个距离量度函数,函数坐标分别为给定三个像素图像

12、间的距离图像间的距离16在数字图像中的距离量度函数:两个像素在数字图像中的距离量度函数:两个像素p和和q,坐标,坐标(x , y), (s , t )欧氏距离范数欧氏距离范数/模为模为2的距离):的距离):与坐标为与坐标为(x , y)的像素的欧氏距离小于或等于某个值的像素的欧氏距离小于或等于某个值d的像素都包括的像素都包括在以在以(x ,y )为中心以为中心以d为半径的圆中。在数字图像中圆只能近似表示。为半径的圆中。在数字图像中圆只能近似表示。城区距离范数城区距离范数/模为模为1的距离):的距离):D4距离距离与坐标为与坐标为(x , y)的像素的城区距离小于或等于某个值的像素的城区距离小于

13、或等于某个值d的像素组成以的像素组成以(x ,y )为中心的菱形。为中心的菱形。2122)()(),(tysxqpDEtysxqpD),(417D8=1的像素就是的像素就是(x , y )的的8近邻像素,所以像素近邻像素,所以像素p的的8邻域可定义邻域可定义为:为:棋盘距离范数为棋盘距离范数为的距离):的距离):与坐标为与坐标为(x , y)的像素的棋盘距离小于或等于某个值的像素的棋盘距离小于或等于某个值d的像素组成以的像素组成以(x ,y )为中心的正方形。为中心的正方形。D4=1的像素就是的像素就是(x , y )的的4近邻像素,所以像素近邻像素,所以像素p的的4邻域可定义邻域可定义为:为

14、:1),()(44rpDrpNtysxqpD,max),(81),()(88rpDrpN18图像的基本统计特性图像的基本统计特性直方图直方图直方图直方图(Histogram):表达一幅图像的灰度级:表达一幅图像的灰度级(或颜色或颜色)分布情况的统计表分布情况的统计表横坐标:灰度或颜色量化值)横坐标:灰度或颜色量化值)纵坐标:某一灰度值或颜色量化值的像素个数纵坐标:某一灰度值或颜色量化值的像素个数直方图的性质直方图的性质丢失空间信息丢失空间信息一个图像有唯一的直方图,但一个直一个图像有唯一的直方图,但一个直方图可能对应多幅图像方图可能对应多幅图像一幅图像各区域的直方图之和等于全一幅图像各区域的直

15、方图之和等于全图的直方图图的直方图直方图的用途直方图的用途数字化参数:用于判断一幅图像是否数字化参数:用于判断一幅图像是否合理利用了所有可选的灰度级范围合理利用了所有可选的灰度级范围边界阈值选取:若灰度直方图具有较边界阈值选取:若灰度直方图具有较好的二峰性,则可以方便进行二值化好的二峰性,则可以方便进行二值化19图像的基本统计特性图像的基本统计特性直方图直方图直方图的计算:对直方图的计算:对(M,N)大小的图像,设灰度颜大小的图像,设灰度颜色级为色级为L:初始化:初始化:histk=0, k=0,L-1统计:统计:histf(x,y)+; x,y=0,M-1,0, N-1归一化:归一化:his

16、tf(x,y) /=M*N20基本图像处理技术基本图像处理技术图像的点运算图像的点运算代数运算代数运算图像的代数运算是指对两幅图像进行点对图像的代数运算是指对两幅图像进行点对点的四则运算而得到一幅新的输出图像。点的四则运算而得到一幅新的输出图像。图像的代数运算在图像处理中有着广泛的图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需要的算术应用,它除了可以实现自身所需要的算术操作,还能为许多复杂的图像处理提供准操作,还能为许多复杂的图像处理提供准备备1. 加法运算加法运算 2. 减法运算差分)减法运算差分)),(),(),(yxByxAyxC),(),(),(yxByxAyxC21

17、图像的点运算+=22图像的点运算=图像求差可以消除背景23图像的点运算 (a原图原图(b梯度运算相邻梯度运算相邻2个像素个像素间做差)间做差)24基本图像处理技术-形态学操作集合论基础知识集合论基础知识膨胀和腐蚀膨胀和腐蚀(Dilation & Erosion):产生滤波器作用:产生滤波器作用开操作和闭操作开操作和闭操作(Opening & Closing):产生滤波器:产生滤波器作用作用形态学操作在图像处理中的应用形态学操作在图像处理中的应用边界提取边界提取区域填充区域填充连通分量的提取连通分量的提取凸壳,细化,粗化凸壳,细化,粗化25图像形态学图像形态学形态学形态学:一般指

18、生物学中研究动物和植物结构的一一般指生物学中研究动物和植物结构的一个分支个分支,研究生物的成年个体的外形和器官构造研究生物的成年个体的外形和器官构造解剖学、组织学和器官学)解剖学、组织学和器官学) 数学形态学也称图像代数表示以形态为基础数学形态学也称图像代数表示以形态为基础对图像进行分析的数学工具对图像进行分析的数学工具1960s)形态学图像处理的应用可以简化图像数据,保持形态学图像处理的应用可以简化图像数据,保持它们基本的形状特性,并除去不相干的结构它们基本的形状特性,并除去不相干的结构研究数字图像中物体目标的结构及拓扑关系研究数字图像中物体目标的结构及拓扑关系数学形态学应用在图像增强、分割

19、、恢复、边缘数学形态学应用在图像增强、分割、恢复、边缘检测、纹理分析等领域检测、纹理分析等领域作为预处理步骤:去除噪声滤波器)作为预处理步骤:去除噪声滤波器)目标提目标提取取26图像形态学图像形态学基本思想:基本思想:表现为一种邻域运算形式;表现为一种邻域运算形式;一 种 特 殊 定 义 的 邻 域 称 之 为一 种 特 殊 定 义 的 邻 域 称 之 为 “结 构 单 元结 构 单 元 ” (Structure Element),在每个像素位置上它与二值),在每个像素位置上它与二值图像对应的区域进行特定的逻辑运算,逻辑运算图像对应的区域进行特定的逻辑运算,逻辑运算的结果为输出图像的相应像素。

20、的结果为输出图像的相应像素。形态学运算的效果取决于结构单元的大小、内容形态学运算的效果取决于结构单元的大小、内容以及逻辑运算的性质。以及逻辑运算的性质。形态学图像处理的数学基础和所用语言是集合论形态学图像处理的数学基础和所用语言是集合论形态学图像处理的基本运算有形态学图像处理的基本运算有4个:膨胀、腐蚀、个:膨胀、腐蚀、开操作和闭操作开操作和闭操作27集合论基础知识集合论基础知识集合的并、交、补、差集合的并、交、补、差28集合论基础知识集合论基础知识集合集合B的反射的反射 ,定义为,定义为 =w|w= b,bB即关即关于原集合原点对称于原集合原点对称集合集合A平移到点平移到点z=(z1,z2)

21、,表示为表示为(A)z,定义为,定义为 (A)z =c| c = a+ z, aA29二值形态学二值形态学二值形态学中的运算对象是集合。设二值形态学中的运算对象是集合。设A为图像集为图像集合,合,S为结构元为结构元素,数学形态学运算是用为结构元为结构元素,数学形态学运算是用S对对A进行操作。进行操作。需要指出,实际上结构元素本身也是一个图像集需要指出,实际上结构元素本身也是一个图像集合。对每个结构元素可以指定一个原点,它是结合。对每个结构元素可以指定一个原点,它是结构元素参与形态学运算的参考点。构元素参与形态学运算的参考点。应注意,原点可以包含在结构元素中,也可以不应注意,原点可以包含在结构元

22、素中,也可以不包含在结构元素中,但运算的结果常不相同。包含在结构元素中,但运算的结果常不相同。二值形态学中两个最基本的运算是腐蚀与膨胀二值形态学中两个最基本的运算是腐蚀与膨胀30膨胀和腐蚀膨胀和腐蚀膨胀:使图像扩大膨胀:使图像扩大 A和和B是两个集合,是两个集合,A被被B膨胀定义为:膨胀定义为:上式表示:上式表示:B的反射进行平移与的反射进行平移与A的交集不为空的交集不为空 B的反射:相对于自身原点的映象的反射:相对于自身原点的映象 B的平移:对的平移:对B的反射进行位移的反射进行位移膨胀的另一个定义膨胀的另一个定义上式表示:上式表示:B的反射进行平移与的反射进行平移与A的交集是的交集是A的子

23、的子集集313233膨胀与腐蚀膨胀与腐蚀膨胀膨胀-算法实现过程如下算法实现过程如下:将结构元素将结构元素B的原点移至集合的原点移至集合A的某一点的某一点,将结构元素中点的坐标与集合将结构元素中点的坐标与集合A中该点坐标相加中该点坐标相加,得到对集合中一点的膨胀运算结果得到对集合中一点的膨胀运算结果.对集合对集合A中所有元素重复该过程中所有元素重复该过程34=35膨胀应用举例膨胀应用举例桥接文字裂缝桥接文字裂缝优点:在一幅二值图像中直接得到结果,对比低优点:在一幅二值图像中直接得到结果,对比低通滤波方法通滤波方法36膨胀和腐蚀膨胀和腐蚀腐蚀:使图像缩小腐蚀:使图像缩小 A和和B是两个集合,是两个

24、集合,A被被B腐蚀定义为:腐蚀定义为:集合集合B称为结构元素称为结构元素A B由将由将B平移平移z但仍包含在但仍包含在A内的所有点内的所有点z组成。组成。如果如果B看作为模板,则看作为模板,则A B由在平移模板的由在平移模板的过程中,所经可以填入过程中,所经可以填入A内部的模板的原点组内部的模板的原点组成。成。37腐蚀腐蚀对一个给定的目标图像对一个给定的目标图像X和一个结和一个结构元素构元素 S,将,将S在图像上移动。在在图像上移动。在每一个当前位置每一个当前位置x,S+x只有三种可只有三种可能的状态能的状态第一种情形说明第一种情形说明S+x与与X相关最大相关最大,第二种情形说明第二种情形说明

25、S+x与与X不相关,不相关,第三种情形说明第三种情形说明S+x与与X只是部分只是部分相关相关X用用S腐蚀的结果是所有使腐蚀的结果是所有使S平移平移x后仍在后仍在X中的中的x的集合。换句话说的集合。换句话说,用,用S来腐蚀来腐蚀X得到的集合是得到的集合是S完全完全包括在包括在X中时中时S的原点位置的集合的原点位置的集合。膨胀和腐蚀膨胀和腐蚀383940膨胀和腐蚀膨胀和腐蚀腐蚀的作用腐蚀的作用腐蚀在数学形态学运算中的作用是消除物体边腐蚀在数学形态学运算中的作用是消除物体边界点界点如果结构元素取如果结构元素取33的像素块,腐蚀将使物体的像素块,腐蚀将使物体的边界沿周边减少一个像素的边界沿周边减少一个

26、像素腐蚀可以把小于结构元素的物体毛刺、小凸腐蚀可以把小于结构元素的物体毛刺、小凸起去除,这样选取不同大小的结构元素,就起去除,这样选取不同大小的结构元素,就可以在原图像中去掉不同大小的物体可以在原图像中去掉不同大小的物体如果两个物体之间有细小的连通,那么当结构如果两个物体之间有细小的连通,那么当结构元素足够大时,通过腐蚀运算可以将两个物体元素足够大时,通过腐蚀运算可以将两个物体分开分开41膨胀和腐蚀膨胀和腐蚀腐蚀运算的示例腐蚀运算的示例图图(a)中的阴影部分为集合中的阴影部分为集合X,图,图(b)中的中的阴中的中的阴影部分为结构元素影部分为结构元素S,而图,而图(c)中黑色部分给出中黑色部分给

27、出了结果。了结果。由图可见,腐蚀将图像区域收缩小了。由图可见,腐蚀将图像区域收缩小了。42膨胀和腐蚀膨胀和腐蚀腐蚀应用举例腐蚀应用举例使用腐蚀消除图像的细节部分,产生滤波器的使用腐蚀消除图像的细节部分,产生滤波器的作用作用包含边长为包含边长为1,3,5,7,9和和15像素正方形的二像素正方形的二值图像值图像使用使用1313像素大小像素大小的结构元素腐蚀原图的结构元素腐蚀原图像的结果像的结果使用使用1313像素大小的结像素大小的结构元素膨胀图构元素膨胀图b,恢复原来,恢复原来1515尺寸的正方形尺寸的正方形43腐蚀与膨胀并不互为逆运算腐蚀与膨胀并不互为逆运算AB(A B) B开运算先腐蚀再膨胀)

28、开运算先腐蚀再膨胀)A AB B44开操作和闭操作开操作和闭操作开操作:使图像的轮廓变得光滑,断开狭窄的间开操作:使图像的轮廓变得光滑,断开狭窄的间断和消除细的突出物断和消除细的突出物 使用结构元素使用结构元素B对集合对集合A进行开操作,定义为:进行开操作,定义为: AoB = (AB) B含义:先用含义:先用B对对A腐蚀,然后用腐蚀,然后用B对结果膨胀对结果膨胀另一个定义另一个定义 AoB = (B)z | (B)z A45开操作的几何解释开操作的几何解释AoB的边界通过的边界通过B中的点完成中的点完成 B在在A的边界内转动时,的边界内转动时,B中的点所能到达的中的点所能到达的A的边界的最远

29、点的边界的最远点46开运算去掉了凸角开运算去掉了凸角(a)结构元素结构元素S1和和S2;(b) XS1;(c) XS247开操作和闭操作开操作和闭操作闭操作:同样使图像的轮廓变得光滑,但与开闭操作:同样使图像的轮廓变得光滑,但与开操作相反,它能消除狭窄的间断和长细的鸿沟操作相反,它能消除狭窄的间断和长细的鸿沟,消除小的孔洞,并填补轮廓线中的裂痕,消除小的孔洞,并填补轮廓线中的裂痕使用结构元素使用结构元素B对集合对集合A进行闭操作,定义为进行闭操作,定义为: AB = (A B)B含义:先用含义:先用B对对A膨胀,然后用膨胀,然后用B对结果腐蚀对结果腐蚀48闭操作的几何解释闭操作的几何解释AB的

30、边界通过的边界通过B中的点完成中的点完成B在在A的边界外部转动的边界外部转动凹形结构凹形结构49开操作和闭操作应用举例开操作和闭操作应用举例CDE先开操作再闭操作,构成噪声滤波器先开操作再闭操作,构成噪声滤波器50开操作和闭操作应用举例开操作和闭操作应用举例a图是受噪声污染的指纹二值图像,噪声为黑色背景上的亮元素和亮图是受噪声污染的指纹二值图像,噪声为黑色背景上的亮元素和亮指纹部分的暗元素指纹部分的暗元素b图是使用的结构元素图是使用的结构元素c图是使用结构元素对图图是使用结构元素对图a腐蚀的结果:黑色背景噪声消除了,指纹中腐蚀的结果:黑色背景噪声消除了,指纹中的噪声尺寸增加的噪声尺寸增加d图是

31、使用结构元素对图图是使用结构元素对图c膨胀的结果:包含于指纹中的噪声分量的尺膨胀的结果:包含于指纹中的噪声分量的尺寸被减小或被完全消除,带来的问题是:在指纹纹路间产生了新的间寸被减小或被完全消除,带来的问题是:在指纹纹路间产生了新的间断断e图是对图图是对图d膨胀的结果,图膨胀的结果,图d的大部分间断被恢复,但指纹的线路变的大部分间断被恢复,但指纹的线路变粗了粗了 f图是对图图是对图e腐蚀的结果,即对图腐蚀的结果,即对图d中开操作的闭操作。最后结果消除中开操作的闭操作。最后结果消除了噪声斑点了噪声斑点缺陷:指纹线路还是有缺点,可以通过加入限制性条件解决缺陷:指纹线路还是有缺点,可以通过加入限制性

32、条件解决51形态学的主要应用形态学的主要应用边界提取边界提取 定义定义 (A)= A(AB)上式表示:先用上式表示:先用B对对A腐蚀,然后用腐蚀,然后用A减去腐蚀得减去腐蚀得到,到,B是结构元素是结构元素52形态学的主要应用形态学的主要应用边界提取举例边界提取举例1表示为白色,表示为白色,0表示为黑色表示为黑色53形态学的主要应用形态学的主要应用区域填充区域填充 定义定义:设所有非边界设所有非边界(背景背景)点标记为点标记为0,则将,则将1赋给赋给p点开始,点开始,实现目的:从边界内的一个点开始,用实现目的:从边界内的一个点开始,用1填填充整个区域充整个区域X0=p,如果,如果Xk=Xk-1,

33、则算法在迭代的第,则算法在迭代的第k步步结束。结束。Xk和和A的并集包含被填充的集合和它的并集包含被填充的集合和它的边界的边界 条件膨胀:如果对上述公式的左部不加限制条件膨胀:如果对上述公式的左部不加限制,则上述公式的膨胀将填充整个区域。利用,则上述公式的膨胀将填充整个区域。利用Ac 的交集将结果限制在感兴趣区域内,实现的交集将结果限制在感兴趣区域内,实现条件膨胀。条件膨胀。 Ac是是A的补集。的补集。54形态学的主要应用形态学的主要应用区域填充区域填充55形态学的主要应用形态学的主要应用连通分量的提取连通分量的提取实现目的:在二值图像中提取连通分量实现目的:在二值图像中提取连通分量令令Y表示

34、一个包含于集合表示一个包含于集合A中的连通分量,并中的连通分量,并假设假设Y中的一个点中的一个点p是已知的。用下列迭代式生是已知的。用下列迭代式生成成Y的所有元素:的所有元素:Xk =(Xk1 B)A k =1,2,3,.x0=p,如果如果Xk=Xk-1,算法收敛,令,算法收敛,令Y=Xk56形态学的主要应用形态学的主要应用连通分量提取的应用举例连通分量提取的应用举例使用连通分量检测包装食物中的外来物使用连通分量检测包装食物中的外来物57作业作业41. 用用OpenCV实现作业实现作业2;对某一个二值化后的图像进行腐;对某一个二值化后的图像进行腐蚀、膨胀、开、闭操作,将结果保存下来;把二值图像

35、中蚀、膨胀、开、闭操作,将结果保存下来;把二值图像中的较小的连通分量去掉,只保留最大的前两个分量,将结的较小的连通分量去掉,只保留最大的前两个分量,将结果保存成文件果保存成文件2.从摄像头得到视频流,从中任意选取从摄像头得到视频流,从中任意选取5帧,保存成图像帧,保存成图像文件文件3.从从AVI文件读取视频,从中任意选取文件读取视频,从中任意选取5帧,保存成图像文帧,保存成图像文件件4.从摄像头得到视频流,在指定的窗口内实时显示该视频从摄像头得到视频流,在指定的窗口内实时显示该视频58教学内容教学内容第一部分:基本概念和操作第一部分:基本概念和操作图像像素间联系图像像素间联系图像的基本统计特性

36、图像的基本统计特性直方图直方图基本图像处理技术基本图像处理技术点运算、二值图像形态学操作点运算、二值图像形态学操作、连通分量分析、连通分量分析第二部分:第二部分: OpenCVOpenCV概述概述基础结构与操作基础结构与操作基本基本OpenCV程序与示例程序与示例59 第二部分:第二部分: OpenCVOpenCV概述概述基础结构与操作基础结构与操作基本基本OpenCV程序与示例程序与示例注:本讲义中部分代码来自注:本讲义中部分代码来自OpenCV样例,部分样例,部分代码来自代码来自 New - ProjectCreating the Project66Configuring MSVS 2k3

37、Right Click the Source Files Folder under the project name (Tutorial in this case)Add - Add new ItemCreate the First FileSelect C+ file and give it a nameCreating a file makes it possible to set Additional Include Directives in the C/C+ pane under the project properties.67Configuring MSVS 2k3In orde

38、r to build projects using OpenCV the required libraries and directives must be included in the projects propertiesRight Click the name of the project and select Properties (Tutorial in this case)Open the Properties Pane68Configuring MSVS 2k3Under the C/C+ tab select GeneralSet Additional Include Dir

39、ectivesSelect the Additional Include DirectivesAdd the full path to each of the folders which contain .h files required to use OpenCVBe sure to include trailing C:Program FilesOpenCVcvauxincludeC:Program FilesOpenCVcxcoreincludeC:Program FilesOpenCVcvincludeC:Program FilesOpenCVotherlibshighguiC:Pro

40、gram FilesOpenCVotherlibscvcaminclude Utilized Directives69Configuring MSVS 2k3Under the Linker tab select InputSet Additional DependenciesSelect the Additional DependenciesC:Program FilesOpenCVlibcv.libC:Program FilesOpenCVlibcvaux.libC:Program FilesOpenCVlibcxcore.libC:Program FilesOpenCVlibcvcam.

41、libC:Program FilesOpenCVlibhighgui.libUtilized DependenciesAdd the full path to each of the .lib files required to use OpenCVBe sure to keep the paths in quotes70Testing MSVS 2k3Now that the environment is configured it would be a good idea to test it to make sure that a program will correctly build

42、 and run.#include #include /*This will pop up a small box with Hello World as the text.*/int main( int argc, char* argv ) /declare for the height and width of the image int height = 320; int width = 240; /specify the point to place the text CvPoint pt = cvPoint( height/4, width/2 ); /Create an 24 de

43、pth, 3 chanels IplImage* hw = cvCreateImage(cvSize(height, width), 24, 3); /initialize the font CvFont font; cvInitFont( &font, CV_FONT_HERSHEY_COMPLEX,1.0, 1.0, 0, 1, CV_AA); /place the text on the image using the font cvPutText(hw, Hello World, pt, &font, CV_RGB(150, 0, 0) ); /create the w

44、indow container cvNamedWindow(Hello World, 0); /display the image in the container cvShowImage(Hello World, hw); /hold the output windows cvWaitKey(0); return 0;The enclosed code can be cut and pasted into the file created in the project space to test OpenCVTesting the First Program71Testing MSVS 2k

45、3Output of ProgramThe program is built by selecting:Build - Build SolutionOr by pressing F7Building the ProgramThe program is run by selecting:Debug - Start|Start without DebuggingOr by pressing F5 or -F5Running the Program72OpenCV 编码样式指南编码样式指南1、文件命名:有、文件命名:有cv和和cvaux库文件的命名必须服库文件的命名必须服从于以下规则:从于以下规则:

46、 所有的所有的CV库文件名前缀为库文件名前缀为cv 混合的混合的C/C+接口头文件扩展名为接口头文件扩展名为 .h 纯纯C+接口头文件扩展名为接口头文件扩展名为 .hpp 实现文件扩展名为实现文件扩展名为 .cpp 为了与为了与POSIX兼容,文件名都以小写字符组成兼容,文件名都以小写字符组成73OpenCV 编码样式指南编码样式指南2、文件结构、文件结构每个文件以每个文件以BSD兼容的许可声明兼容的许可声明(模板在模板在Contributors_BSD_Licsense.htm文件中可以找到文件中可以找到)开开头;头;一行最多一行最多90个字符,不包括行结束符个字符,不包括行结束符 不使用制

47、表符不使用制表符 缩进为缩进为4个空格符,所以制表符应该用个空格符,所以制表符应该用1-4个空格个空格替换依据开始列确定)替换依据开始列确定) 头文件必须使用保护宏,防止文件被重复包含。头文件必须使用保护宏,防止文件被重复包含。混合混合C/C+接口头文件用接口头文件用extern C 包含包含C语言语言定义。定义。为了使预编译头机制在为了使预编译头机制在Visual C+中工作正常,源中工作正常,源文件必须在其它头文件前包含文件必须在其它头文件前包含precomp.h头文件。头文件。74OpenCV 编码样式指南编码样式指南3、命名约定、命名约定OpenCV中使用大小写混合样式来标识外部函数、

48、中使用大小写混合样式来标识外部函数、数据类型和类方法。数据类型和类方法。宏全部使用大写字符,词间用下划线分隔。宏全部使用大写字符,词间用下划线分隔。所有的外部或内部名称,若在多个文件中可见,所有的外部或内部名称,若在多个文件中可见,则必须含有前缀:则必须含有前缀: 外部函数使用前缀外部函数使用前缀cv 内部函数使用前缀内部函数使用前缀Icv 数据结构数据结构(C结构体、枚举、联合体、类结构体、枚举、联合体、类)使用前缀使用前缀Cv 外部或某些内部宏使用前缀外部或某些内部宏使用前缀CV_ 内部宏使用前缀内部宏使用前缀ICV_ 75OpenCV 编码样式指南编码样式指南4、函数接口设计:为了保持库

49、的一致性,以如下方式设、函数接口设计:为了保持库的一致性,以如下方式设计接口非常重要。函数接口元素包括:计接口非常重要。函数接口元素包括: 功能功能 称号称号 返回值返回值 参数类型参数类型 参数顺序参数顺序 参数默认值参数默认值 函数功能必须定义良好并保持精简。函数应该容易镶入到函数功能必须定义良好并保持精简。函数应该容易镶入到使用其它使用其它OpenCV函数的不同处理过程。函数名称应该简函数的不同处理过程。函数名称应该简单并能体现函数的功能。单并能体现函数的功能。大多数函数名形式:大多数函数名形式:cv76A Simple OpenCV Program1. #include 2. #inc

50、lude 3. #include 4. int main( int argc, char* argv ) 5. CvPoint center;6. double scale=-3;7. IplImage* image = argc=2 ? cvLoadImage(argv1) : 0;8. if(!image) return -1;9. center = cvPoint(image-width/2,image-height/2);10. for(int i=0;iheight;i+)11. for(int j=0;jwidth;j+) 12. double dx=(double)(j-cent

51、er.x)/center.x;13. double dy=(double)(i-center.y)/center.y;14. double weight=exp(dx*dx+dy*dy)*scale);15. uchar* ptr = &CV_IMAGE_ELEM(image,uchar,i,j*3);16. ptr0 = cvRound(ptr0*weight);17. ptr1 = cvRound(ptr1*weight);18. ptr2 = cvRound(ptr2*weight); 19. cvSaveImage(copy.png, image );20. cvNamedWi

52、ndow( test, 1 );21. cvShowImage( test, image );22. cvWaitKey();23. return 0; Lena.jpg77基本数据结构基本数据结构点:点:CvPoint 、CvPoint2D32f、CvPoint3D32f 矩形框大小:矩形框大小:CvSize 、CvSize2D32f 矩形框:矩形框:CvRect 可以存放可以存放1-4个数值的数组:个数值的数组:CvScalar 定义迭代算法的终止规则:定义迭代算法的终止规则:CvTermCriteria 矩阵:矩阵:CvMat 、CvMatND 、CvSparseMat IPL图像头部:

53、图像头部:IplImage 定义不确定的数组:定义不确定的数组:CvArr (仅作函数参数)(仅作函数参数)78点数据结构点数据结构CvPoint 二维坐标系下的点,类型为整型二维坐标系下的点,类型为整型 typedef struct CvPoint int x; /* X坐标坐标, 通常以通常以0为基点为基点 */int y; /* y坐标坐标, 通常以通常以0为基点为基点 */CvPoint;/* 构造函数构造函数 */inline CvPoint cvPoint( int x, int y );/* 从从 CvPoint2D32f类型转换得来类型转换得来 */inline CvPoint

54、 cvPointFrom32f( CvPoint2D32f point )CvPoint2D32f :二维坐标下的点,类型为浮点:二维坐标下的点,类型为浮点CvPoint3D32f :三维坐标下的点,类型为浮点:三维坐标下的点,类型为浮点79矩形框大小数据结构矩形框大小数据结构CvSize 矩形框大小,以像素为精度矩形框大小,以像素为精度 typedef struct CvSizeint width; /* 矩形宽矩形宽 */int height; /* 矩形高矩形高 */CvSize;/* 构造函数构造函数 */inline CvSize cvSize( int width, int hei

55、ght );CvSize2D32f 80矩形框数据结构矩形框数据结构CvRect 矩形框的偏移和大小矩形框的偏移和大小 typedef struct CvRectint x; /* 方形的最左角的方形的最左角的x-坐标坐标 */int y; /* 方形的最上或者最下角的方形的最上或者最下角的y-坐标坐标 */int width; /* 宽宽 */int height; /* 高高 */CvRect;/* 构造函数构造函数*/inline CvRect cvRect(int x, int y, int width, int height);81矩阵数据结构矩阵数据结构CvMat 二维矩阵二维矩阵

56、 typedef struct CvMat int type; /* CvMat 标识标识, 元素类型和标记元素类型和标记 */int step; /* 以字节为单位的行数据长度以字节为单位的行数据长度*/int rows; /*行数行数*/int cols; /*列数列数*/ int* refcount; /* 数据引用计数数据引用计数 */unionuchar* ptr;short* s;int* i;float* fl;double* db; data; /* data 指针指针 */ 82分配矩阵空间分配矩阵空间CvMat* cvCreateMat(int rows, int cols

57、, int type);type: 矩阵元素类型矩阵元素类型. 格式为格式为CV_(S|U|F)C. 例如例如: CV_8UC1 表示表示8位无符号单通道矩阵位无符号单通道矩阵, CV_32SC2表示表示32位有符号双通道矩阵位有符号双通道矩阵.例程例程: CvMat* M = cvCreateMat(4,4,CV_32FC1); 释放矩阵空间释放矩阵空间: CvMat* M = cvCreateMat(4,4,CV_32FC1); cvReleaseMat(&M);存取矩阵元素存取矩阵元素:假设需要存取一个假设需要存取一个2维浮点矩阵的第维浮点矩阵的第(i,j)个元素个元素. cvm

58、Set(M,i,j,2.0); / Set M(i,j)t = cvmGet(M,i,j); / Get M(i,j)83矩阵数据结构矩阵数据结构CvMatND:多维、多通道密集数组:多维、多通道密集数组 CvSparseMat:多维、多通道稀疏数组:多维、多通道稀疏数组CvArr:不确定数组:不确定数组84图像头数据图像头数据IplImage:IPL 图像头图像头85图像头数据图像头数据IplImage:IPL 图像头图像头typedef struct _IplImage int nSize; /* IplImage大小大小 */int ID; /* 版本版本 (=0)*/int nChan

59、nels; /* 大多数大多数OPENCV函数支持函数支持1,2,3 或或4 个通道个通道 */int alphaChannel; /* 被被OpenCV忽略忽略 */int depth; /* 像素的位深度像素的位深度: IPL_DEPTH_8U,IPL_DEPTH_8S, IPL_DEPTH_16U,IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F 可支可支持持 */char colorModel4; char channelSeq4; /* 被被OpenCV忽略忽略 */int dataOrder; /* 0 -

60、交叉存取颜色通交叉存取颜色通道道, 1 - 分开的颜色通道分开的颜色通道.cvCreateImage只能创建交叉存只能创建交叉存取图像取图像 */int origin; /* 0 - 顶顶左结构左结构,1 - 底底左结构左结构 (BMP风格风格) */int align; /* 图像行排列图像行排列 (4 or 8). OpenCV 用用widthStep 替代替代 */86int width; /* 图像宽像素数图像宽像素数 */int height; /* 图像高像素数图像高像素数*/struct _IplROI *roi;/* 图像感兴趣区域图像感兴趣区域. 当该值非空只对该区域进行处理当该值非空只对该区域进行处理 */struc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论