| Products & Services | Solutions | Academia | Support | User Community | Company |
| Download Product Updates | | | Get Pricing | | | Trial Software |
| Documentation → Image Processing Toolbox |
| Contents | Index |
| Learn more about Image Processing Toolbox |
BW2 = bwmorph(BW,operation)
BW2 = bwmorph(BW,operation,n)
BW2 = bwmorph(BW,operation) applies a specific morphological operation to the binary image BW.
BW2 = bwmorph(BW,operation,n) applies the operation n times. n can be Inf, in which case the operation is repeated until the image no longer changes.
operation is a string that can have one of the values listed below.
Operation | Description |
|---|---|
'bothat' | Performs the morphological "bottom hat" operation, returning the image minus the morphological closing of the image (dilation followed by erosion). |
'branchpoints' | Find branch points of skeleton. For example: 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 becomes 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 |
'bridge' | Bridges unconnected pixels, that is, sets 0-valued pixels to 1 if they have two nonzero neighbors that are not connected. For example: 1 0 0 1 1 0 1 0 1 becomes 1 1 1 0 0 1 0 1 1 |
'clean' | Removes isolated pixels (individual 1s that are surrounded by 0s), such as the center pixel in this pattern. 0 0 0 0 1 0 0 0 0 |
'close' | Performs morphological closing (dilation followed by erosion). |
'diag' | Uses diagonal fill to eliminate 8-connectivity of the background. For example: 0 1 0 0 1 0 1 0 0 becomes 1 1 0 0 0 0 0 0 0 |
'dilate' | Performs dilation using the structuring element ones(3). |
'endpoints' | Finds end points of skeleton. For example: 1 0 0 0 1 0 0 0 0 1 0 0 becomes 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 |
'erode' | Performs erosion using the structuring element ones(3). |
'fill' | Fills isolated interior pixels (individual 0s that are surrounded by 1s), such as the center pixel in this pattern. 1 1 1 1 0 1 1 1 1 |
'hbreak' | Removes H-connected pixels. For example: 1 1 1 1 1 1 0 1 0 becomes 0 0 0 1 1 1 1 1 1 |
'majority' | Sets a pixel to 1 if five or more pixels in its 3-by-3 neighborhood are 1s; otherwise, it sets the pixel to 0. |
'open' | Performs morphological opening (erosion followed by dilation). |
'remove' | Removes interior pixels. This option sets a pixel to 0 if all its 4-connected neighbors are 1, thus leaving only the boundary pixels on. |
With n = Inf, shrinks objects to points. It removes pixels so that objects without holes shrink to a point, and objects with holes shrink to a connected ring halfway between each hole and the outer boundary. This option preserves the Euler number. | |
With n = Inf, removes pixels on the boundaries of objects but does not allow objects to break apart. The pixels remaining make up the image skeleton. This option preserves the Euler number. | |
Removes spur pixels. For example: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 becomes 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 | |
With n = Inf, thickens objects by adding pixels to the exterior of objects until doing so would result in previously unconnected objects being 8-connected. This option preserves the Euler number. | |
With n = Inf, thins objects to lines. It removes pixels so that an object without holes shrinks to a minimally connected stroke, and an object with holes shrinks to a connected ring halfway between each hole and the outer boundary. This option preserves the Euler number. See Algorithm for more detail. | |
Performs morphological "top hat" operation, returning the image minus the morphological opening of the image (erosion followed by dilation). |
The input image BW can be numeric or logical. It must be 2-D, real and nonsparse. The output image BW2 is of class logical.
BW = imread('circles.png');
imshow(BW);

BW2 = bwmorph(BW,'remove'); figure, imshow(BW2)

BW3 = bwmorph(BW,'skel',Inf); figure, imshow(BW3)

bweuler, bwperim, imdilate, imerode
[1] Haralick, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Vol. 1, Addison-Wesley, 1992.
[2] Kong, T. Yung and Azriel Rosenfeld, Topological Algorithms for Digital Image Processing, Elsevier Science, Inc., 1996.
[3] Lam, L., Seong-Whan Lee, and Ching Y. Suen, "Thinning Methodologies-A Comprehensive Survey," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 14, No. 9, September 1992, page 879, bottom of first column through top of second column.
[4] Pratt, William K., Digital Image Processing, John Wiley & Sons, Inc., 1991.
When used with the 'thin' option, bwmorph uses the following algorithm (References [3]):
Divide the image into two distinct subfields in a checkerboard pattern.
In the first subiteration, delete pixel p from the first subfield if and only if the conditions G1, G2, and G3 are all satisfied.
In the second subiteration, delete pixel p from the second subfield if and only if the conditions G1, G2, and G3' are all satisfied.
![]()
where
![]()
![]()
x1, x2, ..., x8 are the values of the eight neighbors of p, starting with the east neighbor and numbered in counter-clockwise order.
![]()
where
![]()
![]()
![]()
![]()
The two subiterations together make up one iteration of the thinning algorithm. When the user specifies an infinite number of iterations (n=Inf), the iterations are repeated until the image stops changing. The conditions are all tested using applylut with precomputed lookup tables.
![]() | bwlabeln | bwpack | ![]() |

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |