数字图像处理第8章-_第1页
数字图像处理第8章-_第2页
数字图像处理第8章-_第3页
数字图像处理第8章-_第4页
数字图像处理第8章-_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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.2 基本符号和术语1.元素和集合在数字图像处理的数学形态学运算中,把一幅图像称为一个集合。对于二值图像而言,习惯上认为取值为1的点对应于景物中心,用阴影表示,而取值为0的点构成背景,用白色表示,这类图像的集合是直接表示的。考虑所有值为1的点的集合为A,则A与图像是一一对应的。对于一幅图

6、像A,如果点a在A的区域以内,那么就说a是A的元素,记为aA,否则,记作aA,如图81(a所示。 图8-1 元素与集合间的关系aAbB A(a(b 2.交集、并集和补集两个图像集合A和B的公共点组成的集合称为两个集合的交集,记为AB,即AB=a|aA且aB。两个集合A和B的所有元素组成的集合称为两个集合的并集,记为AB,即AB=a|aA或aB。对一幅图像A,在图像A区域以外的所有点构成的集合称为A的补集,记为A C,即A C=a|aA。交集、并集和补集运算是集合的最基本的运算,如图8-2所示。 图8-2 集合的交集、并集和补集BABABAA CABAB 3.击中(Hit 与击不中(Miss 设

7、有两幅图像A 和B ,如果AB ,那么称B 击中A ,记为B A ,其中 是空集合的符号;否则,如果A B = ,那么称B击不中A ,如图8-3所示。图8-3 击中与击不中(a B 击中A ;(b B 击不中A(a(bABBA 4.平移和反射设A是一幅数字图像(见图8-4(a,b是一个点(见图8-4(b,那么定义A被b平移后的结果为A+b=a+b|aA,即取出A中的每个点a的坐标值,将其与点b的坐标值相加,得到一个新的点的坐标值a+b,所有这些新点所构成的图像就是A被b平移的结果,记为A+b,如图8-4(c所示。 图8-4 平移与反射01234xy12345(ax01234123y(bb012

8、34xy12345y12341234x(c(d 5.目标和结构元素被处理的图像称为目标图像,一般用大写英文字母表示。为了确定目标图像的结构,必须逐个考察图像各部分之间的关系,并且进行检验,最后得到一个各部分之间关系的集合。在考察目标图像各部分之间的关系时,需要设计一种收集信息的“探针”,称为“结构元素”。“结构元素”一般用大写英文字母表示,例如用S表示。在图像中不断移动结构元素,就可以考察图像之间各部分的关系。一般,结构元素的尺寸要明显小于目标图像的尺寸。 8.2 二值形态学二值形态学中的运算对象是集合。设A为图像集合,S为结构元素,数学形态学运算是用S对A进行操作。需要指出,实际上结构元素本

9、身也是一个图像集合。对每个结构元素可以指定一个原点,它是结构元素参与形态学运算的参考点。应注意,原点可以包含在结构元素中,也可以不包含在结构元素中,但运算的结果常不相同。以下用阴影代表值为1的区域,白色代表值为0的区域,运算是对值为1的区域进行的。二值形态学中两个最基本的运算腐蚀与膨胀,如图8-5所示。 图8-5 腐蚀与膨胀示意图二值图像腐蚀膨胀 8.2.1腐蚀腐蚀是最基本的一种数学形态学运算。对一个给定的目标图像X和一个结构元素S,想象一下将S在图像上移动。在每一个当前位置x,S+x只有三种可能的状态(见图8-6:(1S+x X;(2S+x X C ;(3 S+xX与S+xX C均不为空。

10、图8-6 S+x的三种可能的状态xS+x1S+x2S+x3 第一种情形说明S +x 与X 相关最大,第二种情形说明S+x 与X 不相关,而第三种情形说明S +x 与X 只是部分相关。因而满足式(8-1的点x 的全体构成结构元素与图像最大相关点集,这个点集称为S 对X 的腐蚀(简称腐蚀,有时也称X 用S 腐蚀,记为X S 。腐蚀也可以用集合的方式定义,即式(8-2表明,X 用S 腐蚀的结果是所有使S 平移x 后仍在X 中的x 的集合。换句话说,用S 来腐蚀X 得到的集合是S 完全包括在X 中时S 的原点位置的集合。上式也可以帮助我们借助相关概念来理解腐蚀操作。|X x S x S X +=(8-

11、2 式(8-2表明,X用S腐蚀的结果是所有使S平移x后仍在X中的x 的集合。换句话说,用S来腐蚀X得到的集合是S完全包括在X中时S的原点位置的集合。上式也可以帮助我们借助相关概念来理解腐蚀操作。腐蚀在数学形态学运算中的作用是消除物体边界点。如果结构元素取3×3的像素块,腐蚀将使物体的边界沿周边减少一个像素。腐蚀可以把小于结构元素的物体(毛刺、小凸起去除,这样选取不同大小的结构元素,就可以在原图像中去掉不同大小的物体。如果两个物体之间有细小的连通,那么当结构元素足够大时,通过腐蚀运算可以将两个物体分开。 例8-1 腐蚀运算图解。图8-7给出腐蚀运算的一个简单示例。其中,图8-7 (a

12、中的阴影部分为集合X ,图8-7 (b中的阴影部分为结构元素S ,而图(c中黑色部分给出了X S 的结果。由图可见,腐蚀将图像(区域收缩小了。图8-7 腐蚀运算示例(a(b(c+ |SsXSSX-+= (8-3 如果S包含了原点,即OS,那么X S将是X的一个收缩,即X S X(当OS时;如果S不包含原点,那么X S X未必成立。如果结构元素S关于原点O是对称的,那么S=S V,因此X S=X S V,但是,如果S关于原点O不是对称的,那么X被S腐蚀的结果与X被S V腐蚀的结果是不同的。利用腐蚀运算的定义式可以直接设计腐蚀变换的算法。但有时为了更方便,常使用腐蚀的另一种表达式,即 式(8-3可

13、从定义式(8-2中推出,它把腐蚀表示为图像平移的交,这在某些并行处理环境中特别有用。图8-8给出了一个例子。图8-8 腐蚀表示为图像平移的交O x Sy XX +(-S 根据上述理论,利用VC+可以编写一个实现腐蚀运算的函数MakeErosion(。/*/函数名称:BOOL MakeErosion(/基本功能:本函数对图像数据执行腐蚀操作/参数说明:/ int *nMask 结构元素数组指针/ int nMaskLen结构元素长度(以点数为计数单位/unsigned char*pOut输出图像数据指针/unsigned char*pIn输入图像数据指针/intnWidthBytes图像宽度(以

14、字节表示/ intnWidth图像宽度(以像素表示 / intnHeight图像高度(以像素表示/返回值:BOOL 成功返回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;

15、unsigned char Mark;/执行腐蚀操作 for( y = 0; y < nHeight; y+ unsigned char *pOutTemp = pOut;pOutTemp += y * nWidthBytes;for( x = 0; x < nWidth; x+ Mark = 1;for (k = 0; k < nMaskLen; k+/不能处理边界像素if (x + nMask2 * k>= 0 &&(x + nMask2 * k< nWidth &&(y + nMask2 * k + 1>= 0 &

16、;&(y + nMask2 * k + 1< nHeight unsigned char Data;/取与模板中位置相对应的像素值unsigned char *pTemp = pIn;pTemp += y * nWidthBytes;pTemp += nMask2 * k + 1* nWidthBytes;Data = pTempx + nMask2 * k;if(Data != 255Mark = 0;k = nMaskLen; elseMark = 0;k = nMaskLen;if (Mark = = 1pOutTempx= 255; return TRUE; 函数Make

17、Erosion(是一个保护型函数,在文档类中不能直接调用,CMorphPro类(形态学处理类提供了一个公有型函数Erosion(,可调用MakeErosion进行腐蚀运算。有关CmorphPro类的详细说明请参考配套光盘。Erosion(函数核心代码如下:/*/函数名称:BOOL Erosion(/基本功能:本函数对CDibObject对象中的图像进行腐蚀运算/参数说明:int*nMask结构元素数组指针/intn MaskLen结构元素长度(以点数为计数单位 /CDibObject*pDibObject输出图像数据指针/返回值:BOOL 成功返回TRUE,失败返回FALSE /*BOOL C

18、MorphPro: : Erosion(int *nMask, int nMaskLen, CDibObject *pDibObject /使用传入的CDibObject对象/无CDibObject对象时, 返回FALSE/获得图像宽度和高度及字节宽度int nWidth = m_pDibObject->GetWidth(;int nHeight = m_pDibObject->GetHeight(;int nWidthBytes = m_pDibObject->WidthBytes(8, nWidth;/图像数据区大小DWORD dwSize = nWidthBytes *

19、 nHeight;/获得图像数据区指针unsigned char *pOldBuffer = GetBitsPoint(; /为新图像分配内存/新图像数据指针unsigned char *pNewBuffer = (unsigned char * : : GlobalLock( hNewDib ;/将原图像数据移动到新图像中(原图像数据清零MoveBuffer(pNewBuffer, pOldBuffer, (LONGdwSize;/调用MakeErosion(保护型函数进行腐蚀操作MakeErosion(nMask, nMaskLen, pOldBuffer, pNewBuffer, nWi

20、dthBytes, nWidth, nHeight;/将内存解锁以及将不再使用的内存释放return( TRUE ; 图8-9 用3×3的结构元素进行腐蚀(a 原始二值图像;(b 3×3结构元素;(c 腐蚀结果(a(b(c 8.2.2膨胀腐蚀可以看作是将图像X中每一与结构元素S全等的子集S+x 收缩为点x。反之,也可以将X中的每一个点x扩大为S+x,这就是膨胀运算,记为X S。若用集合语言,它的定义为X S= x| S+xx 与式(8-4等价的膨胀运算定义形式还有:(1X S=X+s|sS(8-5(2X S = S+x| xX (8-6(8-4 式(8-4和式(8-5在算法

21、设计中更有用些,而式(8-6便于刻画算法的几何特性。从式(8-4可知,腐蚀和膨胀运算对集合运算的分配律只有在特定情况下才能成立,因此在应用时应注意。另外,用腐蚀和膨胀运算还可以实现图像的平移。如果在自定义结构元素时选择不在原点的一个点作为结构元素,则得到的图像形状没有任何改变,只是位置发生了移动。仿照MakeErosion(函数,可以编写一个MakeDilation(函数进行膨胀运算,与腐蚀类似,由Dilation(调用MakeDilation(函数来实现膨胀运算。 8.2.3开、闭运算1.基本概念如果结构元素为一个圆盘,那么,膨胀可填充图像中的小孔(比结构元素小的孔洞及图像边缘处的小凹陷部分

22、,而腐蚀可以消除图像边缘小的成分,并将图像缩小,从而使其补集扩大。但是,膨胀和腐蚀并不互为逆运算,因此它们可以级连结合使用。在腐蚀和膨胀两个基本运算的基础上,可以构造出形态学运算族,它由膨胀和腐蚀两个运算的复合与集合操作(并、交、补等组合成的所有运算构成。例如,可先对图像进行腐蚀然后膨胀其结果,或先对图像进行膨胀然后腐蚀其结果(这里使用同一个结构元素。前一种运算称为开运算(或开启,后一种运算称为闭运算(闭合。开运算和闭运算是形态学运算族中两个最为重要的组合运算。 对图像X及结构元素S,用符号XS表示S对图像X作开运算,用符号XS表示S对图像X作闭运算,它们的定义为XS= (X S SXS= (

23、X S S由式(8-7和式(8-8可知,XS可视为对腐蚀图像X S用膨胀来进行恢复,而XS可看作是对膨胀图像X S用腐蚀来进行恢复。不过这一恢复不是信息无损的,即它们通常不等于原始图像X。由开运算的定义式,可以推得|XxSxSSX+=O(8-7(8-8(8-9 因而XS是所有X的与结构元素S全等的子集的并组成的。或者说,对XS中的每一个点x,均可找到某个包含在X中的结构元S的平移S+y,使得xS+y,即x在X的近旁具有不小于S的几何结构。而对于X中不能被XS恢复的点,其近旁的几何结构总比S要小。这一几何描述说明,XS是一个基于几何结构的滤波器。图8-10给出了两个开运算的例子,其中图8-10(

24、a是结构元素S1和S2,图8-10(b是用S1对X进行开运算的结果,图8-10(c是用S2对X进行开运算的结果。当使用圆盘结构元素时,开运算对边界进行了平滑,去掉了凸角;当使用线段结构元素时,沿线段方向宽度较大的部分才能够被保留下来,而较小的凸部将被剔除。而X-XS给出的是图像的凸出特征。可见,不同的结构元素的选择导致了不同的分割,即提取出不同的特征。 图8-10 开运算去掉了凸角(a 结构元素S1和S2; (b XS1; (c XS2xyOS1yxS2OXXS1XS2X(a(b(c 开启和闭合不受原点是否在结构元素之中的影响。由腐蚀和膨胀的对偶性,可知(X CSC=XS;(X CSC= XS

25、(8-10开、闭变换也是一对对偶变换,因此,闭运算的几何意义可以由补集的开运算的几何意义导出。图8-11给出了两个闭运算的例子,其中,图8-11(a是结构元素S1和S2,图8-11(b是用S1对X进行闭运算的结果,图8-11(c是用S2对X进行闭运算的结果。可见,闭运算通过填充图像的凹角来平滑图像,而XS-X给出的是图像的凹入特征。 图8-11 闭运算填充了凹角(a 结构元素S1和S2; (bXS1;(c XS2xyOS1yxS2OXXS2X(a(b(cXS1S1S1 图8-12 开、闭运算示例(a 原图像;(b 结构元素S;(c 结构元素S腐蚀图像X;(d 结构元素S腐蚀X的结果;(e 对腐

26、蚀的结构再膨胀;(f 再膨胀(开运算的结果XS;(g 结构元素S膨胀X;(h 结构元素S膨胀X的结果X S;(i 对膨胀的结果再腐蚀;(j再腐蚀的结果(闭运算XS 2.开闭运算的代数性质由于开、闭运算是在腐蚀和膨胀运算的基础上定义的,根据腐蚀和膨胀运算的代数性质,我们不难得到下面的性质。1对偶性(X CSC= XS,(X CSC= XS2扩展性(收缩性XS X XS即开运算恒使原图像缩小,而闭运算恒使原图像扩大 3单调性如果X Y,则XS YS,XS YS如果Y Z且ZY=Z,那么XY XZ根椐这一性质可以知道,结构元素的扩大只有在保证扩大后的结构元素对原结构元素开运算不变的条件下方能保持单调

27、性。 4平移不变性(X+hS=(XS+h,(X+hS=(XS+hX(S+h=XS,X(S+h=XS5等幂性(XSS= XS,(XSS= XS开、闭运算的等幂性意味着一次滤波就能把所有特定结构元素的噪声滤除干净,作重复的运算不会再有效果。这是一个与经典方法(例如中值滤波、线性卷积不同的性质。 6开、闭运算与集合的关系 (;(1111S X S X S X S X i ni i n i i n i i n i =O O O (;(1111S X S X S X S X i ni i n i i ni i ni = 在操作对象为多个图像的情况下,可借助集合的性质来进行开、闭运算,上述开、闭运算与集合的关系可用语言描述如下:(1开运算与并集:并集的开运算包含了开运算的并集;(2开运算与交集:交集的开运算包含在开运算的交集中;(3闭运算与并集:并集的闭运算包含了闭运算的并集;3.开运算的实现根据上述理论,利用VC+可以编写一个实现开运算的函数Opening(。开运算相当于对图像先进行腐蚀运算再进行膨胀运算。/*/函数名称:BOOL Opening(/基本功能:本函数对CDibObjec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论