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 |
---|---|

| |

4 | 4-connected neighborhood |

8 | 8-connected neighborhood |

| |

6 | 6-connected neighborhood |

18 | 18-connected neighborhood |

26 | 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);

Was this topic helpful?