数学形态学及其应用.ppt
《数学形态学及其应用.ppt》由会员分享,可在线阅读,更多相关《数学形态学及其应用.ppt(110页珍藏版)》请在三一办公上搜索。
1、第八章 数学形态学及其应用,8.1 引言 8.2 二值形态学 8.3 灰值形态学 8.4 形态学的应用 8.5 应用实例细化,8.1 引 言,8.1.1 数学形态学 数学形态学(Mathematical Morphology)诞生于1964年,是由法国巴黎矿业学院博士生赛拉(J.Serra)和导师马瑟荣,在从事铁矿核的定量岩石学分析及预测其开采价值的研究中提出“击中/击不中变换”,并在理论层面上第一次引入了形态学的表达式,建立了颗粒分析方法。他们的工作奠定了这门学科的理论基础,如击中/击不中变换、开闭运算、布尔模型及纹理分析器的原型等。数学形态学的基本思想是用具有一定形态的结构元素去量度和提取
2、图像中的对应形状以达到对图像分析和识别的目的。,数学形态学的数学基础和所用语言是集合论,因此它具有完备的数学基础,这为形态学用于图像分析和处理、形态滤波器的特性分析和系统设计奠定了坚实的基础。数学形态学的应用可以简化图像数据,保持它们基本的形状特性,并除去不相干的结构。数学形态学的算法具有天然的并行实现的结构,实现了形态学分析和处理算法的并行,大大提高了图像分析和处理的速度。,数学形态学是由一组形态学的代数运算子组成的,它的基本运算有4个:膨胀(或扩张)、腐蚀(或侵蚀)、开启和闭合,它们在二值图像和灰度图像中各有特点。基于这些基本运算还可推导和组合成各种数学形态学实用算法,用它们可以进行图像形
3、状和结构的分析及处理,包括图像分割、特征抽取、边界检测、图像滤波、图像增强和恢复等。数学形态学方法利用一个称作结构元素的“探针”收集图像的信息,当探针在图像中不断移动时,便可考察图像各个部分之间的相互关系,从而了解图像的结构特征。数学形态学基于探测的思想,与人的FOA(Focus Of Attention)的视觉特点有类似之处。作为探针的结构元素,可直接携带知识(形态、大小、甚至加入灰度和色度信息)来探测、研究图像的结构特点。,数学形态学的基本思想及方法适用于与图像处理有关的各个方面,如基于击中/击不中变换的目标识别,基于流域概念的图像分割,基于腐蚀和开运算的骨架抽取及图像编码压缩,基于测地距
4、离的图像重建,基于形态学滤波器的颗粒分析等。迄今为止,还没有一种方法能像数学形态学那样既有坚实的理论基础,简洁、朴素、统一的基本思想,又有如此广泛的实用价值。有人称数学形态学在理论上是严谨的,在基本观念上却是简单和优美的。,数学形态学是一门建立在严格数学理论基础上的学科,其基本思想和方法对图像处理的理论和技术产生了重大影响。事实上,数学形态学已经构成一种新的图像处理方法和理论,成为计算机数字图像处理的一个重要研究领域,并且已经应用在多门学科的数字图像分析和处理的过程中。这门学科在计算机文字识别,计算机显微图像分析(如定量金相分析,颗粒分析),医学图像处理(例如细胞检测、心脏的运动过程研究、脊椎
5、骨癌图像自动数量描述),图像编码压缩,工业检测(如食品检验和印刷电路自动检测),材料科学,机器人视觉,汽车运动情况监测等方面都取得了非常成功的应用。另外,数学形态学在指纹检测、经济地理、合成音乐和断层X光照像等领域也有良好的应用前景。形态学方法已成为图像应用领域工程技术人员的必备工具。目前,有关数学形态学的技术和应用正在不断地研究和发展。,图8-1 元素与集合间的关系,图8-2 集合的交集、并集和补集,3.击中(Hit)与击不中(Miss)设有两幅图像A和B,如果AB,那么称B击中A,记为BA,其中是空集合的符号;否则,如果AB=,那么称B击不中A,如图8-3所示。,图8-3 击中与击不中(a
6、)B击中A;(b)B击不中A,4.平移和反射 设A是一幅数字图像(见图8-4(a)),b是一个点(见图8-4(b)),那么定义A被b平移后的结果为Abab|aA,即取出A中的每个点a的坐标值,将其与点b的坐标值相加,得到一个新的点的坐标值a+b,所有这些新点所构成的图像就是A被b平移的结果,记为A+b,如图8-4(c)所示。,图8-4 平移与反射,5.目标和结构元素 被处理的图像称为目标图像,一般用大写英文字母表示。为了确定目标图像的结构,必须逐个考察图像各部分之间的关系,并且进行检验,最后得到一个各部分之间关系的集合。在考察目标图像各部分之间的关系时,需要设计一种收集信息的“探针”,称为“结
7、构元素”。“结构元素”一般用大写英文字母表示,例如用S表示。在图像中不断移动结构元素,就可以考察图像之间各部分的关系。一般,结构元素的尺寸要明显小于目标图像的尺寸。,8.2 二值形态学,二值形态学中的运算对象是集合。设A为图像集合,S为结构元素,数学形态学运算是用S对A进行操作。需要指出,实际上结构元素本身也是一个图像集合。对每个结构元素可以指定一个原点,它是结构元素参与形态学运算的参考点。应注意,原点可以包含在结构元素中,也可以不包含在结构元素中,但运算的结果常不相同。以下用阴影代表值为1的区域,白色代表值为0的区域,运算是对值为1的区域进行的。二值形态学中两个最基本的运算腐蚀与膨胀,如图8
8、-5所示。,图8-5 腐蚀与膨胀示意图,8.2.1 腐蚀 腐蚀是最基本的一种数学形态学运算。对一个给定的目标图像X和一个结构元素S,想象一下将S在图像上移动。在每一个当前位置x,S+x只有三种可能的状态(见图8-6):(1)S+xX;(2)S+xXC;(3)S+xX与S+xXC均不为空。,图8-6 S+x的三种可能的状态,式(8-2)表明,X用S腐蚀的结果是所有使S平移x后仍在X中的x的集合。换句话说,用S来腐蚀X得到的集合是S完全包括在X中时S的原点位置的集合。上式也可以帮助我们借助相关概念来理解腐蚀操作。腐蚀在数学形态学运算中的作用是消除物体边界点。如果结构元素取33的像素块,腐蚀将使物体
9、的边界沿周边减少一个像素。腐蚀可以把小于结构元素的物体(毛刺、小凸起)去除,这样选取不同大小的结构元素,就可以在原图像中去掉不同大小的物体。如果两个物体之间有细小的连通,那么当结构元素足够大时,通过腐蚀运算可以将两个物体分开。,例8-1 腐蚀运算图解。图8-7给出腐蚀运算的一个简单示例。其中,图8-7(a)中的阴影部分为集合X,图8-7(b)中的阴影部分为结构元素S,而图(c)中黑色部分给出了XS 的结果。由图可见,腐蚀将图像(区域)收缩小了。,图8-7 腐蚀运算示例,(8-3),式(8-3)可从定义式(8-2)中推出,它把腐蚀表示为图像平移的交,这在某些并行处理环境中特别有用。图8-8给出了
10、一个例子。,图8-8 腐蚀表示为图像平移的交,根据上述理论,利用VC+可以编写一个实现腐蚀运算的函数MakeErosion()。/*/函数名称:BOOL MakeErosion()/基本功能:本函数对图像数据执行腐蚀操作/参数说明:/int*nMask 结构元素数组指针/int nMaskLen结构元素长度(以点数为计数单位)/unsigned char*pOut输出图像数据指针/unsigned char*pIn输入图像数据指针/intnWidthBytes图像宽度(以字节表示)/intnWidth图像宽度(以像素表示),/intnHeight图像高度(以像素表示)/返回值:BOOL 成功返
11、回TRUE,失败返回FALSE/*BOOL CMorphPro:MakeErosion(int*nMask,int nMaskLen,unsigned char*pOut,unsigned char*pIn,int nWidthBytes,int nWidth,int nHeight)/若传入的图像数据为空,将无法完成操作,直接返回 if(pOut=NULL|pIn=NULL)return FALSE;/定义变量 int x,y,k;unsigned char Mark;/执行腐蚀操作,for(y=0;y=0)&(x+nMask2*k=0)&(y+nMask2*k+1 nHeight),uns
12、igned char Data;/取与模板中位置相对应的像素值 unsigned char*pTemp=pIn;pTemp+=y*nWidthBytes;pTemp+=nMask2*k+1*nWidthBytes;Data=pTempx+nMask2*k;if(Data!=255)Mark=0;k=nMaskLen;,else Mark=0;k=nMaskLen;if(Mark=1)pOutTempx=255;return TRUE;,函数MakeErosion()是一个保护型函数,在文档类中不能直接调用,CMorphPro类(形态学处理类)提供了一个公有型函数Erosion(),可调用Mak
13、eErosion进行腐蚀运算。有关CmorphPro类的详细说明请参考配套光盘。Erosion()函数核心代码如下:/*/函数名称:BOOL Erosion()/基本功能:本函数对CDibObject对象中的图像进行腐蚀运算/参数说明:int*nMask 结构元素数组指针/intn MaskLen 结构元素长度(以点数为计数单位)/CDibObject*pDibObject 输出图像数据指针/返回值:BOOL 成功返回TRUE,失败返回FALSE,/*BOOL CMorphPro:Erosion(int*nMask,int nMaskLen,CDibObject*pDibObject)/使用传
14、入的CDibObject对象/无CDibObject对象时,返回FALSE/获得图像宽度和高度及字节宽度 int nWidth=m_pDibObject-GetWidth();int nHeight=m_pDibObject-GetHeight();int nWidthBytes=m_pDibObject-WidthBytes(8,nWidth);/图像数据区大小 DWORD dwSize=nWidthBytes*nHeight;/获得图像数据区指针 unsigned char*pOldBuffer=GetBitsPoint();,/为新图像分配内存/新图像数据指针 unsigned char
15、*pNewBuffer=(unsigned char*):GlobalLock(hNewDib);/将原图像数据移动到新图像中(原图像数据清零)MoveBuffer(pNewBuffer,pOldBuffer,(LONG)dwSize);/调用MakeErosion()保护型函数进行腐蚀操作 MakeErosion(nMask,nMaskLen,pOldBuffer,pNewBuffer,nWidthBytes,nWidth,nHeight);/将内存解锁以及将不再使用的内存释放 return(TRUE);,图8-9 用33的结构元素进行腐蚀(a)原始二值图像;(b)33结构元素;(c)腐蚀结
16、果,(a),(b),(c),式(8-4)和式(8-5)在算法设计中更有用些,而式(8-6)便于刻画算法的几何特性。从式(8-4)可知,腐蚀和膨胀运算对集合运算的分配律只有在特定情况下才能成立,因此在应用时应注意。另外,用腐蚀和膨胀运算还可以实现图像的平移。如果在自定义结构元素时选择不在原点的一个点作为结构元素,则得到的图像形状没有任何改变,只是位置发生了移动。仿照MakeErosion()函数,可以编写一个MakeDilation()函数进行膨胀运算,与腐蚀类似,由Dilation()调用MakeDilation()函数来实现膨胀运算。,8.2.3 开、闭运算 1.基本概念 如果结构元素为一个
17、圆盘,那么,膨胀可填充图像中的小孔(比结构元素小的孔洞)及图像边缘处的小凹陷部分,而腐蚀可以消除图像边缘小的成分,并将图像缩小,从而使其补集扩大。但是,膨胀和腐蚀并不互为逆运算,因此它们可以级连结合使用。在腐蚀和膨胀两个基本运算的基础上,可以构造出形态学运算族,它由膨胀和腐蚀两个运算的复合与集合操作(并、交、补等)组合成的所有运算构成。例如,可先对图像进行腐蚀然后膨胀其结果,或先对图像进行膨胀然后腐蚀其结果(这里使用同一个结构元素)。前一种运算称为开运算(或开启),后一种运算称为闭运算(闭合)。开运算和闭运算是形态学运算族中两个最为重要的组合运算。,(8-7),(8-8),(8-9),因而XS
18、是所有X的与结构元素S全等的子集的并组成的。或者说,对XS中的每一个点x,均可找到某个包含在X中的结构元S的平移S+y,使得xS+y,即x在X的近旁具有不小于S的几何结构。而对于X中不能被XS恢复的点,其近旁的几何结构总比S要小。这一几何描述说明,XS是一个基于几何结构的滤波器。图8-10给出了两个开运算的例子,其中图8-10(a)是结构元素S1和S2,图8-10(b)是用S1对X进行开运算的结果,图8-10(c)是用S2对X进行开运算的结果。当使用圆盘结构元素时,开运算对边界进行了平滑,去掉了凸角;当使用线段结构元素时,沿线段方向宽度较大的部分才能够被保留下来,而较小的凸部将被剔除。而XXS
19、给出的是图像的凸出特征。可见,不同的结构元素的选择导致了不同的分割,即提取出不同的特征。,图8-10 开运算去掉了凸角(a)结构元素S1和S2;(b)XS1;(c)XS2,开启和闭合不受原点是否在结构元素之中的影响。由腐蚀和膨胀的对偶性,可知(XCS)C=XS;(XCS)C=XS(8-10),开、闭变换也是一对对偶变换,因此,闭运算的几何意义可以由补集的开运算的几何意义导出。图8-11给出了两个闭运算的例子,其中,图8-11(a)是结构元素S1 和S2,图8-11(b)是用S1对X进行闭运算的结果,图8-11(c)是用S2对X进行闭运算的结果。可见,闭运算通过填充图像的凹角来平滑图像,而XSX
20、给出的是图像的凹入特征。,图8-11 闭运算填充了凹角(a)结构元素S1和S2;(b)XS1;(c)XS2,图8-12 开、闭运算示例(a)原图像;(b)结构元素S;(c)结构元素S腐蚀图像X;(d)结构元素S腐蚀X的结果;(e)对腐蚀的结构再膨胀;(f)再膨胀(开运算)的结果XS;(g)结构元素S膨胀X;(h)结构元素S膨胀X的结果XS;(i)对膨胀的结果再腐蚀;(j)再腐蚀的结果(闭运算)XS,2.开闭运算的代数性质 由于开、闭运算是在腐蚀和膨胀运算的基础上定义的,根据腐蚀和膨胀运算的代数性质,我们不难得到下面的性质。1)对偶性(XCS)C=XS,(XCS)C=XS2)扩展性(收缩性)XS
21、XXS即开运算恒使原图像缩小,而闭运算恒使原图像扩大,3)单调性 如果XY,则XSYS,XSYS 如果YZ且ZY=Z,那么XYX Z 根椐这一性质可以知道,结构元素的扩大只有在保证扩大后的结构元素对原结构元素开运算不变的条件下方能保持单调性。,4)平移不变性(X+h)S=(XS)+h,(X+h)S=(XS)+hX(S+h)=XS,X(S+h)=XS 5)等幂性(XS)S=XS,(XS)S=XS 开、闭运算的等幂性意味着一次滤波就能把所有特定结构元素的噪声滤除干净,作重复的运算不会再有效果。这是一个与经典方法(例如中值滤波、线性卷积)不同的性质。,6)开、闭运算与集合的关系,在操作对象为多个图像
22、的情况下,可借助集合的性质来进行开、闭运算,上述开、闭运算与集合的关系可用语言描述如下:(1)开运算与并集:并集的开运算包含了开运算的并集;(2)开运算与交集:交集的开运算包含在开运算的交集中;(3)闭运算与并集:并集的闭运算包含了闭运算的并集;(4)闭运算与交集:交集的闭运算包含在闭运算的交集中。,3.开运算的实现 根据上述理论,利用VC+可以编写一个实现开运算的函数Opening()。开运算相当于对图像先进行腐蚀运算再进行膨胀运算。/*/函数名称:BOOL Opening()/基本功能:本函数对CDibObject对象中的图像进行开运算/参数说明:int*nMask 结构元素数组指针/in
23、tnMaskLen结构元素长度(以点数为计数单位)/CDibObject*pDibObject输出图像数据指针/返回值:BOOL 成功返回TRUE,失败返回FALSE,/*BOOL CMorphPro:Opening(int*nMask,int nMaskLen,CDibObject*pDibObject)/对传入的CDibObject对象进行腐蚀 if(Erosion(nMask,nMaskLen,pDibObject)!=TRUE)return(FALSE);/对传入的CDibObject对象进行膨胀 if(Dilation(nMask,nMaskLen,pDibObject)!=TRUE
24、)return(FALSE);return(TRUE);,图8-13 开、闭运算效果示意图(a)原始图像;(b)开运算的结果;(c)闭运算的结果,(a)(b)(c),4.闭运算的实现 同样,根据上述理论,利用VC+可以编写一个实现闭运算的函数Closing()。闭运算相当于对图像先进行膨胀运算再进行腐蚀运算。,/*/函数名称:BOOL Closing()/基本功能:本函数对CDibObject对象中的图像进行闭运算/参数说明:int*nMask 结构元素数组指针/intnMaskLen 结构元素长度(以点数为计数单位),/CDibObject*pDibObject 输出图像数据指针/返回值:B
25、OOL 成功返回TRUE,失败返回FALSE/*BOOL CMorphPro:Closing(int*nMask,int nMaskLen,CDibObject*pDibObject)/对传入的CDibObject对象进行膨胀 if(Dilation(nMask,nMaskLen,pDibObject)!=TRUE)return(FALSE);/对传入的CDibObject对象进行腐蚀 if(Erosion(nMask,nMaskLen,pDibObject)!=TRUE)return(FALSE);return TRUE;,8.2.4 击中击不中(Hit/Miss)变换 在8.1.2节中曾经
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 形态学 及其 应用
链接地址:https://www.31ppt.com/p-5985175.html