邻域
4邻域:位于坐标(x,y)处的像素p有水平和垂直的相邻像素。
我们将这组像素记为p的4邻域,记为
N
4
(
p
)
N_4(p)
N4(p)。
对角相邻像素:
我们将这组像素记为p的对角相邻4像素,记为
N
D
(
p
)
N_D(p)
ND(p)。
于是这两种邻域合起来就构成了8邻域。
8邻域:4邻域和对角相邻像素构成的邻域:
我们把这组像素记为
N
8
(
p
)
N_8(p)
N8(p)
邻接
令V是用于定义邻接性的灰度值集合,二值图像中,把具有1值的像素归诸于邻接像素。则V = {1}。如果是0-255的邻接像素,V可以是256个值中的任何一个。
- 4邻接,如果q在集合 N 4 ( p ) N_4(p) N4(p)中,则具有V中数值的两个像素p和q是4邻接的。
- 8邻接,如果q在集合 N 8 ( p ) N_8(p) N8(p)中,则具有V中数值的两个像素p和q是8邻接的。
- m邻接(混合邻接)。如果(i)q在 N 4 ( p ) N_4(p) N4(p)中,或者(ii)q在 N D ( p ) N_D(p) ND(p)中,且集合 N 4 ( p ) ∩ N 4 ( q ) N_4(p)\cap N_4(q) N4(p)∩N4(q)中没有来自V中数值的像素,则具有V中数值的两个像素p和q是m邻接的。
解释
可能看定义有点懵,就拿🐶儿吃肉的举个例子!
V是所有肉的集合,那就记成V{肉}吧。
在四邻接中,🐶少非常的可怜,右下角和右上角的肉吃不到。就像这样。
我有肉的集合,却没有路走的过去。咋办?走8邻域吧。开始走!
在8邻域里,顶上和右下角🐶少没有啥好担心的,直接走就行,但是右上角🐶少是应该是直接右上去吃呢还是应该先吃完顶上的再向右呢?就像这样要抉择了!
于是就产生了8邻接的二义性,为了🐶少不迷茫,就走m邻接吧。
这次狗少说:我不选择了,只要走的通就好了。
右上角的肉和狗少就不能算m邻接了,因为狗少的顶上那块肉是它的四邻域,而右上角的四邻域内也包含了最顶上那块肉。而m邻接要求如果不是四邻接的话,则是对角相邻,但是交集中不能出现共同的像素。
总结
其实m连接和4邻接,8邻接是不矛盾的,你是4邻接的同时它也可以算是m邻接,8邻接的同时也可以是m邻接,但是对于8邻接来说,不能出现最后一种图的情况,因为它们的4邻接中存在一种共同的像素。