这里涉及到的形态学操作,基本都是用模板对全图进行卷积,操作简单,是初级的图像处理。共识的集合处理符合这里不多写了。下面是定义:
- A是图像子集,A的补集写为 Ac .
- 集合B的反射A是一种对称,写为 A^={w|w=−b,b∈B}
- 集合A的平移表示为 (A)z={w|w=a+z,a∈A}
- 膨胀:A被B膨胀写为 A⊕B={z|(B^)z∩A≠∅} ,如果是灰度图像则表示为 (f⊕b)(s,t)=max{f(s−x,t−y)+b(x,y)|(s−x,t−y)∈Df;(x,y)∈Db} ,注意这里B是模板,要执行原点翻转操作后再在A图范围内平移。平移的位置z,如果符合上述条件,就设像素为1。
- 腐蚀:操作为 A⊖B={z|(B)z∈A} 如果是灰度图像则表示为 (f⊕b)(s,t)=min{f(s+x,t+y)−b(x,y)|(s+x,t+y)∈Df;(x,y)∈Db} ,这里B不执行原点翻转操作,目的是为了让腐蚀和膨胀操作成为对偶操作: (A⊖B)c=Ac⊕B^ .
- 开操作:表示为 A∘B=(A⊖B)⊕B ,先腐蚀后膨胀,可以光滑轮廓,断开狭窄的间断和消除细的突出物
- 闭操作:表示为 A⋅B=(A⊕B)⊖B ,先膨胀后腐蚀,可以光滑轮廓,消弥狭窄的间断和长细的鸿沟,消除小的空洞,并填补轮廓线中的断裂。开操作和闭操作是对偶关系: (A⋅B)c=(Ac∘B^)
- 击中变换:是一种简单的检测形状的方法,属于模板匹配,表示为 A⊗B=(A⊖X)∩[Ac⊖(W−X)] ,其中A是形状集合,B表示X和X的背景(其实就是找X),X是待检测的形状,W是包围X的一个小窗口但不一定是全图。
- 边界提取:先腐蚀一次A,A的轮廓就被去掉了,然后前后相减就得到A的边界: β(A)=A−(A⊖B)
- 填充空心区域:从空心区域A内部的一个点P出发进行迭代膨胀操作,表示为 Xk=(Xk−1⊕B)∩Ac ,其中B是膨胀模板, X0 就是P,从P出发进行膨胀,然后与A的补集相交部分就是A的内部,这样保证不会重复填充A区域。由于P必须位于A内部,P的膨胀部分也不会越过A的边界,因此不会填充A外围。
- 提取联通分量:设P是A的一个点,那么执行迭代膨胀操作 Xk=(Xk−1⊕B)∩A ,其中B是膨胀模板, X0 就是P,与A相交保证膨胀部分始终是A的分量。
- 求取凹集合A的凸壳。凸形指内部任意两个点的直线段都在其内部的图形,有重要研究使用价值。集合A的凸壳H是包含A的最小凸形集合,H-S称为S的凸缺。用多个不同模板 Bi ,执行迭代击中变换 Xik=(Xk−1⊗Bi)∈A;H(A)=∪Xiconv
- 细化: A∩(A⊗B)c ,其中B是多个不同的模板,称为结构元素,我们需要用B来多次击中A直到收敛。细化相比腐蚀,需要尽可能保留形状。
- 粗化:是细化的对偶过程,写为 A∪(A⊗B)
- 骨架提取:令 Sk(A)=(A⊖kB)−(A⊖kB)∘B ,k表示要执行k次操作,直到被腐蚀为空集之前的一次。骨架为 S(A)=∪Sk(A) ,即所有骨架子集的并集。
- 顶帽操作(top-hat): h=f−(f∘b) 用于灰度图处理,用于增强阴影细节。