I think it will be hard to get a good answer to this here, I would recommend posting this on the image.sc forum as it's more image-related.
It looks like phase correlation may give better results. If you want to stick with features you can also try skimage package SIFT() or ORB() that allow better parameterisation. In general for low contrast apply normalisation, for noise reduction apply Gaussian blur or scale down. The feature keypoint detection methods actually already include some of this functionality internally.