第7章 形态学图像处理
一、形态学图像处理基础(Preliminaries)

形态学(Morphology)是以形状为基础对图像进行分析和处理的技术,主要用于二值图像(也扩展到灰度图像)。
与卷积等线性滤波相比,形态学的优势:
| 特性 | 说明 |
|---|---|
| 保边 | 保留边缘信息,不会像高斯平滑那样模糊边界 |
| 基于形状 | 利用结构元素做形状驱动的处理 |
| 幂等性(Idempotent) | 开/闭操作可以设计为幂等的(重复执行不改变结果) |
| 计算高效 | 仅需逻辑运算和集合操作 |
1.1 二值图像的逻辑运算
形态学的底层操作基于集合论和逻辑运算:
| 运算 | 符号 | 含义 |
|---|---|---|
| NOT | \(\lnot\) | 取反(\(1 \to 0\),\(0 \to 1\)) |
| AND | \(\land\) | 两者均为 \(1\) 时得 \(1\) |
| OR | \(\lor\) | 至少一个为 \(1\) 时得 \(1\) |
| XOR | \(\oplus\) | 两者不同时得 \(1\) |
1.2 集合论基本操作
设 \(A\) 为 \(\mathbb{Z}^2\) 中的集合。若 \(a = (a_1, a_2)\) 是 \(A\) 的元素,记为 \(a \in A\);否则 \(a \notin A\)。空集记为 \(\varnothing\)。
| 操作 | 定义 | 含义 |
|---|---|---|
| 子集(Subset) | \(A \subseteq B\) | \(A\) 是 \(B\) 的子集 |
| 并集(Union) | \(C = A \cup B\) | \(C\) 是 \(A\) 和 \(B\) 的并集 |
| 交集(Intersection) | \(C = A \cap B\) | \(C\) 是 \(A\) 和 \(B\) 的交集 |
| 互斥(Disjoint) | \(A \cap B = \varnothing\) | \(A\) 和 \(B\) 不相交 |
| 补集(Complement) | \(A^c = \{w \mid w \notin A\}\) | 不包含于 \(A\) 的元素集合 |
| 差集(Difference) | \(A - B = \{w \mid w \in A, w \notin B\} = A \cap B^c\) | 在 \(A\) 但不在 \(B\) 中的元素 |
| 反射(Reflection) | \(\hat{B} = \{w \mid w = -b, \text{ for } b \in B\}\) | 关于原点翻转 |
| 平移(Translation) | \((A)_z = \{c \mid c = a + z, \text{ for } a \in A\}\) | 将 \(A\) 平移 \(z\) |
1.3 结构元素(Structure Element — SE)
结构元素(SE) 类似于卷积核:
- SE 有定义好的形状和大小(如圆形、方形、十字形等)
- SE 中的 "x" 表示不关心该位置的值
- SE 通常比被处理图像小得多
- SE 在图像上逐像素平移,每次检查 SE 与原图的集合关系
二、腐蚀(Erosion)
2.1 定义
\(A\) 被 \(B\) 腐蚀,记为 \(A \ominus B\),定义为:
含义:所有使得 \(B\) 平移 \(z\) 后完全包含在 \(A\) 中的点 \(z\) 的集合。即 SE 必须完全在物体内部才能保留中心点。

2.2 效果
- 缩小/收缩物体:以物体外边缘为起点向内逐层减少像素,导致轮廓收缩。
- 消除小物体:尺寸小于 SE 的亮物体被完全移除
- 断开狭窄连接:物体之间的狭窄连接被断开
- 扩大孔洞:物体内部的孔洞变大
2.3 医学应用示例
- 胸腺组织提取:用 7×7 → 13×13 SE 逐步腐蚀,消除细小无关组织
- 大物体检测:腐蚀 + 开操作 → 只保留大物体,去除小的无关结构
三、膨胀(Dilation)
3.1 定义
\(A\) 被 \(B\) 膨胀,记为 \(A \oplus B\),定义为:
含义:所有使得 \(B\) 的反射平移 \(z\) 后与 \(A\) 至少有一个像素重合的点 \(z\) 的集合。
即:将 SE 的反射在图像上滑动,只要 SE 与原图有交集,中心点就输出为前景。

