Ask Your Question

Revision history [back]

You have two types of solution:

  1. Using SLAM (Simultaneous Localization And Mapping) to create a navigation map. You can use optical flow directly to infer displacement from camera.
  2. Using interest points to see the global displacement.

SLAM is quite complex, and difficult to use on smart phone. Optical flow is directly available in OpenCV (CalcOpticalFlowLK, CalcOpticalFlowHS, CalcOpticalFlowBM, ...). It shows pixels than are ``moving'' one image to the other. Samples on OpenCV show the vector of displacement. You can average it to infer global displacement. Performances of all optical flow as to be benchmarked on your mobile device. Interest points can be used in a similar way of optical flow, but you need a matching process of two successive images. After, you average the displacement of all interesting point, but you are not sure of the matching process. You probably need to remove outliers of matching (compute median of displacement, and keep only the 75% around the mean, as example).

Good luck, your problem isn't easy...