SIFT descriptor
Adapted from slide by David Lowe