第6章数字图像处理.ppt
第6章 数学形态学及其应用,6.1 数学形态学概述 6.2 二值形态学6.3 灰值形态学 6.4 形态学的应用 6.5 形态学滤波及骨架抽取的MATLAB实现,6.1 数学形态学概述,数学形态学是法国和德国的科学家在研究岩石结构时建立的一门学科(1664)。形态学的用途:获取物体拓扑和结构信息,它通过物体和结构元素相互作用的某些运算,得到物体更本质的形态。在图象处理中的应用:(1)利用形态学的基本运算,对图象进行观察和处理,从而达到改善图象质量的目的;(2)描述和定义图象的各种几何参数和特征,如面积、周长、连通度、颗粒度、骨架和方向性等。,6.1.1 数学形态学,数学形态学的应用可以简化图像数据,保持它们基本的形状特性,并除去不相干的结构。数学形态学方法利用一个称作结构元素的“探针”收集图像的信息,当探针在图像中不断移动时,便可考察图像各个部分之间的相互关系,从而了解图像的结构特征。数学形态学的数学基础和所用语言是集合论,因此它具有完备的数学基础。,6.1.2 基本符号和定义,在数字图像处理的数学形态学运算中,把一幅图像称为一个集合。(1)a 属于A对于一幅图像A,如果点a在A的区域以内,那么就说a是A的元素,记为aA,否则,记作aA.,1.集合论概念,(2)B包含于A,设有两幅图象B,A。对于B中所有的元素ai,都有aiA,则称B包含于A,记作,两个图像集合A和B的公共点组成的集合称为两个集合的交集,为AB,即AB=aaA且aB。两个集合A和B的所有元素组成的集合称为两个集合的并集,记为AB,即AB=aaA或aB。,(3)交集和并集,设有一幅图象X,所有X区域以外的点构成的集合称为X的补集,记作Xc,显然,如果BX=,则B在X的补集内。,(4)补集,击中:设有两幅图象B,A,若存在这样一个点,它既是B的元素,又是A的元素,AB,则称B击中A,记作BA,,2.击中与击不中,击不中:设有两幅图象B,A,若不存在任何一个点,它即是B的元素,又是A的元素,即B和A的交集是空,则称B不击中A,记作BA=,平移:设A是一幅数字图像,b是一个点,那么定义A被b平移后的结果为Abab|aA,即:取出A中的每个点a的坐标值,将其与点b的坐标值相加,得到一个新的点的坐标值a+b,所有这些新点所构成的图像就是A被b平移的结果,记为A+b,3.平移和对称集,对称集:设有一幅图象B,将B中所有元素的坐标取反,即令(x,y)变成(-x,-y),所有这些点构成的新的集合称为B的对称集,记作Bv。,设有两幅图象B,A,若A是被处理的对象,而B是用来处理A的,则称B为结构元素,又被形象地称做刷子。结构元素通常都是一些比较小的图象。,4.结构元素,对每个结构元素可以指定一个原点,它是结构元素参与形态学运算的参考点。原点可以包含在结构元素中,也可以不包含在结构元素中。,6.2 二值形态学,二值形态学中的运算对象是集合。设A为图像集合,S为结构元素,数学形态学运算是用S对A进行操作。,(1)S+x X(2)S+x XC(3)S+xX与S+xXC均不为空,6.2.1 腐蚀,对一个给定的目标图像X和一个结构元素S,将S在图像上移动。在每一个当前位置x,S+x只有三种可能的状态:,腐蚀也可以用集合的方式定义,即X用S腐蚀的结果:使S平移x后仍在X中的所有x的集合。,腐蚀是最基本的一种数学形态学运算。,对于阴影区域内任意一个点a,将结构元素B平移a后得到的Ba包含于X,所以阴影区域就是X被B腐蚀的结果。阴影部分包含在X的范围之内,比X小,就象X被腐蚀掉一层得到的,这就是为什么叫腐蚀的原因。,腐蚀在数学形态学运算中的作用是消除物体边界点。,二值图像的腐蚀:,定义:将结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的结果。,用集合语言定义为:X S=x|S+x X,6.2.2 膨胀,对于阴影区域内的任意一个点a,Ba击中X,所以阴影区域就是X被B膨胀的结果。膨胀结果包含X,就象将X膨胀了一圈得到的,这就是为什么叫膨胀的原因。,二值图像的膨胀:,即用S膨胀X等同于:用S1先膨胀,再用S2膨胀前面的结果。称S能够分解成S1和S2两个结构元素。,6.2.3 结构元素的分解,膨胀满足结合律,即:,假设一个结构元素可以表示为两个结构元素的膨胀,即,则,可分解成:一个值为l的5元素行矩阵、一个值为l的五元素列矩阵。,考虑一个结构元素:大小为5X5,其元素为1,计算膨胀所需要的时间正比于结构元素中的非零像素的个数,原始结构元素中元素个数为25,分解后做元素个数只有10个,所以速度要快2.5倍。,膨胀运算等同于先用行结构元素膨胀,再用列结构元素膨胀。,先腐蚀 后膨胀称为开运算。,用图像S对图像X作开运算的定义为:,6.2.4 开运算与闭运算,1.开运算,使用圆盘结构元素进行开运算:,使用圆盘结构元素进行开运算,使矩阵内角变圆。,若结构元素为小正方形,开运算结果和原图相同。,二值图像的开运算:,消除孤立的小点、小桥、毛刺。,使用圆盘结构元素时,开运算对边界进行了平滑,去掉了凸角。使用线段结构元素时,沿线段方向宽度较大的部分被保留下来,较小的凸部被剔除。,不同结构元素提取不同特征:,关于开运算的几点结论:()开运算能够除去孤立的小点,毛刺和小桥,而总的位 置和形状不便。()开运算是一个基于几何运算的滤波器,消除图像的凸角。()结构元素大小的不同将导致滤波效果的不同。()不同的结构元素的选择导致了不同的分割,即提取出不同的特征。,6.2.5 闭运算,先膨胀 后腐蚀称为闭运算,S对图像X作闭运算定义为:,闭运算的作用:闭运算能够填平小湖(小孔),弥合小裂缝,而总的位置和形状不变。,闭运算通过填充图像的凹角来平滑图像。,不同结构元素的开运算:,关于闭运算的几点结论:(1)闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。(2)闭运算是通过填充图像的凹角来滤波图像的。(3)结构元素大小的不同将导致滤波效果的不同。(4)不同结构元素的选择导致了不同的分割。,开运算和闭运算示例:,由于开、闭运算是在腐蚀和膨胀运算的基础上定义的,根据腐蚀和膨胀运算的代数性质,不难得到下面的性质:1)对偶性(XCS)C=XS,(XCS)C=XS2)扩展性(收缩性),XS X XS即开运算恒使原图像缩小,而闭运算恒使原图像扩大,6.2.6 开闭运算的代数性质,3)单调性 如果XY,则XSYS,XSYS 如果YZ且ZY=Z,那么XY X Z,根椐这一性质可以知道,结构元素的扩大只有在保证扩大后的结构元素对原结构元素闭运算不变的条件下方能保持单调性。,4)平移不变性(X+h)S=(XS)+h,(X+h)S=(XS)+hX(S+h)=XS,X(S+h)=XS5)等幂性(XS)S=XS,(XS)S=XS 开、闭运算的等幂性意味着一次滤波就能把所有特定结构元素的噪声滤除干净,作重复的运算不会再有效果。这是一个与经典方法(例如中值滤波、线性卷积)不同的性质。,6.3 灰值形态学,6.3.1 腐蚀与膨胀 1 灰度腐蚀 用结构元素b对输入图像f(x,y)进行灰值腐蚀记为f S,其定义为式中,Df和Db分别是f和b的定义域。这里限制(t+x)和(m+y)在f的定义域之内,类似于二值腐蚀定义中要求结构元素完全包括在被腐蚀集合中。,其效果相当于半圆形结构元素在被腐蚀函数的下面“滑动”时,其圆心画出的轨迹。但是,这里存在一个限制条件,即结构元素必须在函数曲线的下面平移。从图中不难看出,半圆形结构元素从函数的下面对函数产生滤波作用,这与圆盘从内部对二值图像滤波的情况是相似的。,采用了一个扁平结构元素对上图的函数作灰值腐蚀。扁平结构元素是一种在其定义域上取常数的结构元素。注意这种结构元素产生的滤波效果。,6.3.2 灰值膨胀 用结构元素S(x,y)对输入图像进行灰值膨胀记为f s,其定义为式中,Df和Db分别是f和S的定义域。这里限制(t-x)和(m-y)在f的定义域之内,类似于在二值膨胀定义中要求两个运算集合至少有一个(非零)元素相交。,灰度膨胀可以通过将结构元素的原点平移到与信号重合,然后,对信号上的每一点求结构元素的最大值得到.,6.3.2 开运算与闭运算 灰度开运算 用结构元素S(灰值图像)对灰值图像f做开运算记为f S,其定义为 f S=(f S)S,灰值闭运算 用结构元素S(灰值图像)对灰值图像f做闭运算记为fS,其定义为 f S=(f S)S,开运算可看作将b贴着f 的下沿从一端滚到另一端。对所有比b的直径小的山峰其高度和尖锐度都减弱了。开运算操作消除与结构元素相比尺寸较小的亮细节,而保持图像整体灰度值和大的亮区域基本不受影响。腐蚀去除了小的亮细节并同时减弱了图像亮度,膨胀增加了图像亮度,但又不重新引入前面去除的细节。,闭运算可看作将b贴着f 的上沿从一端滚到另一端。所有比b的直径小的山谷得到了“填充”。闭运算操作消除与结构元素相比尺寸较小的暗细节,而保持图像整体灰度值和大的暗区域基本不受影响;膨胀去除了小的暗细节并同时增强了图像亮度,腐蚀减弱了图像亮度但又不重新引入前面去除的细节。,6.3.3 形态学重构,形状重构是图像形态处理的重要操作之一,通常用来强调图像中与掩模图像指定对象相一致的部分,同时忽略图像中的其他对象。形态学重构是根据一幅图像(称之为掩模图像mask)的特征对另一幅图像(称之为标记图像marker)进行重复膨胀,重点是要选择一个合适的标记图像,使膨胀所得的结果能够强调掩模图像中的主要对象。每一次膨胀处理从标记图像的峰值点开始,整个膨胀过程将一直重复,直到图像的像素值不再变化为止。形态重构操作具有这样一些独有的特性:形态重构处理是基于两幅图像的,一个是标记图像,另一个是掩模图像,而不仅仅是一幅图像和一个结构元素;重构将一直重复直至图像稳定(即图像不再变化);形态重构是基于连通性概念的,而不是基于结构元素的。,若g是掩模,f为标记,则从f重构g可以记为,它有下面的迭代过程定义:1.将 初始化为标记图像。2.创建结构元素。3.重复 直到 标记 必须是g 的一个子集,即。,6.4 形态学的应用,前面已经介绍了二值形态学和灰值形态学的基本运算腐蚀,膨胀,开和闭运算及其一些性质,通过对它们的组合可以得到一系列二值形态学和灰值形态学的实用算法。灰值形态学的主要算法有灰值形态学梯度,形态学平滑,纹理分割等。本节主要介绍形态学滤波,骨架抽取等重要算法。通过本节的讨论,可以从几何角度理解形态学的一些非常实用的技术。不过,应该注意到,在实际应用形态学方法时,通常需要对输入图像做预处理,以便适合于使用这些算法。同时对输出图像可能还要做一些处理,以便产生满意的结果。,6.4.1 形态学滤波 由于开、闭运算所处理的信息分别与图像的凸、凹处相关,因此,它们本身都是单边算子,可以利用开、闭运算去除图像的噪声、恢复图像,也可交替使用开、闭运算以达到双边滤波目的。一般,可以将开、闭运算结合起来构成形态学噪声滤波器,例如(XS)S或(XS)S等。,整个过程是先做开运算再做闭运算,可以写为,可看出目标区域内外的噪声都消除掉了,而目标本身除原来的4个直角变为圆角外没有太大的变化。在利用开、闭运算滤除图像的噪声时,选择圆形结构元素会得到较好的结果。为了能使从噪声污染的图像X中恢复原始图像X0的结果达到最优,在确定结构元素的半径时,可以采用优化方法。,6.4.2 骨架抽取 1.细化 就是从原来的图中去掉一些点,但仍要保持原来的形状。实际上,是保持原图的骨架。,即X B为X与X B的差集。更一般地,利用结构对序列B1,B2,BN迭代地产生输出序列,随着迭代的进行,得到的集合也不断细化,2.细化的重要性 利用细化技术得到区域的细化结构是常用的方法。寻找二值图像的细化结构是图像处理的一个基本问题。在图像识别或数据压缩时,经常要用到这样的细化结构。在图像识别或数据压缩时,经常要用到这样的细化结构,3.骨架 所谓骨架,可以理解为图象的中轴.例如:一个长方形的骨架是它的长方向上的中轴线;圆的骨架是它的圆心;直线的骨架是它自身;孤立点的骨架也是自身。(1)基于烈火模拟:设想在时刻,将目标边界各处同时点燃,火的前沿以匀速向目标内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的集合就构成了骨架。,图 骨架的定义,(2)基于最大圆盘:目标X的骨架由X内所有最大内切圆盘的圆心组成,最大圆盘不是其他任何完全属于X的圆盘的子集,并且至少有两点与目标边界轮廓相切。,定义骨架子集Sk(X)为图像X内所有最大圆盘kB的圆心x构成的集合,对于k0,1,2,从骨架的定义可知,骨架是所有骨架子集的并,即 S(X)=Sk(X)|k0,1,2,可以证明骨架子集为Sk(X)=(X kB)-(X k)式中,B为结构元素,(X kB)代表连续k次用B对X腐蚀,S(X)=(X kB)-(XkB)|k0,1,2,,图 骨架抽取示例(a)一幅二值图像;(b)用33的结构元素S得到的骨架;(c)用55的结构元素得到的骨架;(d)用77的结构元素得到的骨架,4.细化算法举例 细化算法有很多,我们在这里介绍的是一种简单而且效果很好的算法,用它就能够实现从文本抽取骨架的功能。我们的对象是白纸黑字的文本。*判断一个点是否能去掉的判据:依据:八个相邻点(八连通)的情况:(1)内部点不能删除;(2)孤立点不能删除;(3)直线端点不能删除;(4)如果P是边界点,去掉P后,如果连通分量不增加,则P可以删除。,方法:查表法 事先做出一张表,从0到255共有256个元素,每个元素要么是0,要么是1。我们根据某点(当然是要处理的黑色点了)的八个相邻点的情况查表,若表中的元素是1,则表示该点可删,若为0则保留。白点为1,黑点为0,0-15 0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,16-31 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,32-47 0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,48-631,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,64-79 1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,80-950,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96-111 1,1,0,0,1,1,0,0,1,1,0,1,1,1,0,1,112-1270,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128-143 0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,144-159 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,160-175 0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,176-191 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,192-207 1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,208-223 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,224-239 1,1,0,0,1,1,0,0,1,1,0,1,1,1,0,0,240-255 1,1,0,0,1,1,1,0,1,1,0,0,1,0,0,0,例题:对一个黑色矩形进行细化,在每一次水平细化后,再进行一次垂直方向的细化,就可以了,这样一来,每处理一次,删除点的顺序变成:(先是水平方向扫描)第一行最左边的点;第一行最右边的点;第二行最左边的点;第二行最右边的点;最后一行最左边的点;最后一行最右边的点;(然后是垂直方向扫描)第二列最上边的点(因为第一列最上边的点已被删除);第二列最下边的点;第三列最上边的点;第三列最下边的点;倒数第二列最上边的点(因为倒数第一列最上边的点已被删除);倒数第二列最下边的点。我们发现,刚好剥掉了一圈,这也正是细化要做的事。实际的结果也验证了我们的想法。,在每一行水平扫描的过程中,先判断每一点的左右邻居,如果都是黑点,则该点不做处理。另外,如果某个黑点被删除了,那么跳过它的右邻居,处理下一个点。,