What follows are four of the most common contour tracing algorithms. The first two, namely: the Square Tracing algorithm and Moore-Neighbor Tracing are easy to implement and are therefore used frequently to trace the contour of a given pattern. Unfortunately, both of these algorithms have a number of weaknesses which cause them to fail in tracing the contour of a large class of patterns due to their special kind of connectivity.
The following algorithms will ignore any "holes"
present in the pattern. For example, if we're given a pattern like that
of Figure 1 below, the contour traced by the algorithms will
be similar to the one shown in Figure 2 (the blue pixels
represent the contour). This could be acceptable in some applications but
in other applications, like character recognition, we would want to trace
the interior of the pattern as well in order to capture any holes which
identify a certain character. (Figure 3 below shows
the "complete" contour of the pattern)
As a result, a "hole searching" algorithm should be used to first extract the holes in a given pattern and then apply a contour tracing algorithm on each hole in order to extract the complete contour.
Theo Pavlidis' Algorithm