3.2 效果
- 膨胀/扩大物体:在物体外层增加像素层
- 填补孔洞和裂缝:物体内部的小孔被填满
- 桥接间隙:物体之间的断开区域被连接
四、腐蚀与膨胀的性质与对偶性
4.1 共同性质
| 性质 | 描述 |
|---|---|
| 平移不变(Translation Invariant) | \((A)_z \circ B = (A \circ B)_z\) |
| 顺序不变(Order Invariant) | \((A \ominus B) \ominus C = A \ominus (B \oplus C)\) |
| 递增算子(Increasing Operator) | 若 \(A \subseteq A'\),则 \(A \circ B \subseteq A' \circ B\) |
| 尺度不变(Scale Invariant) | \(rA \circ rB = r(A \circ B)\),\(r\) 为尺度因子 |
4.2 腐蚀与膨胀的对偶性(Duality)
腐蚀和膨胀关于集合补集和反射互为对偶:
等价表述:
五、开操作与闭操作(Opening and Closing)
5.1 定义
开操作(Opening):先腐蚀,后膨胀 $$ A \circ B = (A \ominus B) \oplus B $$
闭操作(Closing):先膨胀,后腐蚀 $$ A \bullet B = (A \oplus B) \ominus B $$
5.2 效果对比
开运算(Opening)在图像处理中其底层逻辑是先腐蚀后膨胀。它的主要作用是消除图像中的明亮小噪点、断开物体之间细长的粘连部分,并平滑物体的外轮廓。
闭运算(Closing)则像是一种其底层逻辑与开运算刚好相反,是先膨胀后腐蚀。它的核心作用是填补物体内部的暗色小孔洞、弥合断裂的狭窄缝隙,以及将距离极近的相邻碎块连接成一个完整的整体。
| 效果 | 开操作(Opening) | 闭操作(Closing) |
|---|---|---|
| 平滑轮廓 | 能 | 能 |
| 断开窄桥(Isthmus) | 能 | 无 |
| 消除细小突起 | 能 | 无 |
| 融合窄断裂/细长沟 | 无 | 能 |
| 消除小孔洞 | 无 | 能 |
| 填充间隙 | 无 | 能 |
| 外角 | 变圆 | 不变 |
| 内角 | 不变 | 变圆 |
记忆技巧
- 开(Open)= 先腐蚀后膨胀 → 打开一个口子,断开窄连接
- 闭(Close)= 先膨胀后腐蚀 → 闭合一个口子,填补小孔
- 开操作名如其意:把物体"分开";闭操作把物体"合上"
5.3 几何解释

开操作的几何直观:将 SE 在 \(A\) 内部滚动,所有 SE 能到达的位置的并集: $$ A \circ B = \bigcup {(B)_z \mid (B)_z \subseteq A} $$
闭操作的几何直观:将 SE 在 \(A\) 外部滚动,取补集: $$ A \bullet B = \left[ \bigcup {(B)_z \mid (B)_z \subseteq A^c} \right]^c $$
5.4 基本性质
| 性质 | 开操作 | 闭操作 |
|---|---|---|
| 包含关系 | \(A \circ B \subseteq A\)(开结果是 \(A\) 的子集) | \(A \subseteq A \bullet B\)(\(A\) 是闭结果的子集) |
| 单调性 | 若 \(C \subseteq D\),则 \(C \circ B \subseteq D \circ B\) | 若 \(C \subseteq D\),则 \(C \bullet B \subseteq D \bullet B\) |
| 幂等性(Idempotent) | \((A \circ B) \circ B = A \circ B\) | \((A \bullet B) \bullet B = A \bullet B\) |
| 对偶性 | \((A \bullet B)^c = A^c \circ \hat{B}\) | \((A \circ B)^c = A^c \bullet \hat{B}\) |
幂等性的意义
开/闭操作执行一次后,再执行同样的操作不会改变结果。这与中值滤波不同——中值滤波反复做会越来越模糊。幂等性是形态学滤波优于线性滤波的重要特性。
5.5 医学应用示例
开操作 — 颅骨剥离(Skull Stripping):

