matlab bwlabel_MATLAB--数字图像处理 bwlabel()函数

4c1d377728f53f1ec71f825188d5b70d.png

bwlabel()

用处
一般用在图像区域的分割,比如人脸区域与其他肤色区域分割开

用法
L = bwlabel(BW,n)

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

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

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

注意:在8连通中,只有一个像素的上、下、左、右、左上角、左下角、右上角、右下角其中一个位置有像素,则认为它们是连通的,属于一块区域。满足其中一个位置即可,比如只有左边有像素,这样也是算连通的。同理,4连通也是,满足上、下、左、右其中一个位置有像素即可

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

num返回的就是BW中连通区域的个数,可以理解成一幅图像中可以分成几块连通区域。

举例说明

MATLAB代码

a=[1,1,1,0,0,0,1,1;
      1,1,1,0,0,0,1,0;
      1,1,1,0,0,0,0,0;
      0,0,0,1,0,0,1,0;
      0,0,0,0,0,0,1,0;]
t_1=bwlabel(a,4)%4连通
t_2=bwlabel(a,8)%8连通

结果

a =
%原矩阵
     1     1     1     0     0     0     1     1
     1     1     1     0     0     0     1     0
     1     1     1     0     0     0     0     0
     0     0     0     1     0     0     1     0
     0     0     0     0     0     0     1     0


t_1 =
%4连通
     1     1     1     0     0     0     3     3
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     0     0
     0     0     0     2     0     0     4     0
     0     0     0     0     0     0     4     0


t_2 =
%8连通
     1     1     1     0     0     0     2     2
     1     1     1     0     0     0     2     0
     1     1     1     0     0     0     0     0
     0     0     0     1     0     0     3     0
     0     0     0     0     0     0     3     0

解释
上面矩阵a若用4连通分,则可以分成4个区域,若用8连通分,则可以分成3个区域。
结果中的数字代表的是区域的序号。

f549238e8298683240785f864320992a.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值