1、bwlabel是用来标记二维的二值图像中的连通组的,简言之,就是黑背景下面有多少白的块,也就是从黑背景甄别白块块的。
L = BWLABEL(BW,N) returns a matrix L, of the same size as BW, containing labels for the connected components in BW. N 即为4连通或8连通
[L,NUM] = BWLABEL(BW,N) returns in NUM the number of connected objects found in BW.
就是说bwlabel能从一个读入二值图像后产生的BW数组(也可能自己创建,只要符合元素是0或者1就行)中,区别出其中的1有多少块(注:在BW数组中,0代表黑背景,1代表白)
比如
0 1 1 0 0 0 1
0 1 1 0 0 0 1
0 1 1 0 0 0 1
这样的数组中,显然在0背景上有两块1,于是,bwlabe之后返回的L数组是 :
0 1 1 0 0 0 2
0 1 1 0 0 0 2
0 1 1 0 0 0 2
(当然,这个我没有实际运行,但应该没问题。)这是什么意思呢?就是说返回的L里面通过1,2,3,。。。。。n来标识某一个位置(像素)属于这个二值图像的第几个connected components。
要更深入的清晰的理解,需要理解这里面联通的定义,实际上,有4-连通(上下左右)和8-连通(八方都算连通)(甚至还有不常用的自定义连通,以后help里看到CONN这样的输入参数的时候才有用)。
如果设两个返回参数,NUM可以返回有多少个区块。
另外,类似的还有一个函数叫bwlabeln,两者差别如下:
速度的差别把,函数实现时对某些特殊情形做了特殊的优化。bwlabel在区块垂直方向比较长的时候比较快,其他情况下,都是bwlabeln更快。另bwlabel接受的L还可以是多维的,而bwlabel只能接受二维的L。
具体的延伸应用会有很多的,以这个标记为起始,我们可以写一些自己的函数,当然MATLAB 图像处理工具箱里面的一些函数就可以和这个很好的配合实现一些很好的应用。
比如通过regionprops函数确定每一个区块的一些特性(如中心,面积等等)
STATS = REGIONPROPS(L,PROPERTIES) measures a set of properties for each labeled region in the label matrix L.
2、Regionprops:
用途是get the properties of region,即用来度量图像区域属性的函数。
语法:STATS = regionprops(L,properties)
描述:测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。返回值STATS是一个长度为max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。properties 可以是由逗号分割的字符串列表、饱含字符串的单元数组、单个字符串 'all' 或者 'basic'。如果 properties 等于字符串 'all',则所有下述字串列表中的度量数据都将被计算,如果 properties 没有指定或者等于 'basic',则属性: 'Area', 'Centroid', 和 'BoundingBox' 将被计算。下面的列表就是所有有效的属性字符串,它们大小写敏感并且可以缩写。