图像的形态学运算可以对图像进行预处理(去噪声、简化形状)、增强物体结构(抽取骨骼、细化、粗化、凸包)、从背景中分割物体、对物体进行量化描述(面积、周长、投影)。
图像的形态学处理经常以二值化图像为源图像。二值化图像是将原始图像的灰度图以某一阈值进行分割,把像素点的灰度在阈值范围内的设置为255,用白色表示,在阈值范围之外的设置为0,用黑色表示。其具体的公式如下:
上式中, f(x,y)代表灰度图某一像素的灰度值,T1、T2 分别是设置的上下灰度阈值, g(x,y)为二值图像对应像素点的值。
形态学处理以结构元素为基础,利用结构元素与原始图像不同的运算关系以实现不同的形态学操作,从而提取图像中感兴趣的形状或特征。结构元素为一个关于局部原点O的邻域,典型的结构元素如图所示,图中(a)原点在中心的矩形结构元素;(b)十字形结构元素;(c)原点在右下角的矩形结构元素;(d)原点在中间的线性结构元素;(e)原点在右边的线性结构元素。
图中,浅蓝色的矩形为局部原点O,参与运算时,其与灰度图对应的像素重合,利用该像素与邻域像素的计算关系可以得到运算之后的像素灰度值。记 f为原图像,s为结构元素。形态学运算中的膨胀运算是将结构元素s的原点与f左上角的原点对齐后,将s在图像上滑动,将结构元素原点所对应的像素点的灰度值设置为结构元素值为1的区域对应图像区域像素的最大值。可以表示为:
上式中, element代表结构元素, (x,y)为原点O的位置, (x’,y’)为结构元素值为1的区域相对原点O的位置偏移,src代表原始图像,dst代表经过运算之后的图像。膨胀运算如下图所示,右侧绿色的区域为膨胀运算之后扩充的像素。
腐蚀运算是与膨胀运算相反的操作,即将结构元素原点对应像素点的灰度值设为结构元素值为1的区域对应图像像素的最小值。其可以表示为:
腐蚀运算如下图所示,右侧灰色的区域为腐蚀运算之后消失的像素。
通过膨胀、腐蚀两种基础形态学运算的结合可以衍生出更加具有实践意义的运算,如开运算、闭运算、底帽运算、顶帽运算等。其中开运算是对图像 使用同一结构元素先腐蚀再膨胀 。开运算可以消除图像中小于结构元素的细节部分,断开较窄的狭颈。
闭运算是对图像使用同一结构元素s先膨胀再腐蚀。闭运算可以连接邻近的物体,填补小型孔洞,填平狭窄缝隙使物体边缘更加平滑。
顶帽运算是原始图像与开运算结果图之差,该运算可以提取图像中面积小于结构元素的细节部分,而消除尺寸大于结构元素的整体联通区域。
底帽运算是原始图像与闭运算结果图之差,该运算可以得到尺寸小于结构元素且比周围暗的区域。