形态学处理

形态学处理模块主要用来从图像中提取出对描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质的形状特征,如边界和连通区域等。形态学处理针对的是图像中的白色像素点。

本节内容包含:

模块原理

形态学处理的数学基础是集合论。对图像的形态学处理通过“结构元”实现。可认为“结构元”是一种特殊的滤波器,其对像素的操作并非灰度运算,而是集合运算。

下图中展示了几种不同形状的结构元(无效区域为白色)。

图 1 结构元形态

该模块处理二值图和灰度图的算法工作原理有所差异。

二值图像形态学处理
腐蚀

在二维空间中的集合A和B,将B(结构元)对A(原始图像)的腐蚀定义为如下公式:

图 2 二值图像腐蚀处理公式

以上公式可描述为当结构元B的锚点在像素z的位置时,结构元B的所有像素均包含于原始图像A。

下图描述了二值图像腐蚀操作的样例:使用3×3的十字形结构元,锚点为对称中心。其中腐蚀结果图中的橙黄色区域将被填充为背景。

图 3 二值图像腐蚀结果
膨胀

在二维空间中的集合A和B,将B(结构元)对A(原始图像)的膨胀定义为如下公式:

图 4 二值图像膨胀处理公式

以上公式中,为原始结构元B的反射,当结构元中心对称且锚点位于其集合中心时,B的反射就是其自身。以上公式可描述为当在像素z位置时,结构元中至少有一个像素包含于A。

下图描述了二值图像膨胀操作的样例:使用3×3的十字形结构元,锚点为对称中心,反射即为其自身。其中膨胀结果图中的橙黄色区域将被填充为前景。

图 5 二值图像膨胀结果
开处理与闭处理

开处理和闭处理时腐蚀与膨胀处理的组合,在二维空间中的集合A和B,将B(结构元)对A(图像)的开处理定义为如下公式。该公式可理解为先用结构元B对A进行腐蚀,再用结构元B对腐蚀的结果进行膨胀。

图 6 二值图像开处理公式

B(结构元)对A(图像)的闭处理定义为如下公式。该公式可理解为先用结构元B对A进行膨胀,再用结构元B对膨胀的结果进行腐蚀。

图 7 二值图像闭处理公式

开处理和闭处理的效果参考二值图像腐蚀结果图。使用的结构元为5×5的矩形结构元。在二值图像中使用开/闭操作时,都能平滑边缘。但开操作和闭操作的对细节的处理却相反,开操作将细节前景归纳为背景,闭操作则将细节背景填充为前景。

灰度图像形态学处理

由于灰度图像的灰度值不限于0和1两个值,将形态学处理从二值图像推广至灰度图像时,其定义发生了一定变化。首先,灰度级的加入使得结构元的有效区域可能存在不同的灰度值,进而衍生出“非平坦”和“平坦”两种结构元。

平坦结构元是指有效结构元区域内所有像素灰度值相等的结构元。如果像素灰度值不相等,则为非平坦结构元。下图展示了两种结构元的灰度及其剖面情况。

图 8 非平坦结构元和平坦结构元
说明:

灰度形态学处理主要使用平坦结构元,非平坦结构元应用极少。以下主要介绍平坦结构元的形态学处理。

腐蚀

由于图像和结构元像素灰度值均不限于0~1。灰度结构元b对一幅灰度图像f的腐蚀处理定义为如下公式。

图 9 灰度图像腐蚀处理公式

其中b(s,t)为结构元中坐标为(s,t)处的灰度值。当结构元平坦时,b(s,t)不变,则平坦结构元的腐蚀定义为如下公式。即寻找结构元有效范围内的灰度极小值,用于替换结构元锚点所在的图像坐标的像素灰度值。从实现结果上看,与特殊形状模板的极小值滤波等价。

图 10 平坦结构元腐蚀定义
膨胀

与腐蚀相似,灰度结构元b对一幅灰度图像f的膨胀处理定义为:

图 11 灰度图像膨胀处理公式

其中b(s,t)为结构元中坐标为(s,t)处的灰度值,当结构元平坦时,b(s,t)不变,则平坦结构元的膨胀定义为如下公式,即寻找结构元有效范围内的灰度极小值,用于替换结构元锚点所在的图像坐标的像素灰度值。从实现结果上看,与特殊形状模板的极大值滤波等价。

图 12 灰度图平坦结构膨胀定义
说明:

灰度图像的膨胀处理同样需要先对结构元求反射。

开处理与闭处理

灰度图像的开处理和闭处理定义与二值图像的一致,结构元b对灰度图像s的开处理和闭处理定义分别为:

图 13 灰度图像开处理公式
图 14 灰度图像闭处理公式

灰度图像的开处理和闭处理的效果参考非平坦结构元和平坦结构元示意图,使用的结构元为5×5的矩形结构元。开处理将削弱亮特征,但不影响暗特征和背景;相反,闭处理则将削弱按特征,但不影响亮特征和背景。开闭处理对亮暗特征的削弱程度取决于平坦结构元的尺寸。

使用方法

前后序模块

在流程中,形态学处理的:

  • 前序模块一般为图像源。该模块可为形态学处理提供原图输入。也可为图像二值化等其他图像处理模块。

  • 后序模块一般为识别、定位、测量以及图像处理等类别的模块。

应用示例

下图展示了通过组合调用图像二值化形态学处理DL读码等模块,实现二维码稳定读取的应用示例。

图 15 形态学处理应用示例
图 16 该应用的效果示例

参数配置

以下仅介绍该模块的运行参数详情。通过配置运行参数,可定义当前模块如何处理输入的数据。

说明:

参数

描述

形态学类型

设置形态学处理的类型,包括膨胀腐蚀,分别对应上文模块原理中提及膨胀、腐蚀、开处理和闭处理

效果比对示例,请参见下文不同类型形态学处理的效果对比

形态学形状

具体指滤波核的形状,即上文模块原理中提及的结构元形态,包括矩形、椭圆形和十字形。

运算结果图像轮廓会和形态学形状比较相似

迭代次数

指一次形态学处理过程中对原图像进行的操作次数,迭代次数越多,效果越明显,但不宜过多

  • 膨胀迭代次数过多容易导致黑色区域过小

  • 腐蚀迭代次数过多容易导致黑色区域过大

核宽度/高度

结构元的宽度和高度,加大该值会使形态学处理的效果更佳明显

图 17 不同类型形态学处理的效果对比

模块结果

该模块输出结果中各项参数详情,请参见形态学处理模块的输出结果