形态学2D
功能介绍
模块位置:图像处理-形态学2D
对2D图像使用形态学处理(结构元素为矩形,尺寸由核宽度、核高度决定;),具体包括以下方法:
- 腐蚀 (Erosion):腐蚀操作将图像中的前景物体(亮区域)缩小。使用结构元素(kernel)扫描图像,并替换目标像素值为邻域中最小的值。腐蚀可以消除小的白色噪声点,并缩小前景物体(亮区域)。
- 膨胀 (Dilation):膨胀操作将图像中的前景物体(亮区域)扩大。使用结构元素(kernel)扫描图像,并替换目标像素值为邻域中的最大值。膨胀可以填充小的黑色空洞,并扩大前景物体(亮区域)。
- 开运算 (Opening):开运算是先进行腐蚀再进行膨胀的组合操作。它可以去除小噪声(亮细节),同时保持前景物体的整体形状。
- 闭运算 (Closing):闭运算是先进行膨胀再进行腐蚀的组合操作。它可以填充前景物体(亮区域)内部的黑色空洞(暗细节),并保持前景物体的整体形状。
- 形态学梯度 (Morphological Gradient):形态学梯度操作是膨胀和腐蚀之间的差异。它可以提取物体的边界。
- 顶帽 (Top-Hat):顶帽操作是原始图像与其开运算结果之间的差异。它可以提取比结构元素小的亮区域。
- 黑帽 (Black-Hat):黑帽操作是原始图像与其闭运算结果之间的差异。它可以提取比结构元素小的暗区域。
示例说明
![]() | ![]() | ![]() |
|---|---|---|
| 原始数据 | 3x3腐蚀 | 7x7腐蚀 |
![]() | ![]() | ![]() |
| 原始数据 | 3x3膨胀 | 7x7膨胀 |
![]() | ![]() | ![]() |
| 原始数据 | 3x3开运算 | 7x7开运算 |
![]() | ![]() | ![]() |
| 原始数据 | 3x3闭运算 | 7x7闭运算 |
![]() | ![]() | ![]() |
| 原始数据 | 3x3闭形态学梯度 | 7x7形态学梯度 |
![]() | ![]() | ![]() |
| 原始数据 | 3x3顶帽 | 7x7顶帽 |
![]() | ![]() | ![]() |
| 原始数据 | 3x3顶帽 | 7x7顶帽 |
使用场景
对于二值图像,可对二值化形成的连通域形状进行调整:
- 膨胀填补孔洞;
- 腐蚀消除噪点、分离粘连;
- 开闭运算组合实现形状平滑(如工业零件轮廓优化);
对于灰度图像,可对图像中亮暗分布区域进行调整;
- 形态学梯度生成粗边缘(如物体边缘粗略提取);
- 顶帽变换提取亮特征(如PCB焊点检测);
- 底帽变换增强暗细节(如金属表面缺陷识别);
输入
| 输入 | 类型 | 说明 |
|---|---|---|
| 图像源 | 图像 | 输入图像 |
| 区域2D | / | 可仅对感兴趣区域进行处理,通过绘制或继承得到一个输入区域:区域类型、区域列表、启用坐标系、坐标系。 |
参数说明
迭代次数
形态学操作重复执行的次数。增加迭代次数可以进一步增强形态学效果,例如多次腐蚀可以进一步缩小前景物体,范围[0,10]。
核宽度
形态学结构元素(kernel)的宽度,决定形态学操作的邻域范围,范围[1,31]。
核宽度
形态学结构元素(kernel)的高度,与核宽度类似,决定形态学操作的邻域范围,范围[1,31]。
输出
| 输出 | 类型 | 默认启用 | 额外启用条件 | 说明 |
|---|---|---|---|---|
| 区域列表 | 区域集 | 否 | / | 传递给下游模块的输入区域集合,保留用户在界面上框选的所有区域 |
| 区域中心列表 | 2D点集 | 否 | / | 每个输入区域计算所得二维几何中心 |
| 输出图像 | 图像 | 是 | / | 输出处理后的图像 |














