形态学图像处理形态学即数学形态学(MathematicalMorphology)主要用于从图像中提取对表达和描绘区域形状有意义的图像分量。基本思想:用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的形态学图像处理的数学基础和所用语言是集合论形态学图像处理表现为一种邻域运算形式;一种特殊定义的邻域称之为“结构元素”(StructureElement),在每个像素位置上它与二值图像对应的区域进行特定的逻辑运算,逻辑运算的结果为输出图像的相应像素。形态学运算的效果取决于结构元素的大小、内容以及逻辑运算的性质。1.基础知识在形态学运算中,把一幅图像或者感兴趣的区域称为集合,用大写字母A,B,C表示;元素通常指一个单个的像素,该像素坐标位置用z=(z1,z2)表示。1、集合与元素属于:对于某一集合(图像区域)A,若点a在A内,则称a为A的元素,a属于A,记为a∈A;反之,若点b不属于A,记为bA。2、集合与集合并集:C={z|z∈Aorz∈B},记为C=A∪B,即A与B的并集C包含集合A与集合B的所有元素。交集:C={z|z∈Aandz∈B},记为C=A∩B,即A与B的交集C包含同时属于集合A与集合B的所有元素。补集:={z|zA},即A的补集是不包含A的所有元素组成的集合。差集:A-B={z|z∈A,zB},即A与B的差由属于A而不属于B的元素构成。包含:集合A的每一个元素都是集合B的元素,则称A为B的子集,记为ABcA二值形态学3、反射和平移反射:又名对称,定义为即关于原集合原点对称平移:将集合B移到点z=(z1,z2),定义为4、结构元素设有两幅图A,S。若A是被处理对象,而S是用来处理A的,则称S为结构元素。}Bb,|{bzzB}Bb,|{)(zbxxBz集合的反射显示平移、反射,(),zBwwbbBAccazaA-反射(相对某个中心点)-平移(相对原点)对一个给定的目标图像X和一个结构元素S,将S在图像上移动。在每一个当前位置x,S+x只有三种可能的状态第一种情形说明S+x与X相关最大,第二种情形说明S+x与X不相关,而第三种情形说明S+x与X只是部分相关1、腐蚀及其实现对于集合A和S,使用S对A进行腐蚀,记为AS,定义为:如果当S的原点移到z点时S能够完全包含于A中,则所有这样的z点构成的集合即为S对A的腐蚀图像。腐蚀运算的结果不仅与结构元素的形状(矩形、圆形、菱形等)选取有关,而且还与原点位置的选取有关。2.二值图像中形态学运算})(|{ASzSAz腐蚀运算的示例图(a)中的阴影部分为集合X,图(b)中的中的阴影部分为结构元素S,而图(c)中黑色部分给出了腐蚀结果。由图可见,腐蚀将图像(区域)收缩小了。把B的中心点与X上的点一一对应,如果B上的所有点都包含在X的范围内,则该点保留,否则删除。matlab中与腐蚀相关的两个函数为(1)imerodeI2=imerode(I,SE)I为原始图像,对应为二值图像SE为由strel函数返回的自定义或预设的结构元素对象(2)strelstrel函数为形态学运算生成结构元素SE,当生成供二值形态使用的结构元素时,调用形式为:SE=strel(shape,parameters)常用平坦结构元素的shape参数I=imread('circles.png');se=strel('square',3);%3×3的正方形结构元素Ib=imerode(I,se);%腐蚀se1=strel([010;111;010]);%3×3的十字结构元素Ic=imerode(I,se1);se2=strel('square',5);%5×5的正方形结构元素Id=imerode(I,se2);se3=strel('disk',3);%3×3的圆形结构元素Ie=imerode(I,se3);se4=strel('disk',5);%5×5的圆形结构元素If=imerode(I,se4);subplot(2,3,1),imshow(I),title('原图像');subplot(2,3,2),imshow(Ib);title('3×3的正方形结构元素腐蚀');subplot(2,3,3),imshow(Ic);title('3×3的十字结构元素腐蚀');subplot(2,3,4),imshow(Id);title('5×5的正方形结构元素腐蚀');subplot(2,3,5),imshow(Ie);title('3×3的圆形结构元素腐蚀');subplot(2,3,6),imshow(If);title('5×5的圆形结构元素腐蚀');不同的结构元素对腐蚀产生的影响腐蚀的作用能够消融物体的边界,而具体的腐蚀结果与图像本身和结构元素的形状有关。如果物体整体上大于结构元素,腐蚀的结果使物体变“瘦”一圈,而这一圈的大小是由结构元素决定的;如果物体本身小于结构元素,则腐蚀后的图像中物体将完全消失;如果物体仅有部分区域小于结构元素,则腐蚀后物体会在细连通处断裂,分离为两部分。2、膨胀及其实现对于集合A和S,使用S对A进行膨胀,记为AS,定义为:设原有图像S,当其自身原点平移至z点时S相对于自身的原点的映像和A有公共的交集,即映像和A至少有一个点是重叠的,则所有这样的z点构成的集合为S对A的膨胀图像。|()zASzSA算法过程如下:将结构元素B的原点移至集合A的某一点,将结构元素中点的坐标与集合A中该点坐标相加,得到对集合中一点的膨胀运算结果.对集合对集合中所有元素重复该过程111111111121211212112112112111111(a)目标图像A(b)结构元素B(c)结构元素B(d)膨胀运算结果图像举例:imdilate函数用于图像膨胀I2=imdilate(I,SE)I为输入原始图像SE为由strel函数返回的自定义或预设的结构元素对象I2为膨胀后的输出图像膨胀的作用与腐蚀相反,膨胀能使物体边界扩大,具体的膨胀结果与图像本身和结构元素的形状有关。膨胀通常用于将图像中原本断裂的同一物体桥接起来。bw=imread('text.png');se=strel('line',11,90);%生成线性结构元素bw2=imdilate(bw,se);%膨胀subplot(1,2,1),imshow(bw);title('原始图像');subplot(1,2,2),imshow(bw2);title('膨胀后的图像');二值图像的膨胀SE=3*3方形结构单元原图SE膨胀后图像SE腐蚀后图像不同结构单元对腐蚀和膨胀的影响原图SE膨胀后图像SE腐蚀后图像SE=5*5方形结构单元不同结构单元对腐蚀和膨胀的影响BABAcc)(BABAcc)(膨胀和腐蚀运算的对偶性可分别表示为:对目标图像的膨胀运算,相当于对图像背景的腐蚀运算操作;对目标图像的腐蚀运算,相当于对图像背景的膨胀运算操作。※腐蚀运算与膨胀运算的对偶性3、开运算及其实现开运算和闭运算都由膨胀和腐蚀复合而成,开运算是先腐蚀后膨胀,而闭运算是先膨胀后腐蚀。使用结构元素S对A进行开运算,记为AS,可表示为:()ASASSo一般来说,开运算可以使图像轮廓变得光滑,还能使狭窄的连接断开和消除细毛刺。o以相同的结构元素先后调用imerode和imdilate即可实现开运算。Matlab也直接提供了开运算函数imopen:I2=imopen(I,SE)I为原始图像SE是由strel函数返回的自定义或预设的结构元素I=imread('circles.png');se=strel('square',6);Id=imerode(I,se);IO=imopen(I,se);subplot(1,3,1),imshow(I);title('原图像');subplot(1,3,2),imshow(Id);title('6×6的正方形结构元素腐蚀');subplot(1,3,3),imshow(IO);title('6×6的正方形结构元素开运算');相同结构元素的腐蚀与开运算比较图I=imread('circuit.tif');thresh=graythresh(I);%求最优阈值bw1=im2bw(I,thresh);%灰度图像变为二值图像se=strel('rectangle',[20,10]);%定义矩形结构元素Id=imerode(bw1,se);%腐蚀运算IO=imopen(bw1,se);%开运算subplot(1,3,1),imshow(bw1);title('原图像');subplot(1,3,2),imshow(Id);title('矩形结构元素腐蚀');subplot(1,3,3),imshow(IO);title('矩形结构元素开运算');矩形结构元素腐蚀与开运算4、闭运算及其实现使用结构S对A进行闭运算,记为A•S,表示为:含义:先用结构元素S对A进行膨胀,然后用S对膨胀结果进行腐蚀闭运算同样可以使轮廓变得平滑,但与开运算相反,它通常能够弥合狭窄的间断,填充小的洞孔。()ASASS以相同的结构元素先后调用imdilate和imerode即可实现闭操作,也可直接调用闭运算函数imclose对于多次应用开运算和闭运算和只进行一次运算的效果相同BABB)(A,)(BABBAI=imread('circles.png');se=strel('disk',5);%5×5的圆形结构元素Id=imdilate(I,se);%膨胀IC=imclose(I,se);%闭运算subplot(1,3,1),imshow(I),title('原图像');subplot(1,3,2),imshow(Id);title('5×5的圆形结构元素膨胀');subplot(1,3,3),imshow(IC);title('5×5的圆形结构元素闭操作');相同结构元素的膨胀与闭操作的比较开闭运算的代数性质对偶性扩展性(收缩性)即开运算使原图像缩小,而闭运算使原图像扩大3.二值图像中形态学的应用设有两幅图像A和B,如果A∩B≠,那么称B击中A,其中是空集合的符号;否则,如果A∩B=,那么称B击不中A(a)B击中A;(b)B击不中A击中或击不中变换击中与击不中变换用于某种形状的精确定位,是一种形状检测的基本工具。记为AS,可表示为:其中,且,实际上S1代表S中感兴趣的物体(要检测的形状)对应的集合,而S2对应S中背景部分对应的集合。(1)(2)cASASAS12SSSS1S2对二值图像进行击中击不中操作的函数是bwhitmiss,调用方法是:bw2=bwhitmiss(bw1,SE1,SE2)bw1是输入图像SE1是一个结构元素,它的值规定了保留像素值的邻域;SE2是一个结构元素,它的值规定了舍弃像素值的邻域。bw2=bwhitmiss(bw1,SE1,SE2)等同于imerode(bw1,SE1)&imerode(~bw1,SE2)4.边界提取与跟踪1、边界提取对于二值图像来说,如果它的像素值为1,而邻域中至少有一个像素值为0,则称为边界像素。要在二值图像中提取物体的边界,可以将所有物体内部的点删除(置为背景)。具体是逐行扫描图像,如果发现一个亮点(前景点)的8个邻域都是亮点,则该点为内部点,在目标图像中将其删除。边界提取定义:β(A)=A−(AΘB)上式表示:先用B对A腐蚀,然后用A减去腐蚀得到的结果,B是结构元素。实际上相当于采用一个3×3的结构元素对原图像进行腐蚀,使得只有那些8个邻域都有亮点的内部点被保留,再用原图像减去腐蚀后的图像,恰好删除了内部点,保留了边界像素。