Accelerating the pace of engineering and science

# bwareaopen

Remove small objects from binary image

## Syntax

BW2 = bwareaopen(BW, P)
BW2 = bwareaopen(BW, P, conn)

## Description

BW2 = bwareaopen(BW, P) removes from a binary image all connected components (objects) that have fewer than P pixels, producing another binary image, BW2. This operation is known as an area opening. The default connectivity is 8 for two dimensions, 26 for three dimensions, and conndef(ndims(BW), 'maximal') for higher dimensions.

BW2 = bwareaopen(BW, P, 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 be defined in a more general way for any dimension by using for conn a 3-by-3-by-...-by-3 matrix of 0s and 1s. The 1-valued elements define neighborhood locations relative to the central element of conn. Note that conn must be symmetric about its central element.

## Class Support

BW can be a logical or numeric array of any dimension, and it must be nonsparse. The return value BW2 is of class logical.

## Examples

Remove all objects in the image text.png containing fewer than 50 pixels:

```    BW = imread('text.png');
BW2 = bwareaopen(BW, 50);
imshow(BW);
```

```figure, imshow(BW2)
```

expand all

### Algorithms

The basic steps are

1. Determine the connected components:

`CC = bwconncomp(BW, conn);`
2. Compute the area of each component:

`S = regionprops(CC, 'Area');`
3. Remove small objects:

```L = labelmatrix(CC);
BW2 = ismember(L, find([S.Area] >= P));
```