SIFT algorithm c++ implementation