基本术语
结构元素
设有两幅图像A,S。若A是被处理对象,S用来处理A,则称S为结构元素,通常是一些较小的图像,类似于图像滤波中的模板。
凸包
凸包是指一个凸多边形,这个凸多边形将图片中所有的白色像素点都包含在内。
二值图像中基本形态学运算
腐蚀
给定结构元素S,使用S对图像A进行腐蚀运算:
A
⊖
S
=
{
x
,
y
∣
(
S
)
x
y
⊆
A
}
A \ominus S = \left\{ x,y| (S)_{xy} \subseteq A \right \}
A⊖S={x,y∣(S)xy⊆A}
腐蚀运算的结果与结构元素的形状以及结构元素的原点位置密切相关。令结构元素S在图像平面移动,当S的原点平移至某一点 z z z时,S被完全包含在A中,所有这样的点 z z z构成的集合,即为S对A的腐蚀图像。
腐蚀的作用:能够消融物体边界;如果物体整体上小于结构元素,则被腐蚀后将会完全消失(物体不能包含结构元素);如果仅有部分区域小于结构元素(如细小的连通),则连通处会被断开
膨胀
给定结构元素S,用S对图像A进行膨胀:
A
⊕
S
=
{
x
,
y
∣
(
S
)
x
y
∩
A
i
s
n
o
t
∅
}
A \oplus S = \{ x,y| (S)_{xy} \cap A \ is \ not \ \varnothing \}
A⊕S={x,y∣(S)xy∩A is not ∅}
同理,令结构元素S在图像平面上移动,当原点平移至 z z z点时,S相对于其自身原点的反射映像 S ′ S^{'} S′和A至少存在一个重叠像素,这样的 z z z点构成的集合为S对A的膨胀图像。 (注意:膨胀中要求存在公共交集的是S的反射集与A,并不是S本身,使用非对称结构元素的时候这一点要格外注意)
开运算
开闭运算由膨胀和腐蚀符合而成,开运算是先腐蚀后膨胀,闭运算是先膨胀后腐蚀。
开运算为:
A
∘
S
=
(
A
⊖
S
)
⊕
S
A \circ S = (A \ominus S) \oplus S
A∘S=(A⊖S)⊕S
开运算会使图像轮廓变得光滑,断开狭窄的连接和消除细毛刺。
图像的开运算常用来对图像进行消噪处理,同时,图像的开运算可以选择性地保留目标图像中符合结构原色几何性质的部分,而过滤掉相对结构元素而言残损的部分。
对比前面的腐蚀,我们可以看到,开运算在过滤噪声的同时并没有对物体的形状、轮廓产生明显的影响,这是一大优势,但是若是只关心物体的位置和个数的时候,腐蚀的计算速度更具有优势。
闭运算
闭运算为:
A
∙
S
=
(
A
⊕
S
)
⊖
S
A \bullet S = (A \oplus S) \ominus S
A∙S=(A⊕S)⊖S
闭运算先膨胀再腐蚀。同样可以使得轮廓变得光滑,但是它通常能够弥合狭窄的间断,填充小的孔洞。
图像的闭运算常常用来对目标图像分开的区域进行连接及对图像中细小缝隙进行填补,通过适当地选择结构元素,图像的闭运算可以令图像的填补结果具有一点的几何特征,适当地对图像进行闭运算有时可以使图像变得更加清晰连贯,同时可以避免原图像中线条加粗。
击中/不击中运算
应用
边界的提取
内边界的提取利用图像的腐蚀处理得到原图像的一个收缩,再将收缩结果和目标图像进行异或运算。
外边界的提取对目标图像进行膨胀处理,然后利用膨胀结果与原目标图像进行异或运算。
参考文献
[1] 形态学图像处理1
[2] 小白学习图像处理——图像的形态学处理(MATLAB)
[3] Opencv3笔记11——形态学滤波(1)
[4] 形态学图像处理
[5] python数字图像处理(18):高级形态学处理