Documentation |
Remove small objects from binary image
BW2 = bwareaopen(BW, P)
BW2 = bwareaopen(BW, P, conn)
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.
BW can be a logical or numeric array of any dimension, and it must be nonsparse. The return value BW2 is of class logical.
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)