bwlabeln - Label connected components in N-D binary image

Syntax

L = bwlabeln(BW)
[L,NUM] = bwlabeln(BW)
[L,NUM] = bwlabeln(BW,conn)

Description

L = bwlabeln(BW) returns a label matrix L containing labels for the connected components in BW. BW can have any dimension; L is the same size as BW. The elements of L are integer values greater than or equal to 0. The pixels labeled 0 are the background. The pixels labeled 1 make up one object, the pixels labeled 2 make up a second object, and so on. The default connectivity is 8 for two dimensions, 26 for three dimensions, and conndef(ndims(BW), 'maximal') for higher dimensions.

[L,NUM] = bwlabeln(BW) returns in NUM the number of connected objects found in BW.

[L,NUM] = bwlabeln(BW,conn) specifies the desired connectivity. conn can have any of the following scalar values.

Value

Meaning

Two-dimensional connectivities

4

4-connected neighborhood

8

8-connected neighborhood

Three-dimensional connectivities

6

6-connected neighborhood

18

18-connected neighborhood

26

26-connected neighborhood

Connectivity can also be defined in a more general way for any dimension by using for conn a 3-by-3-by- ...-by-3 matrix of 0's and 1's. The 1-valued elements define neighborhood locations relative to the center element of conn. Note that conn must be symmetric about its center element.

Remarks

bwlabel supports 2-D inputs only; bwlabeln supports inputs of any dimension. In some cases, you might prefer to use bwlabeln even for 2-D problems because it can be faster. If you have a 2-D input whose objects are relatively thick in the vertical direction, bwlabel is probably faster; otherwise bwlabeln is probably faster.

Class Support

BW can be numeric or logical, and it must be real and nonsparse. L is of class double.

Examples

BW = cat(3,[1 1 0; 0 0 0; 1 0 0],...
[0 1 0; 0 0 0; 0 1 0],...
[0 1 1; 0 0 0; 0 0 1])

bwlabeln(BW)

ans(:,:,1) =

     1     1     0
     0     0     0
     2     0     0


ans(:,:,2) =

     0     1     0
     0     0     0
     0     2     0


ans(:,:,3) =

     0     1     1
     0     0     0
     0     0     2

Algorithm

bwlabeln uses the following general procedure:

  1. Scan all image pixels, assigning preliminary labels to nonzero pixels and recording label equivalences in a union-find table.

  2. Resolve the equivalence classes using the union-find algorithm [1]..

  3. Relabel the pixels based on the resolved equivalence classes.

See Also

bwlabel, label2rgb

Reference

[1] Sedgewick, Robert, Algorithms in C, 3rd Ed., Addison-Wesley, 1998, pp. 11-20.

  


 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS