灰度形态学灰度形态学基本运算灰度形态学介绍灰度腐蚀灰度膨胀灰度开运算与灰度闭运算灰度形态学介绍灰度形态学是二值形态学向灰度空间自然扩展。在灰度形态学中,分别用图像函数f(x,y)和b(x,y)表示二值形态学中的目标图像A和结构元素B,并把f(x,y)称为输入像,b(x,y)称为结构元素,函数中的(x,y)表示图像中像素点的坐标。二值形态学中用到的交和并运算在灰度形态学中分别用最大极值和最最小极值运算代替。灰值腐蚀在灰值图像中,用结构元素b(x,y)对输入图像f(x,y)进行灰度腐蚀运算可表示为其中,Df和Db分别是f和b的定义域要求x和y在结构元素b(x,y)的定义域之内,而平移参数(s+x)和(t+y)必须在f(x,y)的定义域这内,这与二值形态学腐蚀运算定义中要求结构元素必须完全包括在被腐蚀图像中情况类似。但与二值图像的腐蚀运算的不同之处是,被移动的是输入图像函数f而不是结构元素b。灰度运算的计算是逐点进行的,求某点的腐蚀运算结果就是计算该点局部范围内各点与结构元素中对应点的灰度值之差,并选取其中的最小值作为该点的腐蚀结果。经腐蚀运算后,图像边缘部分具有较大灰度值的点的灰度会降低,因此,边缘会向灰度值高的区域内部收缩。图1-1给出了一个计算灰度腐蚀运算的例子。图1-1(a)为5×5的灰度图像矩阵A,图1-1(b)为3×3的结构元素矩阵B,其原点在中位位置处。下面以该例子腐蚀结果为例,说明灰度腐蚀运算过程:①将B的原点重叠在A的中心元素上,如图1-1(c)所示。②依次用A的中心元素减去B的各个元素并将结果放在对应的位置上,如图1-1(d)所示。③将B的原点移动到与A的吣元素相邻的8个元素上进行相同的操作,可得到8个平移相减的结果,图1-1(e)所示为把B的原点移动到A中心元素的右侧位置上,图1-1(f)为此时计算的结果。④取得到的9个位置的最小值,即为A中心元素腐蚀结果,如图1-1(f)所示。⑤依据该方法计算A中的其他元素,就可得到图像灰度矩阵A的腐蚀结果如图1-1(h)所示。为了便于分析和理解灰度腐蚀运算的原理和效果,可将(一)式进一步简化,仅列出一维函数的形式,如下式所示在式(二)中,目标图像和结构元素简化为x的函数,要求x和平移参数(s+x)分别在定义域Df和Db之内是为了保证结构元素b(x)在目标图像f(x)的范围内进行处理,在目标图像范围外的处理是显然没有意义的。图1-2给出了当目标图像和结构元素均为一维函数时,腐蚀运算的过程示意图。其中1-2(a)为目标图像f(x),图1-2(b)为一维圆形结构元素b(x),图1-2(c)为腐蚀的结果。利用结构元素b(x)对目标图像f(x)的腐蚀过程是:在目标图像下方“滑动”结构元素,结构元素所能达到的最大值所对应的原点位置的集合即为腐蚀的结果,如图1-2(c)所示。这与二值腐蚀运算为结构元素“填充”到输入图像中对应的原点集合是相似的。从图1-2(c)还可以看到结构元素b(x)必须在目标图像f(x)的下方,所以空间平移结构元素的定义域必为输入图像函数的定义域的子集。否则腐蚀运算在该点没有意义。由于腐蚀操作是以在结构元素形状定义的区间内选取(f-b)最小值为基础的,因此,灰度腐蚀运算的效果是:对于所有元素都为正的结构元素,输出图象趋向于比输入图像暗;当输入图像中的亮细节面积小于结构元素时,亮的效果将被削弱,削弱的程度取决于亮细节周围的灰度值和结构元素自身形状与幅值。灰度腐蚀操作的Matlab实现Matlab中灰度腐蚀操作函数与二值腐蚀操作函数在Matlab7.x中都为imerode,结构元素的定义也相同。通过下面的程序,我们来观察一下灰度腐蚀的效果f1=imread('tire.tif');b1=strel('disk',5);f2=imerode(f1,b1);imshow(f1);figure,imshow(f2);灰度膨胀灰度膨胀是灰度腐蚀运算的对偶运算,结构元素b(x,y)对目标图像f(x,y)进行灰度膨胀可表示为:其中,Df和Db分别是f和b的定义域类似于二值膨胀运算中要求目标图像集合和结构元素集合相交至少有一个元素。灰度膨胀运算的计算是逐点进行的,求某点的膨胀运算结果,也就是计算该点局部范围内各点与结构元素中对应点的灰度值之和,并选取其中的最大值作为该点的膨胀结果,经膨胀运算,边缘得到了延伸。图2-1给出了一个计算灰度膨胀运算的示例。图2-1(a)为5×5的灰度图像矩阵A,图2-1(b)为3×3的结构元素矩阵B,其原点在中心位置处。下面以计算图像A的中心元素的膨胀结果为例,说明膨胀运算过程:①将B的原点重叠在A的中心元素上,如图2-1(c)所示。②依次用A的中心元素加上B的各个元素并将结果放在对应的位置上,如图2-1(d)所示。③将B的原点移动到与A的中心元素相邻的8个元素上进行相同的操作,可得到8个平移相加的结果,图2-1(e)所示为把B的原点移动到A中心元素的右侧位置上,图2-1(f)为此时的计算结果。④取得到的9个位置结果的最大值作为A中心元素的膨胀结果如图2-1(g)所示。⑤依据该方法计算A中的其他元素,就可得到图像灰度矩阵A的膨胀结果如图2-1(h)所示。为了便于分析和理解灰度膨胀运算的原理和效果,可将式(三)进一步简化,仅列出一维函数的形式,如式(四)所示其中,输入图像和结构元素简化为x的函数,分别要求x和平移参数(s-x)在定义域Db和Df之内。图2-2给出了当输入图像化为x的函数时的膨胀运算的过程示意图。图2-2(a)为输入图像f(x),图2-2(b)为一维圆形结构元素b(x),图2-2(c)为膨胀的结果。采用结构元素b(x)对输入图像f(x)进行膨胀过程是:将结构元素的原点平移到输入图像曲线上,使原点沿着输入图像曲线“滑动”,膨胀的结果为输入图像曲线与结构元素之和的最大值。这与二值膨胀运算中,结构元素平移通过二值图像中的每一点,并求结构元素与二值图像的并是相似的。由于膨胀操作为是以在结构元素形状定义的区间内选取(f+b)的最大值为基础的,因此灰度膨胀运算的效果是:对于所有元素都为正的结构元素,输出图像趋于比输入图像亮;当输入图像中的暗细节面积小于结构元素时,暗的效果将被削弱,削弱的程度取决于膨胀所用结构元素的形状与幅值。灰度膨胀的Matlab实现Matlab中灰度膨胀操作函数与二值膨胀操作函数在Matlab7.x中都为imerode,结构元素的定义也相同。通过下面的程序,我们来观察一下灰度腐蚀的效果f1=imread('tire.tif');b1=strel('disk',5);imshow(f1);f3=imdilate(f1,b1);figure,imshow(f3);灰度腐蚀与灰度膨胀之间的对偶关系,可以用下式来表示此时,函数f(x,y)的补fc(x,y)=-f(x,y),函数b(x,y)的反射定义为),(yxb),(yxb),(yxb灰度开运算与灰度闭运算与二值形态学类似,在定义了灰度腐蚀和灰度膨胀运算的基础上,可以进一步定义灰度开运算和灰度闭运算。灰度开运算灰度开运算,与二值图像的开运算具有相同的形式,用结构元素b对灰度目标图像f进行开运算可表示为开运算可以通过将求出的所有结构元素的形态学平移都填入目标图像f的下方的极大点来计算。这种填充方式可以从几何角度直观地用图3-1来描述。图3-1(a)为目标图像函数f当y为某一常数时对应的一个截面,图3-1(b)为球形结构元素b在该截面上的投影,采用该结构元素对目标图像进行开运算的过程是:在目标图像下方滑动结构元素,如图3-1(c)所示;在每一点记录结构元素上的最高点,则由这些最高点构成的集合即为开运算的结果,如图3-1(d)所示。在该运算中,原点相对于结构元素的位置不会对运算结果产生影响。由图3-1的开运算过程示意图可以看出,在开运算中所有比球体直径窄的波峰在幅度和尖锐上都减小了,因此开运算可以去除相对于结构元素较小的明亮细节,保持整体的灰度级和较大的明亮区域不变。灰度开运算的Matlab实现Matlab中灰度开运算操作函数与二值开运算操作函数在Matlab7.x中都为imerode,结构元素的定义也相同。通过下面的程序,我们来观察一下灰度开运算的效果f1=imread('lena.bmp');b1=strel('disk',3);imshow(f1);f2=imopen(f1,b1);figure,imshow(f2);灰度闭运算用结构运算b对目标图像f进行闭运算可表示为闭运算可以通过求出所有结构元素的形态学平衡与目标图像上方的极小点来计算,这种平移方式可以从几何角度直观地用图3-2来描述。图3-2(a)为目标图像函数f当y为某一常数时对应的一个截面,图3-2(b)为球形结构元素b在该截面上的投影,采用该结构元素对目标图像进行闭运算的过程是:在目标图像上方滑动结构元素,如图3-2(c)所示;在每一点记录结构元素上的最低点,则由这些最低点构成的集合即为开运算的结果,如图3-2(d)所示。在该运算中,原点相对于结构元素的位置不会对运算结果产生影响。由图3-2的闭运算过程示意图可以看出,在开运算中所有比球体直径窄的波谷在幅度和尖锐度上都增加了,因此,闭运算可以除去图像中的暗细节部分,相对的保持明亮部分不受影响。灰度闭运算的Matlab实现Matlab中灰度闭运算操作函数与二值闭运算操作函数在Matlab7.x中都为imerode,结构元素的定义也相同。通过下面的程序,我们来观察一下灰度闭运算的效果f1=imread('lena.bmp');b1=strel('disk',3);imshow(f1);f3=imclose(f1,b1);figure,imshow(f3);灰度开运算与闭运算的对偶性与二值开运算与闭运算相同,灰度开运算与闭运算也具有对偶性,可用公式表示为