四连通,和八连通的详解(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有类似的意思。

posted on 2013-03-21 15:12  suwen  阅读(8597)  评论(0编辑  收藏  举报

导航