http://www.mathworks.cn/cn/help/images/ref/bwmorph.html
Morphological operations on binary images
BW2 = bwmorph(BW,operation)
BW2 = bwmorph(BW,operation,n)
BW2 = bwmorph(BW,operation) applies a specific morphological operation to the binary imageBW.
BW2 = bwmorph(BW,operation,n) applies the operationn 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 to0. |
'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 are1, thus leaving only the boundary pixels on. |
'shrink' |
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. |
'skel' |
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. |
'spur' |
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 |
'thicken' |
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. |
'thin' |
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 Algorithms for more detail. |
'tophat' |
Performs morphological "top hat" operation, returning the image minus the morphological opening of the image (erosion followed by dilation). |
bwmorph supports the generation of efficient, production-quality C/C++ code from MATLAB. The text string specifying the operation must be a constant and, for best results, specify an input image of classlogical. To see a complete list of toolbox functions that support code generation, seeSupported Functions.
The input image BW can be numeric or logical. It must be 2-D, real and nonsparse. The output imageBW2 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)
[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.