SIFT algorithm implementation