《ppt课件8- 图像形态学处理.pptx》由会员分享,可在线阅读,更多相关《ppt课件8- 图像形态学处理.pptx(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、8- 图像形态学处理机器视觉及应用第八章图像形态学处理4/主要内容 形态学运算基础 二值图像形态学处理膨胀与腐蚀开运算与闭运算击中击不中变换 灰度图形态学运算灰度图膨胀与腐蚀灰度图开运算与闭运算顶帽与底帽形态学梯度 形态学应用边界检测空洞填充提取骨架连通分量提取5/1、形态学是生物学生物学中研究动物和植物的形态和结构学科,属于生物学的一个分支分支。2、图像形态学处理算法是指利用数学形态学方法对数学形态学方法对图像进行分析和处理图像进行分析和处理。数学形态学是借用生物形态学这一名词。3、数学形态学可以实现对图像的形态学滤波、边界形态学滤波、边界提取、空洞填充、图像细化提取、空洞填充、图像细化等一
2、系列图像预处理和特征提取等操作。4、数学形态学是以集合论集合论为基础的一系列运算方法。数学形态学运用在图像处理中,其集合表示图像中的不同对象。6/5、形态学方法运用在图像中,主要是对二值图像二值图像进行处理。在二值图像中,只有黑白两种像素,代表了两种不同的集合。6、但是,数学形态学工具也可以扩展到对灰度图灰度图的处理。7、形态学的基本方法是膨胀、腐蚀膨胀、腐蚀。由这两种运算方式有扩展出很多其他运算方法,如开运算、闭运开运算、闭运算、击中击不中算、击中击不中、针对灰度图的膨胀、腐蚀、开运膨胀、腐蚀、开运算、闭运算、形态学梯度、顶帽、底帽算、闭运算、形态学梯度、顶帽、底帽运算等。7/1、形态学运算
3、的数学基础是集合论集合论。大写字符A A、B B、C C等表示一个集合等表示一个集合,一个集合中包含0个或多个元素。集合中的元素用小写字符元素用小写字符a a、b b、c c等等表示表示。2、在数字图像中,元素指的是图像的像素点,其坐标用整数对(x,y)来表示,如元素a=(x,y)。集合与元素的关系是属于和不属于的关系。aAaA属于不属于8/3、像素点像素点通常用二维坐标表示其位置二维坐标表示其位置,因此,集合A通常用点来表示,如p1,p2。例如,A集合包含5个点表示为A=p1,p2,p3,p4,p5,其中每个点又表示为坐标的形式,如pi(xi,yi)。假设A=p1,p2,p1=(1,1),p
4、2=(1,2),如果a=1,1,b=2,2,9/4、集合中可以没有元素集合中可以没有元素,也就是不包含任何元素,这时称集合为空集。5、设有集合A和B,如果集合A中的每一个元素都是集合B中的元素,则称集合A是集合B的子集子集。AB6、两个集合之间可以求交集交集,交集为同时属于两个集合中的元素。CAB10/7、两个集合之间可以求并集并集,并集将两个集合合并为一个集合,新集合包含原来两个集合的所有元素8、如果A、B两个集合没有共同元素,则两个集合的交集为空交集为空DABAB 11/9、集合A的补集用符号 表示。补集是由不属于A的所有元素组成的集合。设集合A是由元素a构成的集合10、集合A与集合B的差
5、集表示为A-B 。其结果是集合A与集合B的补集之间求交集cA |cAaaAcABAB12/交集 并集补集差集13/11、集合的平移定义为集合集合A A平移到某一点平移到某一点z。设集合A中的元素为a,集合A平移后表示为(A)z,其定义如下:12、集合的反射是指将集合中的元素相对于原点旋相对于原点旋转转180180。设有集合A,其元素有a,定义集合A的反射用符号 表示。( )|ZAcazaAAA|waaA 14/1、数学形态学运算最早是对二值图像二值图像进行运算处理。膨胀膨胀与腐蚀与腐蚀运算是形态学中的基本运算基本运算。其他形态学运算方法都是由这两种运算进行组合得到的。2、图像的数学形态学运算是
6、指二值图像与一个结构二值图像与一个结构元素元素进行进行集合集合运算运算。3、结构结构元素是元素是事先定义好的一幅图像一幅图像,可以是任意的形状。形态学运算就是将结构元素覆盖在二值图像上,与二值图像上对应位置进行运算的结果。4、结构元素通常比原图像小,将结构元素在二值图上进行移动,直到所有位置都运算完成,则一个形态学运算结束。结构元素结构元素需要指定一个原点原点,该原点是与其运算的二值图像中的参考点。15/1、设有二值图像集合A和结构元素B并且A和B属于二维整数空间Z2,膨胀可以表示为AB|(B)zABzA 2|,ABwZwab aA bB等价于:首先对结构元素B以原点为中心进行映射,然后原点在
7、A上进行移动,所有A与 交集不为空的点的集合。B16/2、膨胀运算的过程和图像与结构元素进行卷积运算卷积运算的过程类似。结构元素在二值图像上进行移动,每移动一个位置,判断结构元素所覆盖的二值图像与其判断结构元素所覆盖的二值图像与其是否一致是否一致。3、如果存在一个位置点一致一致,则结构元素所覆盖的二值图像区域都赋值为赋值为“1 1”,只有当结构元素与所覆盖的二值图像中的元素的交集为空时,即两者之间没有任何一致的位置点,则原二值图像不进行任何改变。17/4、膨胀运算的示意图:通过膨胀运算,可以将小的空洞和凹陷进行填充空洞和凹陷进行填充。膨胀运算后的图像值为“1”的区域变大了,因此称为膨胀。此外,
8、如果图像中存在断裂的情况,可以通过膨胀运算将断裂部分进行连接。18/5、图像膨胀运算示例*读取图像read_image(Image,E:/示例/8-1.bmp)*设置颜色为白色dev_set_color(white)*二值化处理threshold (Image, Regions, 132, 255)*膨胀运算dilation_circle(Regions, RegionDilation, 5.5)19/5、图像膨胀运算示例原图二值化图像膨胀结果20/1、设有二值图像集合A和结构元素B并且A和B属于二维整数空间Z2,腐蚀可以表示为AB。A被B腐蚀可以定义为:A B= z | (B)z A 腐蚀是
9、A被B腐蚀后所有位移z的集合。2|+ ,wZw b bA bBA B 等价于:21/2、与膨胀运算类似,结构元素B可以看成是一个卷积模板,进行腐蚀运算时,二值图像与结构元素进行与卷积运算类似的运算与卷积运算类似的运算。3、结构元素在二值图像上进行移动,每移动一个位置,判断结构元素与其所覆盖的二值图像区域中的判断结构元素与其所覆盖的二值图像区域中的元素是否一致元素是否一致,如果不一致,则对应的二值图像中的值赋值为“0”,如果一致,则保留结构元素原点所覆盖的二值图像中的对应位置点,即该原点对应的二值图像位置赋值为“1”,其他位置赋值为“0”。22/4、腐蚀运算的示意图腐蚀运算可以将相连接的对象进行
10、分割分割。同时,腐蚀运算也可以去掉图像中的某些部分.如果二值图像中存在某些杂点,则可以通过腐蚀运算将这些杂点去掉杂点去掉。23/5、腐蚀运算和膨胀运算是对偶运算对偶运算cAB (A B)c =6、图像腐蚀运算示例*读取图像read_image(Image,E:/示例/8-2.bmp)*设置颜色为白色dev_set_color(white)*二值化处理threshold (Image, Regions, 35, 109)*腐蚀运算erosion_circle(Regions, RegionErosion, 3.5)24/ 6、图像腐蚀运算示例原图二值化图像腐蚀结果25/ 1、开运算和闭运算是两种
11、从膨胀和腐蚀通过组合得到的运算。开运算开运算是先先进行腐蚀后膨胀腐蚀后膨胀的组合和运算,闭运算闭运算是先先进行膨胀后腐蚀膨胀后腐蚀的运算。AB(A B)B=()ABAB B开运算开运算闭运算闭运算26/ 2、开运算开运算首先进行的是腐蚀运算,根据腐蚀运算的特点,图像在腐蚀之后,可以排除排除图像中的部分杂点杂点,如果存在本来应该分离的区域发生了连接,也可以通过腐蚀将其分离;3、对腐蚀结果再进行膨胀运算,可以得到平滑的边缘得到平滑的边缘。经过开运算之后,二值图中特征区域的总面积变化不大,但是清除掉了部分尖细突出的目标清除掉了部分尖细突出的目标。开运算是一个基于几何基元的滤波,其滤波的效果与结构元素
12、的效果与结构元素的形状和大小有关形状和大小有关。27/ 4、闭运算首先进行的是膨胀运算,由此可以对图像中的细小空洞等特征进行填充细小空洞等特征进行填充;5、同样可以得到平滑的边缘平滑的边缘。经过闭运算之后,二值图中的特征区域与开运算时类似,总面积没有太大变化,但是能够对特征中的间断部分或者细小空洞部分进行填充,并且也可以平滑边缘。具体填充的空洞大填充的空洞大小与结构元素的形状和大小有关小与结构元素的形状和大小有关。28/ 开运算示意图闭运算示意图29/ 例 图像开运算和闭运算示例*读取图像read_image(Image,E:/示例/8-3.bmp)*二值化处理threshold (Image
13、, Regions, 35, 109)*开运算opening_circle(Regions, RegionOpening, 3.5)*闭运算closing_circle(RegionOpening, RegionClosing, 10.5)30/ 原图闭运算结果二值图开运算结果31/ 1、击中击不中变换是用于形状检测形状检测的工具。该方法可以用于连通区域子图像的匹配和定位匹配和定位。假设二值图像A是由若干互相独立的子图像构成,各个子图像之间互不连通。而且,相互之间间隔一定的距离,各个子图像的边界之间至少间隔一个像素的距离。设结构元素结构元素为B,B B由前景由前景X X和背景(和背景(W-XW
14、-X)组成)组成32/ 2、如果令B=(B1,B2),B1代表结构元素B的前景,B2代表结构元素B的背景。即B1=X,B2=W-X用结构元素B1B1去腐蚀去腐蚀A A,然后用结构元素B2B2去腐去腐蚀蚀A A的补集的补集, B2是B1的补集得到的结果求交集结果求交集就是击中击不中变换33/ 3、击中击不中变换的结构结构元素有两个元素有两个,分别为B1和B2,两个结构元素的交集为空,分别代表前景和前景和背景背景。返回的结果是二值图像中找到与结构元素相同的图像二值图像中找到与结构元素相同的图像的位置的位置点点。AcAB1B234/ 例例 击中击不中实例*读取一幅二值图像read_image (Im
15、age, E:/示例/8-4.bmp)*将图像反转,得到原图像的补集invert_image(Image, ImageInvert)dev_set_color(white)*根据图像长方形的大小,生成一个比原长方形大一圈的矩形,制造结构元素gen_rectangle1 (ROI_0, 391, 228, 475, 314)*从图像中取出矩形区域图像,reduce_domain(Image, ROI_0, ImageReduced)crop_domain(ImageReduced, ImagePart)35/ *原图像二值化threshold (Image, Regions, 15, 255)*
16、剪切出来的图像二值化,作为结构元素B1threshold (ImagePart, Regions1, 19, 255)*用B1对原图像进行腐蚀erosion1(Regions,Regions1, RegionErosion, 1)*将剪切出来的图像进行翻转,用于制作结构元素B2invert_image(ImagePart,ImageInvert1)*原图像翻转之后二值化threshold (ImageInvert, Regions2, 19, 255)36/ *结构元素B2图像二值化threshold (ImageInvert1, Regions3, 20, 255)*用B2对原图翻转之后的图
17、像进行腐蚀erosion1(Regions2,Regions3, RegionErosion1, 1)*设置显示颜色为红色dev_set_color(red)*对两次腐蚀结果求交集,得到击中击不中的结果intersection(RegionErosion,RegionErosion1, RegionIntersection)*得到区域的面积和中心area_center(RegionIntersection, Area, Row, Column)37/ *在击中位置画一个圆显示出来gen_circle(Circle, Row, Column, 10.5)*直接调用击中击不中算子hit_or_mi
18、ss(Regions,Regions1,Regions3,RegionHitMiss, 1, 1)*得到区域的面积和中心area_center(RegionHitMiss, Area1, Row1, Column1)*在击中位置画一个圆显示出来gen_circle(Circle1, Row1, Column1, 10.5)38/ 原图AcAB1B239/ 灰度图像与二值图像的区别在于其记录了灰度信息灰度信息,所以,形态学处理的定义与二值图像有些不同,因为二值图像可以用一系列的二维坐标来表示图像信息,而灰度图需要一个三维坐标表示灰度图需要一个三维坐标表示,而且二值图像中结构元素是平坦的,没有灰度
19、信息的,但灰度图中结构元是可以带有第三维信息的,即结构元素也结构元素也是灰度是灰度的,这就带来了一些问题,因为二值图像中,形态学的输出结果完全由输入图像产生,但是结构元一旦引入灰度信息,那么输出结果将不再由输入图像唯一确定。所以,一般情况下一般情况下,结构元素都使用使用平坦平坦结构。40/ 用结构元素扫描图像的每一个像素,用结构元素与其覆盖的灰度图像进行比较,查找出结构元素中最大的元素代替当前元素。 ,max,bfbx yf xx yyb x yx yD膨胀运算是由结构元素确定的邻域块中选取图像值与结构元素值的和的最大值和的最大值41/ 用结构元素扫描图像的每一个像素用结构元素与其覆盖的灰度图
20、像进行比较,查找出结构元素中最小的元素代替当前元素.腐蚀运算是由结构元素确定的邻域块中选取图像值与结构元素值的和的和的最小值最小值 ,min,bfbx yf xx yyb x yx yD42/ 膨胀与腐蚀运算处理效果43/ 用同一结构元素对图像先先腐蚀,再腐蚀,再膨胀膨胀可以去除相对于结构元素较小的明亮细节,保持整体的灰度级和较大的明亮区域不变。(fbf)bb44/ 用同一结构元素对图像先膨胀,再腐蚀先膨胀,再腐蚀可以去除图像中的暗细节部分,相对的保持明亮部分不受影响。()fbfbb45/ 开运算与闭运算处理效果46/ 1 1、原、原图像膨胀的结果减去原图像腐蚀的结果图像膨胀的结果减去原图像腐
21、蚀的结果可以得到形态学梯度。2、形态学梯度能加强图像中比较尖锐的灰度过度区加强图像中比较尖锐的灰度过度区,与常规的边缘检测梯度算子不同,用对称的结构元素得到的形态学梯度受边缘影响小,但是计算速度慢一些()(gfbf)b47/ 48/ 1 1、原图像减去、原图像减去原原图像图像开运算开运算的结果。的结果。2、对于增强阴影部分的细节增强阴影部分的细节很有用. 开运算将使部分亮度较高的值消去,用原图减去开操作结果,就能得到其消去的部分,而这个过程成为顶帽操作,顶帽就是开操作消去的亮度较高的值,类似于帽子的顶部,这一部分对应于图像中较亮的部分,也叫白色顶帽。()hffb49/ 1 1、原图像闭运算减去
22、、原图像闭运算减去原图像原图像的结果。的结果。2、底帽变换这一部分对应于图像中较暗的部分,也叫黑色底帽。顶帽变换用于暗背景上的亮物体,而底帽变换则用于相反的情况B()fbf50/ 1 1、原图像闭运算减去、原图像闭运算减去原图像原图像的结果。的结果。read_image(Image,E:/示例/mop1.bmp)rgb1_to_gray(Image, GrayImage)threshold (GrayImage, Regions, 6, 146)gen_disc_se(SE, byte, 35, 35, 0)gray_bothat(GrayImage,SE, ImageBotHat)thres
23、hold (ImageBotHat, Regions1, 50, 195)fill_up(Regions1, RegionFillUp)51/ 二值图像膨胀减去腐蚀的结果,可以得到边界read_image(Image,E:/示例/形态学边界.bmp)rgb1_to_gray(Image, GrayImage)threshold (GrayImage, Regions, 32, 255)dilation_rectangle1(Regions, RegionDilation, 3, 3)erosion_rectangle1(Regions,RegionErosion, 3, 3)differenc
24、e(RegionDilation,RegionErosion, RegionDifference)52/ 通过形态学运算,可以填充填充二值图像中的空洞空洞,连接连接断裂断裂的边界边界等。dev_set_color(white)read_image(Image,E:/示例/点阵字符.bmp)threshold (Image, Regions, 18, 79)dilation_circle(Regions, RegionDilation, 5.5)53/ read_image(Image,E:/示例/填充.bmp)rgb1_to_gray(Image, GrayImage)threshold (G
25、rayImage, Regions, 172, 252)connection(Regions, ConnectedRegions)fill_up(ConnectedRegions, RegionFillUp)dilation_circle(RegionFillUp, RegionDilation, 3.5)54/ read_image(Image,E:/示例/hit2.bmp)rgb1_to_gray(Image, GrayImage)threshold (GrayImage, Regions, 124, 254)connection(Regions, ConnectedRegions)ske
26、leton(ConnectedRegions, Skeleton)55/ read_image(Image,E:/示例/填充.bmp)rgb1_to_gray(Image, GrayImage)mean_image(GrayImage, ImageMean, 9, 9)dyn_threshold(GrayImage,ImageMean, RegionDynThresh, 10, dark)gen_rectangle1(Rectangle, 1, 1, 5, 1)closing(RegionDynThresh,Rectangle, RegionClosing)skeleton(RegionClo
27、sing, Skeleton)56/ read_image(Image,E:/示例/形态学.bmp)gen_disc_se(SE, byte, 15, 15, 0)gray_closing(Image,SE, ImageClosing)gray_opening(ImageClosing,SE,ImageOpening)57/ read_image(Image,E:/示例/指纹.bmp)rgb1_to_gray(Image, GrayImage)threshold (GrayImage, Regions, 66, 255)erosion_circle(Regions, RegionErosion
28、, 1.5)dilation_circle(RegionErosion, RegionDilation, 1.5)58/ read_image(Image,E:/示例/3.bmp)dev_set_draw(fill)gen_disc_se(SE, byte, 55, 55, 0)gray_bothat(Image,SE, ImageBotHat)threshold (ImageBotHat, Regions, 136, 255)gen_rectangle1(Rectangle, 1, 1, 20, 1)closing(Regions,Rectangle, RegionClosing)gen_r
29、ectangle2(Rectangle1,10,10,rad(70),10,0)closing(RegionClosing,Rectangle1, RegionClosing1)connection(RegionClosing1, ConnectedRegions)select_shape (ConnectedRegions, SelectedRegions, area, and, 2633.11, 5000)smallest_rectangle1(SelectedRegions, Row1, Column1, Row2, Column2)dev_set_draw(margin)dev_set_color(red)gen_rectangle1(Rectangle2, Row1, Column1, Row2, Column2)59/