Documentation |
Find connected components in binary image
CC = bwconncomp(BW)
CC = bwconncomp(BW,conn)
CC = bwconncomp(BW) returns the connected components CC found in BW. The binary image BW can have any dimension. CC is a structure with four fields.
Field | Description |
---|---|
Connectivity | Connectivity of the connected components (objects) |
ImageSize | Size of BW |
NumObjects | Number of connected components (objects) in BW |
PixelIdxList | 1-by-NumObjects cell array where the kth element in the cell array is a vector containing the linear indices of the pixels in the kth object. |
bwconncomp uses a default connectivity of 8 for two dimensions, 26 for three dimensions, and conndef(ndims(BW),'maximal') for higher dimensions.
CC = bwconncomp(BW,conn) specifies the desired connectivity for the connected components. conn can have the following scalar values.
Value | Meaning |
---|---|
Two-dimensional connectivities | |
4-connected neighborhood | |
8-connected neighborhood | |
Three-dimensional connectivities | |
6-connected neighborhood | |
18-connected neighborhood | |
26-connected neighborhood |
Connectivity can be defined in a more general way for any dimension using a 3-by-3-by- ... -by-3 matrix of 0s and 1s. conn must be symmetric about its center element. The 1-valued elements define neighborhood locations relative to conn.
The functions bwlabel, bwlabeln, and bwconncomp all compute connected components for binary images. bwconncomp replaces the use of bwlabel and bwlabeln. It uses significantly less memory and is sometimes faster than the other functions.
Function | Input Dimension | Output Form | Memory Use | Connectivity |
---|---|---|---|---|
bwlabel | 2-D | Label matrix with double-precision | High | 4 or 8 |
bwlabeln | N-D | Double-precision label matrix | High | Any |
bwconncomp | N-D | CC struct | Low | Any |
BW can be a logical or numeric array of any dimension, and it must be real and nonsparse. CC is a structure.
Calculate the centroids of the 3-D objects.
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]); CC = bwconncomp(BW); S = regionprops(CC,'Centroid');
Erase the largest letter from the image.
BW = imread('text.png'); imshow(BW);
CC = bwconncomp(BW); numPixels = cellfun(@numel,CC.PixelIdxList); [biggest,idx] = max(numPixels); BW(CC.PixelIdxList{idx}) = 0; figure, imshow(BW);