The Förstner-Harris algorithm (HS88,FG87) was specifically designed to provide high geometric stability for keypoints. The underlying idea is to find points for which a small translation of the neighborhood produces a significant change in the least-squares error between the original window and its translated version. The algorithm has been so successful because it characterizes changes in image intensity around a point using the structure tensor (autocorrelation matrix), constructed from the first derivatives of the image.
Let the gradient images (which can be generated using a differential operator such as Sobel, Prewitt, or Roberts) and
be the horizontal and vertical gradients of the image being analyzed, respectively.
From these two images, it is possible to compute a function
6.1 of the gradient images in a neighborhood of
, defined as
In practice, Harris uses two convolution filters: a derivative filter to compute the derivative images and an integration filter to compute the matrix elements. The size of these filters and the use of a Gaussian filter to weight the points are discussed in the following section on the scale at which features are detected.
The matrix is the second-moment matrix.
Keypoints can be detected by analyzing the eigenvalues
and
of the matrix
(see Section 2.9.1 for a more detailed discussion).
The eigenvalues of the autocorrelation matrix
characterize the type of image content within the window around a given point.
The matrix therefore represents the local distribution of image gradients around the point under consideration. Its eigenvalues measure intensity variation along two orthogonal directions and provide the theoretical basis for the Harris and Shi-Tomasi operators and the Kanade-Lucas-Tomasi tracker.
If both eigenvalues are large, the point is a corner; if only one eigenvalue is large, it is an edge; otherwise, it lies in a reasonably flat region. In functional form, this can be expressed as
| (6.4) |
For a matrix , the eigenvalues are obtained as the solutions of the quadratic characteristic polynomial
| (6.5) |
To avoid explicitly computing the eigenvalues of , Harris introduces an operator
defined as
| (6.6) |
|
According to Harris, the point is a keypoint (corner) if
, where
is a threshold to be specified.
The parameter
controls the feature detector's sensitivity.
Qualitatively, increasing
removes edges, while increasing
removes flat regions (Figure 6.1).