bwlabel函数 [复制链接] matlab urforever urforever 当前离线 积分 13 UID 235273 好友 最后登录 1970-1-1 关注者: 3 电梯直达 1# 发表于 2010-5-21 11:49:44 | 只看该作者 | 倒序浏览 | 阅读模式 最近用到这个函数,help看不太懂就找了这个,希望对大家有用~ 用法: L = bwlabel(BW,n) 返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。 四连通或八连通是图像处理里的基本感念:8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;4连通是指,如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连接着的,连通的,在左上角、左下角、右上角或右下角连接,则不认为他们连通。 [L,num] = bwlabel(BW,n) 这里num返回的就是BW中连通区域的个数。 举例说明: 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