# 第 5 章 形态学图像处理

# 本章概括

本章介绍数学形态学方法。核心思想是用结构元探测图像集合的形状。内容包括集合基础、结构元、腐蚀、膨胀、开闭运算、击中击不中变换、边界提取、孔洞填充、连通分量、凸壳、细化、粗化、骨架以及灰度形态学。重点是掌握结构元如何影响处理结果。

# 5.1 预备知识

二值形态学把图像看成 Z2Z^2 上的点集合。目标像素构成集合 AA,结构元构成集合 BB。结构元相当于一个小模板,用来探测目标的形状、大小、方向和连通性。

结构元的选择非常关键:小结构元保留更多细节,大结构元会删除更小的目标或间隙;方向性结构元可检测线段、边缘或特定形状。

# 如何使用结构元

结构元在图像上平移。每到一个位置,都判断结构元与目标集合的包含、相交或匹配关系。PPT 中的结构元示意图应理解为“用一个已知形状去探测图像中的未知形状”。

# 5.2 二值图像中的基本形态学运算

# 5.2.1 腐蚀

腐蚀定义为:

AB={z(B)zA}A\ominus B=\{z\mid (B)_z\subseteq A\}

其中 (B)z(B)_z 表示结构元 BB 平移到位置 zz 后的集合。只有当结构元完全包含在目标集合 AA 中,位置 zz 才保留。

腐蚀的作用是收缩目标、消除小突出、断开细连接。结构元越大,目标收缩越明显。

# 图示说明

腐蚀示例图展示了目标边界向内收缩的效果:细小目标可能被完全删除,狭窄连接可能断开,因此腐蚀常用于去除小噪声或分离粘连目标。

# 5.2.2 膨胀

膨胀定义为:

AB={z(B^)zA}A\oplus B=\{z\mid (\hat{B})_z\cap A\ne\varnothing\}

其中 B^\hat{B} 是结构元关于原点的反射。只要结构元与目标集合有交集,该位置就被加入输出。

膨胀的作用是扩张目标、填补小孔、连接邻近断裂区域。结构元越大,扩张越明显。

# 对偶性

腐蚀和膨胀具有对偶关系:

(AB)c=AcB^(A\ominus B)^c=A^c\oplus \hat{B}

(AB)c=AcB^(A\oplus B)^c=A^c\ominus \hat{B}

其中 AcA^c 表示补集。对偶性说明对前景腐蚀等价于对背景膨胀。

# 5.3 开运算和闭运算

开运算为先腐蚀后膨胀:

AB=(AB)BA\circ B=(A\ominus B)\oplus B

它可以去除小目标、断开细连接、平滑目标轮廓,但总体不会明显扩大目标。

闭运算为先膨胀后腐蚀:

AB=(AB)BA\bullet B=(A\oplus B)\ominus B

它可以填补小孔、连接窄断裂、平滑轮廓,但总体不会明显缩小目标。

运算 顺序 主要作用 典型影响
腐蚀 结构元完全包含才保留 收缩目标 去小噪声、断开细连接
膨胀 结构元与目标相交即保留 扩张目标 填小孔、连接断裂
开运算 腐蚀再膨胀 去除小亮目标 保留较大目标形状
闭运算 膨胀再腐蚀 填补小暗孔 连接近邻目标

# 5.4 击中击不中变换

击中击不中变换用于检测特定形状,要求一个结构元匹配目标,另一个结构元匹配背景:

AB=(AB1)(AcB2)A\otimes B=(A\ominus B_1)\cap(A^c\ominus B_2)

其中 B1B_1 用于匹配前景,B2B_2 用于匹配背景。它常用于端点检测、角点检测和细化中的模板匹配。

# 5.5 基本形态学算法

# 边界提取

边界可由原图减去腐蚀结果得到:

β(A)=A(AB)\beta(A)=A-(A\ominus B)

腐蚀去掉边缘像素,因此差集保留目标边界。

# 孔洞填充

孔洞填充从孔内某个种子点开始,反复膨胀并限制在背景区域内:

Xk=(Xk1B)AcX_k=(X_{k-1}\oplus B)\cap A^c

迭代直到 Xk=Xk1X_k=X_{k-1}。最后 XkAX_k\cup A 即为填洞结果。

# 连通分量提取

连通分量提取也可通过形态学重建完成。从一个目标像素种子开始反复膨胀,并与原集合 AA 相交,直到稳定:

Xk=(Xk1B)AX_k=(X_{k-1}\oplus B)\cap A

该方法可逐个提取连通区域。

# 凸壳、细化、粗化和骨架

凸壳用于得到包含目标的最小凸集合;细化逐步删除边界像素但保持连通性;粗化与细化相反,用于补充结构;骨架提取保留目标的中轴结构,适合形状描述和识别。

骨架可理解为目标内部到边界距离局部最大的点集合。PPT 中骨架示例图说明:骨架保留了目标拓扑和主要形状,但去除了宽度信息。

# 5.6 灰度级形态学

灰度形态学将二值集合运算推广到灰度函数。结构元不再只判断包含或相交,而是参与局部最大值和最小值运算。

灰度膨胀可写为:

(fb)(x,y)=max(s,t)b{f(xs,yt)+b(s,t)}(f\oplus b)(x,y)=\max_{(s,t)\in b}\{f(x-s,y-t)+b(s,t)\}

灰度腐蚀可写为:

(fb)(x,y)=min(s,t)b{f(x+s,y+t)b(s,t)}(f\ominus b)(x,y)=\min_{(s,t)\in b}\{f(x+s,y+t)-b(s,t)\}

灰度膨胀会增强亮区域、扩展亮细节;灰度腐蚀会增强暗区域、收缩亮区域。灰度开运算可去除小亮结构,灰度闭运算可填补小暗结构。

# 灰度形态学算法

灰度顶帽变换用于提取比背景亮的小目标:

That(f)=f(fb)T_{hat}(f)=f-(f\circ b)

黑帽变换用于提取比背景暗的小结构:

Bhat(f)=(fb)fB_{hat}(f)=(f\bullet b)-f

它们常用于非均匀背景校正、细小目标增强和缺陷检测。