数学形态学处理—膨胀腐蚀与开闭运算
对图像进行分析时,往往是把图像进行分割,并用其二值图像进行分析,对二值图像首先要提取目标物,然后对不同目标物的特征差异进行描述与计算,最后获得所需要分析的结果在提取目标物的过程中存在以下难题:提取的目标中存在伪目标在多目标的情况下存在粘连和断裂多个目标形态不同要解决上述问题,就需要运用数学形态学的一些方法,腐蚀与膨胀是形态学处理的基础,许多形态学算法都是在这两种运算的基础上进行拓展的...
文章目录
0. 形态学处理所解决的问题
对图像进行分析时,往往是把图像进行分割,并用其二值图像进行分析,对二值图像首先要提取目标物,然后对不同目标物的特征差异进行描述与计算,最后获得所需要分析的结果
在提取目标物的过程中存在以下难题:
- 提取的目标中存在伪目标
- 在多目标的情况下存在粘连和断裂
- 多个目标形态不同
1 膨胀与腐蚀运算
要解决上述问题,就需要运用数学形态学的一些方法,腐蚀与膨胀是形态学处理的基础,许多形态学算法都是在这两种运算的基础上进行拓展的。
1.1 膨胀运算
1.1.1 定义
集合 A A A被集合 B B B膨胀,定义为: A ⊕ B = { z ∣ ( B ^ ) z ∩ A ≠ ∅ } A\oplus B=\{\ z|(\hat B)_z\cap A\neq\varnothing\ \} A⊕B={ z∣(B^)z∩A=∅ }其中集合 B B B也称为结构元素; ( B ^ ) z (\hat B)_z (B^)z表示 B B B的反射平移 z z z后得到的新集合
于是该定义式解释为:若 ( B ^ ) z (\hat B)_z (B^)z能击中 A A A,则其所有 z z z点组成的集合称为 A A A对 B B B的膨胀
实例:
1.1.2 不同结构元素对原始图像的影响
不同结构元素长宽的设计会使原图像膨胀后的形态各不相同,例如下图展示了长宽分别为
d
4
×
d
4
\frac{d}{4}×\frac{d}{4}
4d×4d和
d
×
d
4
d×\frac{d}{4}
d×4d的结构元素对原始图像进行膨胀运算后的结果:
1.1.3 应用场景
膨胀运算的一些经典应用:
1.1.3.1 桥接裂缝
1.1.3.2 填充孔洞
1.2 腐蚀运算
1.2.1 定义
集合 A A A被集合 B B B腐蚀,定义为: A ⊖ B = { z ∣ ( B ) z ⊆ A } A\ominus B=\{\ z|(B)_z\subseteq A\ \} A⊖B={ z∣(B)z⊆A }其中集合 B B B也称为结构元素; ( B ^ ) z (\hat B)_z (B^)z表示 B B B平移 z z z后得到的新集合
于是该定义式解释为:若 ( B ) z (B)_z (B)z仍包含于 A A A中,则其所有 z z z点组成的集合称为 A A A对 B B B的腐蚀
腐蚀的结果表现在原图的外围被剥除:
1.2.2 不同结构元素对原始图像的影响
不同结构元素长宽的设计会使原图像腐蚀后的形态各不相同,例如下图展示了长宽分别为
d
4
×
d
4
\frac{d}{4}×\frac{d}{4}
4d×4d和
d
×
d
4
d×\frac{d}{4}
d×4d的结构元素对原始图像进行腐蚀运算后的结果:
这里要注意的是,若结构元素
B
B
B是对称的,即
B
^
=
B
\hat B=B
B^=B,则原图
X
X
X被
B
B
B、
B
^
\hat B
B^腐蚀的结果一样;若结构元素
B
B
B是非对称的,则原图
X
X
X被
B
B
B、
B
^
\hat B
B^腐蚀的结果不同
1.3 膨胀与腐蚀运算的性质
1.3.1 对偶性
膨胀与腐蚀运算可以相互转换,对目标进行膨胀就是对背景进行腐蚀,反之同理
(
X
⊖
B
)
∁
=
X
∁
⊕
B
^
∁
(X\ominus B)^{\complement}=X^\complement\oplus\hat B^\complement
(X⊖B)∁=X∁⊕B^∁
(
X
⊕
B
)
∁
=
X
∁
⊖
B
^
∁
(X\oplus B)^{\complement}=X^\complement\ominus\hat B^\complement
(X⊕B)∁=X∁⊖B^∁
1.3.2 互换性
膨胀运算具有互换性,即结构元素对原图进行操作的顺序可以互换,但腐蚀运算不具有互换性
(
X
⊕
B
1
)
⊕
B
2
=
(
X
⊕
B
2
)
⊕
B
1
(X\oplus B_1)\oplus B_2=(X\oplus B_2)\oplus B_1
(X⊕B1)⊕B2=(X⊕B2)⊕B1
(
X
⊖
B
1
)
⊖
B
2
≠
(
X
⊖
B
2
)
⊖
B
1
(X\ominus B_1)\ominus B_2\neq (X\ominus B_2)\ominus B_1
(X⊖B1)⊖B2=(X⊖B2)⊖B1
1.3.3 组合性
若结构元素可分解,即有 B = B 1 + B 2 B=B_1+B_2 B=B1+B2,则有: X ⊕ B = X ⊕ ( B 1 ⊕ B 2 ) = ( X ⊕ B 1 ) ⊕ B 2 X\oplus B=X\oplus(B_1\oplus B_2)=(X\oplus B_1)\oplus B_2 X⊕B=X⊕(B1⊕B2)=(X⊕B1)⊕B2在结构元素较大时可以将之分解以提高运算速度
2 开运算与闭运算
膨胀与腐蚀运算对目标物的后期处理有非常好的作用,但同时却改变了原目标的大小。考虑到膨胀与腐蚀是一对对偶运算,将膨胀与腐蚀运算相结合,便构成了开运算与闭运算
2.1 开运算
使用结构元素 B B B对集合 X X X进行开运算,定义为: A ∘ X = ( A ⊖ B ) ⊕ B A\circ X = (A\ominus B)\oplus B A∘X=(A⊖B)⊕B常见应用:
- 消除细小对象
- 消除微小连粘
- 平滑目标边缘
例如:
在进行开运算的过程中需要注意的是,若结构元素
B
B
B非对称,则做膨胀运算时应用
B
B
B的对称集
B
^
\hat B
B^,否则开运算结果将发生平移
2.2 闭运算
使用结构元素 B B B对集合 X X X进行闭运算,定义为: A ∙ X = ( A ⊕ B ) ⊖ B A\bullet X = (A\oplus B)\ominus B A∙X=(A⊕B)⊖B常见应用:
- 填充对象内部细小空洞
- 连接邻近对象
- 平滑目标边缘
例如:
同样的,若结构元素 B B B非对称,则做膨胀运算时应用 B B B的对称集 B ^ \hat B B^,否则闭运算结果将发生平移
2.3 开闭运算的性质
2.3.1 对偶性
开闭运算可以相互转换,对目标进行开运算就是对背景进行闭运算,反之同理 OPEN ( X ) ∁ = CLOSE ( X ∁ ) \text{OPEN}(X)^\complement=\text{CLOSE}(X^\complement) OPEN(X)∁=CLOSE(X∁) CLOSE ( X ) ∁ = OPEN ( X ∁ ) \text{CLOSE}(X)^\complement=\text{OPEN}(X^\complement) CLOSE(X)∁=OPEN(X∁)
2.3.2 开运算性质
- 缩小性: X ∘ B X\circ B X∘B是 X X X的子集
- 单增性:若 X 1 X_1 X1是 X 2 X_2 X2的子集,则 X 1 ∘ B X_1\circ B X1∘B是 X 2 ∘ B X_2\circ B X2∘B的子集
- 单运算性: ( X ∘ B ) ∘ B = X ∘ B (X\circ B)\circ B = X\circ B (X∘B)∘B=X∘B
2.3.3 闭运算性质
- 扩大性: X X X是 X ∙ B X\bullet B X∙B的子集
- 单增性:若 X 1 X_1 X1是 X 2 X_2 X2的子集,则 X 1 ∘ B X_1\circ B X1∘B是 X 2 ∘ B X_2\circ B X2∘B的子集
- 单运算性: ( X ∙ B ) ∙ B = X ∙ B (X\bullet B)\bullet B = X\bullet B (X∙B)∙B=X∙B
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)