Trace object in binary image
B = bwtraceboundary(BW,P,fstep)
B = bwtraceboundary(bw,P,fstep,conn)
B = bwtraceboundary(bw,P,fstep,conn,n,dir)
B = bwtraceboundary(BW,P,fstep) traces
the outline of an object in binary image
pixels belong to an object and 0 pixels constitute the background.
a two-element vector specifying the row and column coordinates of
the point on the object boundary where you want the tracing to begin.
fstep is a string or character vector specifying the initial search
direction for the next object pixel connected to P. The following figure illustrates all
the possible values for
a Q-by-2 matrix, where Q is the number of boundary pixels for the
B holds the row and column coordinates
of the boundary pixels.
B = bwtraceboundary(bw,P,fstep,conn) specifies
the connectivity to use when tracing the boundary.
have either of the following scalar values.
With this connectivity,
8-connected neighborhood. This is the default.
B = bwtraceboundary(bw,P,fstep,conn,n,dir) specifies
the maximum number of boundary pixels to extract, and
the direction in which to trace the boundary. When
Inf, the default value, the algorithm identifies
all the pixels on the boundary.
dir can have either
of the following values:
Search in a clockwise direction. This is the default.
Search in counterclockwise direction.
BW can be logical or numeric and it must be real, 2-D, and nonsparse.
N are of class
fstep are strings or character vectors.
Read image and display it.
BW = imread('blobs.png'); imshow(BW,);
Pick an object in the image and trace the boundary. To select an object, specify a pixel on its boundary. This example uses the coordinates of a pixel on the boundary of the thick white circle, obtained through visual inspection using
impixelinfo. The example specifies the initial search direction, the connectivity, how many boundary pixels should be returned, and the direction in which to perform the search.
r = 163; c = 37; contour = bwtraceboundary(BW,[r c],'W',8,Inf,'counterclockwise');
Plot the contour on the image.
hold on; plot(contour(:,2),contour(:,1),'g','LineWidth',2);
bwtraceboundary function implements the Moore-Neighbor tracing
algorithm modified by Jacob's stopping criteria. This function is based on the
boundaries function presented in the first edition of
Digital Image Processing Using MATLAB, by Gonzalez, R. C., R.
E. Woods, and S. L. Eddins, New Jersey, Pearson Prentice Hall, 2004.
Usage notes and limitations:
This function supports the generation of C code using MATLAB®
Note that if you choose the generic
MATLAB Host Computer target
platform, the function generates code that uses a precompiled, platform-specific
shared library. Use of a shared library preserves performance optimizations
but limits the target platforms for which code can be generated. For
more information, see Understand Code Generation with Image Processing Toolbox.
When generating code, the
conn arguments must be compile-time constants.