1、 图像图像/视频处理技术视频处理技术注:本讲内容参考了五邑大学李鹤喜数字图像技术讲义和北京大学数字媒体研究注:本讲内容参考了五邑大学李鹤喜数字图像技术讲义和北京大学数字媒体研究所数字媒体技术基础课件所数字媒体技术基础课件 数字媒体技术基础第三讲(数字媒体技术基础第三讲(8课时)课时)教学目标教学目标了解数字图像/视频处理的基本概念和基本方法掌握目前最常用的数字图像/视频处理开发包-OpenCV,了解如何用OpenCV开发基本的数字图像/视频处理程序2/155教学内容教学内容第一部分:基本概念和操作第一部分:基本概念和操作图像像素间联系图像的基本统计特性直方图基本图像处理技术点运算、点运算、二值
2、图像形态学操作二值图像形态学操作、连通分量分析、连通分量分析第二部分:第二部分:OpenCVOpenCV概述基础结构与操作基本OpenCV程序与示例3/155 第一部分:基本概念和操作第一部分:基本概念和操作4/155像素的邻域像素的邻域(1)p的的4邻域邻域坐标为(x,y)的像素p有4个水平和垂直的相邻像素,坐标分别为:(x+1,y),(x-1,y),(x,y+1),(x,y-1),这个像素集称为p的4邻域,用N4(p)表示。5/155像素的邻域像素的邻域(2)p的4个对角邻像素坐标分别为:(x+1,y+1),(x-1,y-1),(x-1,y+1),(x-1,y-1),用N D(p)表示。(
3、3)p的8邻域 N4(p)+N D(p)。6/1551、像素的邻接、像素的邻接如果如果接触接触则则邻接邻接。邻接仅考虑了像素间的。邻接仅考虑了像素间的空间关系空间关系。如一个像素和在它邻域中的像素是接触的,所以是邻接的如一个像素和在它邻域中的像素是接触的,所以是邻接的2、像素的连接、像素的连接两个像素的连接,则需满足:两个像素的连接,则需满足:它们在空间上是它们在空间上是接触接触的(即它们是的(即它们是邻接邻接的)的)它们的它们的灰度值(或者其他属性值)满足某个特定的相似准则灰度值(或者其他属性值)满足某个特定的相似准则(如它们的灰度值相等如它们的灰度值相等)7/155设设V表示定义连接的灰度
4、值的集合表示定义连接的灰度值的集合4连接连接:2个像素个像素p和和r在在V中取值,且中取值,且r在在N4(p)中)中8连接连接:2个像素个像素p和和r在在V中取值,且中取值,且r在在N8(p)中)中m连接连接(混合连接混合连接):2个像素个像素p和和r在在V中取值,且满足下列条件之一:中取值,且满足下列条件之一:r在在N4(p)中)中 r在在ND(p)中)中 且且 N4(p)N4(r)不包含)不包含V中取值的像素中取值的像素8/155abpcdref1110010111110101r不在不在N4(p)中,中,r在在ND(p)中,中,N4(p)中包括标有中包括标有 a,b,c,d四个像素,四个像
5、素,N4(r)中包括标有中包括标有 c,d,e,f 四个像素,四个像素,且且 N4(p)N4(r)包括标有)包括标有c,d的两个像素的两个像素9在像素之间同时存在在像素之间同时存在4连接和连接和8连接时,优先采用连接时,优先采用4连接,并连接,并屏蔽两个和同一像素间存在屏蔽两个和同一像素间存在4连接的像素之间的连接的像素之间的8连接。连接。混合连接是混合连接是8连接的变型,引进它是为了消除使用连接的变型,引进它是为了消除使用8连接时出现连接时出现的多路问题。的多路问题。01101000101101000101101000110两像素间的通路:两像素间的通路:通路路,如不同,可定义不同的通根据所
6、采用的邻接定义为通路长度,邻接,其中)与(且()(这里的独立像素组成由一系列具有坐标的一条通路的像素到具有坐标的像素从具有坐标41,),(),(,),(),(),.,(),(),(),(11001100nniyxyxtsyxyxyxyxyxyxqtspyxjijinnnn如果这条通路上的所有像素的灰度值均满足某个特定的相似准则,如果这条通路上的所有像素的灰度值均满足某个特定的相似准则,则说明则说明两个像素两个像素p和和q是连通是连通的。根据所采用的的。根据所采用的邻接定义邻接定义的不同得到的不同得到不同的连通。如不同的连通。如4连通,连通,8连通连通像素的连接是像素连通的一种特例。像素的连接是
7、像素连通的一种特例。n=1时,两个连通的像素也是连接的。时,两个连通的像素也是连接的。像素的连通像素的连通11随堂练习:以下p-q通路各是什么通路?12图像的子集合图像的子集合:图像中的一部分,根据像素间的联系,可将图像中:图像中的一部分,根据像素间的联系,可将图像中某些像素结合组成图像的子集合。某些像素结合组成图像的子集合。图像子集的连接图像子集的连接:如果:如果S中的一个或一些像素与中的一个或一些像素与T中的一个或一些中的一个或一些像素连接,则两个图像子集像素连接,则两个图像子集S和和T是连接的是连接的要考虑:是否是邻接子集,它们中邻接像素的灰度值是否满足某个要考虑:是否是邻接子集,它们中
8、邻接像素的灰度值是否满足某个特定的相似准则特定的相似准则图像子集的邻接图像子集的邻接:如果图像子集如果图像子集S中的一个或一些像素与图像子集中的一个或一些像素与图像子集T中的一个或一些像中的一个或一些像素邻接,则两个图像子集素邻接,则两个图像子集S和和T是邻接是邻接的。根据所采用的的。根据所采用的像素邻接定像素邻接定义义,可得到图像子集,可得到图像子集4邻接或邻接或8邻接邻接像素集合的邻接和连通像素集合的邻接和连通13/155设设p和和q是一个图像子集是一个图像子集S中的两个像素,如果存在一条完全由在中的两个像素,如果存在一条完全由在S中中的像素组成的从的像素组成的从p到到q的通路,那么就称的
9、通路,那么就称p在在S中与中与q相连通相连通对对S中任一像素中任一像素p,所有与,所有与p相连通且又在相连通且又在S 中的像素的集合(包括中的像素的集合(包括p)合起来称为合起来称为S中的一个连通分量中的一个连通分量。如果如果S中只有一个连通组元,即中只有一个连通组元,即S中所有像素都互相连通,则称中所有像素都互相连通,则称S是是一个连通集一个连通集。两个互不邻接但与同一图像子集都邻接(在同一个两个互不邻接但与同一图像子集都邻接(在同一个V下)的图像下)的图像子子集是互相连通的集是互相连通的。图像中同一个连通集中的图像中同一个连通集中的任两个像素互相连通任两个像素互相连通,而不同连通集中的,而
10、不同连通集中的像素互不连通像素互不连通。14/155连通区域分析(连通区域分析(Connected Component Analysis)CVPR和图像分析处理的众多应用领域中较为常用和基本的方法。例如:OCR识别中字符分割提取(车牌识别、文本识别、字幕识别等)、视觉跟踪中的运动前景目标分割与提取(行人入侵检测、遗留物体检测、基于视觉的车辆检测与跟踪等)、医学图像处理(感兴趣目标区域提取)、等等。也就是说,在需要将前景目标提取出来以便后续进行处理的应用场景中都能够用到连通区域分析方法,通常连通区域分析处理的对象是一张二值化后的图像。15/155像素之间的联系与像素在空间的接近程度有关。像素在空
11、间的接近像素之间的联系与像素在空间的接近程度有关。像素在空间的接近程度可用像素之间的距离来测量。程度可用像素之间的距离来测量。距离量度函数:用来测量距离距离量度函数:用来测量距离三个条件,(三个条件,(1)表明两像素之间的距离总是正的(两像素空间位置相同时,其)表明两像素之间的距离总是正的(两像素空间位置相同时,其间的距离为间的距离为0)()(2)表明两像素之间的距离与起终点的选择无关。或者说距离是)表明两像素之间的距离与起终点的选择无关。或者说距离是相对的。(相对的。(3)表明两像素之间的最短距离是沿直线的。)表明两像素之间的最短距离是沿直线的。),(),(),()3(),(),()2()0
12、),(,(0),(1D),(),(),(,rqDqpDrpDpqDqpDqpDqpqpDvutsyxrqp当且仅当)(它要满足:为一个距离量度函数,函数坐标分别为给定三个像素图像间的距离图像间的距离16在数字图像中的距离量度函数:两个像素在数字图像中的距离量度函数:两个像素p和和q,坐标,坐标(x,y),(s,t)欧氏距离(范数欧氏距离(范数/模为模为2的距离):的距离):与坐标为与坐标为(x,y)的像素的欧氏距离小于或等于某个值的像素的欧氏距离小于或等于某个值d的像素都包括的像素都包括在以在以(x,y)为中心以为中心以d为半径的为半径的圆圆中。中。在数字图像中圆只能近似表示在数字图像中圆只能
13、近似表示。城区距离(范数城区距离(范数/模为模为1的距离):的距离):D4距离与坐标为与坐标为(x,y)的像素的城区距离小于或等于某个值的像素的城区距离小于或等于某个值d的像素组成以的像素组成以(x,y)为中心的为中心的菱形菱形。2122)()(),(tysxqpDEtysxqpD),(417D8=1的像素就是的像素就是(x,y)的的8近邻像素,所以像素近邻像素,所以像素p的的8邻域可定义邻域可定义为:为:棋盘距离(范数为棋盘距离(范数为的距离):的距离):与坐标为与坐标为(x,y)的像素的棋盘距离小于或等于某个值的像素的棋盘距离小于或等于某个值d的像素组成以的像素组成以(x,y)为中心的为中
14、心的正方形。正方形。D4=1的像素就是的像素就是(x,y)的的4近邻像素,所以近邻像素,所以像素像素p的的4邻域邻域定义定义为:为:1),()(44rpDrpNtysxqpD,max),(81),()(88rpDrpN18图像的基本统计特性图像的基本统计特性直方图直方图直方图直方图(Histogram):表达一幅图像的灰度级:表达一幅图像的灰度级(或颜色或颜色)分布情况的统计表分布情况的统计表横坐标:灰度(或颜色量化值)横坐标:灰度(或颜色量化值)纵坐标:某一灰度值(或颜色量化值)的像素个数纵坐标:某一灰度值(或颜色量化值)的像素个数直方图的性质直方图的性质丢失空间信息丢失空间信息一个图像有唯
15、一的直方图,但一个直一个图像有唯一的直方图,但一个直方图可能对应多幅图像方图可能对应多幅图像一幅图像各区域的直方图之和等于全一幅图像各区域的直方图之和等于全图的直方图图的直方图直方图的用途直方图的用途数字化参数:用于判断一幅图像是否数字化参数:用于判断一幅图像是否合理利用了所有可选的灰度级范围合理利用了所有可选的灰度级范围边界阈值选取:若灰度直方图具有较边界阈值选取:若灰度直方图具有较好的二峰性,则可以方便进行二值化好的二峰性,则可以方便进行二值化19/155图像的基本统计特性图像的基本统计特性直方图直方图直方图的计算:对直方图的计算:对(M,N)大小的图像,设灰度(颜大小的图像,设灰度(颜色
16、)级为色)级为L:初始化:histk=0,k=0,L-1统计:histf(x,y)+;x,y=0,M-1,0,N-1归一化:histf(x,y)/=M*N20/155基本图像处理技术基本图像处理技术图像的点运算图像的点运算代数运算代数运算图像的代数运算是指对两幅图像进行点对点的图像的代数运算是指对两幅图像进行点对点的四则运算而得到一幅新的输出图像。图像的代四则运算而得到一幅新的输出图像。图像的代数运算在图像处理中有着广泛的应用,它除了数运算在图像处理中有着广泛的应用,它除了可以实现自身所需要的算术操作,还能为许多可以实现自身所需要的算术操作,还能为许多复杂的图像处理提供准备复杂的图像处理提供准
17、备1.加法运算加法运算 2.减法运算(差分)减法运算(差分)),(),(),(yxByxAyxC),(),(),(yxByxAyxC21/155图像的点运算+=22/155图像的点运算=图像求差可以消除背景23/155图像的点运算 (a)原图)原图(b)梯度运算(相邻)梯度运算(相邻2个像素个像素间做差)间做差)24/155基本图像处理技术-形态学操作集合论基础知识集合论基础知识膨胀和腐蚀膨胀和腐蚀(Dilation&Erosion):产生滤波器作用:产生滤波器作用开操作和闭操作开操作和闭操作(Opening&Closing):产生滤波器:产生滤波器作用作用形态学操作在图像处理中的应用形态学操
18、作在图像处理中的应用边界提取边界提取区域填充区域填充连通分量的提取连通分量的提取凸壳,细化,粗化凸壳,细化,粗化25/155图像形态学图像形态学形态学形态学:一般指生物学中研究动物和植物结构的一一般指生物学中研究动物和植物结构的一个分支个分支,研究生物的成年个体的外形和器官构造(研究生物的成年个体的外形和器官构造(解剖学、组织学和器官学)解剖学、组织学和器官学)数学形态学(也称图像代数)表示以形态为基础数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具(对图像进行分析的数学工具(1960s)形态学图像处理的应用可以简化图像数据,保持形态学图像处理的应用可以简化图像数据,保持它们
19、基本的形状特性,并除去不相干的结构它们基本的形状特性,并除去不相干的结构研究数字图像中物体目标的结构及拓扑关系数学形态学应用在图像增强、分割、恢复、边缘检测、纹理分析等领域作为预处理步骤:去除噪声(滤波器滤波器)目标提取26/155图像形态学图像形态学基本思想基本思想:表现为一种邻域运算形式;一种特殊定义的邻域称之为“结构单元结构单元”(Structure Element),在每个像素位置上它与二值图像对应的区域进行特定的逻辑运算,逻辑运算的结果为输出图像的相应像素。形态学运算的效果取决于结构单元结构单元的大小、内容以及逻辑运算的性质。形态学图像处理的数学基础和所用语言是集合论形态学图像处理的
20、数学基础和所用语言是集合论形态学图像处理的基本运算有形态学图像处理的基本运算有4个:膨胀、腐蚀、个:膨胀、腐蚀、开操作和闭操作开操作和闭操作27/155集合论基础知识集合论基础知识集合的并、交、补、差集合的并、交、补、差28/155集合论基础知识集合论基础知识集合集合B的反射的反射 ,定义为,定义为 =w|w=b,bB即关即关于原集合原点对称于原集合原点对称集合集合A平移到点平移到点z=(z1,z2),表示为表示为(A)z,定义为,定义为 (A)z=c|c=a+z,aA29/155二值形态学二值形态学二值形态学中的运算对象是集合。设二值形态学中的运算对象是集合。设A为图像集为图像集合,合,S为
21、结构元为结构元素,数学形态学运算是用为结构元为结构元素,数学形态学运算是用S对对A进行操作。进行操作。需要指出,实际上结构元素本身也是一个图像集需要指出,实际上结构元素本身也是一个图像集合。对每个结构元素可以指定一个原点,它是结合。对每个结构元素可以指定一个原点,它是结构元素参与形态学运算的参考点。构元素参与形态学运算的参考点。应注意,原点可以包含在结构元素中,也可以不应注意,原点可以包含在结构元素中,也可以不包含在结构元素中,但运算的结果常不相同。包含在结构元素中,但运算的结果常不相同。二值形态学中两个最基本的运算是腐蚀与膨胀二值形态学中两个最基本的运算是腐蚀与膨胀30/155膨胀和腐蚀膨胀
22、和腐蚀膨胀:使图像扩大膨胀:使图像扩大 A和和B是两个集合,是两个集合,A被被B膨胀定义为:膨胀定义为:上式表示:上式表示:B的反射进行平移与的反射进行平移与A的交集不为空的交集不为空 B的反射:相对于自身原点的映象的反射:相对于自身原点的映象 B的平移:对的平移:对B的反射进行位移的反射进行位移膨胀的另一个定义膨胀的另一个定义上式表示:上式表示:B的反射进行平移与的反射进行平移与A的交集是的交集是A的子集的子集31/15532/15533/155膨胀与腐蚀膨胀与腐蚀膨胀膨胀-算法实现过程如下算法实现过程如下:将结构元素将结构元素B的原点移至集合的原点移至集合A的某一点的某一点,将结构元素中点
23、的坐标与集合将结构元素中点的坐标与集合A中该点坐标相加中该点坐标相加,得到对得到对集合中一点的膨胀运算结果集合中一点的膨胀运算结果.对集合对集合A中所有元素重复该过程中所有元素重复该过程34/155=35/155膨胀应用举例膨胀应用举例桥接文字裂缝桥接文字裂缝优点:在一幅二值图像中直接得到结果,对比低通滤波优点:在一幅二值图像中直接得到结果,对比低通滤波方法方法36/155膨胀和腐蚀膨胀和腐蚀腐蚀:使图像缩小腐蚀:使图像缩小 A和和B是两个集合,是两个集合,A被被B腐蚀定义为:腐蚀定义为:集合集合B称为结构元素称为结构元素A B由将由将B平移平移z z但仍包含在但仍包含在A内的所有点内的所有点
24、z z组成。组成。如果如果B看作为模板,则看作为模板,则A B由在平移模板的过程中,由在平移模板的过程中,所经可以填入所经可以填入A内部的模板的原点组成。内部的模板的原点组成。37/155腐蚀腐蚀对一个给定的目标图像对一个给定的目标图像X和一个结构和一个结构元素元素 S,将,将S在图像上移动。在每一个在图像上移动。在每一个当前位置当前位置x,S+x只有三种可能的状态只有三种可能的状态第一种情形说明第一种情形说明S+x与与X相关最大,相关最大,第二种情形说明第二种情形说明S+x与与X不相关,不相关,第三种情形说明第三种情形说明S+x与与X只是部分相关只是部分相关X用用S腐蚀的结果是所有使腐蚀的结
25、果是所有使S平移平移x后后仍在仍在X中的中的x的集合。换句话说,用的集合。换句话说,用S来腐蚀来腐蚀X得到的集合是得到的集合是S完全包括完全包括在在X中时中时S的原点位置的集合。的原点位置的集合。膨胀和腐蚀膨胀和腐蚀38/15539/15540/155膨胀和腐蚀膨胀和腐蚀腐蚀的作用腐蚀的作用腐蚀在数学形态学运算中的作用是消除物体边界点腐蚀在数学形态学运算中的作用是消除物体边界点如果结构元素取如果结构元素取33的像素块,腐蚀将使物体的边界沿的像素块,腐蚀将使物体的边界沿周边减少一个像素周边减少一个像素腐蚀可以把小于结构元素的物体(毛刺、小凸起)去除腐蚀可以把小于结构元素的物体(毛刺、小凸起)去除
26、,这样选取不同大小的结构元素,就可以在原图像中去,这样选取不同大小的结构元素,就可以在原图像中去掉不同大小的物体掉不同大小的物体如果两个物体之间有细小的连通,那么当结构元素足够如果两个物体之间有细小的连通,那么当结构元素足够大时,通过腐蚀运算可以将两个物体分开大时,通过腐蚀运算可以将两个物体分开41/155膨胀和腐蚀膨胀和腐蚀腐蚀运算的示例腐蚀运算的示例图图(a)中的阴影部分为集合中的阴影部分为集合X,图,图(b)中的中的阴中的中的阴影部分为结构元素影部分为结构元素S,而图,而图(c)中黑色部分给出了中黑色部分给出了结果。结果。由图可见,腐蚀将图像(区域)收缩小了。由图可见,腐蚀将图像(区域)
27、收缩小了。42/155膨胀和腐蚀膨胀和腐蚀腐蚀应用举例腐蚀应用举例使用腐蚀消除图像的细节部分,产生滤波器的作用使用腐蚀消除图像的细节部分,产生滤波器的作用包含边长为包含边长为1,3,5,7,9和和15像素正方形的二像素正方形的二值图像值图像使用使用1313像素大小像素大小的结构元素腐蚀原图的结构元素腐蚀原图像的结果像的结果使用使用1313像素大小的结像素大小的结构元素膨胀图构元素膨胀图b,恢复原来,恢复原来1515尺寸的正方形尺寸的正方形43/155腐蚀与膨胀并不互为逆运算腐蚀与膨胀并不互为逆运算AB(A B)B开运算(先腐蚀再膨胀)开运算(先腐蚀再膨胀)A AB B44/155开操作和闭操作
28、开操作和闭操作开操作:开操作:使图像的轮廓变得光滑,断开狭窄的间使图像的轮廓变得光滑,断开狭窄的间断和消除细的突出物断和消除细的突出物 使用结构元素使用结构元素B对集合对集合A进行开操作,定义为:进行开操作,定义为:AoB=(AB)B含义:先用含义:先用B对对A腐蚀,然后用腐蚀,然后用B对结果膨胀对结果膨胀另一个定义另一个定义 AoB=(B)z|(B)z A45/155开操作的几何解释开操作的几何解释AoB的边界通过的边界通过B中的点完成中的点完成 B在在A的边界内转动时,的边界内转动时,B中的点所能到达的中的点所能到达的A的边界的最远点的边界的最远点46/155开运算去掉了凸角开运算去掉了凸
29、角(a)结构元素结构元素S1和和S2;(b)XS1;(c)XS247/155开操作和闭操作开操作和闭操作闭操作闭操作:同样使图像的轮廓变得光滑,但与开:同样使图像的轮廓变得光滑,但与开操作相反,它能消除狭窄的间断和长细的鸿沟操作相反,它能消除狭窄的间断和长细的鸿沟,消除小的孔洞,并填补轮廓线中的裂痕,消除小的孔洞,并填补轮廓线中的裂痕使用结构元素使用结构元素B对集合对集合A进行闭操作,定义为:进行闭操作,定义为:AB=(A B)B含义:先用含义:先用B对对A膨胀,然后用膨胀,然后用B对结果腐蚀对结果腐蚀48/155闭操作的几何解释闭操作的几何解释AB的边界通过的边界通过B中的点完成中的点完成B
30、在在A的边界外部转动的边界外部转动凹形结构凹形结构49/155开操作和闭操作应用举例开操作和闭操作应用举例CDE先开操作再闭操作,构成噪声滤波器先开操作再闭操作,构成噪声滤波器50/155开操作和闭操作应用举例开操作和闭操作应用举例a图是受噪声污染的指纹二值图像,图是受噪声污染的指纹二值图像,噪声为黑色背景上的亮元素和亮噪声为黑色背景上的亮元素和亮指纹部分的暗元素指纹部分的暗元素b图是使用的结构元素图是使用的结构元素c图是使用结构元素对图图是使用结构元素对图a腐蚀的结果:腐蚀的结果:黑色背景噪声消除了,指纹中黑色背景噪声消除了,指纹中的噪声尺寸增加的噪声尺寸增加d图是使用结构元素对图图是使用结
31、构元素对图c膨胀的结果:包含于指纹中的噪声分量的尺膨胀的结果:包含于指纹中的噪声分量的尺寸被减小或被完全消除,带来的问题是:寸被减小或被完全消除,带来的问题是:在指纹纹路间产生了新的间在指纹纹路间产生了新的间断断e图是对图图是对图d膨胀的结果,图膨胀的结果,图d的大部分间断被恢复,的大部分间断被恢复,但指纹的线路变但指纹的线路变粗了粗了 f图是对图图是对图e腐蚀的结果,即对图腐蚀的结果,即对图d中开操作的闭操作。中开操作的闭操作。最后结果消除最后结果消除了噪声斑点了噪声斑点缺点:指纹线路还是有缺点,可以通过加入限制性条件解缺点:指纹线路还是有缺点,可以通过加入限制性条件解决决51/155形态学
32、的主要应用形态学的主要应用边界提取边界提取 定义定义 (A)=A(AB)上式表示:先用上式表示:先用B对对A腐蚀,然后用腐蚀,然后用A减去腐蚀得到,减去腐蚀得到,B是是结构元素结构元素52/155形态学的主要应用形态学的主要应用边界提取举例边界提取举例1表示为白色,表示为白色,0表示为黑色表示为黑色53/155形态学的主要应用形态学的主要应用区域填充区域填充 定义定义:设所有非边界设所有非边界(背景背景)点标记为点标记为0,则将,则将1赋给赋给p点开始,点开始,实现目的:实现目的:从边界内的一个点开始,用从边界内的一个点开始,用1填充整个区域填充整个区域X0=p,如果,如果Xk=Xk-1,则算
33、法在迭代的第,则算法在迭代的第k步结束。步结束。Xk和和A的的并集包含被填充的集合和它的边界并集包含被填充的集合和它的边界 条件膨胀:条件膨胀:如果对上述公式的左部不加限制,则上述公式如果对上述公式的左部不加限制,则上述公式的膨胀将填充整个区域。利用的膨胀将填充整个区域。利用Ac 的交集将结果限制在感兴的交集将结果限制在感兴趣区域内,实现条件膨胀。趣区域内,实现条件膨胀。Ac是是A的补集。的补集。54/155形态学的主要应用形态学的主要应用区域填充区域填充55/155形态学的主要应用形态学的主要应用连通分量的提取连通分量的提取实现目的:在二值图像中提取连通分量实现目的:在二值图像中提取连通分量
34、令令Y表示一个包含于集合表示一个包含于集合A中的连通分量,并假设中的连通分量,并假设Y中的中的一个点一个点p是已知的。用下列迭代式生成是已知的。用下列迭代式生成Y的所有元素:的所有元素:Xk=(Xk1 B)A k=1,2,3,.x0=p,如果如果Xk=Xk-1,算法收敛,令,算法收敛,令Y=Xk56/155形态学的主要应用形态学的主要应用连通分量提取的应用举例连通分量提取的应用举例使用连通分量检测包装食物中的外来物使用连通分量检测包装食物中的外来物57/155作业作业41.用用OpenCV实现作业实现作业2;对某一个二值化后的图像进行腐;对某一个二值化后的图像进行腐蚀、膨胀、开、闭操作,将结果
35、保存下来;把二值图像中蚀、膨胀、开、闭操作,将结果保存下来;把二值图像中的较小的连通分量去掉,只保留最大的前两个分量,将结的较小的连通分量去掉,只保留最大的前两个分量,将结果保存成文件果保存成文件2.从摄像头得到视频流,从中任意选取从摄像头得到视频流,从中任意选取5帧,保存成图像帧,保存成图像文件文件3.从从AVI文件读取视频,从中任意选取文件读取视频,从中任意选取5帧,保存成图像文帧,保存成图像文件件4.从摄像头得到视频流,在指定的窗口内实时显示该视频从摄像头得到视频流,在指定的窗口内实时显示该视频58/155教学内容教学内容第一部分:基本概念和操作第一部分:基本概念和操作图像像素间联系图像
36、的基本统计特性直方图基本图像处理技术点运算、点运算、二值图像形态学操作二值图像形态学操作、连通分量分析、连通分量分析第二部分:第二部分:OpenCVOpenCV概述概述基础结构与操作基础结构与操作基本基本OpenCV程序与示例程序与示例59/155 第二部分:第二部分:OpenCVOpenCV概述概述基础结构与操作基础结构与操作基本基本OpenCV程序与示例程序与示例注:本讲义中部分代码来自注:本讲义中部分代码来自OpenCV样例,部分代码来样例,部分代码来自自OpenCV教程教程基础篇,部分代码则从网上收基础篇,部分代码则从网上收集。集。60/155OpenCV概述概述OpenCV是是Int
37、el开源计算机视觉库。开源计算机视觉库。它由一系列它由一系列 C 函数和少量函数和少量 C+类构成,实现了图类构成,实现了图像处理和计算机视觉方面的很多通用算法。像处理和计算机视觉方面的很多通用算法。The current release version is 2.4.6(April 2013)OpenCV 的特点的特点拥有包括拥有包括 500 多个多个C函数的跨平台的中、高层函数的跨平台的中、高层 API跨平台:跨平台:Windows,Linux免费(免费(FREE):无论对非商业应用和商业应用):无论对非商业应用和商业应用 速度快速度快使用方便使用方便61/155OpenCV 模块模块CX
38、COREbasic structures and algoritms,XML support,drawing functionsCVImage processingand visionHighGUIGUI,Image and Video I/OMLMachine Learning algorithmsCVAux62/15563/155图像数据操作(内存分配与释放,图像复制、设定和转换)图像/视频的输入输出(支持文件或摄像头的输入,图像/视频文件的输出)矩阵/向量数据操作及线性代数运算(矩阵乘积、矩阵方程求解、特征值、奇异值分解)支持多种动态数据结构(链表、队列、数据集、树、图)基本图像处理(去
39、噪、边缘检测、角点检测、采样与插值、色彩变换、形态学处理、直方图、图像金字塔结构)结构分析(连通域/分支、轮廓处理、距离转换、图像矩、模板匹配、霍夫变换、多项式逼近、曲线拟合、椭圆拟合、狄劳尼三角化)摄像头定标(寻找和跟踪定标模式、参数定标、基本矩阵估计、单应矩阵估计、立体视觉匹配)运动分析(光流、动作分割、目标跟踪)目标识别(特征方法、HMM模型)基本的GUI(显示图像/视频、键盘/鼠标操作、滑动条)图像标注(直线、曲线、多边形、文本标注)Image labeling(line,conic,polygon,text drawing)64/155OpenCV的下载与安装的下载与安装1、下载地址
40、、下载地址 http:/ http:/ 2003下的安装与配置下的安装与配置参见参见http:/ MSVS.net 2k3Create a Win32 Console ProjectMake it an Empty Project by selecting the box under Application SettingsA project is initially created by selecting:File-New-ProjectCreating the Project66/155Configuring MSVS.net 2k3Right Click the Source File
41、s 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.67/155Configuring MSVS.net 2k3In order to build projects usin
42、g 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 Pane68/155Configuring MSVS.net 2k3Under the C/C+tab select GeneralSet Additional Include DirectivesSelect the
43、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:Program FilesOpenCVoth
44、erlibscvcaminclude Utilized Directives69/155Configuring MSVS.net 2k3Under the Linker tab select InputSet Additional DependenciesSelect the Additional DependenciesC:Program FilesOpenCVlibcv.libC:Program FilesOpenCVlibcvaux.libC:Program FilesOpenCVlibcxcore.libC:Program FilesOpenCVlibcvcam.libC:Progra
45、m FilesOpenCVlibhighgui.libUtilized DependenciesAdd the full path to each of the.lib files required to use OpenCVBe sure to keep the paths in quotes70/155Testing MSVS.net 2k3Now that the environment is configured it would be a good idea to test it to make sure that a program will correctly build and
46、 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 depth,3 chanels IplImage*
47、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 window container cvNamedWindow(Hello World,0);/display th
48、e 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 Program71/155Testing MSVS.net 2k3Output of ProgramThe program is built by selecting:B
49、uild-Build SolutionOr by pressing F7Building the ProgramThe program is run by selecting:Debug-Start|Start without DebuggingOr by pressing F5 or-F5Running the Program72/155OpenCV 编码样式指南编码样式指南1、文件命名:有、文件命名:有cv和和cvaux库文件的命名必须服库文件的命名必须服从于以下规则:从于以下规则:所有的所有的CV库文件名前缀为库文件名前缀为cv 混合的混合的C/C+接口头文件扩展名为接口头文件扩展名为.
50、h 纯纯C+接口头文件扩展名为接口头文件扩展名为.hpp 实现文件扩展名为实现文件扩展名为.cpp 为了与为了与POSIX兼容,文件名都以小写字符组成兼容,文件名都以小写字符组成73/155OpenCV 编码样式指南编码样式指南2、文件结构、文件结构每个文件以每个文件以BSD兼容的许可声明兼容的许可声明(模板在模板在Contributors_BSD_Licsense.htm文件中可以找到文件中可以找到)开头;开头;一行最多一行最多90个字符,不包括行结束符个字符,不包括行结束符 不使用制表符不使用制表符 缩进为缩进为4个空格符,所以制表符应该用个空格符,所以制表符应该用1-4个空格替换(个空格