- 二值脑图 → 取最大连通分量
- 用圆形 SE(半径 3)腐蚀 → 断开脑组织与颅骨的连接
- 用圆形 SE(半径 4)条件膨胀 → 恢复脑组织原状
闭操作 — ROI 修改:

- 闭操作前:ROI 内部有细小孔洞和缝隙
- 闭操作后:小孔洞被填补,ROI 更加完整
六、形态学滤波(Morphological Filter)
形态学滤波 = 先开操作,再闭操作
用于消除二值图像中的椒盐噪声:
- 背景噪声(椒噪声)在腐蚀阶段被消除:因为噪声分量物理尺寸小于 SE
- 前景噪声(盐噪声)在后续操作中被消除
- 只有比 SE 小的特征被影响,大尺度结构保持不变
与线性滤波的关键区别:
- 线性滤波(如高斯卷积):所有尺度的特征都会被平滑(模糊+退化)
- 形态学滤波:只有小于 SE 的噪声被消除,大结构完全不受影响
七、击中或击不中变换(Hit-or-Miss Transformation)

用途:形状检测(Shape Detection)——在图像中定位特定形状。
用 \(B\) 表示由前景 \(B_1\) 和背景 \(B_2\) 组成的目标形状,\(B\) 在 \(A\) 中的匹配 \(A \otimes B\) 定义为:
解释:
- \(A \ominus B_1\):找到所有 \(B_1\)(前景)能完全放入的位置
- \(A^c \ominus B_2\):找到所有 \(B_2\)(背景)能完全放入补集的位置
- 两者取交集 → 精确匹配完整形状(前景 + 背景)的像素位置
八、基本形态学算法(Basic Morphological Algorithms)
8.1 边界提取(Boundary Extraction)
\(A\) 的边界 \(\beta(A)\) 通过先腐蚀再与原图作差得到:
其中 \(B\) 为合适的 SE(通常为 \(3 \times 3\) 十字形)。
8.2 孔洞填充(Hole Filling)
已知孔洞内一个起点 \(p\)(值为 \(0\)),通过迭代膨胀并限制在 \(A^c\) 内来填充孔洞:
其中 \(X_0\) 在 \(p\) 处为 \(1\),其余为 \(0\)。当 \(X_k = X_{k-1}\) 时算法终止。
关键:每步与 \(A^c\) 取交集,限制填充不超出 ROI 边界。
8.3 连通分量提取(Extraction of Connected Components)
从连通分量 \(Y\) 内的一个已知点 \(p\) 开始(\(Y \subseteq A\)):
其中 \(X_0 = p\),\(B\) 为合适的 SE。当 \(X_k = X_{k-1}\) 时收敛,\(Y = X_k\)。
与孔洞填充的区别:孔洞填充每次与 \(A^c\) 取交集,连通分量提取每次与 \(A\) 取交集。
8.4 细化(Thinning)
\(A\) 被 SE \(B\) 细化的定义为:
对称细化使用 SE 序列 \(\{B\} = \{B_1, B_2, \ldots, B_n\}\)(\(B_i\) 是 \(B_{i-1}\) 的旋转版本):
整个过程重复进行,直到不再发生变化。
8.5 粗化(Thickening)
粗化是细化的对偶操作:
实际中通常采用间接方法:对 \(A^c\) 做细化,再取补集得到粗化结果。
8.6 骨架提取(Skeleton)
\(A\) 的骨架 \(S(A)\) 可通过对 \(A\) 反复腐蚀和开操作得到:
其中 \((A \ominus kB)\) 表示对 \(A\) 连续腐蚀 \(k\) 次,\(K = \max\{k \mid A \ominus kB \neq \varnothing\}\)。
最大圆盘(Maximum Disk): - 若 \((D)_z\) 是最大圆盘,则不存在更大的圆盘(不一定以 \(z\) 为中心)包含 \((D)_z\) 且仍在 \(A\) 内部 - 最大圆盘在至少两处与 \(A\) 的边界相切
九、灰度形态学(Gray-Scale Morphology)
将形态学从集合扩展到函数(图像):
- \(f(x,y)\):输入灰度图像
- \(b(x,y)\):结构元素(本身是一个子图像/灰度模板)
9.1 灰度膨胀
灰度膨胀的定义:
效果: - 亮区域扩张 - 暗细节减弱或被消除 - 整体亮度提升
9.2 灰度腐蚀
灰度腐蚀的定义:
效果: - 暗区域扩张 - 亮细节减弱或被消除 - 整体亮度降低
9.3 灰度开操作与闭操作
灰度开操作:先灰度腐蚀,再灰度膨胀
- 移除比 SE 小的亮细节(小亮斑被消除)
- 平滑从上方贴合图像轮廓
灰度闭操作:先灰度膨胀,再灰度腐蚀
- 移除比 SE 小的暗细节(小黑洞被填补)
- 平滑从下方贴合图像轮廓
9.4 灰度形态学应用
- 形态学梯度(Morphological Gradient):\(g = (f \oplus b) - (f \ominus b)\) → 提取边缘
- 纹理分割:基于纹理内容进行区域划分
- 平滑与锐化:开/闭操作可设计为平滑或增强算子
十、本章总结
| 操作 | 定义 | 效果 | 幂等性 |
|---|---|---|---|
| 腐蚀 | \(A \ominus B = \{z \mid (B)_z \subseteq A\}\) | 收缩物体,消除小目标 | 无 |
| 膨胀 | \(A \oplus B = \{z \mid (\hat{B})_z \cap A \neq \varnothing\}\) | 扩大物体,填补孔洞 | 无 |
| 开操作 | \(A \circ B = (A \ominus B) \oplus B\) | 断开窄连接,消除小突起 | 有 |
| 闭操作 | \(A \bullet B = (A \oplus B) \ominus B\) | 融合窄断裂,填补小孔 | 有 |
| 击中击不中 | \(A \otimes B = (A \ominus B_1) \cap (A^c \ominus B_2)\) | 形状检测 | 无 |
对偶性总结
| 对偶关系 | 公式 |
|---|---|
| 腐蚀 ↔ 膨胀 | \((A \ominus B)^c = A^c \oplus \hat{B}\) |
| 开 ↔ 闭 | \((A \bullet B)^c = A^c \circ \hat{B}\) |
| 细化 ↔ 粗化 | 粗化 = 对补集细化的补集 |
Note
- 腐蚀和膨胀的定义与计算:给定图像矩阵和 SE,能正确计算腐蚀/膨胀结果
- 开操作与闭操作的定义、原理和应用场景:能举例说明分别解决什么问题
- 对偶性:理解腐蚀-膨胀、开-闭之间的对偶关系
- 幂等性:开/闭操作执行一次即达到稳态,不同于线性滤波
腐蚀与膨胀矩阵计算
给定 \(5 \times 5\) 的二值图像 \(A\) 和结构元素 \(B\)(原点为 SE 的中心 \((2,2)\) 位置,即第二行第二列),请分别计算:
- \(A \ominus B\)(腐蚀)
- \(A \oplus B\)(膨胀)
图像矩阵 \(A\):
结构元素 \(B\):
解答
(1) 腐蚀 \(A \ominus B\)
腐蚀定义:\(A \ominus B = \{z \mid (B)_z \subseteq A\}\),即 SE 的中心在位置 \(z\) 时,SE 完全包含在 \(A\) 内。
\(B\) 是 \(3 \times 3\) 全 \(1\) 矩阵。逐像素检查:
- 对于 \(A\) 中值为 \(1\) 的像素,以其为中心的 \(3 \times 3\) 邻域是否全为 \(1\)?
- 只有中心元素 \((2,2)\) 满足条件(周围 \(3 \times 3\) 全为 \(1\))
- 其他 \(1\) 像素的 \(3 \times 3\) 邻域都包含 \(A\) 中的 \(0\)
因此腐蚀结果为:
(2) 膨胀 \(A \oplus B\)
膨胀定义:\(A \oplus B = \{z \mid (\hat{B})_z \cap A \neq \varnothing\}\)。由于 \(B\) 是对称的(\(B = \hat{B}\)),等价于:只要 SE 与 \(A\) 有交集,就输出 \(1\)。
实际操作:将 \(B\) 的原点依次放在 \(A\) 中每个值为 \(1\) 的像素上,被 \(B\) 覆盖的所有位置都设为 \(1\)。相当于对 \(A\) 做 \(3 \times 3\) 的"最大值扩张"。
因此膨胀结果为:
总结验证: - 腐蚀后物体缩小了(只剩一个像素) - 膨胀后物体扩大了(几乎充满整个图像) - 腐蚀 + 膨胀(先腐蚀再膨胀)= 开操作:会消除小的 \(1\) 区域 - 膨胀 + 腐蚀(先膨胀再腐蚀)= 闭操作:会填补小的 \(0\) 区域
实验
实验4-project2
实验内容
本实验使用数学形态学操作对含噪声的脑部二值掩膜进行修复,并与标准掩膜(Ground Truth)进行对比评估:
- 读取数据:导入 noisy_brain_mask.npy(含噪声掩膜)、brain_tissue_mask_slice.npy(标准掩膜)、original_brain_slice_.npy(原始脑切片)、brain_tissue_slice.npy(标准脑组织切片)
- 掩膜修复:对含噪掩膜依次进行开运算和闭运算,去除外部假阳性噪声(如头骨细线),并填补内部假阴性孔洞
- 缺陷检查:将修复结果与 Ground Truth 对比,分析假阳性(FP)和假阴性(FN)分布
- 脑实质提取:使用修复后的掩膜从原图中提取脑实质
实验原理
形态学修复基于两个核心操作:
(1) 开运算(Opening)— 去除外部伪影
对含噪掩膜做开运算(先腐蚀后膨胀),本质是通过腐蚀"切断"大脑外部的细小头骨线,再通过膨胀恢复大脑主体的尺寸。
利用 \(3 \times 3\) 十字形结构元素,连续两次开运算迭代,成功消除大部分与脑主体不相连或连接薄弱的外部伪影。
(2) 闭运算(Closing)— 填补内部孔洞
对开运算结果做闭运算(先膨胀后腐蚀),通过膨胀"填上"脑实质内部的细小孔洞,再通过腐蚀恢复边界位置。
历年卷解答
一、腐蚀计算(2022 大题)
知识点定位:形态学 — 二值腐蚀
题目:给一个图像矩阵和结构,做腐蚀(计算)。
题目设计(根据回忆还原):
给定 \(5 \times 5\) 的二值图像 \(A\) 和结构元素 \(B\)(十字形,原点为中心),计算 \(A \ominus B\):
解答:
腐蚀定义为 \(A \ominus B = \{z \mid (B)_z \subseteq A\}\),即 SE 的中心位于 \(z\) 时,SE 所有 \(1\) 的位置必须对应 \(A\) 中的 \(1\)。
\(B\) 是十字形:需要上、下、左、右、中五个位置全为 \(1\)。
遍历 \(A\) 中所有 \(1\) 的位置: - \((1,1)\):上方是 \(0\),不满足 → \(0\) - \((1,2)\):上方是 \(0\),不满足 → \(0\) - \((1,3)\):上方是 \(0\),不满足 → \(0\) - \((2,1)\):左方是 \(0\),不满足 → \(0\) - \((2,2)\):上下左右中全是 \(1\),满足 → \(1\) - ... 以此类推
最终腐蚀结果:
考试计算技巧
腐蚀 = SE 完全覆盖:对于 SE 中为 \(1\) 的每个位置,原图中对应位置必须也是 \(1\)。只要有一个不满足,该位置输出 \(0\)。
膨胀 = SE 有交集即可:对于 SE 中为 \(1\) 的每个位置,只要原图中至少有一个对应位置是 \(1\),该位置输出 \(1\)。
二、开操作与闭操作的定义及应用(2022 大题)
知识点定位:形态学 — 开操作与闭操作
题目:什么是 Opening、Closing?分别可以解决什么问题?
解答:
(1) 定义
- 开操作(Opening):\(A \circ B = (A \ominus B) \oplus B\),即先腐蚀后膨胀
- 闭操作(Closing):\(A \bullet B = (A \oplus B) \ominus B\),即先膨胀后腐蚀
(2) Opening 解决的问题
- 断开狭窄连接:消除物体之间细小的连接部分(如脑组织与颅骨之间的细小连接)
- 消除细小突起/毛刺:平滑物体轮廓的外凸部分
- 消除尺寸小于 SE 的亮噪声:相当于去除前景中的盐噪声
医学应用:颅骨剥离(Skull Stripping)——利用开运算断开脑组织与头骨的窄连接,再进行条件膨胀恢复脑组织。
(3) Closing 解决的问题
- 融合窄断裂/细长沟:连接物体内部的微小断裂
- 填补小孔洞:消除物体内部的暗噪声
- 消除尺寸小于 SE 的暗噪声:相当于去除前景中的"椒"噪声
医学应用:脑部CT ROI 修饰——脑部分割后,ROI 内有细小空洞,闭运算填补后 ROI 更完整。
(4) 关键区别
| Opening | Closing | |
|---|---|---|
| 操作顺序 | 腐蚀 → 膨胀 | 膨胀 → 腐蚀 |
| 对物体的影响 | 分离、断开 | 合并、闭合 |
| 对轮廓的影响 | 外角变圆 | 内角变圆 |
| 尺寸关系 | \(A \circ B \subseteq A\) | \(A \subseteq A \bullet B\) |
三、开操作、闭操作的原理和应用(2021 大题)
知识点定位:形态学 — 开操作与闭操作
答案:同上(二),2021 年考查了相同的知识点。补充一点——幂等性的含义:
开/闭操作是幂等的:执行一次后,再执行同样的操作不会改变结果。这意味着形态学滤波可以做到只消除小于 SE 的噪声特征,而完全不损伤大于 SE 的结构特征,这是线性卷积滤波无法做到的。
四、开操作计算(2021 大题)
知识点定位:形态学 — 开操作矩阵计算
题目:做开操作(给出具体图像和结构元素,计算 \(A \circ B\))。
解答思路:
开操作 = 先腐蚀、后膨胀。计算分两步:
- 腐蚀:遍历图像,对每个位置检查 SE 是否能完全放入前景
- 膨胀:对腐蚀结果,以 SE 的反射遍历,只要与腐蚀结果有交集就输出前景
手工计算技巧
做开操作计算题时,分两步: 1. 先做腐蚀(SE 必须完全被包含) 2. 在腐蚀结果上做膨胀(SE 有交集即可) 3. 注意 SE 的原点位置(通常是 SE 的中心)
五、膨胀的定义与计算(2020 简答)
知识点定位:形态学 — 膨胀
题目:描述膨胀的定义,并给图画出膨胀结果。
解答:
(1) 定义
\(A\) 被 \(B\) 膨胀定义为:
即 SE 的反射平移 \(z\) 后,与 \(A\) 至少有一个像素重合的 \(z\) 的集合。
(2) 膨胀效果
- 物体外扩:在物体外围"增加"像素层
- 孔洞缩小/消失:物体内部的孔洞被压缩填满
- 断裂桥接:不连续的物体被连接起来
- 当 SE 对称时(\(B = \hat{B}\)),膨胀等价于将 SE 的原点放在每个 \(A\) 的前景像素上,取所有 SE 覆盖位置的并集
六、腐蚀的定义与计算(2020 简答)
知识点定位:形态学 — 腐蚀
题目:描述腐蚀的定义,并给图画出腐蚀结果。
解答:
(1) 定义
\(A\) 被 \(B\) 腐蚀定义为:
即 SE 平移 \(z\) 后完全被包含在 \(A\) 中的 \(z\) 的集合。
(2) 腐蚀效果
- 物体收缩:从外层"剥掉"像素
- 小物体消失:尺寸小于 SE 的物体被完全移除
- 窄连接断开:薄弱的物体间连接被切断
- 孔洞扩大:物体内部的孔洞变大