MATLAB中的连通区域函数 bwlabel

来源:互联网 发布:战舰世界 石锤数据 编辑:程序博客网 时间:2024/04/30 00:01

     最近做人脸检测的时候遇到了bwlabel函数,始终没理解,偶然一 搜:

     http://blog.163.com/zhuqibing2010@126/blog/static/14038650320101117361778/

L = bwlabel(BW,n)

bwlabel函数: Label connected components in 2-D binary image,处理的对象是二值图。

返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。
    

四连通或八连通是图像处理里的基本感念:

8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;

4连通,是指如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连接着的,连通的,在左上角、左下角、右上角或右下角连接,则不认为他们连通。

     [L,num] = bwlabel(BW,n),默认的n是8。其中L表示进行连通处理后的图像,num表示就是BW中连通区域的个数。
    补充:我听说过16连通,这应该是在三维空间里的概念了吧。


举例说明:
>> 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


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

另外还有以下几个函数可以计算二值图像的连通区域:

bwlabeln,

bwconncomp,

事实上,bwconncomp取代了bwlabel和bwlabeln,因为它需要更少的内存和运算时间。

几个函数的使用



 



原创粉丝点击