您的位置:首页 > 编程语言 > MATLAB

matlab找连通区域的bwlabel函数的使用

2017-02-22 23:31 351 查看
用法:
    L = bwlabel(BW,n)
    返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。
    4连通或8连通是图像处理里的基本感念:而8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;4连通是指,如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连接着的,连通的,在左上角、左下角、右上角或右下角连接,则不认为他们连通。请注意“或”字的含义,就是满足其中一个条件就认为是连通的。
    [L,num] = bwlabel(BW,n)这里num返回的就是BW中连通区域的个数。
    通俗的说,这个函数的作用是用来找这个二值图像中的连通区域的,对于不同的符合条件的连通区域(4连通,8连通)分别用不同的标号加以区别,结果保存在L这个矩阵里,而num里保存的是输入图像中连通区域的总数。

    举例说明:

    BW =

    1     1     1     0     0     0     0     0

    1     1     1     0     1     1     0     0

    1     1     1     0     1     1     0     0

    1     1     1     0     0     0     1     0

    1     1     1     0     0     0     1     0

    1     1     1     0     0     0     1     0

    1     1     1     0     0     1     1     0

    1     1     1     0     0     0     0     0

    按4连通计算,方形的区域,和翻转的L形区域,有用是对角连接,不属于连通,所以分开标记,连通区域个数为3,就是有3个不同的连接区域。

    L = bwlabel(BW,4)

    结果如下:

    L =

    1     1     1     0     0     0     0     0

    1     1     1     0     2     2     0     0

    1     1     1     0     2     2     0     0

    1     1     1     0     0     0     3     0

    1     1     1     0     0     0     3     0

    1     1     1     0     0     0     3     0

    1     1     1     0     0     3     3     0

    1     1     1     0     0     0     0     0

    而8连通标记,它们是连通的:

    [L, num] = bwlabel(BW,8)

    L =

    1     1     1     0     0     0     0     0

    1     1     1     0     2     2     0     0

    1     1     1     0     2     2     0     0

    1     1     1     0     0     0     2     0

    1     1     1     0     0     0     2     0

    1     1     1     0     0     0     2     0

    1     1     1     0     0     2     2     0

    1     1     1     0     0     0     0     0

   这里

   num =2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: