四连通,和八连通的详解(MATLAB)
转至:http://www.cnblogs.com/xiaojidan/archive/2012/08/20/2647261.html
功能:标注二进制图像中已连接的部分。
语法:L = bwlabel(BW,n) [L,num] = bwlabel(BW,n)
其中BW为输入图像;N可取值为4或8表示连接四连通或八连通区域;NUM为找到的连通区域数目;L为输出图像矩阵,其元素值为整数,背景被标记为0,第一个连通区域被标记为1,第二个连通区域被标记为2,依此类推.所以你不明白的1,2,3即为第1,2,3个连通区域的标记。例子:
(1):
A=[0 1 1 0 1 0 1
0 1 1 0 0 0 1
0 1 1 0 1 0 1];
[L,M]=bwlabel(A,4);
此时L=[0 1 1 0 2 0 4
0 1 1 0 0 0 4
0 1 1 0 3 0 4] , M=4
(2):
A=[0 1 1 0 0 0 1
0 1 1 0 0 0 1
0 1 1 0 0 0 1];
[L,M]=bwlabel(A,4);
L=[0 1 1 0 0 0 2
0 1 1 0 0 0 2
0 1 1 0 0 0 2], M=2;
(3):
A=[0 1 1 0 0 0 1
0 1 1 0 0 0 1
0 1 1 0 1 0 1];
[L,M]=bwlabel(A,4);
L=[0 1 1 0 0 0 3
0 1 1 0 0 0 3
0 1 1 0 2 0 3] M=3
解释:四连通区域是这样的: 1
1 0 1
1
以上的0代表中心像素点所在的位置就是四连通区域。也就是0的上向左右四个点。
八连通区域是:1 1 1
1 0 1
1 1 1
也就是除了上下左右以外还有左上角右上角左下角右下角四个位置。
八连通区域包含了四连通区域,所以说四连通的话肯定八连通的。
M说明了A中有多少个连通区域,L则把这些连通区域用数字表示出来,相同的数字表示同一个区域,例(1)中有4个连通区域,其中,L矩阵中的1代表第一个连通区域,即在A中对应像素点是属于第一个连通区域,L中的2,3,4有类似的意思。