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.
This function supports code generation (see Tips).
fstep is a string specifying the initial
search direction for the next object pixel connected to P. You use
strings such as
'N' for north,
northeast, to specify the direction. 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.
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
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);