MATLAB中的连通区域函数 bwlabel

本文详细介绍了bwlabel函数的使用方法及原理,包括如何通过该函数对二值图像进行连通域标记,并给出了具体的实例对比4连通和8连通的区别。此外还提供了其他相关函数如bwlabeln和bwconncomp的简介。

     最近做人脸检测的时候遇到了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,因为它需要更少的内存和运算时间。

几个函数的使用



 



MATLAB中有多种函数可以用来提取图像中的连通区域,其中最常用的函数bwlabel和regionprops。 bwlabel函数可以将二值图像中的连通区域标记出来。该函数的输入是一个二值图像,输出是一个与输入图像大小相同的矩阵,其中每个像素点都被赋予一个标签,表示该像素所属的连通区域。不同的连通区域被赋予不同的标签值。需要注意的是,该函数默认将背景像素标签为0。 例如,假设有一个二值图像img,可以使用bwlabel函数对其进行连通区域提取,代码如下: ``` labels = bwlabel(img, 8); ``` 其中,参数8表示使用8连通方式进行区域提取,如果想使用4连通方式,可以将参数改为4。 另一个常用的连通区域提取函数是regionprops。该函数可以返回在二值图像中找到的所有连通区域的一些属性,比如面积、重心位置、外接矩形等。 例如,使用regionprops函数可以获取图像中所有连通区域的面积和重心位置,代码如下: ``` properties = regionprops(labels, 'Area', 'Centroid'); ``` 其中,labels为使用bwlabel函数得到的标签矩阵。 通过调用regionprops函数返回的属性结构数组properties,可以根据需要获取相应的属性值,比如properties(i).Area表示第i个连通区域的面积,properties(i).Centroid表示第i个连通区域的重心位置。 以上就是使用MATLAB中的bwlabel和regionprops函数进行连通区域提取的简单介绍。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值