The proposed two-pass algorithm defines a corner in a simple and intuitively appealing way, as a location where a triangle of specified size and opening angle can be inscribed in a curve. A curve is represented by a sequence of points in the image plane. The ordered points are densely sampled along the curve, but, contrary to the other four algorithms, no regular spacing between them is assumed. A chain-coded curve can also be handled if converted to a sequence of grid points. In the first pass the algorithm scans the sequence and selects candidate corner points. The second pass is post-processing to remove superfluous candidates.
First pass. In each curve point
the detector tries to inscribe
in the curve a variable triangle
constrained by a set of simple rules:
where is the distance between and , the distance between and , and the opening angle of the triangle. (See figure 1a.) The latter is computed as
Variations of the triangle that satisfy the conditions (7) are called admissible. Search for the admissible variations starts from outwards and stops if any of the conditions (7) is violated. (That is, a limited number of neighboring points is only considered.) Among the admissible variations, the least opening angle is selected. is assigned to as the sharpness of the candidate. If no admissible triangle can be inscribed, is rejected and no sharpness is assigned.
Considering the vector product of and , it is easy to see that the corner is convex if , otherwise it is concave.
Second pass. The sharpness based non-maxima suppression procedure is illustrated in figure 1b. A corner detector can respond to the same corner in a few consecutive points. Similarly to edge detection, a post-processing step is needed to select the strongest response by discarding the non-maxima points.
A candidate point is discarded if it has a sharper valid neighbor : . In the current implementation, a candidate point is a valid neighbor of if . As alternative definitions, one can use or the points adjacent to .
Parameters. , and are the parameters of the algorithm. sets the scale (resolution), with small values responding to fine corners. The upper limit is necessary to avoid false sharp triangles formed by distant points in highly varying curves. is the angle limit that determines the minimum sharpness accepted as high curvature. In practice, we often set and tune the remaining two parameters, and . The default values are and .