本章描述灰度值形态学的算子。
灰度值形态学提供了一组算子,能够根据像素邻域特性对图像中的灰度值进行非线性处理。例如,形态学灰度值算子可用于平滑或强化图像中的结构特征。与 形态学 / 区域 中的二值运算不同,形态学灰度值算子处理的输入图像包含具有超过 1 位范围的像素。因此灰度值形态学可视为区域形态学的广义形式。下文将深入探讨形态学灰度值算子的具体应用。
执行膨胀或腐蚀操作时,图像中每个像素的灰度值取决于其邻域。影响每个像素的邻域范围与形状由所选结构元素定义,当前像素作为参考点。执行膨胀操作时,输入图像的每个像素将被赋予其邻域的最大灰度值;执行腐蚀操作时则赋予最小灰度值。因此,输入图像的亮部区域通过灰度值膨胀得到增强,而灰度值腐蚀则突显暗部区域。
| ( 1) | ( 2) | ( 3) | ( 4) |
这些算子可用于对图像进行膨胀或腐蚀:
| 形态学算子 | 结构元素 | |
|---|---|---|
|
|
任意 |
|
|
矩形 |
|
|
菱形/矩形/八边形 |
形态学灰度运算通常是图像预处理环节的重要组成部分,唯有如此才能有效提取信息。以下示例展示了需要进行灰度值腐蚀以读取数据码符号的情况。为使图像符合解码所用的数据模型,需通过扩大局部极小值的方形区域来缩小图像中码元间的间隙。因此采用灰度值腐蚀处理,使用尺寸适宜的矩形作为结构元素。矩形尺寸取决于通过 创建的数据模型,该模型中已确定了可接受的模块间隙尺寸。
create_data_code_2d_model
| ( 1) | ( 2) | ( 3) |
2d_data_codes_minimize_module_gaps.hdev。
灰度值开运算与灰度值闭运算分别由上述运算组合而成。闭运算先执行膨胀再执行腐蚀,而开运算则先执行腐蚀再执行膨胀。如示例图像所示, 会削弱甚至消除比邻域更暗的图像区域,而
gray_closing 则会削弱较亮区域。此外,通过选用合适的结构元素,可在消除图像伪影的同时保留原始形状特征。
gray_opening
| ( 1) | ( 2) | ( 3) | ( 4) |
要更详细地观察受灰度值开运算或闭运算影响的区域,可执行 或 gray_tophat 变换。生成的图像分别显示原始图像与经过开运算或闭运算处理后的图像差异。您还可利用这些算子检测与结构元素形状相匹配的结构特征。
gray_bothat
算子通过可视化像素值的局部变化范围,使您能够检测均匀表面上的精细结构。
gray_range_rect
| ( 1) | ( 2) | ( 3) |
通过应用 算子,可执行灰度值开运算或闭运算的缓和形式。通过调整 gray_range_rect 参数可控制该转换效果。
ModePercent
| ( 1) | ( 2) | ( 3) | ( 4) | ( 5) |
ModePercent = 0(等同开运算),(2) ModePercent = 25,(3) ModePercent = 50(等于中值),(4) ModePercent = 75,(5) ModePercent = 100(等于闭运算)。
在下面的列表中,描述了形态学领域中使用的重要术语。
不一定保持输入图像结构的算子。
用于扫描输入图像的区域。
dual_rank双秩gen_disc_se生成椭圆结构元素gray_bothat灰度底帽gray_closing灰度闭gray_closing_rect灰度闭矩形gray_closing_shape灰度闭形状gray_dilation灰度膨胀gray_dilation_rect灰度膨胀矩形gray_dilation_shape灰度膨胀形状gray_erosion灰度腐蚀gray_erosion_rect灰度腐蚀矩形gray_erosion_shape灰度腐蚀形状gray_opening灰度开gray_opening_rect灰度开矩形gray_opening_shape灰度开形状gray_range_rect灰度范围矩形gray_tophat灰度顶帽read_gray_se读取灰度结构元素