Scale-invariant feature transform (or SIFT) is an algorithm in computer vision to detect and describe local features in images. The algorithm was published by David Lowe in 1999.SIFT is a method to detect distinct, invariant image feature points, which easily can be matched between images to perform tasks such as object detection and recognition, or to compute geometrical transformation between images.
SIFT keypoints of objects are first extracted from a set of reference images and stored in a database. An object is recognized in a new image by individually comparing each feature from the new image to this database and finding candidate matching features based on Euclidean distance of their feature vectors. You can match the keypoints using FLANN.
SIFT is scale, rotation, illumination, and viewpoint invariant. SIFT will be best choice for you. OpenCV has great support for SIFT. http://docs.opencv.org/modules/nonfree/doc/feature_detection.html?highlight=sift
If you want a code example, you could look here. http://jayrambhia.com/blog/sift-based-tracker