I built a tiny application to identify features of an object, and attempt to map them to the same object in varying conditions, including differences in scale, distance, orientation, and lighting (shown above). I made heavy use of OpenCV’s Oriented FAST and Rotated Brief (ORB) module. In contrast with non-free algorithms like SIFT and SURF, ORB was susceptible to errors with in-plane rotations (not shown). However, it performed (fast!) and spectacularly with all other variant conditions.
The application was written in Python, and used OpenCV.