资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/4/12 Monday,#,Institute of Robotics and Automatic Information System,Click to edit the title text format,机器人与信息自动化研究所,Institute of Robotics&Automatic Information System,Institute of Robotics and Automatic Information System,Click to edit the title text format,单击此处编辑母版标题样式,2021/4/12 Monday,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,/,机器视觉及应用,第八章图像形态学处理,主要内容,形态学,运算,基础,二值图像形态学处理,膨胀与腐蚀,开运算与闭运算,击中,击不中变换,灰度图形态学运算,灰度图膨胀与腐蚀,灰度图开,运算与闭运算,顶,帽与底帽,形态学梯度,形态学应用,边界检测,空洞填充,提取骨架,连通分量提取,1,、,形态学是,生物学,中研究动物和植物的形态和结构学科,属于生物学的一个,分支,。,2,、,图像,形态学处理算法是指利用,数学形态学方法对图像进行分析和处理,。数学形态学是借用生物形态学这一名词,。,3,、,数学形态学可以,实现对图像的,形态学滤波、边界提取、空洞填充、图像细化,等一系列图像预处理和特征提取等操作,。,4,、,数学形态学是以,集合论,为基础的一系列运算方法。数学形态学运用在图像处理中,其集合表示图像中的不同对象。,数学形态学处理,5,、,形态学,方法运用在图像中,主要是对,二值图像,进行处理。在二值图像中,只有黑白两种像素,代表了两种不同的集合,。,6,、,但是,,数学形态学,工具也,可以扩展到对,灰度图,的处理,。,7,、,形态学,的基本方法是,膨胀、腐蚀,。由这两种运算方式有扩展出很多其他运算方法,如,开运算、闭运算、击中击不中,、针对灰度图的,膨胀、腐蚀、开运算、闭运算、形态学梯度、顶帽、底帽,运算等。,数学形态学处理,1,、,形态学,运算的数学基础是,集合论,。大写,字符,A,、,B,、,C,等表示一个集合,,一个集合中包含,0,个或多个元素。集合中的,元素用小写字符,a,、,b,、,c,等,表示,。,2,、,在,数字图像中,元素指的是图像的像素点,其坐标用整数对,(x,,,y),来表示,如元素,a=(x,,,y),。集合与元素的关系是属于和不属于的关系。,形态学运算基础,属于,不属于,3,、,像素点,通常用,二维坐标表示其位置,,因此,集合,A,通常用点来表示,如,p,1,,,p,2,。例如,,A,集合包含,5,个点表示为,A=,p,1,,,p,2,,,p,3,,,p,4,,,p,5,,其中每个点又表示为坐标的形式,如,p,i,(,x,i,,,y,i,),。假设,A=,p,1,,,p,2,,,p,1,=,(,1,1,),,p,2,=,(,1,2,),,如果,a=1,1,,,b=2,2,,,形态学运算基础,4,、,集合中可以没有元素,,也就是不包含任何元素,这时称集合为,空集。,5,、,设有,集合,A,和,B,,如果集合,A,中的每一个元素都是集合,B,中的元素,则称集合,A,是集合,B,的,子集,。,形态学运算基础,6,、,两,个集合之间可以求,交集,,交集为同时属于两个集合中的,元素,。,7,、,两个集合之间可以求,并集,,并集将两个集合合并为一个集合,新集合包含原来两个集合的所有元素,形态学运算基础,8,、,如果,A,、,B,两个集合没有共同元素,则两个集合的,交集为空,9,、,集合,A,的补集用,符号,表示。补集是由不属于,A,的所有元素组成的集合。设集合,A,是由元素,a,构成的集合,形态学运算基础,10,、,集合,A,与集合,B,的差集表示,为,A-B,。其结果是集合,A,与集合,B,的补集之间求交集,形态学运算基础,交集,并集,补集,差集,11,、,集合的平移定义为,集合,A,平移到某一点,z,。设集合,A,中的元素为,a,,集合,A,平移后表示为,(,A,),z,,其定义如下:,形态学运算基础,12,、,集合的反射是指将集合中的元素,相对于原点旋转,180,。设有集合,A,,其元素有,a,,定义集合,A,的反射用,符号,表示。,1,、,数学形态学,运算最早,是对,二值图像,进行运算处理,。,膨胀,与腐蚀,运算是形态学中的,基本运算,。其他形态学运算方法都是由这两种运算进行组合得到的,。,2,、,图像,的数学形态学运算是指,二值图像与一个结构元素,进行,集合,运算,。,3,、,结构,元素是,事先定义好的,一幅图像,,可以,是任意的,形状。,形态学运算就是将结构元素覆盖在二值图像上,与二值图像上对应位置,进行运算,的结果,。,4,、,结构,元素通常比原图像小,将结构元素在二值图上进行移动,直到所有位置都运算完成,则一个形态学运算结束。,结构元素,需要指定一个,原点,,该原点是与其运算的二值图像中的参考点。,二值图像形态学,运算,1,、,设有二值图像集合,A,和结构元素,B,并且,A,和,B,属于二维整数空间,Z,2,,膨胀可以表示为,二值图像形态学,运算,膨胀运算,等价,于:,首先对结构元素,B,以原点为中心进行映射,,然后原点在,A,上进行移动,所有,A,与 交集不为空,的点,的,集合。,2,、,膨胀运算的过程和图像与结构元素进行,卷积运算,的过程类似。结构元素在二值图像上进行移动,每移动一个位置,,判断结构元素所覆盖的二值图像与其是否一致,。,3,、,如果,存在一个位置点,一致,,则结构元素所覆盖的二值图像区域都,赋值为“,1,”,,只有当结构元素与所覆盖的二值图像中的元素的交集为空时,即两者之间没有任何一致的位置点,则原二值图像不进行任何改变。,二值图像形态学,运算,膨胀运算,4,、,膨胀运算的,示意图,:,二值图像形态学,运算,膨胀运算,通过,膨胀运算,可以,将小,的,空洞和凹陷进行填充,。膨胀,运算后的图像值为“,1,”的区域变大了,因此称为膨胀。此外,如果图像中存在断裂的情况,可以通过膨胀运算将断裂部分进行连接。,5,、,图像膨胀运算示例,二值图像形态学,运算,膨胀运算,*,读取图像,read_image(Image,E:/,示例,/8-1.bmp),*,设置颜色为白色,dev_set_color(white),*,二值化处理,threshold(Image,Regions,132,255),*,膨胀运算,dilation_circle(Regions,RegionDilation,5.5),5,、,图像膨胀运算示例,二值图像形态学,运算,膨胀运算,原图,二值化图像,膨胀结果,1,、,设有二值图像集合,A,和结构元素,B,并且,A,和,B,属于二维整数空间,Z,2,,腐蚀可以表示为,A,B,。,A,被,B,腐蚀可以定义,为,:,二值图像形态学,运算,腐蚀,运算,A,B=z|(B),z,A,腐蚀,是,A,被,B,腐蚀后所有位移,z,的集合。,A,B,等价,于:,2,、,与膨胀运算类似,,结构,元素,B,可以看成是一个卷积模板,进行腐蚀运算时,二值图像与结构元素进行,与卷积运算类似的运算,。,3,、,结构,元素在二值图像上进行移动,每移动一个位置,,判断结构元素与其所覆盖的二值图像区域中的元素是否一致,,如果不一致,则对应的二值图像中的值赋值为“,0,”,如果一致,则保留结构元素原点所覆盖的二值图像中的对应位置点,即该原点对应的二值图像位置赋值为“,1,”,其他位置赋值为“,0,”。,二值图像形态学,运算,腐蚀,运算,4,、,腐蚀运算的示意图,二值图像形态学,运算,腐蚀,运算,腐蚀,运算可以将相连接的对象进行,分割,。同时,腐蚀运算也可以去掉图像中的某些部分,.,如果二值图像中存在某些杂点,则可以通过腐蚀运算将这些,杂点去掉,。,5,、,腐蚀运算和膨胀运算是,对偶运算,二值图像形态学,运算,腐蚀,运算,(,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),二值图像形态学,运算,腐蚀,运算,6,、,图像,腐蚀运算,示例,原图,二值化图像,腐蚀结果,二值图像形态学,运算,开运算和闭运算,1,、,开运算和闭运算是两种从膨胀和腐蚀通过组合得到的运算。,开运算,是,先,进行,腐蚀后膨胀,的组合和运算,,闭运算,是,先,进行,膨胀后腐蚀,的运算。,(,A,B),B,开运算,闭运算,二值图像形态学,运算,开运算和闭运算,2,、,开运算,首先,进行的是腐蚀运算,根据腐蚀运算的特点,图像在腐蚀之后,可以,排除,图像中的部分,杂点,,如果存在本来应该分离的区域发生了连接,也可以通过腐蚀将其分离,;,3,、,对,腐蚀结果再进行膨胀运算,可以,得到平滑的边缘,。经过开运算之后,二值图中特征区域的总面积变化不大,但是,清除掉了部分尖细突出的目标,。开运算是一个基于几何基元的滤波,其滤波的,效果与结构元素的形状和大小有关,。,二值图像形态学,运算,开运算和闭运算,4,、,闭运算首先,进行的是膨胀运算,由此可以对图像中的,细小空洞等特征进行填充,;,5,、,同样,可以得到,平滑的边缘,。经过闭运算之后,二值图中的特征区域与开运算时类似,总面积没有太大变化,但是能够对特征中的间断部分或者细小空洞部分进行填充,并且也可以平滑边缘。具体,填充的空洞大小与结构元素的形状和大小有关,。,二值图像形态学,运算,开运算和闭运算,开运算示意图,闭运算示意图,二值图像形态学,运算,开运算和闭运算,例,图像开运算和闭运算示例,*,读取图像,read_image(Image,E:/,示例,/8-3.bmp),*,二值化处理,threshold(Image,Regions,35,109),*,开运算,opening_circle(Regions,RegionOpening,3.5),*,闭运算,closing_circle(RegionOpening,RegionClosing,10.5),二值图像形态学,运算,开运算和闭运算,原图,闭,运算,结果,二值图,开,运算结果,二值图像形态学,运算,击中击不中变换,1,、,击中,击不中变换是用于,形状检测,的工具。该方法可以用于连通区域子图像的,匹配和定位,。假设二值图像,A,是由若干互相独立的子图像构成,各个子图像之间互不连通。而且,相互之间间隔一定的距离,各个子图像的边界之间至少间隔一个像素的距离。设,结构元素,为,B,,,B,由前景,X,和背景(,W-X,)组成,二值图像形态学,运算,击中击不中变换,2,、,如果,令,B=,(,B,1,,,B,2,),,B,1,代表结构元素,B,的前景,,B,2,代表结构元素,B,的背景。即,B,1,=X,,,B,2,=W-X,用结构元素,B1,去腐蚀,A,,然后用结构元素,B2,去腐蚀,A,的补集,,,B2,是,B1,的补集得到的,结果求交集,就是击中击不中变换,二值图像形态学,运算,击中击不中变换,3,、,击中击不中变换,的,结构,元素有两个,,分别为,B,1,和,B,2,,两个结构元素的交集为空,分别代表,前景和,背景,。返回的,结果是,二值图像中找到与结构元素相同的图像的位置,点,。,A,B,1,B,2,二值图像形态学,运算,击中击不中变换,例,击中击不中,实例,*,读取一幅二值图像,read_image(Image,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,),二值图像形态学,运算,击中击不中变换,*,原图像二值化,threshold(Image,Regions,15,255),*,剪切出来的图像二值化,作为结构元素,B,1,threshold(ImagePart,Regions1,19,255),*,用,B,1,对原图像进行腐蚀,erosion1(Regions,Regions1,RegionErosion,1),*,将剪切出来的图像进行翻转,用于制作结构元素,B,2,invert_image(ImagePart,ImageInvert1),*,原图像翻转之后二值化,threshold(ImageInvert,Regions2,19,255,),二值图像形态学,运算,击中击不中变换,*,结构元素,B,2,图像二值化,threshold(ImageInvert1,Regions3,20,255),*,用,B,2,对原图翻转之后的图像进行腐蚀,erosion1(Regions2,Regions3,RegionErosion1,1),*,设置显示颜色为红色,dev_set_color(red),*,对两次腐蚀结果求交集,得到击中击不中的结果,intersection(RegionErosion,RegionErosion1,RegionIntersection),*,得到区域的面积和中心,area_center(RegionIntersection,Area,Row,Column,),二值图像形态学,运算,击中击不中变换,*,在击中位置画一个圆显示出来,gen_circle(Circle,Row,Column,10.5),*,直接调用击中击不中算子,hit_or_miss(Regions,Regions1,Regions3,RegionHitMiss,1,1),*,得到区域的面积和中心,area_center(RegionHitMiss,Area1,Row1,Column1),*,在击中位置画一个圆显示出来,gen_circle(Circle1,Row1,Column1,10.5),二值图像形态学,运算,击中击不中变换,原图,A,B,1,B,2,灰度,图,的,形态学运算,灰度图像与二值图像的区别在于其记录了,灰度信息,,所以,形态学处理的定义与二值图像有些不同,因为二值图像可以用一系列的二维坐标来表示图像信息,而,灰度图需要一个三维坐标表示,,而且二值图像中,结构元素是,平坦的,没有灰度信息的,但灰度图,中结构,元是可以带有第三维信息的,即,结构元素也,是灰度,的,这就带来了一些问题,因为二值图像中,形态学的输出结果完全由输入图像产生,但是结构元一旦引入灰度信息,那么输出结果将不再由输入图像唯一确定。所以,,一般情况下,,,结构元素都,使用,平坦,结构,。,灰度,图,的,形态学运算,用结构元素扫描,图像的每一个,像素,用,结构元素与其覆盖的灰度图像进行比较,查找,出结构,元素中最大的元素代替当前,元素。,膨胀,膨胀运算是由结构元素确定的邻域块中选取图像值与结构元素值的,和的最大值,灰度,图,的,形态学运算,用结构元素扫描,图像的每一个像素用结构元素与其覆盖的灰度图像进行比较,查找,出结构,元素中最小的元素代替当前,元素,.,腐蚀,腐蚀运算,是由结构元素确定的邻域块中选取图像值与结构元素值的,和的,最小值,灰度,图,的,形态学运算,膨胀与腐蚀运算,处理效果,灰度,图,的,形态学运算,开运算,用同一结构,元素对图像,先,腐蚀,再,膨胀,可以去除相对于结构元素较小的明亮细节,保持整体的灰度级和较大的明亮区域不变。,灰度,图,的,形态学运算,闭运算,用同一结构,元素对图像,先膨胀,再腐蚀,可以去除图像中的暗细节部分,相对的保持明亮部分不受影响,。,灰度,图,的,形态学运算,开运算与闭运算,处理效果,灰度,图,的,形态学运算,形态学梯度,1,、原,图像膨胀的结果减去原图像腐蚀的结果,可以得到形态学,梯度。,2,、形态学,梯度能,加强图像中比较尖锐的灰度过度区,,与常规的边缘检测梯度算子不同,用对称的结构元素得到的形态学梯度受边缘影响小,但是计算速度慢一些,灰度,图,的,形态学运算,形态学梯度,灰度,图,的,形态学运算,顶帽,1,、原图像减去,原,图像,开运算,的结果。,2,、对于,增强阴影部分的细节,很有用,.,开运算将使部分亮度较高的值消,去,,用,原图减去开操作结果,,就,能得到其消去的部分,而这个过程成为顶帽操作,顶帽就是开操作消去,的,亮度较高的,值,类似于帽子的顶部,这,一部分对应于图像中较亮的部分,也叫白色顶帽。,灰度,图,的,形态学运算,底帽,1,、原图像闭运算减去,原图像,的结果。,2,、底帽变换这,一部分对应于图像中较暗的部分,也叫黑色底,帽。,顶帽变换用于暗背景上的亮物体,而底帽变换则用于相反的情况,灰度,图,的,形态学运算,底帽,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),threshold(ImageBotHat,Regions1,50,195),fill_up(Regions1,RegionFillUp),形态学运算的应用,边界提取,二值图像膨胀减去腐蚀的结果,可以得到边界,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),difference(RegionDilation,RegionErosion,RegionDifference),形态学运算的应用,空洞,填充、断裂边界连接等,通过形态学运算,可以,填充,二值图像中的,空洞,,,连接断裂,的,边界,等。,dev_set_color(white),read_image(Image,E:/,示例,/,点阵字符,.bmp),threshold(Image,Regions,18,79),dilation_circle(Regions,RegionDilation,5.5),形态学运算的应用,空洞,填充、断裂边界连接等,read_image(Image,E:/,示例,/,填充,.bmp),rgb1_to_gray(Image,GrayImage),threshold(GrayImage,Regions,172,252),connection(Regions,ConnectedRegions),fill_up(ConnectedRegions,RegionFillUp),dilation_circle(RegionFillUp,RegionDilation,3.5),形态学运算的应用,细化,read_image(Image,E:/,示例,/hit2.bmp),rgb1_to_gray(Image,GrayImage),threshold(GrayImage,Regions,124,254),connection(Regions,ConnectedRegions),skeleton(ConnectedRegions,Skeleton),形态学运算的应用,细化,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(RegionClosing,Skeleton),形态学运算的应用,形态滤波,read_image(Image,E:/,示例,/,形态学,.bmp),gen_disc_se(SE,byte,15,15,0),gray_closing(Image,SE,ImageClosing),gray_opening(ImageClosing,SE,ImageOpening),形态学运算的应用,形态滤波,read_image(Image,E:/,示例,/,指纹,.bmp),rgb1_to_gray(Image,GrayImage),threshold(GrayImage,Regions,66,255),erosion_circle(Regions,RegionErosion,1.5),dilation_circle(RegionErosion,RegionDilation,1.5,),形态学运算的应用,字符分割实例,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_rectangle2(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),形态学运算的应用,字符分割实例,
展开阅读全文