说实话,我第一次看到这只是明白了它的原理,但是对它的作用并不是很了解,在做过一些图像处理后,终于明白了它的重要之处,这里重新将其作复习,并写在这里,方便自己以后复习(不用翻书,翻书真的很麻烦)
孔洞填充的公式:
X
k
=
(
X
k
−
1
⊕
B
)
∩
A
c
k
=
1
,
2
,
3...
X_k=(X_{k-1}\oplus B)\cap A^c \qquad k=1,2,3...
Xk=(Xk−1⊕B)∩Ack=1,2,3...
其中
X
0
X_0
X0是一副全黑的图像,但在孔洞的地方有一个白点(万花丛中一点红)。
乍看,确实很难理解这个公式,等我慢慢道来:
我们要对A图进行孔洞填充,首先求出A的补集作为备用,然后所用到的element B如上图c所示。首先我们构建
X
0
X_0
X0一副全黑图像加上孔洞中的一点白作为初始图像,然后用B对
X
0
X_0
X0进行膨胀,结果膨胀的结果超过了孔洞的大小,于是我们用我们之前构造的
A
c
A^c
Ac对其求交集将其结果限制在孔洞内(由于我们的element是一个四连通元素,每一次膨胀其边界不会超出一个像素点,而由于
A
c
A^c
Ac的四周都是一个像素宽的沟壑,所以求交集刚好能限制膨胀过界的像素)。然后迭代,直到
x
k
−
1
x_{k-1}
xk−1与
x
k
x_{k}
xk相同没变化。最后得到
X
8
X_8
X8孔洞的填充图像,最后与原图像求并集刚好就把孔洞填充了。
使用例子如下:
提问:为什么element 不用八连通?
如果用八连通,
A
c
A^c
Ac将无法成功限制膨胀的溢出和越界。