The SIFT algorithm (1999) finds features in images or videos and is patented by the University of British Columbia. Typically, we can use the features for classification or clustering. SIFT is invariant with respect to translation, scaling, and rotation.
The algorithm's steps are as follows:
Blur the image at different scales using a Gaussian blur filter.
An octave corresponds to doubling the standard deviation of the filter. Group the blurred images by octave and difference them.
Find the local extremas across the scale for the differenced images.
Compare each pixel related to local extrema to the neighboring pixels in the same scale and neighboring scales.
Select the largest or smallest value from the comparison.
Reject points with low contrast.
Interpolate candidate key points (image features) to get the position on the original image.