您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 造纸印刷 > Matlab数字图像处理12
第12章形态学图像处理形态学是一种应用于图像处理和模式识别领域的新的方法,是一门建立在严格的数学理论基础上而又密切联系实际的科学。由于形态学具有完备的数学基础,这为形态学用于图像分析和处理等奠定了坚实的基础。本章详细的介绍利用MATLAB软件进行形态学图像处理,主要内容包括基本运算、组合形态学运算以及二值图像的其他形态学运算等内容。12.1基本的形态学运算数学形态学可以看作是一种特殊的数字图象处理方法和理论,主要以图象的形态特征为研究对象。它通过设计一整套运算、概念和算法,用以描述图象的基本特征。这些数学工具不同于常用的频域或空域算法,而是建立在微分几何以及随机集论的基础之上的。数学形态学作为一种用于数字图象处理和识别的新理论和新方法,它的理论虽然很复杂,但它的基本思想却是简单而完美的。数学形态学方法比其他空域或频域图像处理和分析方法具有一些明显的优势。例如,基于数学形态学的边缘信息提取处理优于基于微分运算的边缘提取算法,它不像微分算法对噪声那样敏感,提取的边缘比较光滑;利用数学形态学方法提取的图像骨架也比较连续,断点少等;数学形态学易于用并行处理方法有效的实现,而且硬件实现容易。12.1.1基本概念集合论是数学形态学的基础,首先对集合论的一些基本概念做一个简单介绍。腐蚀运算和膨胀运算是数学形态学的两个基本变换。参加运算的对象有两个:图像A(感兴趣目标)和结构集合B,B称为结构元素。结构元素通常是个圆盘,但它其实可以是任何形状。设和是的子集,则把图像沿矢量平移一段距离记作或,其定义为:结构元素的映射为或,定义为:的补集记作或,定义为:两个集合和的差集记作,定义为:对于两幅图像和,如果,则称击中,记作;否则,如果,则称击不中A。12.1.2结构元素结构元素是膨胀和腐蚀的最基本组成部分,用于测试输入图像。二维结构元素是由数值0和1组成的矩阵。结构元素的原点指定了图像中需要处理的像素范围,结构元素中数值为1的点决定结构元素的领域像素在进行膨胀或腐蚀操作时是否参与计算。在MATLAB软件中,结构元素定义为一个STREL对象。如果nhood为结构元素定义的领域,则任意大小和维数的结构元素的原点坐标为:origin=floor((size(nhood)+1)/2)。在MATLAB软件中,采用函数strel()创建任意大小和形状的STREL对象。函数strel()支持常用的形状,例如线型(line)、矩形(rectangle)、方形(square)、球形(ball)、钻石型(diamond)和自定义的任意型(arbitrary)等。12.1.3膨胀与腐蚀膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。通过膨胀,可以填充图像中的小孔,及在图像边缘处的小凹陷部分。结构元素对图像的膨胀,记作,定义为:腐蚀和膨胀是对偶操作。腐蚀是一种消除边界点,使边界向内部收缩的过程。利用腐蚀操作,可以消除小且无意义的物体。集合被结构元素腐蚀,记作,定义为::xABxBA12.1.4开运算和闭运算结构元素对的开运算,记作,定义为:即首先采用结构元素对做腐蚀运算,然后再做膨胀运算,使用相同的结构元素。闭运算是开运算的对偶运算,记作,定义为:即首先用结构元素对做膨胀运算,然后再做腐蚀运算,使用相同的结构元素。12.2组合形态学运算图像的膨胀和腐蚀是最基本的形态学运算。下面介绍组合形态学运算,主要内容包括高帽滤波和低帽滤波、边界提取、区域填充等等。12.2.1高帽滤波和低帽滤波图像的形态学高帽滤波(top-hatfiltering)定义为:其中为输入的图像,为采用的结构元素,即从图像中减去形态学开操作后的图像。通过高帽滤波可以增强图像的对比度。图像的形态学低帽滤波(bottom-hatfiltering)定义为:其中为输入的图像,为采用的结构元素,即从图像中减去形态学闭操作后的图像。通过低帽滤波可以获取图像的边缘。12.2.2图像填充操作在MATLAB软件中,采用函数imfill()对二值图像或灰度图像进行填充操作。函数imfill()的调用格式为:BW2=imfill(BW):该函数对二值图像BW进行填充操作,对于二维图像允许用户通过鼠标选择填充的点。通过键盘上面的Backspace键或Delete键可以取消当前选择的点,通过键盘上的Return键可以结束交互式的选择。[BW2,locations]=imfill(BW):该函数中返回值locations包含了交互式选择时的点的坐标。BW2=imfill(BW,locations):该函数中通过参数locations指定了进行填充时的点的坐标。BW2=imfill(BW,‘holes’):该函数通过参数holes可以填充二值图像中的空洞。I2=imfill(I):该函数对灰度图像进行填充操作,返回值I2也是灰度图像。12.2.3最大值和最小值对于一幅图像可以有多个局部极大值或极小值,但只有一个最大值或最小值。在MATLAB软件中,采用函数imregionalmax()获取图像的所有局部极大值,采用函数imregionalmin()获取局部极小值。函数imregionalmax()的调用格式为:BW=imregionalmax(I):该函数获取灰度图像I的局部极大值,返回值BW为和原图像大小相同的二值图像,BW中元素1对应的是极大值,其它元素值为0。BW=imregionalmax(I,conn):该函数中参数conn为连通类型。对于二维图像conn可以取值为4和8,默认值为8。对于三维图像,conn可取值为6、18和26,默认值为26。12.2.4图像的边界测定对于灰度图像可以通过形态学的膨胀和腐蚀来获取图像的边缘。通过形态学获取灰度图像的边缘的优点是对边缘的方向性依赖比较小。下面通过例子程序进行说明。12.2.5二值图像的形态学操作在MATLAB软件中,通过函数bwmorph()可以进行二值图像的大量形态学操作,例如图像的骨骼化、图像的细化,以及开操作和闭操作等等。该函数的功能非常强大,读者可以查询MATLAB的帮助系统获取该函数的调用格式。下面通过几个例子程序介绍该函数的功能。12.3二值图像的其他形态学操作图像的膨胀和腐蚀是最基本的形态学操作。下面介绍一些常用的形态学操作,主要包括极限腐蚀、查表操作、图像的标记、对象的选择、图像的面积和欧拉数等。12.3.1二值图像的极限腐蚀在MATLAB软件中,采用函数bwulterode()进行图像的极限腐蚀,每个对象最后变为一个像素点为止。函数bwulterode()的调用格式为:BW2=bwperim(BW1):该函数获取二值图像的边缘,返回值BW2是和原图像大小相同的二值图像。BW2=bwulterode(BW,method,conn):该函数中设置参数method,可取值为euclidean、cityblock、chessboard和quasi-euclidean。对于二维图像,参数conn可取值为4和8,默认值为8。对于三维图像,conn可取值为6、18和26,默认值为26。12.3.2二值图像的查表操作为了提高二值图像的处理速度,MATLAB软件提供了查表操作的相关函数。查表操作适合处理2×2和3×3的邻域情况。在MATLAB软件中,函数makelut()用于建立表单,函数applylut()用于查表操作。函数makelut()的调用格式为:lut=makelut(fun,n):该函数建立表单,其中参数fun为设定判断条件的函数,n为邻域大小,可取值为2或3。采用函数makelut()建立表单后,可以采用函数applylut()进行查表操作。在MATLAB中,函数applylut()的调用格式为:A=applylut(BW,LUT):该函数采用查表的方式对二值图像的邻域进行操作,参数BW为二值图像,参数LUT为采用函数makelut()建立的表单。返回值A为查表操作后得到的二值图像。12.3.3二值图像的标记对于属于同一个像素连通区域的所有像素分配相同的编号,对不同的连通区域分配不同的编号,称为连通区域的标记。在MATLAB中,采用函数bwlabel()和函数bwlabeln()进行连通区域的标记操作。函数bwlabel()只支持二维的二值图像,函数bwlabeln()支持任意维数的二值图像。函数bwlabel()的调用格式为:L=bwlabel(BW,n):该函数建对二值图像BW的连通区域进行标记,参数n为连通类型,可取值为4和8,默认值为8,即8-连通。函数的返回值L为标记矩阵,和原来的二值图像有相同的大小。[L,num]=bwlabel(BW,n):该函数对二值图像BW进行标记,返回值num为连通区域的数目。12.3.4二值图像的对象选择在MATLAB软件中,采用函数bwselect()在二值图像中选择单个的对象,要求图像必须是二维的。函数bwselect()的调用格式为:BW2=bwselect(BW,c,r,n):该函数对输入的二值图像BW进行对象选择,输入参数(c,r)为对象的像素点的位置,c和r的维数相同,参数n为对象的连通类型,可取值为4和8。返回值BW2为选择了指定对象的二值图像,和原图像有相同的大小。BW2=bwselect(BW,n):该函数采用交互的方式,用户采用鼠标选择像素点的位置。12.3.5二值图像的面积面积是二值图像中像素值为1的像素的个数。在MATLAB软件中,采用函数bwarea()计算二值图像的面积。函数bwarea()的调用格式为:total=bwarea(BW):该函数计算输入的二值图像BW的面积,返回值total为得到的面积值。在计算二值图像的面积时,不是简单的计算像素值为1的像素的个数,而是为每个像素设置一个权值,采用加权求和的方式得到面积。12.3.6二值图像的欧拉数在二值图像中,像素值为1的连通区域(对象)的个数减去孔数,所得的差值为这幅图像的欧拉数。欧拉数测量的是图像的拓扑结构。在MATLAB中,使用函数bweuler()计算二值图像的欧拉数,该函数的调用格式为:eul=bweuler(BW,n):该函数计算输入的二值图像BW的欧拉数,参数n可以为4和8,默认值为8,即8连通。12.4本章小结本章详细的介绍了利用形态学进行图像的处理和分析。首先详细的介绍了形态学的基本概念和基本运算,包括膨胀、腐蚀、开运算和闭运算等。然后详细介绍了利用形体学进行图像的处理,主要内容包括图像的填充、最大值和最小值的获取、图像的边界测定以及二值图像的形态学分析。最后介绍了形态学进行图像处理常用的操作,包括极限腐蚀、查表操作、图像的标记、对象的选取、图像的面积和欧拉数等。习题12.1通过下面的程序建立一个二值图像,对该二值图像先进行膨胀,然后进行腐蚀,观察结果并进行分析。closeall;clearall;clc;I=zeros(10,10);I(3:5,4:5)=1;12.2任意选择一幅灰度图像,然后对该图像进行高帽滤波,显示结果并进行分析。12.3通过下面的程序建立灰度图像,通过编程来获取该图像的局部极大值。closeall;clearall;clc;I=20*ones(10,10);I(3:3,3:4)=35;I(5:7,7:9)=43;I(2,8)=60
本文标题:Matlab数字图像处理12
链接地址:https://www.777doc.com/doc-3521550 .html